Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/com_rsticketspro.tar

access.xml000064400000012650151163475770006553 0ustar00<?xml
version="1.0" encoding="utf-8" ?>
<access component="com_rsticketspro">
	<section name="component">
		<action name="core.admin" title="JACTION_ADMIN"
description="JACTION_ADMIN_COMPONENT_DESC" />
		<action name="core.manage" title="JACTION_MANAGE"
description="JACTION_MANAGE_COMPONENT_DESC" />

		<action name="department.create"
title="COM_RSTICKETSPRO_ACTION_DEPARTMENT_CREATE"
description="COM_RSTICKETSPRO_ACTION_DEPARTMENT_CREATE_DESC"
/>
		<action name="department.delete"
title="COM_RSTICKETSPRO_ACTION_DEPARTMENT_DELETE"
description="COM_RSTICKETSPRO_ACTION_DEPARTMENT_DELETE_DESC"
/>
		<action name="department.edit"
title="COM_RSTICKETSPRO_ACTION_DEPARTMENT_EDIT"
description="COM_RSTICKETSPRO_ACTION_DEPARTMENT_EDIT_DESC" />
		<action name="department.edit.state"
title="COM_RSTICKETSPRO_ACTION_DEPARTMENT_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_DEPARTMENT_EDIT_STATE_DESC"
/>

		<action name="customfield.create"
title="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_CREATE"
description="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_CREATE_DESC"
/>
		<action name="customfield.delete"
title="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_DELETE"
description="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_DELETE_DESC"
/>
		<action name="customfield.edit"
title="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_EDIT"
description="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_EDIT_DESC"
/>
		<action name="customfield.edit.state"
title="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_CUSTOMFIELD_EDIT_STATE_DESC"
/>

		<action name="group.create"
title="COM_RSTICKETSPRO_ACTION_GROUP_CREATE"
description="COM_RSTICKETSPRO_ACTION_GROUP_CREATE_DESC" />
		<action name="group.delete"
title="COM_RSTICKETSPRO_ACTION_GROUP_DELETE"
description="COM_RSTICKETSPRO_ACTION_GROUP_DELETE_DESC" />
		<action name="group.edit"
title="COM_RSTICKETSPRO_ACTION_GROUP_EDIT"
description="COM_RSTICKETSPRO_ACTION_GROUP_EDIT_DESC" />

		<action name="staff.create"
title="COM_RSTICKETSPRO_ACTION_STAFF_CREATE"
description="COM_RSTICKETSPRO_ACTION_STAFF_CREATE_DESC" />
		<action name="staff.delete"
title="COM_RSTICKETSPRO_ACTION_STAFF_DELETE"
description="COM_RSTICKETSPRO_ACTION_STAFF_DELETE_DESC" />
		<action name="staff.edit"
title="COM_RSTICKETSPRO_ACTION_STAFF_EDIT"
description="COM_RSTICKETSPRO_ACTION_STAFF_EDIT_DESC" />

		<action name="priority.create"
title="COM_RSTICKETSPRO_ACTION_PRIORITY_CREATE"
description="COM_RSTICKETSPRO_ACTION_PRIORITY_CREATE_DESC" />
		<action name="priority.delete"
title="COM_RSTICKETSPRO_ACTION_PRIORITY_DELETE"
description="COM_RSTICKETSPRO_ACTION_PRIORITY_DELETE_DESC" />
		<action name="priority.edit"
title="COM_RSTICKETSPRO_ACTION_PRIORITY_EDIT"
description="COM_RSTICKETSPRO_ACTION_PRIORITY_EDIT_DESC" />
		<action name="priority.edit.state"
title="COM_RSTICKETSPRO_ACTION_PRIORITY_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_PRIORITY_EDIT_STATE_DESC"
/>

		<action name="status.create"
title="COM_RSTICKETSPRO_ACTION_STATUS_CREATE"
description="COM_RSTICKETSPRO_ACTION_STATUS_CREATE_DESC" />
		<action name="status.delete"
title="COM_RSTICKETSPRO_ACTION_STATUS_DELETE"
description="COM_RSTICKETSPRO_ACTION_STATUS_DELETE_DESC" />
		<action name="status.edit"
title="COM_RSTICKETSPRO_ACTION_STATUS_EDIT"
description="COM_RSTICKETSPRO_ACTION_STATUS_EDIT_DESC" />
		<action name="status.edit.state"
title="COM_RSTICKETSPRO_ACTION_STATUS_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_STATUS_EDIT_STATE_DESC"
/>

		<action name="email.edit"
title="COM_RSTICKETSPRO_ACTION_EMAIL_EDIT"
description="COM_RSTICKETSPRO_ACTION_EMAIL_EDIT_DESC" />
		<action name="email.edit.state"
title="COM_RSTICKETSPRO_ACTION_EMAIL_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_EMAIL_EDIT_STATE_DESC"
/>

		<action name="kbcategory.create"
title="COM_RSTICKETSPRO_ACTION_KBCATEGORY_CREATE"
description="COM_RSTICKETSPRO_ACTION_KBCATEGORY_CREATE_DESC"
/>
		<action name="kbcategory.delete"
title="COM_RSTICKETSPRO_ACTION_KBCATEGORY_DELETE"
description="COM_RSTICKETSPRO_ACTION_KBCATEGORY_DELETE_DESC"
/>
		<action name="kbcategory.edit"
title="COM_RSTICKETSPRO_ACTION_KBCATEGORY_EDIT"
description="COM_RSTICKETSPRO_ACTION_KBCATEGORY_EDIT_DESC" />
		<action name="kbcategory.edit.state"
title="COM_RSTICKETSPRO_ACTION_KBCATEGORY_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_KBCATEGORY_EDIT_STATE_DESC"
/>

		<action name="kbarticle.create"
title="COM_RSTICKETSPRO_ACTION_KBARTICLE_CREATE"
description="COM_RSTICKETSPRO_ACTION_KBARTICLE_CREATE_DESC"
/>
		<action name="kbarticle.delete"
title="COM_RSTICKETSPRO_ACTION_KBARTICLE_DELETE"
description="COM_RSTICKETSPRO_ACTION_KBARTICLE_DELETE_DESC"
/>
		<action name="kbarticle.edit"
title="COM_RSTICKETSPRO_ACTION_KBARTICLE_EDIT"
description="COM_RSTICKETSPRO_ACTION_KBARTICLE_EDIT_DESC" />
		<action name="kbarticle.edit.state"
title="COM_RSTICKETSPRO_ACTION_KBARTICLE_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_KBARTICLE_EDIT_STATE_DESC"
/>

		<action name="kbrule.create"
title="COM_RSTICKETSPRO_ACTION_KBRULE_CREATE"
description="COM_RSTICKETSPRO_ACTION_KBRULE_CREATE_DESC" />
		<action name="kbrule.delete"
title="COM_RSTICKETSPRO_ACTION_KBRULE_DELETE"
description="COM_RSTICKETSPRO_ACTION_KBRULE_DELETE_DESC" />
		<action name="kbrule.edit"
title="COM_RSTICKETSPRO_ACTION_KBRULE_EDIT"
description="COM_RSTICKETSPRO_ACTION_KBRULE_EDIT_DESC" />
		<action name="kbrule.edit.state"
title="COM_RSTICKETSPRO_ACTION_KBRULE_EDIT_STATE"
description="COM_RSTICKETSPRO_ACTION_KBRULE_EDIT_STATE_DESC"
/>
	</section>
</access>config.xml000064400000000506151163475770006554
0ustar00<?xml version="1.0" encoding="utf-8"?>
<config>	
	<fieldset name="permissions"
label="JCONFIG_PERMISSIONS_LABEL"
description="JCONFIG_PERMISSIONS_DESC">
		<field name="rules" type="rules"
label="JCONFIG_PERMISSIONS_LABEL" filter="rules"
component="com_rsticketspro" section="component">
		</field>
	</fieldset>
</config>controller.php000064400000000572151163475770007464
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JLoader::register('RsticketsproController', JPATH_SITE .
'/components/com_rsticketspro/controller.php');controllers/configuration.php000064400000004643151163475770012521
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerConfiguration extends JControllerLegacy
{
    public function __construct($config = array())
    {
		parent::__construct($config);
		
		$user = JFactory::getUser();
		if (!$user->authorise('core.admin',
'com_rsticketspro'))
		{
			$app = JFactory::getApplication();
			$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'),
'error');
			$app->redirect(JRoute::_('index.php?option=com_rsticketspro',
false));
		}
		
		$this->registerTask('apply', 'save');
	}
	
	public function cancel()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro',
false));
	}
	
	public function save()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

        $app   = JFactory::getApplication();
		$input = $app->input;
		$data  = $input->get('jform', array(), 'array');
		$model = $this->getModel('configuration');
		$form  = $model->getForm();

		// Validate the posted data.
		$return = $model->validate($form, $data);
		
		// Check for validation errors.
		if ($return === false)
		{
			// Get the validation messages.
			$errors = $model->getErrors();

			// Push up to three validation messages out to the user.
			for ($i = 0, $n = count($errors); $i < $n && $i < 3;
$i++)
			{
				if ($errors[$i] instanceof Exception)
				{
					$app->enqueueMessage($errors[$i]->getMessage(),
'warning');
				}
				else
				{
					$app->enqueueMessage($errors[$i], 'warning');
				}
			}

			// Redirect back to the edit screen.
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=configuration',
false));
			return false;
		}

		$data = $return;
		
		if (!$model->save($data))
		{
			$this->setMessage($model->getError(), 'error');
		}
		else
		{
			$this->setMessage(JText::_('RST_CONFIGURATION_OK',
'info'));
		}
		
		$task = $this->getTask();
		if ($task == 'save')
		{
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro',
false));
		}
		elseif ($task == 'apply')
		{
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=configuration',
false));
		}
	}
}controllers/cron.php000064400000000600151163475770010600 0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerCron extends JControllerForm
{
	public function preview()
	{
		JFactory::getApplication()->triggerEvent('onCronTestConnection');
	}
}controllers/cronlog.php000064400000001310151163475770011301
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerCronlog extends JControllerAdmin
{
	/**
	 * Delete all Cron Logs
	 */
	public function deleteAll()
	{
		$this->checkToken();

		// Get databse connector
		$db		= JFactory::getDbo();
		$query 	= $db->getQuery(true);

		$query->delete()
			->from($db->qn('#__rsticketspro_accounts_log'));

		$db->setQuery($query);
		$db->execute();

		$this->setRedirect('index.php?option=com_rsticketspro&view=cronlog',
JText::_('RST_CRON_LOG_DELETED_ALL'));
	}
}controllers/crons.php000064400000000713151163475770010770
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerCrons extends JControllerAdmin
{
	public function getModel($name = 'Cron', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/customfield.php000064400000001165151163475770012164
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerCustomfield extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('customfield.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('customfield.edit',
'com_rsticketspro');
	}
}controllers/customfields.php000064400000001022151163475770012337
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerCustomfields extends JControllerAdmin
{
	public function getModel($name = 'Customfield', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/department.php000064400000001162151163475770012006
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerDepartment extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('department.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('department.edit',
'com_rsticketspro');
	}
}controllers/departments.php000064400000001020151163475770012162
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerDepartments extends JControllerAdmin
{
	public function getModel($name = 'Department', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/email.php000064400000000737151163475770010741
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerEmail extends JControllerForm
{
	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('email.edit',
'com_rsticketspro');
	}
}controllers/emails.php000064400000001006151163475770011112
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerEmails extends JControllerAdmin
{
	public function getModel($name = 'Email', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/group.php000064400000001143151163475770010776
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerGroup extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('group.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('group.edit',
'com_rsticketspro');
	}
}controllers/groups.php000064400000001006151163475770011157
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerGroups extends JControllerAdmin
{
	public function getModel($name = 'Group', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/index.html000064400000000054151163475770011126
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>controllers/kbarticle.php000064400000001157151163475770011607
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbarticle extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('kbarticle.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('kbarticle.edit',
'com_rsticketspro');
	}
}controllers/kbarticles.php000064400000001016151163475770011764
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbarticles extends JControllerAdmin
{
	public function getModel($name = 'Kbarticle', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/kbcategories.php000064400000001021151163475770012277
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbcategories extends JControllerAdmin
{
	public function getModel($name = 'Kbcategory', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/kbcategory.php000064400000001162151163475770011775
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbcategory extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('kbcategory.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('kbcategory.edit',
'com_rsticketspro');
	}
}controllers/kbconvert.php000064400000024650151163475770011647
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbconvert extends JControllerLegacy
{
	public function cancel()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$input 		= JFactory::getApplication()->input;
		$data  		= $input->get('jform', array(),
'array');
		$ticketId 	= $data['ticket_id'];
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. $ticketId, false));
	}
	
	public function save()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$input 		= JFactory::getApplication()->input;
		$data  		= $input->get('jform', array(),
'array');
		$ticketId 	= $data['ticket_id'];
		
		$model = $this->getModel('kbconvert');
		if (!$model->save($data))
		{
			$this->setMessage($model->getError(), 'error');
		}
		else
		{
			$this->setMessage(JText::_('RST_KB_ARTICLE_SAVED_OK',
'info'));
		}
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. $ticketId, false));
	}
	
	public function manual()
	{
		// Check for request forgeries
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

		$ticketId =
JFactory::getApplication()->input->getInt('id');
		$model 	  = $this->getModel('ticket');
		
		// small check to determine if it's already been converted
		if ($article = $model->isConvertedToKB($ticketId))
		{
			$url =
JRoute::_('index.php?option=com_rsticketspro&task=kbarticle.edit&id='.$article->id);
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='.$ticketId,
false), JText::sprintf('RST_KB_ALREADY_CONVERTED', $url,
$article->name), 'notice');
		}
		else
		{
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=kbconvert&ticket_id='
. $ticketId, false));
		}
	}
	
	public function automatic()
	{
		// Check for request forgeries
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$db		  = JFactory::getDbo();
		$ticketId =
JFactory::getApplication()->input->getInt('id');
		$model 	  = $this->getModel('ticket');

		$this->setMessage(JText::_('RST_KB_NO_RULE'),
'notice');
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. $ticketId, false));
		
		// small check to determine if it's already been converted
		if ($article = $model->isConvertedToKB($ticketId))
		{
			$url =
JRoute::_('index.php?option=com_rsticketspro&task=kbarticle.edit&id='
. $article->id);
			$this->setMessage(JText::sprintf('RST_KB_ALREADY_CONVERTED',
$url, $article->name), 'notice');
			return false;
		}

		// get ticket
		$ticket 		= $model->getItem();
		$ticketMessages = $model->getTicketMessages($ticketId, true);

		// get rules
		$query = $db->getQuery(true);
		$query->select('*')
			  ->from($db->qn('#__rsticketspro_kb_rules'))
			 
->where($db->qn('published').'='.$db->q(1));
		$db->setQuery($query);
		$rules = $db->loadObjectList();
		foreach ($rules as $rule)
		{
			$result = array();
			$rule->conditions = unserialize($rule->conditions);
			if (!empty($rule->conditions))
			{
				$conditionCount = count($rule->conditions);
				$hasOr = false;

				foreach ($rule->conditions as $conditionCounter => $condition)
				{
					if ($condition->connector == 'OR' &&
$conditionCounter < $conditionCount - 1)
					{
						$hasOr = true;
					}

					switch ($condition->type)
					{
						case 'department':
							if ($condition->condition == 'eq')
							{
								$result[] = $ticket->department_id == $condition->value;
							}
							elseif ($condition->condition == 'neq')
							{
								$result[] = $ticket->department_id != $condition->value;
							}
							elseif ($condition->condition == 'like')
							{
								$result[] = strpos($ticket->department, $condition->value)
!== false;
							}
							elseif ($condition->condition == 'notlike')
							{
								$result[] = strpos($ticket->department, $condition->value)
=== false;
							}
						break;
						
						case 'subject':
							if ($condition->condition == 'eq')
							{
								$result[] = $ticket->subject == $condition->value;
							}
							elseif ($condition->condition == 'neq')
							{
								$result[] = $ticket->subject != $condition->value;
							}
							elseif ($condition->condition == 'like')
							{
								$result[] = strpos($ticket->subject, $condition->value) !==
false;
							}
							elseif ($condition->condition == 'notlike')
							{
								$result[] = strpos($ticket->subject, $condition->value) ===
false;
							}
						break;
						
						case 'priority':
							if ($condition->condition == 'eq')
							{
								$result[] = $ticket->priority_id == $condition->value;
							}
							elseif ($condition->condition == 'neq')
							{
								$result[] = $ticket->priority_id != $condition->value;
							}
							elseif ($condition->condition == 'like')
							{
								$result[] = strpos($ticket->priority->name,
$condition->value) !== false;
							}
							elseif ($condition->condition == 'notlike')
							{
								$result[] = strpos($ticket->priority->name,
$condition->value) === false;
							}
						break;
						
						case 'status':
							if ($condition->condition == 'eq')
							{
								$result[] = $ticket->status_id == $condition->value;
							}
							elseif ($condition->condition == 'neq')
							{
								$result[] = $ticket->status_id != $condition->value;
							}
							elseif ($condition->condition == 'like')
							{
								$result[] = strpos($ticket->status->name,
$condition->value) !== false;
							}
							elseif ($condition->condition == 'notlike')
							{
								$result[] = strpos($ticket->status->name,
$condition->value) === false;
							}
						break;
						
						case 'message':
							if ($condition->condition == 'eq')
							{
								$tmp = false;
								foreach ($ticketMessages as $message)
								{
									if ($message->message == $condition->value)
									{
										$tmp = true;
										break;
									}
								}
								
								$result[] = $tmp;
							}
							elseif ($condition->condition == 'neq')
							{
								$tmp = true;
								foreach ($ticketMessages as $message)
								{
									if ($message->message == $condition->value)
									{
										$tmp = false;
										break;
									}
								}
								
								$result[] = $tmp;
							}
							elseif ($condition->condition == 'like')
							{
								$tmp = false;
								foreach ($ticketMessages as $message)
								{
									if (strpos($message->message, $condition->value) !== false)
									{
										$tmp = true;
										break;
									}
								}
								
								$result[] = $tmp;
							}
							elseif ($condition->condition == 'notlike')
							{
								$tmp = true;
								foreach ($ticketMessages as $message)
								{
									if (strpos($message->message, $condition->value) !== false)
									{
										$tmp = false;
										break;
									}
								}
								
								$result[] = $tmp;
							}
						break;
						
						case 'custom_field':
							$query = $db->getQuery(true);
							$query->select($db->qn('cfv.value'))
								  ->select($db->qn('cf.type'))
								 
->from($db->qn('#__rsticketspro_custom_fields_values',
'cfv'))
								  ->join('left',
$db->qn('#__rsticketspro_custom_fields',
'cf').' ON
('.$db->qn('cf.id').'='.$db->qn('cfv.custom_field_id').')')
								 
->where($db->qn('cfv.custom_field_id').'='.$db->q($condition->custom_field))
								 
->where($db->qn('cfv.ticket_id').'='.$db->q($ticketId))
								 
->where($db->qn('cf.published').'='.$db->q(1));
							$db->setQuery($query);
							if ($field = $db->loadObject())
							{
								$value = $field->value;
								$types = array('select', 'multipleselect',
'checkbox', 'radio');
								
								if ($condition->condition == 'eq')
								{
									if (in_array($field->type, $types))
									{
										$value = explode("\n", $value);
									}
									
									if (is_array($value))
									{
										$tmp = false;
										foreach ($value as $val)
										{
											if ($val == $condition->value)
											{
												$tmp = true;
												break;
											}
										}
										
										$result[] = $tmp;
									}
									else
									{
										$result[] = $value == $condition->value;
									}
								}
								elseif ($condition->condition == 'neq')
								{
									if (in_array($field->type, $types))
									{
										$value = explode("\n", $value);
									}
									
									if (is_array($value))
									{
										$tmp = true;
										foreach ($value as $val)
										{
											if ($val == $condition->value)
											{
												$tmp = false;
												break;
											}
										}
										
										$result[] = $tmp;
									}
									else
									{
										$result[] = $value != $condition->value;
									}
								}
								elseif ($condition->condition == 'like')
								{									
									$result[] = strpos($value, $condition->value) !== false;
								}
								elseif ($condition->condition == 'notlike')
								{
									$result[] = strpos($value, $condition->value) === false;
								}
							}
							else
							{
								$result[] = false;
							}
						break;
					}
				}

				// No 'OR' clause means all results should be true because
we're using 'AND'
				if (!$hasOr)
				{
					$result = !in_array(false, $result);
				}
				else
				{
					// Search for a single true value in the array
					$result = in_array(true, $result);
				}

				// Found rule
				if ($result)
				{
					$params = (object) array(
						'name' 				=> $ticket->subject,
						'category_id' 		=> $rule->category_id,
						'publish_article' 	=> $rule->publish_article,
						'private' 			=> $rule->private
					);
					require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/ticket.php';

					$success = RSTicketsProTicketHelper::convert($ticket, $ticketMessages,
$params);
					if ($success)
					{
						$this->setMessage(JText::sprintf('RST_KB_ARTICLE_SAVED_OK_AUTOMATIC',
$rule->name));
						return true;
					}
				}
			}
		}

		return false;
	}
}controllers/kbrule.php000064400000001146151163475770011131
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbrule extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('kbrule.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('kbrule.edit',
'com_rsticketspro');
	}
}controllers/kbrules.php000064400000003444151163475770011317
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerKbrules extends JControllerAdmin
{
	public function getModel($name = 'Kbrule', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
	
	public function showDepartments()
	{
		header('Content-Type: text/javascript; charset=utf-8');
		
		$model = $this->getModel('kbrules');
		$departments = $model->getDepartments();
		
		echo json_encode($departments);
		die();
	}
	
	public function showPriorities()
	{
		header('Content-Type: text/javascript; charset=utf-8');
		
		$model = $this->getModel('kbrules');
		$priorities = $model->getPriorities();
		
		echo json_encode($priorities);
		die();
	}
	
	public function showStatuses()
	{
		header('Content-Type: text/javascript; charset=utf-8');
		
		$model = $this->getModel('kbrules');
		$statuses = $model->getStatuses();
		
		echo json_encode($statuses);
		die();
	}
	
	public function showCustomFields()
	{
		header('Content-Type: text/javascript; charset=utf-8');
		
		$model = $this->getModel('kbrules');
		$departments = $model->getDepartments();
		$custom_fields = $model->getCustomFields();

		echo json_encode(array('departments' => $departments,
'options' => $custom_fields));
		
		die();
	}
	
	public function showCustomFieldValues()
	{
		header('Content-Type: text/javascript; charset=utf-8');
		
		$model = $this->getModel('kbrules');
		
		$values = $model->getCustomFieldValues();
		echo json_encode($values);
		
		die();
	}
}controllers/note.php000064400000002567151163475770010622 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerNote extends JControllerForm
{
	protected function getRedirectToListAppend()
	{
		$append  = parent::getRedirectToListAppend();
		$append	.= '&ticket_id=' .
JFactory::getApplication()->input->getInt('ticket_id');

		return $append;
	}
	
	protected function getRedirectToItemAppend($recordId = null, $urlVar =
'id')
	{
		$append = parent::getRedirectToItemAppend($recordId, $urlVar);
		$append	.= '&ticket_id=' .
JFactory::getApplication()->input->getInt('ticket_id');
		
		return $append;
	}

	protected function allowAdd($data = array())
	{
		$permissions = RSTicketsProHelper::getCurrentPermissions();

		return $permissions->add_note;
	}

	protected function allowEdit($data = array(), $key = 'id')
	{
		$permissions = RSTicketsProHelper::getCurrentPermissions();
		
		$model  = $this->getModel();
		$table  = $model->getTable();
		$userId = JFactory::getUser()->id;
		
		// load data
		$table->load($data[$key]);
		
		return ($permissions->update_note && $table->user_id ==
$userId) || ($permissions->update_note_staff &&
$table->user_id != $userId);
	}
}controllers/notes.php000064400000001411151163475770010770
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerNotes extends JControllerAdmin
{
	public function getModel($name = 'Note', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}

	public function delete()
	{
		parent::delete();

		$this->setRedirect(JRoute::_('index.php?option=' .
$this->option . '&view=' . $this->view_list .
'&ticket_id=' .
JFactory::getApplication()->input->getInt('ticket_id') .
'&tmpl=component', false));
	}
}controllers/predefinedsearch.php000064400000003734151163475770013145
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerPredefinedsearch extends JControllerForm
{
	protected function allowAdd($data = array())
	{
		// only staff members can add predefined searches
		return RSTicketsProHelper::isStaff();
	}
	
	protected function allowEdit($data = array(), $key = 'id')
	{
		// only staff members can edit predefined searches
		if (!RSTicketsProHelper::isStaff())
		{
			return false;
		}
		
		// check if we're editing our own search
		if (!empty($data[$key]))
		{
			return $this->isSameUser($data[$key]);
		}
		
		return true;
	}
	
	protected function allowSave($data, $key = 'id')
	{
		// only staff members can save
		if (!RSTicketsProHelper::isStaff())
		{
			return false;
		}
		
		// check if we're saving our own search
		if (!empty($data[$key]))
		{
			return $this->isSameUser($data[$key]);
		}
		
		return true;
	}
	
	protected function isSameUser($id)
	{
		$model = $this->getModel();
		$table = $model->getTable();
		
		// not found
		if (!$table->load($id))
		{
			return false;
		}
		
		return $table->user_id == JFactory::getUser()->id;
	}
	
	public function perform()
	{
		$app 	= JFactory::getApplication();
		$id	 	= $app->input->getInt('id');
		
		if (!RSTicketsProHelper::isStaff() || !$this->isSameUser($id))
		{
			return
$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=tickets',
false));
		}
		
		// load the predefined search
		$model = $this->getModel();
		$table = $model->getTable();
		$table->load($id);
		
		// perform it
		$tickets = $this->getModel('Tickets');
		$tickets->performSearch($table);
		
		return
$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=tickets',
false));
	}
}controllers/predefinedsearches.php000064400000001213151163475770013463
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerPredefinedsearches extends JControllerAdmin
{
	public function getModel($name = 'Predefinedsearch', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}

	public function cancel()
	{
		$this->setRedirect('index.php?option=com_rsticketspro&view=tickets');
	}
}controllers/priorities.php000064400000001015151163475770012031
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerPriorities extends JControllerAdmin
{
	public function getModel($name = 'Priority', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/priority.php000064400000001154151163475770011525
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerPriority extends JControllerForm
{
	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('priority.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('priority.edit',
'com_rsticketspro');
	}
}controllers/removedata.php000064400000002525151163475770011776
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2018 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerRemovedata extends JControllerLegacy
{
	public function process()
    {
        JSession::checkToken() or
jexit(JText::_('JINVALID_TOKEN'));

        $id     =
JFactory::getApplication()->input->getInt('id');
        $me     = JFactory::getUser();
        $user   = JFactory::getUser($id);

        try
        {
            if ($me->id == $user->id)
            {
                throw new
Exception(JText::_('COM_RSTICKETSPRO_CANNOT_ANONYMISE_LOGGED_IN_USER'));
            }

            if ($user->authorise('core.admin'))
            {
                throw new
Exception(JText::_('COM_RSTICKETSPRO_CANNOT_ANONYMISE_SUPER_USER'));
            }

            RSTicketsProHelper::anonymise($id);

            jexit(json_encode(array(
                'message' =>
array(JText::_('COM_RSTICKETSPRO_DATA_HAS_BEEN_SUCCESSFULLY_ANONYMISED'))
            )));
        }
        catch (Exception $e)
        {
            jexit(json_encode(array(
                'error' => array($e->getMessage())
            )));
        }
    }
}controllers/search.php000064400000001535151163475770011114
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerSearch extends JControllerLegacy
{
	public function cancel()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=tickets',
false));
	}
	
	public function reset()
	{
		$model = $this->getModel('tickets');
		$model->resetSearch();
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=tickets',
false));
	}

	public function advanced()
	{
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=search',
false));
	}
}controllers/searches.php000064400000000546151163475770011445
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');



require_once
JPATH_SITE.'/components/com_rsticketspro/controllers/searches.php';controllers/signature.php000064400000002066151163475770011650
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerSignature extends JControllerForm
{
	protected $view_item = 'signature';
	protected $view_list = 'tickets';

	public function cancel($key = null)
	{
		$this->checkToken();

		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=tickets',
false));
	}

	public function save($key = null, $urlVar = null)
	{
		$this->checkToken();
		
		$input = JFactory::getApplication()->input;
		$data  = $input->get('jform', array(), 'array');
		$model = $this->getModel('signature');
		
		if (!$model->save($data))
		{
			$this->setMessage($model->getError(), 'error');
		}
		else
		{
			$this->setMessage(JText::_('RST_CONFIGURATION_OK'));
		}
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=signature',
false));
	}
}controllers/staff.php000064400000001210151163475770010740
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerStaff extends JControllerForm
{
	protected $view_list = 'staffs';

	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('staff.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('staff.edit',
'com_rsticketspro');
	}
}controllers/staffs.php000064400000001006151163475770011126
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerStaffs extends JControllerAdmin
{
	public function getModel($name = 'Staff', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/status.php000064400000001215151163475770011165
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerStatus extends JControllerForm
{
	protected $view_list = 'statuses';

	public function allowAdd($data = array())
	{
		return JFactory::getUser()->authorise('status.create',
'com_rsticketspro');
	}

	public function allowEdit($data = array(), $key = 'id')
	{
		return JFactory::getUser()->authorise('status.edit',
'com_rsticketspro');
	}
}controllers/statuses.php000064400000001011151163475770011507
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerStatuses extends JControllerAdmin
{
	public function getModel($name = 'Status', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}
}controllers/submit.php000064400000004037151163475770011152
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerSubmit extends JControllerLegacy
{
	protected $option  = 'com_rsticketspro';
	protected $context = 'submit';
	
	public function showForm()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=submit',
false));
	}
	
	public function cancel()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=tickets',
false));
	}
	
	public function save()
	{
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));
		
		$app    	= JFactory::getApplication();
		$input  	= $app->input;
		$data    	= $input->get('jform', array(),
'array');
		$fields  	= $input->get('rst_custom_fields', array(),
'array');
		$files	 	= $input->files->get('jform', null,
'raw');
		$model   	= $this->getModel('submit');
		$context 	= "$this->option.edit.$this->context";
		$redirect	= RSTicketsProHelper::getConfig('submit_redirect');
		
		if (!$model->save($data, $fields, is_array($files) &&
isset($files['files']) ? $files['files'] : array()))
		{
			// Save the data in the session.
			$app->setUserState($context . '.data', $data);
			$app->setUserState($context . '.fields', $fields);
			
			$this->setMessage($model->getError(), 'error');
		}
		else
		{
			// Clear the data in the session
			$app->setUserState($context . '.data', null);
			$app->setUserState($context . '.fields', null);
			
			$this->setMessage(JText::_('RST_TICKET_SUBMIT_OK',
'info'));
			
			if ($app->isClient('site') && !empty($redirect))
			{
				return $this->setRedirect($redirect);
			}
		}
		
		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=submit',
false));
	}
}controllers/ticket.php000064400000055670151163475770011143
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerTicket extends JControllerLegacy
{
	protected $option = 'com_rsticketspro';
	protected $context = 'ticket';

    public function __construct($config = array())
	{
		parent::__construct($config);

		$this->registerTask('reopen',
'changeTicketStatus');
		$this->registerTask('close',
'changeTicketStatus');
	}

	protected function getLoginLink()
	{
		$link = base64_encode((string) JUri::getInstance());

		return
RSTicketsProHelper::route('index.php?option=com_users&view=login&return='
. $link, false);
	}

	protected function getListingLink()
	{
		return
RSTicketsProHelper::route('index.php?option=com_rsticketspro&view=tickets',
false);
	}

	public function flag()
	{
		$app           = JFactory::getApplication();
		$cid           = $app->input->getInt('cid');
		$flagged       = $app->input->getInt('flagged');
		$model         = $this->getModel('ticket');

		// logged in?
		if ($model->isGuest())
		{
			return $this->setRedirect($this->getLoginLink());
		}
		// only staff members can call this
		if (!$model->isStaff())
		{
			$app->close();
		}

		// check permissions for the ticket
		if (!$model->hasPermission($cid))
		{
            $app->enqueueMessage($model->getError(),
'warning');

			return $this->setRedirect($this->getListingLink());
		}

		@ob_end_clean();
		$model->setFlag($cid, $flagged);

		echo '1';

		$app->close();
	}

	public function rate()
	{
		$app         = JFactory::getApplication();
		$cid         = $app->input->getInt('cid');
		$rating      = $app->input->getInt('rating');
		$access_code = $app->input->get('access_code');

		$model = $this->getModel('ticket');

		if (strlen($access_code))
		{
			$ticket   = $model->getTicket($cid);
			$customer = JFactory::getUser($ticket->customer_id);
			
			if ((int) $ticket->feedback != 0)
			{
				$app->redirect(JUri::root(),
JText::_('RST_EMAIL_ALREADY_RATED'));
			}

			if ($access_code !== md5($ticket->id . ' | ' .
$customer->email))
			{
				throw new
Exception(JText::_('RST_EMAIL_ACCESS_CODE_INCORRECT'), 403);
			}

			$model->setRating($cid, $rating);

			$app->redirect(JUri::root(),
JText::_('RST_FEEDBACK_RECEIVED_FROM_EMAIL'));
		}
		else
		{
			// logged in?JText::_('RST_YOU_HAVE_TO_BE_LOGGED_IN')
			if ($model->isGuest())
			{
				throw new Exception(JText::_('RST_YOU_HAVE_TO_BE_LOGGED_IN'),
403);
			}
			// no point in trying to rate when config doesn't allow it
			if (!RSTicketsProHelper::getConfig('show_ticket_voting'))
			{
				$app->close();
			}
			// only customers can call this
			if ($model->isStaff())
			{
				$app->close();
			}
			// check permissions for the ticket
			if (!$model->hasPermission($cid))
			{
				throw new Exception($model->getError(), 403);
			}

			@ob_end_clean();
			$model->setRating($cid, $rating);
			echo '1';

			$app->close();
		}

	}

	public function delete()
	{
		$app = JFactory::getApplication();
		$cid = $app->input->getInt('cid');

		$model = $this->getModel('ticket');
		// logged in?
		if ($model->isGuest())
		{
			return $this->setRedirect($this->getLoginLink());
		}
		// only staff members can call this
		if (!$model->isStaff())
		{
			throw new Exception(JText::_('RST_CANNOT_DELETE_TICKETS'),
403);
		}
		if (!$model->hasPermission($cid))
		{
            $app->enqueueMessage($model->getError(),
'warning');

			return $this->setRedirect($this->getListingLink());
		}
		$permissions = $model->getStaffPermissions();
		if ($permissions->delete_ticket)
		{
			$model->delete($cid);
			$this->setMessage(JText::_('RST_TICKET_DELETED_OK'));
		}
		else
		{
			$this->setMessage(JText::sprintf('RST_TICKET_NOT_DELETED',
$cid), 'error');
		}
		$this->setRedirect($this->getListingLink());
	}

	public function notify()
	{
		// this is called only when autoclose is enabled
		if (!RSTicketsProHelper::getConfig('autoclose_enabled'))
		{
			return $this->setRedirect($this->getListingLink());
		}
		$app = JFactory::getApplication();
		$cid = $app->input->getInt('cid');

		$model = $this->getModel('ticket');
		// logged in?
		if ($model->isGuest())
		{
			return $this->setRedirect($this->getLoginLink());
		}
		// only staff members can call this
		if (!$model->isStaff())
		{
			throw new Exception(JText::_('RST_CANNOT_NOTIFY_TICKETS'),
403);
		}
		if (!$model->hasPermission($cid))
		{
            $app->enqueueMessage($model->getError(),
'warning');

			return $this->setRedirect($this->getListingLink());
		}

		$model->notify($cid);
		$this->setMessage(JText::_('RST_TICKET_NOTIFIED_OK'));
		$this->setRedirect($this->getListingLink());
	}

	public function bulkUpdate()
	{
		$app  = JFactory::getApplication();
		$cids = $app->input->get('cid', array(),
'array');

		$model = $this->getModel('ticket');
		// logged in?
		if ($model->isGuest())
		{
			return $this->setRedirect($this->getLoginLink());
		}
		// only staff members can call this
		if (!$model->isStaff())
		{
			throw new Exception(JText::_('RST_CANNOT_UPDATE_TICKETS'),
403);
		}

		$department_id =
$app->input->getInt('bulk_department_id', 0);
		$staff_id    = $app->input->getInt('bulk_staff_id', -1);
		$priority_id = $app->input->getInt('bulk_priority_id');
		$status_id   = $app->input->getInt('bulk_status_id');
		$notify      = $app->input->getInt('bulk_notify');
		$delete      = $app->input->getInt('bulk_delete');

		// no point notifying if autoclose is disabled
		if (!RSTicketsProHelper::getConfig('autoclose_enabled'))
		{
			$notify = 0;
		}

		// get staff member permissions
		$permissions = $model->getStaffPermissions();

		foreach ($cids as $cid)
		{
			// first, let's make sure this ticket can be opened by the current
user
			if ($model->hasPermission($cid))
			{
				// if we are deleting tickets then it doesn't make any sense to
check the other options
				if ($delete)
				{
					// check for delete permission & if ticket has been deleted
					if (!$permissions->delete_ticket || !$model->delete($cid))
					{
						$app->enqueueMessage(JText::sprintf('RST_TICKET_NOT_DELETED',
$cid), 'error');
					}
				}
				else
				{
					$data = array();

					// can assign?
					if ($permissions->assign_tickets && $staff_id > -1)
					{
						$data['staff_id'] = $staff_id;
					}

					// can update ticket information?
					if ($permissions->update_ticket)
					{
						if ($priority_id)
						{
							$data['priority_id'] = $priority_id;
						}
						if ($status_id)
						{
							$data['status_id'] = $status_id;
						}
					}

					if ($permissions->move_ticket)
					{
						$data['department_id'] = $department_id;
					}

					if ($data)
					{
						$model->updateInfo($cid, $data);
					}

					// let's see if we need to notify as well
					if ($notify)
					{
						$model->notify($cid);
					}
				}
			}
		}

		if ($delete)
		{
			$this->setMessage(JText::_('RST_TICKETS_DELETED_OK'));
		}
		else
		{
			$this->setMessage(JText::_('RST_TICKETS_UPDATED_OK'));
			if ($notify)
			{
				$this->setMessage(JText::_('RST_TICKET_NOTIFIED_OK'));
			}
		}

		$this->setRedirect($this->getListingLink());
	}

	// used to update custom fields
	public function updateFields()
	{
		$app   = JFactory::getApplication();
		$cid   = $app->input->getInt('cid');
		$data  = $app->input->get('rst_custom_fields', array(),
'array');
		$model = $this->getModel('ticket');
		$url   =
JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($cid), false);

		// logged in?
		if ($model->isGuest())
		{
			return $this->setRedirect($this->getLoginLink());
		}
		// only staff members can call this
		if (!$model->isStaff())
		{
			throw new Exception(JText::_('RST_CANNOT_UPDATE_TICKET'),
403);
		}
		if (!$model->hasPermission($cid))
		{
            $app->enqueueMessage($model->getError(),
'warning');

			return $this->setRedirect($this->getListingLink());
		}
		$permissions = $model->getStaffPermissions();
		if (!$permissions->update_ticket_custom_fields)
		{
           
$app->enqueueMessage(JText::_('RST_CANNOT_UPDATE_TICKET'),
'warning');

			return $this->setRedirect($url);
		}

		$model->updateFields($cid, $data);

		$this->setMessage(JText::_('RST_TICKET_UPDATED_OK'));
		$this->setRedirect($url);
	}

	// used to update ticket information
	public function updateInfo()
	{
		$app   = JFactory::getApplication();
		$cid   = $app->input->getInt('cid');
		$data  = $app->input->get('ticket', array(),
'array');
		$model = $this->getModel('ticket');
		$url   =
JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($cid), false);

		// logged in?
		if ($model->isGuest())
		{
			return $this->setRedirect($this->getLoginLink());
		}
		// only staff members can call this
		if (!$model->isStaff())
		{
			throw new Exception(JText::_('RST_CANNOT_UPDATE_TICKET'),
403);
		}
		if (!$model->hasPermission($cid))
		{
            $app->enqueueMessage($model->getError(),
'warning');

			return $this->setRedirect($this->getListingLink());
		}

		// get permissions
		$permissions = $model->getStaffPermissions();

		// check permissions to update the ticket information
		if (!$permissions->update_ticket)
		{
			unset($data['subject']);
			unset($data['priority_id']);
		}

		// check permissions to move to another department
		if (!$permissions->move_ticket)
		{
			unset($data['department_id']);
		}

		// check permissions to change ticket status
		if (!$permissions->change_ticket_status)
		{
			unset($data['status_id']);
		}

		// check permissions to assign tickets
		if (!$permissions->assign_tickets)
		{
			unset($data['staff_id']);
		}

		if (!RSTicketsProHelper::getConfig('show_alternative_email'))
		{
			unset($data['alternative_email']);
		}

		// check permissions to change customer
		// no permissions at all
		if (!$permissions->add_ticket_customers &&
!$permissions->add_ticket_staff &&
!$permissions->add_ticket)
		{
			unset($data['customer_id']);
			unset($data['alternative_email']);
		}
		else
		{
			$user     = JFactory::getUser();
			$customer = JFactory::getUser($data['customer_id']);
			$is_staff =
RSTicketsProHelper::isStaff($customer->get('id'));

			// cannot change to himself...
			if ($customer->id == $user->id &&
!$permissions->add_ticket)
			{
				unset($data['customer_id']);
			}

			// cannot change to another staff member
			if ($customer->id != $user->id && $is_staff &&
!$permissions->add_ticket_staff)
			{
				unset($data['customer_id']);
			}

			// cannot change to another customer
			if ($customer->id != $user->id && !$is_staff &&
!$permissions->add_ticket_customers)
			{
				unset($data['customer_id']);
			}
		}

		$model->updateInfo($cid, $data);

		$this->setMessage(JText::_('RST_TICKET_UPDATED_OK'));
		$this->setRedirect($url);
	}

	public function toggleTime()
	{
		$app         = JFactory::getApplication();
		$ticket_id   = $app->input->getInt('id');
		$state  	 = $app->input->getInt('tstate', 1);
		$model       = $this->getModel('ticket');
		$ticket_data = $model->getTicket($ticket_id);

		try
		{
			// logged in?
			if ($model->isGuest())
			{
				return $this->setRedirect($this->getLoginLink());
			}

			// not enabled
			if (!RSTicketsProHelper::getConfig('enable_time_spent'))
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}

			if (RSTicketsProHelper::getConfig('time_spent_type') !==
'tracking')
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}

			// only staff members can call this
			if (!$model->isStaff())
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			if (!$model->hasPermission($ticket_id))
			{
				$app->enqueueMessage($model->getError(), 'warning');

				return $this->setRedirect($this->getListingLink());
			}

			if (!empty($ticket_data) && $ticket_data->status_id !=
RST_STATUS_CLOSED)
			{
				if ($model->toggleTime($ticket_id, $state))
				{
					$app->enqueueMessage(JText::_('COM_RSTICKETSPRO_TIME_TOGGLE'.($state
? '_STARTED' : '_STOPPED')));
				}
				else
				{
					$app->enqueueMessage($model->getError(), 'warning');
				}
			}

			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($ticket_id), false));
		}
		catch (Exception $e)
		{
			$app->enqueueMessage($e->getMessage(), 'error');
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($ticket_id), false));
		}
	}

	public function clearTimeTrackingEntry()
	{
		$app         = JFactory::getApplication();
		$ticket_id   = $app->input->getInt('ticket_id');
		$entry_id   = $app->input->getInt('entry');
		$model       = $this->getModel('ticket');

		try
		{
			// logged in?
			if ($model->isGuest())
			{
				return $this->setRedirect($this->getLoginLink());
			}
			// not enabled
			if (!RSTicketsProHelper::getConfig('enable_time_spent'))
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			if (RSTicketsProHelper::getConfig('time_spent_type') !==
'tracking')
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			// only staff members can call this
			if (!$model->isStaff())
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}

			// check to see if this ticket has this time spent entry
			if (!$model->checkIfExistsTimeSpentEntry($ticket_id, $entry_id))
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}

			// only allowed staff members can delete the time tracking history
			if (!$model->canDeleteTimeTracking() &&
!$model->canDeleteOwnTimeTracking($ticket_id, $entry_id)) {
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}


			if (!$model->hasPermission($ticket_id))
			{
				$app->enqueueMessage($model->getError(), 'warning');

				return $this->setRedirect($this->getListingLink());
			}

			// clear the own history entry
			$model->clearTimeTracking($ticket_id, $entry_id);
			$app->enqueueMessage(JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_CLEAR_OWN_SUCCESS'));

			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($ticket_id), false));
		}
		catch (Exception $e)
		{
			$app->enqueueMessage($e->getMessage(), 'error');
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($ticket_id), false));
		}
	}

	public function clearTimeTracking()
	{
		$app         = JFactory::getApplication();
		$ticket_id   = $app->input->getInt('id');
		$model       = $this->getModel('ticket');

		try
		{
			// logged in?
			if ($model->isGuest())
			{
				return $this->setRedirect($this->getLoginLink());
			}
			// not enabled
			if (!RSTicketsProHelper::getConfig('enable_time_spent'))
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			if (RSTicketsProHelper::getConfig('time_spent_type') !==
'tracking')
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			// only staff members can call this
			if (!$model->isStaff())
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}

			// only allowed staff members can delete the time tracking history
			if (!$model->canDeleteTimeTracking()) {
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}

			if (!$model->hasPermission($ticket_id))
			{
				$app->enqueueMessage($model->getError(), 'warning');

				return $this->setRedirect($this->getListingLink());
			}

			// clear the history
			$model->clearTimeTracking($ticket_id);
			$app->enqueueMessage(JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_CLEAR_SUCCESS'));

			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($ticket_id), false));
		}
		catch (Exception $e)
		{
			$app->enqueueMessage($e->getMessage(), 'error');
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($ticket_id), false));
		}
	}

	public function saveTimeSpent()
	{
		$app        = JFactory::getApplication();
		$cid        = $app->input->getInt('cid');
		$data       = $app->input->get('ticket', array(),
'array');
		$time_spent = $data['time_spent'];
		$model      = $this->getModel('ticket');

		try
		{
			// logged in?
			if ($model->isGuest())
			{
				return $this->setRedirect($this->getLoginLink());
			}
			// not enabled
			if (!RSTicketsProHelper::getConfig('enable_time_spent'))
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			if (RSTicketsProHelper::getConfig('time_spent_type') !==
'input')
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			// only staff members can call this
			if (!$model->isStaff())
			{
				throw new Exception(JText::_('RST_CANNOT_UPDATE_TIME_SPENT'),
403);
			}
			if (!$model->hasPermission($cid))
			{
				$app->enqueueMessage($model->getError(), 'warning');

				return $this->setRedirect($this->getListingLink());
			}

			$table = $model->getTable();

			$table->save(array(
				'id'         => $cid,
				'time_spent' => $time_spent
			));

			$this->setMessage(JText::_('RST_TIME_SPENT_UPDATED_OK'));
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($cid), false));
		}
		catch (Exception $e)
		{
			$app->enqueueMessage($e->getMessage(), 'error');
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($cid), false));
		}
	}

	public function cancel()
	{
		$this->setRedirect($this->getListingLink());
	}

	public function changeTicketStatus()
	{
		$app   = JFactory::getApplication();
		$model = $this->getModel('ticket');
		$id    = $app->input->getInt('id');
		$task  = $app->input->get('task');

		$permissions = $model->getStaffPermissions();

		if ($task == 'reopen')
		{
			$canChangeStatus = ($model->isStaff() &&
$permissions->change_ticket_status) || (!$model->isStaff() &&
RSTicketsProHelper::getConfig('allow_ticket_reopening'));
			$status_id       = RST_STATUS_OPEN;
			$successMsg      = JText::_('RST_TICKET_REOPENED_OK');
			$errorMsg        = JText::_('RST_CANNOT_REOPEN_TICKET');
		}
		elseif ($task == 'close')
		{
			$canChangeStatus = ($model->isStaff() &&
$permissions->change_ticket_status) || (!$model->isStaff() &&
RSTicketsProHelper::getConfig('allow_ticket_closing'));
			$status_id       = RST_STATUS_CLOSED;
			$successMsg      = JText::_('RST_TICKET_CLOSED_OK');
			$errorMsg        = JText::_('RST_CANNOT_CLOSE_TICKET');
		}

		if ($model->hasPermission($id) && $canChangeStatus)
		{
			$model->updateInfo($id, array(
				'status_id' => $status_id
			));

			// if the ticket is closed and by any chan
			if ($status_id == RST_STATUS_CLOSED) {
				$model->toggleTime($id, 0);
			}

			$this->setMessage($successMsg);
			$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($id), false));
		}
		else
		{
			throw new Exception($errorMsg, 403);
		}
	}

	public function reply()
	{
		// Check for request forgeries.
		JSession::checkToken() or jexit(JText::_('JINVALID_TOKEN'));

		$app     = JFactory::getApplication();
		$input   = $app->input;
		$data    = $input->get('ticket', array(),
'array');
		$id      = $input->getInt('id');
		$files   = $input->files->get('ticket', null,
'raw');
		$model   = $this->getModel('ticket');
		$ticket  = $model->getTicket($id);
		$context = "$this->option.edit.$this->context";

		if ($ticket->status_id == RST_STATUS_CLOSED)
		{
           
$app->enqueueMessage(JText::_('RST_TICKET_REPLIES_CLOSED_ERROR'),
'warning');

			return $this->setRedirect($this->getListingLink());
		}

		if (!$model->hasPermission($id))
		{
            $app->enqueueMessage($model->getError(),
'warning');

			return $this->setRedirect($this->getListingLink());
		}
		// overwrite some options
		$data['id']        = null;
		$data['user_id']   = JFactory::getUser()->id;
		$data['date']      = JFactory::getDate()->toSql();
		$data['ticket_id'] = $id;
		if ($app->isClient('administrator'))
        {
            $data['consent'] = array(1);
        }
		if (!$model->reply($id, $data, is_array($files) &&
isset($files['files']) ? $files['files'] : array()))
		{
			// Save the data in the session.
			$app->setUserState($context . '.data', $data);

			$this->setMessage($model->getError(), 'error');
		}
		else
		{
			// Clear the data in the session
			$app->setUserState($context . '.data', null);

			$this->setMessage(JText::_('RST_TICKET_SUBMIT_REPLY_OK',
'info'));
		}

		$this->setRedirect(JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. RSTicketsProHelper::sef($id), false));
	}

	public function downloadFile()
	{
		$app   = JFactory::getApplication();
		$input = $app->input;
		$id    = $input->getInt('id');

		$model = $this->getModel('ticket');
		$file  = JTable::getInstance('Ticketfiles',
'RsticketsproTable');

		// check if file exists
		if (!$file->load($id) || !$file->id)
		{
			throw new
Exception(JText::_('RST_CANNOT_DOWNLOAD_FILE_NOT_EXIST'), 500);
		}

		// check if ticket can be opened by the user
		$ticket = $model->getTicket($file->ticket_id);
		if (!$ticket || !$ticket->id)
		{
			throw new Exception(JText::_('RST_CANNOT_DOWNLOAD_FILE'),
403);
		}

		if ($access_code =
JFactory::getApplication()->input->get('access_code',
''))
		{
			if (!$model->hasDownloadPermission($access_code, $file->id,
$ticket->id))
			{
				throw new Exception(JText::_('RST_CANNOT_DOWNLOAD_FILE'),
403);
			}
		}
		else
		{
			if (!$model->hasPermission($file->ticket_id))
			{
				throw new Exception(JText::_('RST_CANNOT_DOWNLOAD_FILE'),
403);
			}
		}

		$path = $file->getRealPath();
		if (!file_exists($path))
		{
			throw new
Exception(JText::_('RST_CANNOT_DOWNLOAD_FILE_NOT_EXIST'), 500);
		}

		// increment downloads
		$file->hit();

		@ob_end_clean();

		header("Cache-Control: public, must-revalidate");
		header('Cache-Control: pre-check=0, post-check=0, max-age=0');
		header("Expires: 0");
		header("Content-Description: File Transfer");
		header("Expires: Sat, 01 Jan 2000 01:00:00 GMT");
		header("Content-Type: application/octet-stream;
charset=utf-8");
		header("Content-Length: " . (string) filesize($path));
		header('Content-Disposition: attachment; filename="' .
$file->filename . '"');
		header("Content-Transfer-Encoding: binary\n");
		@readfile($path);

		$app->close();
	}
}controllers/ticketmessage.php000064400000003750151163475770012500
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerTicketmessage extends JControllerForm
{
	// this is for the redirect...
	protected $view_list = 'tickets';

	protected function allowAdd($data = array())
	{
		// false because adding a message to a ticket is done through another
controller
		return false;
	}
	
	protected function allowEdit($data = array(), $key = 'id')
	{
		// Get item to remove from the request.
		$messageId = $data[$key];
		
		// Get the models
		$modelMessage = $this->getModel();
		$modelTicket  = $this->getModel('ticket');
		
		// check if the message exists in the database
		$tableMessage = $modelMessage->getTable();
		if ($tableMessage->load($messageId))
		{
			$id = $tableMessage->ticket_id;
			// only staff members can call this
			// & must be able to see the ticket in order to edit this message
			if (!$modelTicket->isStaff() ||
!$modelTicket->hasPermission($id))
			{
				throw new Exception($modelTicket->getError(), 403);
			}
			
			$messageUserId = $tableMessage->user_id;
			$meId		   = JFactory::getUser()->id;
			$isStaff 	   = RSTicketsProHelper::isStaff($meId);
			$permissions   = RSTicketsProHelper::getCurrentPermissions();
			
			$canUpdateReplies 			= $permissions->update_ticket_replies;
			$canUpdateCustomerReplies 	=
$permissions->update_ticket_replies_customers;
			$canUpdateStaffReplies 		=
$permissions->update_ticket_replies_staff;
			
			return $isStaff && (
				($canUpdateReplies && $messageUserId == $meId) ||
				($canUpdateCustomerReplies && $messageUserId != $meId
&& !RSTicketsProHelper::isStaff($messageUserId)) ||
				($canUpdateStaffReplies && $messageUserId != $meId &&
RSTicketsProHelper::isStaff($messageUserId))
			);
		}
		
		return false;
	}
}controllers/ticketmessages.php000064400000003176151163475770012665
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

use Joomla\Utilities\ArrayHelper;

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerTicketmessages extends JControllerAdmin
{
	protected $view_list = 'ticket';

	public function getModel($name = 'Ticketmessage', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
	{
		return parent::getModel($name, $prefix, $config);
	}

	public function delete()
	{
		// Check for request forgeries
		$this->checkToken('get');

		// Get items to remove from the request.
		$cid = $this->input->get('cid', array(),
'array');

		if (!is_array($cid) || count($cid) < 1)
		{
			\JLog::add(\JText::_($this->text_prefix .
'_NO_ITEM_SELECTED'), \JLog::WARNING, 'jerror');
		}
		else
		{
			// Get the model.
			$model = $this->getModel();

			// Make sure the item ids are integers
			$cid = ArrayHelper::toInteger($cid);

			// Remove the items.
			if ($model->delete($cid))
			{
				$this->setMessage(\JText::plural($this->text_prefix .
'_N_ITEMS_DELETED', count($cid)));
			}
			else
			{
				$this->setMessage($model->getError(), 'error');
			}

			// Invoke the postDelete method to allow for the child class to access
the model.
			$this->postDeleteHook($model, $cid);
		}

		$append = '&id=' .
$this->input->getInt('ticket_id');

		$this->setRedirect(\JRoute::_('index.php?option=' .
$this->option . '&view=' . $this->view_list . $append,
false));
	}
}controllers/tickets.php000064400000003660151163475770011316
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproControllerTickets extends JControllerAdmin
{
    public function getModel($name = 'Tickets', $prefix =
'RsticketsproModel', $config = array('ignore_request'
=> true))
    {
        return parent::getModel($name, $prefix, $config);
    }

    public function writeCsv()
    {
        $model = $this->getModel();
        $input = JFactory::getApplication()->input;

        try
        {
            $response =
$model->writeCSV($input->getInt('start'),
$input->get('filehash'));

            $this->showResponse(true, $response);
        }
        catch (Exception $e)
        {
            $this->showResponse(false, $e->getMessage());
        }
    }

    protected function showResponse($success, $data=null)
    {
        $app 		= JFactory::getApplication();
        $document 	= JFactory::getDocument();

        // set JSON encoding
        $document->setMimeEncoding('application/json');

        // compute the response
        $response = new stdClass();
        $response->success = $success;
        if ($data)
        {
            $response->response = $data;
        }

        // show the response
        echo json_encode($response);

        // close
        $app->close();
    }

    public function exportCsv()
    {
        require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/export.php';

        $app      = JFactory::getApplication();
        $filename = JText::_('COM_RSTICKETSPRO_TICKETS');
	    $fileHash = $app->input->get('filehash');

        RsticketsExport::buildCSVHeaders($filename);

        echo RsticketsExport::getCSV($fileHash);

	    $app->close();
    }
}helpers/adapter.php000064400000001746151163475770010367 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

/* Autoloader function and registration */

function RsticketsproAutoload($class)
{
	$class = strtolower($class);
	$prefix = 'rsticketsproadapter';

	if (strpos($class, $prefix) === 0)
	{
		// Grab name and filter it
		$name = preg_replace('/[^a-z]/i', '', substr($class,
strlen($prefix)));

		// Supported Joomla! versions
		$versions = array('4.0', '3.0');

		// Iterate through and find the first available class
		foreach ($versions as $version)
		{
			$file = __DIR__ . '/adapters/' . $version . '/' .
$name . '.php';
			if (version_compare(JVERSION, $version, '>=') &&
file_exists($file))
			{
				require_once $file;
				break;
			}
		}
	}
}

spl_autoload_register('RsticketsproAutoload');helpers/adapters/3.0/grid.php000064400000001567151163475770012000
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

abstract class RsticketsproAdapterGrid
{
	public static function row()
	{
		return 'row-fluid';
	}

	public static function column($size)
	{
		return 'span' . (int) $size;
	}

	public static function sidebar()
	{
		return '<div id="j-sidebar-container"
class="' . static::column(2) . '">' .
			JHtmlSidebar::render() .
			'</div>' .
			'<div id="j-main-container" class="' .
static::column(10) . '">';
	}

	public static function inputAppend($input, $append)
	{
		return
			'<div class="input-append">' .
			$input .
			'<span class="add-on">' . $append .
'</span>' .
			'</div>';
	}
}helpers/adapters/3.0/plain.php000064400000002443151163475770012150
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproAdapterPlain
{
	protected $id		= null;
	protected $titles 	= array();
	protected $contents = array();
	
	public function __construct($id)
	{
		$this->id = preg_replace('#[^A-Z0-9_\. -]#i', '',
$id);
	}
	
	public function addTitle($label, $id)
	{
		$this->titles[] = (object) array('label' => $label,
'id' => $id);
	}
	
	public function addContent($content)
	{
		$this->contents[] = $content;
	}
	
	public function render()
	{
		foreach ($this->titles as $i => $title)
		{
			?>
			<div class="well" id="ticket-<?php echo
$this->escape($title->id); ?>">
				<h3><?php echo $this->escape($title->label);
?></h3>
				<?php echo $this->contents[$i]; ?>
			</div>
			<?php
		}
	}
	
	protected function escape($string)
	{
		return htmlentities($string, ENT_COMPAT, 'utf-8');	
	}

	public function remove($index)
	{
		if (isset($this->titles[$index]))
		{
			unset($this->titles[$index]);
		}

		if (isset($this->contents[$index]))
		{
			unset($this->contents[$index]);
		}
	}
}helpers/adapters/3.0/tabs.php000064400000002133151163475770011772
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproAdapterTabs
{
	protected $id;
	protected $titles   = array();
	protected $contents = array();
	
	public function __construct($id)
	{
		$this->id = preg_replace('/[^A-Z0-9_\. -]/i', '',
$id);
	}
	
	public function addTitle($label, $id)
	{
		$this->titles[] = (object) array('label' => $label,
'id' => $id);
	}
	
	public function addContent($content)
	{
		$this->contents[] = $content;
	}
	
	public function render()
	{
		$active = reset($this->titles);

		echo JHtml::_('bootstrap.startTabSet', $this->id,
array('active' => $active->id));

		foreach ($this->titles as $i => $title)
		{
			echo JHtml::_('bootstrap.addTab', $this->id, $title->id,
JText::_($title->label));
			echo $this->contents[$i];
			echo JHtml::_('bootstrap.endTab');
		}

		echo JHtml::_('bootstrap.endTabSet');
	}
}helpers/adapters/4.0/grid.php000064400000001442151163475770011771
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

abstract class RsticketsproAdapterGrid
{
	public static function row()
	{
		return 'row';
	}

	public static function column($size)
	{
		return 'col-md-' . (int) $size;
	}

	public static function sidebar()
	{
		return '<div id="j-main-container"
class="j-main-container">';
	}

	public static function inputAppend($input, $append)
	{
		return
		'<div class="input-group">' .
			$input .
			'<div class="input-group-append"><span
class="input-group-text">' . $append .
'</span></div>' .
		'</div>';
	}
}helpers/adapters/4.0/plain.php000064400000002571151163475770012153
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproAdapterPlain
{
	protected $id		= null;
	protected $titles 	= array();
	protected $contents = array();
	
	public function __construct($id)
	{
		$this->id = preg_replace('#[^A-Z0-9_\. -]#i', '',
$id);
	}
	
	public function addTitle($label, $id)
	{
		$this->titles[] = (object) array('label' => $label,
'id' => $id);
	}
	
	public function addContent($content)
	{
		$this->contents[] = $content;
	}
	
	public function render()
	{
		foreach ($this->titles as $i => $title)
		{
			?>
			<div class="card" id="ticket-<?php echo
$this->escape($title->id); ?>">
				<div class="card-header">
					<h3><?php echo $this->escape($title->label);
?></h3>
				</div>
				<div class="card-body">
					<?php echo $this->contents[$i]; ?>
				</div>
			</div>
			<?php
		}
	}
	
	protected function escape($string)
	{
		return htmlentities($string, ENT_COMPAT, 'utf-8');	
	}

	public function remove($index)
	{
		if (isset($this->titles[$index]))
		{
			unset($this->titles[$index]);
		}

		if (isset($this->contents[$index]))
		{
			unset($this->contents[$index]);
		}
	}
}helpers/adapters/4.0/tabs.php000064400000002113151163475770011771
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproAdapterTabs
{
	protected $id;
	protected $titles   = array();
	protected $contents = array();
	
	public function __construct($id)
	{
		$this->id = preg_replace('/[^A-Z0-9_\. -]/i', '',
$id);
	}
	
	public function addTitle($label, $id)
	{
		$this->titles[] = (object) array('label' => $label,
'id' => $id);
	}
	
	public function addContent($content)
	{
		$this->contents[] = $content;
	}
	
	public function render()
	{
		$active = reset($this->titles);

		echo JHtml::_('uitab.startTabSet', $this->id,
array('active' => $active->id));

		foreach ($this->titles as $i => $title)
		{
			echo JHtml::_('uitab.addTab', $this->id, $title->id,
JText::_($title->label));
			echo $this->contents[$i];
			echo JHtml::_('uitab.endTab');
		}

		echo JHtml::_('uitab.endTabSet');
	}
}helpers/adapters/accordion.php000064400000002134151163475770012503
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSAccordion
{
	protected $id		= null;
	protected $titles 	= array();
	protected $contents = array();

	public function __construct($id)
	{
		$this->id = preg_replace('#[^A-Z0-9_\. -]#i', '',
$id);
	}

	public function addTitle($label, $id)
	{
		$this->titles[] = (object) array('label' => $label,
'id' => $id);
	}

	public function addContent($content)
	{
		$this->contents[] = $content;
	}

	public function render()
	{
		$active = reset($this->titles);

		echo JHtml::_('bootstrap.startAccordion', $this->id,
array('active' => $active->id));

		foreach ($this->titles as $i => $title)
		{
			echo JHtml::_('bootstrap.addSlide', $this->id,
JText::_($title->label), $title->id);
			echo $this->contents[$i];
			echo JHtml::_('bootstrap.endSlide');
		}

		echo JHtml::_('bootstrap.endAccordion');
	}
}helpers/adapters/index.html000064400000000054151163475770012025
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>helpers/adapters/tabs.php000064400000000506151163475770011474
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTabs extends RsticketsproAdapterTabs
{

}helpers/captcha/captcha.php000064400000005721151163475770011752
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2020 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproCaptcha
{
	protected $chars = 4;
	protected $code = null;

	protected function getFont()
	{
		return __DIR__ . '/monofont.ttf';
	}

	protected function generateCode()
	{
		$possible =
'aAbBcCdDeEfFgGhHjJkKLmMnNpPqQrRstTvVwWxXyYzZ2346789';
		$count = strlen($possible) - 1;
		$this->code = '';

		for ($i = 0; $i < $this->chars; $i++)
		{
			$this->code .= substr($possible, mt_rand(0, $count), 1);
		}

		JFactory::getSession()->set('com_rsticketspro.captcha',
$this->code);

		return $this->code;
	}

	public function check($code)
	{
		$validCode = (string)
JFactory::getSession()->get('com_rsticketspro.captcha');
		if (!RSTicketsProHelper::getConfig('captcha_case_sensitive'))
		{
			$validCode = strtolower($validCode);
			$code = strtolower($code);
		}

		JFactory::getSession()->clear('com_rsticketspro.captcha');

		return $validCode === $code;
	}

	public function setLength($chars)
	{
		$this->chars = (int) $chars;
	}

	public function getImage()
	{
		try
		{
			if (!function_exists('imagecreate'))
			{
				throw new Exception('imagecreate() not available.');
			}
			if (!function_exists('imagettfbbox'))
			{
				throw new Exception('imagettfbbox() not available.');
			}

			$code = $this->generateCode();
			$font = $this->getFont();

			$font_size = 32;

			$box = imagettfbbox($font_size, 0, $font, 'M');

			$char_w = abs($box[4] - $box[0]);
			$char_h = abs($box[5] - $box[1]);

			$width = $char_w * $this->chars * 1.3;
			$height = $char_h * 2;

			// Create the image
			$image = imagecreate($width, $height);

			// Get a random text color
			$r = mt_rand(0, 255);
			$g = mt_rand(0, 255);
			$b = mt_rand(0, 255);

			// Fill the background with a complementary color
			imagecolorallocate($image, ($r < 128) ? 255 : 0, ($g < 128) ? 255
: 0, ($b < 128) ? 255 : 0);

			// Allocate text color
			$color = imagecolorallocate($image, $r, $g, $b);

			// Get a random angle
			$angle = mt_rand( 0, 5 ) * (mt_rand(0, 1) == 1 ? -1 : 1);

			// Get the box size
			$text_box_size = imagettfbbox($font_size, $angle, $font, $code);

			// Calculate position
			$x = ($width - $text_box_size[4]) / 2;
			$y = ($height - $text_box_size[5]) / 2;

			// Set a shadow
			$shadow_color = imagecolorallocate($image, floor($r / 2), floor($g / 2),
floor($b / 2));
			imagettftext($image, $font_size, $angle, $x - 1, $y + 3, $shadow_color,
$font, $code);

			// Write our text
			imagettftext($image, $font_size, $angle, $x, $y, $color, $font, $code);

			imagejpeg($image);
			imagedestroy($image);
		}
		catch (Exception $e)
		{
			JFactory::getApplication()->enqueueMessage($e->getMessage(),
'warning');
		}
	}
}
helpers/captcha/monofont.ttf000064400000120114151163475770012206
0ustar000�OS/2`+z>�@VPCLT|r�u��6cmap�mq0
�cvt
pc�\6fpgm�3�OHglyf��^r�M4hdmx��{�#�head�<���6hhea���$hmtxr�"�Z�loca�z�Q0�maxp
�,
name�)��Ipost`.e�b�Kprep��9r�f&T*�����#*	~�	�	��	#	T*	�	�	�	�	�		#(C)1999
Ray Larabie - rlarabie@hotmail.com(C)1999 Ray Larabie -
rlarabie@hotmail.comMonofontoMonofontoRegularRegularMonofontoMonofontoMonofontoMonofontoVersion
1.00Version 1.00MonofontoMonofonto@,vE
�%E#ah#h`D-�^���H]f\Sa8N?c�L�Z�Z�Z�Z�Z�Z�Z�	@



		����EhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhDEhD�F+�F+�EhD�EhD2^
V@
@	Fv/7?</<�<�</<�</<�<10Ih�Iha�@RX87���8Y3!'3#2,���
��2�����CL@@Fv/7?<?�/�/<�<..10Ih�Iha�@RX87���8Y7#3#"'&54632�\\�z��)zWO@@	Fv/7/</</<�</<�<10Ih�Iha�@RX87���8Y#53#5322k11W������R@�
 @!
	
	
		
	

	
	
	Fv/7?</<�<�</<�<�.����ć.��ć.����ć.����ć.�����ć.��������................10Ih�
Iha�@RX87�
��8Y#3##7##7#737#7373373#3�TVV,:,^,:+UT!YW,:+]-9+La
a�ApA����ApA����Aq)��g�(j@-))@*#
Fv/7/</<��/<�</�/���...10Ih�)Iha�@RX87�)��8Y%#5&'32654'&'&546753#.#"g�.~
[%&:b:E@.vX"#:a:��UT�$&,0-TAY
TS�)()0	.�����M	
!+�@:,,@-

	

('	#" *%

Fv/7?<<?<<�/�/��/<�</<�</<�</<�<�.���..10Ih�,Iha�@RX87�,��8Y%#"=432##"=43254#"3254#"32�jiij��0�iiii+**+��+**+p{{Izz���X�zzIzz��IEEIE_IEEIE���N!)�@A**@+#

"%(Fv/7?<?/��/�/�</��.��ć.���..........10Ih�*Iha�@RX87�*��8Y!#'#"'&547&5463274#"6'32�p&DL@(&p/E75BVPL9Tu.#6R=
&>I1.BwBB;8JD5PCsUI[X5&2+�ـ*<.�W�>@@Fv/7/</</<�<10Ih�Iha�@RX87���8Y#53�22W�u�`J	<@

@	Fv/7??/�..10Ih�
Iha�@RX87�
��8Y&547WW>hh����;����u�`J	<@

@Fv/7??/�..10Ih�
Iha�@RX87�
��8Y%'654'7h>XX>hռ�:����:�I(GOS@@
	

Fv/7/</<...............10Ih�Iha�@RX87���8Y''7'7'37G}],33,]}m8m�g'��'g>K��Kz�f@,@

	
	Fv/7?</</<�</<�<�<�<10Ih�Iha�@RX87���8Y%##5#53533z�7��7����@�����z5@
@Fv/7//..10Ih�Iha�@RX87���8Y%'7.De����>@@Fv/7/</</<�<10Ih�Iha�@RX87���8Y%#53���]����r7@@
	Fv/7?//�10Ih�Iha�@RX87���8Y7#"&54632�2%%&'m��#OI@@	Fv/7/</<�.���..10Ih�Iha�@RX87���8Y##�/�O�g�.��bM	O@@
	
Fv/7??��/<�</<�<10Ih�Iha�@RX87���8Y%#"=43254#"32b����a9999���໻��ii�hk%E_@&@Fv/7?<?/<�<�<�.���..10Ih�Iha�@RX87���8Y!#57%]]��6hh,dM[@$@	
Fv/7?<??���</��....10Ih�Iha�@RX87���8Y3!654'&#"#632d#t��й<]�HT�?:�lU5V�](��hP-h@+..@/,$**$#'
!''Fv/7?/���<�</�</�<��...10Ih�.Iha�@RX87�.��8Y%#"'&5473327654'&'567654'&#"#>32h(*NL+)[#
 7
TOACR<G�O0430N	$" N"@BU_DK11+eC

@:@

	

	

	Fv/7?<?</<�</<�<�</<�<�.���..10Ih�Iha�@RX87���8Y%##5#533#e*[��*�x~~~e`��"��-��cCg@*@

	Fv/7??</��<�/�/<�<�<......10Ih�Iha�@RX87���8Y%#"'7327654'&#"#!#632c(-Lo&R/
R�)D&"�O7?x,;# $We�81+��eC
c@(!!@"




Fv/7??<�/<�/�/��.���..10Ih�!Iha�@RX87�!��8Y%#"'&54?36324'&#"3276e',JJ,'6sl��_�L59;4MNi���!!!1_C^@%@Fv/7?<?<�<�.���.....10Ih�Iha�@RX87���8Y##5_�g��C���e)��gO"2]@%33@4
+#'/Fv/7?/�/��/�</�<��..10Ih�3Iha�@RX87�3��8Y%#"'&547&54632'4&#"32764'&#"3276g'+MM+'G=QDCR=G\#
 #%" " �O0441OW01JF\^DK10�!22!
2�#"#*fO"b@'##@$Fv/7?</�/<�/�/��.���..10Ih�#Iha�@RX87�#��8Y#7#"'&5476324'&#"3276f7sk�K%#(,JK+(_�Og��0,ML4::5K!"!�����
F@@Fv/7??��/<�<10Ih�Iha�@RX87���8Y#"'&54632#"&54632�


V((��&'(����B@@
		Fv/7?/�/<�..10Ih�Iha�@RX87���8Y#"&54632'7
.DV''(����	v�j@,@		Fv/7//�.��ć.���.......10Ih�Iha�@RX87���8Y-5%
v��\��	�I�G��jzSS@@	Fv/7/</<�<�<........10Ih�Iha�@RX87���8Y!5!!5!z��d��d?�?	v�j@,@		Fv/7//�.��ć.���.......10Ih�Iha�@RX87���8Y%5-5v����\��G��G�9��WQ$_@&%%@&	"Fv/7?/���</<�</�/��..10Ih�%Iha�@RX87�%��8Y#54654&#"#>32#"&54632W5\l+ZMA?Pi
�8)7
4r$"<AVW�<(((t^=Ky@5LL@M-.F'4>H
!:+0B:04Fv/7?///���/<���</�/�/���.....10Ih�4LIha�@RX87�L��8Y#"'#"54763273327654'&#"327#"'&547676324'&#"3276t$
$
9-
%#A7)!%MA28C*$`(1BN*!�
	((y91@
CBg93E2'�E21G5A0';7BV=P9E@�H<H/:P?mnCr!vC
y@6@	

Fv/7?<?</<�<�.��ć.���.....10Ih�Iha�@RX87���8Y!#'##3'vo_gzg
^^C�x��*fCg@+@ 
Fv/7?<?<�</<�<�</<�</�/�.10Ih�Iha�@RX87���8Y%+32'4&+3264&+3276f���BFMXm+/0,	-&'1!��CSCP4(�/%�%�&2�'��iMX@"
 @!	


Fv/7??���<�</<�<..10Ih�
Iha�@RX87�
��8Y%#"'&=47632#&#"32767i&*PQ*&&*Q�d-

!
�S0571U�T16�<"$�%&!#'iCW@!@	
Fv/7?<?<�<�</<�</<�<10Ih�Iha�@RX87���8Y%+3254'&+32i����`
!DD>��@���$!�t5[Cm@/@

	
	Fv/7?<?</<�<�<�</<�<�<�<10Ih�Iha�@RX87���8Y)!#3#3[��&����C\�]�5[C	b@(

@		Fv/7?<?</<�<�</<�<�<�<10Ih�
Iha�@RX87�
��8Y#3##![���h&�]�C0��`M"{@6##@$!
"
!"!Fv/7?<??���<�<�</<<�</<�<�<�<.10Ih�#Iha�@RX87�#��8Y%#5#"=47632#&#"3276=#53`L	3�"'O�_*


/�2(��R18�<##�$&&$>S)gCb@*@
		
Fv/7?<?</<�</<�</<�<10Ih�Iha�@RX87���8Y!#5##3353ggpggpg��C��AOCl@0@
	
	
	Fv/7?<?<�<�</<�<�<�<10Ih�Iha�@RX87���8Y)53#5!#3O��WWUU]�\\�v;��UCW@!

@
	
	Fv/7?<?<�<�/<�<�<..10Ih�
Iha�@RX87�
��8Y%+52765#53U�ok.7���j^	\0`C
l@/@
	
	
	Fv/7?<?</<�<�.���.....10Ih�Iha�@RX87���8Y!##33`j^hhVkf��C����:VCN@@Fv/7?<?<�</<�<�<10Ih�Iha�@RX87���8Y)33V��g�C�qCo@0@
			



Fv/7?<?</<�</<�<�.���....10Ih�Iha�@RX87���8Y!#'#373q]LL]hAGbS��C��-cC	k@.

@
		Fv/7?<?</<�</<�<�.���..10Ih�
Iha�@RX87�
��8Y!##33cjffqadQ��C��R!��oM"O@##@$	Fv/7??��/<�</<�<10Ih�#Iha�@RX87�#��8Y%#"'&=463254'&#"3276o),RR,)URR,)b!!!!�U2662U�Tg52T��$&&$�$%%(hC
U@!@Fv/7?<?</<�</�/<�<.10Ih�Iha�@RX87���8Y+#324'&#3276h�4g�O*&i:8���C93O8�)��gM&k@+''@(
#Fv/7?<?/<��/<�</<�<�.���..10Ih�'Iha�@RX87�'��8Y%#'#"'&=4763254'&#"3276gC)U

Q)%%)QQ)%a
  

 

�l7t[81T�T1661T��%&&%�%&&"nC^@&@

Fv/7?<?<�</�/<�<.....10Ih�Iha�@RX87���8Y!#'#3274+32n}gh�P.+s	VS��C31Q��^�"��nG"Y@###@$Fv/7??���<�</�/�..10Ih�#Iha�@RX87�#��8Y%#"'332654'&'&54632#&#"n[Q�_	='<e	<RJ�];B%/E$�Qa�="-2.XJY�@>

(&jCY@#@	Fv/7?<?<�</<�<�<�<10Ih�Iha�@RX87���8Y###5!jnhnD��b'��iCP@@
	
	Fv/7??<�/<�</<�<10Ih�Iha�@RX87���8Y%#"'&53327653i&)RR)&b
!!
b�U1771U��t%&&%�vCl@/@Fv/7?<?<�.��ć.���...10Ih�Iha�@RX87���8Y#3vzg{hIJC��C��j�CK@@
	Fv/7?<?<......10Ih�Iha�@RX87���8Y#'#37�DC11CDi<<C����C����>vC�@C@

		


	
	Fv/7?<?<�.��ć.�������........10Ih�Iha�@RX87���8Y!#'#373vx66xrrv88vr��
#����}CJ@		@
Fv/7?<?</<�<...10Ih�	Iha�@RX87�	��8Y#537}�h�z;;C����\��tCk@,@	Fv/7?<?<�<�<�.���........10Ih�Iha�@RX87���8Y3!#5t������C�b�]|�aCY@#@	Fv/7?<?<�<�</<�<�<10Ih�Iha�@RX87���8Y#3#3��JJ��@��m��#OI@@	Fv/7/</<�.���..10Ih�Iha�@RX87���8Y#3#/�/J�|�aCY@#@	Fv/7?<?<�<�</<�<�<10Ih�Iha�@RX87���8Y#53#53�II��@b@_q?@@Fv/7/</<...10Ih�Iha�@RX87���8Y#'#73q9pp9�R_���2�C^��>@@Fv/7/</</<�<10Ih�Iha�@RX87���8Y!5!^��,�>F�9@@Fv/7/</<..10Ih�Iha�@RX87���8Y3#FmRS�n&��j�&b@)''@(
&	""
Fv/7?<??/���/<�</�....10Ih�'Iha�@RX87�'��8Y%&#"327#5#"&5476324#"'67632
&2\\W8K+):8"C1U0N38�
>�ENF79$!
u,1'+L!��oC"b@(##@$
	


	Fv/7??<?<?��/�/<�<<�<..10Ih�#Iha�@RX87�#��8Y%#"'#36324'&#"3276o%@C/Y\-A+#a&&&&�G<K^UC��^)"0)+,#..#-,$//$0��`�J@@


Fv/7??��/�....10Ih�Iha�@RX87���8Y%#"'&547632&#"327`5LR1,,1RG35#**)2=A;VU;A3H'!.-!')��rC
b@(!!@"Fv/7?<???<��/<�</��<<..10Ih�!Iha�@RX87�!��8Y!#5#"'&54763234'&#"3276r[-DA'
&BD2X[('('U]K>GJ<JX��-$..#--$..#��w�U@
@ 

Fv/7??��/<�</�<....10Ih�Iha�@RX87���8Y%327#"'&547632&'&#"w�%)Y1lR2/-2RT/'Z$$�)$+kA;UU>DL@3($$(>RIq@2@

	
	

Fv/7?<?<?<�<�</<�<<�</<�<10Ih�
Iha�@RX87���8Y#"3###535476;RS!	<=]44&!FS�
'V��:V<E!�[o�)g@+**@+	"	&Fv/7????<���/<�<�</<�...10Ih�*Iha�@RX87�*��8Y%#"'7325#"'&'&547632534'&#"3276o�[E'19d%E-%OD%X[&&&&�;A4�g+#1(,�8WP�-#//#,-#0/$5[C[@%@
	


	Fv/7?<?<?�/<�</<�<.10Ih�Iha�@RX87���8Y!#54#"#3632[]48]]4A+�O[�C��Z*"0IGIl@/@
	
	
Fv/7??<?<�<�<�/<�</�/<�<10Ih�
Iha�@RX87���8Y#"&54632#535#533�H�VV�L
&&&&��]�]��_�[1I
i@,@Fv/7??<?<�<�<�/<�</��<�<10Ih�Iha�@RX87���8Y#"'&54632#*#5325#531
w<
M%R�
&&�љa8?]-cC
�@<@
		

		

	
	Fv/7?<?<?</<�<�.��ć.���.....10Ih�Iha�@RX87���8Y!#'#373cnk]]chl��C����qCN@@Fv/7?<?<�</<�<�<10Ih�Iha�@RX87���8Y!##53\R��\z�#o@0$$@%	
#

	Fv/7?<?<?<�</<�<�</<�</<�<..10Ih�$Iha�@RX87�$��8Y!#54'&#"#54#"#367632>32z]	
@
]X%	.&
�#^��R)
��@D+0!..b�^@&@	
	
		Fv/7?<?<?�/<�<�</<�<.10Ih�	Iha�@RX87���8Y!#54#"#3632b]5
%]X:E]�O9"��W^���s�G@ 
@!Fv/7??��/�/�10Ih� Iha�@RX87�
��8Y%#"'&5476324'&#"3276s+/QQ0**0QQ/+a&&&&�T;CC;TT;BB;T*!**!+*!**!�ar�
b@(!!@"
	


	Fv/7??<?<?��/�/<�<<�<..10Ih�!Iha�@RX87�!��8Y%#"'#36324'&#"3276r
&AE0X\-CA'
`'(('�G=J^�-V^M>E-#..#--#//#�ar�
b@(!!@"Fv/7?<???<��/<�</��<<..10Ih�!Iha�@RX87�!��8Y#5#"'&547632534'&#"3276r[-DA'
&BC3X[('('��]K>GI<KWO�-$..#-.#//#0`�K@@


Fv/7/</............10Ih�Iha�@RX87���8Y"5#3546327&F9X]$!(
\�^W�r�"9//[B��N�"Y@###@$Fv/7??�<���</�/�..10Ih�#Iha�@RX87�#��8Y%#"'332654'&'&54632&#"NJ<{Y$,K+E83HU".J
.u;Eq.$ :8E72*""L��D�s@4@

	

	Fv/7?<?</<�<�</<�</<�<�<10Ih�Iha�@RX87���8Y#"&=#53533#;Dj/,33\88*?#/�VllV�)6��Z�P@@	
Fv/7??<�/<�</<�<10Ih�Iha�@RX87���8Y%#"&=332=3ZKGHJ]55]�IRRI��OO�
p�W@"@Fv/7?<?<�.���...10Ih�Iha�@RX87���8Y#3prlreDB��r���}�J@@
	Fv/7?<?<.....10Ih�Iha�@RX87���8Y#'#377}KH""HKc
22 ��r�������*f�O@@


	Fv/7?<?<........10Ih�Iha�@RX87���8Y!#'#7'373fe95iicc44ge���‰��!�ao�[@$@	Fv/7?<?<�.���.....10Ih�Iha�@RX87���8Y#73o�a&xfCC��Ӊ���;U�k@,@	Fv/7?<?<�<�<�.���........10Ih�Iha�@RX87���8Y3!#5U������V8V^�^2".h@-//@0.	*)!
%
.
Fv/7?<//�<�/<�/<�<�<..10Ih�
/Iha�@RX87�/��8Y"#"&545654'&5354&547632#&72
	D+
5MM	#
	33
)�.D@*Dq
-	T#E)]22]-��C�C?@@Fv/7?</</<�<10Ih�Iha�@RX87���8Y#3�88�^�^2"*i@-++@,!

&%*

 !"!
Fv/7?</<��</<�/<�<�<..10Ih�+Iha�@RX87�+��8Y%#&#"#5376=4767&'&=4'&#5362K
K
	#	33
)96
1�q-	S#E)]22],E&Ob3�~I@@Fv/7/</<��.....10Ih�Iha�@RX87���8Y%#"&#"5>3232767~#
x!'- y $�0 A
0��O��F@@Fv/7/<//�<......10Ih�Iha�@RX87���8Y7#34'&#"3276�\\��'?�Q�?@@	Fv/7/</</�/�10Ih�Iha�@RX87���8Y2#"&546#2#"&546
  � 
�i'�9@@Fv/7/</<..10Ih�Iha�@RX87���8Y#3'mQR�n}�V]@!@
	
	Fv/7//<�</��.���.......10Ih�	Iha�@RX87���8Y73#"'532654#"�=@)$)'9(0$9�OW�#^@%$$@%	!Fv/7//���</<�</�/��..10Ih�$Iha�@RX87�$��8Y47676=33273#"&4632#"&95\l+ZMA?Pi8)7
4r$"<AVW�'(((��v�&$C��v�&$���v�&$k��v�&$r��v�&$���v&$phC�@F@

	

	Fv/7?<?</<�<�<�</<�/<�<�<�.���....10Ih�Iha�@RX87���8Y35'#3#3#37�-gz�OOOO�]^C\�]�bZ���'�ViM&&���5[�&(C��5[�&(���5[�&(k��5[�&(���7E�&,�C��>L�&,�����7J�&,�k���,F�&,���rCn@.@	
Fv/7?<?</<�<�<�</<�</<�<�<�<10Ih�Iha�@RX87���8Y%+3254'&+32'#53r����`
!DD>Y����@���$!�t�]��$Y�&1�r���!��o�&2C����n�&2�����"��q�&2k����l�&2�r���+��y�&2
�
��!��oO&2��'��i�&8C��'��i�&8���'��i�&8k��'��i�&8���}�&<�3��hP%^@%&&@'
%"Fv/7?<?/�/�<�/<�<�<...10Ih�&Iha�@RX87�&��8Y3#4632#727654'&'567654'&#"�TSBCR<G(*N
 %�AV_DK11VO04]"
N"%��&��j%&DC�8��&��j%&D��8��&��j"&Dk�8��&��j%&Dr�8��&��j&D��8��&��jD&Dp�8
����#(3}@644@5
*)$
(.($,2&"Fv/7?<?<����/�/<�</��<............10Ih�4Iha�@RX87�4��8Y7#"&546324#"'632632327#"7&#"5&#"32�?)71(#%C"B/!!.;
�#EH!5n
##N!EOI54K!w.d35S@Ul,(@�jj[6��0�V`�&F������w%&HC�8����w%&H��8����w"&Hk�8����w&H��8��5J%&C��8��CI%&��!�8��4P"&
k���8��>Q&�����8��.b%&Qr�8����s%&RC�8����s%&R��8����s"&Rk�8����s%&Rr�8����s&R��8��s�#c@&$$@%"
"#	!  !#
"!Fv/7??/</<��/�/��.���..10Ih�$Iha�@RX87�$��8Y%#"'&5476324'&#"3276#s+/QQ0**0QQ/+a&&&&�/��T;CC;TT;BB;T*!**!+*!**!@����6��Z%&XC�8��6��Z%&X��8��6��Z"&Xk�8��6��Z&X��8��!�ao%&\��8��!�ao&\��8IG�	_@'

@		Fv/7?<?<�<�</<�</<�<10Ih�
Iha�@RX87�
��8Y!#535#533G�VV�L]�]����uM)�@<**@+"!&

Fv/7?<???<�/<�<�<��</<�</<�<�<10Ih�*Iha�@RX87�*��8Y3#"'&=476323#3#3'54'&#"3276�#O!!O"�FFFF�
 6,[�Z,5
\�]�b��;&&;�:	%%!���� (r@1))@*%
! '#

Fv/7?<?/����/<�<��/�</�....10Ih�)Iha�@RX87�)��8Y7#"'&547632632327#"7&#"4#"32�&+!!+'(+"�G(>'M
N
+4;cc:4,08?ql,k�jjvwv��q�&<���?�Q�?@@Fv/7/</<...10Ih�Iha�@RX87���8Y3#'#��HT65S�fAAj_&E@@		Fv/7//��/�/�10Ih�	Iha�@RX87���8Y2#"&546"32654&�&88&&88&$###1%&11&%1
0�`�G@@		
	
Fv/7/<</<<��..10Ih�Iha�@RX87���8Y#6323273#"&#"?W"f"."h
�c55@6���5@
@Fv/7//..10Ih�Iha�@RX87���8Y7'�.D�������X?�G�=@@	Fv/7/</<....10Ih�Iha�@RX87���8Y7'7'?.DC.D������5�Q�'��XPX����U	A@

@Fv/7//........10Ih�
Iha�@RX87�
��8Y'7'7�>�t'��!w�U�
f�NR�b����zr&�&~||||
~4(~�J�h�		p	�
`
��l

��,����n�b&�p�p����P�
�!!�"\"�#�$$�%<%�&J&�'('�'�(4))�*r+8+�,�-�..�/�0:0�1x2
2�3z4@4�5�6,6�7,7�8(8�9@:,:�;h;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�;�<�<�<�<�<�<�<�=============b=b=b=b=�=�=�=�=�=�=�>�>�>�???4?J@@2@H@^@t@�@�@�@�@�A�A�A�A�A�BBBB0BFB\BrB�B�B�CjC�C�C�C�C�C�EE"E:EREjE�E�E�E�E�E�E�FF*FBFZFrFrGHG`GxG�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�G�H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\H\IPJ:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:J:JPJPJPJPJPJPJPJPJPJPJPJPJPJPJPJPJ�J�J�J�J�K@K@K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�K�LL*L*L*L�L�L�L�L�L�MM4�2�����z����)���������u�u�I��������m�.�k�,�(�+�-�+�1�)�*��������9���*�'�'�5�5�0�)�A�;�0�:��-�!�(�)�"�"�&�'������|�m�|��2�F�&�!�0���>�!�5�I�_�-�q��.����0�B�L�6�
��*�!�;�^���^��������������������������������������������?������������i����}�������9��������'�5�5�5�5�7�>�7�,��$�!��"��+��!�'�'�'�'���3�&�&�&�&�&�&�
�0�����5�C�4�>��.��������6�6�6�6�!��!��������������������������������������������������I����������������������������������!�����������������������������������������������������?�����j��0����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������?�5���������{6	


!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a�������������������������������bc�d�e�������f����g�����h���jikmln�oqprsutvw�xzy{}|��~�����	
��
���
!"#$%&'()*+,-��./0123456789:;<��=>?@ABCDEFGHIJK��LMNOPQRSTU����VWXYZ[\]^_`abcdefghijk�lmno��p�qrstuv���������wxyz{|}~������������������������������������������������������������������������������������������������������������������������������������	


��!"���#�������	overscoremu1middotAmacronamacronAbreveabreveAogonekaogonekCcircumflexccircumflexCdotcdotDcarondcaronDslashEmacronemacronEbreveebreveEdotedotEogonekeogonekEcaronecaronGcircumflexgcircumflexGdotgdotGcedillagcedillaHcircumflexhcircumflexHbarhbarItildeitildeImacronimacronIbreveibreveIogonekiogonekIJijJcircumflexjcircumflexKcedillakcedillakgreenlandicLacutelacuteLcedillalcedillaLcaronlcaronLdotldotNacutenacuteNcedillancedillaNcaronncaronnapostropheEngengOmacronomacronObreveobreve	Odblacute	odblacuteRacuteracuteRcedillarcedillaRcaronrcaronSacutesacuteScircumflexscircumflexTcedillatcedillaTcarontcaronTbartbarUtildeutildeUmacronumacronUbreveubreveUringuring	Udblacute	udblacuteUogonekuogonekWcircumflexwcircumflexYcircumflexycircumflexZacutezacuteZdotzdotlongs
Aringacute
aringacuteAEacuteaeacuteOslashacuteoslashacutetonos
dieresistonos
Alphatonos	anoteleiaEpsilontonosEtatonos	IotatonosOmicrontonosUpsilontonos
OmegatonosiotadieresistonosAlphaBetaGammaEpsilonZetaEtaThetaIotaKappaLambdaMuNuXiOmicronPiRhoSigmaTauUpsilonPhiChiPsiIotadieresisUpsilondieresis
alphatonosepsilontonosetatonos	iotatonosupsilondieresistonosalphabetagammadeltaepsilonzetaetathetaiotakappalambdanuxiomicronrhosigma1sigmatauupsilonphichipsiomegaiotadieresisupsilondieresisomicrontonosupsilontonos
omegatonos	afii10023	afii10051	afii10052	afii10053	afii10054	afii10055	afii10056	afii10057	afii10058	afii10059	afii10060	afii10061	afii10062	afii10145	afii10017	afii10018	afii10019	afii10020	afii10021	afii10022	afii10024	afii10025	afii10026	afii10027	afii10028	afii10029	afii10030	afii10031	afii10032	afii10033	afii10034	afii10035	afii10036	afii10037	afii10038	afii10039	afii10040	afii10041	afii10042	afii10043	afii10044	afii10045	afii10046	afii10047	afii10048	afii10049	afii10065	afii10066	afii10067	afii10068	afii10069	afii10070	afii10072	afii10073	afii10074	afii10075	afii10076	afii10077	afii10078	afii10079	afii10080	afii10081	afii10082	afii10083	afii10084	afii10085	afii10086	afii10087	afii10088	afii10089	afii10090	afii10091	afii10092	afii10093	afii10094	afii10095	afii10096	afii10097	afii10071	afii10099	afii10100	afii10101	afii10102	afii10103	afii10104	afii10105	afii10106	afii10107	afii10108	afii10109	afii10110	afii10193	afii10050	afii10098WgravewgraveWacutewacute	Wdieresis	wdieresisYgraveygrave	afii00208
underscoredbl
quotereversedhhL�	+

!"#$%&'()*+,-./0123456789:;<=>?@AB*DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a����d��
.�&23�4,0/�5�C�krmno�p�sql'��$�5��%�6�bcdefghijklmnopqrstuvwxyz{|}~������������������������������������������������������������������������������������������������������������	


!"#&'()*+,-./01234789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijtuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������	

 !"#$%()-1:
~����������O\_s���   
" &!&""��
�����������Q^p���     
&!&""��:����������Lb���"&&&&��	


!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`a���������������������������������������������������������������������������������������������������������������������������	


!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abdefghijklmnopqrsuvwxyz{|}~�������������������������������������������������������������������������������������������������������������������������������	

����
!"#$&'()*+,-./02345���8	

																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																																												





















































































































































































































































































































































































































































































































































































��������2	LARA@ 
&�C����`CuMonofonto      
����7���MONR00�-._<����|���|����C�
 �8������66L?@
�Rhelpers/config.php000064400000005005151163475770010204
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTicketsProConfig
{
	protected $config;
	protected $db;

	protected $multiple = array('captcha_enabled_for',
'admin_groups');
	
	public function __construct() {
		$this->db = JFactory::getDbo();
		$this->load();
	}
	
	public function get($key, $default=false, $explode=false) {
		if (isset($this->config->{$key})) {
			return $explode ? $this->explode($this->config->{$key}) :
$this->config->{$key};
		}
		
		return $default;
	}
	
	public function getKeys() {
		return array_keys((array) $this->config);
	}
	
	public function getData() {
		return $this->config;
	}
	
	public function reload() {
		$this->load();
	}
	
	protected function load() {
		// reset the values
		$this->config = new stdClass();
		
		// prepare the query
		$query 	= $this->db->getQuery(true);
		$query->select('*')->from('#__rsticketspro_configuration');
		$this->db->setQuery($query);
		
		// run the query
		if ($results = $this->db->loadObjectList())
		{
			foreach ($results as $result)
			{
				if (in_array($result->name, $this->multiple))
				{
					$result->value = explode(',', $result->value);
				}
				$this->config->{$result->name} = $result->value;
			}
		}
	}
	
	protected function explode($string) {
		$string = str_replace(array("\r\n", "\r"),
"\n", $string);
		return explode("\n", $string);
	}
	
	protected function implode($string) {
		return implode("\n", $string);
	}
	
	protected function convert($key, &$value) {
		if (is_array($value)) {
			$value = implode(",", $value);
		}
	}
	
	public function set($key, $value) {
		if (isset($this->config->{$key})) {
			// convert values to appropriate type
			$this->convert($key, $value);
			
			// refresh our value
			$this->config->{$key} = $value;
			
			// prepare the query
			$query = $this->db->getQuery(true);
			$query->update('#__rsticketspro_configuration')
				 
->set($this->db->qn('value').'='.$this->db->q($value))
				 
->where($this->db->qn('name').'='.$this->db->q($key));
			$this->db->setQuery($query);
			
			// run the query
			return $this->db->execute();
		}
		
		return false;
	}
	
	public static function getInstance() {
		static $inst;
		if (!$inst) {
			$inst = new RSTicketsProConfig();
		}
		
		return $inst;
	}
}helpers/emails.php000064400000033604151163475770010217 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTicketsProEmailsHelper
{
	protected static $from;
	protected static $fromName;

	protected static function prepareEmailAddress($department_id)
	{
		// get department
		$department = RSTicketsProHelper::getDepartment($department_id);

		// prepare from name and email address
		if ($department->email_use_global)
		{
			if (RSTicketsProHelper::getConfig('email_use_global'))
			{
				// if we are using global settings, get them from the Joomla! config
				$config         = JFactory::getConfig();
				self::$from     = $config->get('mailfrom');
				self::$fromName = $config->get('fromname');
			}
			else
			{
				// if we are using RSTickets! Pro settings, get them from the
RSTickets! Pro config
				self::$from     =
RSTicketsProHelper::getConfig('email_address');
				self::$fromName =
RSTicketsProHelper::getConfig('email_address_fullname');
			}
		}
		else
		{
			self::$from     = $department->email_address;
			self::$fromName = $department->email_address_fullname;
		}
	}

	// cleaner proxy function for _getEmail()
	public static function getEmail($type, $tag = null)
	{
		// get current language
		if (is_null($tag))
		{
			$tag = JFactory::getLanguage()->get('tag');
		}

		return self::_getEmail($type, $tag);
	}

	// searches for emails defined under the $tag language
	// and reverts to english if not found
	protected static function _getEmail($type, $tag)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__rsticketspro_emails'))
			->where($db->qn('lang') . '=' .
$db->q($tag))
			->where($db->qn('type') . '=' .
$db->q($type));
		$db->setQuery($query);
		if ($email = $db->loadObject())
		{
			if ($email->published)
			{
				// found entry for the selected language, return it
				return $email;
			}
		}
		else
		{
			// default to english
			return self::_getEmail($type, 'en-GB');
		}

		return false;
	}

	// actual email sending happens here
	public static function send($from, $fromName, $recipient, $subject, $body,
$mode = false, $cc = null, $bcc = null, $attachment = null, $replyTo =
null, $replyToName = null)
	{
		try
		{
			$mailer = JFactory::getMailer();
			$mailer->setSender(array($from, $fromName));

			$mailer->setSubject($subject);
			$mailer->setBody($body);

			// Are we sending the email as HTML?
			if ($mode)
			{
				$mailer->IsHTML(true);
			}

			$mailer->addRecipient($recipient);
			$mailer->addCC($cc);
			$mailer->addBCC($bcc);
			$mailer->addAttachment($attachment);

			// Take care of reply email addresses
			$hasReplyTo = false;
			if (is_array($replyTo))
			{
				$numReplyTo = count($replyTo);
				for ($i = 0; $i < $numReplyTo; $i++)
				{
					if ($mailer->addReplyTo($replyTo[$i], $replyToName[$i]))
					{
						$hasReplyTo = true;
					}
				}
			}
			elseif ($replyTo)
			{
				if ($mailer->addReplyTo($replyTo, $replyToName))
				{
					$hasReplyTo = true;
				}
			}

			// Add sender to replyTo only if no replyTo received
			$mailer->setSender(array($from, $fromName, !$hasReplyTo));

			return $mailer->Send();
		}
		catch (Exception $e)
		{
			JFactory::getApplication()->enqueueMessage($e->getMessage(),
'warning');
			return false;
		}
	}

	// send predefined email messages
	public static function sendEmail($type, $data = array())
	{
		$lang = JFactory::getLanguage();
		$lang->load('com_rsticketspro', JPATH_ADMINISTRATOR,
'en-GB', true);
		$lang->load('com_rsticketspro', JPATH_ADMINISTRATOR,
$lang->getDefault(), true);
		$lang->load('com_rsticketspro', JPATH_ADMINISTRATOR, null,
true);

		$replacements = array(
			'{live_site}' => JUri::root()
		);

		switch ($type)
		{
			// sent to the staff member when a ticket gets assigned to him
			case 'add_ticket_staff':
				self::prepareEmailAddress($data['department_id']);

				// get email
				$email = self::getEmail('add_ticket_staff');
				if (!$email) {
					return false;
				}

				// get ticket
				$ticket = &$data['ticket'];
				// get department
				$department =
RSTicketsProHelper::getDepartment($data['department_id']);

				$customer = JFactory::getUser($ticket->customer_id);
				$staff    = JFactory::getUser($ticket->staff_id);

				// get latest message for ticket data
				$db    = JFactory::getDbo();
				$query = $db->getQuery(true);
				$query->select($db->qn('message'))
					->from($db->qn('#__rsticketspro_ticket_messages'))
					->where($db->qn('ticket_id') . '=' .
$db->q($data['ticket']->id))
					->where($db->qn('user_id') . ' != ' .
$db->q('-1'))
					->order($db->qn('date') . ' ' .
$db->escape('desc'));
				$db->setQuery($query, 0, 1);
				$message = $db->loadResult();

				// ticket data
				$replacements['{ticket}']  =
RSTicketsProHelper::route(JUri::root() .
'index.php?option=com_rsticketspro&view=ticket&cid=' .
$ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject));
				$replacements['{message}'] = $message;
				$replacements['{code}']    = $ticket->code;
				$replacements['{subject}'] = $ticket->subject;
				// department data
				$replacements['{department_name}'] =
$replacements['{department-name}'] =
JText::_($department->name);
				$replacements['{department_id}']   =
$replacements['{department-id}'] = $department->id;
				// priority
				$replacements['{priority}'] =
JText::_($ticket->priority->name);
				// status
				$replacements['{status}'] =
JText::_($ticket->status->name);
				// customer data
				$replacements['{customer_name}']     =
$replacements['{customer-name}'] = $customer->name;
				$replacements['{customer_email}']    =
$replacements['{customer-email}'] = $customer->email;
				$replacements['{customer_username}'] =
$replacements['{customer-username}'] = $customer->username;
				// staff data
				$replacements['{staff_name}']     =
$replacements['{staff-name}'] = $staff->name;
				$replacements['{staff_email}']    =
$replacements['{staff-email}'] = $staff->email;
				$replacements['{staff_username}'] =
$replacements['{staff-username}'] = $staff->username;
				// custom fields
				$fieldsText = '';
				foreach ($ticket->fields as $field)
				{
					if (in_array($field->type, array('select',
'multipleselect', 'checkbox')))
					{
						$field->value = str_replace("\n", ', ',
$field->value);
					}

					$fieldsText .= '<p>' . JText::_($field->label) .
': ' . $field->value . '</p>';
					$replacements['{field-' . $field->name . '}'] =
$field->value;
				}
				$replacements['{custom_fields}'] =
$replacements['{custom-fields}'] = $fieldsText;

				$emailSubject = '[' . $ticket->code . '] ' .
$ticket->subject;
				$emailMessage = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

				self::send(self::$from, self::$fromName, $staff->email,
$emailSubject, $emailMessage, true);
				break;
			case 'notification_department_change':
				self::prepareEmailAddress($data['to']);
				// get email
				$email = self::getEmail('notification_department_change');

				if (!$email) {
					return false;
				}
				// get ticket
				$ticket = &$data['ticket'];
				// get department
				$department =
RSTicketsProHelper::getDepartment($data['to']);

				$customer = JFactory::getUser($ticket->customer_id);
				$staff    = JFactory::getUser($ticket->staff_id);

				// get latest message for ticket data
				$db    = JFactory::getDbo();
				$query = $db->getQuery(true);
				$query->select($db->qn('message'))
					->from($db->qn('#__rsticketspro_ticket_messages'))
					->where($db->qn('ticket_id') . '=' .
$db->q($data['ticket']->id))
					->where($db->qn('user_id') . ' != ' .
$db->q('-1'))
					->order($db->qn('date') . ' ' .
$db->escape('desc'));
				$db->setQuery($query, 0, 1);
				$message = $db->loadResult();

				// ticket data
				$replacements['{ticket}']   =
RSTicketsProHelper::route(JUri::root() .
'index.php?option=com_rsticketspro&view=ticket&cid=' .
$ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject));
				$replacements['{message}']  = $message;
				$replacements['{code}']     = $ticket->code;
				$replacements['{new_code}'] = $data['code'];
				$replacements['{subject}']  = $ticket->subject;
				// department data
				$replacements['{department_name}'] =
$replacements['{department-name}'] =
JText::_($department->name);
				$replacements['{department_id}']   =
$replacements['{department-id}'] = $department->id;
				// priority
				$replacements['{priority}'] =
JText::_($ticket->priority->name);
				// status
				$replacements['{status}'] =
JText::_($ticket->status->name);
				// customer data
				$replacements['{customer_name}']     =
$replacements['{customer-name}'] = $customer->name;
				$replacements['{customer_email}']    =
$replacements['{customer-email}'] = $customer->email;
				$replacements['{customer_username}'] =
$replacements['{customer-username}'] = $customer->username;
				// staff data
				$replacements['{staff_name}']      =
$replacements['{staff-name}'] = $staff->name;
				$replacements['{staff_email}']     =
$replacements['{staff-email}'] = $staff->email;
				$replacements['{staff_username}']  =
$replacements['{staff-username}'] = $staff->username;
				$replacements['{department_from}'] =
JText::_($data['ticket']->department->name);
				$replacements['{department_to}']   =
JText::_($department->name);

				// custom fields
				$fieldsText = '';
				foreach ($ticket->fields as $field)
				{
					if (in_array($field->type, array('select',
'multipleselect', 'checkbox')))
					{
						$field->value = str_replace("\n", ', ',
$field->value);
					}

					$fieldsText .= '<p>' . JText::_($field->label) .
': ' . $field->value . '</p>';
					$replacements['{field-' . $field->name . '}'] =
$field->value;
				}
				$replacements['{custom_fields}'] =
$replacements['{custom-fields}'] = $fieldsText;

				$emailSubject = '[' . $data['code'] . ']
' . $ticket->subject;
				$emailMessage = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

				self::send(self::$from, self::$fromName, $customer->email,
$emailSubject, $emailMessage, true);
				break;
			case 'feedback_followup_email':
				self::prepareEmailAddress($data['department_id']);
				$email = self::getEmail('feedback_followup_email');
				if (!$email) {
					return false;
				}

				// get ticket
				$ticket = &$data['ticket'];
				// get department
				$department =
RSTicketsProHelper::getDepartment($data['department_id']);

				$customer = JFactory::getUser($ticket->customer_id);
				$staff    = JFactory::getUser($ticket->staff_id);

				// get latest message for ticket data
				$db    = JFactory::getDbo();
				$query = $db->getQuery(true);
				$query->select($db->qn('message'))
					->from($db->qn('#__rsticketspro_ticket_messages'))
					->where($db->qn('ticket_id') . '=' .
$db->q($data['ticket']->id))
					->where($db->qn('user_id') . ' != ' .
$db->q('-1'))
					->order($db->qn('date') . ' ' .
$db->escape('desc'));
				$db->setQuery($query, 0, 1);
				$message = $db->loadResult();

				// ticket data
				$replacements['{ticket}']  =
RSTicketsProHelper::route(JUri::root() .
'index.php?option=com_rsticketspro&view=ticket&cid=' .
$ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject));
				$replacements['{message}'] = $message;
				$replacements['{code}']    = $ticket->code;
				$replacements['{subject}'] = $ticket->subject;
				// department data
				$replacements['{department_name}'] =
$replacements['{department-name}'] =
JText::_($department->name);
				$replacements['{department_id}']   =
$replacements['{department-id}'] = $department->id;
				// priority
				$replacements['{priority}'] =
JText::_($ticket->priority->name);
				// status
				$replacements['{status}'] =
JText::_($ticket->status->name);
				// customer data
				$replacements['{customer_name}']     =
$replacements['{customer-name}'] = $customer->name;
				$replacements['{customer_email}']    =
$replacements['{customer-email}'] = $customer->email;
				$replacements['{customer_username}'] =
$replacements['{customer-username}'] = $customer->username;
				// staff data
				$replacements['{staff_name}']     =
$replacements['{staff-name}'] = $staff->name;
				$replacements['{staff_email}']    =
$replacements['{staff-email}'] = $staff->email;
				$replacements['{staff_username}'] =
$replacements['{staff-username}'] = $staff->username;

				$access_code = md5($ticket->id . ' | ' .
$customer->email);

				$no  =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&cid='
. $ticket->id .
'&task=ticket.rate&rating=1&access_code=' .
$access_code);
				$yes =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&cid='
. $ticket->id .
'&task=ticket.rate&rating=5&access_code=' .
$access_code);

				$replacements['{no}'] = $no;
				$replacements['{yes}'] = $yes;
				$replacements['{feedback}'] =
JText::sprintf('RST_FEEDBACK_EMAIL', $no, $yes);

				// custom fields
				$fieldsText = '';
				foreach ($ticket->fields as $field)
				{
					if (in_array($field->type, array('select',
'multipleselect', 'checkbox')))
					{
						$field->value = str_replace("\n", ', ',
$field->value);
					}

					$fieldsText .= '<p>' . JText::_($field->label) .
': ' . $field->value . '</p>';
					$replacements['{field-' . $field->name . '}'] =
$field->value;
				}
				$replacements['{custom_fields}'] =
$replacements['{custom-fields}'] = $fieldsText;

				$emailSubject = '[' . $ticket->code . '] ' .
$ticket->subject;
				$emailMessage = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

				self::send(self::$from, self::$fromName, $customer->email,
$emailSubject, $emailMessage, true);
		}
	}
}helpers/export.php000064400000016375151163475770010274 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('_JEXEC') or die('Restricted access');

abstract class RsticketsExport
{
    public static function buildCSV($data, $fileHash = '')
	{
        // accepted headers and keys
        $accepted_headers = array(
            'date',
            'last_reply',
            'replies',
            'code',
            'subject',
            'message',
            'last_reply_message',
            'customer',
            'priority',
            'status',
            'staff'
        );

        $enable_time_spent =
RSTicketsProHelper::getConfig('enable_time_spent');

		if ($enable_time_spent)
		{
			$accepted_headers[] = 'time_spent';
		}

        $rows = '';
        if ($fileHash == '')
        {
            $headers = array();
            foreach ($accepted_headers as $header)
            {
                if ($header == 'time_spent')
                {
                    $headers[] =  JText::_('RST_TIME_SPENT');
                }
                else
                {
                    $headers[] =  
JText::_('RST_TICKET_'.strtoupper($header));
                }
            }

            // Add header to rows
            $rows .= '"'.implode('","',
$headers).'"'."\n";
        }

        // load the dbo object
        $db  = JFactory::getDbo();

        // Add the data to rows
        foreach ($data as $i => $entry)
        {
            $row = array_flip($accepted_headers);

            // get the ticket 1st message
            $query   = $db->getQuery(true)
                ->select($db->qn('message'))
               
->from($db->qn('#__rsticketspro_ticket_messages'))
                ->where($db->qn('ticket_id') .
'=' . $db->q($entry->id))
                ->where($db->qn('user_id') . '!='
. $db->q('-1'))
                ->order($db->qn('date') . ' ' .
$db->escape('asc'));

            $row['message'] = $db->setQuery($query, 0,
1)->loadResult();

            // get the last reply
            $query   = $db->getQuery(true)
                ->select($db->qn('message'))
               
->from($db->qn('#__rsticketspro_ticket_messages'))
                ->where($db->qn('ticket_id') .
'=' . $db->q($entry->id))
                ->where($db->qn('user_id') . '!='
. $db->q('-1'))
                ->order($db->qn('date') . ' ' .
$db->escape('desc'));

            $row['last_reply_message'] = $db->setQuery($query,
0, 1)->loadResult();

            // if they are the same, than the last reply does not exists
            if ($row['message'] ===
$row['last_reply_message'])
            {
                $row['last_reply_message'] = '';
            }

            // remake the array with the fields that we need to output and
remodel for a human readable format
            foreach ((array) $entry as $key => $value)
            {
                //skip if is not supposed to be added
                if (!in_array($key,  $accepted_headers))
                {
                    continue;
                }

                if ($key == 'time_spent' &&
!$enable_time_spent)
                {
                    unset($row[$key]);
                    continue;
                }

                 switch ($key)
				 {
                     case 'date':
                     case 'last_reply':
                        $row[$key] = JHtml::_('date', $value,
RSTicketsProHelper::getConfig('date_format'));
                     break;

                     case 'staff';
                         $row[$key] = $entry->staff_id ? $value :
JText::_('RST_UNASSIGNED');
                     break;

                     case 'time_spent';
                         $row[$key] = RSTicketsProHelper::showTotal($value,
true);
                     break;

                     default:
                         $row[$key] = $value;
                     break;
                 }
            }

            array_walk($row, array('RsticketsExport',
'fixValue'));

            $rows .=
'"'.implode('","',$row).'"';
            $rows .="\n";
        }

        return $rows;
    }

    public static function fixValue(&$string, $key)
    {
        if (strlen($string) && in_array(substr($string, 0, 1),
array('=', '+', '-', '@')))
        {
            $string = ' ' . $string;
        }

		$string = str_replace(array('\\r', '\\n',
'\\t', '"'),
array("\015","\012","\011",
"'"), $string);
    }

    public static function writeCSV($query, $totalItems, $from, $fileHash,
$filename)
	{
        if
(!is_writable(JFactory::getConfig()->get('tmp_path'))) {
            throw new
Exception(JText::sprintf('COM_RSTICKETSPRO_TMP_PATH_NOT_WRITABLE',
JFactory::getConfig()->get('tmp_path')));
        }

        $db	= JFactory::getDbo();
        $db->setQuery($query, $from,
RSTicketsProHelper::getConfig('export_limit'));
        $data = $db->loadObjectList();

        $fileContent = RsticketsExport::buildCSV($data, $fileHash);

        // build the file hash if not already created
        if (!$fileHash) {
            $now 		= JHtml::date('now','D, d M Y
H:i:s');
            $date 		=
JHtml::date('now','Y-m-d_H-i-s');
            $filename 	= $filename.'-'.$date.'.csv';
            $fileHash 	= md5($filename.$now);
        }

        // create or append the hashed file and put content
        if ($fileContent) {
            if (!file_put_contents(self::getTmpPath($fileHash),
$fileContent, FILE_APPEND)) {
                throw new
Exception(JText::sprintf('COM_RSTICKETSPRO_COULD_NOT_EXPORT_CSV_PATH',
self::getTmpPath($fileHash)));
            }
        } else {
            throw new
Exception(JText::_('COM_RSTICKETSPRO_EXPORT_NO_DATA'));
        }

        $newFrom 		= ($from +
RSTicketsProHelper::getConfig('export_limit'));
        $checkRemaining = $totalItems - $newFrom;

        return (object) array(
            'newFrom' 	=> ($checkRemaining > 0 ? $newFrom :
$totalItems),
            'fileHash'	=> $fileHash
        );
    }

    public static function getCSV($fileHash)
	{
        $file 		= self::getTmpPath($fileHash);
        $content 	= is_file($file) ? file_get_contents($file) :
'';
        return $content;
    }

    protected static function getTmpPath($fileHash)
	{
        return
JFactory::getConfig()->get('tmp_path').'/'.$fileHash;
    }

    public static function buildCSVHeaders($filename)
	{
        // disable caching
        $now = JHtml::date('now','D, d M Y H:i:s');
        $date = JHtml::date('now','Y-m-d_H-i-s');
        $filename = $filename.'-'.$date.'.csv';

        header("Expires: Tue, 03 Jul 2001 06:00:00 GMT");
        header("Cache-Control: max-age=0, no-cache, must-revalidate,
proxy-revalidate");
        header("Last-Modified: ".$now." GMT");

        // force download
        header("Content-Type: application/force-download");
        header("Content-Type: application/octet-stream");
        header("Content-Type: application/download");

        // disposition / encoding on response body
        header("Content-Disposition:
attachment;filename=".$filename);
        header("Content-Transfer-Encoding: binary");
    }

}helpers/fields.php000064400000025315151163475770010213 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTicketsProFieldHelper
{
	protected static function isCode($value)
	{
		if (strpos(strtolower($value), '//<code>') !== false)
		{
			return eval($value);
		}

		return $value;
	}
	
	public static function showCustomField($field, $selected = array(),
$editable = true, $department_id = 0)
	{
		if (empty($field) || empty($field->type))
		{
			return false;
		}

		if (isset($field->value))
		{
			switch ($field->type)
			{
				case 'freetext':
				case 'textbox':
				case 'textarea':
				case 'calendar':
				case 'calendartime':
				case 'radio':
					$selected[$field->name] = $field->value;
					break;

				case 'select':
				case 'multipleselect':
				case 'checkbox':
					$selected[$field->name] = self::explode($field->value);
					break;
			}
		}

		$template = '%s';
		$name = $department_id ?
'rst_custom_fields[department_'.$department_id.']['.$field->name.']'
: 'rst_custom_fields['.$field->name.']';

		// Create the XML
		$xml = new SimpleXMLElement('<field></field>');
		$xml->addAttribute('label', $field->label);
		$xml->addAttribute('description', $field->description);

		if ($field->required)
		{
			$xml->addAttribute('required', 'true');
		}

		if ($department_id)
		{
			$xml->addAttribute('showon',
'jform[department_id]:' . $department_id);
		}

		if (!$editable)
		{
			$template .= '<div
class="rst_custom_field_label">' . $field->label .
'</div><div
class="rst_custom_field_value">%s</div>';
		}

		switch ($field->type)
		{
			case 'freetext':
				$jfield = JFormHelper::loadFieldType('rsticketsprohtml');
				$jfield->setup($xml, self::isCode($field->values));

				return $jfield->renderField(array('class' =>
'rst_custom_field'));
				break;

			case 'textbox':
				$value = isset($selected[$field->name]) ? $selected[$field->name]
: self::isCode($field->values);

				if ($editable)
				{
					$xml->addAttribute('name', $name);
					$xml->addAttribute('class', 'rst_textbox');

					$jfield = JFormHelper::loadFieldType('text');
					$jfield->setup($xml, $value);
					$html = $jfield->renderField(array('class' =>
'rst_custom_field'));

					if ($field->additional)
					{
						$html = str_replace('<input', '<input ' .
$field->additional, $html);
					}

					return $html;
				}
				else
				{
					return sprintf($template, RSTicketsProHelper::htmlEscape($value));
				}
				break;

			case 'textarea':
				$value = isset($selected[$field->name]) ? $selected[$field->name]
: self::isCode($field->values);

				if ($editable)
				{
					$xml->addAttribute('name', $name);
					$xml->addAttribute('class', 'rst_textarea');

					$jfield = JFormHelper::loadFieldType('textarea');
					$jfield->setup($xml, $value);
					$html = $jfield->renderField(array('class' =>
'rst_custom_field'));

					if ($field->additional)
					{
						$html = str_replace('<textarea', '<textarea
' . $field->additional, $html);
					}

					return $html;
				}
				else
				{
					return sprintf($template,
nl2br(RSTicketsProHelper::htmlEscape($value)));
				}
				break;

			case 'select':
				self::getOptions($field, $xml, $selected, $values);

				if ($editable)
				{
					$xml->addAttribute('name', $name . '[]');
					$xml->addAttribute('class', 'rst_select');

					$jfield = JFormHelper::loadFieldType('list');
					$jfield->setup($xml, $values);
					$html = $jfield->renderField(array('class' =>
'rst_custom_field'));

					if ($field->additional)
					{
						$html = str_replace('<select', '<select ' .
$field->additional, $html);
					}

					return $html;
				}
				else
				{
					return sprintf($template,
nl2br(RSTicketsProHelper::htmlEscape(implode("\n", $values))));
				}
				break;

			case 'multipleselect':
				self::getOptions($field, $xml, $selected, $values);

				if ($editable)
				{
					$xml->addAttribute('name', $name);
					$xml->addAttribute('class', 'rst_select');
					$xml->addAttribute('multiple', 'multiple');

					$jfield = JFormHelper::loadFieldType('list');
					$jfield->setup($xml, $values);
					$html = $jfield->renderField(array('class' =>
'rst_custom_field'));

					if ($field->additional)
					{
						$html = str_replace('<select', '<select ' .
$field->additional, $html);
					}

					return $html;
				}
				else
				{
					return sprintf($template,
nl2br(RSTicketsProHelper::htmlEscape(implode("\n", $values))));
				}
				break;

			case 'checkbox':
				self::getOptions($field, $xml, $selected, $values);

				if ($editable)
				{
					$xml->addAttribute('name', $name);

					$jfield = JFormHelper::loadFieldType('checkboxes');
					$jfield->setup($xml, $values);
					$html = $jfield->renderField(array('class' =>
'rst_custom_field'));

					if ($field->additional)
					{
						$html = str_replace('<input', '<input ' .
$field->additional, $html);
					}

					return $html;
				}
				else
				{
					return sprintf($template,
nl2br(RSTicketsProHelper::htmlEscape(implode("\n", $values))));
				}

				break;

			case 'radio':
				self::getOptions($field, $xml, $selected, $values);

				$value = isset($values[0]) ? $values[0] : null;

				if ($editable)
				{
					$xml->addAttribute('name', $name);

					if (version_compare(JVERSION, '4.0', '>='))
					{
						$jfield = JFormHelper::loadFieldType('radiobasic');
					}
					else
					{
						$jfield = JFormHelper::loadFieldType('radio');
					}

					$jfield->setup($xml, $value);
					$html = $jfield->renderField(array('class' =>
'rst_custom_field'));

					if ($field->additional)
					{
						$html = str_replace('<input', '<input ' .
$field->additional, $html);
					}

					return $html;
				}
				else
				{
					return sprintf($template, RSTicketsProHelper::htmlEscape($value));
				}
				break;

			case 'calendar':
			case 'calendartime':
				$value = isset($selected[$field->name]) ? $selected[$field->name]
: self::isCode($field->values);

				if ($editable)
				{
					$xml->addAttribute('name', $name);

					if ($field->type === 'calendartime')
					{
						$format =
self::getCalendarFormat(RSTicketsProHelper::getConfig('date_format'));
						$xml->addAttribute('showtime', 'true');
					}
					else
					{
						$format =
self::getCalendarFormat(RSTicketsProHelper::getConfig('date_format_notime'));
					}

					$xml->addAttribute('format', $format);
					
					if ($field->additional)
					{
						$attributes = self::parseAttributes($field->additional);

						foreach ($attributes as $attribute => $val)
						{
							$xml->addAttribute($attribute, $val);
						}
					}

					$jfield = JFormHelper::loadFieldType('calendar');

					// Sanity check for value
					try
					{
						JFactory::getDate($value);
					}
					catch (Exception $e)
					{
						$value = null;
					}

					$jfield->setup($xml, $value);
					return $jfield->renderField(array('class' =>
'rst_custom_field'));
				}
				else
				{
					return sprintf($template, RSTicketsProHelper::htmlEscape($value));
				}
				break;
		}

		return false;
	}

	protected static function parseAttributes($string)
	{
		$parsed = array();

		// Let's grab all the key/value pairs using a regular expression
		if
(preg_match_all('/([\w:-]+)[\s]?(=[\s]?"([^"]*)")?/i',
$string, $attr))
		{
			$numPairs = count($attr[1]);
			for ($i = 0; $i < $numPairs; $i++)
			{
				$parsed[$attr[1][$i]] = $attr[3][$i];
			}
		}

		return $parsed;
	}

	protected static function getOptions($field, $xml, $selected,
&$values)
	{
		$values = array();
		$field->values = self::explode(self::isCode($field->values));
		if ($field->values)
		{
			foreach ($field->values as $string)
			{
				$disabled = false;
				if (strpos($string, '[d]') !== false)
				{
					$string = str_replace('[d]', '', $string);
					$disabled = true;
				}

				// <optgroup>
				if (strpos($string, '[g]') !== false)
				{
					$string = str_replace('[g]', '', $string);
					$option = $xml->addChild('option', $string);
					$option->addAttribute('value',
'<OPTGROUP>');
					continue;
				}
				if (strpos($string, '[/g]') !== false)
				{
					$string = str_replace('[/g]', '', $string);
					$option = $xml->addChild('option', $string);
					$option->addAttribute('value',
'</OPTGROUP>');
					continue;
				}

				$checked = false;
				if (strpos($string, '[c]') !== false)
				{
					$string = str_replace('[c]', '', $string);

					if (!isset($selected[$field->name]))
					{
						$checked = true;
					}
				}

				if (strpos($string, '|') !== false)
				{
					list($value, $text) = explode('|', $string, 2);
				}
				else
				{
					$value = $text = $string;
				}

				if (isset($selected[$field->name]) && in_array($value,
(array) $selected[$field->name]))
				{
					$checked = true;
				}

				$option = $xml->addChild('option', $text);
				$option->addAttribute('value', $value);
				if ($disabled)
				{
					$option->addAttribute('disabled', 'disabled');
				}
				if ($checked)
				{
					$values[] = $value;
				}
			}
		}
	}

	protected static function getCalendarFormat($format)
	{
		/*
		%a 	abbreviated weekday name D
		%A 	full weekday name l
		%b 	abbreviated month name M
		%B 	full month name F
		%C 	century number
		%d 	the day of the month ( 00 .. 31 ) d
		%e 	the day of the month ( 0 .. 31 ) j
		%H 	hour ( 00 .. 23 ) H
		%I 	hour ( 01 .. 12 ) h
		%j 	day of the year ( 000 .. 366 ) z
		%k 	hour ( 0 .. 23 ) G
		%l 	hour ( 1 .. 12 ) g
		%m 	month ( 01 .. 12 ) m
		%M 	minute ( 00 .. 59 ) i
		%n 	a newline character \n
		%p 	``PM'' or ``AM'' A
		%P 	``pm'' or ``am'' a
		%S 	second ( 00 .. 59 ) s
		%s 	number of seconds since Epoch (since Jan 01 1970 00:00:00 UTC) U
		%t 	a tab character \t
		%U, %W, %V 	the week number W
		%u 	the day of the week ( 1 .. 7, 1 = MON ) N
		%w 	the day of the week ( 0 .. 6, 0 = SUN ) w
		%y 	year without the century ( 00 .. 99 ) y
		%Y 	year including the century ( ex. 1979 ) Y
		%% 	a literal % character %
		*/

		$php = array('%', 'D', 'l', 'M',
'F', 'd', 'j', 'H', 'h',
'z', 'G', 'g', 'm', 'i',
"\n", 'A', 'a', 's', 'U',
"\t", 'W', 'N', 'w', 'y',
'Y');
		$js  = array('%%', '%a', '%A',
'%b', '%B', '%d', '%e',
'%H', '%I', '%j', '%k',
'%l', '%m', '%M', '%n',
'%p', '%P', '%S', '%s',
'%t', '%U', '%u', '%w',
'%y', '%Y');

		return str_replace($php, $js, $format);
	}
	
	protected static function explode($string)
	{
		$string = str_replace(array("\r\n", "\r"),
"\n", $string);
		return explode("\n", $string);
	}
}helpers/index.html000064400000000054151163475770010222
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>helpers/rsticketspro.php000064400000135710151163475770011502
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

require_once dirname(__FILE__) . '/config.php';
require_once dirname(__FILE__) . '/version.php';

if (!defined('RST_UPLOAD_FOLDER'))
{
	define('RST_UPLOAD_FOLDER', JPATH_SITE .
'/components/com_rsticketspro/assets/files');
}
if (!defined('RST_CATEGORY_THUMB_FOLDER'))
{
	define('RST_CATEGORY_THUMB_FOLDER', JPATH_SITE .
'/components/com_rsticketspro/assets/thumbs');
}

define('RST_STATUS_OPEN', 1);
define('RST_STATUS_CLOSED', 2);
define('RST_STATUS_ON_HOLD', 3);

define('RST_ASSIGNMENT_STATIC', 0);
define('RST_ASSIGNMENT_AUTO', 1);

define('RST_DEPARTMENT_RULE_RANDOM', 1);
define('RST_DEPARTMENT_RULE_SEQUENTIAL', 0);

JTable::addIncludePath(JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/tables');
JForm::addFormPath(JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/models/forms');
JForm::addFieldPath(JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/models/fields');

class RSTicketsProHelper
{
	public static function readConfig($force = false)
	{
		$config = RSTicketsProConfig::getInstance();

		if ($force)
		{
			$config->reload();
		}

		return $config->getData();
	}
	
	public static function cronPluginExists() {
		static $result;

		if (is_null($result)) {
			$result = JPluginHelper::getPlugin('system',
'rsticketsprocron');
		}

		return !empty($result);
	}

	public static function getConfig($name = null)
	{
		$config = RSTicketsProConfig::getInstance();
		if (is_null($name))
		{
			return $config->getData();
		}
		else
		{
			if ($name == 'show_alternative_email' &&
!self::cronPluginExists())
			{
				return false;
			}

			return $config->get($name);
		}
	}

	public static function saveSystemMessage($ticket_id, $data, $includeUser =
true)
	{
		// get the current user
		if ($includeUser)
		{
			$data['user_id'] = JFactory::getUser()->id;
		}

		JTable::addIncludePath(JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/tables');

		$message = JTable::getInstance('Ticketmessages',
'RsticketsproTable');
		$message->save(array(
			'ticket_id' => $ticket_id,
			'user_id'   => '-1',
			'message'   => serialize($data),
			'date'      => JFactory::getDate()->toSql(),
			'html'      => 0
		));
	}

	protected static function getSystemObject($type, $id, $escape = true)
	{
		static $cache;

		// Cache our data so we don't query the db often
		if (!is_array($cache))
		{
			$cache = array();
			$db    = JFactory::getDbo();

			// Load departments
			$query = $db->getQuery(true);
			$query->select($db->qn('id'))
				->select($db->qn('name'))
				->from($db->qn('#__rsticketspro_departments'));
			$cache['department'] =
$db->setQuery($query)->loadObjectList('id');

			// Load statuses
			$query = $db->getQuery(true);
			$query->select($db->qn('id'))
				->select($db->qn('name'))
				->from($db->qn('#__rsticketspro_statuses'));
			$cache['status'] =
$db->setQuery($query)->loadObjectList('id');

			// Load priorities
			$query = $db->getQuery(true);
			$query->select($db->qn('id'))
				->select($db->qn('name'))
				->from($db->qn('#__rsticketspro_priorities'));
			$cache['priority'] =
$db->setQuery($query)->loadObjectList('id');

			$cache['user'] = array(
				// Get the 'Unassigned' user.
				0 => (object) array(
					'name' => JText::_('RST_UNASSIGNED')
				)
			);
		}

		if ($type == 'user' && !isset($cache[$type][$id]))
		{
			$userField = RSTicketsProHelper::getConfig('show_user_info');
			$db        = JFactory::getDbo();
			$query     = $db->getQuery(true);

			$query->select($db->qn('username'))
				->select($db->qn('name'))
				->select($db->qn('email'))
				->from($db->qn('#__users'))
				->where($db->qn('id') . '=' .
$db->q($id));

			if ($user = $db->setQuery($query)->loadObject())
			{
				$cache[$type][$id] = (object) array('name' =>
$user->{$userField});
			}
		}

		// Found a match
		if (isset($cache[$type][$id]) &&
isset($cache[$type][$id]->name))
		{
			if ($escape)
			{
				return htmlentities($cache[$type][$id]->name, ENT_COMPAT,
'utf-8');
			}
			else
			{
				return $cache[$type][$id]->name;
			}
		}

		// Failsafe
		return JText::_('RST_SYSMESSAGE_MISSING');
	}


	public static function checkIfEmailExists($email)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('id')
			->from($db->qn('#__users'))
			->where($db->qn('email') . ' = ' .
$db->q($email));
		$db->setQuery($query);

		return $db->loadResult();
	}

	protected static function parseSystemMessage($data)
	{
		$message = '';
		$data    = unserialize($data);

		switch ($data['type'])
		{
			case 'department':
				$from    = self::getSystemObject($data['type'],
$data['from']);
				$to      = self::getSystemObject($data['type'],
$data['to']);
				$user    = self::getSystemObject('user',
$data['user_id']);
				$message =
JText::sprintf('RST_SYSMESSAGE_TICKET_DEPARTMENT_CHANGE',
JText::_($from), JText::_($to), $user);
				break;

			case 'priority':
				$from    = self::getSystemObject($data['type'],
$data['from']);
				$to      = self::getSystemObject($data['type'],
$data['to']);
				$user    = self::getSystemObject('user',
$data['user_id']);
				$message =
JText::sprintf('RST_SYSMESSAGE_TICKET_PRIORITY_CHANGE',
JText::_($from), JText::_($to), $user);
				break;

			case 'status':
				$from    = self::getSystemObject($data['type'],
$data['from']);
				$to      = self::getSystemObject($data['type'],
$data['to']);
				$user    = self::getSystemObject('user',
$data['user_id']);
				$message =
JText::sprintf('RST_SYSMESSAGE_TICKET_STATUS_CHANGE',
JText::_($from), JText::_($to), $user);
				break;

			case 'staff':
				$from    = self::getSystemObject('user',
$data['from']);
				$to      = self::getSystemObject('user',
$data['to']);
				$user    = self::getSystemObject('user',
$data['user_id']);
				$message =
JText::sprintf('RST_SYSMESSAGE_TICKET_STAFF_CHANGE', $from, $to,
$user);
				break;

			case 'autoclose':
				$message = JText::sprintf('RST_SYSMESSAGE_TICKET_AUTO_CLOSE',
$data['days']);
				break;
		}

		return $message;
	}

	public static function addHistory($ticket_id, $type = 'view',
$user_id = null, $ip = null)
	{
		if (is_null($user_id))
		{
			$user_id = JFactory::getUser()->id;
		}
		if (is_null($ip))
		{
			$ip =
JFactory::getApplication()->input->server->get('REMOTE_ADDR',
'', 'string');
		}

		if (!RSTicketsProHelper::getConfig('store_ip'))
        {
            $ip = '0.0.0.0';
        }

		$table = JTable::getInstance('Tickethistory',
'RsticketsproTable');
		$table->save(array(
			'ticket_id' => $ticket_id,
			'user_id'   => $user_id,
			'ip'        => $ip,
			'date'      => JFactory::getDate()->toSql(),
			'type'      => $type,
		));
	}

	public static function getDepartment($department_id, $reload = false)
	{
		static $cache = array();

		if (!isset($cache[$department_id]) || $reload)
		{
			JTable::addIncludePath(JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/tables');

			$cache[$department_id] = JTable::getInstance('Departments',
'RsticketsproTable');
			$cache[$department_id]->load($department_id);
		}

		return $cache[$department_id];
	}

	// deprecated
	public static function getAdminGroups()
	{
		require_once dirname(__FILE__) . '/users.php';

		return RSTicketsProUsersHelper::getAdminGroups();
	}

	// deprecated
	public static function getAdminUsers()
	{
		require_once dirname(__FILE__) . '/users.php';

		return RSTicketsProUsersHelper::getAdminUsers();
	}

	public static function mailRoute($url, $xhtml = true, $Itemid = 0)
	{
		$url .= $Itemid ? '&Itemid=' . $Itemid : '';
		$path = JUri::root(false) . $url;

		return self::route($path, $xhtml, $Itemid, false);
	}

	public static function route($url, $xhtml = true, $Itemid = '',
$absolute = false)
	{
		if (!$Itemid &&
RSTicketsProHelper::getConfig('calculate_itemids'))
		{
			$Itemid = RSTicketsProHelper::_findRoute($url);
		}

		if (strpos($url, 'Itemid=') === false)
		{
			if (!$Itemid)
			{
				$Itemid =
JFactory::getApplication()->input->getInt('Itemid', 0);
				if ($Itemid)
				{
					$Itemid = 'Itemid=' . $Itemid;
				}
			}
			elseif ($Itemid)
			{
				$Itemid = 'Itemid=' . (int) $Itemid;
			}

			if ($Itemid)
			{
				$url .= (strpos($url, '?') === false) ? '?' .
$Itemid : '&' . $Itemid;
			}
		}

		$converted_url = JRoute::_($url, $xhtml);
		if ($absolute)
		{
			$uri           = JUri::getInstance();
			$converted_url = $uri->toString(array('scheme',
'host', 'port')) . $converted_url;
		}

		return $converted_url;
	}

	public static function _findRoute($url)
	{
		$app = JFactory::getApplication();
		if ($app->isClient('administrator'))
		{
			return '';
		}
		static $cache;

		if (!is_array($cache))
		{
			$cache = array();
		}

		$hash = md5($url);
		if (isset($cache[$hash]))
		{
			return $cache[$hash];
		}

		$query = array();
		$url   = str_replace('index.php?', '', $url);
		$parts = explode('&', $url);
		foreach ($parts as $part)
		{
			$part            = explode('=', $part, 2);
			$query[$part[0]] = @$part[1];
		}

		if (!isset($query['option']))
		{
			return '';
		}

		if (isset($query['view']) && $query['view']
== 'ticket')
		{
			$query           = array();
			$query['option'] = 'com_rsticketspro';
			$query['view']   = 'tickets';
		}

		if ($app->input->getCmd('option') ==
'com_rsticketspro')
		{
			$count = 0;
			foreach ($query as $var => $value)
			{
				if ($app->input->getCmd($var) &&
$app->input->getCmd($var) == $value)
				{
					$count++;
				}
			}
			if ($count == count($query) &&
$app->input->getInt('Itemid'))
			{
				return $app->input->getInt('Itemid');
			}
		}

		$menus     = $app->getMenu('site');
		$component = JComponentHelper::getComponent($query['option']);
		$items     = $menus->getItems('component_id',
$component->id);

		if ($items)
		{
			foreach ($items as $item)
			{

				if (!isset($item->query))
				{
					continue;
				}

				$count = 0;
				foreach ($item->query as $var => $value)
				{
					if (isset($query[$var]) && $value == $query[$var])
					{
						$count++;
					}
				}

				if ($count == count($query))
				{
					$cache[$hash] = $item->id;
				}
			}
		}

		if (isset($cache[$hash]))
		{
			return $cache[$hash];
		}

		return '';
	}

	public static function getReplyAbove()
	{
		$use_editor =
RSTicketsProHelper::getConfig('allow_rich_editor');
		$use_text   =
RSTicketsProHelper::getConfig('use_reply_above');
		$text		= RSTicketsProHelper::getConfig('reply_above');
		if ($use_text)
		{
			if ($use_editor)
			{
				return '<p>----------' . $text .
'----------</p>';
			}
			else
			{
				return '----------' . $text . '----------';
			}
		}
		
		return '';
	}

	public static function getPriorities($show_please_select = false)
	{
		$return = array();
		$db 	= JFactory::getDbo();

		if ($show_please_select)
		{
			$return[] = JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT_PRIORITY'));
		}

		$query = $db->getQuery(true)
			->select('*')
			->from($db->qn('#__rsticketspro_priorities'))
			->where($db->qn('published') . ' = ' .
$db->q(1))
			->order($db->qn('ordering') . ' asc');

		if ($results = $db->setQuery($query)->loadObjectList())
		{
			foreach ($results as $result)
			{
				$return[] = JHtml::_('select.option', $result->id,
JText::_($result->name));
			}
		}

		return $return;
	}

	public static function getJSSubjects($subjects)
	{
		if (strpos($subjects, '<code>') !== false)
		{
			$subjects = eval($subjects);
		}

		if (!is_array($subjects)) {
			$values = str_replace(array("\r\n", "\r"),
"\n", $subjects);
			$values = explode("\n", $values);
		} else {
			$values = $subjects;
		}

		$return   = array();
		$return[] = "'':'" .
JText::_('RST_PLEASE_SELECT_SUBJECT', true) .
"'";

		foreach ($values as $value) {
			if (!empty($value)) {
				$return[] = json_encode($value) . ':' .
json_encode(JText::_($value));
			}
		}

		return $return;
	}

	public static function getStatuses()
	{
		$return = array();
		$db 	= JFactory::getDbo();

		$query = $db->getQuery(true)
			->select('*')
			->from($db->qn('#__rsticketspro_statuses'))
			->where($db->qn('published') . ' = ' .
$db->q(1))
			->order($db->qn('ordering') . ' asc');

		if ($results = $db->setQuery($query)->loadObjectList())
		{
			foreach ($results as $result)
			{
				$return[] = JHtml::_('select.option', $result->id,
JText::_($result->name));
			}
		}

		return $return;
	}

	public static function getDepartments($show_please_select = false)
	{
		$return = array();
		$db 	= JFactory::getDbo();

		if ($show_please_select)
		{
			$return[] = JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT_DEPARTMENT'));
		}

		$query = $db->getQuery(true)
			->select('*')
			->from($db->qn('#__rsticketspro_departments'))
			->where($db->qn('published') . ' = ' .
$db->q(1))
			->order($db->qn('ordering') . ' asc');

		if ($results = $db->setQuery($query)->loadObjectList())
		{
			$force_departments =
RSTicketsProHelper::getConfig('staff_force_departments');
			$is_staff          = RSTicketsProHelper::isStaff();
			$departments       = RSTicketsProHelper::getCurrentDepartments();

			foreach ($results as $result)
			{
				if ($is_staff && $force_departments &&
!in_array($result->id, $departments))
				{
					continue;
				}

				$return[] = JHtml::_('select.option', $result->id,
JText::_($result->name));
			}
		}

		return $return;
	}

	public static function getStaff($show_please_select = false,
$show_only_can_reply = false)
	{
		$db   	= JFactory::getDbo();
		$what 	= RSTicketsProHelper::getConfig('show_user_info');
		$return = array();

		if ($show_please_select)
		{
			$return[] = JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT_STAFF'));
		}

		if ($show_only_can_reply)
		{
			$query = $db->getQuery(true)
				->select($db->qn('id'))
				->from($db->qn('#__rsticketspro_groups'))
				->where($db->qn('answer_ticket') . ' = ' .
$db->q(1));

			$group_ids = $db->setQuery($query)->loadColumn();
		}

		$query = $db->getQuery(true)
			->select('*')
			->from($db->qn('#__rsticketspro_departments'))
			->where($db->qn('published') . ' = ' .
$db->q(1))
			->order($db->qn('ordering') . ' asc');

		if ($departments = $db->setQuery($query)->loadObjectList())
		{
			foreach ($departments as $department)
			{
				$optgroup        = new stdClass();
				$optgroup->value = '<OPTGROUP>';
				$optgroup->text  = JText::_($department->name);
				$return[]        = $optgroup;

				$query = $db->getQuery(true)
					->select($db->qn('user_id'))
					->from($db->qn('#__rsticketspro_staff_to_department'))
					->where($db->qn('department_id') . ' = ' .
$db->q($department->id));
				$users = $db->setQuery($query)->loadColumn();

				if ($show_only_can_reply)
				{
					if (empty($group_ids))
					{
						$users = array();
					}
					elseif ($users)
					{
						$query = $db->getQuery(true)
							->select($db->qn('user_id'))
							->from($db->qn('#__rsticketspro_staff'))
							->where($db->qn('group_id') . ' IN (' .
implode(',', $db->q($group_ids)) . ')')
							->where($db->qn('user_id') . ' IN (' .
implode(',', $db->q($users)) . ')');
						$users = $db->setQuery($query)->loadColumn();
					}
				}

				if ($users)
				{
					foreach ($users as $user_id)
					{
						$user     = JFactory::getUser($user_id);
						$return[] = JHtml::_('select.option',
$user->get('id'), $user->get($what));
					}
				}

				$optgroup        = new stdClass();
				$optgroup->value = '</OPTGROUP>';
				$optgroup->text  = '';
				$return[]        = $optgroup;
			}
		}

		return $return;
	}

	public static function getAvatar($user_id)
	{
		static $avatar_cache = array();
		if (!isset($avatar_cache[$user_id]))
		{
			$avatars = RSTicketsProHelper::getConfig('avatars');
			$icon    = RSTicketsProHelper::isStaff($user_id) ? 'staff' :
'user';
			$src     = JHtml::_('image', 'com_rsticketspro/' .
$icon . '-icon.png', '', array(), true, 1);

			switch ($avatars)
			{
				// Gravatar
				case 'gravatar':
					$user  = JFactory::getUser($user_id);
					$email = md5(strtolower(trim($user->get('email'))));
					$length = strlen(JUri::root(true).'/');
					$site_url = substr(JUri::root(), 0 , -$length);

					$src = 'https://www.gravatar.com/avatar/' . $email .
'?d=' . urlencode($site_url.JHtml::_('image',
'com_rsticketspro/' . $icon . '.png', '',
array(), true, 1));
					break;

				// Community Builder
				case 'comprofiler':
					require_once JPATH_ADMINISTRATOR .
'/components/com_comprofiler/plugin.foundation.php';

					global $_CB_framework;
					$cbUser = CBuser::getInstance($user_id);

					$avatar = $cbUser->getField('avatar', null,
'php', 'none', 'list');
					if (isset($avatar['avatar']))
					{
						$src = $avatar['avatar'];
					}
					else
					{
						$src = false;
					}
					break;

				// JomSocial
				case 'community':
					$file = JPATH_SITE .
'/components/com_community/libraries/core.php';
					if (file_exists($file))
					{
						require_once $file;
						$user = CFactory::getUser($user_id);
						$src  = $user->getThumbAvatar();
					}
					break;

				// Kunena
				case 'kunena':
					$file = JPATH_ADMINISTRATOR .
'/components/com_kunena/libraries/user/user.php';
					if (file_exists($file))
					{
						require_once $file;
						$user = KunenaUser::getInstance($user_id);
						$src  = $user->getAvatarURL();
					}
					elseif (file_exists(JPATH_LIBRARIES . '/kunena/factory.php')
|| class_exists('KunenaFactory'))
					{
						require_once JPATH_LIBRARIES . '/kunena/factory.php';
						$profile = KunenaFactory::getUser($user_id);
						$src     = $profile->getAvatarURL('list');
					}
					break;
			}

			$avatar_cache[$user_id] = $src;
		}

		return $avatar_cache[$user_id];
	}

	public static function explode($string)
	{
		$string = str_replace(array("\r\n", "\r"),
"\n", $string);

		return explode("\n", $string);
	}

	public static function showCustomField($field, $selected = array(),
$editable = true, $department_id = 0)
	{
		require_once dirname(__FILE__) . '/fields.php';

		return RSTicketsProFieldHelper::showCustomField($field, $selected,
$editable, $department_id);
	}
	
	public static function canDeleteTimeTracking($user_id =  null, $col =
'can_delete_time_history')
	{
		if (!$user_id)
		{
			$user = JFactory::getUser();
			if ($user->get('guest'))
			{
				return false;
			}
		}

		if (RSTicketsProHelper::isAdmin($user_id))
		{
			return true;
		}

		$user_id = (int) $user_id;
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->qn('id'))
			->from($db->qn('#__rsticketspro_staff'))
			->where($db->qn('user_id'). '= '.
$db->q($user_id))
			->where($db->qn($col). '= '. $db->q(1));

		$db->setQuery($query);
		if ($db->loadResult())
		{
			return true;
		}

		return false;
	}

	public static function isStaff($user_id = null)
	{
		if (!$user_id)
		{
			if (JFactory::getUser()->get('guest'))
			{
				return false;
			}

			return JFactory::getSession()->get('rsticketspro.is_staff',
false);
		}

		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->qn('id'))
			->from($db->qn('#__rsticketspro_staff'))
			->where($db->qn('user_id') . ' = ' .
$db->q($user_id));
		if ($db->setQuery($query)->loadResult())
		{
			return true;
		}

		if (RSTicketsProHelper::isAdmin($user_id))
		{
			return true;
		}

		return false;
	}

	public static function getCurrentPermissions()
	{
		if (JFactory::getUser()->get('guest'))
		{
			return array();
		}

		return
JFactory::getSession()->get('rsticketspro.permissions',
array());
	}

	public static function getCurrentDepartments()
	{
		if (JFactory::getUser()->get('guest'))
		{
			return array();
		}

		return
JFactory::getSession()->get('rsticketspro.departments',
array());
	}

	public static function getPermissions($user_id)
	{
		$return = array();
		$user 	= JFactory::getUser($user_id);
		$db 	= JFactory::getDbo();

		$query = $db->getQuery(true)
			->select($db->qn('group_id'))
			->from($db->qn('#__rsticketspro_staff'))
			->where($db->qn('user_id') . ' = ' .
$db->q($user->id));

		if ($group_id = $db->setQuery($query)->loadResult())
		{
			$query = $db->getQuery(true)
				->select('*')
				->from($db->qn('#__rsticketspro_groups'))
				->where($db->qn('id') . ' = ' .
$db->q($group_id));
			$return = $db->setQuery($query)->loadObject();
		}
		elseif (RSTicketsProHelper::isAdmin($user_id))
		{
			$return = JTable::getInstance('Groups',
'RsticketsproTable');
		}

		return $return;
	}

	// $user_id = if left null, the current logged in user's signature is
retrieved
	// $raw 	= if set to true, it will grab the signature as it appears in the
database,
	//			  otherwise it will strip the tags if no rich editor is set
	public static function getSignature($user_id = null, $raw = false)
	{
		$user  = $user_id ? JFactory::getUser($user_id) : JFactory::getUser();
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select($db->qn('signature'))
			->from($db->qn('#__rsticketspro_staff'))
			->where($db->qn('user_id') . '=' .
$db->q($user->id));
		$db->setQuery($query);
		$signature = (string) $db->loadResult();

		if (!$raw)
		{
			$allowEditor = self::getConfig('allow_rich_editor');
			if (!$allowEditor)
			{
				$signature = strip_tags($signature);
			}
		}

		return $signature;
	}

	public static function isAdmin($user_id = null)
	{
		$user = $user_id ? JFactory::getUser($user_id) : JFactory::getUser();
		$admin_groups = RSTicketsProHelper::getAdminGroups();
		$user_groups = $user->getAuthorisedGroups();
		foreach ($user_groups as $user_group_id)
		{
			if (in_array($user_group_id, $admin_groups))
			{
				return true;
			}
		}

		return false;
	}

	public static function getConsecutiveReplies($ticket_id)
	{
		$replies = 0;
		$db      = JFactory::getDbo();
		$query   = $db->getQuery(true)
			->select($db->qn('user_id'))
			->from($db->qn('#__rsticketspro_ticket_messages'))
			->where($db->qn('ticket_id') . '=' .
$db->q($ticket_id))
			->where($db->qn('user_id') . '!=' .
$db->q('-1'))
			->where($db->qn('submitted_by_staff') . '=' .
$db->q('0'))
			->order($db->qn('date') . ' ' .
$db->escape('desc'));

		if ($users = $db->setQuery($query)->loadColumn())
		{
			foreach ($users as $user_id)
			{
				if (RSTicketsProHelper::isStaff($user_id))
				{
					break;
				}

				$replies++;
			}
		}

		return $replies;
	}

	public static function getExtension($filename)
	{
		return JFile::getExt($filename);
	}

	public static function isAllowedExtension($ext, $ext_array)
	{
		if (!is_array($ext_array))
		{
			return true;
		}
		if (count($ext_array) == 0)
		{
			return true;
		}
		if (count($ext_array) == 1 && trim($ext_array[0]) ==
'')
		{
			return true;
		}
		if (in_array('*', $ext_array))
		{
			return true;
		}

		// convert everything to lowercase
		$ext = strtolower($ext);
		array_walk($ext_array, array('RSTicketsProHelper',
'arraytolower'));

		return in_array($ext, $ext_array);
	}

	public static function arraytolower(&$value, $key)
	{
		$value = strtolower($value);
	}

	// deprecated
	public static function getEmail($type)
	{
		require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/emails.php';

		return RSTicketsProEmailsHelper::getEmail($type);
	}

	public static function getFooter()
	{
		$footer = '<p style="text-align: center"><a
href="https://www.rsjoomla.com/joomla-components/joomla-help-desk.html"
title="Joomla! Help Desk Ticketing System"
target="_blank">Joomla! Help Desk Ticketing System</a>
by <a href="https://www.rsjoomla.com"
target="_blank" title="Joomla!
Extensions">RSJoomla!</a></p>';

		return $footer;
	}

	public static function shorten($string, $max = 255, $more =
'...')
	{
		$string_tmp = '';
		$exp        = explode(' ', $string);
		for ($i = 0; $i < count($exp); $i++)
		{
			if (strlen($string_tmp) + strlen($exp[$i]) < $max)
			{
				$string_tmp .= $exp[$i] . ' ';
			}
			else
			{
				break;
			}
		}
		$string = substr($string_tmp, 0, -1) . (strlen($string) >
strlen($string_tmp) ? $more : '');

		return RSTicketsProHelper::closeTags($string);
	}

	public static function closeTags($html)
	{
		preg_match_all('#<([a-z]+)(?: .*)?(?<![/|/ ])>#iU',
$html, $result);
		$openedtags = $result[1];
		preg_match_all('#</([a-z]+)>#iU', $html, $result);
		$closedtags = $result[1];
		$len_opened = count($openedtags);
		if (count($closedtags) == $len_opened)
		{
			return $html;
		}

		$openedtags = array_reverse($openedtags);
		for ($i = 0; $i < $len_opened; $i++)
		{
			if (!in_array($openedtags[$i], $closedtags))
			{
				$html .= '</' . $openedtags[$i] . '>';
			}
			else
			{
				unset($closedtags[array_search($openedtags[$i], $closedtags)]);
			}
		}

		return $html;
	}

	public static function sendMail($from, $fromname, $recipient, $subject,
$body, $mode = 0, $attachments = null, $cc = null, $bcc = null)
	{
		try
		{
			if (!is_array($recipient))
			{
				$recipient = array($recipient);
			}

			foreach ($recipient as $i => $r)
			{
				$r = trim($r);
				if (!JMailHelper::isEmailAddress($r))
				{
					unset($recipient[$i]);
				}
			}

			if (empty($recipient) || !count($recipient))
			{
				return false;
			}

			// Get a JMail instance
			$mail = JFactory::getMailer();

			$mail->ClearReplyTos();
			$mail->setSender(array($from, $fromname));
			$mail->setSubject($subject);
			$mail->setBody($body);

			// Are we sending the email as HTML?
			if ($mode)
			{
				$mail->IsHTML(true);
				$mail->AltBody = strip_tags($body);
			}

			$mail->addRecipient($recipient);
			$mail->ClearReplyTos();
			$mail->addReplyTo($from, $fromname);

			if (!empty($cc))
			{
				$cc = str_replace(array("\r\n", "\r"),
"\n", $cc);
				$cc = explode("\n", $cc);
				foreach ($cc as $i => $r)
				{
					$r = trim($r);
					if (!JMailHelper::isEmailAddress($r))
					{
						continue;
					}

					$mail->addCC($r);
				}
			}

			if (!empty($bcc))
			{
				$bcc = str_replace(array("\r\n", "\r"),
"\n", $bcc);
				$bcc = explode("\n", $bcc);
				foreach ($bcc as $i => $r)
				{
					$r = trim($r);
					if (!JMailHelper::isEmailAddress($r))
					{
						continue;
					}

					$mail->addBCC($r);
				}
			}

			if (is_array($attachments) && count($attachments))
			{
				foreach ($attachments as $attachment)
				{
					$mail->AddStringAttachment(file_get_contents($attachment->path),
$attachment->filename);
				}
			}

			return $mail->Send();
		}
		catch (Exception $e)
		{
			JFactory::getApplication()->enqueueMessage($e->getMessage(),
'warning');
			return false;
		}
	}

	public static function htmlEscape($val)
	{
		return htmlentities($val, ENT_COMPAT, 'UTF-8');
	}

	public static function sef($id)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		if (JFactory::getApplication()->isClient('administrator'))
		{
			return $id;
		}
		else
		{
			$query->select($db->qn('subject'))
				->from($db->qn('#__rsticketspro_tickets'))
				->where($db->qn('id') . ' = ' . (int) $id);
			$db->setQuery($query);
			$name = $db->loadResult();

			return $id . ':' . JFilterOutput::stringURLSafe($name);
		}
	}

	public static function showMessage($message)
	{
		if ($message->html == 1)
		{
			// message was saved in HTML format
			return RSTicketsProHelper::cleanHTML($message);
		}
		elseif ($message->html == 2)
		{
			// message was saved before the REV 9 update
			return '<p>' . nl2br($message->message) .
'</p>';
		}
		else
		{
			// message was saved in TEXT format

			// keep tabs and double spaces in proper format
			if ($message->user_id == '-1')
			{
				$message->message =
RSTicketsProHelper::parseSystemMessage($message->message);
			}
			else
			{
				$message->message =
RSTicketsProHelper::htmlEscape($message->message);
				$message->message = str_replace('  ',
'&nbsp;&nbsp;', $message->message);
				$message->message = str_replace("\t",
'&nbsp;&nbsp;&nbsp;&nbsp;',
$message->message);
			}

			return '<p>' . nl2br($message->message) .
'</p>';
		}
	}

	public static function filterText($text, $user = null)
	{
		// Punyencoding utf8 email addresses
		$text = JFilterInput::getInstance()->emailToPunycode($text);

		// Filter settings
		$config = JComponentHelper::getParams('com_config');
		if ($user && !empty($user->id))
		{
			$userGroups = JAccess::getGroupsByUser($user->get('id'));
		}
		else
		{
			static $filter;
			if (!$filter)
			{
				$filter = JFilterInput::getInstance(
					array('a', 'abbr', 'address',
'b', 'br', 'caption', 'center',
'dd', 'dl', 'dt', 'del',
'em', 'font', 'hr', 'i',
'img', 'ins', 'ul', 'li',
'mark', 'ol', 'p', 'span',
'small', 'strong', 'sub', 'sup',
'table', 'tbody', 'td', 'tr',
'th', 'thead', 'u', 'h1',
'h2', 'h3', 'h4', 'h5',
'h6'),
					array('size', 'src', 'href',
'title', 'rel', 'color', 'face',
'colspan', 'rowspan', 'align',
'bgcolor', 'border', 'cellpadding',
'cellspacing', 'valign', 'alt')
				);
			}
			
			return $filter->clean($text, 'html');
		}

		$filters = $config->get('filters');

		$blackListTags       = array();
		$blackListAttributes = array();

		$customListTags       = array();
		$customListAttributes = array();

		$whiteListTags       = array();
		$whiteListAttributes = array();

		$whiteList  = false;
		$blackList  = false;
		$customList = false;
		$unfiltered = false;

		// Cycle through each of the user groups the user is in.
		// Remember they are included in the Public group as well.
		foreach ($userGroups as $groupId)
		{
			// May have added a group by not saved the filters.
			if (!isset($filters->$groupId))
			{
				continue;
			}

			// Each group the user is in could have different filtering properties.
			$filterData = $filters->$groupId;
			$filterType = strtoupper($filterData->filter_type);

			if ($filterType == 'NH')
			{
				// Maximum HTML filtering.
			}
			elseif ($filterType == 'NONE')
			{
				// No HTML filtering.
				$unfiltered = true;
			}
			else
			{
				// Blacklist or whitelist.
				// Preprocess the tags and attributes.
				$tags           = explode(',', $filterData->filter_tags);
				$attributes     = explode(',',
$filterData->filter_attributes);
				$tempTags       = array();
				$tempAttributes = array();

				foreach ($tags as $tag)
				{
					$tag = trim($tag);

					if ($tag)
					{
						$tempTags[] = $tag;
					}
				}

				foreach ($attributes as $attribute)
				{
					$attribute = trim($attribute);

					if ($attribute)
					{
						$tempAttributes[] = $attribute;
					}
				}

				// Collect the blacklist or whitelist tags and attributes.
				// Each list is cummulative.
				if ($filterType == 'BL')
				{
					$blackList           = true;
					$blackListTags       = array_merge($blackListTags, $tempTags);
					$blackListAttributes = array_merge($blackListAttributes,
$tempAttributes);
				}
				elseif ($filterType == 'CBL')
				{
					// Only set to true if Tags or Attributes were added
					if ($tempTags || $tempAttributes)
					{
						$customList           = true;
						$customListTags       = array_merge($customListTags, $tempTags);
						$customListAttributes = array_merge($customListAttributes,
$tempAttributes);
					}
				}
				elseif ($filterType == 'WL')
				{
					$whiteList           = true;
					$whiteListTags       = array_merge($whiteListTags, $tempTags);
					$whiteListAttributes = array_merge($whiteListAttributes,
$tempAttributes);
				}
			}
		}

		// Remove duplicates before processing (because the blacklist uses both
sets of arrays).
		$blackListTags        = array_unique($blackListTags);
		$blackListAttributes  = array_unique($blackListAttributes);
		$customListTags       = array_unique($customListTags);
		$customListAttributes = array_unique($customListAttributes);
		$whiteListTags        = array_unique($whiteListTags);
		$whiteListAttributes  = array_unique($whiteListAttributes);

		// Unfiltered assumes first priority.
		if ($unfiltered)
		{
			// Dont apply filtering.
		}
		else
		{
			// Custom blacklist precedes Default blacklist
			if ($customList)
			{
				$filter = JFilterInput::getInstance(array(), array(), 1, 1);

				// Override filter's default blacklist tags and attributes
				if ($customListTags)
				{
					$filter->tagBlacklist = $customListTags;
				}

				if ($customListAttributes)
				{
					$filter->attrBlacklist = $customListAttributes;
				}
			}
			// Blacklists take second precedence.
			elseif ($blackList)
			{
				// Remove the whitelisted tags and attributes from the black-list.
				$blackListTags       = array_diff($blackListTags, $whiteListTags);
				$blackListAttributes = array_diff($blackListAttributes,
$whiteListAttributes);

				$filter = JFilterInput::getInstance($blackListTags,
$blackListAttributes, 1, 1);

				// Remove whitelisted tags from filter's default blacklist
				if ($whiteListTags)
				{
					$filter->tagBlacklist = array_diff($filter->tagBlacklist,
$whiteListTags);
				}
				// Remove whitelisted attributes from filter's default blacklist
				if ($whiteListAttributes)
				{
					$filter->attrBlacklist = array_diff($filter->attrBlacklist,
$whiteListAttributes);
				}
			}
			// Whitelists take third precedence.
			elseif ($whiteList)
			{
				// Turn off XSS auto clean
				$filter = JFilterInput::getInstance($whiteListTags,
$whiteListAttributes, 0, 0, 0);
			}
			// No HTML takes last place.
			else
			{
				$filter = JFilterInput::getInstance();
			}

			$text = $filter->clean($text, 'html');
		}

		return $text;
	}

	public static function cleanHTML($message)
	{
		$html = $message->message;
		
		if (function_exists('mb_convert_encoding'))
		{
			$html = mb_convert_encoding($html, 'HTML-ENTITIES',
'UTF-8');
		}

		if (class_exists('DOMDocument'))
		{
			$html = static::filterText($html,
JFactory::getUser($message->user_id));

			$doc    = new DOMDocument();
			$errors = libxml_use_internal_errors(true);
			$doc->loadHTML('<?xml version="1.0"
encoding="UTF-8"?><html_tags>' . $html .
'</html_tags>');
			$doc->encoding = 'UTF-8';
			libxml_clear_errors();
			$html =
substr($doc->saveHTML($doc->getElementsByTagName('html_tags')->item(0)),
strlen('<html_tags>'),
-strlen('</html_tags>'));

			libxml_use_internal_errors($errors);
		}

		return $html;
	}

	public static function trigger($event, $params)
	{
		static $app;

		if (is_null($app))
		{
			$app = JFactory::getApplication();

			JPluginHelper::importPlugin('rsticketspro');
		}
    
		// Prefix our events with 'onRsticketspro'
		$event = substr_replace($event, 'onRsticketspro', 0, 2);
		
		$app->triggerEvent($event, $params);
	}

	public static function tooltipClass()
	{
		static $loaded = false;

		if (!$loaded)
		{
			$loaded = true;

			static::tooltipLoad();
		}

		return 'hasPopover';
	}

	// Prepare the tooltip text
	public static function tooltipText($title, $content = '')
	{
		if ($content === '')
		{
			if (strpos($title, '::') !== false)
			{
				list($title, $content) = explode('::', $title);
			}
			else
			{
				$content = $title;
			}
		}
		// title="
		$result = htmlspecialchars(trim($title, ':')) .
'"';

		// "
		if (version_compare(JVERSION, '4.0', '>='))
		{
			if (JFactory::getLanguage()->isRtl())
			{
				$result .= ' data-bs-placement="left" ';
			}

			$result .= ' data-bs-content="' .
htmlspecialchars($content);
		}
		else
		{
			if (JFactory::getLanguage()->isRtl())
			{
				$result .= ' data-placement="left" ';
			}

			$result .= ' data-content="' .
htmlspecialchars($content);
		}

		return $result;
	}

	// Load tooltip
	public static function tooltipLoad()
	{
		JHtml::_('bootstrap.popover', '.hasPopover',
array('trigger' => 'hover focus'));
	}

	public static function renderModal($id, $args)
	{
		if (RSTicketsProHelper::getConfig('use_magnific_popup'))
		{
			return static::renderMagnificPopup($id, $args);
		}
		else
		{
			return JHtml::_('bootstrap.renderModal', $id, $args);
		}
	}

	public static function openModal($id)
	{
		if (RSTicketsProHelper::getConfig('use_magnific_popup'))
		{
			return "RSTicketsPro.openMagnificModal(event,
'#{$id}');";
		}
		else
		{
			return "jQuery('#{$id}').modal('show');";
		}
	}

	public static function renderMagnificPopup($id = null, $args = array())
	{
		if (is_null($id))
		{
			return '';
		}

		if (!isset($args['title']) || strlen($args['title'])
== 0)
		{
			return '';
		}

		if (!isset($args['url']) || strlen($args['url']) ==
0)
		{
			return '';
		}

		static $loadFiles;

		if (is_null($loadFiles))
		{
			JHtml::_('jquery.framework');
			JHtml::_('script',
'com_rsticketspro/jquery.magnific-popup.min.js',
array('relative' => true, 'version' =>
'auto'));
			JHtml::_('stylesheet',
'com_rsticketspro/magnific-popup.css', array('relative'
=> true, 'version' => 'auto'));

			JText::script('RST_JQUERY_NOT_FOUND');

			$loadFiles = true;
		}

		if (!isset($args['height']))
		{
			$args['height'] = 400;
		}

		$modal_html = '<div id="' . htmlspecialchars($id,
ENT_COMPAT, 'utf-8') . '"
class="rst-magnific-popup mfp-hide">
				<div class="magnific-header">
					<h3 id="rsdir-owner-reply-header">' .
htmlspecialchars($args['title'], ENT_COMPAT, 'utf-8') .
'</h3>
				</div>
				<div class="magnific-popup-body">
					<iframe style="height:
'.$args['height'].'px;" src="' .
htmlspecialchars($args['url'], ENT_COMPAT, 'utf-8') .
'"></iframe>
				</div>
				<button
title="'.JText::_('RST_CLOSE').'"
type="button"
class="mfp-close">&times;</button>
			</div>';

		return $modal_html;
	}

	public static function anonymise($id, $anonymiseJoomlaData = null)
    {
        $db         = JFactory::getDbo();
        $query      = $db->getQuery(true);
        $subquery   = $db->getQuery(true);

        $fake_text      =
JText::_('COM_RSTICKETSPRO_DATA_HAS_BEEN_ANONYMISED');
        $fake_ip        = '0.0.0.0';

		if ($anonymiseJoomlaData === null)
		{
			$anonymiseJoomlaData =
RSTicketsProHelper::getConfig('anonymise_joomla_data');
		}

		if ($anonymiseJoomlaData) {
            // Let's create a fake email & fake username
            $fake_email     = JUserHelper::genRandomPassword(mt_rand(10,
16)) . '@' . JUserHelper::genRandomPassword(mt_rand(10, 16));
            $fake_username  = JUserHelper::genRandomPassword(mt_rand(10,
16));

            // Make sure this email is free
            $query->clear()
                ->select($db->qn('id'))
                ->from($db->qn('#__users'))
                ->where($db->qn('email') . ' = '
. $db->q($fake_email));
            while ($db->setQuery($query)->loadResult())
            {
                $fake_email .= JUserHelper::genRandomPassword(mt_rand(1,
2));
                $query->clear()
                    ->select($db->qn('id'))
                    ->from($db->qn('#__users'))
                    ->where($db->qn('email') . ' =
' . $db->q($fake_email));
            }

            // Make sure this username is free
            $query->clear()
                ->select($db->qn('id'))
                ->from($db->qn('#__users'))
                ->where($db->qn('username') . ' =
' . $db->q($fake_username));
            while ($db->setQuery($query)->loadResult())
            {
                $fake_username .= JUserHelper::genRandomPassword(mt_rand(1,
2));
                $query->clear()
                    ->select($db->qn('id'))
                    ->from($db->qn('#__users'))
                    ->where($db->qn('username') . ' =
' . $db->q($fake_username));
            }

            // #__users data
            $query->clear()
                ->update($db->qn('#__users'))
                ->set($db->qn('name') . ' = ' .
$db->q($fake_username))
                ->set($db->qn('username') . ' = '
. $db->q($fake_username))
                ->set($db->qn('email') . ' = ' .
$db->q($fake_email))
                ->set($db->qn('password') . ' = '
.
$db->q(JUserHelper::hashPassword(JUserHelper::genRandomPassword(20))))
                ->where($db->qn('id') . ' = ' .
$db->q($id));
            $db->setQuery($query)->execute();
        }

        // Remove custom searches
        $query->clear()
            ->delete($db->qn('#__rsticketspro_searches'))
            ->where($db->qn('user_id') . ' = ' .
$db->q($id));
        $db->setQuery($query)->execute();

        // Remove staff to department assignments
        $query->clear()
           
->delete($db->qn('#__rsticketspro_staff_to_department'))
            ->where($db->qn('user_id') . ' = ' .
$db->q($id));
        $db->setQuery($query)->execute();

        // Anonymise tickets
        $query->clear()
            ->update($db->qn('#__rsticketspro_tickets'))
            ->set($db->qn('subject') . ' = ' .
$db->q($fake_text))
            ->set($db->qn('agent') . ' = ' .
$db->q(''))
            ->set($db->qn('ip') . ' = ' .
$db->q($fake_ip))
            ->where('(' . $db->qn('customer_id')
. ' = ' . $db->q($id) . ') OR (' . 
$db->qn('staff_id') . ' = ' . $db->q($id) .
')');
        $db->setQuery($query)->execute();

        // Anonymise ticket messages
        $query->clear()
           
->update($db->qn('#__rsticketspro_ticket_messages'))
            ->set($db->qn('message') . ' = ' .
$db->q($fake_text))
            ->where($db->qn('user_id') . ' = ' .
$db->q($id));
        $db->setQuery($query)->execute();

        // Remove ticket files
        $subquery->clear()
            ->select($db->qn('id'))
           
->from($db->qn('#__rsticketspro_ticket_messages'))
            ->where($db->qn('user_id') . ' = ' .
$db->q($id));
        $query->clear()
            ->select($db->qn('id'))
            ->select($db->qn('ticket_message_id'))
           
->from($db->qn('#__rsticketspro_ticket_files'))
            ->where($db->qn('ticket_message_id') . '
IN (' . (string) $subquery . ')');
        if ($files = $db->setQuery($query)->loadObjectList())
        {

            foreach ($files as $file)
            {
                $hash = md5($file->id . ' ' .
$file->ticket_message_id);
                JFile::delete(RST_UPLOAD_FOLDER . '/' . $hash);
            }
        }

        // Anonymise ticket custom fields
        $subquery->clear()
            ->select($db->qn('id'))
            ->from($db->qn('#__rsticketspro_tickets'))
            ->where('(' . $db->qn('customer_id')
. ' = ' . $db->q($id) . ') OR (' . 
$db->qn('staff_id') . ' = ' . $db->q($id) .
')');
        $query->clear()
           
->update($db->qn('#__rsticketspro_custom_fields_values'))
            ->set($db->qn('value') . ' = ' .
$db->q($fake_text))
            ->where($db->qn('ticket_id') . ' IN
(' . (string) $subquery . ')');
        $db->setQuery($query)->execute();

        // Anonymise ticket history
        $query->clear()
           
->update($db->qn('#__rsticketspro_ticket_history'))
            ->set($db->qn('ip') . ' = ' .
$db->q($fake_ip))
            ->where($db->qn('user_id') . ' = ' .
$db->q($id));
        $db->setQuery($query)->execute();

        // Anonymise ticket notes
        $query->clear()
           
->update($db->qn('#__rsticketspro_ticket_notes'))
            ->set($db->qn('text') . ' = ' .
$db->q($fake_text))
            ->where($db->qn('user_id') . ' = ' .
$db->q($id));
        $db->setQuery($query)->execute();
    }

	public static function getAlternativeEmail($user_id =  null) {
		if (empty($user_id)) {
			return '';
		}

		$db = JFactory::getDbo();

		$query = $db->getQuery(true);
		$query->select('alternative_email')
			->from($db->qn('#__rsticketspro_tickets'))
			->where($db->qn('customer_id') . '=' .
$db->q($user_id))
			->order($db->qn('date') . ' ' .
$db->escape('desc'));
		$db->setQuery($query, 0, 1);

		return (string) $db->loadResult();
	}

	public static function showTotal($duration, $split = false)
	{
		$return = '';
		$unit = RSTicketsProHelper::getConfig('time_spent_unit');

		if (RSTicketsProHelper::getConfig('time_spent_type') ===
'tracking')
		{
			if ($split)
			{
				$split_data = explode('.', $duration);
				$total_minutes = (int)$split_data[0] * 60;
				$total_minutes += (int)$split_data[1];

				$duration = $total_minutes * 60;
			}

			switch ($unit)
			{
				case 'm':
					$minutes = floor($duration / 60);
					$return = $minutes . ' ' .
JText::_('RST_TIME_UNIT_MINUTES');

					$diff = $duration - ($minutes * 60);
					if ($diff > 0)
					{
						$return .= ' ' . $diff . ' ' .
JText::_('RST_TIME_UNIT_SECONDS');
					}

					break;

				case 'h':
					$hours = round($duration / 3600);
					$return = $hours . ' ' .
JText::_('RST_TIME_UNIT_HOURS');

					$diff = $duration - ($hours * 3600);
					if ($diff > 0)
					{
						$minutes = round($diff / 60);
						$return .= ' ' . $minutes . ' ' .
JText::_('RST_TIME_UNIT_MINUTES');

						if ($hours == 0 && $minutes == 0) {
							$diff_sec = $duration - ($minutes * 60);
							$return .= ' (' . $diff_sec . ' ' .
JText::_('RST_TIME_UNIT_SECONDS').')';
						}
					}
					break;

				case 'd':
					$days = round($duration / 86400);
					$return = $days . ' ' .
JText::_('RST_TIME_UNIT_DAYS');

					$diff = $duration - ($days * 86400);
					if ($diff > 0)
					{
						$hours = round($diff / 3600);
						$return .= ' ' . $hours . ' ' .
JText::_('RST_TIME_UNIT_HOURS');

						$diff = $diff - ($hours * 3600);
						if ($diff > 0)
						{
							$minutes = round($diff / 60);
							$return .= ' ' . $minutes . ' ' .
JText::_('RST_TIME_UNIT_MINUTES');
						}
					}

					break;
			}
		}
		else
		{
			$return = $duration . ' ' .
JText::_('RST_TIME_UNIT_' . $unit);
		}

		return $return;
	}

	public static function showNotifyIcon($ticket)
	{
		if (!RSTicketsProHelper::isStaff() ||
!RSTicketsProHelper::getConfig('autoclose_enabled') ||
$ticket->last_reply_customer || $ticket->autoclose_sent ||
$ticket->status_id == RST_STATUS_CLOSED)
		{
			return '';
		}

		$interval =
RSTicketsProHelper::getConfig('autoclose_email_interval') *
86400;
		if ($interval < 86400)
		{
			$interval = 86400;
		}

		$now		= JFactory::getDate()->toUnix();
		$last_reply = JFactory::getDate($ticket->last_reply)->toUnix() +
$interval;

		if ($last_reply > $now)
		{
			return '';
		}

		$overdue = floor(($now - $last_reply) / 86400);

		if (!$overdue)
		{
			return '';
		}

		$url =
RSTicketsProHelper::route('index.php?option=com_rsticketspro&task=ticket.notify&cid='
. $ticket->id);
		$img = '<i class="rsticketsproicon-attention
rst_notify_ticket"></i>';

		return '<span
class="'.RSTicketsProHelper::tooltipClass().'"
title="'.RSTicketsProHelper::tooltipText(JText::sprintf('RST_TICKET_NOTIFY_DESC',
$overdue)).'"><a
href="'.$url.'">'.$img.'</a></span>';
	}
}helpers/ticket.php000064400000121274151163475770010231 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTicketsProTicketHelper
{
	protected $data = array();
	protected $attachments = array();
	protected $error;
	public $message_id = 0;
	public $ticket_id = 0;

	public static function convert($ticket, $ticketMessages, $params)
	{
		$body          =
RSTicketsProHelper::getConfig('kb_template_body');
		$ticketBody    =
RSTicketsProHelper::getConfig('kb_template_ticket_body');
		$useEditor     =
RSTicketsProHelper::getConfig('allow_rich_editor');
		$dateFormat    = RSTicketsProHelper::getConfig('date_format');
		$showEmailLink =
RSTicketsProHelper::getConfig('show_email_link');
		$userInfo      =
RSTicketsProHelper::getConfig('show_user_info');

		$table = JTable::getInstance('Kbcontent',
'RsticketsproTable');
		$db    = JFactory::getDbo();

		// Parse ticket message template
		$messages = array();
		foreach ($ticketMessages as $message)
		{
			// get user
			$user = JFactory::getUser($message->user_id);

			// no editor - transform newlines into <br />
			if (!$useEditor)
			{
				$message->message = nl2br($message->message);
			}

			// replacements
			$replacements = array(
				'{message_user}' => $showEmailLink ? '<a
href="mailto:' . htmlentities($user->email, ENT_COMPAT,
'utf-8') . '">' .
htmlentities($user->{$userInfo}, ENT_COMPAT, 'utf-8') .
'</a>' : htmlentities($user->{$userInfo}, ENT_COMPAT,
'utf-8'),
				'{message_user_name}' => htmlentities($user->name,
ENT_COMPAT, 'utf-8'),
				'{message_user_username}' =>
htmlentities($user->username, ENT_COMPAT, 'utf-8'),
				'{message_user_email}' => htmlentities($user->email,
ENT_COMPAT, 'utf-8'),
				'{message_date}' => JHtml::_('date',
$message->date, $dateFormat),
				'{message_text}' => $message->message
			);

			$messages[] = str_replace(array_keys($replacements),
array_values($replacements), $ticketBody);
		}

		// Parse template body
		$replacements = array(
			'{ticket_subject}'    => $ticket->subject,
			'{ticket_department}' => $ticket->department->name,
			'{ticket_date}'       => JHtml::_('date',
$ticket->date, $dateFormat),
			'{ticket_messages}'   => implode("\n",
$messages)
		);

		return $table->save(array(
			'name'           => $params->name,
			'text'           => str_replace(array_keys($replacements),
array_values($replacements), $body),
			'category_id'    => $params->category_id,
			'published'      => $params->publish_article,
			'private'        => $params->private,
			'from_ticket_id' => $ticket->id,
			'ordering'       =>
$table->getNextOrder($db->qn('category_id') . '='
. $db->q($params->category_id))
		));
	}

	protected static function generateNumber($max = 10)
	{
		$key = '';
		for ($i = 0; $i < $max; $i++)
		{
			$w1 = rand(0, 1);
			$w2 = 1 - $w1;
			$key .= chr($w1 * rand(65, 90) + $w2 * rand(48, 57));
		}

		return $key;
	}

	public static function generateCode($department_id)
	{
		$code = '';
		$db   = JFactory::getDbo();

		$department = RSTicketsProHelper::getDepartment($department_id);

		if ($department->generation_rule == RST_DEPARTMENT_RULE_RANDOM)
		{
			// trick to enter the loop below
			$found = true;
			while ($found)
			{
				// add the department prefix
				$code = $department->prefix . '-' .
strtoupper(self::generateNumber(10));

				$query = $db->getQuery(true);
				$query->select($db->qn('id'))
					->from($db->qn('#__rsticketspro_tickets'))
					->where($db->qn('code') . '=' .
$db->q($code));
				$db->setQuery($query);
				$found = $db->loadResult();
			}
		}
		elseif ($department->generation_rule ==
RST_DEPARTMENT_RULE_SEQUENTIAL)
		{
			// add the department prefix
			$code = $department->prefix . '-' .
str_pad($department->next_number, 10, 0, STR_PAD_LEFT);

			$department->save(array(
				'id'          => $department->id,
				'next_number' => $department->next_number + 1
			));
		}

		return $code;
	}

	public function bind($data)
	{
		$this->data = $data;
	}

	public function setError($error)
	{
		$this->error = $error;
	}

	public function getError()
	{
		return $this->error;
	}

	public function saveTicket()
	{
		$db = JFactory::getDbo();

		// trigger event before saving and adding user_error
		RSTicketsProHelper::trigger('onBeforeStoreTicket',
array($this->data));

		// create user
		if (empty($this->data['customer_id']))
		{
			if (RSTicketsProHelper::getConfig('allow_password_change')
&& !empty($this->data['password']))
			{
				$password = $this->data['password'];
			}
			else
			{
				$password = JUserHelper::genRandomPassword(8);
			}

			if ($user_id = $this->createUser($password))
			{
				$this->data['customer_id'] = $user_id;
			}
			else
			{
				return false;
			}
		}

		// assign staff member based on department settings
		// unassigned
		$this->data['staff_id'] = 0;

		$department =
RSTicketsProHelper::getDepartment($this->data['department_id']);
		// auto-assign to staff member with the least assigned tickets
		if ($department->assignment_type == RST_ASSIGNMENT_AUTO)
		{
			// select staff members that belong to this department
			$query = $db->getQuery(true);
			$query->select($db->qn('user_id'))
				->from($db->qn('#__rsticketspro_staff_to_department'))
				->where($db->qn('department_id') . '=' .
$db->q($department->id));
			$db->setQuery($query);
			if ($staff_ids = $db->loadColumn())
			{
				// select groups that can answer tickets
				$query = $db->getQuery(true);
				$query->select($db->qn('id'))
					->from($db->qn('#__rsticketspro_groups'))
					->where($db->qn('answer_ticket') . '=' .
$db->q(1));
				$db->setQuery($query);
				if ($group_ids = $db->loadColumn())
				{
                    $priority_ids = array(0,
$this->data['priority_id']);

                    $group_ids = array_map('intval',
$group_ids);
                    $staff_ids = array_map('intval',
$staff_ids);
                    $priority_ids = array_map('intval',
$priority_ids);

					$query        = $db->getQuery(true);
					$query->select($db->qn('user_id'))
						->from($db->qn('#__rsticketspro_staff'))
						->where($db->qn('group_id') . ' IN (' .
implode(',', $group_ids) . ')')
						->where($db->qn('user_id') . ' IN (' .
implode(',', $staff_ids) . ')')
						->where($db->qn('priority_id') . ' IN (' .
implode(',', $priority_ids) . ')')
						->where($db->qn('exclude_auto_assign') . ' =
' . $db->q(0));

					$db->setQuery($query);

					if ($staff_ids = $db->loadColumn())
					{
                        $staff_ids = array_map('intval',
$staff_ids);

						$query = $db->getQuery(true);
						$query->select($db->qn('staff_id'))
							->select('COUNT(' . $db->qn('id') .
') AS tickets')
							->from($db->qn('#__rsticketspro_tickets'))
							->where($db->qn('status_id') . '!=' .
$db->q(RST_STATUS_CLOSED))
							->where($db->qn('staff_id') . ' IN (' .
implode(',', $staff_ids) . ')')
							->group($db->qn('staff_id'))
							->order($db->qn('tickets') . ' ' .
$db->escape('asc'));
						$db->setQuery($query);
						$stats = $db->loadObjectList('staff_id');

						// must make sure we cover all staff members, even those who
don't have tickets yet
						foreach ($staff_ids as $staff)
						{
							if (!isset($stats[$staff]))
							{
								// found a staff member who has 0 tickets - assign
								$staff_id = $staff;
								break;
							}
						}

						// no staff member assigned so far - must grab from query the first
result
						if (empty($staff_id) && $stats)
						{
							if ($tmp = reset($stats))
							{
								$staff_id = $tmp->staff_id;
							}
						}

						// get a random staff id from all the members
						if (empty($staff_id))
						{
							$staff_id = $staff_ids[mt_rand(0, count($staff_ids) - 1)];
						}
					}
				}
			}

			if (!empty($staff_id))
			{
				$this->data['staff_id'] = $staff_id;
			}
		}

		// generate code based on department
		$this->data['code'] =
RSTicketsProTicketHelper::generateCode($this->data['department_id']);

		// add ticket
		$ticket = JTable::getInstance('Tickets',
'RsticketsproTable');
		if (!$ticket->save($this->data))
		{
			$this->setError($ticket->getError());

			return false;
		}

		$this->ticket_id = $ticket->id;

		// populate new data
		$this->data['ticket_id'] = $ticket->id;
		$this->data['user_id']   = $ticket->customer_id;

		// trigger event after saving ticket
		RSTicketsProHelper::trigger('onAfterStoreTicket',
array($this->data, $ticket));

		// let's add custom fields
		$custom_fields_email = '';
		if (!empty($this->data['fields']))
		{
			foreach ($this->data['fields'] as $custom_field_id =>
$value)
			{
				$table = JTable::getInstance('Customfieldsvalues',
'RsticketsproTable');
				$table->save(array(
					'custom_field_id' => $custom_field_id,
					'ticket_id'       => $ticket->id,
					'value'           => $value
				));

				// append fields to email text
				$field = JTable::getInstance('Customfields',
'RsticketsproTable');
				$field->load($custom_field_id);

				$label = JText::_($field->label);
				$val   = is_array($value) ? implode(', ', $value) : $value;

				$custom_fields_email .= "<p>$label: $val</p>";
			}
		}

		// let's save the message
		if (!$this->saveMessage(false))
		{
			return false;
		}

		// get email sending settings
		if ($department->email_use_global)
		{
			// are we using global ?
			if (RSTicketsProHelper::getConfig('email_use_global'))
			{
				$config   = JFactory::getConfig();
				$from     = $config->get('mailfrom');
				$fromname = $config->get('fromname');
			}
			else
			{
				$from     = RSTicketsProHelper::getConfig('email_address');
				$fromname =
RSTicketsProHelper::getConfig('email_address_fullname');
			}
		}
		else
		{
			$from     = $department->email_address;
			$fromname = $department->email_address_fullname;
		}

		$priority = JTable::getInstance('Priorities',
'RsticketsproTable');
		$priority->load($ticket->priority_id);

		$status = JTable::getInstance('Statuses',
'RsticketsproTable');
		$status->load($ticket->status_id);

		// start sending emails

		// send email to the customer with a copy of his own ticket
		if ($department->customer_send_copy_email)
		{
			if ($email =
RSTicketsProHelper::getEmail('add_ticket_customer'))
			{
				$customer = JFactory::getUser($ticket->customer_id);

				$replacements = array(
					'{live_site}'         => JUri::root(),
					'{ticket}'            =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject), true,
RSTicketsProHelper::getConfig('customer_itemid')),
					'{customer_name}'     => $customer->name,
					'{customer_username}' => $customer->username,
					'{customer_email}'    => $customer->email,
					'{code}'              => $ticket->code,
					'{subject}'           => $ticket->subject,
					'{priority}'          => JText::_($priority->name),
					'{status}'            => JText::_($status->name),
					'{message}'           =>
$this->data['message'],
					'{custom_fields}'     => $custom_fields_email,
					'{department_id}'     => $department->id,
					'{department_name}'   => JText::_($department->name)
				);

				$email_subject = '[' . $ticket->code . '] ' .
$ticket->subject;
				$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);
				$email_message = RSTicketsProHelper::getReplyAbove() . $email_message;

				/**
				 * Grab ticket attachments
				 */
				$files = $this->getTicketAttachments($ticket->id);

				/**
				 * Set this as default to null so we can overwrite
				 * only when it's necessary -> download_type ==
'attachment'
				 */
				$attachments = null;

				/**
				 * Check if the setting is activated and if there are files
				 *
				 */
				if ($department->customer_attach_email && !empty($files))
				{
					/**
					 * In case the download type is set to link
					 * we add a list of files to the end of
					 * the email message
					 */
					if ($department->download_type == 'link')
					{
						if ($files) {
							$email_message .= '<ul>';
							foreach ($files as $file) {
								$url =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&task=ticket.downloadfile&id='
. $file->id . '&access_code=' . md5($ticket->id .
'|' . $file->id . '|' . $file->filename));
								$email_message .= '<li><a href="' . $url .
'">' . $file->filename .
'</a></li>';
							}
							$email_message .= '</ul>';
						}
					}
					/**
					 * if the download_type == 'attachment'
					 * we need to populate $attachments var
					 * with the files
					 */
					else
					{
						$attachments = $this->attachments;
					}
				}

				RSTicketsProHelper::sendMail($from, $fromname, $customer->email,
$email_subject, $email_message, 1, $attachments, $department->cc,
$department->bcc);
			}
		}

		// send email to the staff member that gets assigned this ticket
		if ($department->staff_send_email &&
$this->data['staff_id'])
		{
			if ($email =
RSTicketsProHelper::getEmail('add_ticket_staff'))
			{
				$customer =
JFactory::getUser($this->data['customer_id']);
				$staff    = JFactory::getUser($this->data['staff_id']);

				$replacements = array(
					'{live_site}'         => JUri::root(),
					'{ticket}'            =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject), true,
RSTicketsProHelper::getConfig('customer_itemid')),
					'{customer_name}'     => $customer->name,
					'{customer_username}' => $customer->username,
					'{customer_email}'    => $customer->email,
					'{staff_name}'        => $staff->name,
					'{staff_username}'    => $staff->username,
					'{staff_email}'       => $staff->email,
					'{code}'              => $ticket->code,
					'{subject}'           => $ticket->subject,
					'{priority}'          => JText::_($priority->name),
					'{status}'            => JText::_($status->name),
					'{message}'           =>
$this->data['message'],
					'{custom_fields}'     => $custom_fields_email,
					'{department_id}'     => $department->id,
					'{department_name}'   => JText::_($department->name)
				);

				$email_subject = '[' . $ticket->code . '] ' .
$ticket->subject;
				$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);
				$email_message = RSTicketsProHelper::getReplyAbove() . $email_message;

				/**
				 * Grab ticket attachments
				 */
				$files = $this->getTicketAttachments($ticket->id);

				/**
				 * Set this as default to null so we can overwrite
				 * only when it's necessary -> download_type ==
'attachment'
				 */
				$attachments = null;

				/**
				 * Check if the setting is activated and if there are files
				 *
				 */
				if ($department->staff_attach_email && !empty($files))
				{
					/**
					 * In case the download type is set to link
					 * we add a list of files to the end of
					 * the email message
					 */
					if ($department->download_type == 'link')
					{
						$email_message .= '<ul>';
						foreach ($files as $file)
						{
							$url =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&task=ticket.downloadfile&id='
. $file->id . '&access_code=' .
md5($ticket->id.'|'.$file->id.'|'.$file->filename));
							$email_message .= '<li><a href="' . $url .
'">' . $file->filename .
'</a></li>';
						}
						$email_message .= '</ul>';
					}
					/**
					 * if the download_type == 'attachment'
					 * we need to populate $attachments var
					 * with the files
					 */
					else
					{
						$attachments = $this->attachments;
					}
				}

				RSTicketsProHelper::sendMail($from, $fromname, $staff->email,
$email_subject, $email_message, 1, $attachments, $department->cc,
$department->bcc);
			}
		}

		// notify the email addresses configured in the department
		if ($department->notify_new_tickets_to)
		{
			if ($email =
RSTicketsProHelper::getEmail('add_ticket_notify'))
			{
				$customer =
JFactory::getUser($this->data['customer_id']);
				$staff    = JFactory::getUser($this->data['staff_id']);

				$replacements = array(
					'{live_site}'         => JUri::root(),
					'{ticket}'            =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject), true,
RSTicketsProHelper::getConfig('customer_itemid')),
					'{customer_name}'     => $customer->name,
					'{customer_username}' => $customer->username,
					'{customer_email}'    => $customer->email,
					'{staff_name}'        => $staff->name,
					'{staff_username}'    => $staff->username,
					'{staff_email}'       => $staff->email,
					'{code}'              => $ticket->code,
					'{subject}'           => $ticket->subject,
					'{priority}'          => JText::_($priority->name),
					'{status}'            => JText::_($status->name),
					'{message}'           =>
$this->data['message'],
					'{custom_fields}'     => $custom_fields_email,
					'{department_id}'     => $department->id,
					'{department_name}'   => JText::_($department->name)
				);

				$email_subject = '[' . $ticket->code . '] ' .
$ticket->subject;
				$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

				$notify_new_tickets_to = str_replace(array("\r\n",
"\r"), "\n", $department->notify_new_tickets_to);
				$notify_new_tickets_to = explode("\n",
$notify_new_tickets_to);
				foreach ($notify_new_tickets_to as $notify_email)
				{
					$notify_email = trim($notify_email);
					/**
					 * Grab ticket attachments
					 */
					$files = $this->getTicketAttachments($ticket->id);

					/**
					 * Set this as default to null so we can overwrite
					 * only when it's necessary -> download_type ==
'attachment'
					 */
					$attachments = null;

					/**
					 * Check if the setting is activated and if there are files
					 *
					 */
					if ($department->staff_attach_email && !empty($files))
					{
						/**
						 * In case the download type is set to link
						 * we add a list of files to the end of
						 * the email message
						 */
						if ($department->download_type == 'link')
						{
							$email_message .= '<ul>';
							foreach ($files as $file)
							{
								$url =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&task=ticket.downloadfile&id='
. $file->id . '&access_code=' .
md5($ticket->id.'|'.$file->id.'|'.$file->filename));
								$email_message .= '<li><a href="' . $url .
'">' . $file->filename .
'</a></li>';
							}
							$email_message .= '</ul>';
						}
						/**
						 * if the download_type == 'attachment'
						 * we need to populate $attachments var
						 * with the files
						 */
						else
						{
							$attachments = $this->attachments;
						}
					}

					RSTicketsProHelper::sendMail($from, $fromname, $notify_email,
$email_subject, $email_message, 1, $attachments, $department->cc,
$department->bcc);
				}
			}
		}

		return true;
	}

	protected function getUserByEmail($email)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__users'))
			->where($db->qn('email') . ' LIKE ' .
$db->q($email));
		$db->setQuery($query);

		return $db->loadObject();
	}

	protected function createUser($password)
	{
		if ($customer =
$this->getUserByEmail($this->data['email']))
		{
			return $customer->id;
		}
		else
		{
			$db   = JFactory::getDbo();
			$lang = JFactory::getLanguage();
			$lang->load('com_users', JPATH_ADMINISTRATOR, null, true);

			if ((bool)
RSTicketsProHelper::getConfig('emails_as_usernames'))
			{
				$username = $this->data['email'];
			}
			else
			{
				@list($username, $domain) = explode('@',
$this->data['email']);

				if (preg_match("#[<>\"'%;()&]#i",
$username) || strlen(utf8_decode($username)) < 2)
				{
					$username =
JFilterOutput::stringURLSafe($this->data['name']);
					if (strlen($username) < 2)
					{
						$username = str_pad($username, 2, mt_rand(0, 9));
					}
				}

				$found = true;
				while ($found)
				{
					$query = $db->getQuery(true);
					$query->select($db->qn('id'))
						->from($db->qn('#__users'))
						->where($db->qn('username') . ' LIKE ' .
$db->q($username));
					$db->setQuery($query);
					$found = $db->loadResult();

					if ($found)
					{
						$username .= mt_rand(0, 9);
					}
				}
			}
			// create user object
			$user = new JUser();

			// Bind the data array to the user object
			$data = array(
				'name'     => trim($this->data['name']) ?
JComponentHelper::filterText($this->data['name']) :
$this->data['email'],
				'email'    => $this->data['email'],
				'username' => $username,
				'password' => $password
			);
			$data['password2'] = $data['password'];
			if (!$user->bind($data))
			{
				$this->setError($user->getError());

				return false;
			}

			$user->set('groups',
array(RSTicketsProHelper::getConfig('user_type')));

			$date = JFactory::getDate();
			$user->set('registerDate', $date->toSql());

			$user->set('block', 0);

			// If there was an error with registration, set the message
			if (!$user->save())
			{
				$this->setError($user->getError());

				return false;
			}

			$this->sendUserEmail($user, $password);

			return $user->id;
		}
	}

	protected function sendUserEmail($user, $password)
	{
		$email = RSTicketsProHelper::getEmail('new_user_email');
		if (!$email)
		{
			return false;
		}
		// disallow control chars in the email
		$password = preg_replace('/[\x00-\x1F\x7F]/', '',
$password);

		$lang = JFactory::getLanguage();
		$lang->load('com_rsticketspro', JPATH_SITE);

		// get email sending settings
		// are we using global ?
		if (RSTicketsProHelper::getConfig('email_use_global'))
		{
			$config   = JFactory::getConfig();
			$from     = $config->get('mailfrom');
			$fromname = $config->get('fromname');
		}
		else
		{
			$from     = RSTicketsProHelper::getConfig('email_address');
			$fromname =
RSTicketsProHelper::getConfig('email_address_fullname');
		}

		$replacements = array(
			'{live_site}' => JUri::root(),
			'{username}'  => $user->username,
			'{password}'  => $password,
			'{email}'     => $user->email
		);

		// assemble the email data
		try
		{
			return JFactory::getMailer()->sendMail($from, $fromname,
$user->email, $email->subject, str_replace(array_keys($replacements),
array_values($replacements), $email->message), true);
		}
		catch (Exception $e)
		{
			JFactory::getApplication()->enqueueMessage($e->getMessage(),
'warning');
			return false;
		}
	}

	public function saveMessage($sendMessageEmails = true)
	{
		$isStaff =
RSTicketsProHelper::isStaff($this->data['user_id']);

		// skip the email for the customer (as this is intended as his own
reply)
		$skip_customer_email = false;
		if ($isStaff &&
!empty($this->data['reply_as_customer'])) {
			$this->data['submitted_by_staff'] =
$this->data['user_id'];
			$this->data['user_id'] =
$this->data['customer_id'];
			$skip_customer_email = true;
		}
		// let's see if we need to add a signature
		if ($isStaff &&
RSTicketsProHelper::getConfig('show_signature') &&
!empty($this->data['use_signature']) &&
empty($this->data['reply_as_customer']))
		{
			$signature =
RSTicketsProHelper::getSignature($this->data['user_id']);
			if (strlen($signature))
			{
				$this->data['message'] .= "\r\n" . $signature;
			}
		}

		// let's set the message type
		$this->data['html'] = (int)
RSTicketsProHelper::getConfig('allow_rich_editor');

		if ($sendMessageEmails)
		{ // This is true only for replies
			RSTicketsProHelper::trigger('onBeforeStoreTicketReply',
array($this->data));
		}

		$message = JTable::getInstance('Ticketmessages',
'RsticketsproTable');
		if (!$message->save($this->data))
		{
			$this->setError($message->getError());

			return false;
		}

		if ($sendMessageEmails)
		{ // This is true only for replies
			RSTicketsProHelper::trigger('onAfterStoreTicketReply',
array($this->data, $message));
		}

		$this->message_id = $message->id;

		// let's add the files
		$hasFiles = null;
		if (!empty($this->data['files']))
		{
			foreach ($this->data['files'] as $file)
			{
				if ($file['src'] == 'upload')
				{
					$filename = $file['name'];
				}
				elseif ($file['src'] == 'cron')
				{
					$filename = $file['filename'];
				}

				$new_file = JTable::getInstance('Ticketfiles',
'RsticketsproTable');
				$new_file->save(array(
					'ticket_id'         =>
$this->data['ticket_id'],
					'ticket_message_id' => $message->id,
					'filename'          => $filename
				));

				$hash = md5($new_file->id . ' ' . $message->id);

				if ($file['src'] == 'upload')
				{
					$success = JFile::upload($file['tmp_name'],
RST_UPLOAD_FOLDER . '/' . $hash, false, true);
				}
				elseif ($file['src'] == 'cron')
				{
					$success = JFile::write(RST_UPLOAD_FOLDER . '/' . $hash,
$file['contents']);
				}

				// store attachment
				if ($success)
				{
					$this->attachments[] = (object) array(
						'path'     => RST_UPLOAD_FOLDER . '/' .
$hash,
						'filename' => $filename
					);
				}
			}

			$hasFiles = 1;
		}

		$original = JTable::getInstance('Tickets',
'RsticketsproTable');
		$original->load($this->data['ticket_id']);

		// $isStaff is defined at the start of this function.
		$isCustomer = $original->customer_id ==
$this->data['user_id'] || !$isStaff;
		// if a customer replied, we don't need to autoclose anymore
		$autocloseSent = $isCustomer ? 0 : null;
		// assign the ticket if the department's assignment type is static
and the ticket isn't already assigned
		// if submitted on behalf of another user, don't assign it (this
only happens when $sendMessageEmails is set to false - this means it is the
first message of the ticket)
		$staffId = $sendMessageEmails && $isStaff &&
$original->department->assignment_type == RST_ASSIGNMENT_STATIC
&& !$original->staff_id ? $this->data['user_id'] :
null;
		// update the status
		// if customer replied => open
		// if staff replied => on-hold
		// else don't modify the status
		$statusId = $isCustomer ? RST_STATUS_OPEN : ($isStaff ?
RST_STATUS_ON_HOLD : null);

		$object = (object) array(
			'id'                  =>
$this->data['ticket_id'],
			'last_reply'          => $this->data['date'],
			'last_reply_customer' => (int) !$isStaff,
			'autoclose_sent'      => $autocloseSent,
			'staff_id'            => $staffId,
			'has_files'           => $hasFiles,
			'replies'             => $original->replies + 1,
			'status_id'           => $statusId
		);
		JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));

		// Reload all ticket fields
		$ticket = JTable::getInstance('Tickets',
'RsticketsproTable');
		$ticket->load($ticket->id);

		$department =& $original->department;
		// get email sending settings
		if ($department->email_use_global)
		{
			// are we using global ?
			if (RSTicketsProHelper::getConfig('email_use_global'))
			{
				$config   = JFactory::getConfig();
				$from     = $config->get('mailfrom');
				$fromname = $config->get('fromname');
			}
			else
			{
				$from     = RSTicketsProHelper::getConfig('email_address');
				$fromname =
RSTicketsProHelper::getConfig('email_address_fullname');
			}
		}
		else
		{
			$from     = $department->email_address;
			$fromname = $department->email_address_fullname;
		}

		$priority = JTable::getInstance('Priorities',
'RsticketsproTable');
		$priority->load($original->priority_id);

		$status = JTable::getInstance('Statuses',
'RsticketsproTable');
		$status->load($original->status_id);

		// send email to the staff member with the customer's reply
		if ($sendMessageEmails)
		{
			if (!$isStaff && $department->staff_send_email &&
$original->staff_id)
			{
				if ($email =
RSTicketsProHelper::getEmail('add_ticket_reply_staff'))
				{
					$customer = &$original->customer;
					$staff = &$original->staff;
					$ticket_id = $original->id;

					$replacements = array(
						'{live_site}' => JUri::root(),
						'{ticket}' =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket_id . ':' .
JFilterOutput::stringURLSafe($original->subject), true,
RSTicketsProHelper::getConfig('staff_itemid')),
						'{customer_name}' => $customer->name,
						'{customer_username}' => $customer->username,
						'{customer_email}' => $customer->email,
						'{staff_name}' => $staff->name,
						'{staff_username}' => $staff->username,
						'{staff_email}' => $staff->email,
						'{code}' => $original->code,
						'{subject}' => $original->subject,
						'{priority}' => JText::_($priority->name),
						'{status}' => JText::_($status->name),
						'{message}' => $this->data['message'],
						'{department_id}' => $original->department_id,
						'{department_name}' => JText::_($department->name)
					);

					$email_subject = '[' . $original->code . '] ' .
$original->subject;
					$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);
					$email_message = RSTicketsProHelper::getReplyAbove() .
$email_message;

					$attachments = null;
					/**
					 * Check if the setting is activated and if there are files
					 *
					 */
					if ($department->staff_attach_email && $hasFiles) {
						/**
						 * In case the download type is set to link
						 * we add a list of files to the end of
						 * the email message
						 */
						if ($department->download_type == 'link') {
							$files =
$this->getTicketMessageAttachments($this->message_id);
							$email_message .= '<ul>';
							foreach ($files as $file) {
								$url =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&task=ticket.downloadfile&id='
. $file->id . '&access_code=' . md5($ticket->id .
'|' . $file->id . '|' . $file->filename));
								$email_message .= '<li><a href="' . $url .
'">' . $file->filename .
'</a></li>';
							}
							$email_message .= '</ul>';
						} /**
						 * if the download_type == 'attachment'
						 * we need to populate $attachments var
						 * with the files
						 */
						else {
							$attachments = $this->attachments;
						}
					}

					RSTicketsProHelper::sendMail($from, $fromname, $staff->email,
$email_subject, $email_message, 1, $attachments, $department->cc,
$department->bcc);
				}
			}
			elseif ($isStaff && $department->customer_send_email
&& !$skip_customer_email)
			{
				if ($email =
RSTicketsProHelper::getEmail('add_ticket_reply_customer'))
				{
					$customer = &$original->customer;
					$staff = $original->staff->id ? $original->staff :
$ticket->staff;
					$ticket_id = $original->id;

					$replacements = array(
						'{live_site}' => JUri::root(),
						'{ticket}' =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket_id . ':' .
JFilterOutput::stringURLSafe($original->subject), true,
RSTicketsProHelper::getConfig('customer_itemid')),
						'{customer_name}' => $customer->name,
						'{customer_username}' => $customer->username,
						'{customer_email}' => $customer->email,
						'{staff_name}' => $staff->name,
						'{staff_username}' => $staff->username,
						'{staff_email}' => $staff->email,
						'{code}' => $original->code,
						'{subject}' => $original->subject,
						'{priority}' => JText::_($priority->name),
						'{status}' => JText::_($status->name),
						'{message}' => $this->data['message'],
						'{department_id}' => $original->department_id,
						'{department_name}' => JText::_($department->name)
					);

					$email_subject = '[' . $original->code . '] ' .
$original->subject;
					$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);
					$email_message = RSTicketsProHelper::getReplyAbove() .
$email_message;

					$attachments = null;
					/**
					 * Check if the setting is activated and if there are files
					 *
					 */
					if ($department->customer_attach_email && $hasFiles) {
						/**
						 * In case the download type is set to link
						 * we add a list of files to the end of
						 * the email message
						 */
						if ($department->download_type == 'link') {
							$files =
$this->getTicketMessageAttachments($this->message_id);
							$email_message .= '<ul>';
							foreach ($files as $file) {
								$url =
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&task=ticket.downloadfile&id='
. $file->id . '&access_code=' . md5($ticket->id .
'|' . $file->id . '|' . $file->filename));
								$email_message .= '<li><a href="' . $url .
'">' . $file->filename .
'</a></li>';
							}
							$email_message .= '</ul>';
						} /**
						 * if the download_type == 'attachment'
						 * we need to populate $attachments var
						 * with the files
						 */
						else {
							$attachments = $this->attachments;
						}
					}

					RSTicketsProHelper::sendMail($from, $fromname, $customer->email,
$email_subject, $email_message, 1, $attachments, $department->cc,
$department->bcc);
				}
			}
		}

		// this works only for customers
		// check if notification email address is not empty
		if (!$isStaff && ($to =
RSTicketsProHelper::getConfig('notice_email_address')))
		{
			$to = explode(',', $to);
			if ($original->staff_id)
			{
				$to[] = $original->staff->email;
			}
			// take care of duplicates
			$to = array_unique($to);

			// check if number of max replies is reached
			$maxReplies     = (int)
RSTicketsProHelper::getConfig('notice_max_replies_nr');
			$currentReplies =
RSTicketsProHelper::getConsecutiveReplies($original->id);
			if ($maxReplies && $currentReplies == $maxReplies &&
!$original->staff_id)
			{
				if ($email =
RSTicketsProHelper::getEmail('notification_max_replies_nr'))
				{
					$customer = JFactory::getUser($this->data['user_id']);
					$ticket_id = $original->id;

					$replacements = array(
						'{live_site}' => JUri::root(),
						'{ticket}' =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket_id . ':' .
JFilterOutput::stringURLSafe($original->subject), true,
RSTicketsProHelper::getConfig('staff_itemid')),
						'{customer_name}' => $customer->name,
						'{customer_username}' => $customer->username,
						'{customer_email}' => $customer->email,
						'{code}' => $original->code,
						'{subject}' => $original->subject,
						'{priority}' => JText::_($priority->name),
						'{status}' => JText::_($status->name),
						'{message}' => $this->data['message'],
						'{replies}' => $currentReplies,
						'{department_id}' => $original->department_id,
						'{department_name}' => JText::_($department->name)
					);

					$email_subject = str_replace(array_keys($replacements),
array_values($replacements), $email->subject);
					$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

					RSTicketsProHelper::sendMail($from, $fromname, $to, $email_subject,
$email_message, 1, null, $department->cc, $department->bcc);
				}
			}

			// check if number of max replies with no staff response is reached
			$maxReplies = (int)
RSTicketsProHelper::getConfig('notice_replies_with_no_response_nr');
			if ($maxReplies && $currentReplies == $maxReplies &&
$original->staff_id)
			{
				if ($email =
RSTicketsProHelper::getEmail('notification_replies_with_no_response_nr'))
				{
					$customer = JFactory::getUser($this->data['user_id']);
					$staff = &$original->staff;
					$ticket_id = $original->id;

					$replacements = array(
						'{live_site}' => JUri::root(),
						'{ticket}' =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket_id . ':' .
JFilterOutput::stringURLSafe($original->subject), true,
RSTicketsProHelper::getConfig('staff_itemid')),
						'{customer_name}' => $customer->name,
						'{customer_username}' => $customer->username,
						'{customer_email}' => $customer->email,
						'{staff_name}' => $staff->name,
						'{staff_username}' => $staff->username,
						'{staff_email}' => $staff->email,
						'{code}' => $original->code,
						'{subject}' => $original->subject,
						'{priority}' => JText::_($priority->name),
						'{status}' => JText::_($status->name),
						'{message}' => $this->data['message'],
						'{replies}' => $currentReplies,
						'{department_id}' => $original->department_id,
						'{department_name}' => JText::_($department->name)
					);

					$email_subject = str_replace(array_keys($replacements),
array_values($replacements), $email->subject);
					$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

					RSTicketsProHelper::sendMail($from, $fromname, $to, $email_subject,
$email_message, 1, null, $department->cc, $department->bcc);
				}
			}

			// check if it has restricted words
			if ($keywords =
RSTicketsProHelper::getConfig('notice_not_allowed_keywords'))
			{
				$keywords  = explode(',', $keywords);
				$email     =
RSTicketsProHelper::getEmail('notification_not_allowed_keywords');

				if ($email)
				{
					$customer = JFactory::getUser($this->data['user_id']);
					$staff = $original->staff->id ? $original->staff :
$ticket->staff;
					$ticket_id = $original->id;

					$quotedWords = array();
					foreach ($keywords as $word) {
						$word = trim($word);
						if (strlen($word)) {
							$quotedWords[] = preg_quote($word);
						}
					}
					$pattern = '#\b(' . implode('|', $quotedWords) .
')\b#i';
					if (preg_match($pattern, $this->data['message'])) {
						$replacements = array(
							'{live_site}' => JUri::root(),
							'{ticket}' =>
RSTicketsProHelper::mailRoute('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket_id . ':' .
JFilterOutput::stringURLSafe($original->subject), true,
RSTicketsProHelper::getConfig('staff_itemid')),
							'{customer_name}' => $customer->name,
							'{customer_username}' => $customer->username,
							'{customer_email}' => $customer->email,
							'{staff_name}' => $staff->name,
							'{staff_username}' => $staff->username,
							'{staff_email}' => $staff->email,
							'{code}' => $original->code,
							'{subject}' => $original->subject,
							'{priority}' => JText::_($priority->name),
							'{status}' => JText::_($status->name),
							'{message}' => preg_replace($pattern, '<b
style="color: red">$1</b>',
$this->data['message']),
							'{replies}' => $currentReplies,
							'{department_id}' => $original->department_id,
							'{department_name}' => JText::_($department->name)
						);

						$email_subject = str_replace(array_keys($replacements),
array_values($replacements), $email->subject);
						$email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

						RSTicketsProHelper::sendMail($from, $fromname, $to, $email_subject,
$email_message, 1, null, $department->cc, $department->bcc);
					}
				}
			}
		}

		return true;
	}

	public function getMessageId()
	{
		return $this->message_id;
	}

	public function getTicketId()
	{
		return $this->ticket_id;
	}

	public function getTicketAttachments($ticketid){
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select('*')
			->from($db->qn('#__rsticketspro_ticket_files'))
			->where($db->qn('ticket_id') . ' = ' .
$db->q($ticketid));
		$db->setQuery($query);
		return $db->loadObjectList('id');
	}
	
	public function getTicketMessageAttachments($message_id){
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select('*')
			->from($db->qn('#__rsticketspro_ticket_files'))
			->where($db->qn('ticket_message_id') . ' = ' .
$db->q($message_id));
		$db->setQuery($query);
		return $db->loadObjectList('id');
	}

	public static function getTicketTimeState($ticketid) {
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select($db->qn('start'))
			->select($db->qn('end'))
			->from($db->qn('#__rsticketspro_timespent'))
			->where($db->qn('ticket_id') . ' = ' .
$db->q($ticketid))
			->order($db->qn('id') . ' DESC');

		$db->setQuery($query, 0, 1);
		$result = $db->loadObject();

		if (empty($result)) {
			return false;
		}

		$time_data = new stdClass();
		$time_data->state = false;

		// return true (started) only when the start is set and the end is not
		if ($result->start != '0000-00-00 00:00:00' &&
$result->end == '0000-00-00 00:00:00') {
			$time_data->state =  true;
		}

		$time_data->start = $result->start;
		$time_data->end = $result->end;

		return $time_data;
	}
}helpers/toolbar.php000064400000005015151163475770010402 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

abstract class RSTicketsProToolbarHelper
{
	public static function addToolbar($view = '')
	{
		// load language file (.sys because the toolbar has the same options as
the components dropdown)
		JFactory::getLanguage()->load('com_rsticketspro.sys',
JPATH_ADMINISTRATOR);

		// add toolbar entries
		// overview
		self::addEntry('OVERVIEW',
'index.php?option=com_rsticketspro', $view == '' ||
$view == 'rsticketspro');
		self::addEntry('MANAGE_TICKETS',
'index.php?option=com_rsticketspro&view=tickets', $view ==
'tickets');
		self::addEntry('DEPARTMENTS',
'index.php?option=com_rsticketspro&view=departments', $view
== 'departments');
		self::addEntry('CUSTOM_FIELDS',
'index.php?option=com_rsticketspro&view=customfields', $view
== 'customfields');
		self::addEntry('GROUPS',
'index.php?option=com_rsticketspro&view=groups', $view ==
'groups');
		self::addEntry('STAFF_MEMBERS',
'index.php?option=com_rsticketspro&view=staffs', $view ==
'staffs');
		self::addEntry('PRIORITIES',
'index.php?option=com_rsticketspro&view=priorities', $view ==
'priorities');
		self::addEntry('STATUSES',
'index.php?option=com_rsticketspro&view=statuses', $view ==
'statuses');
		self::addEntry('EMAIL_MESSAGES',
'index.php?option=com_rsticketspro&view=emails', $view ==
'emails');
		if (JFactory::getUser()->authorise('core.admin',
'com_rsticketspro'))
		{
			self::addEntry('CONFIGURATION',
'index.php?option=com_rsticketspro&view=configuration', $view
== 'configuration');
		}
		JFactory::getApplication()->triggerEvent('onAfterTicketsMenu');

		self::addEntry('KB_CATEGORIES',
'index.php?option=com_rsticketspro&view=kbcategories', $view
== 'kbcategories');
		self::addEntry('KB_ARTICLES',
'index.php?option=com_rsticketspro&view=kbarticles', $view ==
'kbarticles');
		self::addEntry('KB_CONVERSION_RULES',
'index.php?option=com_rsticketspro&view=kbrules', $view ==
'kbrules');
	}

	public static function addEntry($lang_key, $url, $default = false)
	{
		JHtmlSidebar::addEntry(JText::_('COM_RSTICKETSPRO_' .
$lang_key), JRoute::_($url), $default);
	}

	public static function addFilter($text, $key, $options, $noDefault =
false)
	{
		JHtmlSidebar::addFilter($text, $key, $options, $noDefault);
	}

	public static function render()
	{
		return JHtmlSidebar::render();
	}
}helpers/users.php000064400000002232151163475770010077 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTicketsProUsersHelper
{
	protected static $groups = null;
	protected static $users = null;

	public static function getAdminGroups()
	{
		if (!is_array(self::$groups))
		{
			self::$groups =
RSTicketsProConfig::getInstance()->get('admin_groups',
array());
		}

		return self::$groups;
	}
	
	public static function getAdminUsers() {
		if (!is_array(self::$users))
		{
			self::$users = array();
			
			if ($groups	= self::getAdminGroups())
			{
				$db 	= JFactory::getDbo();
				$query 	= $db->getQuery(true);
				$query->select('u.*')
					  ->from('#__user_usergroup_map m')
					  ->join('right', '#__users u ON
(u.id=m.user_id)')
					  ->where('m.group_id IN ('.implode(',',
$groups).')')
					  ->order('u.username ASC')
					  ->group('u.id');
				$db->setQuery($query);
				self::$users = $db->loadObjectList();
			}
		}
		
		return self::$users;
	}
}helpers/version.php000064400000000703151163475770010424 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RSTicketsProVersion
{
	public $version  = '3.0.1';
	public $key		 = '8TIK5J3PRO';

	// Get version
	public function __toString()
	{
		return $this->version;
	}
}index.html000064400000000054151163475770006560
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/article.php000064400000007475151163475770010220
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelArticle extends JModelLegacy
{
	protected $article;
	
	public function getArticle()
	{
		if ($this->article === null)
		{
			$this->article =
JTable::getInstance('Kbcontent','RsticketsproTable');

			if
($this->article->load(JFactory::getApplication()->input->getInt('cid'))
&& $this->article->id)
			{
				$this->article->categories = array();
				
				if ($this->article->category_id)
				{
					// Get the article categories (recursive)
					$this->getArticleCategories($this->article->category_id);
					
					if ($this->article->categories)
					{
						// Check if the categories are published or private (this article
will inherit these properties)
						foreach ($this->article->categories as $category)
						{
							if ($category->private)
							{
								$this->article->private = 1;
							}
							if (!$category->published)
							{
								$this->article->published = 0;
							}
						}
						
						// Sort them the natural way (reverse them)
						krsort($this->article->categories);
					}
				}
				
				// Increment article hits
				$this->article->hit();
				
				// Add the comments section
				$this->article->text .= $this->getCommentsBlock();
			}
		}
		
		return $this->article;
	}

	protected function getArticleCategories($id)
	{
		$category = JTable::getInstance('Kbcategories',
'RsticketsproTable');

		if ($category->load($id))
		{
			$this->article->categories[] = $category;
			
			if ($category->parent_id)
			{
				$this->getArticleCategories($category->parent_id);
			}
		}
	}
	
	protected function getCommentsBlock()
	{
		$article =& $this->article;

		switch (RSTicketsProHelper::getConfig('kb_comments'))
		{
			// RSComments!
			case 'com_rscomments':
				if
(file_exists(JPATH_SITE.'/components/com_rscomments/helpers/rscomments.php'))
				{
					require_once
JPATH_SITE.'/components/com_rscomments/helpers/rscomments.php';

					return '{rscomments option="com_rsticketspro"
id="'.$article->id.'"}';
				}
			break;

			// JComments
			case 'com_jcomments':
				if
(file_exists(JPATH_SITE.'/components/com_jcomments/jcomments.php'))
				{
					require_once
JPATH_SITE.'/components/com_jcomments/jcomments.php';

					return JComments::showComments($article->id,
'com_rsticketspro', $article->name);
				}
			break;

			// JomComment
			case 'com_jomcomment':
				if
(file_exists(JPATH_SITE.'/plugins/content/jom_comment_bot.php'))
				{
					require_once
JPATH_SITE.'/plugins/content/jom_comment_bot.php';

					return jomcomment($article->id, 'com_rsticketspro');
				}
			break;
			
			// Facebook
			case 'facebook':
				return '<script
src="https://connect.facebook.net/en_US/all.js#xfbml=1"></script><div
id="fb-root"></div><fb:comments
href="'.RSTicketsProHelper::route('index.php?option=com_rsticketspro&view=article&cid='.$article->id.':'.JFilterOutput::stringURLSafe($article->name),
true, 0, true).'" num_posts="5"
width="700"></fb:comments>';
			break;
		}
		
		return '';
	}
	
	public function getPath()
	{
		$path = array();
		if ($this->article->categories)
		{
			foreach ($this->article->categories as $category)
			{
				$path[] = (object) array(
					'name' => $category->name,
					'link' =>
RSTicketsProHelper::route('index.php?option=com_rsticketspro&view=knowledgebase&cid='.$category->id.':'.JFilterOutput::stringURLSafe($category->name))
				);
			}
		}
		
		// Add the article as the last child
		$path[] = (object) array(
			'name' => $this->article->name,
			'link' => ''
		);
		
		return $path;
	}
}models/configuration.php000064400000005207151163475770011433
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelConfiguration extends JModelAdmin
{
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.configuration',
'configuration', array('control' =>
'jform', 'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	protected function loadFormData()
	{
		$data = (array) $this->getConfig()->getData();

		return $data;
	}

	public function save($data)
	{
		// get configuration
		$config = $this->getConfig();
		// get configuration keys
		$keys	= $config->getKeys();

		foreach ($keys as $key)
		{
			if (in_array($key, array('autoclose_cron_lastcheck',
'followup_cron_lastcheck', 'export_limit')))
			{
				continue;
			}

			if (isset($data[$key]))
			{
				$value = $data[$key];

				if ($key == 'captcha_characters' && $value < 3)
				{
					JFactory::getApplication()->enqueueMessage(JText::_('RST_CAPTCHA_CHARACTERS_ERROR'),
'warning');
					$value = 3;
				}
				elseif ($key == 'autoclose_cron_interval' && $value
< 10)
				{
					JFactory::getApplication()->enqueueMessage(JText::_('RST_AUTOCLOSE_CHECK_ERROR'),
'warning');
					$value = 10;
				}
				elseif ($key == 'autoclose_email_interval' && $value
< 1)
				{
					JFactory::getApplication()->enqueueMessage(JText::_('RST_AUTOCLOSE_DAYS_STATUS_ERROR'),
'warning');
					$value = 1;
				}
				elseif ($key == 'autoclose_interval' && $value <
1)
				{
					JFactory::getApplication()->enqueueMessage(JText::_('RST_AUTOCLOSE_DAYS_CLOSED_ERROR'),
'warning');
					$value = 1;
				}
				elseif ($key == 'followup_cron_interval' && $value
< 10)
				{
					JFactory::getApplication()->enqueueMessage(JText::_('RST_FEEDBACK_FOLLOWUP_CHECK_ERROR'),
'warning');
					$value = 10;
				}
				elseif ($key == 'followup_enabled_time')
				{
					if ($data['enable_followup'] == 1 && $value == 0)
					{
						$value = JFactory::getDate()->toSql();
					}
					elseif ($data['enable_followup'] == 0 && $value !=
0)
					{
						$value = 0;
					}
				}

				$config->set($key, $value);
			}
			else
			{
				$config->set($key, '');
			}
		}

		return true;
	}

	public function getConfig()
	{
		return RSTicketsProConfig::getInstance();
	}

	public function getRSTabs()
	{
		return new
RsticketsproAdapterTabs('com-rsticketspro-configuration');
	}
}models/cron.php000064400000002123151163475770007517 0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelCron extends JModelAdmin
{
	public function getTable($type = 'Crons', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.cron',
'cron', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$app  = JFactory::getApplication();
		$data =
$app->getUserState('com_rsticketspro.edit.cron.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	public function getRSTabs()
	{
		return new RsticketsproAdapterTabs('com-rsticketspro-cron');
	}
}models/cronlog.php000064400000003161151163475770010224 0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelCronlog extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'a.name', 'al.date', 'al.subject'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		
		$query->select($db->qn('al').'.*')
			->select($db->qn('a.name'))
			->from($db->qn('#__rsticketspro_accounts_log','al'))
			->join('LEFT',$db->qn('#__rsticketspro_accounts','a').'
ON '.$db->qn('al.account_id').' =
'.$db->qn('a.id'));

		// search
		if ($search != '')
		{
			$search = $db->q('%'.str_replace(' ',
'%', $db->escape($search, true)).'%', false);
			$query->where('('.$db->qn('al.description').'
LIKE '.$search.' OR
'.$db->qn('al.subject').' LIKE
'.$search.')');
		}
		
		// order by
		$query->order($db->qn($this->getState('list.ordering',
'al.date')).'
'.$db->escape($this->getState('list.direction',
'desc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'al.date',
$direction = 'desc')
	{
		$this->setState('filter.search',
	$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/crons.php000064400000004051151163475770007704 0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelCrons extends JModelList
{	
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'ordering', 'server',
'id', 'published', 'state'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery() {
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		$state	= $this->getState('filter.state');
		
		$query->select('*')->from('#__rsticketspro_accounts');
		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				// Escape the search token.
				$token = $db->q('%' . str_replace(' ',
'%', $db->escape($search, true)) . '%', false);

				// Compile the different search clauses.
				$searches = array();
				$searches[] = $db->qn('name').' LIKE ' .
$token;
				$searches[] = $db->qn('server').' LIKE ' .
$token;

				// Add the clauses to the query.
				$query->where('(' . implode(' OR ', $searches) .
')');
			}
		}
		// state
		if ($state != '')
		{
			$query->where($db->qn('published').' = '.(int)
$state);
		}
		
		// order by
		$query->order($db->qn($this->getState('list.ordering',
'name')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'name', $direction
= 'asc')
	{
		$this->setState('filter.search',
	$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
	$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/customfield.php000064400000004300151163476000011056
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelCustomfield extends JModelAdmin
{
	public function getTable($type = 'Customfields', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.customfield',
'customfield', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$app  = JFactory::getApplication();
		$data =
$app->getUserState('com_rsticketspro.edit.customfield.data',
array());
		
		if (empty($data))
		{
			$data = $this->getItem();
		}
		
		if (!empty($data) && is_object($data) && !$data->id
&& !$data->department_id)
		{
			$model = $this->getInstance('Customfields',
'RsticketsproModel');
			$data->department_id =
$model->getState('filter.department_id');
		}

		return $data;
	}
	
	protected function getReorderConditions($table)
	{
		return array(
			'department_id = '.(int) $table->department_id
		);
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('customfield.delete',
'com_rsticketspro');
	}

	protected function canEditState($record)
	{
		return
JFactory::getUser()->authorise('customfield.edit.state',
'com_rsticketspro');
	}
}models/customfields.php000064400000004670151163476000011253
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelCustomfields extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'f.name', 'department_name', 'label',
'type', 'required', 'f.published',
'f.ordering', 'f.id', 'state',
'department_id'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search 		= $this->getState('filter.search');
		$state 			= $this->getState('filter.state');
		$department_id 	= $this->getState('filter.department_id');
		
		$query->select('f.*')
			  ->select($db->qn('d.name',
'department_name'))
			  ->from($db->qn('#__rsticketspro_custom_fields',
'f'))
			  ->join('left',
$db->qn('#__rsticketspro_departments', 'd').'
ON ('.$db->qn('f.department_id').' =
'.$db->qn('d.id').')');
		
		if ($department_id)
		{
			$query->where($db->qn('department_id').'='.$db->q($department_id));
		}
		
		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('f.id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('f.name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}
		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('f.published').'='.$db->q($state));
		}
		// order by
		$query->order($db->qn($this->getState('list.ordering',
'f.ordering')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'f.ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
 'filter_state'));
		$this->setState('filter.department_id',
$this->getUserStateFromRequest($this->context.'.filter.department_id',
'filter_department_id'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/department.php000064400000004354151163476000010714
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelDepartment extends JModelAdmin
{
	public function getTable($type = 'Departments', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}

	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.department',
'department', array('control' => 'jform',
'load_data' => $loadData));

		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}

	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.department.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		if (!empty($data->jgroups))
		{
			$data->jgroups = json_decode($data->jgroups, true);
		}

		return $data;
	}

	public function getPHPValues()
	{
		return array(
			'upload_max_filesize' =>
ini_get('upload_max_filesize'),
			'max_file_uploads' =>
ini_get('max_file_uploads'),
			'post_max_size' => ini_get('post_max_size')
		);
	}

	public function getRSTabs()
	{
		return new
RsticketsproAdapterTabs('com-rsticketspro-department');
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('department.delete',
'com_rsticketspro');
	}

	protected function canEditState($record)
	{
		return
JFactory::getUser()->authorise('department.edit.state',
'com_rsticketspro');
	}
}models/departments.php000064400000003553151163476000011077
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelDepartments extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'prefix', 'published',
'ordering', 'id', 'state'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		$state 	= $this->getState('filter.state');
		
		$query->select('*')->from('#__rsticketspro_departments');

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('published') . '=' .
$db->q($state));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'ordering')) . ' ' .
$db->escape($this->getState('list.direction',
'asc')));

		return $query;
	}
	
	protected function populateState($ordering = 'ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));

		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/email.php000064400000003677151163476000007647 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelEmail extends JModelAdmin
{
	public function getTable($type = 'Emails', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.email',
'email', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		if (in_array($form->getValue('type'),
array('add_ticket_reply_customer',
'add_ticket_reply_staff', 'add_ticket_customer',
'add_ticket_staff', 'add_ticket_notify')))
		{
			$form->setFieldAttribute('subject', 'disabled',
'true');
			$form->setFieldAttribute('subject', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.email.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}

	protected function canEditState($record)
	{
		return JFactory::getUser()->authorise('email.edit.state',
'com_rsticketspro');
	}
}models/emails.php000064400000007146151163476000010025 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelEmails extends JModelList
{	
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'type', 'lang', 'subject',
'published', 'state', 'language'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$language 	= $this->getState('filter.language');
		$search 	= $this->getState('filter.search');
		$state 		= $this->getState('filter.state');
		
		$query->select('*')
			->from('#__rsticketspro_emails')
			->where($db->qn('lang') . '=' .
$db->q($language));

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$search = $db->q('%'.str_replace(' ',
'%', $db->escape($search, true)).'%', false);

				$query->where('(' . $db->qn('subject') .
' LIKE ' . $search . ') OR (' .
$db->qn('message') . ' LIKE ' . $search .
')');
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('published') . '=' .
$db->q($state));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'type')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function checkMissingEntries()
	{
		$lang = $this->getState('filter.language');
		
		if ($lang)
		{
			$db 	= $this->getDbo();
			$query 	= $db->getQuery(true);
			
			$types = array(
				'add_ticket_customer',
				'add_ticket_notify',
				'add_ticket_reply_customer',
				'add_ticket_reply_staff',
				'add_ticket_staff',
				'notification_email',
				'reject_email',
				'new_user_email',
				'notification_max_replies_nr',
				'notification_replies_with_no_response_nr',
				'notification_not_allowed_keywords',
				'notification_department_change',
				'feedback_followup_email'
			);
			
			$query->select($db->qn('type'))
				  ->from('#__rsticketspro_emails')
				  ->where($db->qn('type') . ' IN (' .
implode(',', $db->q($types)) . ')')
				  ->where($db->qn('lang') . '=' .
$db->q($lang));
			$db->setQuery($query);
			
			$found = $db->loadColumn();
			
			if ($diff = array_diff($types, $found))
			{
				foreach ($diff as $type)
				{
					$row = JTable::getInstance('Emails',
'RsticketsproTable');
					$row->save(array(
						'lang' => $lang,
						'type' => $type
					));
				}
			}
		}
	}
	
	public function getItems()
	{
		// check if there are missing entries for the current language
		$this->checkMissingEntries();
		
		return parent::getItems();
	}
	
	protected function getDefaultLanguage()
	{
		return JFactory::getLanguage()->get('tag');
	}
	
	protected function populateState($ordering = 'type', $direction
= 'asc')
	{
		$this->setState('filter.language',
$this->getUserStateFromRequest($this->context.'.filter.language',
'filter_language', $this->getDefaultLanguage()));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/fields/article.php000064400000004547151163476000011446
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class JFormFieldArticle extends JFormField
{
   /**
	* Element name
	*
	* @access	protected
	* @var		string
	*/
	protected $type = 'Article';
	
	protected function getInput() {
		$html = array();
		// Include our JTable
		JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_rsticketspro/tables');
		$row = JTable::getInstance('Kbcontent',
'RsticketsproTable');

		// Load the title
		$title = JText::_('RST_KB_SELECT_ARTICLE');
		
		if ($this->value && $row->load($this->value))
		{
			$title = $row->name;
		}
		
		// Include jQuery
		JHtml::_('jquery.framework');
		
		// URL to article list
		$link =
'index.php?option=com_rsticketspro&view=kbarticles&layout=element&tmpl=component';

		$js = "
		function elSelectEvent(id, title) {
			document.getElementById('".$this->id."').value =
title;
			document.getElementsByName('".$this->name."')[0].value
= id;
			jQuery('#rsticketsproKBArticleModal').modal('hide');
		}";

		JFactory::getDocument()->addScriptDeclaration($js);
		
		$html[] = '<span class="input-append"><input
type="text" class="input-medium"
required="required" readonly="readonly" id="'
. $this->id
			. '" value="' . htmlspecialchars($title, ENT_COMPAT,
'utf-8') . '" />';
		$html[] = '<a href="#rsticketsproKBArticleModal"
role="button" class="btn" data-toggle="modal"
title="' . JText::_('JSELECT') .
'">'
			. '<span class="icon-file"
aria-hidden="true"></span> '
			. JText::_('JSELECT') . '</a></span>';
		$html[] = JHtml::_(
			'bootstrap.renderModal',
			'rsticketsproKBArticleModal',
			array(
				'url'        => $link,
				'title'      =>
JText::_('RST_KB_SELECT_ARTICLE'),
				'width'      => '800px',
				'height'     => '300px',
				'modalWidth' => '80',
				'bodyHeight' => '70',
				'footer'     => '<a type="button"
class="btn" data-dismiss="modal"
aria-hidden="true">'
						. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') .
'</a>'
			)
		);
		$html[] = '<input class="input-small"
type="hidden" name="' . $this->name . '"
value="'
			. htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') .
'" />';

		return implode("\n", $html);
	}
}models/fields/avatars.php000064400000002517151163476000011457
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldAvatars extends JFormFieldList
{
	protected $type = 'Avatars';
	
	protected function getOptions()
	{
		// Initialize variables.
		$options = array();
		
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);

		$components = array(
			'com_comprofiler',
			'com_community',
			'com_kunena',
		);
		
		$query->select('element')
			  ->from('#__extensions')
			 
->where($db->qn('type').'='.$db->q('component'))
			  ->where($db->qn('element').' IN (' .
implode(',', $db->q($components)) . ')');
		$available = $db->setQuery($query)->loadColumn();
		
		$options[] = JHtml::_('select.option', '',
JText::_('RST_NO_AVATARS_COMPONENT'));
		$options[] = JHtml::_('select.option', 'gravatar',
JText::_('RST_GRAVATAR'));
		
		foreach ($components as $component)
		{
			$disabled = !in_array($component, $available);
			$options[] = JHtml::_('select.option', substr($component, 4),
JText::_('RST_' . substr($component, 4)), 'value',
'text', $disabled);
		}
		
		reset($options);
		
		return $options;
	}
}
models/fields/comments.php000064400000002540151163476000011637
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldComments extends JFormFieldList
{
	protected $type = 'Comments';
	
	protected function getOptions()
	{
		// Initialize variables.
		$options = array();
		
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);

		$components = array(
			'RSComments!' => 'com_rscomments',
			'JComments' => 'com_jcomments',
			'JomComment' => 'com_jomcomment'
		);

		$query->select('element')
			->from('#__extensions')
			->where($db->qn('type').'='.$db->q('component'))
			->where($db->qn('element').' IN (' .
implode(',', $db->q($components)) . ')');
		$available = $db->setQuery($query)->loadColumn();
		
		$options[] = JHtml::_('select.option', '0',
JText::_('RST_KB_COMMENTS_DISABLED'));
		$options[] = JHtml::_('select.option', 'facebook',
JText::_('RST_FACEBOOK_COMMENTS'));
		
		foreach ($components as $name => $component)
		{
			$disabled = !in_array($component, $available);
			$options[] = JHtml::_('select.option', $component, $name,
'value', 'text', $disabled);
		}
		
		reset($options);
		
		return $options;
	}
}
models/fields/departments.php000064400000004636151163476000012350
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

require_once
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/rsticketspro.php';

JFormHelper::loadFieldClass('list');

class JFormFieldDepartments extends JFormFieldList
{
	protected $type = 'Departments';
	
	protected function getOptions()
	{
		// Initialize variables.
		$options 			= parent::getOptions();
		$is_staff			= RSTicketsProHelper::isStaff();
		$force_departments	=
RSTicketsProHelper::getConfig('staff_force_departments');
		$departments		= RSTicketsProHelper::getCurrentDepartments();
		$view				=
JFactory::getApplication()->input->get('view');
		$db 				= JFactory::getDbo();
		$user_groups		= !$is_staff ?
JAccess::getGroupsByUser(JFactory::getUser()->id, false) : array();

		if (isset($this->element['please']) &&
$this->element['please'] == 'true')
		{
			$options[] = JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT_DEPARTMENT'));
		}

		$query 	= $db->getQuery(true);
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from('#__rsticketspro_departments');
		if (!$is_staff)
		{
			$query->select($db->qn('jgroups'));
		}
		
		if (isset($this->element['published']) &&
$this->element['published'] == 'true')
		{
			$query->where($db->qn('published').'='.$db->q(1));
		}
		
		$query->order($db->qn('ordering').'
'.$db->escape('asc'));
		$db->setQuery($query);

		if ($results = $db->loadObjectList())
		{
			foreach ($results as $result)
			{
				if ($is_staff && $force_departments && $view !=
'staff' && !in_array($result->id, $departments))
				{
					continue;
				}

				// Search in the departments relations table to see if this department
is excluded from the current user group (only for non staff)
				if (!$is_staff)
				{
					if (!empty($result->jgroups))
					{
						$json_groups = json_decode($result->jgroups, true);

						if (is_array($json_groups) && array_intersect($json_groups,
$user_groups))
						{
							continue;
						}
					}
				}

				$tmp = JHtml::_('select.option', $result->id,
JText::_($result->name));

				// Add the option object to the result set.
				$options[] = $tmp;
			}
		}

		reset($options);
		
		return $options;
	}
}models/fields/dummy.php000064400000000671151163476000011150
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('hidden');

class JFormFieldDummy extends JFormFieldHidden
{
	protected $type = 'Dummy';
	
	protected function getInput()
	{
		return '';
	}
}models/fields/groups.php000064400000002027151163476000011331
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldGroups extends JFormFieldList
{
	protected $type = 'Groups';
	
	protected function getOptions()
	{
		// Initialize variables.
		$options = array();
		
		if (isset($this->element['all']) &&
$this->element['all'] == 'true')
		{
			$options[] = JHtml::_('select.option', 0,
JText::_('RST_ALL_PRIORITIES'));
		}
		
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from('#__rsticketspro_groups');
		$db->setQuery($query);
		
		$groups = $db->loadObjectList();
		foreach ($groups as $group)
		{
			$options[] = JHtml::_('select.option', $group->id,
JText::_($group->name));
		}

		reset($options);
		
		return $options;
	}
}models/fields/index.html000064400000000054151163476000011274
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/fields/kbarticle.php000064400000004526151163476000011760
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class JFormFieldKbarticle extends JFormField
{
	protected function getInput()
	{
		$html = array();
		// Include our JTable
		JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_rsticketspro/tables');
		$row = JTable::getInstance('Kbcontent',
'RsticketsproTable');

		// Load the title
		$title = JText::_('RST_KB_SELECT_ARTICLE');
		
		if ($this->value && $row->load($this->value))
		{
			$title = $row->name;
		}
		
		// Include jQuery
		JHtml::_('jquery.framework');
		
		// URL to article list
		$link =
'index.php?option=com_rsticketspro&view=kbarticles&layout=element&tmpl=component';

		$js = "
		function elSelectEvent(id, title) {
			document.getElementById('".$this->id."').value =
title;
			document.getElementsByName('".$this->name."')[0].value
= id;
			jQuery('#rsticketsproKBArticleModal').modal('hide');
		}";

		JFactory::getDocument()->addScriptDeclaration($js);
		
		$html[] = '<span class="input-group
input-append"><input type="text"
class="input-medium form-control" required="required"
readonly="readonly" id="' . $this->id
			. '" value="' . htmlspecialchars($title, ENT_COMPAT,
'utf-8') . '" />';
		$html[] = '<a href="#rsticketsproKBArticleModal"
role="button" class="btn btn-secondary"
data-bs-toggle="modal" data-toggle="modal"
title="' . JText::_('JSELECT') .
'">'
			. '<span class="icon-file"
aria-hidden="true"></span> '
			. JText::_('JSELECT') . '</a></span>';
		$html[] = JHtml::_(
			'bootstrap.renderModal',
			'rsticketsproKBArticleModal',
			array(
				'url'        => $link,
				'title'      =>
JText::_('RST_KB_SELECT_ARTICLE'),
				'width'      => '800px',
				'height'     => '300px',
				'modalWidth' => '80',
				'bodyHeight' => '70',
				'footer'     => '<a type="button"
class="btn" data-bs-dismiss="modal"
data-dismiss="modal" aria-hidden="true">'
						. JText::_('JLIB_HTML_BEHAVIOR_CLOSE') .
'</a>'
			)
		);
		$html[] = '<input class="input-small"
type="hidden" name="' . $this->name . '"
value="'
			. htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8') .
'" />';

		return implode("\n", $html);
	}
}models/fields/kbcategories.php000064400000003516151163476000012460
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldKBCategories extends JFormFieldList
{
	protected $type = 'KBCategories';
	
	protected function getOptions()
	{
		// Initialize variables.
		$options = array();
		
		if (isset($this->element['please']) &&
$this->element['please'] == 'true')
		{
			$options[] = JHtml::_('select.option', '',
JText::_('RST_KB_SELECT_CATEGORY'));
		}
		
		if (isset($this->element['show_noparent']) &&
$this->element['show_noparent'] == 'true')
		{
			$options[] = JHtml::_('select.option', 0,
JText::_('RST_KB_NO_PARENT'));
		}
		
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// Load the list items.
		$query->select('*')
			  ->from($db->qn('#__rsticketspro_kb_categories'))
			  ->order($db->qn('ordering').'
'.$db->escape('asc'));
		$items = $db->setQuery($query)->loadObjectList();
		$children = array();
		
		// first pass - collect children
		if ($items)
		{
			foreach ($items as $item)
			{
				$parent	= $item->parent_id;
				$item->parent = $parent;
				$item->title = '';
				$list = @$children[$parent] ? $children[$parent] : array();
				array_push($list, $item);
				$children[$parent] = $list;
			}
		}
		unset($items);
		
		// second pass - get an indent list of the items
		$list = JHtml::_('menu.treerecurse', 0, '', array(),
$children, 9999, 0, 0);
		foreach ($list as $item)
		{
			// Add the option object to the result set.
			$options[] = JHtml::_('select.option', $item->id,
$item->treename.$item->name);
		}
		unset($list);

		reset($options);
		
		return $options;
	}
}models/fields/kbconditions.php000064400000022663151163476000012510
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

class JFormFieldKBConditions extends JFormField
{
	protected $type = 'KBConditions';
	
	protected $options 			 = array();
	protected $departments 		 = array();
	protected $priorities 		 = array();
	protected $statuses 		 = array();
	protected $customFieldValues = array();
	
	public function __construct($form = null)
	{
		parent::__construct($form);
		
		// prepare lists
		// condition types
		$this->options['types'] = array(
			JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT')),
			JHtml::_('select.option', 'department',
JText::_('RST_DEPARTMENT')),
			JHtml::_('select.option', 'subject',
JText::_('RST_TICKET_SUBJECT')),
			JHtml::_('select.option', 'message',
JText::_('RST_TICKET_MESSAGE')),
			JHtml::_('select.option', 'priority',
JText::_('RST_PRIORITY')),
			JHtml::_('select.option', 'status',
JText::_('RST_TICKET_STATUS')),
			JHtml::_('select.option', 'custom_field',
JText::_('RST_CUSTOM_FIELD'))
		);
		// conditions
		$this->options['conditions'] = array(
			JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT')),
			JHtml::_('select.option', 'eq',
JText::_('RST_IS_EQUAL')),
			JHtml::_('select.option', 'neq',
JText::_('RST_IS_NOT_EQUAL')),
			JHtml::_('select.option', 'like',
JText::_('RST_IS_LIKE')),
			JHtml::_('select.option', 'notlike',
JText::_('RST_IS_NOT_LIKE'))
		);
		// connectors
		$this->options['connectors'] = array(
			JHtml::_('select.option', 'AND',
JText::_('RST_AND')),
			JHtml::_('select.option', 'OR',
JText::_('RST_OR'))
		);
		
		// departments
		$this->departments = $this->getDepartments();
		// priorities
		$this->priorities = $this->getPriorities();
		// statuses
		$this->statuses = $this->getStatuses();
		// custom fields
		$this->customFields = $this->getCustomFields();
		// custom field values
		$this->customFieldValues = $this->getCustomFieldValues();
	}
	
	protected function getDepartments()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from($db->qn('#__rsticketspro_departments'))
			  ->order($db->qn('ordering').'
'.$db->escape('ASC'));
		
		$db->setQuery($query);
		return $db->loadObjectList();
	}
	
	protected function getPriorities()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from($db->qn('#__rsticketspro_priorities'))
			  ->order($db->qn('ordering').'
'.$db->escape('ASC'));
		
		$db->setQuery($query);
		return $db->loadObjectList();
	}
	
	protected function getStatuses()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from($db->qn('#__rsticketspro_statuses'))
			  ->order($db->qn('ordering').'
'.$db->escape('ASC'));
		
		$db->setQuery($query);
		return $db->loadObjectList();
	}
	
	protected function getCustomFieldValues()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select($db->qn('values'))
			  ->select($db->qn('id'))
			  ->select($db->qn('type'))
			  ->from($db->qn('#__rsticketspro_custom_fields'));
		
		$db->setQuery($query);
		$customFieldValues = $db->loadObjectList('id');
		
		foreach ($customFieldValues as $id => $properties)
		{
			$list = array();
			
			$values = str_replace(array("\r\n", "\r"),
"\n", $properties->values);
			$values = explode("\n", $values);
		
			foreach ($values as $value)
			{
				$list[] = JHtml::_('select.option', $value, $value);
			}
			
			$customFieldValues[$id] = $list;
		}
		
		return $customFieldValues;
	}
	
	protected function getCustomFields()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select($db->qn('id'))
			  ->select($db->qn('department_id'))
			  ->select($db->qn('name'))
			  ->select($db->qn('type'))
			  ->select($db->qn('values'))
			  ->from($db->qn('#__rsticketspro_custom_fields'))
			  ->order($db->qn('ordering').'
'.$db->escape('ASC'));
		
		$db->setQuery($query);
		$customFields = $db->loadObjectList();
		
		$list = array();
		foreach ($this->departments as $department)
		{
			$optgroup = new stdClass();
			$optgroup->value = '<OPTGROUP>';
			$optgroup->text = $department->name;
			$list[] = $optgroup;
			
			foreach ($customFields as $customField)
			{
				if ($customField->department_id != $department->id)
				{
					continue;
				}
				
				$list[] = JHtml::_('select.option', $customField->id,
$customField->name);
			}
			
			$optgroup = new stdClass();
			$optgroup->value = '</OPTGROUP>';
			$optgroup->text = '';
			$list[] = $optgroup;
		}
		
		return $list;
	}
	
	protected function escape($string)
	{
		return htmlentities($string, ENT_COMPAT, 'utf-8');
	}
	
	protected function getFormControlName($name)
	{
		return $this->formControl.'['.$name.']';
	}
	
	protected function getInput()
	{
		$conditions = array();
		if ($this->value)
		{
			$conditions = unserialize($this->value);
		}
		if (!$conditions)
		{
			$conditions = array();
		}
		
		$html = '<p><button type="button" class="btn
btn-success" id="addConditionLink"><span
class="icon
icon-plus"></span></button></p>';
		$html .= '<div class="clr"></div>';
		$html .= '<div id="rst_conditions">';
		
		$hidden_attribs = 'disabled="disabled"
style="display: none;"';
		
		foreach ($conditions as $i => $condition) {
			$select_type = JHtml::_('select.genericlist',
$this->options['types'],
$this->getFormControlName('select_type').'[]', null,
'value', 'text', $condition->type,
'select_type'.$i);
			$select_custom_field_value = '';
			if ($condition->type == 'custom_field') {
				$select_custom_field_value = JHtml::_('select.genericlist',
$this->customFields,
$this->getFormControlName('select_custom_field_value').'[]',
null, 'value', 'text', $condition->custom_field,
'select_custom_field_value'.$i);
			}
			$select_condition = JHtml::_('select.genericlist',
$this->options['conditions'],
$this->getFormControlName('select_condition').'[]',
null, 'value', 'text', $condition->condition,
'select_condition'.$i);
			$select_connector = JHtml::_('select.genericlist',
$this->options['connectors'],
$this->getFormControlName('select_connector').'[]',
null, 'value', 'text', $condition->connector,
'select_connector'.$i);
			$select_value 	  = '';
			
			$is_like = $condition->condition == 'like' ||
$condition->condition == 'notlike';
			
			switch ($condition->type)
			{
				case 'department':
					$select_value  = trim(JHtml::_('select.genericlist',
$this->departments,
$this->getFormControlName('select_value').'[]',
($is_like ? $hidden_attribs : ''), 'id',
'name', $condition->value, 'select_value'.$i));
					$select_value .= '<input type="text"
name="'.$this->getFormControlName('select_value').'[]"
value="'.$this->escape($condition->value).'"
'.(!$is_like ? $hidden_attribs : '').' />';
				break;
				
				case 'priority':
					$select_value  = trim(JHtml::_('select.genericlist',
$this->priorities,
$this->getFormControlName('select_value').'[]',
($is_like ? $hidden_attribs : ''), 'id',
'name', $condition->value, 'select_value'.$i));
					$select_value .= '<input type="text"
name="'.$this->getFormControlName('select_value').'[]"
value="'.$this->escape($condition->value).'"
'.(!$is_like ? $hidden_attribs : '').' />';
				break;
				
				case 'status':
					$select_value  = trim(JHtml::_('select.genericlist',
$this->statuses,
$this->getFormControlName('select_value').'[]',
($is_like ? $hidden_attribs : ''), 'id',
'name', $condition->value, 'select_value'.$i));
					$select_value .= '<input type="text"
name="'.$this->getFormControlName('select_value').'[]"
value="'.$this->escape($condition->value).'"
'.(!$is_like ? $hidden_attribs : '').' />';
				break;
				
				case 'subject':
					$select_value = '<input type="text"
name="'.$this->getFormControlName('select_value').'[]"
value="'.$this->escape($condition->value).'"
/>';
				break;
				
				case 'message':
					$select_value = '<textarea
name="'.$this->getFormControlName('select_value').'[]">'.$this->escape($condition->value).'</textarea>';
				break;
				
				case 'custom_field':
					$values =
isset($this->customFieldValues[$condition->custom_field]) ?
$this->customFieldValues[$condition->custom_field] : array();
					$select_value  = trim(JHtml::_('select.genericlist',
$values,
$this->getFormControlName('select_value').'[]',
($is_like ? $hidden_attribs : ''), 'value',
'text', $condition->value, 'select_value'.$i));
					$select_value .= '<input type="text"
name="'.$this->getFormControlName('select_value').'[]"
value="'.$this->escape($condition->value).'"
'.(!$is_like ? $hidden_attribs : '').' />';
				break;
			}
			$html .= '<p><span
class="rst_condition_if">'.JText::_('RST_IF').'</span>
'.$select_type.'<span>&nbsp;</span><span
class="responseSpan2">'.$select_custom_field_value.'</span><span>&nbsp;</span>'.$select_condition.'<span>&nbsp;</span><span
class="responseSpan">'.$select_value.'</span><span>&nbsp;</span>'.$select_connector.'<span>&nbsp;</span><span>&nbsp;</span><a
href="javascript: void(0);" class="btn btn-danger
deleteConditionLink"><span class="icon
icon-minus"></span></a></p>';
		}
		
		$html .= '</div>';
		return $html;
	}
}models/fields/priorities.php000064400000003000151163476000012173
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldPriorities extends JFormFieldList
{
	protected $type = 'Priorities';
	
	protected function getOptions()
	{
		// Initialize variables.
		$options = parent::getOptions();
		
		if (isset($this->element['please']) &&
$this->element['please'] == 'true')
		{
			$options[] = JHtml::_('select.option', '',
JText::_('RST_PLEASE_SELECT_PRIORITY'));
		}
		
		if (isset($this->element['all']) &&
$this->element['all'] == 'true')
		{
			$options[] = JHtml::_('select.option', 0,
JText::_('RST_ALL_PRIORITIES'));
		}
		
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from('#__rsticketspro_priorities');
		
		if (isset($this->element['published']) &&
$this->element['published'] == 'true')
		{
			$query->where($db->qn('published').'='.$db->q(1));
		}
		
		$query->order($db->qn('ordering').'
'.$db->escape('asc'));
		$db->setQuery($query);
		
		$priorities = $db->loadObjectList();
		foreach ($priorities as $priority)
		{
			// Add the option object to the result set.
			$options[] = JHtml::_('select.option', $priority->id,
JText::_($priority->name));
		}

		reset($options);
		
		return $options;
	}
}models/fields/rscaptcha.php000064400000010224151163476000011760
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

require_once
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/rsticketspro.php';

class JFormFieldRSCaptcha extends JFormField
{
	protected $type = 'RSCaptcha';
	
	protected function getInput()
	{
		$captcha = RSTicketsProHelper::getConfig('captcha_enabled');
		
		if ($captcha == 1)
		{
			$route 	=
JRoute::_('index.php?option=com_rsticketspro&task=captcha');
			$src 	=
JRoute::_('index.php?option=com_rsticketspro&task=captcha&sid='.mt_rand());
			$img = '<img src="'.$src.'"
id="submit_captcha_image"
alt="'.JText::_('RST_ANTISPAM').'"
/>';
			
			$refresh = '<span
class="'.RSTicketsProHelper::tooltipClass().'"
title="'.RSTicketsProHelper::tooltipText(JText::_('RST_REFRESH_CAPTCHA_DESC')).'"><a
onclick="return
RSTicketsPro.refreshCaptcha(\''.addslashes($route).'\');"
href="javascript:void(0);" class="btn
btn-small"><i class="icon-refresh
icon-rsrefresh"></i></a></span>';
			
			$input = '<div class="rst_captcha"><input
type="text" id="'.$this->id.'"
name="'.$this->name.'" value=""
/></div>';
			
			return $img . $refresh . $input;
		}
		elseif ($captcha > 1 && $captcha < 5)
		{
			// reCAPTCHA NoCAPTCHA
			$doc = JFactory::getDocument();
			if ($doc->getType() == 'html')
			{
				$doc->addScript('https://www.google.com/recaptcha/api.js?'.($captcha
== 4 ? 'render=explicit&' :
'').'hl='.urlencode(JFactory::getLanguage()->getTag()),array(),
array('async' => 'async', 'defer' =>
'defer'));
			}

			$sitekey 	=
RSTicketsProHelper::getConfig('recaptcha_new_site_key');
			$secretkey  =
RSTicketsProHelper::getConfig('recaptcha_new_secret_key');
			
			if (empty($sitekey))
			{
				return JText::_('RST_CAPTCHA_MISSING_SITE_KEY');
			}
			
			if (empty($secretkey))
			{
				return JText::_('RST_CAPTCHA_MISSING_SECRET_KEY');
			}

			if ($captcha == 3) {
				return '<div class="g-recaptcha"
						data-sitekey="'.$this->escape($sitekey).'"
						data-theme="'.$this->escape(RSTicketsProHelper::getConfig('recaptcha_new_theme')).'"
						data-type="'.$this->escape(RSTicketsProHelper::getConfig('recaptcha_new_type')).'"
					></div>';
			} else if ($captcha == 4) {
				$invisible_script = "
					var RSTicketsProReCAPTCHAv2Callback = function() {
						var form =document.getElementById('adminForm');
						if (typeof form.submit != 'function') {
							document.createElement('form').submit.call(form)
						} else {
							form.submit();
						}
					}

					var RSTicketsProReCAPTCHAv2 = function(){
						var rst_rendered_id = grecaptcha.render('g-recaptcha-rst',
{
							'sitekey' :
'".$this->escape($sitekey)."',
							'theme' :
'".$this->escape(RSTicketsProHelper::getConfig('recaptcha_new_theme'))."',
							'type' :
'".$this->escape(RSTicketsProHelper::getConfig('recaptcha_new_type'))."',
							'badge' : 'inline',
							'size' : 'invisible',
							'callback' : 'RSTicketsProReCAPTCHAv2Callback'
						 });
						RSTicketsPro.addEvent(document.getElementById('adminForm'),
'submit', function(evt){ evt.preventDefault();
grecaptcha.execute(rst_rendered_id); });
					}

					window.addEventListener('DOMContentLoaded',
RSTicketsProReCAPTCHAv2);";
				$doc->addScriptDeclaration($invisible_script);

				return '<div
id="g-recaptcha-rst"></div>';
			}
		} else if ($captcha == 5) {
			$jconfig = JFactory::getConfig();
			$jcaptcha = $jconfig->get('captcha');
			if (!empty($jcaptcha)) {
				try {
					$jcaptcha = JCaptcha::getInstance($jcaptcha,
array('namespace' => 'rscaptcha'));
					if (!is_null($jcaptcha))
					{
						return $jcaptcha->display('rscaptcha',
'rscaptcha');
					}
				} catch (Exception $e) {
					JFactory::getApplication()->enqueueMessage($e->getMessage(),
'error');
				}
			} else {
				JFactory::getApplication()->enqueueMessage(JText::_('RST_CAPTCHA_BUILT_IN_NOT_SELECTED'),
'error');
			}
		}
		
		return '';
	}
	
	protected function escape($string)
	{
		return htmlentities($string, ENT_COMPAT, 'utf-8');
	}
}models/fields/rscustomer.php000064400000001141151163476000012214
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('user');

class JFormFieldRSCustomer extends JFormFieldUser
{
	public $type = 'RSCustomer';
	
	protected function getGroups()
	{
		return null;
	}

	protected function getInput()
	{
		$this->readonly = false;
		return str_replace('?option=com_users',
'?option=com_rsticketspro', parent::getInput());
	}
}models/fields/rseditor.php000064400000001725151163476000011651
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

require_once
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/rsticketspro.php';

if (RSTicketsProHelper::getConfig('allow_rich_editor'))
{
	JFormHelper::loadFieldClass('editor');
	
	class JFormFieldRSEditor extends JFormFieldEditor
	{
		public $type = 'RSEditor';
		
		public function getInput()
		{
			$this->element['buttons'] =
RSTicketsProHelper::getConfig('allow_rich_editor_buttons') ?
'true' : 'false';
			$this->buttons = (bool)
RSTicketsProHelper::getConfig('allow_rich_editor_buttons');
			
			return parent::getInput();
		}
	}
}
else
{
	JFormHelper::loadFieldClass('textarea');
	
	class JFormFieldRSEditor extends JFormFieldTextarea
	{
		protected $type = 'RSEditor';
	}
}models/fields/rsticketsproanonymisebutton.php000064400000001750151163476000015727
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2018 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

class JFormFieldRSTicketsProAnonymiseButton extends JFormField
{
	protected $type = 'RSTicketsProAnonymiseButton';
	
	protected function getInput()
    {
        JHtml::_('jquery.framework');
        JHtml::_('script',
'com_rsticketspro/anonymise.js', array('relative' =>
true, 'version' => 'auto'));
       
JText::script('COM_RSTICKETSPRO_ARE_YOU_SURE_YOU_WANT_TO_ANONYMISE');
        JText::script('SUCCESS');
        JText::script('ERROR');

	    return '<div class="alert alert-danger">' .
JText::_('PLG_SYSTEM_RSTICKETSPRO_ANONYMISE_INSTRUCTIONS') .
'</div>' . '<button type="button"
class="btn btn-danger btn-large"
id="rst_anonymise_button">' .
JText::_('PLG_SYSTEM_RSTICKETSPRO_ANONYMISE_BUTTON') .
'</button>';
	}
}models/fields/rsticketsprohtml.php000064400000001011151163476000013423
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

class JFormFieldRsticketsprohtml extends JFormField
{
	protected function getInput()
	{
		$value = $this->value;
		if (!empty($this->element['escape']))
		{
			$value = htmlspecialchars($this->value, ENT_COMPAT,
'utf-8');
		}

		return $value;
	}
}models/fields/rsticketsprolang.php000064400000001235151163476000013410
0ustar00<?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2019 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

defined('_JEXEC') or die('Restricted access');

JFormHelper::loadFieldClass('list');

use Joomla\CMS\Language\LanguageHelper;

class JFormFieldRsticketsprolang extends JFormFieldList
{
	protected function getOptions()
	{
		// Initialize variables.
		$options = array();

		$languages = LanguageHelper::getKnownLanguages();

		foreach ($languages as $language => $properties)
		{
			$options[] = JHtml::_('select.option', $language,
$properties['name']);
		}

		reset($options);
		
		return $options;
	}
}models/fields/rsuploads.php000064400000002566151163476000012036
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

class JFormFieldRSUploads extends JFormField
{
	protected $type = 'RSUploads';
	
	protected function getInput()
	{
		// Initialize some field attributes.
		$accept = $this->element['accept'] ? '
accept="' . (string) $this->element['accept'] .
'"' : '';
		$size = $this->element['size'] ? ' size="' .
(int) $this->element['size'] . '"' :
'';
		$class = $this->element['class'] ? ' class="'
. (string) $this->element['class'] . '"' :
'';
		$disabled = ((string) $this->element['disabled'] ==
'true') ? ' disabled="disabled"' :
'';

		// Initialize JavaScript field attributes.
		$onchange = $this->element['onchange'] ? '
onchange="' . (string) $this->element['onchange'] .
'"' : '';
		$onclick  = $this->element['onclick'] ? '
onclick="' . (string) $this->element['onclick'] .
'"' : '';

		// button for "more files"
		$button = '<button type="button" class="btn
btn-secondary"
'.$onclick.'>'.JText::_('RST_ADD_MORE_ATTACHMENTS').'</button>';
		
		return '<input type="file" name="' .
$this->name . '[]" id="' . $this->id .
'"' . ' value=""' . $accept . $disabled
. $class . $size
			. $onchange . ' /> '.$button;
	}
}models/fields/rsusergroup.php000064400000007570151163476000012422
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

// No direct access.
defined('_JEXEC') or die('Restricted access');

/**
 * Supports a nested check box field listing user groups.
 *
 */
class JFormFieldRSUsergroup extends JFormField
{
    /**
     * The form field type.
     *
     * @var string
     *
     * @access protected
     */
    protected $type = 'rsusergroup';

    /**
     * Method to get the user group field input markup.
     *
     * @access protected
     *
     * @return string The field input markup.
     */
    protected function getInput()
    {
        $options = array();
        $attr = '';

        // Initialize some field attributes.
        $attr .= empty($this->class) ? '' : '
class="' . $this->class . '"';
        $attr .= $this->disabled ? ' disabled' :
'';
        $attr .= $this->size ? ' size="' . $this->size
. '"' : '';
        $attr .= $this->multiple ? ' multiple' :
'';
        $attr .= $this->required ? ' required
aria-required="true"' : '';
        $attr .= $this->autofocus ? ' autofocus' :
'';

        // Initialize JavaScript field attributes.
        $attr .= empty($this->onchange) ? '' : '
onchange="' . $this->onchange . '"';
        $attr .= empty($this->onclick) ? '' : '
onclick="' . $this->onclick . '"';

        // Iterate through the children and build an array of options.
        foreach ($this->element->children() as $option)
        {
            // Only add <option /> elements.
            if ($option->getName() != 'option')
                continue;

            $disabled = (string)$option['disabled'];
            $disabled = $disabled == 'true' || $disabled ==
'disabled' || $disabled == '1';

            // Create a new option object based on the <option />
element.
            $tmp = JHtml::_( 'select.option',
(string)$option['value'], trim( (string)$option ),
'value', 'text', $disabled );

            // Set some option attributes.
            $tmp->class = (string)$option['class'];

            // Set some JavaScript option attributes.
            $tmp->onclick = (string)$option['onclick'];

            // Add the option object to the result set.
            $options[] = $tmp;
        }

        $db = JFactory::getDbo();

        $query = $db->getQuery(true)
            ->select( array( $db->qn('a.id',
'value'), $db->qn('a.title', 'text'),
'COUNT(DISTINCT ' . $db->qn('b.id') . ') AS
' . $db->qn('level') ) )
            ->from( $db->qn('#__usergroups', 'a')
)
            ->leftJoin( $db->qn('#__usergroups',
'b') . ' ON ' . $db->qn('a.lft') . '
> ' . $db->qn('b.lft') . ' AND ' .
$db->qn('a.rgt') . ' < ' .
$db->qn('b.rgt') )
            ->group( $db->qn( array('a.id',
'a.title', 'a.lft', 'a.rgt') ) )
            ->order( $db->qn('a.lft') . ' ASC'
);

        $db->setQuery($query);

        if ( $jgroups = $db->loadObjectList() )
        {
            $query = $db->getQuery(true)
                ->select( $db->qn('jgroup_id') )
                ->from(
$db->qn('#__rsticketspro_departments_relations') );

            // Get the selected ones if the id is set
            $id =
JFactory::getApplication()->input->getInt('id', 0);
            $query->where( $db->qn('department_id') .
' = ' . $db->q($id) );


            $db->setQuery($query);
            $jgroups_ids = $db->loadColumn();

            foreach ($jgroups as $jgroup)
            {
                $text = str_repeat('- ', $jgroup->level) .
$jgroup->text;
                $options[] = JHtml::_('select.option',
$jgroup->value, $text);
            }
        }

        return JHtml::_( 'select.genericlist', $options,
$this->name, array('list.attr' => $attr,
'list.select' => $jgroups_ids, 'id' =>
$this->id) );
    }
}
models/fields/staff.php000064400000005161151163476000011117
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

require_once
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/rsticketspro.php';

JFormHelper::loadFieldClass('list');

class JFormFieldStaff extends JFormFieldList
{
	protected $type = 'Staff';

	protected $userField;
	
	protected function getDepartments() {
		$db		= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from('#__rsticketspro_departments')
			 
->where($db->qn('published').'='.$db->q(1))
			  ->order($db->qn('ordering').'
'.$db->escape('asc'));
		$db->setQuery($query);
		return $db->loadObjectList();
	}
	
	protected function getUsers() {
		$db		= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		$users	= array();
		
		$query->select($db->qn('user_id'))
			  ->select($db->qn('department_id'))
			  ->from('#__rsticketspro_staff_to_department');
		$db->setQuery($query);
		if ($results = $db->loadObjectList()) {
			foreach ($results as $result) {
				if (!isset($users[$result->department_id])) {
					$users[$result->department_id] = array();
				}
				
				$users[$result->department_id][] =
JFactory::getUser($result->user_id);
			}
		}
		
		return $users;
	}
	
	protected function getOptions() {
		// Initialize variables.
		$options 	 = parent::getOptions();
		$departments = $this->getDepartments();
		$users		 = $this->getUsers();

        $this->userField =
RSTicketsProHelper::getConfig('show_user_info');
		
		if (isset($this->element['unassigned']) &&
$this->element['unassigned'] == 'true') {
			$options[] = JHtml::_('select.option', 0,
JText::_('RST_UNASSIGNED'));
		}
		
		foreach ($departments as $department) {
			// opening <OPTGROUP> tag
			$options[] = (object) array(
				'value' => '<OPTGROUP>',
				'text'  => JText::_($department->name)
			);
			
			if (isset($users[$department->id])) {
			    usort($users[$department->id], array($this, 'sort'));
				foreach ($users[$department->id] as $user) {
					$options[] = JHtml::_('select.option', $user->id,
$user->get($this->userField));
				}
			}
			
			// closing </OPTGROUP> tag
			$options[] = (object) array(
				'value' => '</OPTGROUP>',
				'text'  => ''
			);
		}

		reset($options);
		
		return $options;
	}

	protected function sort($a, $b)
    {
        return strcasecmp($a->get($this->userField),
$b->get($this->userField));
    }
}models/fields/statuses.php000064400000002253151163476000011666
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */
defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldStatuses extends JFormFieldList
{
	protected $type = 'Statuses';
	
	protected function getOptions() {		
		// Initialize variables.
		$options = parent::getOptions();
		
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->from('#__rsticketspro_statuses');
			  
		if (isset($this->element['published']) &&
$this->element['published'] == 'true') {
			$query->where($db->qn('published').'='.$db->q(1));
		}
		
		$query->order($db->qn('ordering').'
'.$db->escape('asc'));
		
		$db->setQuery($query);
		
		$statuses = $db->loadObjectList();
		foreach ($statuses as $status) {
			$tmp = JHtml::_('select.option', $status->id,
JText::_($status->name));

			// Add the option object to the result set.
			$options[] = $tmp;
		}

		reset($options);
		
		return $options;
	}
}models/fields/subject.php000064400000004247151163476000011457
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

require_once
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/rsticketspro.php';

if (!RSTicketsProHelper::getConfig('allow_predefined_subjects'))
{
	JFormHelper::loadFieldClass('text');

	class JFormFieldSubject extends JFormFieldText
	{
		protected $type = 'Subject';
	}
} else {
	JFormHelper::loadFieldClass('list');

	class JFormFieldSubject extends JFormFieldList
	{
		protected $type = 'Subject';

		protected function getOptions() {
			$options = array();
			$db 	= JFactory::getDbo();

			$query 	= $db->getQuery(true);
			$query->select($db->qn('id'))
				->select($db->qn('predefined_subjects'))
				->from($db->qn('#__rsticketspro_departments'))
				->where($db->qn('published').'='.$db->q(1))
				->order($db->qn('ordering').'
'.$db->escape('asc'));
			$db->setQuery($query);
			$departments = $db->loadObjectList();

			$doc = JFactory::getDocument();
			$script  = "RSTicketsPro.showPredefinedSubjects =
function(department) {\n";
			$script .= "var subjects = {};\n";
			$script .= "subjects[0] =
{'':'".JText::_('RST_PLEASE_SELECT_SUBJECT',
true)."'};\n";
			foreach ($departments as $department) {
				$subjects 	=
RSTicketsProHelper::getJSSubjects($department->predefined_subjects);

				$script 	.= "subjects[".$department->id."] =
{".implode(',', $subjects)."};\n";
			}
			$script .= "if (typeof subjects[department.id] !=
'undefined') {\n";
			$script .=
"RSTicketsPro.populateSelect(document.getElementById('jform_subject'),
subjects[department.id]);\n";
			if ($this->value) {
				$script .= "if (typeof jQuery != 'undefined') {
jQuery(document.getElementById('jform_subject')).val(".json_encode($this->value).");
}\n";
			}
			$script .= "if (typeof jQuery != 'undefined') {
jQuery(document.getElementById('jform_subject')).trigger('liszt:updated');
}\n";
			$script .= "}\n";
			$script .= "}\n";

			$doc->addScriptDeclaration($script);

			return $options;
		}
	}
}models/fields/typeahead.php000064400000001644151163476000011762
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('text');

class JFormFieldTypeahead extends JFormFieldText
{
	protected function getInput()
	{
		JHtml::_('stylesheet',
'com_rsticketspro/awesomplete.css', array('relative'
=> true, 'version' => 'auto'));
		JHtml::_('script',
'com_rsticketspro/awesomplete.min.js', array('relative'
=> true, 'version' => 'auto'));
		JHtml::_('script',
'com_rsticketspro/awesomplete.script.js',
array('relative' => true, 'version' =>
'auto'));

		$allowEditor =
RSTicketsProHelper::getConfig('allow_rich_editor');
		JFactory::getDocument()->addScriptDeclaration("initAwesomplete('{$this->id}',
$allowEditor);");

		return parent::getInput();
	}
}models/forms/configuration.xml000064400000051611151163476000012555
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="general"
	          label="RST_GENERAL">
		<field name="date_format"
		       label="RST_DATE_TIME"
		       description="RST_DATE_TIME_DESC"
		       type="text"
		       size="40"/>
		<field name="date_format_notime"
		       label="RST_DATE_TIME_NOTIME"
		       description="RST_DATE_TIME_NOTIME_DESC"
		       type="text"
		       size="40"/>
		<field name="bootstrap"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_RSTICKETSPRO_BOOTSTRAP_DESC"
		       label="RST_RSTICKETSPRO_BOOTSTRAP"
		       default="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="jquery"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_RSTICKETSPRO_LOAD_JQUERY_DESC"
		       label="RST_RSTICKETSPRO_LOAD_JQUERY"
		       default="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="emails_as_usernames"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       default="0"
		       description="RST_RSTICKETSPRO_EMAILS_TO_USERS_DESC"
		       label="RST_RSTICKETSPRO_EMAILS_TO_USERS_LABEL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="allow_password_change"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       default="0"
		       description="RST_RSTICKETSPRO_ALLOW_PASSWORD_DESC"
		       label="RST_RSTICKETSPRO_ALLOW_PASSWORD_LABEL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="user_type"
		       type="usergrouplist"
		       description="RST_NEW_USER_TYPE_DESC"
		       label="RST_NEW_USER_TYPE"
		       default="2"/>
		<field name="admin_groups"
			   type="usergrouplist"
			   multiple="multiple"
			   description="COM_RSTICKETSPRO_ADMIN_GROUPS_DESC"
			   label="COM_RSTICKETSPRO_ADMIN_GROUPS_LABEL"
			   default="6,7,8"/>
		<field name="rsticketspro_link"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_RSTICKETSPRO_LINK_DESC"
		       label="RST_RSTICKETSPRO_LINK">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="allow_rich_editor"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_ALLOW_RICH_EDITOR_DESC"
		       label="RST_ALLOW_RICH_EDITOR">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="allow_rich_editor_buttons"
		       type="radio"
			   showon="allow_rich_editor:1"
		       class="btn-group btn-group-yesno"
		       description="RST_ALLOW_RICH_EDITOR_BUTTONS_DESC"
		       label="RST_ALLOW_RICH_EDITOR_BUTTONS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="show_reply_as_customer"
			   type="radio"
			   class="btn-group btn-group-yesno"
			   description="RST_SHOW_REPLY_AS_CUSTOMER_DESC"
			   label="RST_SHOW_REPLY_AS_CUSTOMER">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="show_kb_search"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_SHOW_KB_SEARCH_DESC"
		       label="RST_SHOW_KB_SEARCH">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="show_signature"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_SHOW_SIGNATURE_DESC"
		       label="RST_SHOW_SIGNATURE">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="submit_redirect"
		       label="RST_REDIRECT_AFTER_SUBMIT"
		       description="RST_REDIRECT_AFTER_SUBMIT_DESC"
		       type="text"
		       size="40"/>
		<field name="staff_force_departments"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_STAFF_MEMBERS_FORCE_DEPARTMENTS_DESC"
		       label="RST_STAFF_MEMBERS_FORCE_DEPARTMENTS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="calculate_itemids"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_CALCULATE_ITEMIDS_DESC"
		       label="RST_CALCULATE_ITEMIDS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="use_magnific_popup"
				type="radio"
				class="btn-group btn-group-yesno"
				default="0"
				label="RST_USE_MAGNIFIC_POPUP"
				description="RST_USE_MAGNIFIC_POPUP_DESC">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="data_protection"
label="COM_RSTICKETSPRO_DATA_PROTECTION">
		<field name="forms_consent" type="radio"
default="1" class="btn-group btn-group-yesno"
label="COM_RSTICKETSPRO_FORMS_CONSENT"
description="COM_RSTICKETSPRO_FORMS_CONSENT_DESC"
labelclass="control-label">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="store_ip" type="radio"
default="1" class="btn-group btn-group-yesno"
label="COM_RSTICKETSPRO_STORE_IP"
description="COM_RSTICKETSPRO_STORE_IP_DESC"
labelclass="control-label">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="store_user_agent" type="radio"
default="1" class="btn-group btn-group-yesno"
label="COM_RSTICKETSPRO_STORE_USER_AGENT"
description="COM_RSTICKETSPRO_STORE_USER_AGENT_DESC"
labelclass="control-label">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="allow_self_anonymisation"
type="radio" default="0" class="btn-group
btn-group-yesno"
label="COM_RSTICKETSPRO_ALLOW_SELF_ANONYMISATION"
description="COM_RSTICKETSPRO_ALLOW_SELF_ANONYMISATION_DESC"
labelclass="control-label">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="anonymise_joomla_data" type="radio"
default="1" class="btn-group btn-group-yesno"
label="COM_RSTICKETSPRO_ANONYMISE_JOOMLA_DATA"
description="COM_RSTICKETSPRO_ANONYMISE_JOOMLA_DATA_DESC"
labelclass="control-label">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="messages"
	          label="RST_MESSAGES">
		<field name="global_message"
		       type="editor"
		       label="RST_GLOBAL_MESSAGE"
		       description="RST_GLOBAL_MESSAGE_DESC"
		       filter="raw"
		       buttons="true"/>
		<field name="submit_message"
		       type="editor"
		       label="RST_SUBMIT_MESSAGE"
		       description="RST_SUBMIT_MESSAGE_DESC"
		       filter="raw"
		       buttons="true"/>
	</fieldset>
	<fieldset name="tickets"
	          label="RST_TICKETS">
		<field name="spacer_appearance"
		       type="spacer"
		       label="RST_APPEARANCE"
		       class="com-rsticketspro-spacer"/>
		<field name="ticket_view"
		       type="list"
		       description="RST_TICKET_VIEW_DESC"
		       label="RST_TICKET_VIEW">
			<option
value="plain">RST_TICKET_VIEW_PLAIN</option>
			<option
value="tabbed">RST_TICKET_VIEW_TABBED</option>
			<option
value="accordion">RST_TICKET_VIEW_ACCORDION</option>
		</field>
		<field name="messages_direction"
		       type="list"
		       description="RST_MESSAGES_DIRECTION_DESC"
		       label="RST_MESSAGES_DIRECTION">
			<option value="ASC">RST_MESSAGES_ASC</option>
			<option value="DESC">RST_MESSAGES_DESC</option>
		</field>
		<field name="show_ticket_info"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_SHOW_TICKET_INFO_DESC"
		       label="RST_SHOW_TICKET_INFO">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="show_user_info"
		       type="list"
		       description="RST_SHOW_USER_INFO_DESC"
		       label="RST_SHOW_USER_INFO">
			<option value="name">RST_NAME</option>
			<option value="username">RST_USERNAME</option>
			<option value="email">RST_EMAIL</option>
		</field>
		<field name="show_email_link"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_SHOW_EMAIL_LINK_DESC"
		       label="RST_SHOW_EMAIL_LINK">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="ticket_viewing_history"
		       type="list"
		       description="RST_TICKET_VIEWING_HISTORY_DESC"
		       label="RST_TICKET_VIEWING_HISTORY">
			<option
value="0">RST_TICKET_VIEWING_HISTORY_DISABLE</option>
			<option
value="1">RST_TICKET_VIEWING_HISTORY_STAFF</option>
			<option
value="2">RST_TICKET_VIEWING_HISTORY_CUSTOMER</option>
		</field>
		<field name="color_whole_ticket"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_COLOR_WHOLE_TICKET_DESC"
		       label="RST_COLOR_WHOLE_TICKET">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="spacer_customer_input"
		       type="spacer"
		       label="RST_CUSTOMER_INPUT"
		       class="com-rsticketspro-spacer"/>
		<field name="rsticketspro_add_tickets"
		       type="list"
		       description="RST_RECEIVE_TICKETS_FROM_DESC"
		       label="RST_RECEIVE_TICKETS_FROM">
			<option value="1">RST_EVERYONE</option>
			<option value="0">RST_REGISTERED</option>
		</field>
		<field name="blocklist" type="textarea"
label="RST_EMAIL_SUBMIT_BLOCKLIST"
description="RST_EMAIL_SUBMIT_BLOCKLIST_DESC" rows="5"
cols="50" />
		<field name="show_alternative_email"
			   type="radio"
			   class="btn-group btn-group-yesno"
			   description="RST_SHOW_ALTERNATIVE_EMAIL_DESC"
			   label="RST_SHOW_ALTERNATIVE_EMAIL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="show_ticket_voting"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_SHOW_TICKET_VOTING_DESC"
		       label="RST_SHOW_TICKET_VOTING">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="enable_followup"
			   type="radio"
			   class="btn-group btn-group-yesno"
			   description="RST_ENABLE_FOLLOWUP_DESC"
			   label="RST_ENABLE_FOLLOWUP_LABEL"
			   default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="followup_cron_interval"
		       label="RST_FOLLOWUP_CHECK_DESC"
		       description="RST_FOLLOWUP_CHECK_DESC"
		       type="text"
		       size="40"/>
		<field name="followup_interval"
			   type="text"
			   default="1"
			   label="RST_EMAIL_FOLLOWUP_INTERVAL_LABEL"
			   description="RST_EMAIL_FOLLOWUP_INTERVAL_DESC"/>
		<field name="followup_enabled_time"
			   type="hidden"
			   default="0"/>
		<field name="allow_ticket_closing"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_ALLOW_TICKET_CLOSING_DESC"
		       label="RST_ALLOW_TICKET_CLOSING">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="allow_ticket_reopening"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_ALLOW_TICKET_REOPENING_DESC"
		       label="RST_ALLOW_TICKET_REOPENING">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="spacer_predefined_subjects"
		       type="spacer"
		       label="RST_PREDEFINED_SUBJECTS"
		       class="com-rsticketspro-spacer"/>
		<field name="allow_predefined_subjects"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_USE_PREDEFINED_SUBJECTS_DESC"
		       label="RST_USE_PREDEFINED_SUBJECTS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="spacer_time_spent"
		       type="spacer"
		       label="RST_TIME_SPENT"
		       class="com-rsticketspro-spacer"/>
		<field name="enable_time_spent"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_ENABLE_TIME_SPENT_DESC"
		       label="RST_ENABLE_TIME_SPENT">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="time_spent_type"
			   type="list"
			   description="RST_TIME_SPENT_TYPE_DESC"
			   label="RST_TIME_SPENT_TYPE">
			<option
value="input">RST_TIME_SPENT_INPUT</option>
			<option
value="tracking">RST_TIME_SPENT_TRACKING</option>
		</field>
		<field name="time_spent_unit"
		       type="list"
		       description="RST_TIME_SPENT_UNIT_DESC"
		       label="RST_TIME_SPENT_UNIT">
			<option value="m">RST_TIME_UNIT_MINUTES</option>
			<option value="h">RST_TIME_UNIT_HOURS</option>
			<option value="d">RST_TIME_UNIT_DAYS</option>
		</field>
	</fieldset>
	<fieldset name="avatars"
	          label="RST_AVATARS">
		<field name="avatars"
		       type="avatars"
		       description="RST_AVATARS_ENABLE_DESC"
		       label="RST_AVATARS_ENABLE"/>
	</fieldset>
	<fieldset name="captcha"
	          label="RST_CAPTCHA">
		<field name="captcha_enabled"
		       type="list"
		       description="RST_CAPTCHA_ENABLE_DESC"
		       label="RST_CAPTCHA_ENABLE">
			<option value="0">JNO</option>
			<option
value="1">RST_USE_BUILTIN_CAPTCHA</option>
			<option value="3">RST_USE_RECAPTCHA_NEW</option>
			<option
value="4">RST_USE_RECAPTCHA_NEW_INVISIBLE</option>
			<option
value="5">RST_USE_RECAPTCHA_BUILT_IN_JOOMLA</option>
		</field>
		<field name="captcha_enabled_for"
		       type="list"
			   class="advancedSelect"
		       multiple="multiple"
			   showon="captcha_enabled!:0"
		       description="RST_CAPTCHA_ENABLED_FOR_DESC"
		       label="RST_CAPTCHA_ENABLED_FOR">
			<option
value="unregistered">RST_CAPTCHA_UNREGISTERED</option>
			<option
value="customers">RST_CAPTCHA_CUSTOMERS</option>
			<option value="staff">RST_CAPTCHA_STAFF</option>
		</field>
		<field name="spacer_captcha"
		       type="spacer"
			   showon="captcha_enabled:1"
		       label="RST_BUILT_IN_CAPTCHA"
		       class="com-rsticketspro-spacer"/>
		<field name="captcha_characters"
			   showon="captcha_enabled:1"
		       label="RST_CAPTCHA_CHARACTERS"
		       description="RST_CAPTCHA_CHARACTERS_DESC"
		       type="text"
		       size="40"/>
		<field name="captcha_case_sensitive"
			   showon="captcha_enabled:1"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_CAPTCHA_CASE_SENSITIVE_DESC"
		       label="RST_CAPTCHA_CASE_SENSITIVE">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="spacer_recaptcha_new"
			   showon="captcha_enabled:3,4"
		       type="spacer"
		       label="RST_RECAPTCHA_NEW_SETTINGS"
		       class="com-rsticketspro-spacer"/>
		<field name="recaptcha_new_site_key"
			   showon="captcha_enabled:3,4"
		       type="text"
		       class="input-xlarge"
		       description="RST_RECAPTCHA_NEW_SITE_KEY_DESC"
		       label="RST_RECAPTCHA_NEW_SITE_KEY"
		       size="70"/>
		<field name="recaptcha_new_secret_key"
			   showon="captcha_enabled:3,4"
		       type="text"
		       class="input-xlarge"
		       description="RST_RECAPTCHA_NEW_SECRET_KEY_DESC"
		       label="RST_RECAPTCHA_NEW_SECRET_KEY"
		       size="70"/>
		<field name="recaptcha_new_theme"
			   showon="captcha_enabled:3,4"
		       type="list"
		       default="light"
		       label="RST_RECAPTCHA_NEW_THEME"
		       description="RST_RECAPTCHA_NEW_THEME_DESC">
			<option
value="light">RST_RECAPTCHA_NEW_THEME_LIGHT</option>
			<option
value="dark">RST_RECAPTCHA_NEW_THEME_DARK</option>
		</field>
		<field name="recaptcha_new_type"
			   showon="captcha_enabled:3,4"
		       type="list"
		       default="image"
		       label="RST_RECAPTCHA_NEW_TYPE"
		       description="RST_RECAPTCHA_NEW_TYPE_DESC">
			<option
value="image">RST_RECAPTCHA_NEW_TYPE_IMAGE</option>
			<option
value="audio">RST_RECAPTCHA_NEW_TYPE_AUDIO</option>
		</field>
	</fieldset>
	<fieldset name="email"
	          label="RST_EMAIL">
		<field name="email_use_global"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_EMAIL_USE_GLOBAL_DESC"
		       label="RST_EMAIL_USE_GLOBAL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="email_address"
			   showon="email_use_global:0"
		       label="RST_EMAIL_FROM_EMAIL"
		       description="RST_EMAIL_FROM_EMAIL_DESC"
		       type="text"
		       size="40"/>
		<field name="email_address_fullname"
			   showon="email_use_global:0"
		       label="RST_EMAIL_FROM_FULLNAME"
		       description="RST_EMAIL_FROM_FULLNAME_DESC"
		       type="text"
		       size="40"/>
		<field name="use_reply_above"
			   type="radio"
		       class="btn-group btn-group-yesno"
			   default="1"
		       label="RST_USE_REPLY_ABOVE"
		       description="RST_USE_REPLY_ABOVE_DESC">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="reply_above"
			   showon="use_reply_above:1"
		       label="RST_REPLY_ABOVE"
		       description="RST_REPLY_ABOVE_DESC"
		       type="text"
			   filter="raw"
		       size="40"/>
		<field name="customer_itemid"
		       label="RST_CONFIG_CUSTOMER_ITEMID"
		       description="RST_CONFIG_CUSTOMER_ITEMID_DESC"
		       type="text"
		       size="40"/>
		<field name="staff_itemid"
		       label="RST_CONFIG_STAFF_ITEMID"
		       description="RST_CONFIG_STAFF_ITEMID_DESC"
		       type="text"
		       size="40"/>
	</fieldset>
	<fieldset name="autoclose"
	          label="RST_AUTOCLOSE">
		<field name="autoclose_enabled"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_AUTOCLOSE_ENABLE_DESC"
		       label="RST_AUTOCLOSE_ENABLE">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="autoclose_automatically"
		       type="radio"
		       class="btn-group btn-group-yesno"
		       description="RST_AUTOCLOSE_AUTOMATICALLY_DESC"
		       label="RST_AUTOCLOSE_AUTOMATICALLY_LABEL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="autoclose_cron_interval"
		       label="RST_AUTOCLOSE_CHECK_DESC"
		       description="RST_AUTOCLOSE_CHECK_DESC"
		       type="text"
		       size="40"/>
		<field name="autoclose_email_interval"
		       label="RST_AUTOCLOSE_DAYS_STATUS"
		       description="RST_AUTOCLOSE_DAYS_STATUS_DESC"
		       type="text"
		       size="40"/>
		<field name="autoclose_interval"
		       label="RST_AUTOCLOSE_DAYS_CLOSED"
		       description="RST_AUTOCLOSE_DAYS_CLOSED_DESC"
		       type="text"
		       size="40"/>
	</fieldset>
	<fieldset name="notices"
	          label="RST_NOTICES">
		<field name="notice_email_address"
		       label="RST_NOTICES_EMAIL"
		       description="RST_NOTICES_EMAIL_DESC"
		       type="text"
		       size="40"/>
		<field name="notice_max_replies_nr"
		       label="RST_NOTICES_NO_REPLIES"
		       description="RST_NOTICES_NO_REPLIES_DESC"
		       type="text"
		       size="40"/>
		<field name="notice_replies_with_no_response_nr"
		       label="RST_NOTICES_NO_REPLIES_WITH_NO_RESPONSE"
		      
description="RST_NOTICES_NO_REPLIES_WITH_NO_RESPONSE_DESC"
		       type="text"
		       size="40"/>
		<field name="notice_not_allowed_keywords"
		       label="RST_NOTICES_TRIGGERED_KEYWORDS"
		       description="RST_NOTICES_TRIGGERED_KEYWORDS_DESC"
		       type="textarea"
		       rows="5"
		       cols="50"/>
	</fieldset>
	<fieldset name="knowledgebase"
	          label="RST_KNOWLEDGEBASE">
		<field name="kb_hot_hits"
		       label="RST_KB_HOT_HITS"
		       description="RST_KB_HOT_HITS_DESC"
		       type="text"
		       size="40"/>
		<field name="kb_load_plugin"
		       type="radio"
		       default="0"
		       class="btn-group btn-group-yesno"
		       description="RST_KB_LOAD_CONTENT_PLUGIN_DESC"
		       label="RST_KB_LOAD_CONTENT_PLUGIN">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="kb_comments"
		       type="comments"
		       description="RST_KB_COMMENTS_DESC"
		       label="RST_KB_COMMENTS"/>
	</fieldset>
	<fieldset name="kbtemplate"
label="RST_KB_TEMPLATE">
		<field name="kb_template_body" type="editor"
label="RST_KB_TEMPLATE_BODY"
description="RST_KB_TEMPLATE_BODY_DESC" filter="raw"
buttons="true" />
		<field name="kb_template_ticket_body"
type="editor" label="RST_KB_TEMPLATE_TICKET_BODY"
description="RST_KB_TEMPLATE_TICKET_BODY_DESC"
filter="raw" buttons="true" />
	</fieldset>
	<fieldset name="updates"
	          label="RST_UPDATES">
		<field name="global_register_code"
		       type="text"
		       description="RST_LICENSE_CODE_DESC"
		       label="RST_LICENSE_CODE"
		       size="70"/>
	</fieldset>
	<fieldset name="permissions"
	          label="JCONFIG_PERMISSIONS_LABEL"
	          description="JCONFIG_PERMISSIONS_DESC">
	</fieldset>
</form>models/forms/customfield.xml000064400000004161151163476000012222
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="department_id" required="true"
please="true" type="departments" default="0"
label="RST_CUSTOM_FIELD_DEPARTMENT"
description="RST_CUSTOM_FIELD_DEPARTMENT_DESC" />
		<field name="name" type="text"
description="RST_CUSTOM_FIELD_DESC"
label="RST_CUSTOM_FIELD" required="true"
size="64" />
		<field name="label" type="text"
description="RST_LABEL_DESC" label="RST_LABEL"
size="64" />
		<field name="type" type="list"
description="RST_TYPE_DESC" label="RST_TYPE">
			<option value="freetext">RST_FREETEXT</option>
			<option value="textbox">RST_TEXTBOX</option>
			<option value="textarea">RST_TEXTAREA</option>
			<option value="select">RST_SELECT</option>
			<option
value="multipleselect">RST_MULTIPLESELECT</option>
			<option value="checkbox">RST_CHECKBOX</option>
			<option value="radio">RST_RADIO</option>
			<option value="calendar">RST_CALENDAR</option>
			<option
value="calendartime">RST_CALENDARTIME</option>
		</field>
		<field name="values" label="RST_VALUES"
description="RST_VALUES_DESC" type="textarea"
filter="raw" rows="5" cols="50" />
		<field name="additional"
label="RST_ADDITIONAL_ATTR"
description="RST_ADDITIONAL_ATTR_DESC" type="textarea"
filter="raw" rows="5" cols="50"
showon="type!:freetext" />
		<field name="required" type="radio"
class="btn-group btn-group-yesno" label="RST_REQUIRED"
description="RST_REQUIRED_DESC" size="1"
default="0" showon="type!:freetext">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="validation" label="RST_VALIDATION"
description="RST_VALIDATION_DESC" type="textarea"
filter="raw" rows="5" cols="50"
showon="type!:freetext" />
		<field name="description"
label="RST_CUSTOM_FIELD_DESCRIPTION"
description="RST_CUSTOM_FIELD_DESCRIPTION_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1" default="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/department.xml000064400000012530151163476000012046
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="general" label="RST_GENERAL">
		<field name="name" type="text"
description="RST_DEPARTMENT_DESC"
label="RST_DEPARTMENT" required="true"
size="64" filter="trim" />
		<field name="prefix" type="text"
description="RST_PREFIX_DESC" label="RST_PREFIX"
required="true" size="64" filter="trim"
/>
		<field name="jgroups" type="usergrouplist"
multiple="multiple" class="advancedSelect"
label="COM_RSTICKETSPRO_EXCLUDE_DEPARTMENT_FROM_GROUP_LABEL"
description="COM_RSTICKETSPRO_EXCLUDE_DEPARTMENT_FROM_GROUP_DESCRIPTION"
/>
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1">
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
	<fieldset name="tickets"
label="RST_DEPARTMENT_TICKETS">
		<field name="assignment_type" type="list"
description="RST_ASSIGNMENT_TYPE_DESC"
label="RST_ASSIGNMENT_TYPE">
			<option value="0">RST_STATIC</option>
			<option value="1">RST_AUTOMATIC</option>
		</field>
		<field name="generation_rule" type="list"
description="RST_GENERATION_RULE_DESC"
label="RST_GENERATION_RULE">
			<option value="0">RST_SEQUENTIAL</option>
			<option value="1">RST_RANDOM</option>
		</field>
		<field name="priority_id" type="priorities"
label="RST_PRIORITY" description="RST_PRIORITY_DESC"
/>
		<field name="predefined_subjects"
label="RST_PREDEFINED_SUBJECTS_ADD"
description="RST_PREDEFINED_SUBJECTS_ADD_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
	</fieldset>
	<fieldset name="emails"
label="RST_DEPARTMENT_EMAILS">
		<field name="email_use_global" type="radio"
class="btn-group btn-group-yesno"
description="RST_EMAIL_USE_RSTICKETS_GLOBAL_DESC"
label="RST_EMAIL_USE_RSTICKETS_GLOBAL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="email_address"
showon="email_use_global:0" type="text"
description="RST_EMAIL_FROM_EMAIL_DESC"
label="RST_EMAIL_FROM_EMAIL" size="64" />
		<field name="email_address_fullname"
showon="email_use_global:0" type="text"
description="RST_EMAIL_FROM_FULLNAME_DESC"
label="RST_EMAIL_FROM_FULLNAME" size="64" />
		<field name="customer_send_email" type="radio"
class="btn-group btn-group-yesno"
description="RST_CUSTOMER_SEND_EMAIL_DESC"
label="RST_CUSTOMER_SEND_EMAIL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="customer_send_copy_email"
type="radio" class="btn-group btn-group-yesno"
description="RST_CUSTOMER_SEND_COPY_EMAIL_DESC"
label="RST_CUSTOMER_SEND_COPY_EMAIL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="customer_attach_email" type="radio"
class="btn-group btn-group-yesno"
description="RST_CUSTOMER_ATTACH_EMAIL_DESC"
label="RST_CUSTOMER_ATTACH_EMAIL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="staff_send_email" type="radio"
class="btn-group btn-group-yesno"
description="RST_STAFF_SEND_EMAIL_DESC"
label="RST_STAFF_SEND_EMAIL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="staff_attach_email" type="radio"
class="btn-group btn-group-yesno"
description="RST_STAFF_ATTACH_EMAIL_DESC"
label="RST_STAFF_ATTACH_EMAIL">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="download_type" type="list"
default="attachment"
description="RST_DOWNLOAD_TYPE_DESC"
label="RST_DOWNLOAD_TYPE_LABEL">
			<option
value="link">RST_LINK_FROM_SERVER</option>
			<option
value="attachment">RST_EMAIL_ATTACHMENT</option>
		</field>
		<field name="notify_new_tickets_to"
label="RST_NOTIFY_NEW_TICKETS_TO"
description="RST_NOTIFY_NEW_TICKETS_TO_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="cc" label="RST_DEPARTMENT_CC"
description="RST_DEPARTMENT_CC_DESC" type="textarea"
filter="raw" rows="5" cols="50" />
		<field name="bcc" label="RST_DEPARTMENT_BCC"
description="RST_DEPARTMENT_BCC_DESC" type="textarea"
filter="raw" rows="5" cols="50" />
		<field name="notify_assign" type="radio"
class="btn-group btn-group-yesno"
description="RST_NOTIFY_ASSIGN_DESC"
label="RST_NOTIFY_ASSIGN">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="uploads"
label="RST_DEPARTMENT_UPLOADS">
		<field name="upload" type="list"
description="RST_UPLOAD_FOR_DESC"
label="RST_UPLOAD_FOR">
			<option value="1">RST_EVERYONE</option>
			<option value="2">RST_REGISTERED</option>
			<option value="0">RST_NOBODY</option>
		</field>
		<field name="upload_ticket_required"
showon="upload:1,2" type="radio" class="btn-group
btn-group-yesno"
description="COM_RSTICKETSPRO_UPLOAD_TICKET_REQUIRED_DESC"
label="COM_RSTICKETSPRO_UPLOAD_TICKET_REQUIRED"
default="0">
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="upload_extensions"
showon="upload:1,2" label="RST_UPLOAD_EXTENSIONS"
description="RST_UPLOAD_EXTENSIONS_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="upload_size" showon="upload:1,2"
type="text" description="RST_UPLOAD_SIZE_DESC"
label="RST_UPLOAD_SIZE" size="64" />
		<field name="upload_files" showon="upload:1,2"
type="text" description="RST_UPLOAD_FILES_DESC"
label="RST_UPLOAD_FILES" size="64" />
	</fieldset>
</form>models/forms/email.xml000064400000001223151163476000010767
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="subject" type="text"
description="RST_EMAIL_SUBJECT_DESC"
label="RST_EMAIL_SUBJECT" size="64" />
		<field name="message" type="editor"
label="RST_EMAIL_MESSAGE"
description="RST_EMAIL_MESSAGE_DESC" required="true"
filter="raw" buttons="true" />
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1">
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="type" type="hidden" />
		<field name="lang" type="hidden" />
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/filter_customfields.xml000064400000004514151163476000013754
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
        <field
                name="state"
                type="list"
                onchange="this.form.submit();"
                default=""
        >
            <option
value="">JOPTION_SELECT_PUBLISHED</option>
            <option value="1">JPUBLISHED</option>
            <option value="0">JUNPUBLISHED</option>
        </field>
		<field
				name="department_id"
				type="departments"
				please="true"
				onchange="this.form.submit();"
				default=""
		>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="f.ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="f.ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
            <option value="department_name
ASC">COM_RSTICKETSPRO_DEPARTMENT_ORDER_ASC</option>
            <option value="department_name
DESC">COM_RSTICKETSPRO_DEPARTMENT_ORDER_DESC</option>
			<option value="f.name
ASC">COM_RSTICKETSPRO_CUSTOM_FIELD_ORDER_ASC</option>
			<option value="f.name
DESC">COM_RSTICKETSPRO_CUSTOM_FIELD_ORDER_DESC</option>
			<option value="f.published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="f.published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="required
ASC">COM_RSTICKETSPRO_REQUIRED_ORDER_ASC</option>
			<option value="required
DESC">COM_RSTICKETSPRO_REQUIRED_ORDER_DESC</option>
			<option value="f.id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="f.id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_departments.xml000064400000003754151163476000013606
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
        <field
                name="state"
                type="list"
                onchange="this.form.submit();"
                default=""
        >
            <option
value="">JOPTION_SELECT_PUBLISHED</option>
            <option value="1">JPUBLISHED</option>
            <option value="0">JUNPUBLISHED</option>
        </field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
            <option value="name
ASC">COM_RSTICKETSPRO_DEPARTMENT_ORDER_ASC</option>
            <option value="name
DESC">COM_RSTICKETSPRO_DEPARTMENT_ORDER_DESC</option>
			<option value="prefix
ASC">COM_RSTICKETSPRO_PREFIX_ORDER_ASC</option>
			<option value="prefix
DESC">COM_RSTICKETSPRO_PREFIX_ORDER_DESC</option>
			<option value="published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_emails.xml000064400000003505151163476000012524
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
		<field name="language" type="rsticketsprolang"
onchange="this.form.submit();">
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="lang
ASC">COM_RSTICKETSPRO_LANGUAGE_ORDER_ASC</option>
			<option value="lang
DESC">COM_RSTICKETSPRO_LANGUAGE_ORDER_DESC</option>
			<option value="type
ASC">COM_RSTICKETSPRO_TYPE_ORDER_ASC</option>
			<option value="type
DESC">COM_RSTICKETSPRO_TYPE_ORDER_DESC</option>
			<option value="subject
ASC">COM_RSTICKETSPRO_SUBJECT_ORDER_ASC</option>
			<option value="subject
DESC">COM_RSTICKETSPRO_SUBJECT_ORDER_DESC</option>
			<option value="published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_groups.xml000064400000002247151163476000012573
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="name
ASC">COM_RSTICKETSPRO_GROUP_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_GROUP_ORDER_DESC</option>>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_kbarticles.xml000064400000005122151163476000013372
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
		<field name="category_id"
onchange="this.form.submit();" type="kbcategories"
show_noparent="true" please="true" />
		<field
				name="private"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">COM_RSTICKETSPRO_SELECT_PRIVATE</option>
			<option
value="1">COM_RSTICKETSPRO_PRIVATE</option>
			<option
value="0">COM_RSTICKETSPRO_PUBLIC</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="a.ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="a.ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
			<option value="a.name
ASC">COM_RSTICKETSPRO_ARTICLE_ORDER_ASC</option>
			<option value="a.name
DESC">COM_RSTICKETSPRO_ARTICLE_ORDER_DESC</option>
			<option value="c.name
ASC">COM_RSTICKETSPRO_CATEGORY_ORDER_ASC</option>
			<option value="c.name
DESC">COM_RSTICKETSPRO_CATEGORY_ORDER_DESC</option>
			<option value="a.hits
ASC">COM_RSTICKETSPRO_HITS_ORDER_ASC</option>
			<option value="a.hits
DESC">COM_RSTICKETSPRO_HITS_ORDER_DESC</option>
			<option value="a.private
ASC">COM_RSTICKETSPRO_PRIVATE_ORDER_ASC</option>
			<option value="a.private
DESC">COM_RSTICKETSPRO_PRIVATE_ORDER_DESC</option>
			<option value="a.published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="a.published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="a.id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="a.id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_kbcategories.xml000064400000004236151163476000013716
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
		<field
				name="private"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">COM_RSTICKETSPRO_SELECT_PRIVATE</option>
			<option
value="1">COM_RSTICKETSPRO_PRIVATE</option>
			<option
value="0">COM_RSTICKETSPRO_PUBLIC</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
			<option value="name
ASC">COM_RSTICKETSPRO_CATEGORY_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_CATEGORY_ORDER_DESC</option>
			<option value="private
ASC">COM_RSTICKETSPRO_PRIVATE_ORDER_ASC</option>
			<option value="private
DESC">COM_RSTICKETSPRO_PRIVATE_ORDER_DESC</option>
			<option value="published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_kbrules.xml000064400000003343151163476000012721
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="r.name
ASC">COM_RSTICKETSPRO_RULE_ORDER_ASC</option>
			<option value="r.name
DESC">COM_RSTICKETSPRO_RULE_ORDER_DESC</option>
			<option value="c.name
ASC">COM_RSTICKETSPRO_CATEGORY_ORDER_ASC</option>
			<option value="c.name
DESC">COM_RSTICKETSPRO_CATEGORY_ORDER_DESC</option>
			<option value="r.published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="r.published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="r.id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="r.id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_predefinedsearches.xml000064400000003337151163476000015100
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
			<option value="name
ASC">COM_RSTICKETSPRO_SEARCH_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_SEARCH_ORDER_DESC</option>
			<option value="published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_priorities.xml000064400000003343151163476000013443
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
			<option value="name
ASC">COM_RSTICKETSPRO_PRIORITY_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_PRIORITY_ORDER_DESC</option>
			<option value="published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_staffs.xml000064400000003434151163476000012541
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="username
ASC">COM_RSTICKETSPRO_USERNAME_ORDER_ASC</option>
			<option value="username
DESC">COM_RSTICKETSPRO_USERNAME_ORDER_DESC</option>
			<option value="name
ASC">COM_RSTICKETSPRO_NAME_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_NAME_ORDER_DESC</option>
			<option value="email
ASC">COM_RSTICKETSPRO_EMAIL_ORDER_ASC</option>
			<option value="email
DESC">COM_RSTICKETSPRO_EMAIL_ORDER_DESC</option>
			<option value="group_name
ASC">COM_RSTICKETSPRO_GROUP_ORDER_ASC</option>
			<option value="group_name
DESC">COM_RSTICKETSPRO_GROUP_ORDER_DESC</option>
			<option value="priority_name
ASC">COM_RSTICKETSPRO_PRIORITY_ORDER_ASC</option>
			<option value="priority_name
DESC">COM_RSTICKETSPRO_PRIORITY_ORDER_DESC</option>
			<option value="u.id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="u.id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_statuses.xml000064400000003337151163476000013130
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
		<field
				name="state"
				type="list"
				onchange="this.form.submit();"
				default=""
		>
			<option
value="">JOPTION_SELECT_PUBLISHED</option>
			<option value="1">JPUBLISHED</option>
			<option value="0">JUNPUBLISHED</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="ordering
ASC">COM_RSTICKETSPRO_ORDERING_ORDER_ASC</option>
			<option value="ordering
DESC">COM_RSTICKETSPRO_ORDERING_ORDER_DESC</option>
			<option value="name
ASC">COM_RSTICKETSPRO_STATUS_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_STATUS_ORDER_DESC</option>
			<option value="published
ASC">COM_RSTICKETSPRO_STATE_ORDER_ASC</option>
			<option value="published
DESC">COM_RSTICKETSPRO_STATE_ORDER_DESC</option>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_tickets.xml000064400000005374151163476000012726
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />

		<field
				name="department_id"
				type="departments"
				onchange="this.form.submit();"
				default=""
		>
			<option value="">RST_SELECT_DEPARTMENT</option>
		</field>

		<field
				name="priority_id"
				type="priorities"
				onchange="this.form.submit();"
				default=""
		>
			<option value="">RST_SELECT_PRIORITY</option>
		</field>

		<field
				name="status_id"
				type="statuses"
				onchange="this.form.submit();"
				default=""
		>
			<option value="">RST_SELECT_STATUS</option>
		</field>
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="date DESC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="date
ASC">COM_RSTICKETSPRO_DATE_ORDER_ASC</option>
			<option value="date
DESC">COM_RSTICKETSPRO_DATE_ORDER_DESC</option>
			<option value="last_reply
ASC">COM_RSTICKETSPRO_LASTREPLY_ORDER_ASC</option>
			<option value="last_reply
DESC">COM_RSTICKETSPRO_LASTREPLY_ORDER_DESC</option>
			<option value="flagged
ASC">COM_RSTICKETSPRO_FLAGGED_ORDER_ASC</option>
			<option value="flagged
DESC">COM_RSTICKETSPRO_FLAGGED_ORDER_DESC</option>
			<option value="code
ASC">COM_RSTICKETSPRO_CODE_ORDER_ASC</option>
			<option value="code
DESC">COM_RSTICKETSPRO_CODE_ORDER_DESC</option>
			<option value="subject
ASC">COM_RSTICKETSPRO_SUBJECT_ORDER_ASC</option>
			<option value="subject
DESC">COM_RSTICKETSPRO_SUBJECT_ORDER_DESC</option>
			<option value="customer
ASC">COM_RSTICKETSPRO_CUSTOMER_ORDER_ASC</option>
			<option value="customer
DESC">COM_RSTICKETSPRO_CUSTOMER_ORDER_DESC</option>
			<option value="priority
ASC">COM_RSTICKETSPRO_PRIORITY_ORDER_ASC</option>
			<option value="priority
DESC">COM_RSTICKETSPRO_PRIORITY_ORDER_DESC</option>
			<option value="status
ASC">COM_RSTICKETSPRO_STATUS_ORDER_ASC</option>
			<option value="status
DESC">COM_RSTICKETSPRO_STATUS_ORDER_DESC</option>
			<option value="staff
ASC">COM_RSTICKETSPRO_STAFF_ORDER_ASC</option>
			<option value="staff
DESC">COM_RSTICKETSPRO_STAFF_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/filter_users.xml000064400000002746151163476000012421
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
    <fields name="filter">
        <field
                name="search"
                type="text"
                label="COM_RSTICKETSPRO_FILTER_SEARCH_LABEL"
               
description="COM_RSTICKETSPRO_SEARCH_FILTER_PLACEHOLDER"
                hint="JSEARCH_FILTER"
        />
    </fields>

    <fields name="list">
        <field
                name="fullordering"
                type="list"
                label="JGLOBAL_SORT_BY"
                onchange="this.form.submit();"
                default="FormId ASC"
        >
            <option
value="">JGLOBAL_SORT_BY</option>
			<option value="id
ASC">COM_RSTICKETSPRO_ID_ORDER_ASC</option>
			<option value="id
DESC">COM_RSTICKETSPRO_ID_ORDER_DESC</option>
			<option value="name
ASC">COM_RSTICKETSPRO_NAME_ORDER_ASC</option>
			<option value="name
DESC">COM_RSTICKETSPRO_NAME_ORDER_DESC</option>
            <option value="username
ASC">COM_RSTICKETSPRO_USERNAME_ORDER_ASC</option>
            <option value="username
DESC">COM_RSTICKETSPRO_USERNAME_ORDER_DESC</option>
			<option value="email
ASC">COM_RSTICKETSPRO_EMAIL_ORDER_ASC</option>
			<option value="email
DESC">COM_RSTICKETSPRO_EMAIL_ORDER_DESC</option>
        </field>

        <field
                name="limit"
                type="limitbox"
                label="JGLOBAL_LIST_LIMIT"
                default="25"
                onchange="this.form.submit();"
        />
    </fields>
</form>models/forms/group.xml000064400000015216151163476000011043
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="general" label="RST_GENERAL">
		<field name="name" type="text"
description="RST_GROUP_DESC" label="RST_GROUP"
required="true" size="64" />
		<field name="export_tickets" default="0"
type="radio" class="btn-group btn-group-yesno"
description="RST_CAN_EXPORT_TICKETS_DESC"
label="RST_CAN_EXPORT_TICKETS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
	<fieldset name="submitting"
label="RST_GROUP_SUBMITTING">
		<field name="add_ticket" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_ADD_TICKET_DESC"
label="RST_CAN_ADD_TICKET">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="add_ticket_customers" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_ADD_TICKET_CUSTOMERS_DESC"
label="RST_CAN_ADD_TICKET_CUSTOMERS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="add_ticket_staff" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_ADD_TICKET_STAFF_DESC"
label="RST_CAN_ADD_TICKET_STAFF">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="replying"
label="RST_GROUP_REPLYING">
		<field name="answer_ticket" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_ANSWER_TICKET_DESC"
label="RST_CAN_ANSWER_TICKET">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update_ticket_replies" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_TICKET_REPLIES_DESC"
label="RST_CAN_UPDATE_TICKET_REPLIES">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update_ticket_replies_customers"
type="radio" class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_TICKET_REPLIES_CUSTOMERS_DESC"
label="RST_CAN_UPDATE_TICKET_REPLIES_CUSTOMERS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update_ticket_replies_staff"
type="radio" class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_TICKET_REPLIES_STAFF_DESC"
label="RST_CAN_UPDATE_TICKET_REPLIES_STAFF">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="delete_ticket_replies" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_DELETE_TICKET_REPLIES_DESC"
label="RST_CAN_DELETE_TICKET_REPLIES">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="delete_ticket_replies_customers"
type="radio" class="btn-group btn-group-yesno"
description="RST_CAN_DELETE_TICKET_REPLIES_CUSTOMERS_DESC"
label="RST_CAN_DELETE_TICKET_REPLIES_CUSTOMERS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="delete_ticket_replies_staff"
type="radio" class="btn-group btn-group-yesno"
description="RST_CAN_DELETE_TICKET_REPLIES_STAFF_DESC"
label="RST_CAN_DELETE_TICKET_REPLIES_STAFF">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="viewing"
label="RST_GROUP_VIEWING">
		<field name="see_unassigned_tickets" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_SEE_UNASSIGNED_TICKETS_DESC"
label="RST_CAN_SEE_UNASSIGNED_TICKETS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="see_other_tickets" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_SEE_OTHER_TICKETS_DESC"
label="RST_CAN_SEE_OTHER_TICKETS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="updating"
label="RST_GROUP_UPDATING">
		<field name="update_ticket" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_TICKET_DESC"
label="RST_CAN_UPDATE_TICKET">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update_ticket_custom_fields"
type="radio" class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_TICKET_CUSTOM_FIELDS_DESC"
label="RST_CAN_UPDATE_TICKET_CUSTOM_FIELDS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="assign_tickets" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_ASSIGN_TICKETS_DESC"
label="RST_CAN_ASSIGN_TICKETS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="change_ticket_status" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_CHANGE_TICKET_STATUS_DESC"
label="RST_CAN_CHANGE_TICKET_STATUS">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="move_ticket" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_MOVE_TICKET_DESC"
label="RST_CAN_MOVE_TICKET">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="delete_ticket" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_DELETE_TICKET_DESC"
label="RST_CAN_DELETE_TICKET">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
	<fieldset name="notes" label="RST_GROUP_NOTES">
		<field name="view_notes" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_VIEW_NOTES_DESC"
label="RST_CAN_VIEW_NOTES">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="add_note" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_ADD_NOTE_DESC"
label="RST_CAN_ADD_NOTE">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update_note" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_NOTE_DESC"
label="RST_CAN_UPDATE_NOTE">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update_note_staff" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_UPDATE_NOTE_STAFF_DESC"
label="RST_CAN_UPDATE_NOTE_STAFF">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="delete_note" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_DELETE_NOTE_DESC"
label="RST_CAN_DELETE_NOTE">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="delete_note_staff" type="radio"
class="btn-group btn-group-yesno"
description="RST_CAN_DELETE_NOTE_STAFF_DESC"
label="RST_CAN_DELETE_NOTE_STAFF">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
</form>models/forms/index.html000064400000000054151163476000011154
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/forms/kbarticle.xml000064400000002442151163476000011644
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_KB_ARTICLE_NAME_DESC"
label="RST_KB_ARTICLE_NAME" required="true"
size="64" />
		<field name="category_id" type="kbcategories"
label="RST_KB_ARTICLE_CATEGORY"
description="RST_KB_ARTICLE_CATEGORY_DESC"
show_noparent="true" />
		<field name="text" type="editor"
label="RST_KB_ARTICLE_TEXT"
description="RST_KB_ARTICLE_TEXT_DESC" filter="raw"
buttons="true" />
		<field name="meta_description"
label="RST_KB_ARTICLE_META_DESCRIPTION"
description="RST_KB_ARTICLE_META_DESCRIPTION_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="meta_keywords"
label="RST_KB_ARTICLE_META_KEYWORDS"
description="RST_KB_ARTICLE_META_KEYWORDS_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="private" type="radio"
class="btn-group btn-group-yesno" label="RST_PRIVATE"
description="RST_PRIVATE_DESC" size="1"
default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1" default="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/kbcategory.xml000064400000003220151163476000012031
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_KB_CATEGORY_NAME_DESC"
label="RST_KB_CATEGORY_NAME" required="true"
size="64" />
		<field name="parent_id" type="kbcategories"
label="RST_KB_CATEGORY_PARENT"
description="RST_KB_CATEGORY_PARENT_DESC"
show_noparent="true" />
		<field name="description" type="editor"
label="RST_KB_CATEGORY_DESCRIPTION"
description="RST_KB_CATEGORY_DESCRIPTION_DESC"
filter="raw" buttons="true" />
		<field name="thumb" type="file"
label="RST_KB_CATEGORY_ICON"
description="RST_KB_CATEGORY_ICON_DESC" />
		<field name="delete_thumb" type="radio"
class="btn-group btn-group-yesno"
description="RST_REMOVE_THUMB_DESC"
label="RST_REMOVE_THUMB" default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="meta_description"
label="RST_KB_CATEGORY_META_DESCRIPTION"
description="RST_KB_CATEGORY_META_DESCRIPTION_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="meta_keywords"
label="RST_KB_CATEGORY_META_KEYWORDS"
description="RST_KB_CATEGORY_META_KEYWORDS_DESC"
type="textarea" filter="raw" rows="5"
cols="50" />
		<field name="private" type="radio"
class="btn-group btn-group-yesno" label="RST_PRIVATE"
description="RST_PRIVATE_DESC" size="1"
default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1" default="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/kbconvert.xml000064400000002110151163476000011671
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_KB_ARTICLE_NAME_DESC"
label="RST_KB_ARTICLE_NAME" required="true"
size="64" />
		<field name="category_id" type="kbcategories"
label="RST_KB_CATEGORY_NAME" show_noparent="true"
/>
		<field name="private" type="radio"
class="btn-group btn-group-yesno" label="RST_PRIVATE"
description="RST_PRIVATE_DESC" size="1"
default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="publish_article" type="radio"
class="btn-group btn-group-yesno"
label="RST_PUBLISH_ARTICLE"
description="RST_PUBLISH_ARTICLE_DESC" size="1"
default="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="private" type="radio"
class="btn-group btn-group-yesno"
label="RST_PRIVATE_ARTICLE"
description="RST_PRIVATE_ARTICLE_DESC" size="1"
default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="ticket_id" type="hidden" />
	</fieldset>
</form>models/forms/kbrule.xml000064400000002773151163476000011177
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_KB_RULE_NAME_DESC"
label="RST_KB_RULE_NAME" required="true"
size="64" />
		<field name="conditions" type="kbconditions"
label="RST_KB_RULE_CONDITION" size="64" />
		<field name="category_id" type="kbcategories"
label="RST_KB_PUBLISH_TO_CATEGORY"
description="RST_KB_PUBLISH_TO_CATEGORY_DESC"
show_noparent="true" />
		<field name="publish_article" type="radio"
class="btn-group btn-group-yesno"
label="RST_PUBLISH_ARTICLE"
description="RST_PUBLISH_ARTICLE_DESC" size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="private" type="radio"
class="btn-group btn-group-yesno"
label="RST_PRIVATE_ARTICLE"
description="RST_PRIVATE_ARTICLE_DESC" size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="select_type" type="dummy"
hidden="true" />
		<field name="select_custom_field_value"
type="dummy" hidden="true" />
		<field name="select_condition" type="dummy"
hidden="true" />
		<field name="select_value" type="dummy"
hidden="true" />
		<field name="select_connector" type="dummy"
hidden="true" />

		<field name="id" type="hidden" />
		<field name="from_ticket_id" type="hidden" />
	</fieldset>
</form>models/forms/note.xml000064400000000506151163476000010650
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="text" label="RST_TICKET_NOTE"
required="true" description="RST_TICKET_NOTE_DESC"
type="textarea" filter="raw" rows="12"
cols="50" />
		<field name="id" type="hidden" />
		<field name="ticket_id" type="hidden" />
	</fieldset>
</form>models/forms/predefinedsearches.xml000064400000001607151163476000013531
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_SEARCH_NAME_DESC"
label="RST_SEARCH_NAME" required="true"
size="64" />
		<field name="default" type="radio"
class="btn-group btn-group-yesno"
description="RST_DEFAULT_SEARCH_DESC"
label="RST_DEFAULT_SEARCH" default="0"
size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="update" type="list"
description="RST_UPDATE_SEARCH_DESC"
label="RST_UPDATE_SEARCH" default="0"
size="1">
			<option value="1">RST_UPDATE_SEARCH_OK</option>
			<option value="0">JNO</option>
		</field>
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/priority.xml000064400000001265151163476000011567
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_PRIORITY_DESC" label="RST_PRIORITY"
required="true" size="64" />
		<field name="bg_color" type="color"
description="RST_PRIORITY_BACKGROUND_COLOR_DESC"
label="RST_PRIORITY_BACKGROUND_COLOR" />
		<field name="fg_color" type="color"
description="RST_PRIORITY_FOREGROUND_COLOR_DESC"
label="RST_PRIORITY_FOREGROUND_COLOR" />
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/search.xml000064400000003337151163476000011155
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="filter_search" type="text"
description="RST_SEARCH_TEXT_DESC"
label="RST_SEARCH_TEXT" size="64" />
		<field name="customer" type="text"
description="RST_SEARCH_CUSTOMER_DESC"
label="RST_SEARCH_CUSTOMER" size="64" />
		<field name="staff" type="text"
description="RST_SEARCH_STAFF_DESC"
label="RST_SEARCH_STAFF" size="64" />
		<field name="department_id" type="departments"
default="0" published="true"
label="RST_SEARCH_DEPARTMENTS"
description="RST_SEARCH_DEPARTMENTS_DESC"
multiple="multiple" />
		<field name="priority_id" type="priorities"
published="true" label="RST_SEARCH_PRIORITIES"
description="RST_SEARCH_PRIORITIES_DESC"
multiple="multiple" />
		<field name="status_id" type="statuses"
published="true" label="RST_SEARCH_STATUSES"
description="RST_SEARCH_STATUSES_DESC"
multiple="multiple" />
		<field name="filter_order" type="list"
label="JFIELD_ORDERING_LABEL"
description="JFIELD_ORDERING_DESC">
			<option value="date">RST_TICKET_DATE</option>
			<option
value="last_reply">RST_TICKET_LAST_REPLY</option>
			<option value="code">RST_TICKET_CODE</option>
			<option
value="subject">RST_TICKET_SUBJECT</option>
			<option value="status">RST_TICKET_STATUS</option>
			<option
value="priority">RST_TICKET_PRIORITY</option>
		</field>
		<field name="filter_order_Dir" type="list"
label="">
			<option
value="ASC">JGLOBAL_ORDER_ASCENDING</option>
			<option
value="DESC">JGLOBAL_ORDER_DESCENDING</option>
		</field>
		<field name="flagged" type="radio"
class="btn-group btn-group-yesno"
label="RST_SEARCH_FLAGGED" size="1"
default="0">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
	</fieldset>
</form>models/forms/signature.xml000064400000000401151163476000011676
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="signature" type="editor"
required="true" label="RST_SIGNATURE"
description="RST_YOUR_SIGNATURE_DESC" filter="html"
buttons="true" width="70%" />
	</fieldset>
</form>models/forms/staff.xml000064400000003150151163476000011004
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="user_id" type="user"
label="JGLOBAL_USERNAME" labelclass="control-label"
required="true" />
		<field name="group_id" type="groups"
label="RST_STAFF_GROUP"
description="RST_STAFF_GROUP_DESC" />
		<field name="department_id" type="departments"
default="0" label="RST_STAFF_DEPARTMENTS"
description="RST_STAFF_DEPARTMENTS_DESC"
multiple="multiple" required="true" />
		<field name="exclude_auto_assign" type="radio"
default="0" class="btn-group btn-group-yesno"
description="RST_STAFF_EXCLUDE_AUTO_ASSIGN_DESC"
label="RST_STAFF_EXCLUDE_AUTO_ASSIGN">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="can_delete_time_history" type="radio"
default="0" class="btn-group btn-group-yesno"
description="RST_STAFF_CAN_DELETE_TIME_HISTORY_DESC"
label="RST_STAFF_CAN_DELETE_TIME_HISTORY">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="can_delete_own_time_history"
showon="can_delete_time_history:0" type="radio"
default="0" class="btn-group btn-group-yesno"
description="RST_STAFF_CAN_DELETE_OWN_TIME_HISTORY_DESC"
label="RST_STAFF_CAN_DELETE_OWN_TIME_HISTORY">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="priority_id" type="priorities"
label="RST_STAFF_PRIORITY"
description="RST_STAFF_PRIORITY_DESC" all="true" />
		<field name="signature" type="editor"
label="RST_SIGNATURE" description="RST_SIGNATURE_DESC"
filter="raw" buttons="true" />
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/status.xml000064400000000657151163476000011235
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="name" type="text"
description="RST_STATUS_DESC" label="RST_STATUS"
required="true" size="64" />
		<field name="published" type="radio"
class="btn-group btn-group-yesno" label="JPUBLISHED"
size="1">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/submit.xml000064400000004275151163476000011215
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="submit_type" type="radio"
class="btn-group btn-group-yesno" default="1"
description="" label="">
			<option value="1">RST_SHORT_NEW_USER</option>
			<option
value="2">RST_SHORT_EXISTING_USER</option>
		</field>
		<field name="email" label="RST_YOUR_EMAIL"
description="RST_YOUR_EMAIL_DESC" type="text"
size="40" showon="submit_type:1" />
		<field name="alternative_email"
label="RST_ALTERNATIVE_EMAIL"
description="RST_ALTERNATIVE_EMAIL_DESC" type="text"
size="40" showon="submit_type:1" />
		<field name="name" label="RST_YOUR_NAME"
description="RST_YOUR_NAME_DESC" type="text"
size="40" showon="submit_type:1" />
		<field name="password" label="RST_YOUR_PASSWORD"
description="RST_YOUR_PASSWORD_DESC" type="password"
showon="submit_type:1" />
		<field name="customer_id"
label="RST_EXISTING_CUSTOMER"
description="RST_EXISTING_CUSTOMER_DESC"
type="rscustomer" size="40"
showon="submit_type:2" />
		<field name="department_id" type="departments"
default="0" please="true" published="true"
onchange="RSTicketsPro.changeDepartment();"
label="RST_TICKET_DEPARTMENT"
description="RST_TICKET_DEPARTMENT_DESC"
required="true" />
		<field name="subject" label="RST_TICKET_SUBJECT"
description="RST_TICKET_SUBJECT_DESC" type="subject"
required="true" />
		<field name="message" type="rseditor"
default="" rows="12" cols="80"
label="RST_TICKET_MESSAGE"
description="RST_TICKET_MESSAGE_DESC" required="true"
filter="JComponentHelper::filterText" width="70%"
/>
		<field name="priority_id" type="priorities"
default="0" please="true" published="true"
label="RST_TICKET_PRIORITY"
description="RST_TICKET_PRIORITY_DESC" required="true"
/>
		<field name="captcha" type="rscaptcha"
label="RST_TICKET_CAPTCHA"
description="RST_TICKET_CAPTCHA_DESC"
refresh_label="RST_REFRESH_CAPTCHA"
refresh_description="RST_REFRESH_CAPTCHA_DESC" />
		<field name="consent" type="checkboxes"
label="" description="">
			<option
value="1">RST_TICKET_CONSENT_SUBMIT</option>
		</field>
		<field name="files" type="rsuploads"
onclick="RSTicketsPro.addSubmitFile();"
label="RST_TICKET_ATTACHMENTS"
description="RST_TICKET_ATTACHMENTS_DESC" />
	</fieldset>
</form>models/forms/ticket.xml000064400000003717151163476000011175
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<field name="subject" label="RST_TICKET_SUBJECT"
type="text" size="40" />
	<field name="department_id" type="departments"
default="0" label="RST_TICKET_DEPARTMENT"
published="true"
onchange="RSTicketsPro.disableStaff();" />
	<field name="date" type="rsticketsprohtml"
label="RST_TICKET_DATE" escape="true" />
	<field name="code" type="rsticketsprohtml"
label="RST_TICKET_CODE" escape="true" />
	<field name="status_id" type="statuses"
default="0" label="RST_TICKET_STATUS"
published="true" />
	<field name="priority_id" type="priorities"
default="0" label="RST_TICKET_PRIORITY"
published="true" />
	<field name="customer_id" type="rscustomer"
label="RST_TICKET_CUSTOMER" />
	<field name="alternative_email"
label="RST_ALTERNATIVE_EMAIL" type="text"
size="40" />
	<field name="staff_id" type="staff"
unassigned="true" label="RST_TICKET_STAFF" />
	<field name="time_spent" label="RST_TIME_SPENT"
type="text" size="40" />
	<field name="search" label="RST_KNOWLEDGEBASE"
type="typeahead" class="input-xxlarge"
size="40" />
	<field name="message" type="rseditor"
default="" rows="12" cols="80"
label="RST_TICKET_MESSAGE"
description="RST_TICKET_MESSAGE_DESC" required="true"
filter="JComponentHelper::filterText"
class="input-xxlarge" />
	<field name="use_signature" type="radio"
default="1" label="RST_ATTACH_SIGNATURE"
class="btn-group btn-group-yesno">
		<option value="1">JYES</option>
		<option value="0">JNO</option>
	</field>
	<field name="reply_as_customer" type="radio"
default="0" label="RST_TICKET_REPLY_AS_CUSTOMER"
class="btn-group btn-group-yesno">
		<option value="1">JYES</option>
		<option value="0">JNO</option>
	</field>
	<field name="consent" type="checkboxes"
label="" description="">
		<option
value="1">RST_TICKET_CONSENT_SUBMIT</option>
	</field>
	<field name="files" type="rsuploads"
onclick="RSTicketsPro.addReplyFile();"
label="RST_TICKET_ATTACHMENTS"
description="RST_TICKET_ATTACHMENTS_DESC" />
</form>models/forms/ticketmessage.xml000064400000000535151163476000012535
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="params">
		<field name="message" type="rseditor"
default="" rows="12" cols="80"
label="RST_TICKET_MESSAGE"
description="RST_TICKET_MESSAGE_DESC" required="true"
filter="JComponentHelper::filterText"
class="input-xxlarge" />
		<field name="id" type="hidden" />
	</fieldset>
</form>models/forms/tickets.xml000064400000002351151163476000011351
0ustar00<?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset name="bulk">
		<field name="bulk_department_id"
type="departments" default="0"
label="RST_TICKET_DEPARTMENT"
onchange="RSTicketsPro.disableStaff(this,
document.getElementById('bulk_staff_id'));">
			<option
value="0">RST_DO_NOT_CHANGE_DEPARTMENT</option>
		</field>
		<field name="bulk_staff_id" type="staff"
default="-1" unassigned="true"
label="RST_TICKET_STAFF">
			<option
value="-1">RST_DO_NOT_CHANGE_ASSIGNMENT</option>
		</field>
		<field name="bulk_priority_id" type="priorities"
default="0" label="RST_TICKET_PRIORITY"
published="true">
			<option
value="0">RST_DO_NOT_CHANGE_PRIORITY</option>
		</field>
		<field name="bulk_status_id" type="statuses"
default="0" label="RST_TICKET_STATUS"
published="true">
			<option
value="0">RST_DO_NOT_CHANGE_STATUS</option>
		</field>
		<field name="bulk_notify" type="list"
default="0">
			<option value="0">RST_DO_NOT_NOTIFY</option>
			<option value="1">RST_NOTIFY_SELECTED</option>
		</field>
		<field name="bulk_delete" type="list"
default="0"
onchange="RSTicketsPro.disableBulk(this.value);">
			<option value="0">RST_DO_NOT_DELETE</option>
			<option value="1">RST_DELETE_SELECTED</option>
		</field>
	</fieldset>
</form>models/group.php000064400000002401151163476010007675
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelGroup extends JModelAdmin
{
	public function getTable($type = 'Groups', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.group',
'group', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.group.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	public function getRSTabs()
	{
		return new RsticketsproAdapterTabs('com-rsticketspro-group');
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('group.delete',
'com_rsticketspro');
	}
}models/groups.php000064400000003023151163476010010061 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelGroups extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'id'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		
		$query->select('*')
			->from('#__rsticketspro_groups');

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'name')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'name', $direction
= 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/history.php000064400000002257151163476010010253 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelHistory extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'date', 'ip', 'type'
			);
		}

		parent::__construct($config);
	}
	
	public function getId()
	{
		return JFactory::getApplication()->input->getInt('id');
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select('*')
			  ->from('#__rsticketspro_ticket_history')
			 
->where($db->qn('ticket_id').'='.$db->q($this->getId()))
			  ->order($db->qn($this->getState('list.ordering',
'date')).'
'.$db->escape($this->getState('list.direction',
'desc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'date', $direction
= 'desc')
	{
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/index.html000064400000000054151163476010010027
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>models/kbarticle.php000064400000004350151163476010010506
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbarticle extends JModelAdmin
{
	public function getTable($type = 'Kbcontent', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.kbarticle',
'kbarticle', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.kbarticle.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	public function getTicket()
	{
		$item = $this->getItem();
		if ($item->from_ticket_id)
		{
			$table = JTable::getInstance('Tickets',
'RsticketsproTable');
			if ($table->load($item->from_ticket_id))
			{
				return $table;
			}
			else
			{
				return false;
			}
		}

		return false;
	}
	
	protected function getReorderConditions($table)
	{
		return array(
			'category_id = '.(int) $table->category_id
		);
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('kbarticle.delete',
'com_rsticketspro');
	}

	protected function canEditState($record)
	{
		return
JFactory::getUser()->authorise('kbarticle.edit.state',
'com_rsticketspro');
	}
}models/kbarticles.php000064400000007543151163476010010700
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbarticles extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'a.name', 'c.name', 'a.hits',
'a.private', 'a.published', 'a.ordering',
'a.id', 'state', 'category_id',
'private'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search 	 = $this->getState('filter.search');
		$state 		 = $this->getState('filter.state');
		$private 	 = $this->getState('filter.private');
		$category_id = $this->getState('filter.category_id');
		
		$query->select($db->qn('a.id'))
			  ->select($db->qn('a.name'))
			  ->select($db->qn('a.category_id'))
			  ->select($db->qn('a.hits'))
			  ->select($db->qn('a.private'))
			  ->select($db->qn('a.published'))
			  ->select($db->qn('a.ordering'))
			  ->select($db->qn('c.name',
'category_name'))
			  ->from($db->qn('#__rsticketspro_kb_content',
'a'));
		
		// join categories
		$query->join('left',
$db->qn('#__rsticketspro_kb_categories', 'c') .
' ON (' . $db->qn('a.category_id') . '=' .
$db->qn('c.id') . ')');
		
		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('a.id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$search = $db->q('%'.str_replace(' ',
'%', $db->escape($search, true)).'%', false);

				$query->where('(' . $db->qn('a.name') .
' LIKE ' . $search . ') OR (' .
$db->qn('a.text') . ' LIKE ' . $search .
')');
			}
		}

		// searching for a category?
		if ($category_id !== '')
		{
			// let's search for all children
			if ($category_id == 0)
			{
				$categories = array($category_id);
			}
			else
			{
				$categories = $this->getAllChildren($category_id);
			}
			
			if (!is_null($category_id))
			{
				$query->where($db->qn('a.category_id').' IN
('.implode(',', $categories).')');
			}
		}
		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('a.published') . '=' .
$db->q($state));
		}

		if ($private != '')
		{
			$query->where($db->qn('a.private') . '=' .
$db->q($private));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'a.ordering')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		$query->order($db->qn('a.category_id'));
		
		return $query;
	}
	
	protected function populateState($ordering = 'a.ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));
		$this->setState('filter.private',
$this->getUserStateFromRequest($this->context.'.filter.private',
'filter_private'));
		$this->setState('filter.category_id',
$this->getUserStateFromRequest($this->context.'.filter.category_id',
'filter_category_id'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
	
	protected function getAllChildren($parent_id)
	{
		$db 	= $this->getDbo();
		$query 	= $db->getQuery(true);
		$children = array($parent_id);
		
		$query->select($db->qn('id'))
			  ->from('#__rsticketspro_kb_categories')
			  ->where($db->qn('parent_id') . '=' .
$db->q($parent_id));
		$db->setQuery($query);
		if ($ids = $db->loadColumn())
		{
			foreach ($ids as $id)
			{
				$children = array_merge($children, $this->getAllChildren($id));
			}
		}
		
		return $children;
	}
}models/kbcategories.php000064400000006351151163476010011213
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbcategories extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'private', 'published',
'ordering', 'id', 'state'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search 	= $this->getState('filter.search');
		$state 		= $this->getState('filter.state');
		$private 	= $this->getState('filter.private');

		$query->select('*')
			  ->from($db->qn('#__rsticketspro_kb_categories'));
		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$search = $db->q('%'.str_replace(' ',
'%', $db->escape($search, true)).'%', false);

				$query->where('(' . $db->qn('name') . '
LIKE ' . $search . ') OR (' .
$db->qn('description') . ' LIKE ' . $search .
')');
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('published') . '=' .
$db->q($state));
		}

		if ($private != '')
		{
			$query->where($db->qn('private') . '=' .
$db->q($private));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'ordering')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	public function getItems()
	{
		$listOrdering 	= $this->getState('list.ordering',
'ordering');
		$search 		= $this->getState('filter.search');
		if ($listOrdering == 'ordering' || $search != '')
		{
			// Load the list items.
			$query = $this->_getListQuery();
			$items = $this->_getList($query, 0, 0);
			$children = array();
			
			// first pass - collect children
			if ($items)
			{
				foreach ($items as $item)
				{
					$parent	= $item->parent_id;
					$item->parent = $parent;
					$item->title = '';
					$list = isset($children[$parent]) ? $children[$parent] : array();
					array_push($list, $item);
					$children[$parent] = $list;
				}
			}

			// second pass - get an indent list of the items
			$list = JHtml::_('menu.treerecurse', 0, '', array(),
$children, 9999, 0, 0);

			if ($this->getState('list.limit'))
			{
				$list = array_slice($list, $this->getStart(),
$this->getState('list.limit'));
			}
			
			return $list;
		}
		
		return parent::getItems();
	}
	
	protected function populateState($ordering = 'ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));
		$this->setState('filter.private',
$this->getUserStateFromRequest($this->context.'.filter.private',
'filter_private'));

		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/kbcategory.php000064400000013163151163476010010702
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbcategory extends JModelAdmin
{
	public function getTable($type = 'Kbcategories', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.kbcategory',
'kbcategory', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.kbcategory.data',
array());
		
		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	protected function getReorderConditions($table)
	{
		return array(
			'parent_id = '.(int) $table->parent_id
		);
	}
	
	public function save($data)
	{
		$files 		=
JFactory::getApplication()->input->files->get('jform',
null, 'raw');
		$doUpload 	= false;
		
		// before attempting to process any further, let's verify if the
upload worked
		if (isset($files['thumb']))
		{
			if ($files['thumb']['tmp_name'] &&
$files['thumb']['error'] == UPLOAD_ERR_OK)
			{
				// uploaded successfully
				// let's see if the extension is allowed...
				$ext =
strtolower(JFile::getExt($files['thumb']['name']));
				$allowed = array('jpg', 'jpeg', 'gif',
'png');
				if (!in_array($ext, $allowed))
				{
					$this->setError(JText::sprintf('RST_KB_CATEGORY_ICON_UPLOAD_EXTENSION_ERROR',
implode(', ', $allowed)));
					return false;
				}
				
				$doUpload = true;
			}
			elseif ($files['thumb']['error'] !=
UPLOAD_ERR_NO_FILE)
			{
				// error during upload!
				switch ($files['thumb']['error'])
				{
					case UPLOAD_ERR_INI_SIZE:
						$this->setError('The uploaded file exceeds the
upload_max_filesize directive in php.ini.');
					break;
					
					case UPLOAD_ERR_FORM_SIZE:
						$this->setError('The uploaded file exceeds the MAX_FILE_SIZE
directive that was specified in the HTML form.');
					break;
					
					case UPLOAD_ERR_PARTIAL:
						$this->setError('The uploaded file was only partially
uploaded.');
					break;
					
					case UPLOAD_ERR_NO_TMP_DIR:
						$this->setError('Missing a temporary folder.');
					break;
					
					case UPLOAD_ERR_CANT_WRITE:
						$this->setError('Failed to write file to disk.');
					break;
					
					case UPLOAD_ERR_EXTENSION:
						$this->setError('A PHP extension stopped the file
upload.');
					break;
				}
				
				return false;
			}
		}
		
		// get the current thumb's name & path
		if (!empty($data['id']))
		{
			$table = $this->getTable();
			$table->load($data['id']);
		}
		
		// remove the current thumb?
		if (!empty($data['delete_thumb']))
		{
			$data['thumb'] = '';
			
			if (!empty($data['id']))
			{
				$table->deleteThumb();
			}
		}
		
		$saved = parent::save($data);
		
		// upload the thumb here
		if ($saved && $doUpload)
		{
			$name = md5(uniqid($files['thumb']['name']));
			$id	  = $this->getState($this->getName().'.id');
			
			if (!JFile::upload($files['thumb']['tmp_name'],
RST_CATEGORY_THUMB_FOLDER.'/'.$name.'.'.$ext, false,
true))
			{
				$this->setError(JText::sprintf('RST_KB_CATEGORY_ICON_UPLOAD_ERROR_FOLDER',
RST_CATEGORY_THUMB_FOLDER));
				return false;
			}
			
			// remove the old thumbnail before saving a new one
			if (!empty($data['id']))
			{
				$table->deleteThumb();
			}
			
			// build thumbnail
			if (function_exists('imagecreatefromstring') &&
function_exists('imagescale'))
			{
				$file		= RST_CATEGORY_THUMB_FOLDER . '/' . $name .
'.' . $ext;
				$newWidth  	= 64;
				$quality   	= 90;
				$image  	= @imagecreatefromstring(file_get_contents($file));

				if (is_resource($image))
				{
					// If we're downsizing, IMG_BICUBIC produces better results
					if ($newWidth < imagesx($image))
					{
						$image = imagescale($image, $newWidth, -1, IMG_BICUBIC);
					}
					else
					{
						$image = imagescale($image, $newWidth);
					}

					if (is_resource($image))
					{
						imagejpeg($image, RST_CATEGORY_THUMB_FOLDER . '/small/' .
$name . '.jpg', $quality);

						// update the database entry
						$db 	= $this->getDbo();
						$query 	= $db->getQuery(true);
						$query->update('#__rsticketspro_kb_categories')
							->set($db->qn('thumb') . '=' .
$db->q($name . '.jpg'))
							->where($db->qn('id') . '=' .
$db->q($id));
						$db->setQuery($query)->execute();
					}

					unset($image);
				}
			}
		}
		
		return $saved;
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('kbcategory.delete',
'com_rsticketspro');
	}

	protected function canEditState($record)
	{
		return
JFactory::getUser()->authorise('kbcategory.edit.state',
'com_rsticketspro');
	}
}models/kbconvert.php000064400000003137151163476010010545 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbconvert extends JModelAdmin
{
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.kbconvert',
'kbconvert', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		$app 			= JFactory::getApplication();
		$modelTicket 	= $this->getInstance('Ticket',
'RsticketsproModel');
		$ticketId		= $app->input->getInt('ticket_id');
		$ticket			= $modelTicket->getTicket($ticketId);
		$data = array(
			'name'		=> $ticket->subject,
			'ticket_id' => $ticketId
		);
		
		return $data;
	}
	
	public function save($data)
	{
		$ticketId	 	= $data['ticket_id'];
		$modelTicket 	= $this->getInstance('Ticket',
'RsticketsproModel');
		$ticket		 	= $modelTicket->getTicket($ticketId);
		$ticketMessages = $modelTicket->getTicketMessages($ticketId, true);
		
		$params = (object) array(
			'name' 				=> $data['name'],
			'category_id' 		=> $data['category_id'],
			'publish_article' 	=> $data['publish_article'],
			'private' 			=> $data['private']
		);
		
		require_once
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/helpers/ticket.php';

		return RSTicketsProTicketHelper::convert($ticket, $ticketMessages,
$params);
	}
}models/kbresults.php000064400000002344151163476010010565 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbresults extends JModelLegacy
{
	public function getItems()
	{
		// Load the list items.
		$query = $this->getListQuery();

		try
		{
			$items = $this->_getList($query, 0, 10);
		}
		catch (RuntimeException $e)
		{
			$this->setError($e->getMessage());
			return false;
		}
		
		return $items;
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get the search string
		$value =
JFactory::getApplication()->input->get('filter_search',
'', 'raw');
		// escape it with extra characters
		$value = $db->escape($value, true);
		// just quote it
		$value = $db->q('%'.$value.'%', false);
		
		$query->select('*')
			  ->from($db->qn('#__rsticketspro_kb_content'))
			  ->where('('.$db->qn('name').' LIKE
'.$value.' OR '.$db->qn('text').' LIKE
'.$value.')')
			 
->where($db->qn('published').'='.$db->q(1))
			  ->order($db->qn('name'));
		return $query;
	}
}models/kbrule.php000064400000003561151163476010010035 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbrule extends JModelAdmin
{
	public function getTable($type = 'Kbrules', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.kbrule',
'kbrule', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.kbrule.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}
		else
		{
			// Emulate conditions so we can keep editing if we run into an error
			$table = $this->getTable();
			if ($table->bind($data))
			{
				$data['conditions'] = $table->conditions;
			}
		}

		return $data;
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('kbrule.delete',
'com_rsticketspro');
	}

	protected function canEditState($record)
	{
		return JFactory::getUser()->authorise('kbrule.edit.state',
'com_rsticketspro');
	}
}models/kbrules.php000064400000010576151163476010010224 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelKbrules extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'r.name', 'c.name', 'r.published',
'r.id', 'state'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		$state 	= $this->getState('filter.state');
		
		$query->select($db->qn('r.id'))
			  ->select($db->qn('r.category_id'))
			  ->select($db->qn('r.name'))
			  ->select($db->qn('r.published'))
			  ->select($db->qn('c.name',
'category_name'))
			  ->from($db->qn('#__rsticketspro_kb_rules',
'r'));
		
		// join categories
		$query->join('left',
$db->qn('#__rsticketspro_kb_categories', 'c').'
ON
('.$db->qn('r.category_id').'='.$db->qn('c.id').')');

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('r.id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('r.name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('r.published') . '=' .
$db->q($state));
		}
		// order by
		$query->order($db->qn($this->getState('list.ordering',
'r.name')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'r.name',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
	
	public function getDepartments()
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->qn('id'))
			->select($db->qn('name'))
			->from($db->qn('#__rsticketspro_departments'))
			->order($db->qn('ordering') . ' asc');
		if ($results = $this->_getList($query))
		{
			foreach ($results as $result)
			{
				$result->name = JText::_($result->name);
			}
		}
		
		return $results;
	}
	
	public function getPriorities()
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->qn('id'))
			->select($db->qn('name'))
			->from($db->qn('#__rsticketspro_priorities'))
			->order($db->qn('ordering') . ' asc');

		if ($results = $this->_getList($query))
		{
			foreach ($results as $result)
			{
				$result->name = JText::_($result->name);
			}
		}
		
		return $results;
	}
	
	public function getStatuses()
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->qn('id'))
			->select($db->qn('name'))
			->from($db->qn('#__rsticketspro_statuses'))
			->order($db->qn('ordering') . ' asc');

		if ($results = $this->_getList($query))
		{
			foreach ($results as $result)
			{
				$result->name = JText::_($result->name);
			}
		}
		
		return $results;
	}
	
	public function getCustomFields()
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select('*')
			->from($db->qn('#__rsticketspro_custom_fields'))
			->order($db->qn('department_id') . ' asc')
			->order($db->qn('ordering') . ' asc');

		return $this->_getList($query);
	}
	
	public function getCustomFieldValues()
	{
		$return = array();
		$db 	= JFactory::getDbo();
		$cfid 	=
JFactory::getApplication()->input->getInt('cfid');

		$query = $db->getQuery(true)
			->select($db->qn('values'))
			->from($db->qn('#__rsticketspro_custom_fields'))
			->where($db->qn('id') . ' = ' .
$db->q($cfid));

		if ($values = $db->setQuery($query)->loadResult())
		{
			$values = str_replace("\r\n", "\n", $values);
			$values = explode("\n", $values);
			foreach ($values as $value)
			{
				$tmp = new stdClass();
				$tmp->id = $tmp->name = $value;
				
				$return[] = $tmp;
			}
		}
		
		return $return;
	}
}models/note.php000064400000003163151163476010007514 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelNote extends JModelAdmin
{
	public function getTable($type = 'Ticketnotes', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.note',
'note', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		$form->setValue('ticket_id', null,
$this->getTicketId());

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$app  = JFactory::getApplication();
		$data =
$app->getUserState('com_rsticketspro.edit.note.data',
array());
		
		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	public function getTicketId()
	{
		return
JFactory::getApplication()->input->getInt('ticket_id');
	}
	
	protected function canDelete($record)
	{
		static $permissions;
		static $userId;
		if (is_null($permissions))
		{
			$permissions = RSTicketsProHelper::getCurrentPermissions();
		}
		if (is_null($userId))
		{
			$userId = JFactory::getUser()->id;
		}

		return ($permissions->delete_note && $record->user_id ==
$userId) || ($permissions->delete_note_staff &&
$record->user_id != $userId);
	}
}models/notes.php000064400000002226151163476010007676 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelNotes extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields'])) {
			$config['filter_fields'] = array(
				'date'
			);
		}

		parent::__construct($config);
	}
	
	public function getId()
	{
		return
JFactory::getApplication()->input->getInt('ticket_id');
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		$query->select('*')
			  ->from('#__rsticketspro_ticket_notes')
			 
->where($db->qn('ticket_id').'='.$db->q($this->getId()))
			  ->order($db->qn($this->getState('list.ordering',
'date')).'
'.$db->escape($this->getState('list.direction',
'desc')));
		
		return $query;
	}
	
	protected function populateState($ordering = null, $direction = null)
	{
		// List state information.
		parent::populateState('date', 'desc');
	}
}models/predefinedsearch.php000064400000004714151163476010012045
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelPredefinedsearch extends JModelAdmin
{
	public function getTable($type = 'Searches', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form =
$this->loadForm('com_rsticketspro.predefinedsearches',
'predefinedsearches', array('control' =>
'jform', 'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		if (!$form->getValue('id'))
		{
			$form->setFieldAttribute('update', 'disabled',
'true');
			$form->setFieldAttribute('update', 'filter',
'unset');
		}

		return $form;
	}
	
	public function save($data)
	{
		$model = $this->getInstance('Tickets',
'RsticketsproModel');

		if (empty($data['id']) || !empty($data['id'])
&& !empty($data['update']))
		{
			$data['params'] = array(
				'search' => $model->getState('filter.search',
''),
				'flagged' =>
$model->getState('filter.flagged', 0),
				'priority_id' =>
$model->getState('filter.priority_id', array()),
				'status_id' =>
$model->getState('filter.status_id', array()),
				'department_id' =>
$model->getState('filter.department_id', array()),
				'customer' =>
$model->getState('filter.customer', ''),
				'staff' => $model->getState('filter.staff',
''),
				'ordering' =>
$model->getState('list.ordering'),
				'direction' =>
$model->getState('list.direction')
			);
		}
		else
		{
			$data['params'] = null;
		}

		$data['user_id'] = JFactory::getUser()->id;
		
		return parent::save($data);
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.predefinedsearches.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	protected function getReorderConditions($table)
	{
		return array(
			'user_id = '.(int) $table->user_id
		);
	}
	
	protected function canEditState($record)
	{
		return $record->user_id == JFactory::getUser()->id;
	}
	
	protected function canDelete($record)
	{
		return $record->user_id == JFactory::getUser()->id;
	}
}models/predefinedsearches.php000064400000003660151163476010012374
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelPredefinedsearches extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'published', 'ordering',
'id'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		$state 	= $this->getState('filter.state');
		
		$query->select('*')
			->from('#__rsticketspro_searches')
			->where($db->qn('user_id') . '=' .
$db->q(JFactory::getUser()->get('id')));

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('published') . '=' .
$db->q($state));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'ordering')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/priorities.php000064400000003542151163476010010741
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelPriorities extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'published', 'ordering',
'id', 'state'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		$state 	= $this->getState('filter.state');
		
		$query->select('*')
			->from('#__rsticketspro_priorities');

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('published') . '=' .
$db->q($state));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'ordering')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));

		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/priority.php000064400000003450151163476010010427 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelPriority extends JModelAdmin
{
	public function getTable($type = 'Priorities', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.priority',
'priority', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.priority.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('priority.delete',
'com_rsticketspro');
	}

	protected function canEditState($record)
	{
		return JFactory::getUser()->authorise('priority.edit.state',
'com_rsticketspro');
	}
}models/reports.php000064400000077304151163476010010255 0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');


class RsticketsproModelReports extends JModelAdmin
{
	protected $_db;
	protected $_departments;
	protected $_department_names;
	protected $_staff_names;
	
	public $min = 0;
	public $avg = 0;
	public $max = 0;
	public $count = 0;
	public $total = 0;
	public $viewin = '';
	
	public function __construct() {
		parent::__construct();
		
		// large databases need lots of memory
		if ($limit = ini_get('memory_limit')) {
			if (substr($limit, -1) == 'M') {
				if ((int) $limit < 192) {
					ini_set('memory_limit', '192M');
				}
			}
		}
		
		$this->_db = JFactory::getDbo();
		
		$this->_db->setQuery("SET SQL_BIG_SELECTS=1");
		$this->_db->execute();
		
		JFactory::getLanguage()->load('plg_system_rsticketsproreports',
JPATH_ADMINISTRATOR);
		
		$this->_getDepartments();
		$this->_getStaff();
	}
	
	protected function _getDepartments() {
		$this->_db->setQuery('SELECT * FROM
'.$this->_db->qn('#__rsticketspro_departments').'
ORDER BY '.$this->_db->qn('ordering').' 
ASC');
		$this->_departments = $this->_db->loadObjectList();
		
		$this->_department_names = array();
		foreach ($this->_departments as $department)
			$this->_department_names[$department->id] =
JText::_($department->name);
	}
	
	protected function _getStaff() {
		$what = RSTicketsProHelper::getConfig('show_user_info');
		
		$this->_db->setQuery('SELECT
'.$this->_db->qn('s.user_id').',
'.$this->_db->qn('u.'.$what).' FROM
'.$this->_db->qn('#__rsticketspro_staff','s').'
LEFT JOIN
'.$this->_db->qn('#__users','u').' ON
'.$this->_db->qn('s.user_id').' =
'.$this->_db->qn('u.id').'');
		$staff_names = $this->_db->loadObjectList();
		
		foreach ($staff_names as $staff)
			$this->_staff_names[$staff->user_id] = $staff->{$what};
		
		$this->_staff_names[0] = JText::_('RST_UNASSIGNED');
	}
	
	
	public function getCountDepartments() {
		return count($this->_departments);
	}
	
	public function getCountStaff() {
		return count($this->_staff_names);
	}
	
	public function getDepartments() {
		return $this->_departments;
	}
	
	public function getStaff() {
		$what = RSTicketsProHelper::getConfig('show_user_info');
		$this->_db->setQuery('SELECT
'.$this->_db->qn('s').'.*,
'.$this->_db->qn('u.'.$what,'thealias').'
FROM
'.$this->_db->qn('#__rsticketspro_staff','s').'
LEFT JOIN
'.$this->_db->qn('#__users','u').' ON
'.$this->_db->qn('u.id').' =
'.$this->_db->qn('s.user_id').' ');
		$staff = $this->_db->loadObjectList();
		
		$unassigned = new stdClass();
		$unassigned->thealias = $unassigned->username =
$unassigned->name = $unassigned->email =
JText::_('RST_UNASSIGNED');
		$unassigned->user_id = '00'; // say hurray to Joomla!
changing how everything works for the millionth time!
		$staff[] = $unassigned;
		
		return $staff;
	}
	
	public function getPriority() {
		$this->_db->setQuery('SELECT * FROM
'.$this->_db->qn('#__rsticketspro_priorities').'
ORDER BY '.$this->_db->qn('ordering').'
ASC');
		return $this->_db->loadObjectList();
	}
	
	public function getReportData() {
		$input		= JFactory::getApplication()->input;
		$db			= JFactory::getDbo();
		
		$from		= $input->getString('from','');
		$to			= $input->getString('to','');
		$report		= $input->getString('report',''); 
		$filter 	= array();
		$where 		= '';
		$return 	= array();
		
		// Unit
		$unit = $input->getString('unit','');
		
		switch ($unit) {
			default:
			case 'day':
				$format = 'Y-m-d';
				$step 	= 86400;
			break;
			
			case 'month':
				$format = 'Y-m';
				$step 	= 86400*30;
			break;
			
			case 'year':
				$format = 'Y';
				$step 	= 86400*30*12;
			break;
			
			case 'quarter':
				$format = 'Y-m';
			break;
		}
		
		// From and To
		if ($from || $to) {
			$startDate = JFactory::getDate($from)->toSql();
			$stopDate  = JFactory::getDate($to)->toSql();
			
			if ($from && $to) {
				$filter['date'] = ' AND
('.$this->_db->qn('date').' >
'.$this->_db->q($startDate).' AND
'.$this->_db->qn('date').' <
'.$this->_db->q($stopDate).')';
				$where .= $filter['date'];
			} elseif ($from) {
				$filter['date'] = ' AND
'.$this->_db->qn('date').' >
'.$this->_db->q($startDate).'';
				$where .= $filter['date'];
			} elseif ($to) {
				$filter['date'] = ' AND
'.$this->_db->qn('date').' <
'.$this->_db->q($stopDate).'';
				$where .= $filter['date'];
			}
		}

		$departments =
$input->get('departments',array(),'array');
		$departments = array_map('intval', $departments);
		if (!empty($departments)) {
			$filter['department_id'] = ' AND
'.$this->_db->qn('department_id').' IN
('.implode(',', $departments).')';
			$where .= $filter['department_id'];
		}
		
		$staff = $input->get('staff',array(),'array');
		$staff = array_map('intval', $staff);
		if (!empty($staff)) {
			$filter['staff_id'] = ' AND
'.$this->_db->qn('staff_id').' IN
('.implode(',', $staff).')';
			$where .= $filter['staff_id'];
		}
		
		$priority =
$input->get('priority',array(),'array');
		$priority = array_map('intval', $priority);
		if (!empty($priority)) {
			$filter['priority_id'] = ' AND
'.$this->_db->qn('priority_id').' IN
('.implode(',', $priority).')';
			$where .= $filter['priority_id'];
		}
		
		$user_id = $input->getInt('user_id',0);
		if (!empty($user_id)) {
			$filter['customer_id'] = ' AND
'.$this->_db->qn('customer_id').' = '.(int)
$user_id;
			$where .= $filter['customer_id'];
		}
		
		// Fill the graph with dates
		if (!$from) {
			$query = $db->getQuery(true)
				->select('MAX('.$db->qn('date').')')
				->from($db->qn('#__rsticketspro_tickets'))
				->where('1 '.$where);
			$from = $db->setQuery($query)->loadResult();
		}
		
		if (!$to) {
			$query = $db->getQuery(true)
				->select('MIN('.$db->qn('date').')')
				->from($db->qn('#__rsticketspro_tickets'))
				->where('1 '.$where);
			$to = $db->setQuery($query)->loadResult();
		}
		
		if ($unit != 'quarter') {
			$startDate = JFactory::getDate($from)->toUnix();
			$stopDate  = JFactory::getDate($to)->toUnix();
			
			for ($date = $startDate; $date < $stopDate; $date = $date + $step) {
				if ($unit == 'quarter') {
					$format =
$this->getQuarter(JFactory::getDate($date)->format('m'));
					echo JFactory::getDate($date)->format('Y-m-d').'
=> '.$format.'<br />';
				}
				
				$return['units'][JFactory::getDate($date)->format($format)]
= JFactory::getDate($date)->format($format);
			}
		} else {
			$startDate =
JFactory::getDate($from)->format($this->getQuarter(JFactory::getDate($from)->format('m')));
			$stopDate =
JFactory::getDate($to)->format($this->getQuarter(JFactory::getDate($to)->format('m')));
			
			list($startYear, $startQuarter) = explode(' Q', $startDate);
			list($stopYear, $stopQuarter) = explode(' Q', $stopDate);
			
			for ($year = $startYear; $year <= $stopYear; $year++) {
				for ($quarter = 1; $quarter <= 4; $quarter++) {
					if (($year == $startYear && $quarter >= $startQuarter) ||
($year > $startYear && $year < $stopYear) || ($year ==
$stopYear && $quarter <= $stopQuarter)) {
						$return['units']["$year Q$quarter"] = "$year
Q$quarter";
					}
				}
			}
		}
		
		// ordering
		$orderby = ' ORDER BY
'.$this->_db->qn('date').' ASC';
		
		$viewby = $this->getViewBy();
		
		switch ($report)
		{
			// number of submitted tickets
			case 'report_1':
				// query
				$query = 'SELECT
'.$this->_db->qn('department_id').',
'.$this->_db->qn('date').' FROM
'.$this->_db->qn('#__rsticketspro_tickets').'
WHERE 1';
				$query = $query.$where.$orderby;
				$this->_db->setQuery($query);
				
				$tickets = $this->_db->loadObjectList();
				
				if (empty($departments)) {
					foreach ($departments as $department) {
						$departments[] = $id;
					}
				}
				
				foreach ($departments as $department) {
					$department = $this->getDepartmentName($department);
					$return['departments'][$department] = array();
				}
				
				foreach ($tickets as $ticket) {
					if ($unit == 'quarter')
						$format =
$this->getQuarter(JFactory::getDate($ticket->date)->format('m'));
					
					$date = JFactory::getDate($ticket->date)->format($format);
					$department = $this->getDepartmentName($ticket->department_id);
					@$return['units'][$date] = $date;
					@$return['departments'][$department][$date] += 1;
					@$return['totals'][$date] += 1;
					
					unset($ticket);
				}
				
				if (!empty($return['totals'])) {
					$this->min = $this->max = max($return['totals']);
					
					foreach ($return['units'] as $date) {
						foreach ($departments as $department) {
							$department = $this->getDepartmentName($department);
							if (empty($return['departments'][$department][$date])) {
								$return['departments'][$department][$date] = 0;
								if (empty($return['totals'][$date])) {
									$return['totals'][$date] = 0;
								}
							}
						}
						
						// min
						if (!empty($return['totals'][$date]))
							$this->min = min($this->min,
$return['totals'][$date]);
					}
					
					foreach ($return['departments'] as $return_department =>
$return_values)
						ksort($return['departments'][$return_department]);
					
					// total
					$this->total = array_sum($return['totals']);
				
					// avg
					$this->avg =
floor(array_sum($return['totals'])/count($return['totals']));
				}
			break;
			
			// ticket solving time
			case 'report_2':
				// select
				$select = $viewby == 'department' ? 'department_id'
: 'staff_id';
				
				// query
				$query = 'SELECT
UNIX_TIMESTAMP('.$this->_db->qn('last_reply').')
- UNIX_TIMESTAMP('.$this->_db->qn('date').') AS
diff, '.$this->_db->qn($select).',
'.$this->_db->qn('date').' FROM
'.$this->_db->qn('#__rsticketspro_tickets').'
WHERE '.$this->_db->qn('status_id').' = 2';
				$query = $query.$where.$orderby;
				$this->_db->setQuery($query);
				$tickets = $this->_db->loadObjectList();
				
				$this->viewin = $input->getInt('viewin');
				if (!$this->viewin)
					$this->viewin = 60;
				
				if ($viewby == 'department') {
					if (empty($departments)) {
						foreach ($this->_department_names as $id => $name) {
							$departments[] = $id;
						}	
					}
					
					foreach ($departments as $department) {
						$department = $this->getDepartmentName($department);
						$return['viewby'][$department] = array();
					}
				}
				
				if ($viewby == 'staff') {
					if (empty($staff) && $viewby == 'staff') {
						foreach ($this->_staff_names as $id => $name) {
							$staff[] = $id;
						}
					}
					
					foreach ($staff as $staff_id) {
						$staff_id = $this->getStaffName($staff_id);
						$return['viewby'][$staff_id] = array();
					}
				}
				
				foreach ($tickets as $ticket) {
					$ticket->diff = $ticket->diff / $this->viewin;
					
					if ($unit == 'quarter')
						$format =
$this->getQuarter(JFactory::getDate($ticket->date)->format('m'));
					
					$date = JFactory::getDate($ticket->date)->format($format);
						
					$viewby_unit = $viewby == 'department' ?
$this->getDepartmentName($ticket->department_id) :
$this->getStaffName($ticket->staff_id);
					@$return['units'][$date] = $date;
					if (empty($return['viewby'][$viewby_unit][$date]))
						$return['viewby'][$viewby_unit][$date] = $ticket->diff;
					else
						$return['viewby'][$viewby_unit][$date] =
($return['viewby'][$viewby_unit][$date] + $ticket->diff) / 2;
						
					if (empty($return['totals'][$date]))
						$return['totals'][$date] = $ticket->diff / 2;
					else
						$return['totals'][$date] =
($return['totals'][$date] + $ticket->diff) / 2;
					
					unset($ticket);
				}
				
				if (!empty($return['totals'])) {
					// max
					$this->min = $this->max = max($return['totals']);
				
					foreach ($return['units'] as $date) {
						if ($viewby == 'department')
							foreach ($departments as $department) {
								$department = $this->getDepartmentName($department);
								if (empty($return['viewby'][$department][$date])) {
									$return['viewby'][$department][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
									
								}
							}
						
						if ($viewby == 'staff')
							foreach ($staff as $staff_id) {
								$staff_id = $this->getStaffName($staff_id);
								if (empty($return['viewby'][$staff_id][$date])) {
									$return['viewby'][$staff_id][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
								}
							}
						
						// min
						if (!empty($return['totals'][$date]))
							$this->min = min($this->min,
$return['totals'][$date]);
					}
					
					foreach ($return['viewby'] as $return_viewby =>
$return_values)
						ksort($return['viewby'][$return_viewby]);
					
					// total
					$this->total = count($return['totals']);
					
					// avg
					$this->avg =
floor(array_sum($return['totals'])/count($return['totals']));
				}
			break;
			
			// number of replies
			case 'report_3':
				// select
				$select = $viewby == 'department' ? 'department_id'
: 'staff_id';
				
				// query
				$query = 'SELECT
'.$this->_db->qn('t.'.$select).',
'.$this->_db->qn('m.date').' FROM
'.$this->_db->qn('#__rsticketspro_ticket_messages','m').'
LEFT JOIN
'.$this->_db->qn('#__rsticketspro_tickets','t').'
ON  '.$this->_db->qn('m.ticket_id').' =
'.$this->_db->qn('t.id').' WHERE 1';
				
				if (!empty($filter['date'])) {
					$filter['date'] =
str_replace($this->_db->qn('date'),
$this->_db->qn('m.date'), $filter['date']);
					$where = " ".implode(" ", $filter);
				}
				
				$orderby = str_replace($this->_db->qn('date'),
$this->_db->qn('m.date'), $orderby);
				$query = $query.$where.$orderby;
				$this->_db->setQuery($query);
				$tickets = $this->_db->loadObjectList();
				
				if ($viewby == 'department') {
					if (empty($departments))
						foreach ($this->_department_names as $id => $name)
							$departments[] = $id;
					foreach ($departments as $department) {
						$department = $this->getDepartmentName($department);
						$return['viewby'][$department] = array();
					}
				}
				
				if ($viewby == 'staff') {
					if (empty($staff) && $viewby == 'staff')
						foreach ($this->_staff_names as $id => $name)
							$staff[] = $id;
					foreach ($staff as $staff_id) {
						$staff_id = $this->getStaffName($staff_id);
						$return['viewby'][$staff_id] = array();
					}
				}
				
				foreach ($tickets as $ticket) {
					if ($unit == 'quarter')
						$format =
$this->getQuarter(JFactory::getDate($ticket->date)->format('m'));
					
					$date = JFactory::getDate($ticket->date)->format($format);
					
					$viewby_unit = $viewby == 'department' ?
$this->getDepartmentName($ticket->department_id) :
$this->getStaffName($ticket->staff_id);
					@$return['units'][$date] = $date;
					@$return['viewby'][$viewby_unit][$date] += 1;
					@$return['totals'][$date] += 1;
					
					unset($ticket);
				}
				
				if (!empty($return['totals'])) {
					// max
					$this->min = $this->max = max($return['totals']);
					
					foreach ($return['units'] as $date) {
						if ($viewby == 'department')
							foreach ($departments as $department) {
								$department = $this->getDepartmentName($department);
								if (empty($return['viewby'][$department][$date])) {
									$return['viewby'][$department][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
									
								}
							}
						
						if ($viewby == 'staff')
							foreach ($staff as $staff_id) {
								$staff_id = $this->getStaffName($staff_id);
								if (empty($return['viewby'][$staff_id][$date])) {
									$return['viewby'][$staff_id][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
									
								}
							}
						
						// min
						if (!empty($return['totals'][$date]))
							$this->min = min($this->min,
$return['totals'][$date]);
					}
					
					foreach ($return['viewby'] as $return_viewby =>
$return_values)
						ksort($return['viewby'][$return_viewby]);
					
					// total
					$this->total = array_sum($return['totals']);
				
					// avg
					$this->avg =
floor(array_sum($return['totals'])/count($return['totals']));
				}
			break;
			
			// feedback
			case 'report_4':
				// select
				$select = $viewby == 'department' ? 'department_id'
: 'staff_id';
				
				// query
				$query = 'SELECT '.$this->_db->qn($select).',
'.$this->_db->qn('feedback').',
'.$this->_db->qn('date').' FROM
'.$this->_db->qn('#__rsticketspro_tickets').'
WHERE '.$this->_db->qn('status_id').' = 2';
				$query = $query.$where.$orderby;
				$this->_db->setQuery($query);
				$tickets = $this->_db->loadObjectList();
				
				if ($viewby == 'department') {
					if (empty($departments))
						foreach ($this->_department_names as $id => $name)
							$departments[] = $id;
					foreach ($departments as $department) {
						$department = $this->getDepartmentName($department);
						$return['viewby'][$department] = array();
					}
				}
				
				if ($viewby == 'staff') {
					if (empty($staff) && $viewby == 'staff')
						foreach ($this->_staff_names as $id => $name)
							$staff[] = $id;
					foreach ($staff as $staff_id) {
						$staff_id = $this->getStaffName($staff_id);
						$return['viewby'][$staff_id] = array();
					}
				}
				
				foreach ($tickets as $ticket) {
					if ($unit == 'quarter')
						$format =
$this->getQuarter(JFactory::getDate($ticket->date)->format('m'));
					
					$date = JFactory::getDate($ticket->date)->format($format);
						
					$viewby_unit = $viewby == 'department' ?
$this->getDepartmentName($ticket->department_id) :
$this->getStaffName($ticket->staff_id);
					@$return['units'][$date] = $date;
					if (empty($return['viewby'][$viewby_unit][$date]))
						$return['viewby'][$viewby_unit][$date] =
$ticket->feedback;
					else
						$return['viewby'][$viewby_unit][$date] =
($return['viewby'][$viewby_unit][$date] + $ticket->feedback) /
2;
						
					if (empty($return['totals'][$date]))
						$return['totals'][$date] = $ticket->feedback / 2;
					else
						$return['totals'][$date] =
($return['totals'][$date] + $ticket->feedback) / 2;
					
					unset($ticket);
				}
				
				if (!empty($return['totals'])) {
					// max
					$this->min = $this->max = max($return['totals']);
					
					foreach ($return['units'] as $date) {
						if ($viewby == 'department')
							foreach ($departments as $department) {
								$department = $this->getDepartmentName($department);
								if (empty($return['viewby'][$department][$date])) {
									$return['viewby'][$department][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
									
								}
							}
						
						if ($viewby == 'staff')
							foreach ($staff as $staff_id) {
								$staff_id = $this->getStaffName($staff_id);
								if (empty($return['viewby'][$staff_id][$date])) {
									$return['viewby'][$staff_id][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
									
								}
							}
						
						// min
						if (!empty($return['totals'][$date]))
							$this->min = min($this->min,
$return['totals'][$date]);
					}
					
					foreach ($return['viewby'] as $return_viewby =>
$return_values)
						ksort($return['viewby'][$return_viewby]);
					
					// total
					$this->total = count($return['totals']);
				
					// avg
					$this->avg =
floor(array_sum($return['totals'])/count($return['totals']));
				}
			break;
			
			// response time
			case 'report_5':
				// select
				$select = $viewby == 'department' ? 'department_id'
: 'staff_id';
				
				// query
				$query = 'SELECT
'.$this->_db->qn('t.'.$select).',
UNIX_TIMESTAMP('.$this->_db->qn('m2.date').') -
UNIX_TIMESTAMP('.$this->_db->qn('m.date').') AS
diff, '.$this->_db->qn('m.id').',
'.$this->_db->qn('m2.id').',
'.$this->_db->qn('m.date').' FROM
'.$this->_db->qn('#__rsticketspro_ticket_messages','m').',
'.$this->_db->qn('#__rsticketspro_ticket_messages','m2').'
LEFT JOIN
'.$this->_db->qn('#__rsticketspro_tickets','t').'
ON '.$this->_db->qn('ticket_id').' =
'.$this->_db->qn('t.id').' WHERE
'.$this->_db->qn('m.ticket_id').' =
'.$this->_db->qn('m2.ticket_id').' AND
'.$this->_db->qn('m2.date').' >
'.$this->_db->qn('m.date').' AND
'.$this->_db->qn('m.user_id').' !=
'.$this->_db->qn('m2.user_id').'';
				
				if (!empty($filter['date'])) {
					$filter['date'] =
str_replace($this->_db->qn('date'),
$this->_db->qn('m.date'), $filter['date']);
					$where = " ".implode(" ", $filter);
				}
				
				$orderby = str_replace($this->_db->qn('date'),
$this->_db->qn('m.date'), $orderby);
				$groupby = ' GROUP BY
'.$this->_db->qn('m.ticket_id').' ';
				$query = $query.$where.$groupby.$orderby;
				$this->_db->setQuery($query);
				$tickets = $this->_db->loadObjectList();
				
				$this->viewin = $input->getInt('viewin');
				if (!$this->viewin)
					$this->viewin = 60;
					
				if ($viewby == 'department') {
					if (empty($departments))
						foreach ($this->_department_names as $id => $name)
							$departments[] = $id;
					foreach ($departments as $department) {
						$department = $this->getDepartmentName($department);
						$return['viewby'][$department] = array();
					}
				}
				if ($viewby == 'staff') {
					if (empty($staff) && $viewby == 'staff')
						foreach ($this->_staff_names as $id => $name)
							$staff[] = $id;
					foreach ($staff as $staff_id) {
						$staff_id = $this->getStaffName($staff_id);
						$return['viewby'][$staff_id] = array();
					}
				}
				
				foreach ($tickets as $ticket) {
					$ticket->diff = $ticket->diff / $this->viewin;
					
					if ($unit == 'quarter')
						$format =
$this->getQuarter(JFactory::getDate($ticket->date)->format('m'));
					
					$date = JFactory::getDate($ticket->date)->format($format);
						
					$viewby_unit = $viewby == 'department' ?
$this->getDepartmentName($ticket->department_id) :
$this->getStaffName($ticket->staff_id);
					@$return['units'][$date] = $date;
					if (empty($return['viewby'][$viewby_unit][$date]))
						$return['viewby'][$viewby_unit][$date] = $ticket->diff;
					else
						$return['viewby'][$viewby_unit][$date] =
($return['viewby'][$viewby_unit][$date] + $ticket->diff) / 2;
						
					if (empty($return['totals'][$date]))
						$return['totals'][$date] = $ticket->diff / 2;
					else
						$return['totals'][$date] =
($return['totals'][$date] + $ticket->diff) / 2;
					
					unset($ticket);
				}
				
				if (!empty($return['totals'])) {
					// max
					$this->min = $this->max = max($return['totals']);
					
					foreach ($return['units'] as $date) {
						if ($viewby == 'department')
							foreach ($departments as $department) {
								$department = $this->getDepartmentName($department);
								if (empty($return['viewby'][$department][$date])) {
									$return['viewby'][$department][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
								}
							}
						
						if ($viewby == 'staff')
							foreach ($staff as $staff_id) {
								$staff_id = $this->getStaffName($staff_id);
								if (empty($return['viewby'][$staff_id][$date])) {
									$return['viewby'][$staff_id][$date] = 0;
									if (empty($return['totals'][$date]))
										$return['totals'][$date] = 0;
								}
							}
						
						// min
						if (!empty($return['totals'][$date]))
							$this->min = min($this->min,
$return['totals'][$date]);
					}
					
					foreach ($return['viewby'] as $return_viewby =>
$return_values)
						ksort($return['viewby'][$return_viewby]);
					
					// total
					$this->total = array_sum($return['totals']);
				
					// avg
					$this->avg =
floor(array_sum($return['totals'])/count($return['totals']));
				}
			break;
			
			// assigned tickets
			case 'report_6':
				// query
				$query = 'SELECT
'.$this->_db->qn('staff_id').',
'.$this->_db->qn('date').' FROM
'.$this->_db->qn('#__rsticketspro_tickets').'
WHERE 1';
				$query = $query.$where.$orderby;
				$this->_db->setQuery($query);
				$tickets = $this->_db->loadObjectList();
				
				if (empty($staff))
					foreach ($this->_staff_names as $id => $name)
						$staff[] = $id;
				foreach ($staff as $staff_id) {
					$staff_id = $this->getStaffName($staff_id);
					$return['staff'][$staff_id] = array();
				}
				
				foreach ($tickets as $ticket) {
					if ($unit == 'quarter')
						$format =
$this->getQuarter(JFactory::getDate($ticket->date)->format('m'));
					
					$date = JFactory::getDate($ticket->date)->format($format);
					
					$staff_name = $this->getStaffName($ticket->staff_id);
					@$return['units'][$date] = $date;
					@$return['staff'][$staff_name][$date] += 1;
					@$return['totals'][$date] += 1;
					
					unset($ticket);
				}
				
				if (!empty($return['totals'])) {
					// max
					$this->min = $this->max = max($return['totals']);
					foreach ($return['units'] as $date) {	
						foreach ($staff as $staff_id) {
							$staff_id = $this->getStaffName($staff_id);
							if (empty($return['staff'][$staff_id][$date])) {
								$return['staff'][$staff_id][$date] = 0;
								if (empty($return['totals'][$date]))
									$return['totals'][$date] = 0;
							}
						}
						
						// min
						if (!empty($return['totals'][$date]))
							$this->min = min($this->min,
$return['totals'][$date]);
					}
					
					foreach ($return['staff'] as $return_staff =>
$return_values)
						ksort($return['staff'][$return_staff]);
					
					// total
					$this->total = array_sum($return['totals']);
				
					// avg
					$this->avg =
floor(array_sum($return['totals'])/count($return['totals']));
				}
			break;
		}
		
		unset($return['totals']);
		return $return;
	}
	
	public function getDepartmentName($id) {
		return @$this->_department_names[$id];
	}
	
	public function getStaffName($id) {
		return @$this->_staff_names[$id];
	}
	
	public function getQuarter($m) {
		$q = (int)floor($m / 3.1) + 1;
		return "Y Q$q";
	}
	
	public function getMin() {
		$unit =
JFactory::getApplication()->input->getString('unit','');
		return $this->getNumberFormat($this->min).'
'.$this->getViewIn().' '.' /
'.JText::_('RST_'.$unit);
	}
	
	public function getAvg() {
		$unit =
JFactory::getApplication()->input->getString('unit','');
		return $this->getNumberFormat($this->avg).'
'.$this->getViewIn().' '.' /
'.JText::_('RST_'.$unit);
	}
	
	public function getMax() {
		$unit =
JFactory::getApplication()->input->getString('unit','');
		return $this->getNumberFormat($this->max).'
'.$this->getViewIn().' '.' /
'.JText::_('RST_'.$unit);
	}
	
	public function getTotal() {
		return $this->getNumberFormat($this->total);
	}
	
	public function getNumberFormat($number) {
		return number_format($number, 2, '.', '');
	}
	
	public function getViewIn() {
		$report =
JFactory::getApplication()->input->getString('report','');
		
		switch ($report) {
			case 'report_1':
			case 'report_6':
				return JText::_('RST_TICKETS');
			break;
			
			case 'report_2':
			case 'report_5':
				switch ($this->viewin) {
					default:
					case 60:
						return JText::_('RST_MINUTES');
					break;
					
					case 3600:
						return JText::_('RST_HOURS');
					break;
					
					case 86400:
						return JText::_('RST_DAYS');
					break;
				}
			break;
			
			case 'report_3':
				return JText::_('RST_TICKET_REPLIES');
			break;
			
			case 'report_4':
				return JText::_('RST_STARS');
			break;
		}
	}
	
	public function getViewBy() {
		return
JFactory::getApplication()->input->getString('viewby','');
	}
	
	public function getIE() {
		if (preg_match("#MSIE#i",
$_SERVER['HTTP_USER_AGENT']) && !preg_match("#MSIE
9#", $_SERVER['HTTP_USER_AGENT']))
			return true;
		
		return false;
	}
	
	protected function getColor($i) {
		$colors = array('#3366FF', '#6633FF',
'#CC33FF', '#FF33CC', '#33CCFF',
'#003DF5', '#002EB8', '#FF3366',
'#33FFCC', '#B88A00', '#F5B800',
'#FF6633', '#33FF66', '#66FF33',
'#CCFF33', '#FFCC33', '#002080',
'#200080', '#600080', '#800060',
'#006080', '#002FBD', '#003EFA',
'#800020', '#008060', '#FABB00',
'#BD8E00', '#802000', '#008020',
'#208000', '#608000', '#806000');
		
		if ($i > count($colors) - 1) {
			$t = floor($i / (count($colors) - 1));
			$i = floor($i - $t);
		}
		
		return $colors[$i];
	}
	
	public function getRSPlain()
	{
		return new
RsticketsproAdapterPlain('com-rsticketspro-reports');
	}
	
	public function getOptions()
	{
		return array('time_period' =>
JText::_('RST_REPORTS_TIME_PERIOD'), 
			'department' =>
JText::_('RST_REPORTS_DEPARTMENT'), 
			'staff' => JText::_('RST_REPORTS_STAFF'), 
			'customer' => JText::_('RST_REPORTS_CUSTOMER'), 
			'priority' => JText::_('RST_REPORTS_PRIORITY')
		);
	}

	protected function escape($value)
	{
		return htmlspecialchars($value, ENT_COMPAT, 'utf-8');
	}

    public function getForm($data = array(), $loadData = true)
    {
        // Get the form.
        $form = $this->loadForm('com_rsticketspro.reports',
'reports', array('control' => '',
'load_data' => $loadData));

        if (empty($form))
        {
            return false;
        }

        // Departments
        $departments = $this->getDepartments();
        $xmlDepartments = '<fieldset name="departments"
label="'.JText::_('RST_REPORTS_DEPARTMENT').'">';
        foreach ($departments as $i => $department) {
            // add the department field
            $xmlDepartments .= '<field
name="departments[]" id="departments'.$i.'"
type="checkbox"
label="'.$this->escape($department->name).'"
description="" class="checkbox inline"
labelclass="checkbox inline"
value="'.$department->id.'"
default="'.$department->id.'"
checked="true" />';

            // add the proper color field
            $default = $this->getColor($i);
            $xmlDepartments .= '<field
name="color_department_'.$i.'" type="color"
description="" label=""
default="'.$this->escape($default).'" />';

        }
        $xmlDepartments .= '</fieldset>';
        $xmlDepartments = new SimpleXMLElement($xmlDepartments);
        $form->setField($xmlDepartments);

        // Staff
        $staff = $this->getStaff();
        $xmlStaff = '<fieldset name="staff"
label="'.JText::_('RST_REPORTS_STAFF').'">';
        foreach ($staff as $i => $person) {
            // add the staff field
            $xmlStaff .= '<field name="staff[]"
id="staff'.$i.'" type="checkbox"
label="'.$this->escape($person->thealias).'"
description="" class="checkbox inline"
labelclass="checkbox inline"
value="'.$person->user_id.'"
default="'.$person->user_id.'"
checked="true" />';

            // add the proper color field
            $default = $this->getColor($i);
            $xmlStaff .= '<field
name="color_staff_'.$i.'" type="color"
description="" label=""
default="'.$this->escape($default).'" />';
        }
        $xmlStaff .= '</fieldset>';
        $xmlStaff = new SimpleXMLElement($xmlStaff);
        $form->setField($xmlStaff);

        // Priority
        $priorites 	= $this->getPriority();

        $options	= '';
        $checked	= array();
        foreach ($priorites as $priority) {
            $options .= '<option
value="'.$priority->id.'">'.$this->escape($priority->name).'</option>';
            $checked[] = $priority->id;
        }

        $element = new SimpleXMLElement('<fieldset
name="priority"
label="'.JText::_('RST_REPORTS_PRIORITY').'"><field
name="priority" type="checkboxes" label=""
description="" class="checkbox inline"
checked="'.implode(',',
$checked).'">'.$options.'</field></fieldset>');
        $form->setField($element);

        return $form;
    }

    protected function loadFormData()
    {
        return array();
    }
}models/rsticketspro.php000064400000007041151163476010011302
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelRsticketspro extends JModelLegacy
{
	public function getCode()
	{
		return
RSTicketsProConfig::getInstance()->get('global_register_code');
	}

	public function getKbbuttons()
	{
		JFactory::getLanguage()->load('com_rsticketspro.sys',
JPATH_ADMINISTRATOR);

		$buttons = array(
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=kbcategories'),
				'icon' => 'briefcase',
				'text' =>
JText::_('COM_RSTICKETSPRO_KB_CATEGORIES'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=kbarticles'),
				'icon' => 'doc-text',
				'text' =>
JText::_('COM_RSTICKETSPRO_KB_ARTICLES'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=kbrules'),
				'icon' => 'magic',
				'text' =>
JText::_('COM_RSTICKETSPRO_KB_CONVERSION_RULES'),
				'access' => true,
				'target' => ''
			)
		);

		return $buttons;
	}
	
	public function getButtons()
	{
		JFactory::getLanguage()->load('com_rsticketspro.sys',
JPATH_ADMINISTRATOR);
		
		$buttons = array(
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=tickets'),
				'icon' => 'clipboard',
				'text' =>
JText::_('COM_RSTICKETSPRO_MANAGE_TICKETS'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=departments'),
				'icon' => 'folder',
				'text' =>
JText::_('COM_RSTICKETSPRO_DEPARTMENTS'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=groups'),
				'icon' => 'users',
				'text' => JText::_('COM_RSTICKETSPRO_GROUPS'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=staffs'),
				'icon' => 'user',
				'text' =>
JText::_('COM_RSTICKETSPRO_STAFF_MEMBERS'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=priorities'),
				'icon' => 'chart-bar',
				'text' =>
JText::_('COM_RSTICKETSPRO_PRIORITIES'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=statuses'),
				'icon' => 'arrows-ccw',
				'text' =>
JText::_('COM_RSTICKETSPRO_STATUSES'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=emails'),
				'icon' => 'mail',
				'text' =>
JText::_('COM_RSTICKETSPRO_EMAIL_MESSAGES'),
				'access' => true,
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('index.php?option=com_rsticketspro&view=configuration'),
				'icon' => 'cogs',
				'text' =>
JText::_('COM_RSTICKETSPRO_CONFIGURATION'),
				'access' =>
JFactory::getUser()->authorise('core.admin',
'com_rsticketspro'),
				'target' => ''
			),
			array(
				'link' =>
JRoute::_('https://www.rsjoomla.com/support.html'),
				'icon' => 'lifebuoy',
				'text' => JText::_('RST_GET_SUPPORT'),
				'access' => true,
				'target' => '_blank'
			)
		);
		
		JFactory::getApplication()->triggerEvent('onAfterTicketsOverview',
array(array('buttons' => &$buttons)));
		
		return $buttons;
	}
}models/search.php000064400000004556151163476010010023 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelSearch extends JModelAdmin
{
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.search',
'search', array('control' => false,
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		$permissions = RSTicketsProHelper::getCurrentPermissions();
		$isStaff = RSTicketsProHelper::isStaff();

		if (!$isStaff || !$permissions || !$permissions->see_other_tickets)
		{
			$form->removeField('staff');
		}

		if (!$isStaff)
		{
			$form->removeField('customer');
		}

		if (JFactory::getApplication()->isClient('site') &&
!$this->getAdvanced())
		{
			$form->removeField('department_id');
			$form->removeField('priority_id');
			$form->removeField('status_id');
			$form->removeField('filter_order');
			$form->removeField('filter_order_Dir');
		}

		return $form;
	}

	protected function loadFormData()
	{
		$model = $this->getInstance('Tickets',
'RsticketsproModel');

		return array(
			'filter_search' =>
$model->getState('filter.search', ''),
			'flagged' =>
$model->getState('filter.flagged', 0),
			'priority_id' =>
$model->getState('filter.priority_id', array()),
			'status_id' =>
$model->getState('filter.status_id', array()),
			'department_id' =>
$model->getState('filter.department_id', array()),
			'customer' =>
$model->getState('filter.customer', ''),
			'staff' => $model->getState('filter.staff',
''),
			'filter_order' =>
$model->getState('list.ordering'),
			'filter_order_Dir' =>
$model->getState('list.direction')
		);
	}

	public function getAdvanced()
	{
		return JFactory::getApplication()->input->get('advanced',
false, 'bool');
	}

	public function getItemId()
	{
		$params =
JFactory::getApplication()->getParams('com_rsticketspro');

		if (RSTicketsProHelper::isStaff() &&
$params->get('staff_itemid'))
		{
			return '&Itemid='.(int)
$params->get('staff_itemid');
		}

		if (!RSTicketsProHelper::isStaff() &&
$params->get('customer_itemid'))
		{
			return '&Itemid='.(int)
$params->get('customer_itemid');
		}

		return '';
	}
}models/signature.php000064400000002717151163476010010554 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelSignature extends JModelAdmin
{
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.signature',
'signature', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		$data = array(
			'signature' => RSTicketsProHelper::getSignature(null,
true)
		);
		
		return $data;
	}
	
	public function save($data)
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		$userId	= JFactory::getUser()->id;
		
		$query->update($db->qn('#__rsticketspro_staff'))
			  ->set($db->qn('signature') . '=' .
$db->q($data['signature']))
			  ->where($db->qn('user_id') . '=' .
$db->q($userId));
		return $db->setQuery($query)->execute();
	}
	
	public function getIsAssigned()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		$userId	= JFactory::getUser()->id;
		
		$query->select($db->qn('id'))
			  ->from($db->qn('#__rsticketspro_staff'))
			  ->where($db->qn('user_id') . '=' .
$db->q($userId));
		$db->setQuery($query);
		return $db->loadResult();
	}
}models/staff.php000064400000002451151163476010007651 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelStaff extends JModelAdmin
{
	public function getTable($type = 'Staff', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.staff',
'staff', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.staff.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		if (!empty($data->department_id) &&
!is_array($data->department_id))
		{
			$data->department_id = explode(',',
$data->department_id);
		}

		return $data;
	}

	protected function canDelete($record)
	{
		return JFactory::getUser()->authorise('staff.delete',
'com_rsticketspro');
	}
}models/staffs.php000064400000004601151163476010010033 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelStaffs extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'username', 'name', 'email',
'group_name', 'priority_name', 'u.id'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		
		$query->select('s.*')
			->select($db->qn('g.name', 'group_name'))
			->select($db->qn('u.username'))
			->select($db->qn('u.name'))
			->select($db->qn('u.email'))
			->select($db->qn('p.name', 'priority_name'))
			->from($db->qn('#__rsticketspro_staff', 's'))
			->join('left',
$db->qn('#__rsticketspro_groups', 'g') . ' ON
(' . $db->qn('s.group_id') . '=' .
$db->qn('g.id') . ')')
			->join('left', $db->qn('#__users',
'u') . ' ON (' . $db->qn('s.user_id') .
'=' . $db->qn('u.id') . ')')
			->join('left',
$db->qn('#__rsticketspro_priorities', 'p') . '
ON (' . $db->qn('s.priority_id') . '=' .
$db->qn('p.id') . ')');

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('s.id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$search = $db->q('%'.str_replace(' ',
'%', $db->escape($search, true)).'%', false);

				$query->where($db->qn('g.name') . ' LIKE ' .
$search, 'OR');
				$query->where($db->qn('u.username') . ' LIKE
' . $search, 'OR');
				$query->where($db->qn('u.name') . ' LIKE ' .
$search, 'OR');
				$query->where($db->qn('u.email') . ' LIKE ' .
$search, 'OR');
			}
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'group_name')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}
	
	protected function populateState($ordering = 'group_name',
$direction = 'asc')
	{
		$this->setState('filter.search',
	$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		
		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/status.php000064400000004255151163476010010075 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelStatus extends JModelAdmin
{
	public function getTable($type = 'Statuses', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.status',
'status', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		// Modify the form based on access controls.
		if (!$this->canEditState((object) $data))
		{
			// Disable fields for display.
			$form->setFieldAttribute('ordering', 'disabled',
'true');
			$form->setFieldAttribute('published', 'disabled',
'true');

			// Disable fields while saving.
			// The controller has already verified this is a record you can edit.
			$form->setFieldAttribute('ordering', 'filter',
'unset');
			$form->setFieldAttribute('published', 'filter',
'unset');
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.status.data',
array());

		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}
	
	protected function canDelete($record)
	{
		if ($this->isCore($record->id))
		{
			return false;
		}

		return JFactory::getUser()->authorise('status.delete',
'com_rsticketspro');
	}
	
	protected function canEditState($record)
	{
		$task = JFactory::getApplication()->input->get('task');
		if ($task !== 'saveOrderAjax')
		{
			$id = !empty($record->id) ? $record->id :
JFactory::getApplication()->input->getInt('id');

			if ($this->isCore($id))
			{
				return false;
			}
		}

		return JFactory::getUser()->authorise('status.edit.state',
'com_rsticketspro');
	}
	
	protected function isCore($id)
	{
		return $id > 0 && $id <= 3;
	}
}models/statuses.php000064400000003535151163476010010425 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelStatuses extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'name', 'published', 'ordering',
'id', 'state'
			);
		}

		parent::__construct($config);
	}
	
	protected function getListQuery()
	{
		$db 	= JFactory::getDbo();
		$query 	= $db->getQuery(true);
		
		// get filtering states
		$search = $this->getState('filter.search');
		$state 	= $this->getState('filter.state');
		
		$query->select('*')
			->from('#__rsticketspro_statuses');

		// search
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				$query->where($db->qn('name') . ' LIKE ' .
$db->q('%'.str_replace(' ', '%',
$db->escape($search, true)).'%', false));
			}
		}

		// published/unpublished
		if ($state != '')
		{
			$query->where($db->qn('published') . '=' .
$db->q($state));
		}

		// order by
		$query->order($db->qn($this->getState('list.ordering',
'ordering')).'
'.$db->escape($this->getState('list.direction',
'asc')));
		
		return $query;
	}

	protected function populateState($ordering = 'ordering',
$direction = 'asc')
	{
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search'));
		$this->setState('filter.state',
$this->getUserStateFromRequest($this->context.'.filter.state',
'filter_state'));

		// List state information.
		parent::populateState($ordering, $direction);
	}
}models/submit.php000064400000055555151163476010010066 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelSubmit extends JModelAdmin
{
	protected $fields = array();

	public function getTable($type = 'Tickets', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}

	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.submit',
'submit', array('control' => 'jform',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		if (RSTicketsProHelper::getConfig('captcha_enabled') !==
'1')
		{
			$form->setFieldAttribute('captcha', 'label',
'');
			$form->setFieldAttribute('captcha',
'description', '');
		}

		$isStaff 				= RSTicketsProHelper::isStaff();
		$showAlternativeEmail 	=
RSTicketsProHelper::getConfig('show_alternative_email');
		$allowPasswordChange 	=
RSTicketsProHelper::getConfig('allow_password_change');
		$permissions 			= $this->getPermissions();
		if (!$isStaff || !$permissions || (!$permissions->add_ticket_customers
&& !$permissions->add_ticket_staff))
		{
			$user = JFactory::getUser();

			$form->setFieldAttribute('email', 'showon',
null);
			$form->setFieldAttribute('name', 'showon',
null);

			if ($showAlternativeEmail)
			{
				$form->setFieldAttribute('alternative_email',
'showon', null);
			}

			if ($allowPasswordChange)
			{
				$form->setFieldAttribute('password', 'showon',
null);
			}

			if ($user->id)
			{
				$form->setValue('email', null, $user->email);
				$form->setFieldAttribute('email', 'disabled',
'true');
				$form->setValue('name', null, $user->name);
				$form->setFieldAttribute('name', 'disabled',
'true');

				if ($showAlternativeEmail)
				{
					$form->setValue('alternative_email', null,
RSTicketsProHelper::getAlternativeEmail($user->id));
				}
			}
		}

		return $form;
	}

	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$app     = JFactory::getApplication();
		$default = array();

		// check with menu parameters
		if ($app->isClient('site'))
		{
			$params = $app->getParams();
			if ($department_id = $params->get('department_id'))
			{
				$default['department_id'] = $department_id;
			}
            if ($message = $params->get('message'))
            {
                $default['message'] = $message;
            }
			if ($department_id =
$app->input->getInt('department_id'))
			{
				$default['department_id'] = $department_id;
			}

			// Grab params from URL.
			if ($jform = $app->input->get->get('jform', array(),
'array'))
			{
				foreach ($jform as $key => $value)
				{
					$default[$key] = $value;
				}
			}
		}

		$data =
$app->getUserState('com_rsticketspro.edit.submit.data',
$default);

		return $data;
	}

	public function getDepartments()
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select($db->qn('id'))
			->select($db->qn('priority_id'))
			->select($db->qn('upload'))
			->select($db->qn('upload_ticket_required'))
			->select($db->qn('upload_extensions'))
			->select($db->qn('upload_size'))
			->select($db->qn('upload_files'))
			->from($db->qn('#__rsticketspro_departments'))
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));
		$db->setQuery($query);
		$list = $db->loadObjectList();

		$departments = array();
		$is_logged   = JFactory::getUser()->get('id') > 0;
		$max_files   = (int) ini_get('max_file_uploads');
		$max_size    = ini_get('upload_max_filesize');
		foreach ($list as $department)
		{
			if ($department->upload == 1 || ($department->upload == 2
&& $is_logged))
			{ // uploads are allowed for everyone or only for logged in users
				$department->upload = 1;
			}
			else
			{
				$department->upload = 0;
			}

			// convert allowed extensions to human readable format
			$upload_extensions = $department->upload_extensions;
			$upload_extensions = str_replace(array("\r\n",
"\r"), "\n", $upload_extensions);
			$upload_extensions = str_replace("\n", ", ",
$upload_extensions);
			if (trim($upload_extensions) == '')
			{
				$upload_extensions = '*';
			}
			$department->upload_extensions = $upload_extensions;
			// set the message
			$department->upload_message =
JText::sprintf('RST_TICKET_ATTACHMENTS_ALLOWED',
$department->upload_extensions);

			// if the server allows less files than what we've selected, use
that number instead
			if ($department->upload_files > $max_files ||
empty($department->upload_files))
			{
				$department->upload_files = $max_files;
			}

            $max = $department->upload_files;
            if ($department->upload_files == 0)
            {
                $max = JText::_('RST_UNLIMITED');
            }
            $department->upload_message_max_files =
JText::sprintf('RST_TICKET_ATTACHMENTS_MAX_ALLOWED', $max);

            $size = $department->upload_size;
            if ((float) $size == 0)
            {
                $size = $max_size;
            }
            else
            {
                $size = $department->upload_size . 'M';
            }

            $department->upload_message_max_size =
JText::sprintf('RST_TICKET_ATTACHMENTS_MAX_SIZE_ALLOWED',
$size);

			$departments[$department->id] = $department;
		}

		return $departments;
	}

	public function getCustomFields()
	{
		$db = JFactory::getDbo();
		$app = JFactory::getApplication();
		$query = $db->getQuery(true);
		$fields = array();
		$fieldValues =
$app->getUserState('com_rsticketspro.edit.submit.fields',
array());

		$query->select('*')
			->from($db->qn('#__rsticketspro_custom_fields'))
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('department_id'))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));

		if ($list = $db->setQuery($query)->loadObjectList())
		{
			foreach ($list as $field)
			{
				$selected = isset($fieldValues['department_' .
$field->department_id]) ? $fieldValues['department_' .
$field->department_id] : array();
				$field = RSTicketsProHelper::showCustomField($field, $selected, true,
$field->department_id);

				if ($field !== false)
				{
					$fields[] = $field;
				}
			}
		}

		return $fields;
	}

	protected function getCustomFieldsByDepartmentId($department_id)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__rsticketspro_custom_fields'))
			->where($db->qn('department_id') . '=' .
$db->q($department_id))
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));
		$db->setQuery($query);

		return $db->loadObjectList();
	}

	// using this because JFactory::getUser($inexistent_id) throws errors
	protected function getUserById($user_id)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__users'))
			->where($db->qn('id') . '=' .
$db->q($user_id));
		$db->setQuery($query);

		return $db->loadObject();
	}

	protected function getUserByEmail($email)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__users'))
			->where($db->qn('email') . ' LIKE ' .
$db->q($email));
		$db->setQuery($query);

		return $db->loadObject();
	}

	public function save($data, $fields = array(), $files = array())
	{
		define('RST_SUBMIT_TYPE_NEW_USER', 1);
		define('RST_SUBMIT_TYPE_EXISTING_USER', 2);
		define('RST_SUBMIT_TYPE_CURRENT_USER', 3);

		$app         = JFactory::getApplication();
		$permissions = $this->getPermissions();
		$customer    = null;
		$isStaff     = RSTicketsProHelper::isStaff();
		$user        = JFactory::getUser();

		// is he a staff member?
		if ($isStaff && $permissions)
		{
			// can he select the type of user?
			if ($permissions->add_ticket_staff ||
$permissions->add_ticket_customers)
			{
				$type = isset($data['submit_type']) ?
$data['submit_type'] : RST_SUBMIT_TYPE_NEW_USER;
			}
			elseif ($permissions->add_ticket)
			{
				$type = RST_SUBMIT_TYPE_CURRENT_USER;
			}
			else
			{
				$this->setError(JText::_('RST_STAFF_CANNOT_SUBMIT_TICKET'));

				return false;
			}
		}
		else
		{
			// logged in, grab current user information
			if ($user->get('id'))
			{
				$type = RST_SUBMIT_TYPE_CURRENT_USER;
			}
			else
			{
				$type = RST_SUBMIT_TYPE_NEW_USER;
			}
		}

		if ($type == RST_SUBMIT_TYPE_NEW_USER)
		{
			// validate the email address supplied
			if (empty($data['email']) ||
!JMailHelper::isEmailAddress($data['email']))
			{
				$this->setError(JText::_('RST_TICKET_EMAIL_ERROR'));

				return false;
			}

			// validate the name
			if (empty($data['name']))
			{
				$this->setError(JText::_('RST_TICKET_NAME_ERROR'));

				return false;
			}

			$customer            =
$this->getUserByEmail($data['email']);
			$data['customer_id'] = 0;
		}
		elseif ($type == RST_SUBMIT_TYPE_EXISTING_USER)
		{
			if (empty($data['customer_id']))
			{
				$this->setError(JText::_('RST_TICKET_CUSTOMER_ERROR'));

				return false;
			}

			$customer = $this->getUserById($data['customer_id']);
			// what if the user ID doesn't exist in the database?
			if (empty($customer))
			{
				$this->setError(JText::_('RST_TICKET_CUSTOMER_ERROR'));

				return false;
			}
		}
		elseif ($type == RST_SUBMIT_TYPE_CURRENT_USER)
		{
			$customer = JFactory::getUser();
		}

		// checking permissions
		if ($customer)
		{
			// is he a staff member?
			if ($isStaff)
			{
				// trying to submit a ticket on behalf of himself, but no access
				if ($customer->id == $user->id &&
!$permissions->add_ticket)
				{
					$this->setError(JText::_('RST_TICKET_EMAIL_STAFF_NO_PERMISSION_ERROR'));

					return false;
				}

				$is_customer_staff = RSTicketsProHelper::isStaff($customer->id);

				// staff trying to submit a ticket on behalf of another staff member
with no permission
				if ($is_customer_staff && $customer->id != $user->id
&& !$permissions->add_ticket_staff)
				{
					$this->setError(JText::sprintf('RST_TICKET_EMAIL_STAFF_ERROR',
$customer->email));

					return false;
				}

				// staff trying to submit a ticket on behalf of a customer with no
permission
				if (!$is_customer_staff &&
!$permissions->add_ticket_customers)
				{
					$this->setError(JText::_('RST_TICKET_STAFF_CANNOT_ADD_TICKET_TO_CUSTOMER_ERROR'));

					return false;
				}
			}
			else
			{
				$is_customer_staff = RSTicketsProHelper::isStaff($customer->id);

				// customer trying to submit a ticket on behalf of another staff
member
				if ($is_customer_staff && $customer->id != $user->id)
				{
					$this->setError(JText::sprintf('RST_TICKET_EMAIL_STAFF_ERROR',
$customer->email));

					return false;
				}

				if (!$user->id && (bool)
RSTicketsProHelper::getConfig('allow_password_change') &&
(bool) RSTicketsProHelper::checkIfEmailExists($customer->email))
				{
					$this->setError(JText::sprintf('RST_TICKET_EMAIL_CUSTOMER_ERROR',
$customer->email));

					return false;
				}
			}

			$data['customer_id'] = $customer->id;
		}
		else
		{
			if (!$user->id &&
RSTicketsProHelper::getConfig('allow_password_change'))
			{
				if (!isset($data['password']) ||
!strlen(trim($data['password'])))
				{
					$this->setError(JText::_('RST_TICKET_EMPTY_PASSWORD'));
				
					return false;
				}
				
				// Password strength
				$rule 	= JFormHelper::loadRuleType('password');
				$field 	= new
SimpleXMLElement('<field></field>');
				if (!$rule->test($field, $data['password']))
				{
					// Rule should throw a notice
					return false;
				}
			}
		}

		// Let's see if we have a blocklist
		if ($blocklist = RSTicketsProHelper::getConfig('blocklist'))
		{
			$blocklist = str_replace("\r\n", "\n", $blocklist);
			$blocklist = explode("\n", $blocklist);

			switch ($type)
			{
				case RST_SUBMIT_TYPE_NEW_USER:
					$email = $data['email'];
					break;

				case RST_SUBMIT_TYPE_CURRENT_USER:
				case RST_SUBMIT_TYPE_EXISTING_USER:
					$email = $customer->email;
					break;
			}

			if ($blocklist)
			{
				$found_blocklist = false;
				foreach ($blocklist as $blocked_email)
				{
					if (strpos($blocked_email, '*') !== false)
					{
						// Wildcard found
						$parts = explode('*', $blocked_email);
						foreach ($parts as $b => $part)
						{
							$parts[$b] = preg_quote($part, '/');
						}
						$pattern = '/'.implode('(.*)',
$parts).'/i';
						if (preg_match($pattern, $email, $match))
						{
							$found_blocklist = true;
							break;
						}
					}
					else
					{
						// Regular address, see if it matches
						if (strtolower($email) == strtolower($blocked_email))
						{
							$found_blocklist = true;
							break;
						}
					}
				}

				if ($found_blocklist)
				{
					$this->setError(JText::sprintf('COM_RSTICKETSPRO_BLOCKLISTED_EMAIL_ERROR',
htmlspecialchars($email, ENT_COMPAT, 'utf-8')));

					return false;
				}
			}
		}

		// validate the provided alternative email address if any
		if (!empty($data['alternative_email'])) {
			// remove any whitespaces
			$data['alternative_email'] =
trim($data['alternative_email']);

			if (strlen($data['alternative_email']) > 0 &&
!JMailHelper::isEmailAddress($data['alternative_email'])) {
				$this->setError(JText::_('RST_ALTERNATIVE_EMAIL_ERROR'));
				return false;
			}
		}

		// let's validate departments
		$departments = $this->getDepartments();
		// must select a department
		if (empty($data['department_id']) ||
!isset($departments[$data['department_id']]))
		{
			$this->setError(JText::_('RST_TICKET_DEPARTMENT_ERROR'));

			return false;
		}
		$department = $departments[$data['department_id']];

		// validate custom fields
		$data['fields'] = array();
		if ($customFields =
$this->getCustomFieldsByDepartmentId($data['department_id']))
		{
			$sentFields = isset($fields['department_' .
$data['department_id']]) ? $fields['department_' .
$data['department_id']] : array();
			foreach ($customFields as $field)
			{
				// freetext fields don't send a value so no need to validate them
				if ($field->type == 'freetext')
				{
					continue;
				}

				// field si required
				if ($field->required)
				{
					// set the validation message
					$validation_message = JText::_($field->validation);
					// if no validation message, go with the default one
					if (empty($validation_message))
					{
						$validation_message =
JText::sprintf('RST_VALIDATION_DEFAULT_ERROR',
JText::_($field->label));
					}

					// handle arrays
					if (is_array($sentFields[$field->name]))
					{
						$value = implode('', $sentFields[$field->name]);
					}
					else
					{
						$value = $sentFields[$field->name];
					}
					// no value has been sent?
					if (empty($value))
					{
						$this->setError($validation_message);

						return false;
					}
					// handle 3rd party validation
					$return = true;
					$app->triggerEvent('onRsticketsproCustomFieldValidation',
array($data, $field, $value, $sentFields, &$return));
					if ($return === false)
					{
						return false;
					}
				}

				if (isset($sentFields[$field->name]))
				{
					$data['fields'][$field->id] =
$sentFields[$field->name];
				}
			}
		}

		// must write a subject
		if (empty($data['subject']))
		{
			$this->setError(JText::_('RST_TICKET_SUBJECT_ERROR'));

			return false;
		}

		// must write a message
		if (empty($data['message']))
		{
			$this->setError(JText::_('RST_TICKET_MESSAGE_ERROR'));

			return false;
		}

		// must select a priority
		if (empty($data['priority_id']))
		{
			$this->setError(JText::_('RST_TICKET_PRIORITY_ERROR'));

			return false;
		}

		// let's validate files if the department allows uploads for this
user
		$data['files'] = array();
		if ($department->upload)
		{
			// too many files
			if ($department->upload_files > 0 && count($files) >
$department->upload_files)
			{
				$files = array_slice($files, 0, $department->upload_files);
			}

			$upload_extensions = explode(', ',
$department->upload_extensions);

			foreach ($files as $file)
			{
				if ($file['error'] == UPLOAD_ERR_NO_FILE)
				{
					continue;
				}

				if ($file['error'] != UPLOAD_ERR_OK)
				{
					switch ($file['error'])
					{
						default:
							$msg = 'RST_TICKET_UPLOAD_ERROR';
							break;
						case UPLOAD_ERR_INI_SIZE:
							$msg = 'RST_TICKET_UPLOAD_ERROR_INI_SIZE';
							break;
						case UPLOAD_ERR_FORM_SIZE:
							$msg = 'RST_TICKET_UPLOAD_ERROR_FORM_SIZE';
							break;
						case UPLOAD_ERR_PARTIAL:
							$msg = 'RST_TICKET_UPLOAD_ERROR_PARTIAL';
							break;
						case UPLOAD_ERR_NO_TMP_DIR:
							$msg = 'RST_TICKET_UPLOAD_ERROR_NO_TMP_DIR';
							break;
						case UPLOAD_ERR_CANT_WRITE:
							$msg = 'RST_TICKET_UPLOAD_ERROR_CANT_WRITE';
							break;
						case UPLOAD_ERR_EXTENSION:
							$msg = 'RST_TICKET_UPLOAD_ERROR_PHP_EXTENSION';
							break;
					}

					$this->setError(JText::sprintf($msg, $file['name']));

					return false;
				}

				// is this an allowed extension?
				if
(!RSTicketsProHelper::isAllowedExtension(RSTicketsProHelper::getExtension($file['name']),
$upload_extensions))
				{
					$this->setError(JText::sprintf('RST_TICKET_UPLOAD_EXTENSION_ERROR',
$file['name'], $department->upload_extensions));

					return false;
				}
				// check file size
				if ($department->upload_size > 0 &&
$file['size'] > $department->upload_size * 1048576)
				{
					$this->setError(JText::sprintf('RST_TICKET_UPLOAD_SIZE_ERROR',
$file['name'], $department->upload_size));

					return false;
				}

				$data['files'][] = array(
					'src'      => 'upload',
					'tmp_name' => $file['tmp_name'],
					'name'     => $file['name']
				);
			}

            if ($department->upload_ticket_required &&
empty($data['files']))
            {
               
$this->setError(JText::_('COM_RSTICKETSPRO_UPLOAD_TICKET_REQUIRED_ERROR'));

                return false;
            }
		}

		if ($app->isClient('site'))
		{
		    // Need to check consent
             if (RSTicketsProHelper::getConfig('forms_consent')
&& empty($data['consent']))
            {
               
$this->setError(JText::_('COM_RSTICKETSPRO_CONSENT_IS_NEEDED_TO_SUBMIT_THIS_FORM'));
                return false;
            }
            // no need to check for captcha in the backend
			if ($this->getHasCaptcha())
			{
				$captchaType =
RSTicketsProHelper::getConfig('captcha_enabled');
				if ($captchaType == 1)
				{
					// Standard Captcha
					require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/captcha/captcha.php';
					$captcha = new RsticketsproCaptcha;

					if (!$captcha->check($data['captcha']))
					{
						$this->setError(JText::_('RST_TICKET_CAPTCHA_ERROR'));

						return false;
					}
				}
				elseif ($captchaType > 1 && $captchaType < 5)
				{
					$response = $app->input->get('g-recaptcha-response',
'', 'raw');
					$ip       =
$app->input->server->getString('REMOTE_ADDR');
					$secret   =
RSTicketsProHelper::getConfig('recaptcha_new_secret_key');

					try
					{
						$http = JHttpFactory::getHttp();
						if ($request =
$http->get('https://www.google.com/recaptcha/api/siteverify?secret='
. urlencode($secret) . '&response=' . urlencode($response) .
'&remoteip=' . urlencode($ip)))
						{
							$json = json_decode($request->body);
						}
					} catch (Exception $e)
					{
						$this->setError($e->getMessage());

						return false;
					}

					if (empty($json->success) || !$json->success)
					{
						if (!empty($json) &&
isset($json->{'error-codes'}) &&
is_array($json->{'error-codes'}))
						{
							foreach ($json->{'error-codes'} as $code)
							{
								$this->setError(JText::_('RST_CAPTCHA_NEW_ERR_' .
str_replace('-', '_', $code)));

								return false;
							}
						}
					}
				}
				elseif ($captchaType == 5) {
					$jconfig = JFactory::getConfig();
					$jcaptcha = $jconfig->get('captcha');

					if (!empty($jcaptcha)) {
						try {
							$input = JFactory::getApplication()->input;
							$codeField = $input->get('rscaptcha');

							$jcaptcha = JCaptcha::getInstance($jcaptcha,
array('namespace' => 'rscaptcha'));
							if (!is_null($jcaptcha) &&
!$jcaptcha->checkAnswer($codeField)) {
								return false;
							}
						} catch (Exception $e) {
							JFactory::getApplication()->enqueueMessage($e->getMessage(),
'error');
							return false;
						}
					} else {
						JFactory::getApplication()->enqueueMessage(JText::_('RST_CAPTCHA_BUILT_IN_NOT_SELECTED'),
'error');
						return false;
					}
				}
			}
		}

		// overwrite some options
		$data['id']                  = null;
		$data['staff_id']            = null;
		$data['status_id']           = RST_STATUS_OPEN;
		$data['date']                =
JFactory::getDate()->toSql();
		$data['last_reply']          = $data['date'];
		$data['last_reply_customer'] = 1;
		$data['replies']             = null;
		$data['autoclose_sent']      = null;
		$data['flagged']             = null;
		$data['feedback']            = null;
		$data['has_files']           = null;
		$data['time_spent']          = null;

		// fill user information
		$server          = $app->input->server;
		$data['logged']  = $user->get('id') > 0 ? 1 :
0;
		$data['agent']   = $server->get('HTTP_USER_AGENT',
'', 'raw');
		$data['referer'] = $server->get('HTTP_REFERER',
'', 'raw');
		$data['ip']      = $server->get('REMOTE_ADDR',
'', 'raw');

		if (!RSTicketsProHelper::getConfig('store_ip'))
        {
            $data['ip'] = '0.0.0.0';
        }
        if (!RSTicketsProHelper::getConfig('store_user_agent'))
        {
            $data['agent'] = '';
        }

		require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/ticket.php';

		$ticket = new RSTicketsProTicketHelper();
		$ticket->bind($data);
		if (!$ticket->saveTicket())
		{
			$this->setError($ticket->getError());

			return false;
		}

		// everything is correct, return true
		return true;
	}

	public function getPermissions()
	{
		return RSTicketsProHelper::getCurrentPermissions();
	}

	public function getHasCaptcha()
	{
		if (RSTicketsProHelper::getConfig('captcha_enabled'))
		{
			$enabledFor =
RSTicketsProHelper::getConfig('captcha_enabled_for');
			$user       = JFactory::getUser();
			$isStaff    = RSTicketsProHelper::isStaff();

			return (
				(in_array('unregistered', $enabledFor) &&
$user->get('guest')) || // unregistered users
				(in_array('customers', $enabledFor) && !$isStaff) ||
// customers
				(in_array('staff', $enabledFor) && $isStaff) // staff
members
			);
		}

		return false;
	}
}models/ticket.php000064400000111233151163476010010030 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelTicket extends JModelAdmin
{
	public function getTable($type = 'Tickets', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}

	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.ticket',
'ticket', array('control' => 'ticket',
'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		$ticket = $this->getItem();
		$isStaff = $this->isStaff();
		$permissions = $this->getStaffPermissions();
		$userField = RSTicketsProHelper::getConfig('show_user_info');

		if (!$isStaff || !$permissions->update_ticket)
		{
			$form->setFieldAttribute('subject', 'type',
'rsticketsprohtml');
			$form->setFieldAttribute('subject', 'escape',
'true');

			$form->setFieldAttribute('priority_id', 'type',
'rsticketsprohtml');
			$form->setFieldAttribute('priority_id', 'escape',
'true');
			$form->setValue('priority_id', null,
JText::_($ticket->priority->name));
		}

		if (!$isStaff || !$permissions->move_ticket)
		{
			$form->setFieldAttribute('department_id', 'type',
'rsticketsprohtml');
			$form->setFieldAttribute('department_id',
'escape', 'true');
			$form->setValue('department_id', null,
JText::_($ticket->department->name));
		}

		if (!$isStaff || !$permissions->change_ticket_status)
		{
			$form->setFieldAttribute('status_id', 'type',
'rsticketsprohtml');
			$form->setFieldAttribute('status_id', 'escape',
'true');
			$form->setValue('status_id', null,
JText::_($ticket->status->name));
		}

		if (!$isStaff || !$permissions->assign_tickets)
		{
			$form->setFieldAttribute('staff_id', 'type',
'rsticketsprohtml');
			$form->setFieldAttribute('staff_id', 'escape',
'true');
			$form->setValue('staff_id', null, $ticket->staff_id >
0 ? $ticket->staff->get($userField) :
JText::_('RST_UNASSIGNED'));
		}

		if (!$isStaff || (!$permissions->add_ticket_customers &&
!$permissions->add_ticket_staff))
		{
			$form->setFieldAttribute('customer_id', 'type',
'rsticketsprohtml');
			$form->setFieldAttribute('customer_id', 'escape',
'true');
			$form->setValue('customer_id', null,
$ticket->customer->get($userField));

			$form->setFieldAttribute('alternative_email',
'type', 'rsticketsprohtml');
			$form->setFieldAttribute('alternative_email',
'escape', 'true');
		}

		$form->setValue('date', null, JHtml::_('date',
$ticket->date,
RSTicketsProHelper::getConfig('date_format')));

		if (JFactory::getApplication()->isClient('site'))
		{
			$form->setFieldAttribute('search', 'class',
'input-xlarge');
			$form->setFieldAttribute('message', 'class',
'input-xlarge');
		}

		return $form;
	}

	protected function loadFormData()
	{
		$data = array();
		if ($item = $this->getItem())
		{
			$data = (array) $item->getProperties();
		}

		$validData = array();
		foreach ($data as $k => $v)
		{
			if (!is_object($data[$k]))
			{
				$validData[$k] = $v;
			}
		}

		// workaround to get the message
		$data =
JFactory::getApplication()->getUserState('com_rsticketspro.edit.ticket.data',
null);
		if (is_array($data) && isset($data['message']))
		{
			$validData['message'] = $data['message'];
		}

		return $validData;
	}

	public function getTicket($id)
	{
		static $cache = array();
		if (!isset($cache[$id]))
		{
			$table = $this->getTable();
			if ($table->load($id))
			{
				$cache[$id] = $table;
			}
			else
			{
				$cache[$id] = false;
			}
		}

		return $cache[$id];
	}

	public function getTicketMessages($id = null, $nosyslog = false)
	{
		if (is_null($id))
		{
			$ticket = $this->getItem();
		}
		else
		{
			$ticket = $this->getTicket($id);
		}
		$customer_id = $ticket->customer_id;
		$ticket_id   = $ticket->id;

		$direction =
RSTicketsProHelper::getConfig('messages_direction');

		$db    = JFactory::getDbo();
		$app   = JFactory::getApplication();
		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__rsticketspro_ticket_messages'))
			->where($db->qn('ticket_id') . '=' .
$db->q($ticket_id))
			->order($db->qn('date') . ' ' .
$db->escape($direction));
		if ($nosyslog)
		{
			$query->where($db->qn('user_id') . ' <>
' . $db->q('-1'));
		}
		$db->setQuery($query);
		$messages = $db->loadObjectList('id');

		if ($app->isClient('administrator'))
		{
			$pattern = '/src=[\'"]?([^\'"
>]+)[\'" >]/';
			foreach ($messages as $mid => $message)
			{
				if (preg_match_all($pattern, $message->message, $matches))
				{
					if (!empty($matches[1]))
					{
						foreach ($matches[1] as $i => $image)
						{
							if (strpos($image, 'viewinline') !== false)
							{
								$new_image               = str_replace(JUri::root(), JUri::root() .
'administrator/', $image);
								$messages[$mid]->message = str_replace($matches[1][$i],
$new_image, $messages[$mid]->message);
							}
						}
					}
				}
			}
		}

		$query->clear();
		$query->select('*')
			->from($db->qn('#__rsticketspro_ticket_files'))
			->where($db->qn('ticket_id') . '=' .
$db->q($ticket_id));
		$db->setQuery($query);
		if ($files = $db->loadObjectList())
		{
			foreach ($files as $file)
			{
				$message_id = $file->ticket_message_id;

				if (!empty($messages[$message_id]))
				{
					$message = &$messages[$message_id];

					// add the file to the array
					if (!isset($message->files))
					{
						$message->files = array();
					}
					$message->files[] = $file;
				}
			}
		}

		return $messages;
	}

	public function getItem($pk = null)
	{
		$id = $this->getId();

		return $this->getTicket($id);
	}

	protected function getUser()
	{
		return JFactory::getUser();
	}

	public function isGuest()
	{
		$user = $this->getUser();

		return $user->get('guest');
	}

	public function getIsStaff()
	{
		return $this->isStaff();
	}

	public function isStaff()
	{
		static $result;
		if (is_null($result))
		{
			$user   = $this->getUser();
			$result = RSTicketsProHelper::isStaff($user->get('id'));
		}

		return $result;
	}

	public function canDeleteTimeTracking() {
		static $result;
		if (is_null($result))
		{
			$user   = $this->getUser();
			$result =
RSTicketsProHelper::canDeleteTimeTracking($user->get('id'));
		}

		return $result;
	}

	public function getTimeTrackingDeleteStatus() {
		return $this->canDeleteTimeTracking();
	}

	public function canDeleteOwnTimeTracking($ticket_id, $entry_id) {
		static $result = array();

		$hash = md5($ticket_id.$entry_id);
		if (!isset($result[$hash]))
		{
			$user   = $this->getUser();
			$option =
RSTicketsProHelper::canDeleteTimeTracking($user->get('id'),
'can_delete_own_time_history');

			if($option && $this->checkIfExistsTimeSpentEntry($ticket_id,
$entry_id, $user->get('id')))
			{
				$result[$hash] = true;
			}
			else
			{
				$result[$hash] = false;
			}
		}

		return $result[$hash];
	}

	public function getStaffDepartments()
	{
		static $departments;
		if (is_null($departments))
		{
			$departments = RSTicketsProHelper::getCurrentDepartments();
		}

		return $departments;
	}

	public function getStaffPermissions()
	{
		static $permissions;
		if (is_null($permissions))
		{
			$permissions = RSTicketsProHelper::getCurrentPermissions();
		}

		return $permissions;
	}

	// @int $id - the id of the ticket
	// @returns true on success
	public function hasPermission($id)
	{
		$user  = $this->getUser();

		$is_staff    = $this->isStaff();
		$departments = $this->getStaffDepartments();
		$permissions = $this->getStaffPermissions();

		if ($ticket = $this->getTicket($id))
		{ // found a ticket
			// staff members
			if ($is_staff)
			{
				// staff - check if belongs to department only if he is not the
customer
				if ($ticket->customer_id != $user->get('id') &&
!in_array($ticket->department_id, $departments))
				{
					$this->setError(JText::_('RST_STAFF_CANNOT_VIEW_TICKET'));

					return false;
				}

				// check if department can be seen by this staff member
				if (RSTicketsProHelper::getConfig('staff_force_departments')
&& !in_array($ticket->department_id, $departments))
				{
					$this->setError(JText::_('RST_STAFF_CANNOT_VIEW_TICKET'));

					return false;
				}

				// is this ticket unassigned?
				if (!$permissions->see_unassigned_tickets &&
!$ticket->staff_id)
				{
					$this->setError(JText::_('RST_STAFF_CANNOT_VIEW_TICKET'));

					return false;
				}

				// does this ticket belong to another staff member?
				if (!$permissions->see_other_tickets && $ticket->staff_id
> 0 && $ticket->staff_id != $user->get('id'))
				{
					$this->setError(JText::_('RST_STAFF_CANNOT_VIEW_TICKET'));

					return false;
				}
			}
			else
			{
				// customers
				if ($ticket->customer_id != $user->get('id'))
				{
					$this->setError(JText::_('RST_CUSTOMER_CANNOT_VIEW_TICKET'));

					return false;
				}
			}

			return true;
		}

		return false;
	}

	public function hasDownloadPermission($access_code, $file_id, $ticket_id)
{
		if (!$access_code || strlen($access_code) != 32) {
			return false;
		}

		require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/ticket.php';

		$helper  = new RSTicketsProTicketHelper;
		$files   = $helper->getTicketAttachments($ticket_id);

		if (empty($files[$file_id])) {
			return false;
		}

		$hash = md5($ticket_id . '|' . $files[$file_id]->id .
'|' . $files[$file_id]->filename);

		return $hash === $access_code;
	}

	public function setFlag($id, $flagged)
	{
		if ($ticket = $this->getTicket($id))
		{
			$object = (object) array(
				'id'      => $id,
				'flagged' => $flagged
			);

			return
JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));
		}

		return false;
	}

	public function delete(&$id)
	{
		if ($ticket = $this->getTicket($id))
		{
			return $ticket->delete($id);
		}

		return false;
	}

	public function notify($id)
	{
		// set the interval
		static $interval;
		if (is_null($interval))
		{
			$interval =
RSTicketsProHelper::getConfig('autoclose_email_interval') *
86400;
			if ($interval < 86400)
			{
				$interval = 86400;
			}
		}

		// get the date
		$date = JFactory::getDate();

		if ($ticket = $this->getTicket($id))
		{
			$last_reply = JFactory::getDate($ticket->last_reply)->toUnix();
			if ($ticket->last_reply_customer || $ticket->autoclose_sent ||
$last_reply + $interval > $date->toUnix())
			{
				return false;
			}

			$overdue = floor(($date->toUnix() - $last_reply) / 86400);
			$closed  =
RSTicketsProHelper::getConfig('autoclose_interval');

			// get email sending settings
			static $emailConfig = array();
			if (!isset($emailConfig[$ticket->department_id]))
			{
				if (RSTicketsProHelper::getConfig('email_use_global'))
				{
					// are we using global Joomla! config ?
					$config                  = new JConfig();
					$emailConfig['from']     = $config->mailfrom;
					$emailConfig['fromName'] = $config->fromname;
				}
				else
				{
					// this means we are using the RSTickets! Pro config
					$emailConfig['from']     =
RSTicketsProHelper::getConfig('email_address');
					$emailConfig['fromName'] =
RSTicketsProHelper::getConfig('email_address_fullname');
				}

				// let's see if the department has different settings
				$department = $this->getTable('Departments');
				$department->load($ticket->department_id);
				if (!$department->email_use_global)
				{
					$emailConfig['from']     = $department->email_address;
					$emailConfig['fromName'] =
$department->email_address_fullname;
				}
			}

			if ($email =
RSTicketsProHelper::getEmail('notification_email'))
			{
                $replacements = array(
                    '{live_site}' => JUri::root(),
                    '{ticket}' =>
RSTicketsProHelper::route(JUri::root() .
'index.php?option=com_rsticketspro&view=ticket&cid=' .
$ticket->id . ':' .
JFilterOutput::stringURLSafe($ticket->subject)),
                    '{customer_name}' =>
$ticket->customer->get('name'),
                    '{customer_username}' =>
$ticket->customer->get('username'),
                    '{customer_email}' =>
$ticket->customer->get('email'),
                    '{staff_name}' =>
$ticket->staff->get('name'),
                    '{staff_username}' =>
$ticket->staff->get('username'),
                    '{staff_email}' =>
$ticket->staff->get('email'),
                    '{code}' => $ticket->code,
                    '{subject}' => $ticket->subject,
                    '{priority}' =>
JText::_($ticket->priority->name),
                    '{status}' =>
JText::_($ticket->status->name),
                    '{inactive_interval}' => $overdue,
                    '{close_interval}' => $closed
                );

                $email_subject = str_replace(array_keys($replacements),
array_values($replacements), $email->subject);
                $email_message = str_replace(array_keys($replacements),
array_values($replacements), $email->message);

                // send the notification message
               
RSTicketsProHelper::sendMail($emailConfig['from'],
$emailConfig['fromName'],
$ticket->customer->get('email'), $email_subject,
$email_message, 1);
            }

			// the autoclose has been sent, mark it in the db
			$object = (object) array(
				'id'             => $ticket->id,
				'autoclose_sent' => $date->toUnix()
			);
			JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));

			RSTicketsProHelper::addHistory($ticket->id, 'notify');

			return true;
		}
	}

	public function getTicketTimeSpentIntervals($ticket_id = null) {
		if (empty($ticket_id)) {
			$ticket		 = $this->getItem();
			$ticket_id   = $ticket->id;
		}

		// if the ticket_id is still not found return null
		if (empty($ticket_id)) {
			return array();
		}

		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select($db->qn('start'))
			->select($db->qn('end'))
			->select($db->qn('staff_id'))
			->select($db->qn('id'))
			->from($db->qn('#__rsticketspro_timespent'))
			->where($db->qn('ticket_id') . ' = ' .
$db->q($ticket_id));

		$db->setQuery($query);

		if ($intervals = $db->loadObjectList())
		{
			// calculate the duration
			foreach ($intervals as $interval)
			{
				if ($interval->end == '0000-00-00 00:00:00')
				{
					$interval->duration = '0';
				}
				else
				{
					$int_start = JFactory::getDate($interval->start);
					$int_end = JFactory::getDate($interval->end);

					$int_start = $int_start->getTimestamp();
					$int_end = $int_end->getTimestamp();
					$duration = $int_end - $int_start;

					$interval->duration = $duration;
				}

				if(!empty($interval->staff_id)) {
					$interval->staff_member =
$this->getUsername($interval->staff_id);
				}

				$interval->can_delete =
$this->canDeleteOwnTimeTracking($ticket_id, $interval->id) ||
$this->canDeleteTimeTracking();
			}

			return $intervals;
		}

		return array();
	}

	public function checkIfExistsTimeSpentEntry($ticket_id, $entry_id,
$staff_id = null) {
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select('COUNT(*)')
			->from($db->qn('#__rsticketspro_timespent'))
			->where($db->qn('ticket_id') . ' = ' .
$db->q($ticket_id))
			->where($db->qn('id') . ' = ' .
$db->q($entry_id));

		if (!is_null($staff_id))
		{
			$query->where($db->qn('staff_id') . ' = ' .
$db->q($staff_id));
		}

		$db->setQuery($query);
		
		$exists = $db->loadResult();

		return !empty($exists);
	}

	protected function getUsername($id) {
		static $names = array();

		if (!isset($names[$id]))
		{
			$user = JFactory::getUser($id);
			if ($user && !$user->get('guest'))
			{
				$names[$id] = $user->get('name');
			}
			else
			{
				$names[$id] = '';
			}
		}

		return $names[$id];
	}

	public function clearTimeTracking($ticket_id = null, $id = null) {
		if (empty($ticket_id)) {
			return;
		}

		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->delete($db->qn('#__rsticketspro_timespent'))
			->where($db->qn('ticket_id') . ' = ' .
$db->q($ticket_id))
			->where($db->qn('end') . ' != ' .
$db->q('0000-00-00 00:00:00'));

		if (!empty($id)) {
			$query->where($db->qn('id') . ' = ' .
$db->q($id));
		}

		$db->setQuery($query);

		$db->execute();

		// update time_spent for the list view
		if (!empty($id)) {
			$this->remakeTimeSpent($ticket_id, true);
		} else {
			$object = (object) array(
				'id' => $ticket_id,
				'time_spent' => 0
			);

			JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));
		}
	}

	public function toggleTime($ticket_id, $state)
	{
		$isStaff              = $this->isStaff();
		$enableTimeSpent      =
RSTicketsProHelper::getConfig('enable_time_spent');

		if ($isStaff && $enableTimeSpent)
		{
			$db    = JFactory::getDbo();

			if ($state)
			{
				$object = (object) array(
					'staff_id' => $this->getUser()->id,
					'ticket_id' => $ticket_id,
					'start' =>
JFactory::getDate('now')->toSql(),
					'end' => $db->getNullDate()
				);

				$db->insertObject('#__rsticketspro_timespent', $object,
'id');
			}
			else
			{
				$query = $db->getQuery(true)
					->update($db->qn('#__rsticketspro_timespent'))
					->set($db->qn('end') . ' = ' .
$db->q(JFactory::getDate('now')->toSql()))
					->where($db->qn('ticket_id') . ' = ' .
$db->q($ticket_id))
					->where($db->qn('start') . ' != ' .
$db->q($db->getNullDate()))
					->where($db->qn('end') . ' = ' .
$db->q($db->getNullDate()));

				$db->setQuery($query);
				$db->execute();

				// update time spent on the ticket based on all the start/stop entries,
only when the state is set to stop (0)
				if ($db->getAffectedRows())
				{
					$this->remakeTimeSpent($ticket_id);
				}
			}

			return true;
		}

		return false;
	}

	protected function remakeTimeSpent($ticket_id, $force_zero = false){
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select($db->qn('start'))
			->select($db->qn('end'))
			->from($db->qn('#__rsticketspro_timespent'))
			->where($db->qn('ticket_id') . ' = ' .
$db->q($ticket_id));

		$db->setQuery($query);
		if ($intervals = $db->loadObjectList())
		{
			// hold all the seconds
			$total_time_sec = 0;
			foreach ($intervals as $interval)
			{
				$int_start = JFactory::getDate($interval->start);
				$int_end = JFactory::getDate($interval->end);

				$int_start = $int_start->getTimestamp();
				$int_end = $int_end->getTimestamp();
				$diff = $int_end - $int_start;

				$total_time_sec +=  $diff;
			}

			if ($total_time_sec > 0)
			{
				$hours = ($total_time_sec / 60) / 60;
				$hours = round($hours);

				$minutes = ($total_time_sec / 60) % 60 ;
				$minutes = round($minutes);

				// 1.3 h (1 hour and 30 minutes) is not as 1.03 h (1 hour and 3
minutes)
				if ($minutes < 10)
				{
					$minutes = '0'.$minutes;
				}

				$total_time = (float) ($hours.'.'.$minutes);

				$object = (object) array(
					'id' => $ticket_id,
					'time_spent' => $total_time
				);
				JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));
			}
		}
		else if ($force_zero)
		{
			$object = (object) array(
				'id' => $ticket_id,
				'time_spent' => 0
			);
			JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));
		}
	}

	public function getTicketSections()
	{
		$isStaff              = $this->isStaff();
		$sections             = array();
		$sections['messages'] =
JText::_('RST_TICKET_MESSAGES');
		$sections['info']     =
JText::_('RST_TICKET_INFORMATION');
		$enableTimeSpent      =
RSTicketsProHelper::getConfig('enable_time_spent');
		$showInfo             =
RSTicketsProHelper::getConfig('show_ticket_info');

		if ($isStaff && $enableTimeSpent)
		{
			$sections['time'] = JText::_('RST_TIME_SPENT');
		}

		if ($isStaff && $showInfo)
		{
			$sections['submitter'] =
JText::_('RST_SUBMITTER_INFORMATION');
		}

		$sections['custom_fields'] =
JText::_('RST_TICKET_CUSTOM_FIELDS');

		if ($isStaff)
		{
			$sections['history'] =
JText::_('RST_TICKET_HISTORY');
		}

		return $sections;
	}

	public function getOtherTickets()
	{
		$ticket      = $this->getItem();
		$customer_id = $ticket->customer_id;
		$ticket_id   = $ticket->id;

		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);

		$query->select($db->qn('t.id'))
			->select($db->qn('t.subject'))
			->select($db->qn('t.replies'))
			->select($db->qn('t.code'))
			->select($db->qn('t.date'))
			->select($db->qn('s.name', 'status_name'))
			->from($db->qn('#__rsticketspro_tickets',
't'))
			->join('left',
$db->qn('#__rsticketspro_statuses', 's') . ' ON
(' . $db->qn('t.status_id') . '=' .
$db->qn('s.id') . ')')
			->where($db->qn('t.id') . '!=' .
$db->q($ticket_id))
			->where($db->qn('t.customer_id') . '=' .
$db->q($customer_id))
			->order($db->qn('date') . ' ' .
$db->escape('desc'));
		$db->setQuery($query);

		return $db->loadObjectList();
	}

	public function getDepartment()
	{
		// get model
		$model       = $this->getInstance('Submit',
'RsticketsproModel', array(
			'option'     => 'com_rsticketspro',
			'table_path' => JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/tables'
		));
		$departments = $model->getDepartments();
		$ticket      = $this->getItem();

		return $departments[$ticket->department_id];
	}

	public function getDepartments()
	{
		$db      = JFactory::getDbo();
		$query   = $db->getQuery(true);
		$options = array();

		$query->select($db->qn('id'))
			->select($db->qn('name'))
			->from('#__rsticketspro_departments')
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));
		$db->setQuery($query);
		if ($departments = $db->loadObjectList())
		{
			foreach ($departments as $department)
			{
				$tmp = JHtml::_('select.option', $department->id,
JText::_($department->name));

				// Add the option object to the result set.
				$options[] = $tmp;
			}
		}

		return $options;
	}

	public function getStatuses()
	{
		$db      = JFactory::getDbo();
		$query   = $db->getQuery(true);
		$options = array();

		$query->select($db->qn('id'))
			->select($db->qn('name'))
			->from('#__rsticketspro_statuses')
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));
		$db->setQuery($query);
		if ($statuses = $db->loadObjectList())
		{
			foreach ($statuses as $status)
			{
				$tmp = JHtml::_('select.option', $status->id,
JText::_($status->name));

				// Add the option object to the result set.
				$options[] = $tmp;
			}
		}

		return $options;
	}

	public function getPriorities()
	{
		$db      = JFactory::getDbo();
		$query   = $db->getQuery(true);
		$options = array();

		$query->select($db->qn('id'))
			->select($db->qn('name'))
			->from('#__rsticketspro_priorities')
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));
		$db->setQuery($query);
		if ($priorities = $db->loadObjectList())
		{
			foreach ($priorities as $priority)
			{
				$tmp = JHtml::_('select.option', $priority->id,
JText::_($priority->name));

				// Add the option object to the result set.
				$options[] = $tmp;
			}
		}

		return $options;
	}

	public function updateFields($id, $fields)
	{
		$db    = $this->getDbo();
		$query = $db->getQuery(true);

		$ticket = $this->getTicket($id);

		foreach ($fields as $field => $value)
		{
			// convert arrays to strings
			if (is_array($value))
			{
				$value = implode("\n", $value);
			}

			// get field id
			$query->select($db->qn('id'))
				->from($db->qn('#__rsticketspro_custom_fields'))
				->where($db->qn('name') . '=' .
$db->q($field))
				->where($db->qn('department_id') . '=' .
$db->q($ticket->department_id))
				->where($db->qn('published') . '=' .
$db->q(1));
			$db->setQuery($query);
			if ($field_id = $db->loadResult())
			{
				$query->clear();

				$query->select($db->qn('id'))
					->from($db->qn('#__rsticketspro_custom_fields_values'))
					->where($db->qn('custom_field_id') . '=' .
$db->q($field_id))
					->where($db->qn('ticket_id') . '=' .
$db->q($id));
				$db->setQuery($query);
				$value_id = $db->loadResult();

				$table = JTable::getInstance('Customfieldsvalues',
'RsticketsproTable');
				$table->save(array(
					'id'              => $value_id,
					'custom_field_id' => $field_id,
					'ticket_id'       => $id,
					'value'           => $value
				));
			}

			$query->clear();
		}
	}

	public function updateInfo($id, $data)
	{
		// bind id to data array
		$data['id'] = $id;
		// get db object
		$db = $this->getDbo();
		// original ticket
		$original = $this->getTicket($id);

		if (empty($data['department_id']))
		{
			$data['department_id'] = $original->department_id;
		}

		// department has changed
		if (!empty($data['department_id']) &&
$data['department_id'] != $original->department_id)
		{
			// generate new code based on department
			require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/ticket.php';
			$data['code'] =
RSTicketsProTicketHelper::generateCode($data['department_id']);

			// update custom fields if they match the ones of the new department
			$query = $db->getQuery(true);
			$query->select($db->qn('v.custom_field_id'))
				->select($db->qn('v.value'))
				->select($db->qn('cf.type'))
				->select($db->qn('cf.name'))
				->from($db->qn('#__rsticketspro_custom_fields_values',
'v'))
				->join('left',
$db->qn('#__rsticketspro_custom_fields', 'cf') .
' ON (' . $db->qn('cf.id') . '=' .
$db->qn('v.custom_field_id') . ')')
				->where($db->qn('v.ticket_id') . '=' .
$db->q($id))
				->where($db->qn('cf.published') . '=' .
$db->q(1));
			$db->setQuery($query);
			if ($currentFields = $this->_db->loadObjectList())
			{
				foreach ($currentFields as $field)
				{
					// check if there's a field that matches
					$query = $db->getQuery(true);
					$query->select($db->qn('id'))
						->from($db->qn('#__rsticketspro_custom_fields'))
						->where($db->qn('department_id') . '=' .
$db->q($data['department_id']))
						->where($db->qn('name') . ' LIKE ' .
$db->q($field->name))
						->where($db->qn('published') . '=' .
$db->q(1));
					$db->setQuery($query);
					// found a field with the same name
					if ($found = $db->loadObject())
					{
						$query = $db->getQuery(true);
						$query->select($db->qn('id'))
							->from($db->qn('#__rsticketspro_custom_fields_values'))
							->where($db->qn('custom_field_id') . '=' .
$db->q($found->id))
							->where($db->qn('ticket_id') . '=' .
$db->q($id));
						$db->setQuery($query);
						// did not find a duplicate
						if (!$db->loadResult())
						{
							// add the new value
							$value = JTable::getInstance('Customfieldsvalues',
'RsticketsproTable');
							$value->save(array(
								'custom_field_id' => $found->id,
								'ticket_id'       => $id,
								'value'           => $field->value
							));
						}
					}
				}
			}

			// If assigned staff does not have access to this new department, set it
as unassigned
			if ($original->staff_id > 0 &&
!$this->staffHasAccessToDepartment($original->staff_id,
$data['department_id']))
			{
				// If we change the department & staff member at the same time,
make sure the new staff member has access
				if (!empty($data['staff_id']))
				{
					if (!$this->staffHasAccessToDepartment($data['staff_id'],
$data['department_id']))
					{
						$data['staff_id'] = 0;
					}
				}
				else
				{
					$data['staff_id'] = 0;
				}
			}

			// send email to the staff member that gets assigned this ticket
			require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/emails.php';
			RSTicketsProEmailsHelper::sendEmail('notification_department_change',
array(
				'ticket'        => $original,
				'department_id' => $original->department_id,
				'to'            => $data['department_id'],
				'code'			=> $data['code']
			));

			RSTicketsProHelper::saveSystemMessage($id, array(
				'type' => 'department',
				'from' => $original->department_id,
				'to'   => $data['department_id'],
			));
		}

		// staff member has changed
		if (isset($data['staff_id']) &&
$data['staff_id'] != $original->staff_id)
		{
			RSTicketsProHelper::saveSystemMessage($id, array(
				'type' => 'staff',
				'from' => $original->staff_id,
				'to'   => $data['staff_id'],
			));
		}

		if (!empty($data['staff_id']) &&
$data['staff_id'] != $original->staff_id)
		{
			if (!$this->staffHasAccessToDepartment($data['staff_id'],
$data['department_id']))
			{
				unset($data['staff_id']);
				JFactory::getApplication()->enqueueMessage(JText::sprintf('RST_COULD_NOT_CHANGE_STAFF_MEMBER_DOES_NOT_BELONG_TO_TICKET_DEPARTMENT',
$original->code), 'warning');
			}
			else
			{
				// get department
				$department =
RSTicketsProHelper::getDepartment($data['department_id']);
				if ($department->notify_assign)
				{
					// bind new data
					$original->bind($data);

					// send email to the staff member that gets assigned this ticket
					require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/emails.php';
					RSTicketsProEmailsHelper::sendEmail('add_ticket_staff',
array(
						'ticket'        => $original,
						'department_id' => $department->id
					));
				}
			}
		}

		if (isset($data['status_id']) &&
$data['status_id'] != $original->status_id)
		{
			// add in History 
			if ($data['status_id'] == RST_STATUS_OPEN)
			{
				RSTicketsProHelper::addHistory($id, 'reopen');
			}
			elseif ($data['status_id'] == RST_STATUS_CLOSED)
			{
				$db    = $this->getDbo();
				$query = $db->getQuery(true);
				$query->clear()
					->update($db->qn('#__rsticketspro_tickets'))
					->set($db->qn('closed') . ' = ' .
$db->q(JFactory::getDate()->toSql()))
					->where($db->qn('id') . ' = ' .
$db->q($id));
				$db->setQuery($query);
				$db->execute();

				RSTicketsProHelper::addHistory($id, 'close');
			}
			elseif ($data['status_id'] == RST_STATUS_ON_HOLD)
			{
				RSTicketsProHelper::addHistory($id, 'onhold');
			}
			
			// If we've re-opened this ticket, don't close it again.
			if ($original->status_id == RST_STATUS_CLOSED)
			{
				$data['autoclose_sent'] = 0;
			}

			RSTicketsProHelper::saveSystemMessage($id, array(
				'type' => 'status',
				'from' => $original->status_id,
				'to'   => $data['status_id']
			));
		}

		if (isset($data['priority_id']) &&
$data['priority_id'] != $original->priority_id)
		{
			RSTicketsProHelper::saveSystemMessage($id, array(
				'type' => 'priority',
				'from' => $original->priority_id,
				'to'   => $data['priority_id']
			));
		}
		
		// validate the provided alternative email address if any
		if (!empty($data['alternative_email'])) {
			// remove any whitespaces
			$data['alternative_email'] =
trim($data['alternative_email']);

			if (strlen($data['alternative_email']) > 0 &&
!JMailHelper::isEmailAddress($data['alternative_email'])) {
				unset($data['alternative_email']);
			}
		}

		$ticket = $this->getTable();
		$ticket->save($data);
	}

	protected function staffHasAccessToDepartment($user_id, $department_id)
	{
		static $cache;

		if (!is_array($cache))
		{
			$cache 	= array();
			$db 	= $this->getDbo();

			$query = $db->getQuery(true)
				->select('*')
				->from($db->qn('#__rsticketspro_staff_to_department'));
			if ($results = $db->setQuery($query)->loadObjectList())
			{
				foreach ($results as $result)
				{
					if (!isset($cache[$result->user_id]))
					{
						$cache[$result->user_id] = array();
					}

					$cache[$result->user_id][] = $result->department_id;
				}
			}
		}
		
		if (!isset($cache[$user_id]))
		{
			return false;
		}

		return in_array($department_id, $cache[$user_id]);
	}

	public function reply($id, $data, $files)
	{
		$model       = $this->getInstance('Submit',
'RsticketsproModel');
		$departments = $model->getDepartments();
		$ticket      = $this->getTicket($id);
		$department  = $departments[$ticket->department_id];

		$data['files'] = array();
		// let's validate files if the department allows uploads for this
user
		if ($department->upload)
		{
			// too many files
			if ($department->upload_files > 0 && count($files) >
$department->upload_files)
			{
				$files = array_slice($files, 0, $department->upload_files);
			}

			$upload_extensions = explode(', ',
$department->upload_extensions);

			foreach ($files as $file)
			{
				if ($file['error'] == UPLOAD_ERR_NO_FILE)
				{
					continue;
				}

				if ($file['error'] != UPLOAD_ERR_OK)
				{
					switch ($file['error'])
					{
						default:
							$msg = 'RST_TICKET_UPLOAD_ERROR';
							break;
						case UPLOAD_ERR_INI_SIZE:
							$msg = 'RST_TICKET_UPLOAD_ERROR_INI_SIZE';
							break;
						case UPLOAD_ERR_FORM_SIZE:
							$msg = 'RST_TICKET_UPLOAD_ERROR_FORM_SIZE';
							break;
						case UPLOAD_ERR_PARTIAL:
							$msg = 'RST_TICKET_UPLOAD_ERROR_PARTIAL';
							break;
						case UPLOAD_ERR_NO_TMP_DIR:
							$msg = 'RST_TICKET_UPLOAD_ERROR_NO_TMP_DIR';
							break;
						case UPLOAD_ERR_CANT_WRITE:
							$msg = 'RST_TICKET_UPLOAD_ERROR_CANT_WRITE';
							break;
						case UPLOAD_ERR_EXTENSION:
							$msg = 'RST_TICKET_UPLOAD_ERROR_PHP_EXTENSION';
							break;
					}

					$this->setError(JText::sprintf($msg, $file['name']));

					return false;
				}

				// is this an allowed extension?
				if
(!RSTicketsProHelper::isAllowedExtension(RSTicketsProHelper::getExtension($file['name']),
$upload_extensions))
				{
					$this->setError(JText::sprintf('RST_TICKET_UPLOAD_EXTENSION_ERROR',
$file['name'], $department->upload_extensions));

					return false;
				}
				// check file size
				if ($department->upload_size > 0 &&
$file['size'] > $department->upload_size * 1048576)
				{
					$this->setError(JText::sprintf('RST_TICKET_UPLOAD_SIZE_ERROR',
$file['name'], $department->upload_size));

					return;
				}

				$data['files'][] = array(
					'src'      => 'upload',
					'tmp_name' => $file['tmp_name'],
					'name'     => $file['name']
				);
			}
		}

		// must write a message
		if (empty($data['message']))
		{
			$this->setError(JText::_('RST_TICKET_REPLY_ERROR'));

			return false;
		}

        // Need to check consent
        if (RSTicketsProHelper::getConfig('forms_consent')
&& empty($data['consent']))
        {
           
$this->setError(JText::_('COM_RSTICKETSPRO_CONSENT_IS_NEEDED_TO_SUBMIT_THIS_FORM'));
            return false;
        }

		require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/ticket.php';

		// trigger event after saving the reply
		RSTicketsProHelper::trigger('onBeforeStoreTicketReply',
array($data));

		$ticket = new RSTicketsProTicketHelper();
		$ticket->bind($data);
		if (!$ticket->saveMessage())
		{
			$this->setError($ticket->getError());

			return false;
		}

		// trigger event after saving the reply
		RSTicketsProHelper::trigger('onAfterStoreTicketReply',
array($data));

		return true;
	}

	public function setRating($id, $rating)
	{
		if ($rating > 5)
		{
			$rating = 5;
		}
		if ($rating < 1)
		{
			$rating = 1;
		}

		// original ticket
		$object = (object) array(
			'id'       => $id,
			'feedback' => $rating
		);
		JFactory::getDbo()->updateObject('#__rsticketspro_tickets',
$object, array('id'));
	}

	public function isConvertedToKB($id)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select('*')
			->from($db->qn('#__rsticketspro_kb_content'))
			->where($db->qn('from_ticket_id') . '=' .
$db->q($id));
		$db->setQuery($query);

		return $db->loadObject();
	}

	public function getIsPrint()
	{
		return
JFactory::getApplication()->input->getInt('print');
	}

	public function getRSTabs()
	{
		return new RsticketsproAdapterTabs('com-rsticketspro-ticket');
	}

	public function getRSAccordion()
	{
		require_once JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/helpers/adapters/accordion.php';

		$tabs = new RSAccordion('com-rsticketspro-ticket');

		return $tabs;
	}

	public function getRSPlain()
	{
		$plain = new
RsticketsproAdapterPlain('com-rsticketspro-ticket');

		return $plain;
	}

	protected function getId()
	{
		$input = JFactory::getApplication()->input;
		$id    = $input->getInt('id', 0);
		$cid   = $input->getInt('cid', 0);

		if (!empty($cid) && empty($id))
		{
			return $cid;
		}

		return $id;
	}
}models/ticketmessage.php000064400000003523151163476010011377
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelTicketmessage extends JModelAdmin
{
	public function getTable($type = 'Ticketmessages', $prefix =
'RsticketsproTable', $config = array())
	{
		return parent::getTable($type, $prefix, $config);
	}
	
	public function getForm($data = array(), $loadData = true)
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.ticketmessage',
'ticketmessage', array('control' =>
'jform', 'load_data' => $loadData));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}
	
	protected function loadFormData()
	{
		// Check the session for previously entered form data.
		$app  = JFactory::getApplication();
		$data =
$app->getUserState('com_rsticketspro.edit.ticketmessage.data',
array());
		
		if (empty($data))
		{
			$data = $this->getItem();
		}

		return $data;
	}

	protected function canDelete($message)
	{
		$messageUserId = $message->user_id;
		$meId		   = JFactory::getUser()->id;
		$isStaff 	   = RSTicketsProHelper::isStaff($meId);
		$permissions   = RSTicketsProHelper::getCurrentPermissions();
		
		$canDeleteReplies 			= $permissions->delete_ticket_replies;
		$canDeleteCustomerReplies 	=
$permissions->delete_ticket_replies_customers;
		$canDeleteStaffReplies 		= $permissions->delete_ticket_replies_staff;
		
		return $isStaff && (
			($canDeleteReplies && $messageUserId == $meId) ||
			($canDeleteCustomerReplies && $messageUserId != $meId &&
!RSTicketsProHelper::isStaff($messageUserId)) ||
			($canDeleteStaffReplies && $messageUserId != $meId &&
RSTicketsProHelper::isStaff($messageUserId))
		);
	}
}models/tickets.php000064400000040321151163476010010212 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelTickets extends JModelList
{
	protected $params = null;
	protected $_permissions = array();

	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'date', 'last_reply', 'flagged',
'code', 'subject', 'customer',
'priority', 'status', 'staff',
'department_id', 'priority_id', 'status_id'
			);

			if (RSTicketsProHelper::getConfig('enable_time_spent'))
			{
				$config['filter_fields'][] = 'time_spent';
			}
		}

		parent::__construct($config);

		$app = JFactory::getApplication();
		$this->params = $app->isClient('site') ?
$app->getParams('com_rsticketspro') : new JRegistry();
		$this->setPermissions();
	}

	public function getBulkForm()
	{
		// Get the form.
		$form = $this->loadForm('com_rsticketspro.tickets',
'tickets', array('control' => null,
'load_data' => false));
		if (empty($form))
		{
			return false;
		}

		return $form;
	}

	public function getFilterForm($data = array(), $loadData = true)
	{
		$form = parent::getFilterForm($data, $loadData);

		foreach (array('department_id', 'priority_id',
'status_id') as $key)
		{
			$$key = $this->getState('filter.' . $key, array());

			if (is_array($$key) && count($$key) > 1)
			{
				$form->setFieldAttribute($key, 'multiple',
'true', 'filter');
				$form->setFieldAttribute($key, 'class',
'advancedSelect', 'filter');
			}
		}

		return $form;
	}

	protected function setPermissions()
	{
		$this->is_staff 	= RSTicketsProHelper::isStaff();
		$this->_permissions = RSTicketsProHelper::getCurrentPermissions();
	}

	public function getIsSearching() {
		// get filtering states
		$search  	 	= $this->getState('filter.search');
		$flagged 	 	= $this->getState('filter.flagged', 0);
		$priority_id 	= $this->getState('filter.priority_id',
array());
		$status_id 	 	= $this->getState('filter.status_id',
array());
		$department_id 	= $this->getState('filter.department_id',
array());
		$customer 	 	= $this->getState('filter.customer',
'');
		$staff 	 	 	= $this->getState('filter.staff',
'');

		return $search != '' || $flagged || $priority_id || $status_id
|| $department_id || $customer != '' || $staff != '';
	}

	protected function setSearch($values=array()) {
		$app = JFactory::getApplication();

		if (isset($values['search'])) {
			$app->setUserState($this->context.'.filter.search',
$values['search']);
		}
		if (isset($values['flagged'])) {
			$app->setUserState($this->context.'.filter.flagged',
$values['flagged']);
		}
		if (isset($values['priority_id'])) {
			$app->setUserState($this->context.'.filter.priority_id',
$values['priority_id']);
		}
		if (isset($values['status_id'])) {
			$app->setUserState($this->context.'.filter.status_id',
$values['status_id']);
		}
		if (isset($values['department_id'])) {
			$app->setUserState($this->context.'.filter.department_id',
$values['department_id']);
		}
		if (isset($values['customer'])) {
			$app->setUserState($this->context.'.filter.customer',
$values['customer']);
		}
		if (isset($values['staff'])) {
			$app->setUserState($this->context.'.filter.staff',
$values['staff']);
		}
		if (!empty($values['ordering'])) {
			$app->setUserState($this->context.'.ordercol',
$values['ordering']);
		}
		if (!empty($values['direction'])) {
			$app->setUserState($this->context.'.orderdirn',
$values['direction']);
		}
		// performing a predefined search?
		if (isset($values['predefined_search'])) {
			$app->setUserState($this->context.'.filter.predefined_search',
$values['predefined_search']);
		}
	}

	public function getPredefinedSearch()
	{
		return
JFactory::getApplication()->getUserState($this->context.'.filter.predefined_search',
0);
	}

	public function resetSearch() {
		$values = array(
			'search' => '',
			'flagged' => 0,
			'priority_id' => array(),
			'status_id' => array(),
			'department_id' => array(),
			'customer' => '',
			'staff' => '',
			'predefined_search' => 0,
			'ordering' => 'date',
			'direction' => 'desc'
		);
		JFactory::getApplication()->setUserState($this->context.'.limitstart',
0);
		$this->setSearch($values);
	}

	public function performSearch($table) {
		$values = array(
			'search' => '',
			'flagged' => 0,
			'priority_id' => array(),
			'status_id' => array(),
			'department_id' => array(),
			'customer' => '',
			'staff' => '',
			'predefined_search' => $table->id,
			'ordering' => 'date',
			'direction' => 'desc'
		);

		if (is_array($table->params)) {
			$values = array_merge($values, $table->params);
			// legacy
			if (isset($values['filter_word'])) {
				$values['search'] = $values['filter_word'];
			}
		}
		$this->setSearch($values);
	}

	public function getSearches() {
		$db 	= $this->getDbo();
		$query	= $db->getQuery(true);
		$user 	= JFactory::getUser();

		$query->select('*')
			->from($db->qn('#__rsticketspro_searches'))
			->where($db->qn('user_id').'='.$db->q($user->get('id')))
			->where($db->qn('published').'='.$db->q(1))
			->order($db->qn('ordering').'
'.$db->escape('asc'));
		$db->setQuery($query);
		$list = $db->loadObjectList();

		$current = $this->getPredefinedSearch();
		foreach ($list as $k => $item) {
			$item->current = $current == $item->id;
			$list[$k] = $item;
		}

		return $list;
	}

	public function getPermissions() {
		$mainframe = JFactory::getApplication();
		if ($mainframe->isClient('administrator') &&
empty($this->_permissions))
		{
			$mainframe->enqueueMessage(JText::_('RST_PERMISSIONS_ERROR'),
'warning');
			$mainframe->redirect(RSTicketsProHelper::route('index.php?option=com_rsticketspro',
false));
		}

		return @$this->_permissions;
	}

	public function writeCSV($from, $fileHash = '')
	{
		if (empty($this->_permissions->export_tickets))
		{
			throw new
Exception(JText::_('RST_STAFF_CANNOT_EXPORT_TICKETS'));
		}

		require_once
JPATH_COMPONENT_ADMINISTRATOR.'/helpers/export.php';

		// setting the function arguments
		$query  		= $this->getListQuery();
		$totalItems  	= (int) $this->getTotalItems();

		$filename 		= JText::_('COM_RSTICKETSPRO_TICKETS');

		return RsticketsExport::writeCSV($query, $totalItems, $from, $fileHash,
$filename);
	}

	protected function getListQuery() {
		$db 	= JFactory::getDbo();
		$app	= JFactory::getApplication();
		$query 	= $db->getQuery(true);
		$user   = JFactory::getUser();

		// get filtering states
		$search  	 	= $this->getState('filter.search');
		$flagged 	 	= $this->getState('filter.flagged', 0);
		$priority_id 	= $this->getState('filter.priority_id',
array());
		$status_id 	 	= $this->getState('filter.status_id',
array());
		$department_id 	= $this->getState('filter.department_id',
array());
		$customer 	 	= $this->getState('filter.customer',
'');
		$staff 	 	 	= $this->getState('filter.staff',
'');

		// Workarounds to accept integers and arrays
		foreach (array('department_id', 'priority_id',
'status_id') as $key)
		{
			if (!is_array($$key))
			{
				$$key = array($$key);
			}
			$$key = array_filter($$key);
		}

		$userInfo = RSTicketsProHelper::getConfig('show_user_info');
		$query->select($db->qn('c.' . $userInfo,
'customer'))
			->select($db->qn('s.' . $userInfo, 'staff'));

		$query->select($db->qn('t').'.*')
			->select($db->qn('st.name', 'status'))
			->select($db->qn('pr.name', 'priority'))
			->from($db->qn('#__rsticketspro_tickets',
't'))
			->join('left', $db->qn('#__users',
'c').' ON
('.$db->qn('t.customer_id').'='.$db->qn('c.id').')')
			->join('left', $db->qn('#__users',
's').' ON
('.$db->qn('t.staff_id').'='.$db->qn('s.id').')')
			->join('left',
$db->qn('#__rsticketspro_statuses', 'st').' ON
('.$db->qn('t.status_id').'='.$db->qn('st.id').')')
			->join('left',
$db->qn('#__rsticketspro_priorities', 'pr').'
ON
('.$db->qn('t.priority_id').'='.$db->qn('pr.id').')');

		if ($this->is_staff) {
			$departments = RSTicketsProHelper::getCurrentDepartments();
			$show_filter =
$this->params->get('show_filter','');

			if (!empty($departments)) {
				if ($show_filter != 'show_assigned' && $show_filter
!= 'show_unassigned') {
					$query->where('('.$db->qn('department_id').'
IN ('.$this->quoteImplode($departments).') OR
'.$db->qn('customer_id').'='.$db->q($user->get('id')).')');
				} else {
					$query->where($db->qn('department_id').' IN
('.$this->quoteImplode($departments).')');
				}
			}

			// do we have a filter set ?
			if ($app->isClient('site')) {
				if ($show_filter) {
					switch ($show_filter)
					{
						case 'show_assigned':
							$query->where($db->qn('staff_id').'='.$db->q($user->get('id')));
							break;

						case 'show_submitted':
							$query->where($db->qn('customer_id').'='.$db->q($user->get('id')));
							break;

						case 'show_both':
							$query->where('('.$db->qn('staff_id').'='.$db->q($user->get('id')).'
OR
'.$db->qn('customer_id').'='.$db->q($user->get('id')).')');
							break;

						case 'show_unassigned':
							$query->where($db->qn('staff_id').'='.$db->q(0));
							break;
					}
				}
			}

			// can't see unassigned tickets
			if (!$this->_permissions->see_unassigned_tickets) {
				$query->where($db->qn('staff_id').'>'.$db->q(0));
			}
			// can't see other (assigned) tickets
			if (!$this->_permissions->see_other_tickets) {
				$staffIds = array(
					$db->q(0),
					$db->q($user->get('id'))
				);

				$query->where($db->qn('staff_id').' IN
('.implode(', ', $staffIds).')');
			}

			// searching for flagged?
			if ($flagged) {
				$query->where($db->qn('flagged').'='.$db->q(1));
			}
		} else {
			$query->where($db->qn('customer_id').'='.$db->q($user->get('id')));
		}

		if ($app->isClient('site')) {
			// showing a specific priority?
			if ($this->params->get('default_priority') &&
empty($priority_id)) {
				$default_priority =
$this->params->get('default_priority');

				if (is_array($default_priority)) {
					$query->where($db->qn('priority_id').' IN
('.$this->quoteImplode($default_priority).')');
				}
			}
			// showing a specific status?
			if ($this->params->get('default_status') &&
empty($status_id)) {
				$default_status =
$this->params->get('default_status');
				if (is_array($default_status)) {
					$query->where($db->qn('status_id').' IN
('.$this->quoteImplode($default_status).')');
				}
			}
		}

		// priority search
		if (!empty($priority_id)) {
			$query->where($db->qn('priority_id').' IN
('.$this->quoteImplode($priority_id).')');
		}

		// status search
		if (!empty($status_id)) {
			$query->where($db->qn('status_id').' IN
('.$this->quoteImplode($status_id).')');
		}

		// are we searching?
		if ($search != '') {
			$search = $db->q('%'.str_replace(' ',
'%', $db->escape($search, true)).'%', false);

			$subquery = $db->getQuery(true);
			$subquery->select($db->qn('ticket_id'))
				->from($db->qn('#__rsticketspro_ticket_messages'))
				->where($db->qn('user_id').'!='.$db->q('-1'))
				->where($db->qn('message').' LIKE
'.$search);

			$query->where('('.$db->qn('code').' LIKE
'.$search.' OR '.$db->qn('subject').' LIKE
'.$search.' OR '.$db->qn('t.id').' IN
('.(string) $subquery.'))');
		}

		// specific customer?
		if ($customer) {
			// let's see if it's ID:number
			if (substr($customer, 0, strlen('ID:')) == 'ID:') {
				$parts = explode(':', $customer, 2);
				$id = (int) $parts[1];

				$query->where($db->qn('customer_id').'='.$db->q($id));
			} else {
				$customer = $db->q('%'.str_replace(' ',
'%', $db->escape($customer, true)).'%', false);

				$query->where('('.$db->qn('c.username').'
LIKE '.$customer.' OR
'.$db->qn('c.name').' LIKE '.$customer.'
OR '.$db->qn('c.email').' LIKE
'.$customer.')');
			}
		}

		// specific staff member?
		if ($staff || $staff === '0') {
			// legacy
			if ($staff === '0') {
				$staff = 'ID:0';
			}
			// let's see if it's ID:number
			if (substr($staff, 0, strlen('ID:')) == 'ID:') {
				$parts = explode(':', $staff, 2);
				$id = (int) $parts[1];

				$query->where($db->qn('staff_id').'='.$db->q($id));
			} else {
				$staff = $db->q('%'.str_replace(' ',
'%', $db->escape($staff, true)).'%', false);

				$query->where('('.$db->qn('s.username').'
LIKE '.$staff.' OR '.$db->qn('s.name').'
LIKE '.$staff.' OR '.$db->qn('s.email').'
LIKE '.$staff.')');
			}
		}

		if ($department_id) {
			$query->where($db->qn('department_id').' IN
('.$this->quoteImplode($department_id).')');
		}

		$ordering = $this->getState('list.ordering',
'date');
		$dir	  = $this->getState('list.direction',
'desc');

		// order by
		switch ($ordering)
		{
			case 'priority':
				$values = array();
				$priorities = $this->getPriorities($dir);
				foreach ($priorities as $priority)
				{
					$values[] = $priority->name;
				}
				$query->order('FIELD(' . $db->qn($ordering) . ',
' . $this->quoteImplode($values) . ')');
				break;

			case 'status':
				$values = array();
				$statuses = $this->getStatuses($dir);
				foreach ($statuses as $status)
				{
					$values[] = $status->name;
				}
				$query->order('FIELD(' . $db->qn($ordering) . ',
' . $this->quoteImplode($values) . ')');
				break;

			default:
				$query->order($db->qn($ordering).'
'.$db->escape($dir));
				break;
		}

		return $query;
	}

	protected function quoteImplode($array) {
		$db = JFactory::getDbo();
		foreach ($array as $k => $v) {
			$array[$k] = $db->q($v);
		}

		return implode(',', $array);
	}

	protected function populateState($ordering = null, $direction = null)
	{
		// Status ID
		$this->setState('filter.status_id',
$this->getUserStateFromRequest($this->context.'.filter.status_id',
'status_id', array(), 'array', false));

		// Department ID
		$this->setState('filter.department_id',
$this->getUserStateFromRequest($this->context.'.filter.department_id',
'department_id', array(), 'array', false));

		// Priority ID
		$this->setState('filter.priority_id',
$this->getUserStateFromRequest($this->context.'.filter.priority_id',	'priority_id',
array(), 'array', false));

		// Flagged fix
		$flagged =
JFactory::getApplication()->input->get('flagged', null,
'none');
		if (!$flagged)
		{
			JFactory::getApplication()->input->set('flagged', 0);
		}
		$this->setState('filter.flagged',
$this->getUserStateFromRequest($this->context.'.filter.flagged',
'flagged', 0, 'none', true));

		// Search keyword
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context.'.filter.search',
'filter_search', '', 'none', true));

		// Customer
		$this->setState('filter.customer',
$this->getUserStateFromRequest($this->context.'.filter.customer',
'customer', '', 'none', true));

		// Staff
		$this->setState('filter.staff',
$this->getUserStateFromRequest($this->context.'.filter.staff',
'staff', '', 'none', true));

		// List state information.
		$column = $this->params->get('orderby',
'date');
		$dir	= $this->params->get('direction',
'desc');

		parent::populateState($column, $dir);
	}

	public function getPriorities($dir = 'asc') {
		$db 	= $this->getDbo();
		$query 	= $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__rsticketspro_priorities'))
			->where($db->qn('published').'='.$db->q(1))
			->order($db->qn('ordering').'
'.$db->escape($dir));
		$db->setQuery($query);
		return $db->loadObjectList();
	}

	public function getStatuses($dir = 'asc') {
		$db 	= $this->getDbo();
		$query 	= $db->getQuery(true);

		$query->select('*')
			->from($db->qn('#__rsticketspro_statuses'))
			->where($db->qn('published').'='.$db->q(1))
			->order($db->qn('ordering').'
'.$db->escape($dir));
		$db->setQuery($query);
		return $db->loadObjectList();
	}

	public function getStart() {
		$app = JFactory::getApplication();
		if ($app->isClient('site')) {
			return $app->input->get('limitstart', 0,
'uint');
		} else {
			return parent::getStart();
		}
	}

	public function getTotalItems() {
		$query  = $this->getListQuery();
		$db     = JFactory::getDbo();

		$query->clear('select')
			->clear('order')
			->select('COUNT('.$db->qn('t.id').')');

		return (int) $db->setQuery($query)->loadResult();
	}
}models/users.php000064400000006722151163476010007714 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproModelUsers extends JModelList
{
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'name', 'username',
'email'
			);
		}

		parent::__construct($config);
	}
	
	protected function populateState($ordering = 'name', $direction
= 'asc')
	{
		// Load the filter state.
		$this->setState('filter.search',
$this->getUserStateFromRequest($this->context .
'.filter.search', 'filter_search'));

		// List state information.
		parent::populateState($ordering, $direction);
	}

	protected function getListQuery()
	{
		// create a new query object.
		$db	 	= $this->getDbo();
		$query 	= $db->getQuery(true);

		// get current user
		$user = JFactory::getUser();
		
		// get current permissions
		$permissions = RSTicketsProHelper::getCurrentPermissions();
		
		// select the required fields from the table.
		$query->select($db->qn('id'))
			  ->select($db->qn('name'))
			  ->select($db->qn('username'))
			  ->select($db->qn('email'))
			  ->from($db->qn('#__users'));
		
		// not allowed to add his own tickets
		if (!$permissions || !$permissions->add_ticket)
		{
			$query->where($db->qn('id').'!='.$db->q($user->get('id')));
		}
		
		// not allowed to add tickets on behalf of customers
		if (!$permissions || !$permissions->add_ticket_customers)
		{
			$subquery = $db->getQuery(true);
			
			$subquery->select($db->qn('user_id'))
					 ->from($db->qn('#__rsticketspro_staff'));
			$query->where($db->qn('id').' IN ('.(string)
$subquery.')');
		}
		
		// not allowed to add tickets on behalf of other staff members
		if (!$permissions || !$permissions->add_ticket_staff)
		{
			$subquery = $db->getQuery(true);
			
			$subquery->select($db->qn('user_id'))
				  ->from($db->qn('#__rsticketspro_staff'));
			// special condition here - if the staff can submit tickets on his own
we need to exclude him from the list of staff members
			if ($permissions && $permissions->add_ticket)
			{
				$subquery->where($db->qn('user_id').'!='.$db->q($user->get('id')));
			}
			
			$query->where($db->qn('id').' NOT IN
('.(string) $subquery.')');
		}
		
		// Filter the items over the search string if set.
		$search = $this->getState('filter.search');
		if (strlen($search))
		{
			if (stripos($search, 'id:') === 0)
			{
				$query->where($db->qn('id') . ' = ' . (int)
substr($search, 3));
			}
			else
			{
				// Escape the search token.
				$token = $db->q('%' . str_replace(' ',
'%', $db->escape($search, true)) . '%', false);

				// Compile the different search clauses.
				$searches = array();
				$searches[] = $db->qn('name').' LIKE ' .
$token;
				$searches[] = $db->qn('username').' LIKE ' .
$token;
				$searches[] = $db->qn('email').' LIKE ' .
$token;

				// Add the clauses to the query.
				$query->where('(' . implode(' OR ', $searches) .
')');
			}
		}
		
		// Add the list ordering clause.
		$query->order($db->escape($this->getState('list.ordering',
'name')) . ' ' .
$db->escape($this->getState('list.direction',
'ASC')));

		return $query;
	}
	
	public function getField()
	{
		return
JFactory::getApplication()->input->getCmd('field');
	}
}rsticketspro.php000064400000003721151163476010010020 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// Access check.
$user = JFactory::getUser();
if (!$user->authorise('core.manage',
'com_rsticketspro'))
{
    throw new Exception(JText::_('JERROR_ALERTNOAUTHOR'), 403);
}

$lang = JFactory::getLanguage();

// load frontend
$lang->load('com_rsticketspro', JPATH_SITE, 'en-GB',
true);
$lang->load('com_rsticketspro', JPATH_SITE,
$lang->getDefault(), true);
$lang->load('com_rsticketspro', JPATH_SITE, null, true);

// load backend
$lang->load('com_rsticketspro', JPATH_ADMINISTRATOR,
'en-GB', true);
$lang->load('com_rsticketspro', JPATH_ADMINISTRATOR,
$lang->getDefault(), true);
$lang->load('com_rsticketspro', JPATH_ADMINISTRATOR, null,
true);

// Require helper files
require_once __DIR__ . '/helpers/adapter.php';
require_once __DIR__ . '/helpers/rsticketspro.php';
require_once __DIR__ . '/helpers/toolbar.php';

JHtml::_('jquery.framework', true);
JHtml::_('stylesheet',
'com_rsticketspro/rsticketspro.css', array('relative'
=> true, 'version' => 'auto'));
JHtml::_('stylesheet', 'com_rsticketspro/icons.css',
array('relative' => true, 'version' =>
'auto'));
JHtml::_('script', 'com_rsticketspro/rsticketspro.js',
array('relative' => true, 'version' =>
'auto'));

if (version_compare(JVERSION, '4.0', '>='))
{
	JHtml::_('stylesheet', 'com_rsticketspro/style40.css',
array('relative' => true, 'version' =>
'auto'));
}
else
{
	JHtml::_('stylesheet', 'com_rsticketspro/style30.css',
array('relative' => true, 'version' =>
'auto'));
}

// Require the base controller
require_once __DIR__ . '/controller.php';

$controller	= JControllerLegacy::getInstance('Rsticketspro');
$task = JFactory::getApplication()->input->get('task');
$controller->execute($task);
$controller->redirect();rsticketspro.xml000064400000006204151163476010010030
0ustar00<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.7.0"
method="upgrade">
	<name>com_rsticketspro</name>
	<creationDate>March 2015</creationDate>
	<author>RSJoomla!</author>
	<copyright>(C) 2010-2019 www.rsjoomla.com</copyright>
	<license>http://www.gnu.org/copyleft/gpl.html
GNU/GPL</license> 
	<authorEmail>support@rsjoomla.com</authorEmail>
	<authorUrl>www.rsjoomla.com</authorUrl>
	<version>3.0.1</version>
	<description>COM_RSTICKETSPRO_INSTALL_DESC</description>
	<scriptfile>script.rsticketspro.php</scriptfile>

	<updateservers>
		<server type="extension" priority="1"
name="RSTickets!
Pro">https://www.rsjoomla.com/updates/com_rsticketspro/Component/com_rsticketspro_2.5-3.0.xml</server>
	</updateservers>

	<install>
		<sql>
			<file driver="mysql"
charset="utf8">sql/install.sql</file>
			<file driver="mysql"
charset="utf8">sql/sample.sql</file>
		</sql>
	</install>

	<uninstall>
		<sql>
			<file driver="mysql"
charset="utf8">sql/uninstall.sql</file>
		</sql>
	</uninstall>

	<files folder="site">
		<filename>controller.php</filename>
		<filename>index.html</filename>
		<filename>router.php</filename>
		<filename>rsticketspro.php</filename>
		<folder>assets</folder>
		<folder>controllers</folder>
		<folder>models</folder>
		<folder>views</folder>
	</files>
	
	<media destination="com_rsticketspro"
folder="media">
		<folder>css</folder>
		<folder>images</folder>
		<folder>js</folder>
		<filename>index.html</filename>
	</media>

	<languages folder="site/language">
		<language
tag="en-GB">en-GB/en-GB.com_rsticketspro.ini</language>
	</languages>

	<administration>

		<menu>RSTicketsPro</menu>
		<submenu>
			<menu
link="option=com_rsticketspro">COM_RSTICKETSPRO_OVERVIEW</menu>
			<menu
view="tickets">COM_RSTICKETSPRO_MANAGE_TICKETS</menu>
			<menu
view="departments">COM_RSTICKETSPRO_DEPARTMENTS</menu>
			<menu
view="customfields">COM_RSTICKETSPRO_CUSTOM_FIELDS</menu>
			<menu
view="groups">COM_RSTICKETSPRO_GROUPS</menu>
			<menu
view="staffs">COM_RSTICKETSPRO_STAFF_MEMBERS</menu>
			<menu
view="priorities">COM_RSTICKETSPRO_PRIORITIES</menu>
			<menu
view="statuses">COM_RSTICKETSPRO_STATUSES</menu>
			<menu
view="emails">COM_RSTICKETSPRO_EMAIL_MESSAGES</menu>
			<menu
view="configuration">COM_RSTICKETSPRO_CONFIGURATION</menu>
			<menu
view="kbcategories">COM_RSTICKETSPRO_KB_CATEGORIES</menu>
			<menu
view="kbarticles">COM_RSTICKETSPRO_KB_ARTICLES</menu>
			<menu
view="kbrules">COM_RSTICKETSPRO_KB_CONVERSION_RULES</menu>
		</submenu>
		
		<files folder="admin">
			<filename>access.xml</filename>
			<filename>config.xml</filename>
			<filename>controller.php</filename>
			<filename>index.html</filename>
			<filename>rsticketspro.php</filename>
			<folder>controllers</folder>
			<folder>helpers</folder>
			<folder>models</folder>
			<folder>sql</folder>
			<folder>tables</folder>
			<folder>views</folder>
		</files>

		<languages folder="admin/language">
			<language
tag="en-GB">en-GB/en-GB.com_rsticketspro.ini</language>
			<language
tag="en-GB">en-GB/en-GB.com_rsticketspro.sys.ini</language>
		</languages>

	</administration>
</extension>script.rsticketspro.php000064400000045006151163476010011325
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class com_rsticketsproInstallerScript
{
	protected $plugins = array(
		array('element' => 'rsticketspro',
'type' => 'plugin', 'folder' =>
'system', 'source' => 'plg_system',
'name' => 'System - RSTickets! Pro Plugin'),
		array('element' => 'rsticketspro',
'type' => 'plugin', 'folder' =>
'user', 'source' => 'plg_user',
'name' => 'User - RSTickets! Pro Staff'),
		array('element' => 'rsticketspro',
'type' => 'plugin', 'folder' =>
'privacy', 'source' =>
'plg_rsticketsproprivacy', 'name' => 'Privacy -
RSTickets! Pro'),
		array('element' => 'rsticketspro',
'type' => 'plugin', 'folder' =>
'installer', 'source' => 'plg_installer',
'name' => 'Installer - RSTickets! Pro'),
		array('element' => 'rsticketsprocontent',
'type' => 'plugin', 'folder' =>
'search', 'source' => 'plg_search',
'name' => 'Search - RSTickets! Pro Knowledgebase'),
	);

	public function uninstall($parent)
	{
		// Get Dbo
		$db = JFactory::getDbo();
		
		// Get a new installer
		foreach ($this->plugins as $plugin)
		{
			$query = $db->getQuery(true)
				->select($db->qn('extension_id'))
				->from($db->qn('#__extensions'))
				->where($db->qn('element') . ' = ' .
$db->q($plugin['element']))
				->where($db->qn('type') . ' = ' .
$db->q($plugin['type']))
				->where($db->qn('folder') . ' = ' .
$db->q($plugin['folder']));
			if ($extension_id = $db->setQuery($query)->loadResult())
			{
				$installer = new JInstaller();

				$installer->uninstall('plugin', $extension_id);
			}
		}
	}
	
	
	public function preflight($type, $parent) {		
		$jversion = new JVersion();
		
		if (!$jversion->isCompatible('3.8.0')) {
			JFactory::getApplication()->enqueueMessage('Please upgrade to at
least Joomla! 3.8.0 before continuing!', 'error');
			return false;
		}
		
		return true;
	}
	
	public function postflight($type, $parent)
	{
		if ($type == 'uninstall')
		{
			return true;
		}
		
		$db 			= JFactory::getDbo();
		$this->source 	=
$parent->getParent()->getPath('source');

		$messages = array(
			'plugins' => array()
		);

		foreach ($this->plugins as $plugin)
		{
			$tmp = (object) array(
				'name' 		=> $plugin['name'],
				'status' 	=> 'not-ok',
				'text' 		=> 'Not installed'
			);

			$installer = new JInstaller();

			if ($installer->install($this->source . '/other/' .
$plugin['source']))
			{
				$query = $db->getQuery(true)
					->update('#__extensions')
					->set($db->qn('enabled').'='.$db->q(1))
					->where($db->qn('element') . ' = ' .
$db->q($plugin['element']))
					->where($db->qn('type') . ' = ' .
$db->q($plugin['type']))
					->where($db->qn('folder') . ' = ' .
$db->q($plugin['folder']));

				$db->setQuery($query)->execute();

				$tmp->status = 'ok';
				$tmp->text = 'Installed';
			}

			$messages['plugins'][] = $tmp;
		}

		if
(file_exists(JPATH_SITE.'/plugins/user/rsticketspro/rsticketspro.php'))
		{
			require_once JPATH_SITE .
'/plugins/user/rsticketspro/rsticketspro.php';

			if (class_exists('plgUserRsticketspro'))
			{
				plgUserRsticketspro::onUserLogin($user=array(), $options=array());
			}
		}
		
		if ($type == 'update')
		{
			$this->updateProcess();
			
			$sqlfile = JPATH_ADMINISTRATOR .
'/components/com_rsticketspro/sql/install.sql';
			$buffer = file_get_contents($sqlfile);
			if ($buffer === false)
			{
               
JFactory::getApplication()->enqueueMessage(JText::_('JLIB_INSTALLER_ERROR_SQL_READBUFFER'),
'warning');
			}
			else
			{
				// Process each query in the $queries array (split out of sql file).
				if ($queries = $db->splitSql($buffer))
				{
					foreach ($queries as $query)
					{
						$db->setQuery($query);
						try
						{
							$db->execute();
						}
						catch (Exception $e)
						{
							JFactory::getApplication()->enqueueMessage(JText::sprintf('JLIB_INSTALLER_ERROR_SQL_ERROR',
$e->getMessage()), 'warning');
						}
					}
				}
			}
		}

		$this->showInstallMessage($messages);

		return true;
	}
	
	protected function escape($string) {
		return htmlentities($string, ENT_COMPAT, 'utf-8');
	}
	
	protected function isColumnInt($column) {
		return substr(strtolower($column), 0, 3) == 'int';
	}
	
	protected function updateProcess() {
		$db = JFactory::getDbo();
		
		// #__rsticketspro_kb_content updates
		$columns =
$db->getTableColumns('#__rsticketspro_kb_content');
		if ($this->isColumnInt($columns['created'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_kb_content CHANGE
`created` `created` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_kb_content SET `created` =
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('created')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('created')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_kb_content SET `created` =
'0000-00-00 00:00:00' WHERE `created` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_kb_content CHANGE
`created` ".$db->qn('created')." DATETIME NOT NULL
DEFAULT '0000-00-00 00:00:00'");
			$db->execute();
		}
		if ($this->isColumnInt($columns['modified'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_kb_content CHANGE
`modified` `modified` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_kb_content SET `modified`
=
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('modified')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('modified')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_kb_content SET `modified`
= '0000-00-00 00:00:00' WHERE `modified` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_kb_content CHANGE
`modified` ".$db->qn('modified')." DATETIME NOT NULL
DEFAULT '0000-00-00 00:00:00'");
			$db->execute();
		}
		
		// #__rsticketspro_ticket_notes updates
		$columns =
$db->getTableColumns('#__rsticketspro_ticket_notes');
		if ($this->isColumnInt($columns['date'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_notes CHANGE
`date` `date` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_notes SET `date` =
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('date')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('date')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_notes SET `date` =
'0000-00-00 00:00:00' WHERE `date` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_notes CHANGE
`date` ".$db->qn('date')." DATETIME NOT NULL DEFAULT
'0000-00-00 00:00:00'");
			$db->execute();
		}
		
		// #__rsticketspro_ticket_history updates
		$columns =
$db->getTableColumns('#__rsticketspro_ticket_history');
		if ($this->isColumnInt($columns['date'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_history CHANGE
`date` `date` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_history SET `date`
=
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('date')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('date')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_history SET `date`
= '0000-00-00 00:00:00' WHERE `date` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_history CHANGE
`date` ".$db->qn('date')." DATETIME NOT NULL DEFAULT
'0000-00-00 00:00:00'");
			$db->execute();
		}
		if (!isset($columns['type'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_history ADD
`type` VARCHAR(64) NOT NULL AFTER `date`");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_history SET `type`
= 'view' WHERE `type`= ''");
			$db->execute();
		}
		
		// #__rsticketspro_tickets updates
		$columns = $db->getTableColumns('#__rsticketspro_tickets');
		if ($this->isColumnInt($columns['date'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets CHANGE `date`
`date` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_tickets SET `date` =
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('date')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('date')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_tickets SET `date` =
'0000-00-00 00:00:00' WHERE `date` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets CHANGE `date`
".$db->qn('date')." DATETIME NOT NULL DEFAULT
'0000-00-00 00:00:00'");
			$db->execute();
		}
		if (!isset($columns['closed'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets ADD `closed`
DATETIME NOT NULL AFTER `autoclose_sent`");
			$db->execute();
		}

		if (!isset($columns['followup_sent'])){
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets ADD
`followup_sent` TINYINT NOT NULL DEFAULT '0' AFTER
`feedback`");
			$db->execute();
		}
		
		if (!isset($columns['alternative_email'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets ADD
`alternative_email` VARCHAR(255) NOT NULL AFTER `date`");
			$db->execute();
		}

		if ($this->isColumnInt($columns['last_reply'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets CHANGE
`last_reply` `last_reply` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_tickets SET `last_reply` =
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('last_reply')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('last_reply')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_tickets SET `last_reply` =
'0000-00-00 00:00:00' WHERE `last_reply` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_tickets CHANGE
`last_reply` ".$db->qn('last_reply')." DATETIME NOT
NULL DEFAULT '0000-00-00 00:00:00'");
			$db->execute();
		}

		// #__rsticketspro_ticket_messages updates
		$columns =
$db->getTableColumns('#__rsticketspro_ticket_messages');
		if ($this->isColumnInt($columns['date'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_messages
CHANGE `date` `date` VARCHAR(255) NOT NULL");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_messages SET `date`
=
IFNULL(CONVERT_TZ(FROM_UNIXTIME(".$db->qn('date')."),
@@session.time_zone, 'UTC'),
FROM_UNIXTIME(".$db->qn('date')."))");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_ticket_messages SET `date`
= '0000-00-00 00:00:00' WHERE `date` LIKE
'1970-01-01%'");
			$db->execute();					
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_messages
CHANGE `date` ".$db->qn('date')." DATETIME NOT NULL
DEFAULT '0000-00-00 00:00:00'");
			$db->execute();
		}
		if (!isset($columns['html'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_messages ADD
`html` TINYINT( 1 ) NOT NULL ");
			$db->execute();
			$db->setQuery("SELECT `value` FROM #__rsticketspro_configuration
WHERE `name` = 'allow_rich_editor'");
			$allow_rich_editor = $db->loadResult();
			$db->setQuery("UPDATE #__rsticketspro_ticket_messages SET `html`
= '".($allow_rich_editor ? 1 : 2)."'");
			$db->execute();
		}
		if (!isset($columns['submitted_by_staff'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_ticket_messages ADD
`submitted_by_staff` INT(11) NOT NULL ");
			$db->execute();
		}
		
		// #__rsticketspro_emails updates
		$columns = $db->getTableColumns('#__rsticketspro_emails');
		if (!isset($columns['id'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_emails DROP PRIMARY
KEY");
			$db->execute();
			$db->setQuery("ALTER TABLE #__rsticketspro_emails ADD `id` INT
NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST");
			$db->execute();
			$db->setQuery("ALTER TABLE `#__rsticketspro_emails` ADD UNIQUE
(`lang`,`type`)");
			$db->execute();
		}
		if (!isset($columns['published'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_emails ADD
`published` tinyint(1) NOT NULL DEFAULT '1' AFTER
`message`");
			$db->execute();
		}

		$columns =
$db->getTableColumns('#__rsticketspro_departments');
		if (!isset($columns['download_type'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_departments ADD
`download_type` VARCHAR( 255 ) NOT NULL DEFAULT 'attachment'
AFTER `upload_files`");
			$db->execute();
		}
        if (!isset($columns['upload_ticket_required'])) {
            $db->setQuery("ALTER TABLE #__rsticketspro_departments
ADD `upload_ticket_required` TINYINT( 1 ) UNSIGNED NOT NULL DEFAULT
'0' AFTER `upload`");
            $db->execute();
        }
        if (!isset($columns['jgroups']))
		{
			$db->setQuery("ALTER TABLE #__rsticketspro_departments ADD
`jgroups` MEDIUMTEXT NOT NULL AFTER `predefined_subjects`");
			$db->execute();
		}

		// #__rsticketspro_searches updates$download_type
		$columns =
$db->getTableColumns('#__rsticketspro_searches');
		if (!isset($columns['published'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_searches ADD
`published` TINYINT( 1 ) NOT NULL AFTER `default`");
			$db->execute();
			$db->setQuery("UPDATE #__rsticketspro_searches SET `published` =
1");
			$db->execute();
		}
		
		// #__rsticketspro_kb_categories updates
		$columns =
$db->getTableColumns('#__rsticketspro_kb_categories', false);
		if ($columns['thumb']->Type == 'varchar(16)') {
			$db->setQuery("ALTER TABLE `#__rsticketspro_kb_categories`
CHANGE `thumb` `thumb` VARCHAR( 64 ) CHARACTER SET utf8 COLLATE
utf8_general_ci NOT NULL");
			$db->execute();
		}
		
		// #__rsticketspro_groups updates
		$columns = $db->getTableColumns('#__rsticketspro_groups');
		if (!isset($columns['export_tickets'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_groups ADD
`export_tickets` TINYINT( 1 ) NOT NULL");
			$db->execute();
		}
		
		// #__rsticketspro_staff updates
		$columns = $db->getTableColumns('#__rsticketspro_staff');
		if (!isset($columns['exclude_auto_assign'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_staff ADD
`exclude_auto_assign` TINYINT( 1 ) NOT NULL DEFAULT '0'");
			$db->execute();
		}
		if (!isset($columns['can_delete_time_history'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_staff ADD
`can_delete_time_history` TINYINT( 1 ) NOT NULL DEFAULT
'0'");
			$db->execute();
		}
		if (!isset($columns['can_delete_own_time_history'])) {
			$db->setQuery("ALTER TABLE #__rsticketspro_staff ADD
`can_delete_own_time_history` TINYINT( 1 ) NOT NULL DEFAULT
'0'");
			$db->execute();
		}
		
		// #__menu update
		$db->setQuery("SELECT `id` FROM #__menu WHERE `link` LIKE
'index.php?option=com_rsticketspro&view=searches'");
		if ($predefinedSearches = $db->loadColumn()) {
			foreach ($predefinedSearches as $search) {
				$db->setQuery("UPDATE `#__menu` SET `link` =
".$db->q('index.php?option=com_rsticketspro&view=predefinedsearches')."
WHERE `id` = ".(int) $search." ");
				$db->execute();
			}
		}

		// Department relations has changed
		$tables = $db->getTableList();
		if (in_array($db->getPrefix() .
'rsticketspro_departments_relations', $tables))
		{
			$db->setQuery("SELECT * FROM
#__rsticketspro_departments_relations");
			if ($results = $db->loadObjectList())
			{
				$departments = array();
				foreach ($results as $result)
				{
					if (!isset($departments[$result->department_id]))
					{
						$departments[$result->department_id] = array();
					}

					$departments[$result->department_id][] = $result->jgroup_id;
				}

				if ($departments)
				{
					foreach ($departments as $department_id => $groups)
					{
						$db->setQuery("UPDATE #__rsticketspro_departments SET jgroups
= " . $db->q(json_encode($groups)) . " WHERE id = " .
$db->q($department_id))->execute();
					}
				}
			}
			$db->dropTable('#__rsticketspro_departments_relations');
		}

		$db->setQuery("UPDATE #__rsticketspro_configuration SET `value` =
'100' WHERE `name` = 'export_limit' AND `value` =
''");
		$db->execute();

		$db->setQuery("UPDATE #__menu SET `link` =
'index.php?option=com_rsticketspro&view=tickets' WHERE
`client_id` = '0' AND `link` =
'index.php?option=com_rsticketspro&view=rsticketspro'");
		$db->execute();

		if (JFolder::exists(JPATH_SITE .
'/components/com_rsticketspro/views/rsticketspro'))
		{
			JFolder::delete(JPATH_SITE .
'/components/com_rsticketspro/views/rsticketspro');
		}
	}
	
	protected function showInstallMessage($messages=array()) {
?>
<style type="text/css">
.version-history {
	margin: 0 0 2em 0;
	padding: 0;
	list-style-type: none;
}
.version-history > li {
	margin: 0 0 0.5em 0;
	padding: 0 0 0 4em;
}
.version-new,
.version-fixed,
.version-upgraded {
	float: left;
	font-size: 0.8em;
	margin-left: -4.9em;
	width: 4.5em;
	color: white;
	text-align: center;
	font-weight: bold;
	text-transform: uppercase;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
}
.version-new {
	background: #7dc35b;
}
.version-fixed {
	background: #e9a130;
}
.version-upgraded {
	background: #61b3de;
}

.install-ok {
	background: #7dc35b;
	color: #fff;
	padding: 3px;
}

.install-not-ok {
	background: #E9452F;
	color: #fff;
	padding: 3px;
}

.install-warning {
	background: #EFBB67;
	color: #fff;
	padding: 3px;
}

.rsticketspro-row {
	width: 100%;
	display: block;
	margin-bottom: 2%;
}

.rsticketspro-row:after {
	clear: both;
	display: block;
	content: "";
}

.rsticketspro-column-2 {
	width: 19%;
	margin-right: 1%;
	float: left;
}

.rsticketspro-column-10 {
	width: 80%;
	float: left;
}
</style>
<div class="rsticketspro-row">
	<div class="rsticketspro-column-2">
		<?php echo JHtml::_('image',
'com_rsticketspro/admin/rstickets-pro-box.png', 'RSTickets!
Pro Box', array(), true); ?>
	</div>
	<div class="rsticketspro-column-10">
		<?php if ($messages['plugins']) { ?>
			<?php foreach ($messages['plugins'] as $plugin) { ?>
			<p><?php echo $this->escape($plugin->name); ?> ...
				<b class="install-<?php echo $plugin->status;
?>"><?php echo $plugin->text; ?></b>
			</p>
			<?php } ?>
		<?php } ?>
		<h2>Changelog v3.0.1</h2>
		<ul class="version-history">
			<li><span class="version-fixed">Fix</span>
An error could show up when editing a 'Predefined
Search'.</li>
		</ul>
		<p>
			<a class="btn btn-large btn-primary"
href="index.php?option=com_rsticketspro">Start using
RSTickets! Pro</a>
			<a class="btn btn-secondary"
href="https://www.rsjoomla.com/support/documentation/rsticketspro.html"
target="_blank">Read the RSTickets! Pro User Guide</a>
			<a class="btn btn-secondary"
href="https://www.rsjoomla.com/support.html"
target="_blank">Get Support!</a>
		</p>
	</div>
</div>
		<?php
	}
}sql/index.html000064400000000054151163476010007343
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>sql/install.sql000064400000044344151163476010007547
0ustar00-- noinspection SqlDialectInspectionForFile
-- noinspection SqlNoDataSourceInspectionForFile
CREATE TABLE IF NOT EXISTS `#__rsticketspro_configuration` (
  `name` varchar(255) NOT NULL,
  `value` text NOT NULL,
  UNIQUE KEY `name` (`name`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_custom_fields` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `department_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `label` varchar(255) NOT NULL,
  `type` varchar(255) NOT NULL,
  `values` text NOT NULL,
  `additional` text NOT NULL,
  `validation` text NOT NULL,
  `required` tinyint(1) NOT NULL,
  `description` text NOT NULL,
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`),
  KEY `department_id` (`department_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_custom_fields_values` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `custom_field_id` int(11) NOT NULL,
  `ticket_id` int(11) NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY (`id`),
  KEY `custom_field_id` (`custom_field_id`),
  KEY `ticket_id` (`ticket_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_departments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `prefix` varchar(255) NOT NULL,
  `assignment_type` tinyint(1) NOT NULL,
  `generation_rule` tinyint(1) NOT NULL,
  `next_number` int(11) NOT NULL DEFAULT '1',
  `email_address` varchar(255) NOT NULL,
  `email_address_fullname` varchar(255) NOT NULL,
  `email_use_global` tinyint(1) unsigned NOT NULL DEFAULT '1',
  `customer_send_email` tinyint(1) NOT NULL,
  `customer_send_copy_email` tinyint(1) NOT NULL DEFAULT '1',
  `customer_attach_email` tinyint(1) NOT NULL DEFAULT '1',
  `staff_send_email` tinyint(1) NOT NULL,
  `staff_attach_email` tinyint(1) NOT NULL DEFAULT '1',
  `upload` tinyint(1) NOT NULL,
  `upload_ticket_required` tinyint(1) unsigned NOT NULL DEFAULT
'0',
  `upload_extensions` text NOT NULL,
  `upload_size` decimal(10,2) unsigned NOT NULL,
  `upload_files` int(11) NOT NULL,
  `download_type` varchar(255) NOT NULL DEFAULT 'attachment',
  `notify_new_tickets_to` text NOT NULL,
  `notify_assign` tinyint(1) NOT NULL,
  `priority_id` int(11) NOT NULL,
  `cc` text NOT NULL,
  `bcc` text NOT NULL,
  `predefined_subjects` text NOT NULL,
  `jgroups` mediumtext NOT NULL,
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`),
  KEY `customer_send_email` (`customer_send_email`),
  KEY `staff_send_email` (`staff_send_email`),
  KEY `upload` (`upload`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_emails` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `lang` varchar(64) NOT NULL,
  `type` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `message` text NOT NULL,
  `published` tinyint(1) NOT NULL DEFAULT '1',
  PRIMARY KEY (`id`),
  UNIQUE KEY `lang` (`lang`,`type`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_groups` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `add_ticket` tinyint(1) NOT NULL,
  `add_ticket_customers` tinyint(1) NOT NULL,
  `add_ticket_staff` tinyint(1) NOT NULL,
  `update_ticket` tinyint(1) NOT NULL,
  `update_ticket_custom_fields` tinyint(1) NOT NULL,
  `delete_ticket` tinyint(1) NOT NULL,
  `answer_ticket` tinyint(1) NOT NULL,
  `update_ticket_replies` tinyint(1) NOT NULL,
  `update_ticket_replies_customers` tinyint(1) NOT NULL,
  `update_ticket_replies_staff` tinyint(1) NOT NULL,
  `delete_ticket_replies_customers` tinyint(1) NOT NULL,
  `delete_ticket_replies_staff` tinyint(1) NOT NULL,
  `delete_ticket_replies` tinyint(1) NOT NULL,
  `assign_tickets` tinyint(1) NOT NULL,
  `change_ticket_status` tinyint(1) NOT NULL,
  `see_unassigned_tickets` tinyint(1) NOT NULL,
  `see_other_tickets` tinyint(1) NOT NULL,
  `move_ticket` tinyint(1) NOT NULL,
  `view_notes` tinyint(1) NOT NULL,
  `add_note` tinyint(1) NOT NULL,
  `update_note` tinyint(1) NOT NULL,
  `update_note_staff` tinyint(1) NOT NULL,
  `delete_note` tinyint(1) NOT NULL,
  `delete_note_staff` tinyint(1) NOT NULL,
  `export_tickets` tinyint(1) NOT NULL,
  UNIQUE KEY `GroupId` (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_kb_categories` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL,
  `thumb` varchar(64) NOT NULL,
  `name` varchar(255) NOT NULL,
  `description` text NOT NULL,
  `meta_description` text NOT NULL,
  `meta_keywords` text NOT NULL,
  `private` tinyint(1) NOT NULL,
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `parent_id` (`parent_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_kb_content` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `text` text NOT NULL,
  `category_id` int(11) NOT NULL,
  `meta_description` text NOT NULL,
  `meta_keywords` text NOT NULL,
  `private` tinyint(1) NOT NULL,
  `from_ticket_id` int(11) NOT NULL,
  `hits` int(10) unsigned NOT NULL DEFAULT '0',
  `created` datetime NOT NULL,
  `modified` datetime NOT NULL,
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `category_id` (`category_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_kb_rules` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `category_id` int(11) NOT NULL,
  `conditions` text NOT NULL,
  `publish_article` tinyint(1) NOT NULL,
  `private` tinyint(1) NOT NULL,
  `published` tinyint(1) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_priorities` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `bg_color` varchar(7) NOT NULL,
  `fg_color` varchar(7) NOT NULL,
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_searches` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  `params` text NOT NULL,
  `default` tinyint(1) NOT NULL DEFAULT '0',
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`),
  KEY `user_id` (`user_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_staff` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `group_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `priority_id` int(11) NOT NULL,
  `signature` text NOT NULL,
  `exclude_auto_assign` tinyint(1) NOT NULL DEFAULT '0',
  `can_delete_time_history` tinyint(1) NOT NULL DEFAULT '0',
  `can_delete_own_time_history` tinyint(1) NOT NULL DEFAULT '0',
  UNIQUE KEY `id` (`id`),
  KEY `group_id` (`group_id`,`user_id`),
  KEY `priority_id` (`priority_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_staff_to_department` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` int(11) NOT NULL,
  `department_id` int(11) NOT NULL,
  UNIQUE KEY `id` (`id`),
  KEY `department_id` (`department_id`),
  KEY `user_id` (`user_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_statuses` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `published` tinyint(1) NOT NULL,
  `ordering` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_tickets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `department_id` int(11) NOT NULL,
  `staff_id` int(11) NOT NULL,
  `customer_id` int(11) NOT NULL,
  `code` varchar(255) NOT NULL,
  `subject` varchar(255) NOT NULL,
  `status_id` int(11) NOT NULL,
  `priority_id` int(11) NOT NULL,
  `date` datetime NOT NULL,
  `alternative_email` varchar(255) NOT NULL,
  `last_reply` datetime NOT NULL,
  `last_reply_customer` tinyint(1) NOT NULL,
  `replies` int(11) NOT NULL,
  `autoclose_sent` int(11) NOT NULL DEFAULT '0',
  `closed` datetime NOT NULL,
  `flagged` tinyint(1) NOT NULL DEFAULT '0',
  `agent` text NOT NULL,
  `referer` text NOT NULL,
  `ip` varchar(16) NOT NULL,
  `logged` tinyint(1) NOT NULL,
  `feedback` tinyint(1) NOT NULL,
  `followup_sent` tinyint(1) NOT NULL DEFAULT '0',
  `has_files` tinyint(1) unsigned NOT NULL,
  `time_spent` decimal(10,2) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `department_id` (`department_id`),
  KEY `staff_id` (`staff_id`),
  KEY `customer_id` (`customer_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_ticket_files` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ticket_id` int(11) NOT NULL,
  `ticket_message_id` int(11) NOT NULL,
  `filename` varchar(255) NOT NULL,
  `downloads` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_ticket_history` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ticket_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `ip` varchar(16) NOT NULL,
  `date` datetime NOT NULL,
  `type` varchar(64) NOT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_ticket_messages` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ticket_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `message` text NOT NULL,
  `date` datetime NOT NULL,
  `html` tinyint(1) NOT NULL,
  `submitted_by_staff` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ticket_id` (`ticket_id`),
  KEY `user_id` (`user_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_timespent` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `staff_id` int(11) NOT NULL,
  `ticket_id` int(11) NOT NULL,
  `start` datetime NOT NULL,
  `end` datetime NOT NULL,
   PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_ticket_notes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `ticket_id` int(11) NOT NULL,
  `user_id` int(11) NOT NULL,
  `text` text NOT NULL,
  `date` datetime NOT NULL,
  PRIMARY KEY (`id`),
  KEY `ticket_id` (`ticket_id`),
  KEY `user_id` (`user_id`)
) DEFAULT CHARSET=utf8;

CREATE TABLE IF NOT EXISTS `#__rsticketspro_tokens` (
  `user_id` int(11) NOT NULL,
  `token` varchar(100) NOT NULL,
  PRIMARY KEY  (`user_id`)
) DEFAULT CHARSET=utf8;

INSERT IGNORE INTO `#__rsticketspro_configuration` (`name`, `value`)
VALUES
('global_register_code', ''),
('date_format', 'd.m.Y H:i:s'),
('date_format_notime', 'd.m.Y'),
('rsticketspro_link', '1'),
('allow_rich_editor', '1'),
('allow_rich_editor_buttons', '1'),
('global_message', ''),
('submit_message', ''),
('ticket_view', 'accordion'),
('rsticketspro_add_tickets', '1'),
('show_ticket_info', '1'),
('show_user_info', 'name'),
('show_ticket_voting', '1'),
('allow_ticket_closing', '1'),
('allow_ticket_reopening', '1'),
('ticket_viewing_history', '1'),
('avatars', ''),
('captcha_enabled', '1'),
('captcha_enabled_for',
'unregistered,customers,staff'),
('captcha_characters', '5'),
('captcha_case_sensitive', '0'),
('email_use_global', '1'),
('email_address', 'your@email.com'),
('email_address_fullname', 'Customer Support'),
('reply_above', 'Please reply above this line'),
('use_reply_above', '1'),
('autoclose_enabled', '1'),
('autoclose_automatically', '0'),
('autoclose_cron_lastcheck', '0'),
('autoclose_cron_interval', '10'),
('autoclose_email_interval', '1'),
('autoclose_interval', '1'),
('followup_interval', '1'),
('enable_followup', '0'),
('followup_enabled_time', '0'),
('followup_cron_lastcheck', '0'),
('followup_cron_interval', '10'),
('show_email_link', '1'),
('messages_direction', 'DESC'),
('color_whole_ticket', '0'),
('submit_redirect', ''),
('staff_force_departments', '0'),
('kb_template_body',
'<div>\r\n<h2>{ticket_subject}</h2>\r\n<p><strong>Department:</strong>
{ticket_department}</p>\r\n<p><strong>Date:</strong>
{ticket_date}</p>\r\n{ticket_messages}</div>'),
('kb_template_ticket_body', '<div
class="ticket_message">\r\n<p><strong>{message_date}</strong></p>\r\n<p><strong
class="message_user">{message_user}:</strong></p>\r\n<div
class="message_text">{message_text}</div>\r\n</div>'),
('kb_hot_hits', '200'),
('notice_email_address', ''),
('notice_max_replies_nr', '0'),
('notice_not_allowed_keywords', ''),
('notice_replies_with_no_response_nr', '0'),
('kb_comments', '0'),
('show_kb_search', '1'),
('show_signature', '1'),
('allow_predefined_subjects', '0'),
('customer_itemid', ''),
('staff_itemid', ''),
('enable_time_spent', '1'),
('time_spent_unit', 'h'),
('calculate_itemids', '1'),
('allow_password_change', '0'),
('emails_as_usernames', '0'),
('user_type', '2'),
('admin_groups', '6,7,8'),
('kb_load_plugin', '0'),
('bootstrap', '1'),
('jquery', '1'),
('use_magnific_popup', '0'),
('recaptcha_new_site_key', ''),
('recaptcha_new_secret_key', ''),
('recaptcha_new_theme', 'light'),
('recaptcha_new_type', 'image'),
('store_ip', '1'),
('store_user_agent', '1'),
('allow_self_anonymisation', '0'),
('anonymise_joomla_data', '1'),
('forms_consent', '1'),
('show_alternative_email', '0'),
('show_reply_as_customer', '1'),
('time_spent_type', 'input'),
('export_limit', '100'),
('blocklist', '');

INSERT IGNORE INTO `#__rsticketspro_emails` (`lang`, `type`, `subject`,
`message`) VALUES
('en-GB', 'add_ticket_customer', '',
'<p>Hello {customer_name},</p>\r\n<p>Thank you for
contacting us. One of our staff members will attend to your problem as soon
as possible.<br />You can view your ticket here:<br /><a
href="{ticket}">{code}</a></p>'),
('en-GB', 'add_ticket_staff', '',
'<p>Hello,</p>\r\n<p>A new ticket requires your
attention:</p>\r\n<p><a
href="{ticket}">{code}</a></p>\r\n<p>{customer_email}
wrote:</p>\r\n<p>{message}</p>\r\n<p>{custom_fields}</p>'),
('en-GB', 'add_ticket_reply_customer', '',
'<p>Hello {customer_name}.</p>\r\n<p>You have a new
message from {staff_name}.<br />Re: {subject}<br />Message:
{message}<br /><br />You can view your ticket here:<br
/><a href="{ticket}">{code}</a></p>'),
('en-GB', 'add_ticket_reply_staff', '',
'<p>Hello {staff_name}.</p>\r\n<p>You have a new
message from  {customer_name}.<br /> Re: {subject}<br />
Message: {message}<br /> <br /> You can view the ticket
here:<br /> <a
href="{ticket}">{code}</a></p>'),
('en-GB', 'notification_email', 'Your ticket will
be closed', '<p>Your ticket with subject
"{subject}" had no activity for {inactive_interval}
days.</p>\r\n<p>It will be automatically closed in
{close_interval} days if no additional action is
performed.</p>\r\n<p>Please log in to <br /><br />
<a href="{live_site}index.php?option=com_rsticketspro">Our
Support Center</a> <br /><br /> and go to <a
href="{live_site}index.php?option=com_rsticketspro">My
Tickets</a> in order to view the status of your support
request.</p>'),
('en-GB', 'reject_email', 'Re: {subject}',
'<p>Hello {customer_name},<br /><br />Unfortunately
your email for department {department} could not be processed. Only
registered users can submit tickets by email.<br />We are sorry for
the inconvenience. You can visit <a href="{live_site}">our
website</a> instead.</p>'),
('en-GB', 'add_ticket_notify', '',
'<p>Hello,</p>\r\n<p>A new ticket has been
added:</p>\r\n<p><a
href="{ticket}">{code}</a></p>\r\n<p>{customer_email}
wrote:</p>\r\n<p>{message}</p>\r\n<p>{custom_fields}</p>'),
('en-GB', 'new_user_email', 'New user
details', '<p>Here are your login
details:</p>\r\n<p>Username:
<strong>{username}</strong></p>\r\n<p>Password:
<strong>{password}</strong></p>\r\n<p>Please note
that this is your temporary password. You can login and change it at any
time.</p>\r\n<p> Please log in to <br/><br/>\r\n 
<a href="{live_site}index.php?option=com_rsticketspro">Our
Support Center</a> <br/><br/>\r\n  and go to <a
href="{live_site}">My Tickets</a> in order to view the
status of your support request.</p>'),
('en-GB', 'notification_max_replies_nr', '{code}
This unassigned ticket has received too many replies', 'The
ticket <a href="{ticket}">{code}</a> has received
{replies} replies without a staff member being assigned to
it.\r\n<p><u>Customer
Information</u></p>\r\n<p>Name:
{customer_name}</p>\r\n<p>Username:
{customer_username}</p>\r\n<p>Email:
{customer_email}</p>\r\n\r\n<p><u>Staff
Information</u></p>\r\n<p>Unassigned</p>\r\n\r\n<p><u>Ticket
Information</u></p>\r\n<p>Subject:
{subject}</p>\r\n<p>Message:<br
/>{message}</p>'),
('en-GB', 'notification_replies_with_no_response_nr',
'{code} This ticket has received too many replies', 'The
ticket <a href="{ticket}">{code}</a> has received
{replies} replies without any response from the designated staff
member.\r\n<p><u>Customer
Information</u></p>\r\n<p>Name:
{customer_name}</p>\r\n<p>Username:
{customer_username}</p>\r\n<p>Email:
{customer_email}</p>\r\n\r\n<p><u>Staff
Information</u></p>\r\n<p>Name:
{staff_name}</p>\r\n<p>Username:
{staff_username}</p>\r\n<p>Email:
{staff_email}</p>\r\n\r\n<p><u>Ticket
Information</u></p>\r\n<p>Subject:
{subject}</p>\r\n<p>Message:<br
/>{message}</p>'),
('en-GB', 'notification_not_allowed_keywords',
'This ticket contains a keyword', 'The ticket <a
href="{ticket}">{code}</a> contains a
keyword.\r\n<p><u>Customer
Information</u></p>\r\n<p>Name:
{customer_name}</p>\r\n<p>Username:
{customer_username}</p>\r\n<p>Email:
{customer_email}</p>\r\n\r\n<p><u>Staff
Information</u></p>\r\n<p>Name:
{staff_name}</p>\r\n<p>Username:
{staff_username}</p>\r\n<p>Email:
{staff_email}</p>\r\n\r\n<p><u>Ticket
Information</u></p>\r\n<p>Subject:
{subject}</p>\r\n<p>Message:<br
/>{message}</p>'),
('en-GB', 'notification_department_change',
'Department changed', 'The ticket <a
href="{ticket}">{code}</a> had the department changed
from {department_from} to {department_to}'),
('en-GB', 'feedback_followup_email', 'How would
you rate the help you received?', '<p>The ticket <a
href="{ticket}">{code}</a> regarding
"{subject}" has been closed.</p>\r\n<p>Did we help
you solve your problem?</p>\r\n<p><a
href="{yes}">Yes, my problem has been
solved.</a></p>\r\n<p><a
href="{no}">No.</a></p>\r\n<p>Your feedback
helps us improve our services!</p>');

INSERT IGNORE INTO `#__rsticketspro_priorities` (`id`, `name`, `bg_color`,
`fg_color`, `published`, `ordering`) VALUES
(1, 'low', '', '', 1, 1),
(2, 'normal', '', '', 1, 2),
(3, 'high', '', '', 1, 3);

INSERT IGNORE INTO `#__rsticketspro_statuses` (`id`, `name`, `published`,
`ordering`) VALUES
(1, 'open', 1, 1),
(2, 'closed', 1, 3),
(3, 'on-hold', 1,
2);sql/sample.sql000064400000006034151163476010007354 0ustar00INSERT IGNORE
INTO `#__rsticketspro_departments` (`id`, `name`, `prefix`,
`assignment_type`, `generation_rule`, `next_number`, `email_address`,
`email_address_fullname`, `email_use_global`, `customer_send_email`,
`customer_send_copy_email`, `customer_attach_email`, `staff_send_email`,
`staff_attach_email`, `upload`, `upload_extensions`, `upload_size`,
`upload_files`, `notify_new_tickets_to`, `notify_assign`, `priority_id`,
`cc`, `bcc`, `predefined_subjects`, `published`, `ordering`) VALUES(1,
'Billing', 'BILLING', 1, 0, 1, '',
'', 1, 1, 1, 1, 1, 1, 0, '', '0.00', 0,
'', 1, 1, '', '', '', 1, 1);
INSERT IGNORE INTO `#__rsticketspro_departments` (`id`, `name`, `prefix`,
`assignment_type`, `generation_rule`, `next_number`, `email_address`,
`email_address_fullname`, `email_use_global`, `customer_send_email`,
`customer_send_copy_email`, `customer_attach_email`, `staff_send_email`,
`staff_attach_email`, `upload`, `upload_extensions`, `upload_size`,
`upload_files`, `notify_new_tickets_to`, `notify_assign`, `priority_id`,
`cc`, `bcc`, `predefined_subjects`, `published`, `ordering`) VALUES(2,
'Licensing', 'LICENSE', 1, 0, 1, '',
'', 1, 1, 1, 1, 1, 1, 0, '', '0.00', 0,
'', 1, 3, '', '', '', 1, 3);
INSERT IGNORE INTO `#__rsticketspro_departments` (`id`, `name`, `prefix`,
`assignment_type`, `generation_rule`, `next_number`, `email_address`,
`email_address_fullname`, `email_use_global`, `customer_send_email`,
`customer_send_copy_email`, `customer_attach_email`, `staff_send_email`,
`staff_attach_email`, `upload`, `upload_extensions`, `upload_size`,
`upload_files`, `notify_new_tickets_to`, `notify_assign`, `priority_id`,
`cc`, `bcc`, `predefined_subjects`, `published`, `ordering`) VALUES(3,
'Tech Support', 'TECH', 1, 0, 1, '',
'', 1, 1, 1, 1, 1, 1, 1, 'zip\r\njpg',
'0.00', 0, '', 1, 1, '', '',
'', 1, 2);
INSERT IGNORE INTO `#__rsticketspro_departments` (`id`, `name`, `prefix`,
`assignment_type`, `generation_rule`, `next_number`, `email_address`,
`email_address_fullname`, `email_use_global`, `customer_send_email`,
`customer_send_copy_email`, `customer_attach_email`, `staff_send_email`,
`staff_attach_email`, `upload`, `upload_extensions`, `upload_size`,
`upload_files`, `notify_new_tickets_to`, `notify_assign`, `priority_id`,
`cc`, `bcc`, `predefined_subjects`, `published`, `ordering`) VALUES(4,
'Pre Sales', 'PRE', 0, 1, 1, '',
'', 1, 1, 1, 1, 1, 1, 0, '', '0.00', 0,
'', 0, 1, '', '', '', 1, 4);

INSERT IGNORE INTO `#__rsticketspro_groups` (`id`, `name`, `add_ticket`,
`add_ticket_customers`, `add_ticket_staff`, `update_ticket`,
`update_ticket_custom_fields`, `delete_ticket`, `answer_ticket`,
`update_ticket_replies`, `update_ticket_replies_customers`,
`update_ticket_replies_staff`, `delete_ticket_replies_customers`,
`delete_ticket_replies_staff`, `delete_ticket_replies`, `assign_tickets`,
`change_ticket_status`, `see_unassigned_tickets`, `see_other_tickets`,
`move_ticket`, `view_notes`, `add_note`, `update_note`,
`update_note_staff`, `delete_note`, `delete_note_staff`) VALUES(1,
'Staff', 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1);sql/uninstall.sql000064400000001270151163476010010101
0ustar00DROP TABLE IF EXISTS `#__rsticketspro_accounts`,
`#__rsticketspro_accounts_log`, `#__rsticketspro_configuration`,
`#__rsticketspro_custom_fields`, `#__rsticketspro_custom_fields_values`,
`#__rsticketspro_departments`, `#__rsticketspro_emails`,
`#__rsticketspro_groups`, `#__rsticketspro_kb_categories`,
`#__rsticketspro_kb_content`, `#__rsticketspro_kb_rules`,
`#__rsticketspro_priorities`, `#__rsticketspro_searches`,
`#__rsticketspro_staff`, `#__rsticketspro_staff_to_department`,
`#__rsticketspro_statuses`, `#__rsticketspro_tickets`,
`#__rsticketspro_ticket_files`, `#__rsticketspro_ticket_history`,
`#__rsticketspro_ticket_messages`, `#__rsticketspro_ticket_notes`,
`#__rsticketspro_tokens`;tables/customfields.php000064400000004434151163476010011241
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableCustomfields extends JTable
{
	public $id;
	public $department_id;
	public $name;
	public $label;
	public $type;
	public $values;
	public $additional;
	public $validation;
	public $required;
	public $description;
	public $published;
	public $ordering;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_custom_fields',
'id', $db);
	}
	
	public function check()
	{
		try
		{
			if (in_array($this->type, array('select',
'multipleselect', 'checkbox', 'radio'))
&& !strlen($this->values))
			{
				throw new
Exception(JText::_('RST_CUSTOM_FIELD_VALUES_ERROR'));
			}

			// this needs to be filtered
			if (strlen($this->name))
			{
				$this->name = JFilterOutput::stringURLSafe($this->name);
			}

			// check if there's a custom field with the same name
			$db = $this->getDbo();
			$query = $db->getQuery(true);
			$query->select($db->qn('id'))
				->from('#__rsticketspro_custom_fields')
				->where($db->qn('name').'='.$db->q($this->name))
				->where($db->qn('department_id').'='.$db->q($this->department_id));

			if ($this->id)
			{
				$query->where($db->qn('id').'!='.$db->q($this->id));
			}

			$db->setQuery($query);
			if ($db->loadResult())
			{
				throw new
Exception(JText::sprintf('RST_CUSTOM_FIELD_UNIQUE_NAME_ERROR',
$this->name));
			}

			if (!$this->id && !$this->ordering)
			{
				$this->ordering =
$this->getNextOrder($db->qn('department_id') . ' =
' . $db->q($this->department_id));
			}
		}
		catch (Exception $e)
		{
			$this->setError($e->getMessage());
			return false;
		}
		
		return true;
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db = $this->getDbo();
			$query = $db->getQuery(true);
			
			// delete all values pertaining to this custom field
			$query->delete('#__rsticketspro_custom_fields_values')
				 
->where($db->qn('custom_field_id').'='.$db->q($pk));
			$db->setQuery($query)->execute();
		}
		
		return $deleted;
	}
}tables/customfieldsvalues.php000064400000001403151163476010012452
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableCustomfieldsvalues extends JTable
{
	public $id = null;
	public $custom_field_id = 0;
	public $ticket_id = 0;
	public $value = '';
	
	public function bind($src, $ignore = array())
	{
		if (isset($src['value']) &&
is_array($src['value']))
		{
			$src['value'] = implode("\n",
$src['value']);
		}
		return parent::bind($src, $ignore);
	}
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_custom_fields_values',
'id', $db);
	}
}tables/departments.php000064400000011444151163476010011065
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableDepartments extends JTable
{
	public $id = null;
	
	public $name = '';
	public $prefix = '';
	public $assignment_type = 1; // 0 - static, 1 - auto
	public $generation_rule = 1; // 0 - sequential, 1 - random
	public $next_number = 1;
	public $email_use_global = 1;
	public $email_address = '';
	public $email_address_fullname = '';
	public $customer_send_email = 1; // 0 - no, 1 - yes
	public $customer_send_copy_email = 1; // 0 - no, 1 - yes
	public $customer_attach_email = 1;
	public $staff_send_email = 1; // 0 - no, 1 - yes
	public $staff_attach_email = 1;
	public $upload = 1; // 0 - no, 1 - yes, 2 - registered
	public $upload_extensions = 'zip';
	public $upload_size = 0;
	public $upload_files = 0;
	public $download_type = 'attachment';
	public $notify_new_tickets_to = '';
	public $notify_assign = 0; // 0 - no, 1 - yes
	public $priority_id = 0;
	public $cc = '';
	public $bcc = '';
	public $predefined_subjects = '';
	public $jgroups = '';

	public $published = 1;
	public $ordering = null;

	protected $_jsonEncode = array('jgroups');
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_departments',
'id', $db);
	}
	
	public function check()
	{
		try
		{
			$db 	= $this->getDbo();
			$query 	= $db->getQuery(true);

			// this needs to be in uppercase
			$this->prefix = strtoupper($this->prefix);

			// need to make sure the prefix is unique
			$query->select($db->qn('id'))
				->from('#__rsticketspro_departments')
				->where($db->qn('prefix').'='.$db->q($this->prefix));

			if ($this->id)
			{
				$query->where($db->qn('id').'!='.$db->q($this->id));
			}

			$db->setQuery($query);
			if ($db->loadResult())
			{
				throw new
Exception(JText::sprintf('RST_DEPARTMENT_UNIQUE_PREFIX_ERROR',
$this->prefix));
			}

			if (!$this->email_use_global)
			{
				if (!strlen($this->email_address))
				{
					throw new
Exception(JText::_('RST_DEPARTMENT_FROM_EMAIL_ERROR'));
				}

				if (!strlen($this->email_address_fullname))
				{
					throw new
Exception(JText::_('RST_DEPARTMENT_FROM_NAME_ERROR'));
				}
			}

			if (!$this->id && !$this->ordering)
			{
				$this->ordering = $this->getNextOrder();
			}
		}
		catch (Exception $e)
		{
			$this->setError($e->getMessage());
			return false;
		}
		
		return true;
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db = $this->getDbo();
			$query = $db->getQuery(true);
			
			// do we have any custom fields that we need to delete?
			$query->select($db->qn('id'))
				  ->from('#__rsticketspro_custom_fields')
				 
->where($db->qn('department_id').'='.$db->q($pk));
			$db->setQuery($query);
			if ($custom_field_ids = $db->loadColumn())
			{
				// delete values
				$query->clear();
				$query->delete('#__rsticketspro_custom_fields_values')
					  ->where($db->qn('custom_field_id').' IN
('.implode(',', $custom_field_ids).')');
				$db->setQuery($query)->execute();
				
				// delete custom fields
				$query->clear();
				$query->delete('#__rsticketspro_custom_fields')
					  ->where($db->qn('id').' IN
('.implode(',', $custom_field_ids).')');
				$db->setQuery($query)->execute();
			}
			
			// remove the department from existing staff members
			$query->clear();
			$query->delete('#__rsticketspro_staff_to_department')
				 
->where($db->qn('department_id').'='.$db->q($pk));
			$db->setQuery($query)->execute();
			
			// create the subquery that gets all tickets belonging to this
department
			$subquery = $db->getQuery(true);
			$subquery->select($db->qn('id'))
					 ->from('#__rsticketspro_tickets')
					
->where($db->qn('department_id').'='.$db->q($pk));
			
			// delete messages			
			$query->clear();
			$query->delete('#__rsticketspro_ticket_messages')
				  ->where($db->qn('ticket_id').' IN
('.(string) $subquery.')');
			$db->setQuery($query)->execute();
			
			// delete notes 
			$query->clear();
			$query->delete('#__rsticketspro_ticket_notes')
				  ->where($db->qn('ticket_id').' IN
('.(string) $subquery.')');
			$db->setQuery($query)->execute();
			
			// delete files
			$query->clear();
			$query->delete('#__rsticketspro_ticket_files')
				  ->where($db->qn('ticket_id').' IN
('.(string) $subquery.')');
			$db->setQuery($query)->execute();
			
			// delete tickets
			$query->clear();
			$query->delete('#__rsticketspro_tickets')
				 
->where($db->qn('department_id').'='.$db->q($pk));
			$db->setQuery($query)->execute();
		}
		
		return $deleted;
	}
}tables/emails.php000064400000001041151163476010010001 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableEmails extends JTable
{
	public $id = null;
	public $lang = null;
	public $type = '';
	public $subject = '';
	public $message = '';
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_emails', 'id',
$db);
	}
}tables/groups.php000064400000004263151163476010010057 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableGroups extends JTable
{
	public $id = null;
	
	public $name = '';
	public $add_ticket = 1;
	public $add_ticket_customers = 1;
	public $add_ticket_staff = 1;
	public $update_ticket = 1;
	public $update_ticket_custom_fields = 1;
	public $delete_ticket = 1;
	public $answer_ticket = 1;
	public $update_ticket_replies = 1;
	public $update_ticket_replies_customers = 1;
	public $update_ticket_replies_staff = 1;
	public $delete_ticket_replies = 1;
	public $delete_ticket_replies_customers = 1;
	public $delete_ticket_replies_staff = 1;
	public $assign_tickets = 1;
	public $change_ticket_status = 1;
	public $see_unassigned_tickets = 1;
	public $see_other_tickets = 1;
	public $move_ticket = 1;
	public $view_notes = 1;
	public $add_note = 1;
	public $update_note = 1;
	public $update_note_staff = 1;
	public $delete_note = 1;
	public $delete_note_staff = 1;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_groups', 'id',
$db);
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db 	= $this->getDbo();
			$query 	= $db->getQuery(true);
			
			$query->select($db->qn('user_id'))
				  ->from('#__rsticketspro_staff')
				  ->where($db->qn('group_id') . '=' .
$db->q($pk));

			if ($users = $db->setQuery($query)->loadColumn())
			{
				$query->clear();
				// set tickets to "unassigned" since we've removed the
staff members
				$query->update('#__rsticketspro_tickets')
					  ->set($db->qn('staff_id') . '=' .
$db->q(0))
					  ->where($db->qn('staff_id') . ' IN (' .
implode(',', $users) . ')');
				$db->setQuery($query)->execute();
				
				$query->clear();
				// delete staff members belonging to this group
				$query->delete('#__rsticketspro_staff')
					  ->where($db->qn('group_id') . '=' .
$db->q($pk));
				$db->setQuery($query)->execute();
			}
		}

		return $deleted;
	}
}tables/index.html000064400000000054151163476010010016
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>tables/kbcategories.php000064400000006246151163476010011205
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableKbcategories extends JTable
{
	public $id = null;
	
	public $parent_id = 0; // 0 - no parent
	public $thumb = '';
	public $name = null;
	public $description = null;
	public $meta_description = null;
	public $meta_keywords = null;
	public $private = null;
	public $published = 1;
	public $ordering = null;
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_kb_categories',
'id', $db);
	}
	
	public function check()
	{
		try
		{
			$db = $this->getDbo();

			if ($this->id)
			{
				// let's see if the current parent is different
				if ($this->parent_id == $this->id)
				{
					throw new
Exception(JText::_('RST_KB_CATEGORY_PARENT_SAME_ERROR'));
				}

				// let's see if we are trying to use a child as a parent
				if ($this->parent_id)
				{
					$query 	= $db->getQuery(true);
					$id 	= $this->parent_id;

					// get all the parents of the selected parent and see if they match
our own id
					while ($id)
					{
						$query->select($db->qn('parent_id'))
							->from($db->qn('#__rsticketspro_kb_categories'))
							->where($db->qn('id') . '=' .
$db->q($id));
						$db->setQuery($query);
						$id = $db->loadResult();
						$query->clear();

						if ($id == $this->id)
						{
							throw new
Exception(JText::_('RST_KB_CATEGORY_PARENT_CHILD_ERROR'));
						}
					}
				}
			}

			if (!$this->id && !$this->ordering)
			{
				$this->ordering =
$this->getNextOrder($db->qn('parent_id') . ' = '
. $db->q($this->parent_id));
			}
		}
		catch (Exception $e)
		{
			$this->setError($e->getMessage());
			return false;
		}
		
		return true;
	}
	
	public function deleteThumb()
	{
		if ($this->id && $this->thumb)
		{
			if
(file_exists(RST_CATEGORY_THUMB_FOLDER.'/'.$this->thumb))
			{
				JFile::delete(RST_CATEGORY_THUMB_FOLDER.'/'.$this->thumb);
			}
			if
(file_exists(RST_CATEGORY_THUMB_FOLDER.'/small/'.$this->thumb))
			{
				JFile::delete(RST_CATEGORY_THUMB_FOLDER.'/small/'.$this->thumb);
			}
			
			return true;
		}
		
		return false;
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);

		if ($deleted)
		{
			$this->deleteThumb();
			
			$db 	= $this->getDbo();
			$query 	= $db->getQuery(true);
			
			// all categories that have this category as parent will be moved to
"No Parent (Top Category)"
			$query->update('#__rsticketspro_kb_categories')
				  ->set($db->qn('parent_id') . '=' .
$db->q(0))
				  ->where($db->qn('parent_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();
			
			// all articles that have this category as parent will be moved to
"No Parent (Top Category)"
			$query->clear();
			$query->update('#__rsticketspro_kb_content')
				  ->set($db->qn('category_id') . '=' .
$db->q(0))
				  ->where($db->qn('category_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();
		}
		
		return $deleted;
	}
}tables/kbcontent.php000064400000002310151163476010010516 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableKbcontent extends JTable
{
	public $id = null;
	public $name = '';
	public $text = '';
	public $category_id = 0; // 0 - uncategorised
	public $meta_description = '';
	public $meta_keywords = '';
	public $private = 0;
	public $from_ticket_id = 0;
	public $hits = 0;
	public $created = null;
	public $modified = null;
	public $published = null;
	public $ordering = null;
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_kb_content',
'id', $db);
	}

	public function check()
	{
		$db = $this->getDbo();

		if (!$this->id && !$this->ordering)
		{
			$this->ordering =
$this->getNextOrder($db->qn('category_id') . ' =
' . $db->q($this->category_id));
		}

		if (!$this->id)
		{
			$this->created = JFactory::getDate()->toSql();
			$this->modified = $db->getNullDate();
		}
		else
		{
			$this->modified = JFactory::getDate()->toSql();
		}

		return true;
	}
}tables/kbrules.php000064400000005020151163476010010177 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableKbrules extends JTable
{
	public $id = null;
	
	public $name = '';
	public $category_id = 0;
	public $conditions = '';
	public $publish_article = 1;
	public $private = 0;
	
	public $published = 1;
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_kb_rules', 'id',
$db);
	}
	
	public function bind($src, $ignore = array())
	{
		if (!isset($src['conditions']))
		{
			$src['conditions'] = array();
			if (isset($src['select_type']))
			{
				$j = 0;
				foreach ($src['select_type'] as $i => $type)
				{
					$condition = (object) array(
						'type' => $type,
						'condition' =>
isset($src['select_condition'][$i]) ?
$src['select_condition'][$i] : '',
						'custom_field' => $type == 'custom_field'
&& isset($src['select_custom_field_value'][$j]) ?
$src['select_custom_field_value'][$j] : '',
						'value' => isset($src['select_value'][$i]) ?
$src['select_value'][$i] : '',
						'connector' =>
isset($src['select_connector'][$i]) ?
$src['select_connector'][$i] : ''
					);
					
					$src['conditions'][] = $condition;
					if ($type == 'custom_field')
					{
						$j++;
					}
				}
			}
			
			$src['conditions'] = serialize($src['conditions']);
		}
		
		return parent::bind($src, $ignore);
	}

	public function check()
	{
		try
		{
			if (is_string($this->conditions))
			{
				$conditions = unserialize($this->conditions);

				if (empty($conditions))
				{
					throw new
Exception(JText::_('RST_KB_RULE_NO_CONDITION_ERROR'));
				}

				foreach ($conditions as $condition)
				{
					if (empty($condition->type))
					{
						throw new
Exception(JText::_('RST_KB_RULE_SELECT_TYPE_ERROR'));
					}

					if (empty($condition->condition))
					{
						throw new
Exception(JText::_('RST_KB_RULE_SELECT_CONDITION_ERROR'));
					}

					if (empty($condition->value))
					{
						throw new
Exception(JText::_('RST_KB_RULE_SELECT_VALUE_ERROR'));
					}

					if ($condition->type === 'custom_field' &&
empty($condition->custom_field))
					{
						throw new
Exception(JText::_('RST_KB_RULE_SELECT_CUSTOM_FIELD_ERROR'));
					}
				}
			}
		}
		catch (Exception $e)
		{
			$this->setError($e->getMessage());
			return false;
		}

		return true;
	}
}tables/priorities.php000064400000002640151163476010010726
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTablePriorities extends JTable
{
	public $id = null;
	
	public $name = '';
	public $bg_color = '';
	public $fg_color = '';
	
	public $published = 1;
	public $ordering = null;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_priorities',
'id', $db);
	}

	public function check()
	{
		if (!$this->id && !$this->ordering)
		{
			$this->ordering = $this->getNextOrder();
		}

		return true;
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db = $this->getDbo();
			$query = $db->getQuery(true);
			
			$query->select($db->qn('id'))
				  ->from('#__rsticketspro_priorities')
				  ->where($db->qn('published') . '=' .
$db->q(1));
			if ($priority_id = $db->setQuery($query)->loadResult())
			{
				$query->clear();
				// update all tickets with the next available priority
				$query->update('#__rsticketspro_tickets')
					  ->set($db->qn('priority_id') . '=' .
$db->q($priority_id))
					  ->where($db->qn('priority_id') . '=' .
$db->q($pk));
				$db->setQuery($query)->execute();
			}
		}
		
		return $deleted;
	}
}tables/searches.php000064400000004231151163476010010330 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableSearches extends JTable
{
	public $id = null;
	
	public $user_id = null;
	public $name = null;
	public $params = null;
	public $default = null;
	
	public $published = 1;
	public $ordering = null;
	
	public function check()
	{
		if (!$this->id)
		{
			$db = JFactory::getDbo();
			$this->ordering =
$this->getNextOrder($db->qn('user_id') . '=' .
$db->q(JFactory::getUser()->id));
		}
		
		return true;
	}
	
	public function bind($src, $ignore = array())
	{
		if (isset($src['params']) &&
is_array($src['params']))
		{
			$src['params'] =
base64_encode(serialize($src['params']));
		}
		return parent::bind($src, $ignore);
	}
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_searches', 'id',
$db);
	}
	
	public function load($keys = null, $reset = true)
	{
		$loaded = parent::load($keys, $reset);
		
		if ($loaded)
		{
			// base64 encoded & serialized
			if (is_string($this->params))
			{
				$params = @unserialize(base64_decode($this->params));
				if (!$params)
				{
					$params = array();
				}
			}
			else
			{
				$params = array();
			}
			$this->params = $params;
		}
		
		return $loaded;
	}
	
	public function store($updateNulls = false)
	{
		$result = parent::store($updateNulls);

		if ($result)
		{
			if ($this->default)
			{
				$db 	= $this->getDbo();
				$query  = $db->getQuery(true);
				
				// can't have more than 1 default search
				$query->update('#__rsticketspro_searches')
					 
->set($db->qn('default').'='.$db->q(0))
					 
->where($db->qn('user_id').'='.$db->q($this->user_id))
					 
->where($db->qn('id').'!='.$db->q($this->id));
				$db->setQuery($query)->execute();
			}
		}
		
		return $result;
	}
	
	public function reorder($where = '')
	{
		return parent::reorder($this->_db->qn('user_id') .
'=' . $this->_db->q(JFactory::getUser()->id));
	}
}tables/staff.php000064400000006263151163476010007645 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableStaff extends JTable
{
	public $id = null;
	
	public $group_id = null;
	public $user_id = null;
	public $priority_id = null;
	public $department_id = null;
	
	public $signature = '';
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_staff', 'id',
$db);
	}
	
	public function load($keys = null, $reset = true)
	{
		$loaded = parent::load($keys, $reset);
		
		if ($loaded)
		{
			$db 	= $this->getDbo();
			$query  = $db->getQuery(true);
			
			$query->select($db->qn('department_id'))
				  ->from('#__rsticketspro_staff_to_department')
				 
->where($db->qn('user_id').'='.$db->q($this->user_id));
			
			$db->setQuery($query);
			
			$this->department_id = implode(',', $db->loadColumn());
		}
		
		return $loaded;
	}
	
	public function check()
	{
		try
		{
			if (!$this->user_id)
			{
				throw new Exception(JText::_('RST_STAFF_USER_ERROR'));
			}

			if (empty($this->department_id))
			{
				throw new Exception(JText::_('RST_STAFF_DEPARTMENT_ERROR'));
			}

			$db 	= $this->getDbo();
			$query  = $db->getQuery(true);

			$query->select('id')
				->from('#__rsticketspro_staff')
				->where($db->qn('user_id') . '=' .
$db->q($this->user_id));

			if ($this->id)
			{
				$query->where($db->qn('id') . '!=' .
$db->q($this->id));
			}

			if ($db->setQuery($query)->loadResult())
			{
				throw new Exception(JText::_('RST_STAFF_USER_EXISTS'));
			}
		}
		catch (Exception $e)
		{
			$this->setError($e->getMessage());
			return false;
		}
		
		return true;
	}
	
	public function store($updateNulls = false)
	{
		$result = parent::store($updateNulls);
		if ($result)
		{
			$db 	= $this->getDbo();
			$query  = $db->getQuery(true);
			
			$query->delete('#__rsticketspro_staff_to_department')
				  ->where($db->qn('user_id') . '=' .
$db->q($this->user_id));
			$db->setQuery($query)->execute();
			
			foreach ($this->department_id as $department_id)
			{
				$row = JTable::getInstance('Stafftodepartment',
'RsticketsproTable');
				$row->save(array(
					'id' => null,
					'user_id' => $this->user_id,
					'department_id' => $department_id
				));
			}
		}
		
		return $result;
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db 	= $this->getDbo();
			$query  = $db->getQuery(true);
			
			// remove references from the #__rsticketspro_staff_to_department table
			$query->delete('#__rsticketspro_staff_to_department')
				  ->where($db->qn('user_id') . '=' .
$db->q($this->user_id));
			$db->setQuery($query)->execute();
			
			// unassign all tickets assigned to this staff member
			$query->clear();
			$query->update('#__rsticketspro_tickets')
				  ->set($db->qn('staff_id') . '=' .
$db->q(0))
				  ->where($db->qn('staff_id') . '=' .
$db->q($this->user_id));
			$db->setQuery($query)->execute();
		}
		
		return $deleted;
	}
}tables/stafftodepartment.php000064400000001032151163476010012261
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableStafftodepartment extends JTable
{
	public $id = null;
	
	public $user_id = null;
	public $department_id = null;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_staff_to_department',
'id', $db);
	}
}tables/statuses.php000064400000002150151163476010010404 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableStatuses extends JTable
{
	public $id = null;
	public $name = '';
	public $published = 1;
	public $ordering = null;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_statuses', 'id',
$db);
	}

	public function check()
	{
		if (!$this->id && !$this->ordering)
		{
			$this->ordering = $this->getNextOrder();
		}

		return true;
	}
	
	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db = $this->getDbo();
			$query = $db->getQuery(true);
			
			// update all tickets with this status to "closed"
			$query->update('#__rsticketspro_tickets')
				  ->set($db->qn('status_id') . '=' .
$db->q(2))
				  ->where($db->qn('status_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();
		}
		
		return $deleted;
	}
}tables/ticketfiles.php000064400000001556151163476010011050
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableTicketfiles extends JTable
{
	public $id = null;
	public $ticket_id;
	public $ticket_message_id;
	public $filename;
	public $downloads;

	protected $_columnAlias = array(
		'hits' => 'downloads'
	);
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_ticket_files',
'id', $db);
	}

	public function check()
	{
		if (!$this->id)
		{
			$this->downloads = 0;
		}

		return true;
	}
	
	public function getRealPath()
	{
		$hash = md5($this->id . ' ' . $this->ticket_message_id);
		return RST_UPLOAD_FOLDER . '/' . $hash;
	}
}tables/tickethistory.php000064400000001043151163476010011436
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableTickethistory extends JTable
{
	public $id;
	public $ticket_id;
	public $user_id;
	public $ip;
	public $date;
	public $type;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_ticket_history',
'id', $db);
	}
}tables/ticketmessages.php000064400000004102151163476010011543
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableTicketmessages extends JTable
{
	public $id;
	public $ticket_id;
	public $user_id;
	public $submitted_by_staff = 0;
	public $message;
	public $date;
	public $html;
	
	public function __construct(&$db)
	{
		parent::__construct('#__rsticketspro_ticket_messages',
'id', $db);
	}

	public function check()
	{
		if ($this->id)
		{
			$this->ticket_id = null;
			$this->user_id = null;
			$this->date = null;
			$this->submitted_by_staff = null;
		}

		return true;
	}
	
	public function delete($pk = null)
	{
		$db = $this->getDbo();
		$query = $db->getQuery(true);
		
		$query->select($db->qn('ticket_id'))
			->from($db->qn('#__rsticketspro_ticket_messages'))
			->where($db->qn('id').' = '.$db->q($pk));
		$db->setQuery($query);
		$ticket_id = $db->loadResult();
		
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$query->clear()
				->update('#__rsticketspro_tickets')
				->set($db->qn('replies').' =
'.$db->qn('replies').' - 1')
				->where($db->qn('id').' =
'.$db->q($ticket_id));
			$db->setQuery($query)->execute();
			
			// delete all files
			// physical files
			$query->clear();
			$query->select($db->qn('id'))
				->select($db->qn('ticket_message_id'))
				->from($db->qn('#__rsticketspro_ticket_files'))
				->where($db->qn('ticket_message_id') . '=' .
$db->q($pk));
			$db->setQuery($query);
			if ($files = $db->loadObjectList())
			{
				foreach ($files as $file)
				{
					$hash = md5($file->id . ' ' .
$file->ticket_message_id);
					JFile::delete(RST_UPLOAD_FOLDER . '/' . $hash);
				}
			}
			// from the database
			$query->clear();
			$query->delete('#__rsticketspro_ticket_files')
				->where($db->qn('ticket_message_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();
		}
		
		return $deleted;
	}
}tables/ticketnotes.php000064400000001452151163476010011071
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableTicketnotes extends JTable
{
	public $id;
	public $ticket_id;
	public $user_id;
	public $text;
	public $date;
	
	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_ticket_notes',
'id', $db);
	}

	public function check()
	{
		if (!$this->id)
		{
			$this->date     = JFactory::getDate()->toSql();
			$this->user_id  = JFactory::getUser()->id;
		}
		else
		{
			$this->date	= null;
			$this->user_id = null;
			$this->ticket_id = null;
		}

		return true;
	}
}tables/tickets.php000064400000012242151163476010010202 0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproTableTickets extends JTable
{
	public $id;
	public $department_id;
	public $staff_id;
	public $customer_id;
	public $code;
	public $subject;
	public $status_id;
	public $priority_id;
	public $date;
	public $alternative_email;
	public $last_reply;
	public $last_reply_customer;
	public $replies;
	public $autoclose_sent;
	public $closed;
	public $flagged;
	public $agent;
	public $referer;
	public $ip;
	public $logged;
	public $feedback;
	public $followup_sent;
	public $has_files;
	public $time_spent;

	public function __construct(& $db)
	{
		parent::__construct('#__rsticketspro_tickets', 'id',
$db);
	}

	public function check()
	{
		if (!$this->id)
		{
			$this->closed = JFactory::getDbo()->getNullDate();

			if ($this->alternative_email === null)
			{
				$this->alternative_email = '';
			}

			$this->last_reply_customer = 1;
			$this->replies = 0;
			$this->autoclose_sent = 0;
			$this->flagged = 0;
			$this->feedback = 0;
			$this->has_files = 0;
			$this->time_spent = '0.00';
			$this->followup_sent = 0;
		}

		return true;
	}

	public function delete($pk = null)
	{
		$deleted = parent::delete($pk);
		if ($deleted)
		{
			$db    = $this->getDbo();
			$query = $db->getQuery(true);

			// delete all custom field values
			$query->delete('#__rsticketspro_custom_fields_values')
				->where($db->qn('ticket_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();

			// delete all messages
			$query->clear();
			$query->delete('#__rsticketspro_ticket_messages')
				->where($db->qn('ticket_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();

			// delete all notes
			$query->clear();
			$query->delete('#__rsticketspro_ticket_notes')
				->where($db->qn('ticket_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();

			// delete all history
			$query->clear();
			$query->delete('#__rsticketspro_ticket_history')
				->where($db->qn('ticket_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();

			// delete all files
			// physical files
			$query->clear();
			$query->select($db->qn('id'))
				->select($db->qn('ticket_message_id'))
				->from($db->qn('#__rsticketspro_ticket_files'))
				->where($db->qn('ticket_id') . '=' .
$db->q($pk));
			$db->setQuery($query);
			if ($files = $db->loadObjectList())
			{

				foreach ($files as $file)
				{
					$hash = md5($file->id . ' ' .
$file->ticket_message_id);
					JFile::delete(RST_UPLOAD_FOLDER . '/' . $hash);
				}
			}
			// from the database
			$query->clear();
			$query->delete('#__rsticketspro_ticket_files')
				->where($db->qn('ticket_id') . '=' .
$db->q($pk));
			$db->setQuery($query)->execute();
		}

		return $deleted;
	}

	public function load($keys = null, $reset = true)
	{
		$loaded = parent::load($keys, $reset);

		if ($loaded)
		{
			// load customer
			$this->customer = JFactory::getUser($this->customer_id);

			// load staff
			$this->staff = JFactory::getUser($this->staff_id);

			// load department
			$this->department = $this->getInstance('Departments',
'RsticketsproTable');
			$this->department->load($this->department_id);

			// load status
			$this->status = $this->getInstance('Statuses',
'RsticketsproTable');
			$this->status->load($this->status_id);

			// load priority
			$this->priority = $this->getInstance('Priorities',
'RsticketsproTable');
			$this->priority->load($this->priority_id);

			// get custom fields
			$this->fields = $this->getCustomFields();

			// load number of notes
			$this->notes = $this->getNotesCount();
		}

		return $loaded;
	}

	protected function getCustomFields()
	{
		$db     = $this->getDbo();
		$query  = $db->getQuery(true);
		$return = array();

		// get custom fields
		$query->select('*')
			->from($db->qn('#__rsticketspro_custom_fields'))
			->where($db->qn('department_id') . '=' .
$db->q($this->department_id))
			->where($db->qn('published') . '=' .
$db->q(1))
			->order($db->qn('ordering') . ' ' .
$db->escape('asc'));
		$db->setQuery($query);
		$fields = $db->loadObjectList();

		// get values as well, sort them by custom field ids
		$query->clear();
		$query->select('*')
			->from($db->qn('#__rsticketspro_custom_fields_values'))
			->where($db->qn('ticket_id') . '=' .
$db->q($this->id));
		$db->setQuery($query);
		$values = $db->loadObjectList('custom_field_id');

		foreach ($fields as $field)
		{
			$field->value = '';
			if (isset($values[$field->id]))
			{
				$field->value = $values[$field->id]->value;
			}

			$return[] = $field;
		}

		return $fields;
	}

	protected function getNotesCount()
	{
		$db    = $this->getDbo();
		$query = $db->getQuery(true);

		$query->select('COUNT(' . $db->qn('id') .
')')
			->from($db->qn('#__rsticketspro_ticket_notes'))
			->where($db->qn('ticket_id') . '=' .
$db->q($this->id));
		$db->setQuery($query);

		return $db->loadResult();
	}
}views/article/index.html000064400000000054151163476010011324
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/article/view.json.php000064400000001744151163476010011771
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewArticle extends JViewLegacy
{
	protected $item;
	
	public function display($tpl = null)
	{
		// set the JSON headers
		header('Content-Type: application/json; charset=utf-8');
		
		$this->item	= $this->get('article');

		if (!$this->item->id || !$this->item->published ||
(!RSTicketsProHelper::isStaff() && $this->item->private))
		{
			throw new Exception(JText::_('RST_CANNOT_VIEW_ARTICLE'));
		}
		
		if (!RSTicketsProHelper::getConfig('allow_rich_editor'))
		{
			$this->item->text = strip_tags($this->item->text);
		}
		
		// display the result
		echo json_encode(array('text' => $this->item->text));
		
		// end application
		JFactory::getApplication()->close();
	}
}views/configuration/index.html000064400000000054151163476010012550
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/configuration/tmpl/default.php000064400000002716151163476010013673
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('formbehavior.chosen', '.advancedSelect');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=configuration');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();
	?>
	<fieldset class="form-horizontal">
	<?php
	foreach ($this->fieldsets as $name => $fieldset)
	{
		// add the tab title
		$this->tabs->addTitle($fieldset->label, $fieldset->name);
		
		// prepare the content
		$this->fieldset =& $fieldset;
		$this->fields 	= $this->form->getFieldset($fieldset->name);

		switch ($fieldset->name)
        {
            default:
                $content = $this->loadTemplate('fieldset');
                break;

            case 'permissions':
                $content = $this->loadTemplate($fieldset->name);
                break;
        }
		
		// add the tab content
		$this->tabs->addContent($content);
	}
	
	// render tabs
	$this->tabs->render();
	?>
	</fieldset>
	</div>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="option"
value="com_rsticketspro" />
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/configuration/tmpl/default_fieldset.php000064400000001037151163476010015545
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2018 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description))
{
	?>
	<p><?php echo JText::_($this->fieldset->description);
?></p>
<?php
}

foreach ($this->fields as $field)
{
    echo $field->renderField();
}views/configuration/tmpl/default_permissions.php000064400000001070151163476010016316
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');
?>
<p><?php echo
JText::_('COM_RSTICKETSPRO_PERMISSIONS_NO_LONGER_HERE');
?></p>
<p><a class="btn btn-primary" href="<?php echo
JRoute::_('index.php?option=com_config&view=component&component=com_rsticketspro');
?>"><?php echo
JText::_('COM_RSTICKETSPRO_GO_TO_GLOBAL_CONFIGURATION');
?></a></p>views/configuration/tmpl/index.html000064400000000054151163476010013524
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/configuration/view.html.php000064400000002752151163476010013210
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewConfiguration extends JViewLegacy
{
	protected $tabs;
	protected $field;
	protected $form;
	protected $fieldsets;
	protected $config;
	protected $sidebar;
	
	public function display($tpl = null)
	{
		$user = JFactory::getUser();

		if (!$user->authorise('core.admin',
'com_rsticketspro')) {
			$app = JFactory::getApplication();
			$app->enqueueMessage(JText::_('JERROR_ALERTNOAUTHOR'),
'error');
			$app->redirect(JRoute::_('index.php?option=com_rsticketspro',
false));
		}
		
		$this->addToolbar();

		$this->tabs		 = $this->get('RSTabs');
		$this->form		 = $this->get('Form');
		$this->fieldsets = $this->form->getFieldsets();

		if (!RSTicketsProHelper::cronPluginExists())
		{
			$this->form->setFieldAttribute('show_alternative_email',
'type', 'hidden');
		}
		
		// config
		$this->config	= $this->get('Config');
		
		parent::display($tpl);
	}
	
	protected function addToolbar() {
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('configuration');
		
		JToolbarHelper::apply('configuration.apply');
		JToolbarHelper::save('configuration.save');
		JToolbarHelper::cancel('configuration.cancel');
	}
}views/cron/index.html000064400000000054151163476010010642
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cron/tmpl/edit.php000064400000003413151163476010011261
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=cron&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal"
autocomplete="off">
	<?php
	foreach ($this->form->getFieldsets() as $name => $fieldset)
	{
		// add the tab title
		$this->tabs->addTitle($fieldset->label, $fieldset->name);

		$content = '';

		// set description if required
		if (isset($fieldset->description) &&
!empty($fieldset->description))
		{
			$content .= '<p>' . JText::_($fieldset->description)
. '</p>';
		}

		$content .= $this->form->renderFieldset($fieldset->name);

		if ($fieldset->name === 'general')
		{
			$content .= '<div><p><a
href="https://www.rsjoomla.com/support/documentation/rsticketspro/frequently-asked-questions/how-do-i-set-up-a-cron-task.html"
target="_blank">' .
JText::_('RST_ACCOUNT_TYPE_CRON_HOWTO') .
'</a></p></div>';
		}

		// add the tab content
		$this->tabs->addContent($content);
	}

	// render tabs
	$this->tabs->render();

	if ($this->item->id)
	{
		echo JHtml::_('bootstrap.renderModal',
'rsticketsproCronModal', array(
			'title' =>
JText::_('RST_ACCOUNT_TEST_CONNECTION'),
			'url' 	=>
JRoute::_('index.php?option=com_rsticketspro&task=cron.preview&tmpl=component&id='
. $this->item->id, false),
			'height' => 400,
			'backdrop' => 'static'));
	}
	?>
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/cron/tmpl/edit_general.php000064400000001624151163476010012760
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010-2013 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset('');
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
	
	if ($field->fieldname == 'type') {
		$this->field->showField('&nbsp;', '<span
class="rsticketspro_clear"></span><a
href="https://www.rsjoomla.com/support/documentation/rsticketspro/frequently-asked-questions/how-do-i-set-up-a-cron-task.html"
target="_blank">'.JText::_('RST_ACCOUNT_TYPE_CRON_HOWTO').'</a>');
	}
}
$this->field->endFieldset();views/cron/tmpl/index.html000064400000000054151163476010011616
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cron/view.html.php000064400000002256151163476010011301
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewCron extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $tabs;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		// form
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		$this->tabs	= $this->get('RSTabs');
		
		$this->addToolbar();

		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
       
JFactory::getApplication()->enqueueMessage(JText::_('RST_CRON_WARNING'),
'notice');
		JToolbarHelper::title('RSTickets! Pro
<small>['.JText::_('RST_EDIT_ACCOUNT').']</small>','rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('crons');

		JToolbarHelper::apply('cron.apply');
		JToolbarHelper::save('cron.save');
		JToolbarHelper::cancel('cron.cancel');

		if (!empty($this->item->id))
		{
			JToolbarHelper::modal('rsticketsproCronModal',
'icon-refresh',
JText::_('RST_ACCOUNT_TEST_CONNECTION'));
		}
	}
}views/cronlog/index.html000064400000000054151163476010011344
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cronlog/tmpl/default.php000064400000005230151163476010012461
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));

JHtml::_('script',
'plg_system_rsticketsprocron/cronlog.js',
array('relative' => true, 'version' =>
'auto'));

JText::script('RST_CONFIRM_DELETE_ALL');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=cronlog');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
	?>
	<div class="alert alert-info">
		<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
		<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
	</div>
	<?php
	}
	else
	{
		?>
		<table class="table table-striped">
			<thead>
				<tr>
					<th width="1%" nowrap="nowrap"
class="center" align="center"><?php echo
JText::_( '#' ); ?></th>
					<th width="1%" nowrap="nowrap"
class="center" align="center"><?php echo
JHtml::_('grid.checkall'); ?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_ACCOUNT_NAME', 'a.name', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'DATE', 'al.date', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'SUBJECT', 'al.subject', $listDirn, $listOrder);
?></th>
					<th><?php echo JText::_('DESCRIPTION');
?></th>
				</tr>
			</thead>
			<tbody>
				<?php foreach ($this->items as $i => $item) { ?>
				<tr>
					<td width="1%" nowrap="nowrap"
class="center" align="center"><?php echo
$this->pagination->getRowOffset($i); ?></td>
					<td width="1%" nowrap="nowrap"
class="center" align="center"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td><?php echo $this->escape($item->name);
?></td>
					<td nowrap="nowrap"><?php echo
$this->showDate($item->date); ?></td>
					<td><?php echo $this->escape($item->subject);
?></td>
					<td><?php echo str_replace('[FATAL ERROR]',
'<strong class="rst_required invalid">[FATAL
ERROR]</strong>', $this->escape($item->description));
?></td>
				</tr>
				<?php } ?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	</div>
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/cronlog/tmpl/index.html000064400000000054151163476010012320
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/cronlog/view.html.php000064400000002264151163476010012002
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewCronlog extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();
		
		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		$this->dateFormat 	 =
RSTicketsProHelper::getConfig('date_format');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('cronlog');
		
		JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'cronlog.delete');
		JToolbarHelper::custom('cronlog.deleteAll', 'cancel',
'cancel', 'RST_DELETE_ALL', false);
	}
	
	protected function showDate($date)
	{
		return JHtml::_('date', $date, $this->dateFormat);
	}
}views/crons/index.html000064400000000054151163476010011025
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/crons/tmpl/default.php000064400000010302151163476010012136
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction')); 
$saveOrder	= $listOrder == 'ordering';
$ordering	= $listOrder == 'ordering';
if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=crons.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=crons');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
				<tr>
					<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
					<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_ACCOUNT_NAME', 'name', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_ACCOUNT_SERVER', 'server', $listDirn, $listOrder);
?></th>
					<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
					<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
				</tr>
			</thead>
			<tbody>
				<?php
				foreach ($this->items as $i => $item)
				{
					?>
					<tr>
						<td width="1%" nowrap="nowrap"
class="center" align="center"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
						<td class="order center">
							<?php
							$disableClassName = '';
							$disabledLabel	  = '';

							if (!$saveOrder)
							{
								$disabledLabel    = JText::_('JORDERINGDISABLED');
								$disableClassName = 'inactive';
							}
							?>
							<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
								<i class="icon-menu"></i>
							</span>
							<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
						</td>
						<td>
							<button type="button"
onclick="jQuery('#rsticketsproCronModal<?php echo
$item->id; ?>').modal('show');" class="btn
btn-secondary btn-small btn-sm"><?php echo
JText::_('RST_ACCOUNT_TEST_CONNECTION'); ?></button>

							<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=cron.edit&id='.$item->id);
?>"><?php echo $item->name != '' ?
$this->escape($item->name) : JText::_('RST_NO_TITLE');
?></a>
							<?php
							echo JHtml::_('bootstrap.renderModal',
'rsticketsproCronModal' . $item->id, array(
								'title' =>
JText::_('RST_ACCOUNT_TEST_CONNECTION'),
								'url' 	=>
JRoute::_('index.php?option=com_rsticketspro&task=cron.preview&tmpl=component&id='
. $item->id, false),
								'height' => 400,
								'backdrop' => 'static'));
							?>
						</td>
						<td><?php echo $this->escape($item->server .
':' . $item->port); ?></td>
						<td width="1%" nowrap="nowrap"
class="center" align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'crons.'); ?></td>
						<td width="1%"><?php echo
$this->escape($item->id); ?></td>
					</tr>
					<?php
				}
				?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
		<div>
			<?php echo JHtml::_( 'form.token' ); ?>
			<input type="hidden" name="boxchecked"
value="0" />
			<input type="hidden" name="task"
value="" />
		</div>
	</div>
</form>views/crons/tmpl/index.html000064400000000054151163476010012001
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/crons/view.html.php000064400000002160151163476010011456
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewCrons extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();
		
		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
	
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('crons');
		
		JToolbarHelper::addNew('cron.add');
		JToolbarHelper::editList('cron.edit');
		JToolbarHelper::divider();
		JToolbarHelper::publish('crons.publish');
		JToolbarHelper::unpublish('crons.unpublish');
		JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'crons.delete');
	}
}views/customfield/index.html000064400000000054151163476010012217
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/customfield/tmpl/edit.php000064400000001670151163476010012641
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=customfield&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/customfield/tmpl/index.html000064400000000054151163476010013173
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/customfield/view.html.php000064400000002062151163476010012651
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewCustomfield extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $field;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('customfields');
		
		JToolbarHelper::apply('customfield.apply');
		JToolbarHelper::save('customfield.save');
		JToolbarHelper::save2new('customfield.save2new');
		JToolbarHelper::save2copy('customfield.save2copy');
		JToolbarHelper::cancel('customfield.cancel');
	}
}views/customfields/index.html000064400000000054151163476010012402
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/customfields/tmpl/default.php000064400000011216151163476010013520
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JFactory::getApplication()->enqueueMessage(JText::_('RST_CUSTOM_FIELD_TRANSLATE'));

$canChange  =
JFactory::getUser()->authorise('customfield.edit.state',
'com_rsticketspro');
$canEdit  	=
JFactory::getUser()->authorise('customfield.edit',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'f.ordering' && $canChange;

if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=customfields.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=customfields');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'f.ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_DEPARTMENT', 'department_name', $listDirn,
$listOrder); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_CUSTOM_FIELD', 'f.name', $listDirn, $listOrder);
?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'f.published', $listDirn, $listOrder); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_REQUIRED',
'required', $listDirn, $listOrder); ?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'f.id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr data-draggable-group="<?php echo
$item->department_id; ?>">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td class="order center">
						<?php
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder)
						{
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive';
						}
						?>
						<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
					</td>
					<td width="1%" nowrap="nowrap"><?php echo
$this->escape($item->department_name); ?></td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=customfield.edit&id='.(int)
$item->id), $this->escape($item->name));
						}
						else
						{
							echo $this->escape($item->name);
						}
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'customfields.', $canChange); ?></td>
					<td align="center"><?php echo
JHtml::_('jgrid.state', array(
										0 => array('setrequired', 'JYES',
'', '', false, 'unpublish',
'unpublish'),
										1 => array('unsetrequired', 'JNO',
'', '', false, 'publish',
'publish')
									), $item->required, $i, 'customfields.', false);
									?></td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/customfields/tmpl/index.html000064400000000054151163476010013356
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/customfields/view.html.php000064400000003114151163476010013033
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewCustomfields extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('customfields');

		$user = JFactory::getUser();

		if ($user->authorise('customfield.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('customfield.add');
		}
		if ($user->authorise('customfield.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('customfield.edit');
		}
		if ($user->authorise('customfield.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('customfields.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('customfields.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('customfield.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'customfields.delete');
		}
	}
}views/department/index.html000064400000000054151163476010012044
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/department/tmpl/edit.php000064400000003402151163476010012461
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=department&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $name => $fieldset)
	{
		// add the tab title
		$this->tabs->addTitle($fieldset->label, $fieldset->name);

		$content = '';

		// set description if required
		if (isset($fieldset->description) &&
!empty($fieldset->description))
		{
			$content .= '<p>' . JText::_($fieldset->description)
. '</p>';
		}

		$content .= $this->form->renderFieldset($fieldset->name);

		if ($fieldset->name === 'uploads')
		{
			$content .= '<div class="rst_text">' .
				'<p>' .
JText::sprintf('RST_UPLOADS_MAX_FILESIZE',
$this->php_values['upload_max_filesize']) .
'</p>' .
				'<p>' .
JText::sprintf('RST_UPLOADS_POST_MAX_SIZE',
$this->php_values['post_max_size']) . '</p>'
.
				'<p>' .
JText::sprintf('RST_UPLOADS_MAX_FILES',
$this->php_values['max_file_uploads']) .
'</p>' .
				'</div>';
		}
		
		// add the tab content
		$this->tabs->addContent($content);
	}
	
	// render tabs
	$this->tabs->render();
	?>	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/department/tmpl/edit_emails.php000064400000001300151163476010014006
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
	//$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
    echo $this->form->renderField($field->fieldname);
}
$this->field->endFieldset();views/department/tmpl/edit_general.php000064400000001331151163476010014155
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$legend = $this->item->id ? JText::_('RST_EDIT_DEPARTMENT')
: JText::_('RST_ADD_NEW_DEPARTMENT');
$this->field->startFieldset($legend);
foreach ($this->fields as $field) {
    echo $this->form->renderField($field->fieldname);
}
$this->field->endFieldset();views/department/tmpl/edit_tickets.php000064400000001157151163476010014214
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
    echo $this->form->renderField($field->fieldname);
}
$this->field->endFieldset();views/department/tmpl/edit_uploads.php000064400000002256151163476010014216
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
    echo $this->form->renderField($field->fieldname);
	
	if ($field->fieldname == 'upload_size') {
		$label = '';
		$input = '<div
class="rst_text">'.JText::sprintf('RST_UPLOADS_MAX_FILESIZE',
$this->php_values['upload_max_filesize']).'<br
/>'.JText::sprintf('RST_UPLOADS_POST_MAX_SIZE',
$this->php_values['post_max_size']).'</div>';
		
		$this->field->showField($label, $input);
	}
	if ($field->fieldname == 'upload_files') {
		$label = '';
		$input = '<div
class="rst_text">'.JText::sprintf('RST_UPLOADS_MAX_FILES',
$this->php_values['max_file_uploads']).'</div>';
		
		$this->field->showField($label, $input);
	}
}
$this->field->endFieldset();views/department/tmpl/index.html000064400000000054151163476010013020
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/department/view.html.php000064400000002240151163476010012474
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewDepartment extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $tabs;
	protected $php_values;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();

		$this->form			= $this->get('Form');
		$this->item			= $this->get('Item');
		$this->tabs	 		= $this->get('RSTabs');
		$this->php_values 	= $this->get('PHPValues');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('departments');
		
		JToolbarHelper::apply('department.apply');
		JToolbarHelper::save('department.save');
		JToolbarHelper::save2new('department.save2new');
		JToolbarHelper::save2copy('department.save2copy');
		JToolbarHelper::cancel('department.cancel');
	}
}views/departments/index.html000064400000000054151163476010012227
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/departments/tmpl/default.php000064400000010645151163476010013352
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JFactory::getApplication()->enqueueMessage(JText::_('RST_DEPARTMENT_TRANSLATE'));

$canEdit  	= JFactory::getUser()->authorise('department.edit',
'com_rsticketspro');
$canChange  =
JFactory::getUser()->authorise('department.edit.state',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'ordering' && $canChange;

if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=departments.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=departments');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
	<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
				<tr>
					<th style="width:1%"
class="text-center"><?php echo
JHtml::_('grid.checkall'); ?></th>
					<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?></th>
					<th></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_DEPARTMENT', 'name', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_PREFIX', 'prefix', $listDirn, $listOrder);
?></th>
					<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
					<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
				</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr data-draggable-group="1">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td class="order center">
						<?php
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder)
						{
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive';
						}
						?>
						<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
					</td>
					<td width="1%" nowrap="nowrap">
						<a class="btn btn-secondary btn-small btn-sm"
href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=customfields&filter_department_id='.(int)
$item->id); ?>"><small>[<?php echo
JText::_('RST_CUSTOM_FIELDS'); ?>]</small></a>
					</td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=department.edit&id='.(int)
$item->id), $this->escape($item->name));
						}
						else
						{
							echo $this->escape($item->name);
						}
						?>
					</td>
					<td><?php echo $this->escape($item->prefix);
?></td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'departments.'); ?></td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/departments/tmpl/index.html000064400000000054151163476010013203
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/departments/view.html.php000064400000003116151163476010012662
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewDepartments extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();
		
		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('departments');

		$user = JFactory::getUser();

		if ($user->authorise('department.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('department.add');
		}
		if ($user->authorise('department.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('department.edit');
		}
		if ($user->authorise('department.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('departments.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('departments.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('department.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE_DEPARTMENT',
'departments.delete');
		}
	}
}views/email/index.html000064400000000054151163476010010770
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/email/tmpl/edit.php000064400000001664151163476010011415
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>

<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=email&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/email/tmpl/index.html000064400000000054151163476010011744
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/email/view.html.php000064400000001650151163476010011424
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewEmail extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $field;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('emails');
		
		JToolbarHelper::apply('email.apply');
		JToolbarHelper::save('email.save');
		JToolbarHelper::cancel('email.cancel');
	}
}views/emails/index.html000064400000000054151163476010011153
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/emails/tmpl/default.php000064400000005554151163476010012301
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

$canEdit   = JFactory::getUser()->authorise('email.edit',
'com_rsticketspro');
$canChange =
JFactory::getUser()->authorise('email.edit.state',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=emails');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_EMAIL_LANGUAGE', 'lang', $listDirn, $listOrder);
?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_EMAIL_TYPE', 'type', $listDirn, $listOrder);
?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_EMAIL_SUBJECT', 'subject', $listDirn, $listOrder);
?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr>
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td width="1%" nowrap="nowrap"><?php echo
$this->escape($item->lang); ?></td>
					<td><?php echo JText::_('RST_'.$item->type);
?></td>
					<td>
						<?php
						$text = strlen($item->subject) ?
$this->escape($item->subject) : '<em>' .
JText::_('RST_NO_TITLE') . '</em>';
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=email.edit&id='.(int)
$item->id), $text);
						}
						else
						{
							echo $text;
						}
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'emails.', $canChange); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();

	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/emails/tmpl/index.html000064400000000054151163476010012127
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/emails/view.html.php000064400000002414151163476010011606
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewEmails extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('emails');

		$user = JFactory::getUser();

		if ($user->authorise('email.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('email.edit');
		}
		if ($user->authorise('email.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('emails.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('emails.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
	}
}views/group/index.html000064400000000054151163476010011035
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/group/tmpl/edit.php000064400000002522151163476010011454
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=group&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $name => $fieldset)
	{
		// add the tab title
		$this->tabs->addTitle($fieldset->label, $fieldset->name);

		$content = '';

		// set description if required
		if (isset($fieldset->description) &&
!empty($fieldset->description))
		{
			$content .= '<p>' . JText::_($fieldset->description)
. '</p>';
		}

		$content .= $this->form->renderFieldset($fieldset->name);

		// add the tab content
		$this->tabs->addContent($content);
	}

	// render tabs
	$this->tabs->render();
	?>	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/group/tmpl/edit_general.php000064400000001347151163476010013155
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$legend = $this->item->id ? JText::_('RST_EDIT_GROUP') :
JText::_('RST_ADD_NEW_GROUP');
$this->field->startFieldset($legend);
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
}
$this->field->endFieldset();views/group/tmpl/edit_notes.php000064400000001207151163476010012663
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
}
$this->field->endFieldset();views/group/tmpl/edit_replying.php000064400000001207151163476010013364
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
}
$this->field->endFieldset();views/group/tmpl/edit_submitting.php000064400000001207151163476010013720
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
}
$this->field->endFieldset();views/group/tmpl/edit_updating.php000064400000001207151163476010013346
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
}
$this->field->endFieldset();views/group/tmpl/edit_viewing.php000064400000001207151163476010013203
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// set description if required
if (isset($this->fieldset->description) &&
!empty($this->fieldset->description)) { ?>
	<?php echo JText::_($this->fieldset->description); ?>
<?php } ?>
<?php
$this->field->startFieldset();
foreach ($this->fields as $field) {
	$this->field->showField($field->hidden ? '' :
$field->label, $field->input);
}
$this->field->endFieldset();views/group/tmpl/index.html000064400000000054151163476010012011
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/group/view.html.php000064400000002053151163476010011467
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewGroup extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $tabs;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();

		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		$this->tabs	= $this->get('RSTabs');
		
		parent::display($tpl);
	}

	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('groups');
		
		JToolbarHelper::apply('group.apply');
		JToolbarHelper::save('group.save');
		JToolbarHelper::save2new('group.save2new');
		JToolbarHelper::save2copy('group.save2copy');
		JToolbarHelper::cancel('group.cancel');
	}
}views/groups/index.html000064400000000054151163476010011220
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/groups/tmpl/default.php000064400000004367151163476010012347
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

$canEdit  	= JFactory::getUser()->authorise('group.edit',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=groups');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_GROUP', 'name', $listDirn, $listOrder);
?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
					<tr>
						<td width="1%" nowrap="nowrap"><?php
echo JHtml::_('grid.id', $i, $item->id); ?></td>
						<td>
							<?php
							if ($canEdit)
							{
								echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=group.edit&id='.(int)
$item->id), $this->escape($item->name));
							}
							else
							{
								echo $this->escape($item->name);
							}
							?>
						</td>
						<td width="1%"><?php echo
$this->escape($item->id); ?></td>
					</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/groups/tmpl/index.html000064400000000054151163476010012174
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/groups/view.html.php000064400000002450151163476010011653
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewGroups extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();
		
		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}

	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('groups');

		$user = JFactory::getUser();

		if ($user->authorise('group.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('group.add');
		}
		if ($user->authorise('group.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('group.edit');
		}
		if ($user->authorise('group.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'groups.delete');
		}
	}
}views/history/index.html000064400000000054151163476010011402
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/history/tmpl/default.php000064400000003323151163476010012520
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');

$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=history&id='.$this->id.'&tmpl=component');
?>" method="post" name="adminForm"
id="adminForm">
	<table class="table table-striped">
		<thead>
		<tr>
			<th><?php echo JHtml::_('grid.sort',
'RST_HISTORY_DATE', 'date', $listDirn, $listOrder);
?></th>
			<th><?php echo JHtml::_('grid.sort',
'RST_HISTORY_IP', 'ip', $listDirn, $listOrder);
?></th>
			<th><?php echo JText::_('RST_HISTORY_ACTION');
?></th>
			<th><?php echo JText::_('RST_HISTORY_VIEWED');
?></th>
		</tr>
		</thead>
		<tbody>
		<?php
		foreach ($this->items as $item)
		{
			?>
			<tr>
				<td width="1%" nowrap="nowrap"><?php echo
$this->showDate($item->date); ?></td>
				<td width="1%" nowrap="nowrap"><?php echo
$this->escape($item->ip); ?></td>
				<td width="1%" nowrap="nowrap"><?php echo
JText::_('RST_HISTORY_ACTION_'.$item->type); ?></td>
				<td><?php echo
$this->escape($this->showUser($item->user_id)); ?></td>
			</tr>
			<?php
		}
		?>
		</tbody>
	</table>
	<?php echo $this->pagination->getListFooter(); ?>

	<?php echo JHtml::_( 'form.token' ); ?>
	<input type="hidden" name="filter_order"
value="<?php echo $listOrder; ?>" />
	<input type="hidden" name="filter_order_Dir"
value="<?php echo $listDirn; ?>" />
</form>views/history/tmpl/index.html000064400000000054151163476010012356
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/history/view.html.php000064400000003613151163476010012037
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewHistory extends JViewLegacy
{
	protected $id;
	protected $items;
	protected $pagination;
	protected $state;
	protected $dateFormat;
	protected $userField;
	
	public function display($tpl = null)
	{
		if (!$this->hasPermission())
		{
			throw new Exception(JText::_('RST_CANNOT_VIEW_HISTORY'),
403);
		}
		
		$this->id 			= $this->get('Id');
		$this->items 		= $this->get('Items');
		$this->pagination 	= $this->get('Pagination');
		$this->state 		= $this->get('State');
		$this->dateFormat 	=
RSTicketsProHelper::getConfig('date_format');
		$this->userField	=
RSTicketsProHelper::getConfig('show_user_info');
		
		parent::display($tpl);
	}
	
	protected function showDate($date)
	{
		return JHtml::_('date', $date, $this->dateFormat);
	}
	
	protected function showUser($user_id)
	{
		static $cache = array();

		if (!isset($cache[$user_id]))
		{
			$cache[$user_id] = $user_id ?
JFactory::getUser($user_id)->{$this->userField} : '-';
		}

		return $cache[$user_id];
	}
	
	protected function hasPermission()
	{
		// get id
		$id = $this->get('Id');
		// get model
		$model = JModelLegacy::getInstance('Ticket',
'RsticketsproModel', array(
			'option' => 'com_rsticketspro',
			'table_path' =>
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/tables'
		));
		
		// check if options are enabled
		$viewingHistory =
RSTicketsProHelper::getConfig('ticket_viewing_history');
		if ($viewingHistory && (($viewingHistory == 1 &&
$model->isStaff()) || ($viewingHistory == 2)))
		{
			// check if ticket can be opened
			return $model->hasPermission($id);
		}
		
		return false;
	}
}views/index.html000064400000000054151163476010007701
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbarticle/index.html000064400000000054151163476010011641
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbarticle/tmpl/edit.php000064400000002244151163476010012261
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbarticle&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	if ($this->ticket)
	{
		echo '<a
href="'.JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='.$this->ticket->id).'">'.JText::sprintf('RST_KB_ARTICLE_CONVERTED_FROM',
$this->ticket->subject,
$this->ticket->code).'</a>';
	}

	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/kbarticle/tmpl/index.html000064400000000054151163476010012615
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbarticle/view.html.php000064400000002122151163476010012270
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbarticle extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $ticket;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	  = $this->get('Form');
		$this->item	  = $this->get('Item');
		$this->ticket = $this->get('Ticket');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('kbarticles');
		
		JToolbarHelper::apply('kbarticle.apply');
		JToolbarHelper::save('kbarticle.save');
		JToolbarHelper::save2new('kbarticle.save2new');
		JToolbarHelper::save2copy('kbarticle.save2copy');
		JToolbarHelper::cancel('kbarticle.cancel');
	}
}views/kbarticle/view.json.php000064400000001422151163476010012277
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbarticle extends JViewLegacy
{
	protected $item;
	
	public function display($tpl = null)
	{
		// set the JSON headers
		header('Content-Type: application/json; charset=utf-8');
		
		$this->item	= $this->get('Item');
		
		if (!RSTicketsProHelper::getConfig('allow_rich_editor'))
		{
			$this->item->text = strip_tags($this->item->text);
		}
		
		// display the result
		echo json_encode($this->item);
		
		// end application
		JFactory::getApplication()->close();
	}
}views/kbarticles/index.html000064400000000054151163476010012024
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbarticles/tmpl/default.php000064400000012356151163476010013150
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

$canEdit		 = JFactory::getUser()->authorise('kbarticle.edit',
'com_rsticketspro');
$canChange		 =
JFactory::getUser()->authorise('kbarticle.edit.state',
'com_rsticketspro');
$canEditCategory =
JFactory::getUser()->authorise('kbcategory.edit',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'a.ordering' && $canChange;

if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=kbarticles.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbarticles');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
	?>
	<div class="alert alert-info">
		<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
		<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
	</div>
	<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'a.ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_ARTICLE_NAME', 'a.name', $listDirn,
$listOrder); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_CATEGORY_NAME', 'c.name', $listDirn,
$listOrder); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_KB_HITS',
'a.hits', $listDirn, $listOrder); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_PRIVATE',
'a.private', $listDirn, $listOrder); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'a.published', $listDirn, $listOrder); ?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'a.id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr data-draggable-group="<?php echo $item->category_id;
?>">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td class="order center">
						<?php
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder)
						{
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive';
						}
						?>
						<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
					</td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=kbarticle.edit&id='.(int)
$item->id), $this->escape($item->name));
						}
						else
						{
							echo $this->escape($item->name);
						}
						?>
					</td>
					<td>
						<?php
						if ($item->category_id)
						{
							if ($canEditCategory)
							{
								echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=kbcategory.edit&id='.(int)
$item->category_id), $this->escape($item->category_name));
							}
							else
							{
								echo $this->escape($item->category_name);
							}
						}
						else
						{
							echo JText::_('RST_KB_NO_PARENT');
						}
						?>
					</td>
					<td width="1%" nowrap="nowrap"><?php echo
$this->escape($item->hits); ?></td>
					<td width="1%" nowrap="nowrap"
align="center">
						<?php
						echo JHtml::_('jgrid.state', array(
							0 => array('setprivate', 'JYES',
'', '', false, 'unpublish',
'unpublish'),
							1 => array('unsetprivate', 'JNO',
'', '', false, 'publish',
'publish')
						), $item->private, $i, 'kbarticles.', false);
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'kbarticles.', $canChange); ?></td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/kbarticles/tmpl/element.php000064400000005340151163476010013150
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
?>

<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbarticles&layout=element');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped">
			<thead>
				<tr>
					<th width="20"><?php echo
JHtml::_('grid.checkall'); ?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_ARTICLE_NAME', 'a.name', $listDirn,
$listOrder); ?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_CATEGORY_NAME', 'c.name', $listDirn,
$listOrder); ?></th>
					<th width="1%" class="center"
align="center"><?php echo
JHtml::_('searchtools.sort', 'RST_PRIVATE',
'a.private', $listDirn, $listOrder); ?></th>
					<th width="1%" class="center"
align="center"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'a.published', $listDirn, $listOrder); ?></th>
				</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr>
					<td><?php echo JHtml::_('grid.id', $i,
$item->id); ?></td>
					<td><a
onclick="window.parent.elSelectEvent('<?php echo $item->id;
?>', this.innerText);" href="javascript:
void(0);"><?php echo $item->name != '' ?
$this->escape($item->name) : JText::_('RST_NO_TITLE');
?></a></td>
					<td>
						<?php
						if ($item->category_id)
						{
							echo $item->category_name;
						}
						else
						{
							echo JText::_('RST_KB_NO_PARENT');
						}
						?>
					</td>
					<td class="center" align="center"><?php
echo $item->private ? JText::_('JYES') :
JText::_('JNO'); ?></td>
					<td class="center" align="center"><?php
echo JHtml::_('jgrid.published', $item->published, $i,
'kbarticles.'); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<?php echo JHtml::_( 'form.token' ); ?>
	<input type="hidden" name="boxchecked"
value="0" />
	<input type="hidden" name="task" value=""
/>
	<input type="hidden" name="tmpl"
value="component" />
</form>views/kbarticles/tmpl/index.html000064400000000054151163476010013000
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbarticles/view.html.php000064400000003066151163476010012463
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbarticles extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('kbarticles');

		$user = JFactory::getUser();

		if ($user->authorise('kbarticle.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('kbarticle.add');
		}
		if ($user->authorise('kbarticle.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('kbarticle.edit');
		}
		if ($user->authorise('kbarticle.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('kbarticles.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('kbarticles.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('kbarticle.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'kbarticles.delete');
		}
	}
}views/kbcategories/index.html000064400000000054151163476010012343
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbcategories/tmpl/default.php000064400000010741151163476010013463
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

$canEdit	= JFactory::getUser()->authorise('kbcategory.edit',
'com_rsticketspro');
$canChange	=
JFactory::getUser()->authorise('kbcategory.edit.state',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'ordering' && $canChange;

if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=kbcategories.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbcategories');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
	?>
	<div class="alert alert-info">
		<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
		<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
	</div>
	<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_CATEGORY_NAME', 'name', $listDirn, $listOrder);
?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_PRIVATE',
'private', $listDirn, $listOrder); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
			<?php
			$i = 0;
			foreach ($this->items as $item)
			{
				?>
				<tr data-draggable-group="<?php echo $item->parent_id;
?>">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td class="order center">
						<?php
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder)
						{
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive';
						}
						?>
						<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
					</td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=kbcategory.edit&id='.(int)
$item->id), (isset($item->treename) ? $item->treename :
'') . $this->escape($item->name));
						}
						else
						{
							echo (isset($item->treename) ? $item->treename : '')
. $this->escape($item->name);
						}
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center">
						<?php
						echo JHtml::_('jgrid.state', array(
							0 => array('setprivate', 'JYES',
'', '', false, 'unpublish',
'unpublish'),
							1 => array('unsetprivate', 'JNO',
'', '', false, 'publish',
'publish')
						), $item->private, $i, 'kbcategories.', false);
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'kbcategories.', $canChange); ?></td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
				$i++;
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/kbcategories/tmpl/index.html000064400000000054151163476010013317
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbcategories/view.html.php000064400000003104151163476010012773
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbcategories extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');

		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('kbcategories');

		$user = JFactory::getUser();

		if ($user->authorise('kbcategory.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('kbcategory.add');
		}
		if ($user->authorise('kbcategory.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('kbcategory.edit');
		}
		if ($user->authorise('kbcategory.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('kbcategories.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('kbcategories.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('kbcategory.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'kbcategories.delete');
		}
	}
}views/kbcategory/index.html000064400000000054151163476010012033
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbcategory/tmpl/edit.php000064400000002454151163476010012456
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
JHtml::_('behavior.formvalidator');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbcategory&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal"
enctype="multipart/form-data">
	<?php
	if ($this->item->thumb && $this->item->id)
	{
		echo '<p>' . JHtml::_('image',
'components/com_rsticketspro/assets/thumbs/small/' .
$this->item->thumb, '', array(), false) .
'</p>';
	}
	else
	{
		$this->form->setFieldAttribute('delete_thumb',
'disabled', 'true');
		$this->form->setFieldAttribute('delete_thumb',
'filter', 'unset');
	}
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/kbcategory/tmpl/index.html000064400000000054151163476010013007
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbcategory/view.html.php000064400000002026151163476010012465
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbcategory extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');

		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('kbcategories');
		
		JToolbarHelper::apply('kbcategory.apply');
		JToolbarHelper::save('kbcategory.save');
		JToolbarHelper::save2new('kbcategory.save2new');
		JToolbarHelper::save2copy('kbcategory.save2copy');
		JToolbarHelper::cancel('kbcategory.cancel');
	}
}views/kbconvert/index.html000064400000000054151163476010011676
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbconvert/tmpl/default.php000064400000001620151163476010013012
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbconvert');
?>" method="post" name="adminForm"
id="adminForm" class="form-validate
form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/kbconvert/tmpl/index.html000064400000000054151163476010012652
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbconvert/view.html.php000064400000001546151163476010012336
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbconvert extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $field;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('ticket');
		
		JToolbarHelper::save('kbconvert.save');
		JToolbarHelper::cancel('kbconvert.cancel');
	}
}views/kbresults/index.html000064400000000054151163476010011717
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbresults/tmpl/default.php000064400000000420151163476010013030
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');
views/kbresults/tmpl/index.html000064400000000054151163476010012673
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbresults/view.json.php000064400000001511151163476010012354
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbresults extends JViewLegacy
{
	public function display($tpl = null)
	{
		// set the JSON headers
		header('Content-Type: application/json; charset=utf-8');
		
		$this->items = $this->get('Items');
		
		// parse the results
		$results = array();
		foreach ($this->items as $item)
		{
			$results[] = array(
				'label' => $item->name,
				'value' => $item->id
			);
		}
		
		// display the results
		echo json_encode(array(
			'list' => $results
		));

		// end application
		JFactory::getApplication()->close();
	}
}views/kbrule/index.html000064400000000054151163476010011165
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbrule/tmpl/edit.php000064400000003007151163476010011603
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
JText::script('RST_PLEASE_SELECT');
JText::script('RST_DEPARTMENT');
JText::script('RST_TICKET_SUBJECT');
JText::script('RST_TICKET_MESSAGE');
JText::script('RST_PRIORITY');
JText::script('RST_TICKET_STATUS');
JText::script('RST_CUSTOM_FIELD');
JText::script('RST_IS_EQUAL');
JText::script('RST_IS_NOT_EQUAL');
JText::script('RST_IS_LIKE');
JText::script('RST_IS_NOT_LIKE');
JText::script('RST_AND');
JText::script('RST_OR');
JText::script('RST_IF');

JHtml::_('behavior.formvalidator');
JHtml::_('behavior.keepalive');
JHtml::_('jquery.framework');
JHtml::_('script', 'com_rsticketspro/kbrules.js',
array('relative' => true, 'version' =>
'auto'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbrule&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/kbrule/tmpl/index.html000064400000000054151163476010012141
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbrule/view.html.php000064400000001767151163476010011632
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbrule extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');

		parent::display($tpl);
	}
	
	protected function addToolbar() {
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('kbrules');
		
		JToolbarHelper::apply('kbrule.apply');
		JToolbarHelper::save('kbrule.save');
		JToolbarHelper::save2new('kbrule.save2new');
		JToolbarHelper::save2copy('kbrule.save2copy');
		JToolbarHelper::cancel('kbrule.cancel');
	}
}views/kbrules/index.html000064400000000054151163476010011350
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbrules/tmpl/default.php000064400000005524151163476010012473
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');
$canEdit	= JFactory::getUser()->authorise('kbrule.edit',
'com_rsticketspro');
$canChange	=
JFactory::getUser()->authorise('kbrule.edit.state',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=kbrules');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
	?>
	<div class="alert alert-info">
		<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
		<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
	</div>
	<?php
	}
	else
	{
		?>
		<table class="table table-striped">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_RULE_NAME', 'r.name', $listDirn, $listOrder);
?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_KB_CATEGORY_NAME', 'c.name', $listDirn,
$listOrder); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'r.published', $listDirn, $listOrder); ?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'r.id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr data-draggable-group="1">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=kbrule.edit&id='.(int)
$item->id), $this->escape($item->name));
						}
						else
						{
							echo $this->escape($item->name);
						}
						?>
					</td>
					<td><?php echo $item->category_id ?
$this->escape($item->category_name) :
JText::_('RST_KB_NO_PARENT'); ?></td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'kbrules.', $canChange); ?></td>
					<td><?php echo $this->escape($item->id);
?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/kbrules/tmpl/index.html000064400000000054151163476010012324
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/kbrules/view.html.php000064400000003025151163476010012002
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewKbrules extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('kbrules');

		$user = JFactory::getUser();

		if ($user->authorise('kbrule.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('kbrule.add');
		}
		if ($user->authorise('kbrule.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('kbrule.edit');
		}
		if ($user->authorise('kbrule.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('kbrules.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('kbrules.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('kbrule.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'kbrules.delete');
		}
	}
}views/note/index.html000064400000000054151163476010010646
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/note/tmpl/edit.php000064400000002515151163476010011267
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=note&tmpl=component&layout=edit&id='.(int)
$this->item->id.'&ticket_id='.$this->ticket_id);
?>" method="post" name="adminForm"
id="adminForm" class="form-validate
form-horizontal">
	<div class="rst_button_spacer">
		<button type="button" class="btn btn-success"
onclick="Joomla.submitbutton('note.apply');"><i
class="icon-apply icon-white"></i> <?php echo
JText::_('JAPPLY'); ?></button>
		<button type="button" class="btn btn-danger"
onclick="Joomla.submitbutton('note.cancel');"><i
class="icon-cancel"></i> <?php echo
JText::_('JCANCEL'); ?></button>
	</div>
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
		
	<?php echo JHtml::_('form.token'); ?>
	<input type="hidden" name="task" value=""
/>
</form>views/note/tmpl/index.html000064400000000054151163476010011622
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/note/view.html.php000064400000001064151163476010011301
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewNote extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		$this->ticket_id = $this->get('TicketId');
		
		parent::display($tpl);
	}
}views/notes/index.html000064400000000054151163476010011031
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/notes/tmpl/default.php000064400000007310151163476010012147
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');

$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));

JText::script('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST');
JText::script('RST_DELETE_TICKET_NOTE_CONFIRM');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=notes&ticket_id='.$this->id.'&tmpl=component');
?>" method="post" name="adminForm"
id="adminForm">
	<div class="rst_button_spacer">
	<?php
	if ($this->permissions->add_note)
	{
		?>
		<button type="button" class="btn btn-success"
onclick="Joomla.submitbutton('note.add');"><i
class="icon-plus"></i> <?php echo
JText::_('RST_TICKET_ADD_NOTE'); ?></button>
		<?php
	}
	if ($this->permissions->delete_note ||
$this->permissions->delete_note_staff)
	{
		?>
		<button type="button" class="btn btn-danger"
onclick="if (document.adminForm.boxchecked.value === '0') {
alert(Joomla.JText._('JLIB_HTML_PLEASE_MAKE_A_SELECTION_FROM_THE_LIST'));
} else { if
(confirm(Joomla.JText._('RST_DELETE_TICKET_NOTE_CONFIRM'))) {
Joomla.submitbutton('notes.delete'); } }"><i
class="icon-delete"></i> <?php echo
JText::_('RST_TICKET_DELETE_NOTE'); ?></button>
		<?php
	}
	?>
	</div>
	<?php
	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped table-condensed">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th><?php echo JHtml::_('grid.sort',
'RST_HISTORY_DATE', 'date', $listDirn, $listOrder);
?></th>
				<th><?php echo JText::_('RST_NOTES_USER');
?></th>
				<th><?php echo JText::_('RST_TICKET_NOTE');
?></th>
			</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $i => $item)
			{
				$canDelete = ($this->permissions->delete_note &&
$item->user_id == $this->userId) ||
($this->permissions->delete_note_staff && $item->user_id
!= $this->userId);
				$canEdit   = ($this->permissions->update_note &&
$item->user_id == $this->userId) ||
($this->permissions->update_note_staff && $item->user_id
!= $this->userId);
				?>
				<tr>
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id, !$canDelete);
?></td>
					<td width="1%" nowrap="nowrap"><?php echo
$this->showDate($item->date); ?></td>
					<td width="1%" nowrap="nowrap"><?php echo
$this->escape($this->showUser($item->user_id)); ?></td>
					<td>
						<p><?php echo nl2br($this->escape($item->text));
?></p>
						<?php
						if ($canEdit)
						{
							?>
							<p><a class="btn btn-secondary btn-mini btn-sm"
href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=note.edit&tmpl=component&ticket_id='.$this->id.'&id='.(int)
$item->id); ?>"><?php echo
JText::_('RST_TICKET_EDIT_NOTE'); ?></a></p>
							<?php
						}
						?>
					</td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}

	echo JHtml::_( 'form.token' );
	?>
	<input type="hidden" name="boxchecked"
value="0" />
	<input type="hidden" name="task" value=""
/>
	<input type="hidden" name="filter_order"
value="<?php echo $listOrder; ?>" />
	<input type="hidden" name="filter_order_Dir"
value="<?php echo $listDirn; ?>" />
</form>views/notes/tmpl/index.html000064400000000054151163476010012005
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/notes/view.html.php000064400000003353151163476010011467
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewNotes extends JViewLegacy
{
	protected $id;
	protected $items;
	protected $pagination;
	protected $state;
	protected $permissions;
	protected $dateFormat;
	protected $userField;
	
	public function display($tpl = null)
	{
		if (!$this->hasPermission())
		{
			throw new Exception(JText::_('RST_STAFF_CANNOT_VIEW_NOTES'),
403);
		}
		
		$this->id 			= $this->get('Id');
		$this->items 		= $this->get('Items');
		$this->pagination 	= $this->get('Pagination');
		$this->state 		= $this->get('State');
		$this->userId		= JFactory::getUser()->id;
		
		$this->dateFormat 	=
RSTicketsProHelper::getConfig('date_format');
		$this->userField	=
RSTicketsProHelper::getConfig('show_user_info');
		
		parent::display($tpl);
	}
	
	protected function showDate($date)
	{
		return JHtml::_('date', $date, $this->dateFormat);
	}
	
	protected function showUser($user_id) {
		if ($user_id) {
			return JFactory::getUser($user_id)->{$this->userField};
		} else {
			return '-';
		}
	}
	
	protected function hasPermission() {
		// get id
		$id = $this->get('Id');
		// get model
		$model = JModelLegacy::getInstance('Ticket',
'RsticketsproModel', array(
			'option' => 'com_rsticketspro',
			'table_path' =>
JPATH_ADMINISTRATOR.'/components/com_rsticketspro/tables'
		));
		// get permissions
		$this->permissions = $model->getStaffPermissions();
		return $model->isStaff() &&
$this->permissions->view_notes &&
$model->hasPermission($id);
	}
}views/predefinedsearch/index.html000064400000000054151163476010013174
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/predefinedsearch/tmpl/edit.php000064400000006641151163476010013621
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=predefinedsearch&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}

	if (isset($this->item->params['search']))
	{
		$input = strlen($this->item->params['search']) ?
$this->escape($this->item->params['search']) :
'<em>' . JText::_('RST_NONE_SUPPLIED') .
'</em>';
		$this->showField(JText::_('RST_SEARCH_TEXT'), $input);
	}
	
	if (isset($this->item->params['customer']))
	{
		$input = strlen($this->item->params['customer']) ?
$this->escape($this->item->params['customer']) :
'<em>' . JText::_('RST_NONE_SUPPLIED') .
'</em>';
		$this->showField(JText::_('RST_SEARCH_CUSTOMER'), $input);
	}
	
	if (isset($this->item->params['staff']))
	{
		if (strlen($this->item->params['staff']))
		{
			if ((string) $this->item->params['staff'] ===
'0')
			{
				$input = '<em>' . JText::_('RST_UNASSIGNED')
. '</em>';
			}
			else
			{
				$input =
$this->escape($this->item->params['staff']);
			}
		}
		else
		{
			$input = '<em>' .
JText::_('RST_NONE_SUPPLIED') . '</em>';
		}
		$this->showField(JText::_('RST_SEARCH_STAFF'), $input);
	}
	
	if (isset($this->item->params['department_id']))
	{
		$departments =
$this->getDepartments($this->item->params['department_id']);
		$input = $departments ? $this->escape(implode(', ',
$departments)) : '<em>' .
JText::_('RST_NONE_SUPPLIED') . '</em>';
		$this->showField(JText::_('RST_SEARCH_DEPARTMENTS'),
$input);
	}
	
	if (isset($this->item->params['priority_id']))
	{
		$priorities =
$this->getPriorities($this->item->params['priority_id']);
		$input = $priorities ? $this->escape(implode(', ',
$priorities)) : '<em>' .
JText::_('RST_NONE_SUPPLIED') . '</em>';
		$this->showField(JText::_('RST_SEARCH_PRIORITIES'),
$input);
	}
	
	if (isset($this->item->params['status_id']))
	{
		$statuses =
$this->getStatuses($this->item->params['status_id']);
		$input = $statuses ? $this->escape(implode(', ', $statuses))
: '<em>' . JText::_('RST_NONE_SUPPLIED') .
'</em>';
		$this->showField(JText::_('RST_SEARCH_STATUSES'), $input);
	}
	
	if (isset($this->item->params['flagged']))
	{
		$input = $this->item->params['flagged'] ?
JText::_('JYES') : JText::_('JNO');
		$this->showField(JText::_('RST_SEARCH_FLAGGED'), $input);
	}
	
	if (!empty($this->item->params['ordering']))
	{
		$input =
JText::_('RST_TICKET_'.$this->item->params['ordering']);
		if (!empty($this->item->params['direction']))
		{
			$input .= ' ' .
($this->item->params['direction'] == 'asc' ?
JText::_('JGLOBAL_ORDER_ASCENDING') :
JText::_('JGLOBAL_ORDER_DESCENDING'));
		}
		$this->showField(JText::_('JFIELD_ORDERING_LABEL'),
$input);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/predefinedsearch/tmpl/index.html000064400000000054151163476010014150
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/predefinedsearch/view.html.php000064400000006235151163476010013634
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewPredefinedsearch extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('tickets');
		
		JToolbarHelper::apply('predefinedsearch.apply');
		JToolbarHelper::save('predefinedsearch.save');
		JToolbarHelper::cancel('predefinedsearch.cancel');
	}

	protected function showField($label, $desc)
	{
		echo '<p><strong>' . $label .
'</strong><br>' . $desc . '</p>';
	}
	
	protected function getDepartments($ids)
	{
		$db 	 = JFactory::getDbo();
		$results = array();

		if (!is_array($ids))
		{
			$ids = (array) $ids;
		}
		
		if (!$ids)
		{
			return $results;
		}
		
		$filtered_ids = array();
		foreach ($ids as $id)
		{
			$filtered_ids[] = $db->q($id);
		}
		
		// Load departments
		$query = $db->getQuery(true);
		$query->select($db->qn('name'))
			->from($db->qn('#__rsticketspro_departments'))
			->where($db->qn('id') . ' IN
('.implode(',', $filtered_ids).')');
		
		if ($results = $db->setQuery($query)->loadColumn())
		{
			foreach ($results as $k => $result)
			{
				$results[$k] = JText::_($result);
			}
		}
		
		return $results;
	}
	
	protected function getPriorities($ids)
	{
		$db 	 = JFactory::getDbo();
		$results = array();

		if (!is_array($ids))
		{
			$ids = (array) $ids;
		}
		
		if (!$ids)
		{
			return $results;
		}
		
		$filtered_ids = array();
		foreach ($ids as $id)
		{
			$filtered_ids[] = $db->q($id);
		}
		
		// Load priorities
		$query = $db->getQuery(true);
		$query->select($db->qn('name'))
			->from($db->qn('#__rsticketspro_priorities'))
			->where($db->qn('id') . ' IN
('.implode(',', $filtered_ids).')');
		
		if ($results = $db->setQuery($query)->loadColumn())
		{
			foreach ($results as $k => $result)
			{
				$results[$k] = JText::_($result);
			}
		}
		
		return $results;
	}
	
	protected function getStatuses($ids)
	{
		$db 	 = JFactory::getDbo();
		$results = array();

		if (!is_array($ids))
		{
			$ids = (array) $ids;
		}
		
		if (!$ids)
		{
			return $results;
		}
		
		$filtered_ids = array();
		foreach ($ids as $id)
		{
			$filtered_ids[] = $db->q($id);
		}
		
		// Load statuses
		$query = $db->getQuery(true);
		$query->select($db->qn('name'))
			->from($db->qn('#__rsticketspro_statuses'))
			->where($db->qn('id') . ' IN
('.implode(',', $filtered_ids).')');
		
		if ($results = $db->setQuery($query)->loadColumn())
		{
			foreach ($results as $k => $result)
			{
				$results[$k] = JText::_($result);
			}
		}
		
		return $results;
	}
}views/predefinedsearches/index.html000064400000000054151163476010013524
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/predefinedsearches/tmpl/default.php000064400000007360151163476010014647
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'ordering';
if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=predefinedsearches.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=predefinedsearches');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_SEARCH_NAME', 'name', $listDirn, $listOrder);
?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JText::_('RST_DEFAULT_SEARCH_SHORT'); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
				<th width="1%" class="nowrap center"><?php
echo JHtml::_('searchtools.sort', '',
'ordering', $listDirn, $listOrder, null, 'asc',
'JGRID_HEADING_ORDERING', 'icon-menu-2');
?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
		<?php
		foreach ($this->items as $i => $item)
		{
			?>
			<tr data-draggable-group="1">
				<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
				<td>
					<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=predefinedsearch.edit&id='.(int)
$item->id); ?>"><?php echo
$this->escape($item->name); ?></a>
				</td>
				<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->default, $i,
'predefinedsearches.', false); ?></td>
				<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'predefinedsearches.'); ?></td>
				<td class="order center">
					<?php
					$disableClassName = '';
					$disabledLabel	  = '';

					if (!$saveOrder)
					{
						$disabledLabel    = JText::_('JORDERINGDISABLED');
						$disableClassName = 'inactive';
					}
					?>
					<span class="sortable-handler <?php echo $disableClassName;
?>">
						<i class="icon-menu"></i>
					</span>
					<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
				</td>
				<td width="1%"><?php echo
$this->escape($item->id); ?></td>
			</tr>
			<?php
		}
		?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/predefinedsearches/tmpl/index.html000064400000000054151163476010014500
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/predefinedsearches/view.html.php000064400000002602151163476010014156
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewPredefinedsearches extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('tickets');
		
		JToolbarHelper::addNew('predefinedsearch.add');
		JToolbarHelper::editList('predefinedsearch.edit');
		JToolbarHelper::divider();
		JToolbarHelper::publish('predefinedsearches.publish',
'JTOOLBAR_PUBLISH', true);
		JToolbarHelper::unpublish('predefinedsearches.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		JToolbarHelper::divider();
		JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'predefinedsearches.delete');
		JToolbarHelper::cancel('predefinedsearches.cancel');
	}
}views/priorities/index.html000064400000000054151163476010012072
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/priorities/tmpl/default.php000064400000007663151163476010013223
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JFactory::getApplication()->enqueueMessage(JText::_('RST_PRIORITY_TRANSLATE'));

$canEdit  	= JFactory::getUser()->authorise('priority.edit',
'com_rsticketspro');
$canChange  =
JFactory::getUser()->authorise('priority.edit.state',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'ordering' && $canChange;

if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=priorities.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=priorities');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_PRIORITY', 'name', $listDirn, $listOrder);
?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr data-draggable-group="1">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td class="order center">
						<?php
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder)
						{
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive';
						}
						?>
						<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
					</td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=priority.edit&id='.(int)
$item->id), $this->escape($item->name));
						}
						else
						{
							echo $this->escape($item->name);
						}
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'priorities.', $canChange); ?></td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>

	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/priorities/tmpl/index.html000064400000000054151163476010013046
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/priorities/view.html.php000064400000003060151163476010012523
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewPriorities extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('priorities');

		$user = JFactory::getUser();

		if ($user->authorise('priority.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('priority.add');
		}
		if ($user->authorise('priority.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('priority.edit');
		}
		if ($user->authorise('priority.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('priorities.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('priorities.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('priority.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'priorities.delete');
		}
	}
}views/priority/index.html000064400000000054151163476010011562
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/priority/tmpl/edit.php000064400000001664151163476010012207
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=priority&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>

	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/priority/tmpl/index.html000064400000000054151163476010012536
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/priority/view.html.php000064400000002012151163476010012207
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewPriority extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('priorities');
		
		JToolbarHelper::apply('priority.apply');
		JToolbarHelper::save('priority.save');
		JToolbarHelper::save2new('priority.save2new');
		JToolbarHelper::save2copy('priority.save2copy');
		JToolbarHelper::cancel('priority.cancel');
	}
}views/reports/index.html000064400000000054151163476010011377
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/reports/tmpl/default.php000064400000004512151163476010012516
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('jquery.framework', true);
JFactory::getDocument()->addScript('https://www.gstatic.com/charts/loader.js');
JFactory::getDocument()->addScriptDeclaration('
    google.charts.load(\'current\',
{\'packages\':[\'corechart\']});
    
    google.charts.setOnLoadCallback(RSTicketsReports.selectReport);
    
    RSTicketsReports.nrDepartments =
'.$this->count_departments.';
    RSTicketsReports.nrStaff = '.$this->count_staff.';
    
    jQuery(document).ready(function(){
        RSTicketsReports.checkReport(jQuery(\'#report\').val());
    });
');
JHtml::_('script',
'plg_rsticketsproreports/reports.js', array('relative'
=> true, 'version' => 'auto'));
JHtml::_('stylesheet',
'plg_rsticketsproreports/reports.css', array('relative'
=> true, 'version' => 'auto'));
?>
<div id="rst_reports_container" class="<?php echo
RsticketsproAdapterGrid::row(); ?>">
	<div class="<?php echo RsticketsproAdapterGrid::column(3);
?>">
		<form method="post" action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=reports');
?>" id="adminForm" name="adminForm">
			<?php
			$this->plain->addTitle(JText::_('RST_SELECT_REPORT'),
'select_report');
			$this->plain->addContent($this->loadTemplate('select_report'));

			foreach ($this->options as $layout => $title)
			{
				// add the tab title
				$this->plain->addTitle($title, $layout);
			
				$content = $this->loadTemplate($layout);

				// add the tab content
				$this->plain->addContent($content);
			}
			// render tabs
			$this->plain->render();
			?>
		</form>
		
		<div style="text-align: center;">
			<p><button type="button"
onclick="rst_refresh_report();" class="button btn
btn-primary"><?php echo
JText::_('RST_REPORTS_REFRESH_GRAPH');
?></button></p>
		</div>
	</div>
	
	<div class="<?php echo RsticketsproAdapterGrid::column(9);
?>">
		<div>
			<?php echo JHtml::_('image',
'com_rsticketspro/loading.gif', JText::_('Loading'),
array('id' => 'rst_loading'), true); ?>
		</div>
		<div id="rst_report">
			<?php echo $this->loadTemplate('no_report'); ?>
		</div>
		<div class="clearfix"></div>
	</div>
</div>views/reports/tmpl/default_customer.php000064400000000406151163476010014435
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

echo
$this->form->renderFieldset('customer');views/reports/tmpl/default_department.php000064400000001333151163476010014737
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access'); ?>
<?php if($departments =
$this->form->getFieldset('departments')) { ?>
<table class="table table-striped table-condensed"
id="rst_reports_department">
    <?php foreach ($departments as $field) { ?>
		<?php if (strtolower($field->type) == 'checkbox') {
?>
            <tr>
			    <td class="key"><?php echo $field->input;
?><?php echo $field->label ?></td>
        <?php } else { ?>
                <td><?php echo $field->input; ?></td>
            </tr>
        <?php } ?>
	<?php } ?>
</table>
<?php
}views/reports/tmpl/default_no_report.php000064400000000424151163476010014603
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access'); ?>
<h2><?php echo JText::_('RST_NO_REPORT_SELECTED');
?></h2>views/reports/tmpl/default_priority.php000064400000001043151163476010014453
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access'); ?>
<?php if($priority =
$this->form->getFieldset('priority')) { ?>
<table class="table table-striped table-condensed"
id="rst_reports_priority">
	<?php foreach ($priority as $field) { ?>
		<tr>
			<td class="key"><?php echo $field->label
?></td>
			<td><?php echo $field->input; ?></td>
		</tr>
	<?php } ?>
</table>
<?php
}views/reports/tmpl/default_select_report.php000064400000001235151163476010015447
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2021 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

if ($reports = $this->form->getFieldset('reports'))
{
	foreach ($reports as $field)
	{
		echo $field->input;
	}
}

if ($views = $this->form->getFieldset('views'))
{
	foreach($views as $field)
	{
		echo $field->input;
	}
}
?>
<p><button type="button" id="rst_cron_view"
class="btn btn-primary"
onclick="rst_select_report();"><?php echo
JText::_('RST_VIEW_REPORT');
?></button></p>views/reports/tmpl/default_staff.php000064400000001377151163476010013707
0ustar00<?php
/**
 * @version 2.0.0
 * @package RSTickets! Pro 2.0.0
 * @copyright (C) 2010 www.rsjoomla.com
 * @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
 */

defined('_JEXEC') or die('Restricted access'); ?>
<?php if($staff = $this->form->getFieldset('staff')) {
?>
    <table class="table table-striped table-condensed"
id="rst_reports_staff">
        <?php foreach ($staff as $field) { ?>
            <?php if (strtolower($field->type) ==
'checkbox') { ?>
                <tr>
                <td class="key"><?php echo
$field->input; ?><?php echo $field->label ?></td>
            <?php } else { ?>
                <td><?php echo $field->input; ?></td>
                </tr>
            <?php } ?>
        <?php } ?>
    </table>
<?php
}views/reports/tmpl/default_time_period.php000064400000001051151163476010015071
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access'); ?>
<?php if($time_periods =
$this->form->getFieldset('time_period')) { ?>
<table class="table table-striped table-condensed">
	<?php foreach ($time_periods as $field) { ?>
		<tr>
			<td style="width: 50px;" class="key"><?php
echo $field->label ?></td>
			<td><?php echo $field->input; ?></td>
		</tr>
	<?php } ?>
</table>
<?php }views/reports/tmpl/index.html000064400000000054151163476010012353
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/reports/tmpl/report_1.php000064400000003273151163476010012630
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

if (empty($this->data['units'])) { ?>
	<h2><?php echo JText::_('RST_NO_DATA');
?></h2>
<?php return; } ?>
<div align="center">
	<h2><?php echo JText::_('RST_REPORT_1');
?></h2>
</div>

<div id="rst_report_container">
	<table id="rst_reports_table">
		<thead>
			<tr>
				<th scope="col"></th>
				<?php foreach ($this->data['departments'] as
$department => $values) { ?><th scope="col"><?php
echo $department; ?></th><?php } ?>
			</tr>
		</thead>
		<tbody>
		<?php foreach ($this->data['units'] as $unit) { ?>
		<tr>
			<th scope="row"><?php echo $unit; ?></th>
				<?php foreach ($this->data['departments'] as
$department => $value) { ?>
				<?php if
(isset($this->data['departments'][$department][$unit])) {
?>
				<td><?php echo
$this->data['departments'][$department][$unit];
?></td>
				<?php } else { ?>
				<td>0</td>
				<?php } ?>
			<?php } ?>
		</tr>
		<?php } ?>
		</tbody>
	</table>
</div>

<table class="adminlist table table-striped">
	<thead>
		<tr>
			<th width="5"><?php echo
JText::_('RST_MIN'); ?></th>
			<th width="5"><?php echo
JText::_('RST_AVG'); ?></th>
			<th width="5"><?php echo
JText::_('RST_MAX'); ?></th>
			<th width="5"><?php echo
JText::_('RST_TOTAL'); ?></th>
		</tr>
	</thead>
	<tr class="row0">
		<td align="center"><?php echo $this->min;
?></td>
		<td align="center"><?php echo $this->avg;
?></td>
		<td align="center"><?php echo $this->max;
?></td>
		<td align="center"><?php echo $this->total;
?></td>
	</tr>
</table>views/reports/tmpl/report_2.php000064400000003066151163476010012631
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

if (empty($this->data['units'])) { ?>
	<h2><?php echo JText::_('RST_NO_DATA');
?></h2>
	<?php return; } ?>
<div align="center">
	<h2><?php echo JText::_('RST_REPORT_2');
?></h2>
</div>

<div id="rst_report_container">
	<table id="rst_reports_table">
		<thead>
			<tr>
				<th scope="col"></th>
				<?php foreach ($this->data['viewby'] as $viewby =>
$values) { ?><th scope="col"><?php echo $viewby;
?></th><?php } ?>
			</tr>
		</thead>
		<tbody>
		<?php foreach ($this->data['units'] as $unit) { ?>
		<tr>
			<th scope="row"><?php echo $unit; ?></th>
			<?php foreach ($this->data['viewby'] as $viewby =>
$value) { ?>
				<?php if (isset($this->data['viewby'][$viewby][$unit]))
{ ?>
				<td><?php echo
number_format($this->data['viewby'][$viewby][$unit], 2,
'.', ''); ?></td>
				<?php } else { ?>
				<td>0</td>
				<?php } ?>
			<?php } ?>
		</tr>
		<?php } ?>
		</tbody>
	</table>
</div>

<table class="adminlist table table-striped">
	<thead>
	<tr>
		<th width="5"><?php echo
JText::_('RST_MIN'); ?></th>
		<th width="5"><?php echo
JText::_('RST_AVG'); ?></th>
		<th width="5"><?php echo
JText::_('RST_MAX'); ?></th>
	</tr>
	</thead>
	<tr class="row0">
		<td align="center"><?php echo $this->min;
?></td>
		<td align="center"><?php echo $this->avg;
?></td>
		<td align="center"><?php echo $this->max;
?></td>
	</tr>
</table>views/reports/tmpl/report_3.php000064400000003250151163476010012625
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

if (empty($this->data['units'])) { ?>
	<h2><?php echo JText::_('RST_NO_DATA');
?></h2>
	<?php return; } ?>
<div align="center">
	<h2><?php echo JText::_('RST_REPORT_3');
?></h2>
</div>

<div id="rst_report_container">
	<table id="rst_reports_table">
		<thead>
			<tr>
				<th scope="col"></th>
				<?php foreach ($this->data['viewby'] as $viewby =>
$values) { ?><th scope="col"><?php echo $viewby;
?></th><?php } ?>
			</tr>
		</thead>
		<tbody>
		<?php foreach ($this->data['units'] as $unit) { ?>
		<tr>
			<th scope="row"><?php echo $unit; ?></th>
			<?php foreach ($this->data['viewby'] as $viewby =>
$value) { ?>
				<?php if (isset($this->data['viewby'][$viewby][$unit]))
{ ?>
				<td><?php echo
number_format($this->data['viewby'][$viewby][$unit], 2,
'.', ''); ?></td>
				<?php } else { ?>
				<td>0</td>
				<?php } ?>
			<?php } ?>
		</tr>
		<?php } ?>
		</tbody>
	</table>
</div>

<table class="adminlist table table-striped">
	<thead>
	<tr>
		<th width="5"><?php echo
JText::_('RST_MIN'); ?></th>
		<th width="5"><?php echo
JText::_('RST_AVG'); ?></th>
		<th width="5"><?php echo
JText::_('RST_MAX'); ?></th>
		<th width="5"><?php echo
JText::_('RST_TOTAL'); ?></th>
	</tr>
	</thead>
	<tr class="row0">
		<td align="center"><?php echo $this->min;
?></td>
		<td align="center"><?php echo $this->avg;
?></td>
		<td align="center"><?php echo $this->max;
?></td>
		<td align="center"><?php echo $this->total;
?></td>
	</tr>
</table>views/reports/tmpl/report_4.php000064400000003250151163476010012626
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

if (empty($this->data['units'])) { ?>
	<h2><?php echo JText::_('RST_NO_DATA');
?></h2>
	<?php return; } ?>
<div align="center">
	<h2><?php echo JText::_('RST_REPORT_4');
?></h2>
</div>

<div id="rst_report_container">
	<table id="rst_reports_table">
		<thead>
			<tr>
				<th scope="col"></th>
				<?php foreach ($this->data['viewby'] as $viewby =>
$values) { ?><th scope="col"><?php echo $viewby;
?></th><?php } ?>
			</tr>
		</thead>
		<tbody>
		<?php foreach ($this->data['units'] as $unit) { ?>
		<tr>
			<th scope="row"><?php echo $unit; ?></th>
			<?php foreach ($this->data['viewby'] as $viewby =>
$value) { ?>
				<?php if (isset($this->data['viewby'][$viewby][$unit]))
{ ?>
				<td><?php echo
number_format($this->data['viewby'][$viewby][$unit], 2,
'.', ''); ?></td>
				<?php } else { ?>
				<td>0</td>
				<?php } ?>
			<?php } ?>
		</tr>
		<?php } ?>
		</tbody>
	</table>
</div>

<table class="adminlist table table-striped">
	<thead>
	<tr>
		<th width="5"><?php echo
JText::_('RST_MIN'); ?></th>
		<th width="5"><?php echo
JText::_('RST_AVG'); ?></th>
		<th width="5"><?php echo
JText::_('RST_MAX'); ?></th>
		<th width="5"><?php echo
JText::_('RST_TOTAL'); ?></th>
	</tr>
	</thead>
	<tr class="row0">
		<td align="center"><?php echo $this->min;
?></td>
		<td align="center"><?php echo $this->avg;
?></td>
		<td align="center"><?php echo $this->max;
?></td>
		<td align="center"><?php echo $this->total;
?></td>
	</tr>
</table>views/reports/tmpl/report_5.php000064400000003066151163476010012634
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

if (empty($this->data['units'])) { ?>
	<h2><?php echo JText::_('RST_NO_DATA');
?></h2>
	<?php return; } ?>
<div align="center">
	<h2><?php echo JText::_('RST_REPORT_5');
?></h2>
</div>

<div id="rst_report_container">
	<table id="rst_reports_table">
		<thead>
			<tr>
				<th scope="col"></th>
				<?php foreach ($this->data['viewby'] as $viewby =>
$values) { ?><th scope="col"><?php echo $viewby;
?></th><?php } ?>
			</tr>
		</thead>
		<tbody>
		<?php foreach ($this->data['units'] as $unit) { ?>
		<tr>
			<th scope="row"><?php echo $unit; ?></th>
			<?php foreach ($this->data['viewby'] as $viewby =>
$value) { ?>
				<?php if (isset($this->data['viewby'][$viewby][$unit]))
{ ?>
				<td><?php echo
number_format($this->data['viewby'][$viewby][$unit], 2,
'.', ''); ?></td>
				<?php } else { ?>
				<td>0</td>
				<?php } ?>
			<?php } ?>
		</tr>
		<?php } ?>
		</tbody>
	</table>
</div>

<table class="adminlist table table-striped">
	<thead>
	<tr>
		<th width="5"><?php echo
JText::_('RST_MIN'); ?></th>
		<th width="5"><?php echo
JText::_('RST_AVG'); ?></th>
		<th width="5"><?php echo
JText::_('RST_MAX'); ?></th>
	</tr>
	</thead>
	<tr class="row0">
		<td align="center"><?php echo $this->min;
?></td>
		<td align="center"><?php echo $this->avg;
?></td>
		<td align="center"><?php echo $this->max;
?></td>
	</tr>
</table>views/reports/tmpl/report_6.php000064400000003022151163476010012625
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

if (empty($this->data['units'])) { ?>
	<h2><?php echo JText::_('RST_NO_DATA');
?></h2>
	<?php return; } ?>
<div align="center">
	<h2><?php echo JText::_('RST_REPORT_6');
?></h2>
</div>

<div id="rst_report_container">
	<table id="rst_reports_table">
		<thead>
			<tr>
				<th scope="col"></th>
				<?php foreach ($this->data['staff'] as $staff =>
$values) { ?><th scope="col"><?php echo $staff;
?></th><?php } ?>
			</tr>
		</thead>
		<tbody>
		<?php foreach ($this->data['units'] as $unit) { ?>
		<tr>
			<th scope="row"><?php echo $unit; ?></th>
			<?php foreach ($this->data['staff'] as $staff =>
$value) { ?>
				<?php if (isset($this->data['staff'][$staff][$unit])) {
?>
				<td><?php echo
$this->data['staff'][$staff][$unit]; ?></td>
				<?php } else { ?>
				<td>0</td>
				<?php } ?>
			<?php } ?>
		</tr>
		<?php } ?>
		</tbody>
	</table>
</div>

<table class="adminlist table table-striped">
	<thead>
	<tr>
		<th width="5"><?php echo
JText::_('RST_MIN'); ?></th>
		<th width="5"><?php echo
JText::_('RST_AVG'); ?></th>
		<th width="5"><?php echo
JText::_('RST_MAX'); ?></th>
	</tr>
	</thead>
	<tr class="row0">
		<td align="center"><?php echo $this->min;
?></td>
		<td align="center"><?php echo $this->avg;
?></td>
		<td align="center"><?php echo $this->max;
?></td>
	</tr>
</table>views/reports/view.html.php000064400000001730151163476010012032
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewReports extends JViewLegacy
{
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();

		$this->plain	= $this->get('RSPlain');
		$this->options	= $this->get('Options');
        $this->form     = $this->get('Form');
		$this->count_departments	=
$this->get('countDepartments');
		$this->count_staff			= $this->get('countStaff');

		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('reports');
		
		JToolBar::getInstance('toolbar')->appendButton('Link',
'refresh', 'RST_BACK',
'index.php?option=com_rsticketspro');
	}
}views/reports/view.raw.php000064400000001034151163476010011654
0ustar00<?php
/**
* @version 2.0.0
* @package RSTickets! Pro 2.0.0
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

defined('_JEXEC') or die('Restricted access');


class RsticketsproViewReports extends JViewLegacy
{
	public function display($tpl = null) {
		$this->data		= $this->get('reportdata');
		$this->min		= $this->get('min');
		$this->avg		= $this->get('avg');
		$this->max		= $this->get('max');
		$this->total	= $this->get('total');
		
		parent::display($tpl);
	}
}views/rsticketspro/index.html000064400000000054151163476010012435
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/rsticketspro/tmpl/default.php000064400000011253151163476010013554
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('stylesheet',
'com_rsticketspro/admin/dashboard.css',
array('relative' => true, 'version' =>
'auto'));
?>
<form action="index.php" method="post"
name="adminForm" id="adminForm">
	<?php echo RsticketsproAdapterGrid::sidebar(); ?>
		<div id="dashboard-left">
			<?php
			$rows = array_chunk($this->buttons, 4);
			foreach ($rows as $buttons)
			{
				?>
				<div class="dashboard-container">
					<?php
					foreach ($buttons as $button)
					{
						if ($button['access'])
						{
							?>
							<div class="dashboard-info dashboard-button">
								<a <?php if (!empty($button['target'])) { ?>
target="<?php echo $this->escape($button['target']);
?>"<?php } ?> href="<?php echo
$button['link']; ?>"><i class="dashboard-icon
rsticketsproicon-<?php echo $button['icon'];
?>"></i><span
class="dashboard-title"><?php echo
$button['text']; ?></span>
								</a>
							</div>
							<?php
						}
					}
					?>
				</div>
				<?php
			}
			?>
			<h3><?php echo JText::_('RST_KNOWLEDGEBASE');
?></h3>
			<?php
			$rows = array_chunk($this->kbbuttons, 4);
			foreach ($rows as $buttons)
			{
				?>
				<div class="dashboard-container">
					<?php
					foreach ($buttons as $button)
					{
						if ($button['access'])
						{
							?>
							<div class="dashboard-info dashboard-button">
								<a <?php if (!empty($button['target'])) { ?>
target="<?php echo $this->escape($button['target']);
?>"<?php } ?> href="<?php echo
$button['link']; ?>"><i class="dashboard-icon
rsticketsproicon-<?php echo $button['icon'];
?>"></i><span
class="dashboard-title"><?php echo
$button['text']; ?></span>
								</a>
							</div>
							<?php
						}
					}
					?>
				</div>
				<?php
			}
			?>
		</div>
		<div id="dashboard-right" class="hidden-phone
hidden-tablet">
			<div class="dashboard-container">
				<div class="dashboard-info">
					<?php echo JHtml::_('image',
'com_rsticketspro/admin/rsticketspro.png', 'RSTickets!
Pro', array(), true); ?>
					<table class="dashboard-table">
						<tr>
							<td nowrap="nowrap"><strong><?php echo
JText::_('COM_RSTICKETSPRO_PRODUCT_VERSION') ?>:
</strong></td>
							<td nowrap="nowrap">RSTickets! Pro <?php echo
$this->version; ?></td>
						</tr>
						<tr>
							<td nowrap="nowrap"><strong><?php echo
JText::_('COM_RSTICKETSPRO_COPYRIGHT_NAME') ?>:
</strong></td>
							<td nowrap="nowrap">&copy; 2010 - <?php echo
gmdate('Y'); ?> <a
href="https://www.rsjoomla.com"
target="_blank">RSJoomla!</a></td>
						</tr>
						<tr>
							<td nowrap="nowrap"><strong><?php echo
JText::_('COM_RSTICKETSPRO_LICENSE_NAME') ?>:
</strong></td>
							<td nowrap="nowrap"><a
href="https://www.gnu.org/licenses/gpl.html"
target="_blank">GNU/GPL</a>
Commercial</a></td>
						</tr>
						<tr>
							<td nowrap="nowrap"><strong><?php echo
JText::_('COM_RSTICKETSPRO_UPDATE_CODE') ?>:
</strong></td>
							<?php if (strlen($this->code) == 20) { ?>
								<td nowrap="nowrap"
class="correct-code"><?php echo
$this->escape($this->code); ?></td>
							<?php } elseif ($this->code) { ?>
								<td nowrap="nowrap"
class="incorrect-code"><?php echo
$this->escape($this->code); ?>
									<br />
									<strong><a
href="https://www.rsjoomla.com/support/documentation/general-faq/where-do-i-find-my-license-code-.html"
target="_blank"><?php echo
JText::_('COM_RSTICKETSPRO_WHERE_DO_I_FIND_THIS');
?></a></strong>
								</td>
							<?php } else { ?>
								<td nowrap="nowrap"
class="missing-code"><a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=configuration');
?>"><?php echo
JText::_('COM_RSTICKETSPRO_PLEASE_ENTER_YOUR_CODE_IN_THE_CONFIGURATION');
?></a>
									<br />
									<strong><a
href="https://www.rsjoomla.com/support/documentation/general-faq/where-do-i-find-my-license-code-.html"
target="_blank"><?php echo
JText::_('COM_RSTICKETSPRO_WHERE_DO_I_FIND_THIS');
?></a></strong>
								</td>
							<?php } ?>
						</tr>
					</table>
				</div>
			</div>
			<p class="text-center center"><a
href="https://www.rsjoomla.com/joomla-components/joomla-security.html?utm_source=rsticketspro&amp;utm_medium=banner_approved&amp;utm_campaign=rsfirewall"
target="_blank"><?php echo JHtml::_('image',
'com_rsticketspro/admin/rsfirewall-approved.png',
'RSFirewall! Approved', array(), true);
?></a></p>
		</div>
	</div>
	
	<input type="hidden" name="option"
value="com_rsticketspro" />
	<input type="hidden" name="task" value=""
/>
</form>views/rsticketspro/tmpl/index.html000064400000000054151163476010013411
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/rsticketspro/view.html.php000064400000002010151163476010013060
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewRsticketspro extends JViewLegacy
{
	protected $buttons;
	// version info
	protected $code;
	protected $version;
	
	public function display($tpl = null)
	{
		$this->addToolbar();
		
		$this->buttons  	= $this->get('Buttons');
		$this->kbbuttons  	= $this->get('Kbbuttons');
		$this->code			= $this->get('code');
		$this->version		= (string) new RSTicketsProVersion();
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		if (JFactory::getUser()->authorise('core.admin',
'com_rsticketspro'))
		{
			JToolbarHelper::preferences('com_rsticketspro');
		}

		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('rsticketspro');
	}
}views/search/index.html000064400000000054151163476010011146
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/search/tmpl/default.php000064400000002056151163476010012266
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=tickets');
?>" method="post" name="adminForm"
id="adminForm" class="form-validate
form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	<button type="button"
onclick="Joomla.submitbutton('search.perform');"
class="button btn btn-primary"><?php echo
JText::_('RST_SEARCH'); ?></button>
	</div>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/search/tmpl/index.html000064400000000054151163476010012122
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/search/view.html.php000064400000001555151163476010011606
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewSearch extends JViewLegacy
{
	protected $form;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();

		$this->form	= $this->get('Form');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('tickets');
		
		JToolbarHelper::custom('search.perform', 'search',
'search', JText::_('RST_SEARCH'), false);
		JToolbarHelper::cancel('search.cancel');
	}
}views/signature/index.html000064400000000054151163476010011702
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/signature/tmpl/default.php000064400000001576151163476010013030
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>

<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=signature');
?>" method="post" name="adminForm"
id="adminForm" class="form-validate
form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>

	<?php echo JHtml::_('form.token'); ?>
	<input type="hidden" name="task" value=""
/>
</form>views/signature/tmpl/index.html000064400000000054151163476010012656
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/signature/view.html.php000064400000002146151163476010012337
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewSignature extends JViewLegacy
{
	protected $form;
	
	public function display($tpl = null)
	{
		// only staff members can call this
		if (!RSTicketsProHelper::isStaff())
		{
			throw new Exception(JText::_('RST_CANNOT_CHANGE_SIGNATURE'),
403);
		}
		if (!$this->get('isAssigned'))
		{
			throw new
Exception(JText::_('RST_CANNOT_CHANGE_SIGNATURE_MUST_BE_STAFF'),
403);
		}

		JFactory::getApplication()->input->set('hidemainmenu',
true);
		
		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('tickets');
		
		JToolbarHelper::apply('signature.apply');
		JToolbarHelper::cancel('signature.cancel');
	}
}views/staff/index.html000064400000000054151163476010011004
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/staff/tmpl/edit.php000064400000001662151163476010011427
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=staff&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/staff/tmpl/index.html000064400000000054151163476010011760
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/staff/view.html.php000064400000001727151163476010011445
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewStaff extends JViewLegacy
{
	protected $form;
	protected $item;
	protected $field;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('staffs');
		
		JToolbarHelper::apply('staff.apply');
		JToolbarHelper::save('staff.save');
		JToolbarHelper::save2new('staff.save2new');
		JToolbarHelper::cancel('staff.cancel');
	}
}views/staffs/index.html000064400000000054151163476010011167
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/staffs/tmpl/default.php000064400000006175151163476010012315
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

$canEdit  	= JFactory::getUser()->authorise('staff.edit',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=staffs');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
	?>
	<div class="alert alert-info">
		<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
		<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
	</div>
	<?php
	}
	else
	{
		?>
		<table class="table table-striped">
			<thead>
				<tr>
					<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'JGLOBAL_USERNAME', 'username', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_NAME', 'name', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'JGLOBAL_EMAIL', 'email', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_GROUP', 'group_name', $listDirn, $listOrder);
?></th>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_PRIORITY', 'priority_name', $listDirn,
$listOrder); ?></th>
					<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'u.id',
$listDirn, $listOrder); ?></th>
				</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $i => $item)
			{
			?>
				<tr>
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=staff.edit&id='.(int)
$item->id), $this->escape($item->username));
						}
						else
						{
							echo $this->escape($item->username);
						}
						?>
					</td>
					<td><?php echo $this->escape($item->name);
?></td>
					<td><?php echo $this->escape($item->email);
?></td>
					<td><?php echo $this->escape($item->group_name);
?></td>
					<td>
						<?php if ($item->priority_id) { ?>
							<?php echo $item->priority_name != '' ?
$this->escape(JText::_($item->priority_name)) :
JText::_('RST_NO_TITLE'); ?>
						<?php } else { ?>
							<?php echo JText::_('RST_ALL_PRIORITIES'); ?>
						<?php } ?>
					</td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/staffs/tmpl/index.html000064400000000054151163476010012143
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/staffs/view.html.php000064400000002445151163476010011626
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewStaffs extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');

		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('staffs');

		$user = JFactory::getUser();

		if ($user->authorise('staff.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('staff.add');
		}
		if ($user->authorise('staff.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('staff.edit');
		}
		if ($user->authorise('staff.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'staffs.delete');
		}
	}
}views/status/index.html000064400000000054151163476010011224
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/status/tmpl/edit.php000064400000001663151163476010011650
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=status&layout=edit&id='.(int)
$this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-horizontal">
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>
	
	<div>
		<?php echo JHtml::_('form.token'); ?>
		<input type="hidden" name="task"
value="" />
	</div>
</form>views/status/tmpl/index.html000064400000000054151163476010012200
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/status/view.html.php000064400000001774151163476010011667
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewStatus extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();
		
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('statuses');
		
		JToolbarHelper::apply('status.apply');
		JToolbarHelper::save('status.save');
		JToolbarHelper::save2new('status.save2new');
		JToolbarHelper::save2copy('status.save2copy');
		JToolbarHelper::cancel('status.cancel');
	}
}views/statuses/index.html000064400000000054151163476010011554
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/statuses/tmpl/default.php000064400000007666151163476010012710
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JFactory::getApplication()->enqueueMessage(JText::_('RST_STATUS_TRANSLATE'));

$canEdit  	= JFactory::getUser()->authorise('status.state',
'com_rsticketspro');
$canChange  =
JFactory::getUser()->authorise('status.edit.state',
'com_rsticketspro');
$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));
$saveOrder	= $listOrder == 'ordering' && $canChange;

if ($saveOrder)
{
	$saveOrderingUrl =
'index.php?option=com_rsticketspro&task=statuses.saveOrderAjax&tmpl=component';
	JHtml::_('sortablelist.sortable', 'articleList',
'adminForm', strtolower($listDirn), $saveOrderingUrl);
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=statuses');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped"
id="articleList">
			<thead>
			<tr>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th style="width:1%" class="nowrap
text-center"><?php echo JHtml::_('searchtools.sort',
'', 'ordering', $listDirn, $listOrder, null,
'asc', 'JGRID_HEADING_ORDERING',
'icon-menu-2'); ?>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_STATUS', 'name', $listDirn, $listOrder);
?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'JPUBLISHED',
'published', $listDirn, $listOrder); ?></th>
				<th width="1%"><?php echo
JHtml::_('searchtools.sort', 'ID', 'id',
$listDirn, $listOrder); ?></th>
			</tr>
			</thead>
			<tbody <?php if ($saveOrder) { ?>
class="js-draggable" data-url="<?php echo
$saveOrderingUrl; ?>" data-direction="<?php echo
strtolower($listDirn); ?>" data-nested="false"<?php }
?>>
			<?php
			foreach ($this->items as $i => $item)
			{
				?>
				<tr data-draggable-group="1">
					<td width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.id', $i, $item->id); ?></td>
					<td class="order center">
						<?php
						$disableClassName = '';
						$disabledLabel	  = '';

						if (!$saveOrder)
						{
							$disabledLabel    = JText::_('JORDERINGDISABLED');
							$disableClassName = 'inactive';
						}
						?>
						<span class="sortable-handler <?php echo
$disableClassName; ?>" title="<?php echo $disabledLabel;
?>">
							<i class="icon-menu"></i>
						</span>
						<input type="text" style="display:none"
name="order[]" size="5" value="<?php echo
$item->ordering; ?>" class="width-20 text-area-order"
/>
					</td>
					<td>
						<?php
						if ($canEdit)
						{
							echo JHtml::_('link',
JRoute::_('index.php?option=com_rsticketspro&task=status.edit&id='.(int)
$item->id), $this->escape($item->name));
						}
						else
						{
							echo $this->escape($item->name);
						}
						?>
					</td>
					<td width="1%" nowrap="nowrap"
align="center"><?php echo
JHtml::_('jgrid.published', $item->published, $i,
'statuses.', $canChange && $item->id > 3);
?></td>
					<td width="1%"><?php echo
$this->escape($item->id); ?></td>
				</tr>
				<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}
	?>
	
	<div>
		<?php echo JHtml::_( 'form.token' ); ?>
		<input type="hidden" name="boxchecked"
value="0" />
		<input type="hidden" name="task"
value="" />
	</div>
	</div>
</form>views/statuses/tmpl/index.html000064400000000054151163476010012530
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/statuses/view.html.php000064400000003032151163476010012204
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewStatuses extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;
	
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->items 		 = $this->get('Items');
		$this->pagination 	 = $this->get('Pagination');
		$this->state 		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('statuses');

		$user = JFactory::getUser();

		if ($user->authorise('status.create',
'com_rsticketspro'))
		{
			JToolbarHelper::addNew('status.add');
		}
		if ($user->authorise('status.edit',
'com_rsticketspro'))
		{
			JToolbarHelper::editList('status.edit');
		}
		if ($user->authorise('status.edit.state',
'com_rsticketspro'))
		{
			JToolbarHelper::publish('statuses.publish',
'JTOOLBAR_PUBLISH', true);
			JToolbarHelper::unpublish('statuses.unpublish',
'JTOOLBAR_UNPUBLISH', true);
		}
		if ($user->authorise('status.delete',
'com_rsticketspro'))
		{
			JToolbarHelper::deleteList('RST_CONFIRM_DELETE',
'statuses.delete');
		}
	}
}views/submit/index.html000064400000000054151163476010011204
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/submit/tmpl/default.php000064400000007130151163476010012322
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');

JText::script('RST_MAX_UPLOAD_FILES_REACHED');
JText::script('RST_TICKET_ATTACHMENTS');
JText::script('RST_TICKET_ATTACHMENTS_REQUIRED');

$script = '';
foreach ($this->departments as $department)
{
	$upload = $department->upload ? 'true' : 'false';
	$uploadRequired = $department->upload_ticket_required ?
'true' : 'false';
	$uploadMessage = json_encode($department->upload_message);
	$uploadMessageMaxFiles =
json_encode($department->upload_message_max_files);
	$uploadMessageMaxSize =
json_encode($department->upload_message_max_size);

	$script .= "RSTicketsPro.departments[{$department->id}] = {
	id: {$department->id},
	priority: {$department->priority_id},
	uploads: {
		allowed: {$upload},
        required: {$uploadRequired},
		message: {$uploadMessage},
        message_max_files: {$uploadMessageMaxFiles},
        message_max_size: $uploadMessageMaxSize,
		max: {$department->upload_files}
	}
};";
}
$script .= "window.addEventListener('DOMContentLoaded',
function() { RSTicketsPro.changeDepartment() });";

JFactory::getDocument()->addScriptDeclaration($script);

echo $this->globalMessage;
echo $this->submitMessage;
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=submit');
?>" method="post" name="adminForm"
id="adminForm" enctype="multipart/form-data"
class="form-horizontal">
<?php
// only staff members with enough permissions
// can select existing users from the database
if ($this->canChangeSubmitType)
{
	echo
$this->form->getField('submit_type')->renderField();
	echo
$this->form->getField('customer_id')->renderField(array('class'
=> 'rst_customer_id_container'));

	// alternative email
	if ($this->showAltEmail)
	{
		echo
$this->form->getField('alternative_email')->renderField(array('class'
=> 'rst_alt_email_container'));
	}
}
echo
$this->form->getField('email')->renderField(array('class'
=> 'rst_email_container'));
echo
$this->form->getField('name')->renderField(array('class'
=> 'rst_name_container'));

// alternative email
if ($this->showAltEmail)
{
	echo
$this->form->getField('alternative_email')->renderField(array('class'
=> 'rst_alt_email_container'));
}

// department
echo
$this->form->getField('department_id')->renderField(array('class'
=> 'rst_department_id_container'));

// append the custom fields after the department
foreach ($this->customFields as $customField)
{
	echo $customField;
}

// subject
echo
$this->form->getField('subject')->renderField(array('class'
=> 'rst_subject_container'));

// message
echo
$this->form->getField('message')->renderField(array('class'
=> 'rst_message_container'));

// priority
echo
$this->form->getField('priority_id')->renderField(array('class'
=> 'rst_priority_id_container'));

// prepend the upload message
echo '<div
id="rst_files_message_container"></div>';

// files
echo
$this->form->getField('files')->renderField(array('class'
=> 'rst_files_container'));
?>
	<div>
		<button type="button" class="btn btn-success"
onclick="Joomla.submitbutton('submit.save');"><?php
echo JText::_('RST_SUBMIT'); ?></button>
		<button type="button" class="btn btn-secondary"
onclick="Joomla.submitbutton('submit.cancel');"><?php
echo JText::_('JCANCEL'); ?></button>
	</div>

	<?php echo JHtml::_('form.token'); ?>
	<input type="hidden" name="task" value=""
/>
</form>views/submit/tmpl/index.html000064400000000054151163476010012160
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/submit/view.html.php000064400000003702151163476010011640
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewSubmit extends JViewLegacy
{
	public function display($tpl = null)
	{
		$this->checkPermissions();

		JFactory::getApplication()->input->set('hidemainmenu',
true);

		$this->addToolbar();

		$this->globalMessage 		=
JText::_(RSTicketsProHelper::getConfig('global_message'));
		$this->submitMessage 		=
JText::_(RSTicketsProHelper::getConfig('submit_message'));
		$this->form  				= $this->get('Form');
		$this->show_footer         	=
RSTicketsProHelper::getConfig('rsticketspro_link');
		$this->departments         	= $this->get('Departments');
		$this->customFields        	=
$this->get('CustomFields');
		$this->user                	= JFactory::getUser();
		$this->permissions         	= $this->get('Permissions');
		$this->isStaff             	= RSTicketsProHelper::isStaff();
		$this->canChangeSubmitType 	= $this->isStaff &&
$this->permissions &&
($this->permissions->add_ticket_customers ||
$this->permissions->add_ticket_staff);
		$this->showAltEmail        	=
RSTicketsProHelper::getConfig('show_alternative_email');

		parent::display($tpl);
	}

	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('tickets');

		JToolbarHelper::addNew('submit.save',
JText::_('RST_SUBMIT'));
		JToolbarHelper::cancel('submit.cancel');
	}

	protected function checkPermissions()
	{
		$permissions = RSTicketsProHelper::getCurrentPermissions();
		if (!$permissions || (!$permissions->add_ticket &&
!$permissions->add_ticket_staff &&
!$permissions->add_ticket_customers))
		{
			throw new
Exception(JText::_('RST_STAFF_CANNOT_SUBMIT_TICKET'), 403);
		}
	}
}views/ticket/index.html000064400000000054151163476010011164
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/ticket/tmpl/default.php000064400000005375151163476010012313
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
JText::script('COM_RSTICKETSPRO_TIME_BUTTON_CONFIRM_START');

if ($this->globalMessage)
{
	?>
	<div class="<?php echo RsticketsproAdapterGrid::row();
?>" id="ticket-global-message">
		<?php echo $this->globalMessage; ?>
	</div>
	<?php
}
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=ticket');
?>" method="post" name="adminForm"
id="adminForm" enctype="multipart/form-data"
autocomplete="off">
<?php
if ($this->ticketView == 'plain' || $this->isPrint)
{
	?>
	<div class="<?php echo RsticketsproAdapterGrid::row();
?>">
		<div class="<?php echo RsticketsproAdapterGrid::column(7);
?>" id="ticket-left-column">
			<?php
			$this->plain->addTitle(JText::_('RST_MESSAGES'),
'messages');
			$this->plain->addContent($this->loadTemplate('messages'));
			$this->plain->render();

			$this->plain->remove(0);
			?>
		</div>
		<div class="<?php echo RsticketsproAdapterGrid::column(5);
?>" id="ticket-right-column">
			<?php
			foreach ($this->ticketSections as $layout => $title)
			{
				if ($layout == 'messages' || ($layout ==
'custom_fields' && empty($this->ticket->fields)))
				{
					continue;
				}
				
				// add the title
				$this->plain->addTitle($title, $layout);
				
				$content = $this->loadTemplate($layout);
				
				// add the content
				$this->plain->addContent($content);
			}
			
			// allow plugins to inject content here
			RSTicketsProHelper::trigger('onAfterTicketInformation',
array($this->ticket, $this->plain));
			
			// render the plain view
			$this->plain->render();
			?>
		</div>
	</div>
	<?php
}
else
{
	foreach ($this->ticketSections as $layout => $title)
	{
		if (empty($this->ticket->fields) && $layout ==
'custom_fields')
		{
			continue;
		}

		$this->handler->addTitle($title, $layout);
		$this->handler->addContent($this->loadTemplate($layout));
	}

	RSTicketsProHelper::trigger('onAfterTicketInformation',
array($this->ticket, $this->handler));

	$this->handler->render();
}

	echo JHtml::_('form.token');
?>
	<input type="hidden" name="id" value="<?php
echo $this->ticket->id; ?>" />
	<input type="hidden" name="cid"
value="<?php echo $this->ticket->id; ?>" />
	<input type="hidden" name="task" value=""
/>
	<input type="hidden" name="option"
value="com_rsticketspro" />
</form>views/ticket/tmpl/default_custom_fields.php000064400000001245151163476010015223
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

foreach ($this->ticket->fields as $field)
{
	echo RSTicketsProHelper::showCustomField($field, array(),
!empty($this->permissions->update_ticket_custom_fields));
}

if (!empty($this->permissions->update_ticket_custom_fields))
{
	?>
	<p><button type="button"
onclick="Joomla.submitbutton('ticket.updatefields')"
class="btn btn-primary"><?php echo
JText::_('RST_UPDATE'); ?></button></p>
	<?php
}views/ticket/tmpl/default_history.php000064400000002561151163476010014066
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

if ($this->otherTickets)
{
	?>
	<table class="table table-striped">
		<thead>
			<tr>
				<th><?php echo JText::_('RST_TICKET_CODE'); ?>
<?php echo JText::_('RST_TICKET_SUBJECT'); ?></th>
				<th><?php echo JText::_('RST_TICKET_STATUS');
?></th>
				<th><?php echo JText::_('RST_TICKET_REPLIES');
?></th>
				<th><?php echo JText::_('RST_TICKET_DATE');
?></th>
			</tr>
		</thead>
		<tbody>
		<?php
		foreach ($this->otherTickets as $ticket)
		{
			?>
			<tr>
				<td><a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='
. $ticket->id); ?>" title="<?php echo
$this->escape($ticket->subject); ?>">[<?php echo
$this->escape($ticket->code); ?>] <?php echo
$this->escape($ticket->subject); ?></a></td>
				<td><?php echo JText::_($ticket->status_name);
?></td>
				<td><?php echo
JText::sprintf('RST_TICKET_REPLIES_NUM', $ticket->replies);
?></td>
				<td><?php echo JHtml::_('date', $ticket->date,
$this->dateFormat); ?></td>
			</tr>
			<?php
		}
		?>
		</tbody>
	</table>
<?php
}
else
{
	?>
	<p><?php echo JText::_('RST_NO_TICKET_HISTORY');
?></p>
	<?php
}views/ticket/tmpl/default_info.php000064400000002516151163476010013320
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

echo '<div class="form-horizontal">';

// subject
echo $this->form->getField('subject')->renderField();
	
// department
echo
$this->form->getField('department_id')->renderField();
echo '<input type="hidden"
name="hidden_department_id" value="' .
$this->escape(JText::_($this->ticket->department->name)) .
'">';

// date
echo $this->form->getField('date')->renderField();

// status
echo $this->form->getField('status_id')->renderField();

// code
echo $this->form->getField('code')->renderField();

// priority
echo
$this->form->getField('priority_id')->renderField();

// staff
echo $this->form->getField('staff_id')->renderField();

// customer
echo
$this->form->getField('customer_id')->renderField();

// alternative email
if ($this->showAltEmail)
{
	echo
$this->form->getField('alternative_email')->renderField();
}

if (!empty($this->permissions->update_ticket))
{
	?>
	<button type="button"
onclick="Joomla.submitbutton('ticket.updateinfo')"
class="btn btn-primary"><?php echo
JText::_('RST_UPDATE'); ?></button>
	<?php
}

echo
'</div>';views/ticket/tmpl/default_messages.php000064400000013751151163476010014177
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

if (!$this->isPrint)
{
	echo $this->loadTemplate('reply');
}
?>
<h3 class="rst_heading"><?php echo
JText::_('RST_CONVERSATION'); ?></h3>
<div class="row-fluid com-rsticketspro-has-top-margin"
id="ticket-buttons">
<?php
if (!$this->isPrint)
{
	if ($this->canViewHistory)
	{
		echo JHtml::_('bootstrap.renderModal',
'rsticketsproHistoryModal', array(
			'title' => JText::_('RST_TICKET_VIEW_HISTORY'),
			'url' 	=>
JRoute::_('index.php?option=com_rsticketspro&view=history&id='.$this->ticket->id.'&tmpl=component',
false),
			'height' => 400,
			'backdrop' => 'static'));
		?>
		<a href="#" class="btn btn-secondary"
onclick="jQuery('#rsticketsproHistoryModal').modal('show');"><i
class="icon-calendar"></i> <?php echo
JText::_('RST_TICKET_VIEW_HISTORY'); ?></a>
		<?php
	}
	if ($this->canViewNotes)
	{
		echo JHtml::_('bootstrap.renderModal',
'rsticketsproNotesModal', array(
			'title'    => JText::_('RST_TICKET_VIEW_NOTES'),
			'url' 	   =>
JRoute::_('index.php?option=com_rsticketspro&view=notes&ticket_id='.$this->ticket->id.'&tmpl=component',
false),
			'height'   => 400,
			'backdrop' => 'static'));
		?>
		<a href="#" class="btn btn-secondary"
onclick="jQuery('#rsticketsproNotesModal').modal('show');"><i
class="icon-file"></i> <?php echo
$this->ticket->notes ?
JText::sprintf('RST_TICKET_VIEW_NOTES_NO',
$this->ticket->notes) : JText::_('RST_TICKET_VIEW_NOTES');
?></a>
		<?php
	}
	?>
	<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='.$this->ticket->id.'&tmpl=component&print=1');
?>" class="btn btn-secondary"
onclick="window.open(this.href,'printWindow','status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=400,height=600,directories=no,location=no');
return false;"><i class="icon-print"></i>
<?php echo JText::_('RST_TICKET_PRINT'); ?></a>
	<?php
	if ($this->ticket->status_id == RST_STATUS_CLOSED &&
$this->canOpenTicket)
	{
		?>
		<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.reopen&id='.$this->ticket->id);
?>" class="btn btn-success"><i
class="icon-ok"></i> <?php echo
JText::_('RST_TICKET_OPEN'); ?></a>
		<?php
	}
	elseif ($this->ticket->status_id != RST_STATUS_CLOSED &&
$this->canCloseTicket)
	{
		?>
		<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.close&id='.$this->ticket->id);
?>" class="btn btn-danger"><i
class="icon-lock"></i> <?php echo
JText::_('RST_TICKET_CLOSE'); ?></a>
		<?php
	}
}
else
{
	?>
	<a href="javascript:void(0)"
onclick="window.print();" class="btn
btn-primary"><i class="icon-print"></i>
<?php echo JText::_('RST_TICKET_PRINT'); ?></a>
	<?php
}
?>
</div>
<?php
foreach ($this->ticketMessages as $message)
{
	$user = $message->user_id != '-1' ?
JFactory::getUser($message->user_id) : null;
	$submitter = $message->submitted_by_staff != '0' ?
JFactory::getUser($message->submitted_by_staff) : null;
	?>
	<div class="media com-rsticketspro-message<?php echo
is_null($user) ? ' alert alert-info' :
(RSTicketsProHelper::isStaff($message->user_id) ? '
com-rsticketspro-msg-staff': '
com-rsticketspro-msg-customer'); ?>">
		<?php
		if (!is_null($user))
		{
			?>
			<span class="pull-left">
				<img class="img-polaroid media-object
com-rsticketspro-avatar" src="<?php echo
$this->getAvatar($message->user_id); ?>" />
			</span>
			<?php
		}
		?>
		<div class="media-body">
			<?php
			if (!is_null($user))
			{
				if ($this->showEmailLink)
				{
					$text = JHtml::_('link', 'mailto:' .
$this->escape($user->email),
$this->escape($user->{$this->userField}));
				}
				else
				{
					$text = $this->escape($user->{$this->userField});
				}

				?>
				<h4 class="media-heading"><?php echo $text;
?><?php echo $submitter ? ' ' .
JText::sprintf('RST_TICKET_SUBMITTED_BY', $submitter->name) :
''; ?></h4>
				<?php
			}
			?>
			<p><small><i class="icon-clock"></i>
<?php echo $this->showDate($message->date);
?></small></p>
			<blockquote class="com-rsticketspro-has-overflow">
			<?php echo RSTicketsProHelper::showMessage($message); ?>
			</blockquote>
			<?php
			if (!empty($message->files))
			{
				?>
				<ul>
				<?php
				foreach ($message->files as $file)
				{
					?>
					<li><i class="icon-file"></i> <a
href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.downloadfile&id='.$file->id);
?>"><?php echo
JText::sprintf('RST_TICKET_FILE_DOWNLOADS_SMALL',
$this->escape($file->filename), $file->downloads);
?></a></li>
					<?php
				}
				?>
				</ul>
				<?php
			}
			if (!$this->isPrint && !is_null($user))
			{
				?>
				<div>
					<?php
					if ($this->canEditMessage($message))
					{
						echo JHtml::_('bootstrap.renderModal',
'rsticketsproMessageModal'.$message->id, array(
							'title'    =>
JText::_('RST_TICKET_EDIT_MESSAGE'),
							'url' 	   =>
JRoute::_('index.php?option=com_rsticketspro&task=ticketmessage.edit&id='.$message->id.'&tmpl=component',
false),
							'height'   => 400,
							'backdrop' => 'static'));
						?>
						<a class="btn btn-secondary"
onclick="jQuery('#rsticketsproMessageModal<?php echo
$message->id; ?>').modal('show');"
href="#"><i class="icon-edit"></i>
<?php echo JText::_('RST_TICKET_EDIT_MESSAGE');
?></a>
						<?php
					}
					if ($this->canDeleteMessage($message))
					{
						?>
						<a class="btn btn-danger" onclick="return
confirm(Joomla.JText._('RST_DELETE_TICKET_MESSAGE_CONFIRM'));"
href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticketmessages.delete&cid='.$message->id
. '&ticket_id=' . $message->ticket_id . '&'
. JSession::getFormToken() . '=1'); ?>"><i
class="icon-delete"></i> <?php echo
JText::_('RST_TICKET_DELETE_MESSAGE'); ?></a>
						<?php
					}
					?>
				</div>
				<?php
			}
			?>
		</div>
	</div>
<?php
}
views/ticket/tmpl/default_reply.php000064400000006446151163476010013526
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JText::script('RST_TICKET_FEEDBACK_SENT');

$showReply = $this->form->getValue('message');

if ($this->ticket->status_id == RST_STATUS_CLOSED)
{
	?>
	<p><strong><?php echo
JText::_('RST_TICKET_REPLIES_CLOSED');
?></strong></p>
	<?php
	if ($this->allowVoting && (($this->isStaff &&
$this->ticket->feedback) || !$this->isStaff))
	{
		$ratyParams = array(
			'path' => str_replace('star-on.png',
'', JHtml::_('image',
'com_rsticketspro/raty/star-on.png', '', array(), true,
1)),
			'score' => $this->ticket->feedback ?
$this->ticket->feedback : null,
			'readOnly' => $this->isStaff ||
$this->ticket->feedback,
			'hints' => array(
				JText::_('RST_FEEDBACK_1'),
				JText::_('RST_FEEDBACK_2'),
				JText::_('RST_FEEDBACK_3'),
				JText::_('RST_FEEDBACK_4'),
				JText::_('RST_FEEDBACK_5')
			)
		);

		$script = 'RSTicketsPro.initRaty(' . json_encode($ratyParams) .
')';

		JFactory::getDocument()->addScriptDeclaration($script);
		?>
		<p id="com-rsticketspro-rated-message"><?php echo
JText::_($this->ticket->feedback ? ($this->isStaff ?
'RST_TICKET_FEEDBACK_SENT_STAFF' :
'RST_TICKET_FEEDBACK_SENT') : 'RST_TICKET_FEEDBACK');
?></p>
		<div id="star"></div>
		<?php
	}
}
else
{
	if ($this->canReply)
	{
		if (!$showReply)
		{
			?>
			<p><button type="button" class="btn btn-primary
btn-large" id="com-rsticketspro-reply-button"
onclick="RSTicketsPro.showReply(this);"><?php echo
JText::_('RST_TICKET_REPLY'); ?></button></p>
			<?php
		}
		?>
		<div id="com-rsticketspro-reply-box" <?php if
(!$showReply) { ?>class="hidden"<?php } ?>>
			<h3 class="rst_heading"><?php echo
JText::_('RST_REPLY_TO_TICKET'); ?></h3>
			<?php
			if ($this->isStaff &&
RSTicketsProHelper::getConfig('show_reply_as_customer'))
			{
				echo
$this->form->getField('reply_as_customer')->renderField();
			}

			if ($this->isStaff && $this->showSearch)
			{
				echo
$this->form->getField('search')->renderField();
			}

			echo
$this->form->getField('message')->renderField();

			if ($this->isStaff && $this->showSignature)
			{
				echo
$this->form->getField('use_signature')->renderField();

				echo '<p><small><a
href="'.JRoute::_('index.php?option=com_rsticketspro&view=signature').'">'.JText::_('RST_EDIT_SIGNATURE').'</a></small></p>';
			}

			if ($this->canUpload)
			{
				$script = "RSTicketsPro.getDepartment = function() { return { id:
{$this->ticket->department_id}, uploads: { max:
{$this->department->upload_files} } }; }";
				JFactory::getDocument()->addScriptDeclaration($script);

				// prepend the upload message
				echo '<div id="rst_files_message_container">'
. $this->department->upload_message . ' ' .
$this->department->upload_message_max_files . ' ' .
$this->department->upload_message_max_size .
'</div>';
				echo
$this->form->getField('files')->renderField(array('class'
=> 'rst_files_container'));
			}
			?>
			<p><button type="button"
onclick="Joomla.submitbutton('ticket.reply')"
class="btn btn-primary"><?php echo
JText::_('RST_TICKET_SUBMIT'); ?></button></p>

			<hr />
		</div>
	<?php
	}
}
views/ticket/tmpl/default_submitter.php000064400000002477151163476010014411
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access'); ?>
<div>
	<p><span title="<?php echo
RSTicketsProHelper::tooltipText(JText::_('RST_TICKET_USER_AGENT'));
?>" class="<?php echo
RSTicketsProHelper::tooltipClass();?>"><i
class="icon-cogs icon-rscogs"></i> <?php echo
$this->escape($this->ticket->agent); ?></span></p>
	<p><span title="<?php echo
RSTicketsProHelper::tooltipText(JText::_('RST_TICKET_REFERER'));
?>" class="<?php echo
RSTicketsProHelper::tooltipClass();?>"><i
class="icon-refresh icon-rsrefresh"></i> <?php echo
$this->escape($this->ticket->referer);
?></span></p>
	<p><span title="<?php echo
RSTicketsProHelper::tooltipText(JText::_('RST_TICKET_IP'));
?>" class="<?php echo
RSTicketsProHelper::tooltipClass();?>"><i
class="icon-broadcast icon-rsbroadcast"></i> <?php
echo $this->escape($this->ticket->ip);
?></span></p>
	<p><span title="<?php echo
RSTicketsProHelper::tooltipText(JText::_('RST_TICKET_LOGGED'));
?>" class="<?php echo
RSTicketsProHelper::tooltipClass();?>"><i
class="icon-user icon-rsuser"></i> <?php echo
$this->ticket->logged ? JText::_('JYES') :
JText::_('JNO'); ?></span></p>
</div>views/ticket/tmpl/default_time.php000064400000011266151163476010013325
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JText::script('COM_RSTICKETSPRO_ARE_YOU_SURE_YOU_WANT_TO_CLEAR_TIME_TRACKING');
JText::script('COM_RSTICKETSPRO_ARE_YOU_SURE_YOU_WANT_TO_DELETE_TIME_TRACKING_RECORD');

if ($this->timeSpentTracking)
{
	if ($this->useTimeCounter)
	{
		?>
		<div class="<?php echo RsticketsproAdapterGrid::row();
?>" id="rst-timer">
			<div class="<?php echo RsticketsproAdapterGrid::column(12);
?>">
				<?php
				if ($this->ticketTimeState)
				{
					?>
					<div id="timer">
						<div class="clock-wrapper">
							<span class="hours">00</span>
							<span class="dots">:</span>
							<span class="minutes">00</span>
							<span class="dots">:</span>
							<span class="seconds">00</span>
						</div>
					</div>
					<?php
				}
				?>
			</div>
		</div>
		<?php
	}

	if ($this->useTimeCounter || (!empty($this->ticketIntervals)
&& $this->canDeleteTimeHistory))
	{
		?>
		<p>
		<?php
		if ($this->useTimeCounter)
		{
			?>
			<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.toggleTime&id='.$this->ticket->id.'&tstate='.($this->ticketTimeState
== 1 ? 0 : 1)); ?>"<?php echo ($this->ticketTimeState == 0 ?
' onclick="return
confirm(Joomla.JText._(\'COM_RSTICKETSPRO_TIME_BUTTON_CONFIRM_START\'));"'
: '');?> class="btn btn-<?php echo
($this->ticketTimeState ? 'danger' :
'success');?>"><?php echo
JText::_('COM_RSTICKETSPRO_TIME_BUTTON'.($this->ticketTimeState
? '_STOP' : '_START'));?></a>
			<?php
		}

		if (!empty($this->ticketIntervals) &&
$this->canDeleteTimeHistory)
		{
			?>
			<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.clearTimeTracking&id='.$this->ticket->id);
?>" class="btn btn-danger" onclick="return
confirm(Joomla.JText._('COM_RSTICKETSPRO_ARE_YOU_SURE_YOU_WANT_TO_CLEAR_TIME_TRACKING'));"><?php
echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_CLEAR');?></a>
			<?php
		}
		?>
		</p>
		<?php
	}

	if (!empty($this->ticketIntervals))
	{
		?>
		<table class="table table-bordered table-condensed
table-hover">
			<thead>
			<tr>
				<th><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_START');?></th>
				<th><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_END');?></th>
				<th><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_DURATION');?></th>
				<th><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_STAFF_MEMBER');?></th>
				<th>&nbsp;</th>
			</tr>
			</thead>
			<tbody>
			<?php
			$total = 0;
			foreach ($this->ticketIntervals as $interval)
			{
				$is_running = $interval->end == '0000-00-00 00:00:00';
				$total += $interval->duration;
				?>
				<tr class="<?php echo ($is_running ? 'error' :
'success');?>">
					<td>
						<?php echo $this->showDate($interval->start);?>
					</td>
					<td>
						<?php echo ($is_running ?
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_TRACKING') :
$this->showDate($interval->end));?>
					</td>
					<td>
						<?php echo $this->showTotal($interval->duration);?>
					</td>
					<td>
						<?php echo !empty($interval->staff_member) ?
$interval->staff_member : ''; ?>
					</td>
					<td class="center">
						<?php
						if ($interval->can_delete && !$is_running)
						{
							?>
							<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.clearTimeTrackingEntry&ticket_id='.$this->ticket->id.'&entry='.$interval->id);
?>" onclick="return
confirm(Joomla.JText._('COM_RSTICKETSPRO_ARE_YOU_SURE_YOU_WANT_TO_DELETE_TIME_TRACKING_RECORD'));"
class="btn btn-small btn-danger" ><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_HISTORY_RECORD_DELETE');
?></a>
							<?php
						}
						?>
					</td>
				</tr>
				<?php
			}
			?>
			</tbody>
			<tfoot>
			<tr>
				<td colspan="2"><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_TOTAL');
?></td>
				<td colspan="3"><?php echo
$this->showTotal($total); ?></td>
			</tr>
			</tfoot>
		</table>
		<?php
	}
	else
	{
		?>
		<div class="alert alert-warning"><?php echo
JText::_('COM_RSTICKETSPRO_TIME_TRACKING_NO_HISTORY_ENTRIES');
?></div>
		<?php
	}
}

if ($this->timeSpentInput)
{
	$this->form->setFieldAttribute('time_spent',
'description',
JText::_('RST_TIME_UNIT_'.RSTicketsProHelper::getConfig('time_spent_unit')));
	echo
$this->form->getField('time_spent')->renderField();
?>
	<button type="button"
onclick="Joomla.submitbutton('ticket.savetimespent')"
class="btn btn-primary"><?php echo
JText::_('RST_UPDATE'); ?></button>
<?php
}views/ticket/tmpl/index.html000064400000000054151163476010012140
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/ticket/view.html.php000064400000020550151163476010011620
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewTicket extends JViewLegacy
{
    protected $app;
    protected $form;

	public function display($tpl = null)
	{
		$this->app = JFactory::getApplication();

		if ($this->app->isClient('administrator'))
		{
			JFactory::getApplication()->input->set('hidemainmenu',
true);

			$this->addToolbar();
		}
		else
		{
			$this->params =
$this->app->getParams('com_rsticketspro');
		}
		
		// get ticket information
		$this->ticket = $this->get('Item');
		
		$user = JFactory::getUser();
		if (!$user->id) {
			JFactory::getApplication()->enqueueMessage(JText::_('RST_YOU_HAVE_TO_BE_LOGGED_IN'),
'warning');
			$link = base64_encode((string) JUri::getInstance());
			$this->app->redirect(JRoute::_('index.php?option=com_users&view=login&return='.$link,
false));
		}
		
		// quick and dirty check so we know if this ticket exists & the user
can view it
		if (!$this->hasPermission()) {
			throw new
Exception(JText::_('RST_CUSTOMER_CANNOT_VIEW_TICKET'), 403);
		}

		// load the ticket helper
		require_once
JPATH_COMPONENT_ADMINISTRATOR.'/helpers/ticket.php';
		
		$this->ticketMessages 	= $this->get('Ticketmessages');
		$this->otherTickets	 	= $this->get('OtherTickets');
		
		// form
		$this->form	= $this->get('Form');
		$this->fieldsets = $this->form->getFieldsets();
		
		// permissions
		$this->isStaff		 = $this->get('IsStaff');
		$this->permissions	 = $this->get('StaffPermissions');
		
		// departments
		$this->departments	 = $this->get('Departments');
		$this->department	 = $this->get('Department');
		// statuses
		$this->statuses	 	 = $this->get('Statuses');
		$this->priorities	 = $this->get('Priorities');
		
		// config
		$this->globalMessage 	 =
JText::_(RSTicketsProHelper::getConfig('global_message'));
		$this->ticketView	 	 =
RSTicketsProHelper::getConfig('ticket_view');
		$this->dateFormat 	 	 =
RSTicketsProHelper::getConfig('date_format');
		$this->userField	 	 =
RSTicketsProHelper::getConfig('show_user_info');
		$this->hasViewingHistory =
RSTicketsProHelper::getConfig('ticket_viewing_history');
		$this->allowEditor		 =
RSTicketsProHelper::getConfig('allow_rich_editor');
		$this->allowVoting		 =
RSTicketsProHelper::getConfig('show_ticket_voting');
		$this->showSignature	 =
RSTicketsProHelper::getConfig('show_signature');
		$this->showSearch		 =
RSTicketsProHelper::getConfig('show_kb_search');
		$this->showEmailLink	 =
RSTicketsProHelper::getConfig('show_email_link');
		$this->hasConsent	 	 =
RSTicketsProHelper::getConfig('forms_consent');
		$this->ticketSections = $this->get('TicketSections');
		$this->isPrint		  = $this->get('IsPrint');

		if ($this->ticketView === 'accordion')
		{
			$this->handler = $this->accordion =
$this->get('RSAccordion');
		}
		elseif ($this->ticketView === 'tabbed')
		{
			$this->handler = $this->tabs = $this->get('RSTabs');
		}

		$this->plain = $this->get('RSPlain');
		
		// user
		$this->userId		 = $user->id;
		
		// permissions
		$this->canViewHistory = $this->hasViewingHistory &&
(($this->hasViewingHistory == 1 && $this->isStaff) ||
($this->hasViewingHistory == 2));
		$this->canViewNotes	  = $this->isStaff &&
$this->permissions->view_notes;
		$this->canOpenTicket  = ($this->isStaff &&
$this->permissions->change_ticket_status) || (!$this->isStaff
&&
RSTicketsProHelper::getConfig('allow_ticket_reopening'));
		$this->canCloseTicket = ($this->isStaff &&
$this->permissions->change_ticket_status) || (!$this->isStaff
&&
RSTicketsProHelper::getConfig('allow_ticket_closing'));
		$this->canReply		  = !$this->isStaff || ($this->isStaff
&& $this->permissions->answer_ticket);
		$this->canUpload	  = $this->ticket->department->upload >
0;
		$this->canUpdateReplies 		= $this->isStaff &&
$this->permissions->update_ticket_replies;
		$this->canUpdateCustomerReplies = $this->isStaff &&
$this->permissions->update_ticket_replies_customers;
		$this->canUpdateStaffReplies 	= $this->isStaff &&
$this->permissions->update_ticket_replies_staff;
		$this->canDeleteReplies 		= $this->isStaff &&
$this->permissions->delete_ticket_replies;
		$this->canDeleteCustomerReplies = $this->isStaff &&
$this->permissions->delete_ticket_replies_customers;
		$this->canDeleteStaffReplies 	= $this->isStaff &&
$this->permissions->delete_ticket_replies_staff;
		$this->canAssignTickets			= $this->isStaff &&
$this->permissions->assign_tickets;
		$this->showAltEmail             =
RSTicketsProHelper::getConfig('show_alternative_email');
		$this->timeSpentInput           =
RSTicketsProHelper::getConfig('enable_time_spent') &&
RSTicketsProHelper::getConfig('time_spent_type') ===
'input';
		$this->timeSpentTracking        =
RSTicketsProHelper::getConfig('enable_time_spent') &&
RSTicketsProHelper::getConfig('time_spent_type') ===
'tracking';
		$this->canDeleteTimeHistory 	=
$this->get('timeTrackingDeleteStatus');

		// time counter
		$this->useTimeCounter = false;
		$this->ticketTimeData = false;
		$this->ticketTimeState = 0;
		if ($this->timeSpentTracking &&
isset($this->ticketSections['time']) &&
$this->ticket->status_id != RST_STATUS_CLOSED) {
			$this->useTimeCounter  = true;
			$this->ticketTimeData  =
RSTicketsProTicketHelper::getTicketTimeState($this->ticket->id);
			$this->ticketTimeState = $this->ticketTimeData ? (int)
$this->ticketTimeData->state : 0;

			if ($this->ticketTimeState) {
				$this->document->addScriptDeclaration("jQuery(document).ready(function(){RSTicketsPro.timeCounter('".
$this->ticketTimeData->start."');});");
			}
		}
		$this->ticketIntervals =
$this->get('TicketTimeSpentIntervals');

		RSTicketsProHelper::addHistory($this->ticket->id);
		
		// JS Strings
		JText::script('RST_MAX_UPLOAD_FILES_REACHED');
		JText::script('RST_DELETE_TICKET_MESSAGE_CONFIRM');
		
		// load jQuery & plugins
		if (RSTicketsProHelper::getConfig('jquery', 1)) {
			JHtml::_('jquery.framework');
		}
		
		if ($this->allowVoting) {
			JHtml::_('script',
'com_rsticketspro/jquery.raty.js', array('relative'
=> true, 'version' => 'auto'));
		}
		
		// if trying to print, bring up the print stylesheet
		if ($this->isPrint) {
			JHtml::_('stylesheet', 'com_rsticketspro/print.css',
array('relative' => true, 'version' =>
'auto'),  array('media'=>'print'));
		}
		
		if ($this->canAssignTickets) {
			$this->document->addScriptDeclaration("jQuery(document).ready(function(){RSTicketsPro.disableStaff();});");
		}
		
		parent::display($tpl);
	}

	public function showTotal($duration)
	{
		return RSTicketsProHelper::showTotal($duration);
	}
	
	protected function addToolbar() {
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');
		
		JToolbarHelper::custom('kbconvert.manual', 'upload',
'upload', JText::_('RST_CONVERT_TO_KB'), false);
		JToolbarHelper::custom('kbconvert.automatic',
'upload', 'upload',
JText::_('RST_CONVERT_TO_KB_AUTOMATIC'), false);
		JToolbarHelper::cancel('ticket.cancel');
	}
	
	protected function showDate($date) {
		return JHtml::_('date', $date, $this->dateFormat);
	}
	
	protected function getAvatar($id) {
		return RSTicketsProHelper::getAvatar($id);
	}
	
	protected function canEditMessage($message) {
		$messageUserId = $message->user_id;
		$meId		   = $this->userId;
		
		return $this->isStaff && (
			($this->canUpdateReplies && $messageUserId == $meId) ||
			($this->canUpdateCustomerReplies && $messageUserId != $meId
&& !RSTicketsProHelper::isStaff($messageUserId)) ||
			($this->canUpdateStaffReplies && $messageUserId != $meId
&& RSTicketsProHelper::isStaff($messageUserId))
		);
	}
	
	protected function canDeleteMessage($message) {
		$messageUserId = $message->user_id;
		$meId		   = $this->userId;
		
		return $this->isStaff && (
			($this->canDeleteReplies && $messageUserId == $meId) ||
			($this->canDeleteCustomerReplies && $messageUserId != $meId
&& !RSTicketsProHelper::isStaff($messageUserId)) ||
			($this->canDeleteStaffReplies && $messageUserId != $meId
&& RSTicketsProHelper::isStaff($messageUserId))
		);
	}
	
	protected function hasPermission() {
		$model = $this->getModel();
		
		// ticket does exist && user can open it
		return ($this->ticket && $this->ticket->id &&
$model->hasPermission($this->ticket->id));
	}
}views/ticketmessage/index.html000064400000000054151163476010012531
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/ticketmessage/tmpl/edit.php000064400000002154151163476010013151
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidator');

// Load JavaScript message titles
JText::script('ERROR');
JText::script('WARNING');
JText::script('NOTICE');
JText::script('MESSAGE');
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=ticketmessage&tmpl=component&layout=edit&id='
. (int) $this->item->id); ?>" method="post"
name="adminForm" id="adminForm"
class="form-validate form-vertical">
	<button type="button" class="btn btn-success"
onclick="Joomla.submitbutton('ticketmessage.apply');"><i
class="icon-apply icon-white"></i> <?php echo
JText::_('JAPPLY'); ?></button>
	<?php
	foreach ($this->form->getFieldsets() as $fieldset)
	{
		echo $this->form->renderFieldset($fieldset->name);
	}
	?>

	<?php echo JHtml::_('form.token'); ?>
	<input type="hidden" name="task" value=""
/>
</form>views/ticketmessage/tmpl/index.html000064400000000054151163476010013505
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/ticketmessage/view.html.php000064400000001017151163476010013162
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewTicketmessage extends JViewLegacy
{
	protected $form;
	protected $item;
	
	public function display($tpl = null)
	{
		$this->form	= $this->get('Form');
		$this->item	= $this->get('Item');
		
		parent::display($tpl);
	}
}views/tickets/index.html000064400000000054151163476010011347
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tickets/tmpl/default.php000064400000020753151163476010012473
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

JHtml::_('behavior.keepalive');
JHtml::_('formbehavior.chosen', '.advancedSelect');

JText::script('RST_DELETE_TICKETS_CONFIRM');
JText::script('RST_DELETE_TICKET_CONFIRM');

$listOrder 	=
$this->escape($this->state->get('list.ordering'));
$listDirn 	=
$this->escape($this->state->get('list.direction'));

$script = array();
$script[] = 'Joomla.submitbutton = function(task) {';

if (!empty($this->permissions->delete_ticket))
{
	$script[] = "if
(document.getElementById('bulk_delete').value == '1'
&&
!confirm(Joomla.JText._('RST_DELETE_TICKETS_CONFIRM'))) {";
	$script[] = 'return false;';
	$script[] = '}';
}

if (!empty($this->permissions->export_tickets))
{
	$script[] = "RSTicketsPro.exportCSV.totalItems =
{$this->totalItems};";
	$script[] = "if (task === 'tickets.exportcsv') {";
	$script[] = "RSTicketsPro.exportCSV.setCSV(0, '');";
	$script[] = "return false;";
	$script[] = "}";

	JHtml::_('script', 'com_rsticketspro/export.js',
array('relative' => true, 'version' =>
'auto'));
}

$script[] = "Joomla.submitform(task,
document.getElementById('adminForm'));";
$script[] = "}";

JFactory::getDocument()->addScriptDeclaration(implode("\n",
$script));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=tickets');
?>" method="post" name="adminForm"
id="adminForm">
	<?php
	echo RsticketsproAdapterGrid::sidebar();

	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (!empty($this->permissions->export_tickets))
	{
		?>
		<div class="com-rsticketspro-progress"
id="com-rsticketspro-export-progress"
style="display:none">
			<div class="com-rsticketspro-bar" style="width:
0%;">0%</div>
		</div>
	<?php
	}

	echo $this->globalMessage;
	
	if ($this->isSearching || ($this->isStaff &&
$this->hasSearches))
	{
		?>
		<div class="well well-small">
			<p>
			<?php
			if ($this->isSearching)
			{
				if ($this->isStaff)
				{
					?>
					<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=predefinedsearch.add');
?>" class="btn btn-success rst_search"><?php echo
JText::_('RST_SAVE_SEARCH'); ?></a>
					<?php
				}
				?>
				<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=search.reset');
?>" class="btn btn-danger"><?php echo
JText::_('RST_RESET_SEARCH'); ?></a>
				<?php
			}
			if ($this->isStaff && $this->hasSearches)
			{
				?>
				<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=predefinedsearches');
?>" class="btn btn-secondary
rst_manage_searches"><?php echo
JText::_('RST_MANAGE_SEARCHES'); ?></a>
				|
				<?php
				foreach ($this->searches as $search)
				{
					if (!$search->current)
					{
						?>
						<a href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=predefinedsearch.perform&id='.$search->id);
?>" class="btn btn-secondary btn-mini btn-sm <?php echo
RSTicketsProHelper::tooltipClass();?>" title="<?php echo
RSTicketsProHelper::tooltipText(JText::sprintf('RST_SEARCH_CLICK_DESC',
$this->escape($search->name))); ?>"><?php echo
$this->escape($search->name); ?></a>
						<?php
					}
					else
					{
						echo $this->escape($search->name);
					}
				}
			}
			?>
			</p>
		</div>
		<?php
	}
	?>
	
	<?php
	if ($this->isStaff)
	{
		echo JHtml::_('bootstrap.renderModal',
'rsticketsproBulkModal', array(
			'title' => JText::_('RST_BULK_ACTIONS'),
			'footer' =>
$this->loadTemplate('bulk_footer'),
			'height' => 400,
			'backdrop' => 'static'),
$this->loadTemplate('bulk_body'));
	}
	?>
		<table class="adminlist table table-striped"
id="articleList">
			<thead>
			<tr>
				<th class="hidden-phone hidden-tablet"
width="1%" nowrap="nowrap"><?php echo JText::_(
'#' ); ?></th>
				<th width="1%" nowrap="nowrap"><?php echo
JHtml::_('grid.checkall'); ?></th>
				<th class="hidden-phone" width="140"><?php
echo JHtml::_('searchtools.sort', 'RST_TICKET_DATE',
'date', $listDirn, $listOrder); ?></th>
				<th class="hidden-phone hidden-tablet"
width="140"><?php echo
JHtml::_('searchtools.sort', 'RST_TICKET_LAST_REPLY',
'last_reply', $listDirn, $listOrder); ?></th>
				<th class="hidden-phone hidden-tablet"
width="1%" nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_FLAGGED',
'flagged', $listDirn, $listOrder); ?></th>
				<?php if ($this->permissions->delete_ticket) { ?>
					<th width="1%" nowrap="nowrap"><?php echo
JText::_('RST_DELETE'); ?></th>
				<?php } ?>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_TICKET_CODE', 'code', $listDirn, $listOrder);
?> <?php echo JHtml::_('searchtools.sort',
'RST_TICKET_SUBJECT', 'subject', $listDirn,
$listOrder); ?></th>
				<th><?php echo JHtml::_('searchtools.sort',
'RST_TICKET_CUSTOMER', 'customer', $listDirn,
$listOrder); ?></th>
				<th class="hidden-phone" width="1%"
nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_TICKET_PRIORITY',
'priority', $listDirn, $listOrder); ?></th>
				<th class="hidden-phone" width="1%"
nowrap="nowrap"><?php echo
JHtml::_('searchtools.sort', 'RST_TICKET_STATUS',
'status', $listDirn, $listOrder); ?></th>
				<th class="hidden-phone hidden-tablet"><?php echo
JHtml::_('searchtools.sort', 'RST_TICKET_STAFF',
'staff', $listDirn, $listOrder); ?></th>
				<?php if
(RSTicketsProHelper::getConfig('enable_time_spent')) { ?>
				<th class="hidden-phone hidden-tablet"><?php echo
JHtml::_('searchtools.sort', 'RST_TIME_SPENT',
'time_spent', $listDirn, $listOrder); ?></th>
				<?php } ?>
			</tr>
			</thead>
	<?php
	foreach ($this->items as $i => $item)
	{
		$grid = JHtml::_('grid.id', $i, $item->id);
		$link =
JRoute::_('index.php?option=com_rsticketspro&view=ticket&id='.$item->id);
		?>
		<tr class="rst_priority_color_<?php echo
$item->priority_id; ?>">
			<td class="hidden-phone hidden-tablet" width="1%"
nowrap="nowrap"><?php echo
$this->pagination->getRowOffset($i); ?></td>
			<td width="1%" nowrap="nowrap"><?php echo
$grid; ?></td>
			<td class="hidden-phone"><?php echo
$this->escape($this->showDate($item->date)); ?></td>
			<td class="hidden-phone hidden-tablet"><?php echo
$this->escape($this->showDate($item->last_reply));
?></td>
			<td class="hidden-phone hidden-tablet"
align="center"><button type="button"
class="btn btn-small btn-sm <?php echo $item->flagged ?
'rst_flagged' : 'rst_not_flagged'; ?>"
onclick="RSTicketsPro.flagTicket('index.php', this,
'<?php echo $item->id; ?>');"><i
class="rsticketsproicon-star"></i></button></td>
			<?php if ($this->permissions->delete_ticket) { ?>
				<td align="center">
					<a class="btn btn-small btn-sm btn-danger
rst_button_delete_ticket <?php echo
RSTicketsProHelper::tooltipClass();?>" title="<?php echo
RSTicketsProHelper::tooltipText(JText::_('RST_TICKET_DELETE_DESC'));
?>" href="<?php echo
JRoute::_('index.php?option=com_rsticketspro&task=ticket.delete&cid='
. $item->id); ?>" onclick="return
confirm(Joomla.JText._('RST_DELETE_TICKET_CONFIRM'));">&#10006;</a>
				</td>
			<?php } ?>
			<td>
			<?php if ($item->has_files) { ?>
				<i class="rsticketsproicon-attach"></i>
			<?php } ?>
			<a href="<?php echo $link; ?>"><?php echo
$item->code; ?></a> (<?php echo $item->replies; ?>)
			<br />
			<a href="<?php echo $link; ?>"><?php echo
$this->escape($item->subject); ?></a>
			<?php echo $this->notify($item); ?>
			</td>
			<td><a href="<?php echo
JRoute::_('index.php?option=com_users&view=user&task=user.edit&id='.$item->customer_id);
?>"><?php echo $this->escape($item->customer);
?></a></td>
			<td class="rst_priority_cell hidden-phone"><?php echo
JText::_($item->priority); ?></td>
			<td class="hidden-phone"><?php echo
JText::_($item->status); ?></td>
			<td class="hidden-phone hidden-tablet"><?php echo
$item->staff_id ? $this->escape($item->staff) :
'<em>'.JText::_('RST_UNASSIGNED').'</em>';
?></td>
			<?php if
(RSTicketsProHelper::getConfig('enable_time_spent')) { ?>
			<td class="hidden-phone hidden-tablet"><?php echo
$this->showTotal($item->time_spent); ?></td>
			<?php } ?>
		</tr>
		<?php
	}
	?>
		<tfoot>
			<tr>
				<td colspan="12"><?php echo
$this->pagination->getListFooter(); ?></td>
			</tr>
		</tfoot>
		</table>
	</div>
	
	<?php echo JHtml::_( 'form.token' ); ?>
	<input type="hidden" name="boxchecked"
value="0" />
	<input type="hidden" name="option"
value="com_rsticketspro" />
	<input type="hidden" name="task" value=""
/>
</form>views/tickets/tmpl/default_bulk_body.php000064400000002167151163476010014524
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die;
?>
<div class="container">
	<div class="text-center">
		<?php
		if ($this->permissions->move_ticket)
		{
			echo '<div>' .
$this->bulkForm->getField('bulk_department_id')->input .
'</div>';
		}
		if ($this->permissions->assign_tickets)
		{
			echo '<div>' .
$this->bulkForm->getField('bulk_staff_id')->input .
'</div>';
		}
		if ($this->permissions->update_ticket)
		{
			echo '<div>' .
$this->bulkForm->getField('bulk_priority_id')->input .
'</div>';
		}
		if ($this->permissions->change_ticket_status)
		{
			echo '<div>' .
$this->bulkForm->getField('bulk_status_id')->input .
'</div>';
		}

		if ($this->autocloseEnabled)
		{
			echo '<div>' .
$this->bulkForm->getField('bulk_notify')->input .
'</div>';
		}

		if ($this->permissions->delete_ticket)
		{
			echo '<div>' .
$this->bulkForm->getField('bulk_delete')->input .
'</div>';
		}
		?>
	</div>
</div>
views/tickets/tmpl/default_bulk_footer.php000064400000001045151163476010015057
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die;
?>
<button type="button" class="btn btn-secondary"
data-bs-dismiss="modal" data-dismiss="modal">
	<?php echo JText::_('JCANCEL'); ?>
</button>
<button type="button" class="btn btn-success"
onclick="Joomla.submitbutton('ticket.bulkupdate');">
	<?php echo JText::_('RST_UPDATE'); ?>
</button>
views/tickets/tmpl/index.html000064400000000054151163476010012323
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/tickets/view.html.php000064400000010357151163476010012007
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewTickets extends JViewLegacy
{
	public function display($tpl = null)
	{
		$this->addToolbar();

		$this->state 		    = $this->get('State');
		$this->filterForm       = $this->get('FilterForm');
		$this->activeFilters    = $this->get('ActiveFilters');
		$this->bulkForm         = $this->get('BulkForm');
		$this->globalMessage    =
JText::_(RSTicketsProHelper::getConfig('global_message'));
		$this->dateFormat 	    =
RSTicketsProHelper::getConfig('date_format');
		$this->autocloseEnabled =
RSTicketsProHelper::getConfig('autoclose_enabled');
		$this->permissions 	    = $this->get('permissions');
		$this->isStaff		    = RSTicketsProHelper::isStaff();
		$this->items 		    = $this->get('Items');
		$this->limitstart	    = $this->get('start');
		$this->pagination 	    = $this->get('Pagination');
		$this->totalItems 	    = $this->get('TotalItems');
		$this->isSearching      = $this->get('isSearching');
		$this->searches 	    = $this->get('searches');
		$this->hasSearches 	    = !empty($this->searches);
		$this->predefinedSearch =
$this->get('predefinedsearch');

		$this->setPriorityColors();

		if (RSTicketsProHelper::getConfig('enable_time_spent'))
		{
			if ($field = $this->filterForm->getField('fullordering',
'list'))
			{
				$field->addOption('COM_RSTICKETSPRO_TIMESPENT_ORDER_ASC',
array('value' => 'time_spent ASC'));
				$field->addOption('COM_RSTICKETSPRO_TIMESPENT_ORDER_DESC',
array('value' => 'time_spent DESC'));
			}
		}
		
		parent::display($tpl);
	}
	
	protected function addToolbar()
	{
		// set title
		JToolbarHelper::title('RSTickets! Pro',
'rsticketspro');

		RSTicketsProToolbarHelper::addToolbar('tickets');
		
		$permissions = RSTicketsProHelper::getCurrentPermissions();
		if ($permissions)
		{
			if ($permissions->add_ticket || $permissions->add_ticket_staff ||
$permissions->add_ticket_customers)
			{
				JToolbarHelper::addNew('submit.showform');
			}

			if (!empty($permissions->export_tickets))
			{
				JToolBarHelper::custom('tickets.exportcsv',
'download.png', 'download_f2.png',
'COM_RSTICKETSPRO_EXPORT', false);
			}

			if ($permissions->move_ticket || $permissions->assign_tickets ||
$permissions->update_ticket || $permissions->change_ticket_status ||
$permissions->delete_ticket ||
RSTicketsProHelper::getConfig('autoclose_enabled'))
			{
				if (version_compare(JVERSION, '4.0', '>='))
				{
					$toolbar = JToolbar::getInstance('toolbar');
					$toolbar->popupButton('batch')
						->text('RST_BULK_ACTIONS')
						->selector('rsticketsproBulkModal')
						->listCheck(true);
				}
				else
				{
					JToolbarHelper::modal('rsticketsproBulkModal',
'icon-move', 'RST_BULK_ACTIONS');
				}
			}
		}

		JToolbarHelper::custom('search.advanced', 'search',
'search', JText::_('RST_OPEN_ADVANCED_SEARCH'),
false);
	}
	
	protected function showDate($date)
	{
		return JHtml::_('date', $date, $this->dateFormat);
	}

	public function showTotal($duration)
	{
		return RSTicketsProHelper::showTotal($duration, true);
	}

	public function notify($ticket)
	{
		return RSTicketsProHelper::showNotifyIcon($ticket);
	}

	protected function setPriorityColors()
	{
		if ($priorities = $this->get('Priorities'))
		{
			$css      = '';
			$colorize =
RSTicketsProHelper::getConfig('color_whole_ticket');
			$class 	  = $colorize ? '' : '.rst_priority_cell';
			foreach ($priorities as $priority)
			{
				if ($priority->bg_color)
				{
					$css .= 'table.adminlist
tr.rst_priority_color_'.$priority->id.' td'.$class.'
{ background-color: '.$this->escape($priority->bg_color).'
!important; }'."\n";
				}
				if ($priority->fg_color)
				{
					$css .= 'table.adminlist
tr.rst_priority_color_'.$priority->id.'
td'.$class.','."\n";
					$css .= 'table.adminlist
tr.rst_priority_color_'.$priority->id.' td
a'.$class.' { color:
'.$this->escape($priority->fg_color).' !important;
}'."\n";
				}
			}

			if ($css)
			{
				JFactory::getDocument()->addStyleDeclaration($css);
			}
		}
	}
}views/users/index.html000064400000000054151163476010011042
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/users/tmpl/index.html000064400000000054151163476010012016
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>views/users/tmpl/modal.php000064400000005643151163476010011637
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die;

$listOrder =
$this->escape($this->state->get('list.ordering'));
$listDirn  =
$this->escape($this->state->get('list.direction'));

JHtml::_('script', 'com_rsticketspro/users.js',
array('relative' => true, 'version' =>
'auto'));
?>
<form action="<?php echo
JRoute::_('index.php?option=com_rsticketspro&view=users&layout=modal&tmpl=component&field='
. $this->escape($this->field)); ?>" method="post"
name="adminForm" id="adminForm">
	<?php
	echo JLayoutHelper::render('joomla.searchtools.default',
array('view' => $this));

	if (empty($this->items))
	{
		?>
		<div class="alert alert-info">
			<span class="fa fa-info-circle"
aria-hidden="true"></span><span
class="sr-only"><?php echo JText::_('INFO');
?></span>
			<?php echo JText::_('JGLOBAL_NO_MATCHING_RESULTS'); ?>
		</div>
		<?php
	}
	else
	{
		?>
		<table class="table table-striped table-condensed">
			<thead>
				<tr>
					<th><?php echo JHtml::_('searchtools.sort',
'RST_NAME', 'name', $listDirn, $listOrder);
?></th>
					<th nowrap width="25%"><?php echo
JHtml::_('searchtools.sort', 'JGLOBAL_USERNAME',
'username', $listDirn, $listOrder); ?></th>
					<th nowrap width="25%"><?php echo
JHtml::_('searchtools.sort', 'JGLOBAL_EMAIL',
'email', $listDirn, $listOrder); ?></th>
					<th nowrap width="1%"><?php echo
JHtml::_('searchtools.sort', 'JGRID_HEADING_ID',
'id', $listDirn, $listOrder); ?></th>
				</tr>
			</thead>
			<tbody>
			<?php
			foreach ($this->items as $item)
			{
				$alt_email = RSTicketsProHelper::getAlternativeEmail($item->id);
				?>
				<tr>
					<td><?php echo $this->escape($item->name);
?></td>
					<td><a class="pointer button-select"
href="javascript:void(0);" data-user-value="<?php echo
$item->id; ?>" data-user-name="<?php echo
$this->escape($item->name); ?>"
data-user-field="<?php echo
$this->escape($this->field);?>" data-alt-email="<?php
echo $this->escape($alt_email); ?>"
onclick="RSTicketsProSelectUser(this);"><?php echo
$this->escape($item->username); ?></a></td>
					<td><a class="pointer button-select"
href="javascript:void(0);" data-user-value="<?php echo
$item->id; ?>" data-user-name="<?php echo
$this->escape($item->name); ?>"
data-user-field="<?php echo
$this->escape($this->field);?>" data-alt-email="<?php
echo $this->escape($alt_email); ?>"
onclick="RSTicketsProSelectUser(this);"><?php echo
$this->escape($item->email); ?></a></td>
					<td><?php echo $item->id; ?></td>
				</tr>
			<?php
			}
			?>
			</tbody>
		</table>
		<?php
		echo $this->pagination->getListFooter();
	}

	echo JHtml::_('form.token');
	?>
	<input type="hidden" name="task" value=""
/>
	<input type="hidden" name="field"
value="<?php echo $this->escape($this->field); ?>"
/>
</form>views/users/view.html.php000064400000002564151163476010011503
0ustar00<?php
/**
 * @package    RSTickets! Pro
 *
 * @copyright  (c) 2010 - 2016 RSJoomla!
 * @link       https://www.rsjoomla.com
 * @license    GNU General Public License
http://www.gnu.org/licenses/gpl-3.0.en.html
 */

defined('_JEXEC') or die('Restricted access');

class RsticketsproViewUsers extends JViewLegacy
{
	protected $items;
	protected $pagination;
	protected $state;

	public function display($tpl = null)
	{
		$this->checkPermissions();

		$this->items		 = $this->get('Items');
		$this->pagination	 = $this->get('Pagination');
		$this->state		 = $this->get('State');
		$this->filterForm    = $this->get('FilterForm');
		$this->activeFilters = $this->get('ActiveFilters');
		$this->field		 = $this->get('Field');

		parent::display($tpl);
	}

	protected function checkPermissions()
	{
		$user = JFactory::getUser();
		$app  = JFactory::getApplication();

		// not logged in?
		if (!$user->get('id'))
		{
			$app->redirect(JRoute::_('index.php?option=com_users&view=login&return='
. base64_encode((string) JUri::getInstance()), false));
		}

		// check permissions
		$permissions = RSTicketsProHelper::getCurrentPermissions();
		if (!RSTicketsProHelper::isStaff() || !$permissions ||
(!$permissions->add_ticket_customers &&
!$permissions->add_ticket_staff))
		{
			throw new Exception(JText::_('RST_STAFF_CANNOT_VIEW_USERS'),
403);
		}
	}
}css/admin/dashboard.css000064400000004220151163531650011071 0ustar00/*
dashboard about box */
#dashboard-left {
	float: left;
	width: 63%;
	padding-right: 1%;
	overflow: hidden;
}

#dashboard-left h3 {
	margin-top: 1%;
}

#dashboard-right {
	float: left;
	width: 36%;
}
.dashboard-container {
	width: 100%;
	overflow: hidden;
}

.dashboard-container:before,
.dashboard-container:after {
	display: table;
	content: "";
}

.dashboard-container:after {
	clear: both;
}

.dashboard-button {
	min-width: 19%;
	float: left;
	margin: 1% 1% 0 0;
}

.dashboard-button > a {
	display: block;
	width: 100%;
	height: 100%;
}

.dashboard-button:hover {
	background-color: #2d6ca2;
}

.dashboard-button:hover a {
	color: #fff;
	text-decoration: none;
}

.dashboard-info {
	color: #333;
	display:block;
	padding:10px;
	background-color: #f0f0f0;
	border:#d8d8d8 1px solid;
	text-align: center;
}

.dashboard-icon {
	font-size: 3rem;
}

.dashboard-title {
	display: block;
}

.dashboard-info img {
	margin: 0 auto 10px auto;
}

.dashboard-table {
	width: 100%;
	border-top: solid 1px #ddd;
	margin-top: 5px;
}

.dashboard-info td {
	padding: 2px;
}

.correct-code {
	background: #008000;
	color: #fff;
}

.incorrect-code {
	background: #ff0000;
	color: #fff;
}

.missing-code {
	background: #ffa500;
}

.missing-code a,
.incorrect-code a
{
	color: #fff !important;
}

/* Portrait tablet to landscape and desktop */
@media (min-width: 768px) and (max-width: 979px) {
	.dashboard-button {
		float: none;
		width: 90%;
		margin: 1%;
	}
	#dashboard-left {
		float: none;
		width: 100%;
	}

	#dashboard-right {
		float: none;
		width: 100%;
	}
}

/* Landscape phone to portrait tablet */
@media (max-width: 767px) {
	.dashboard-button {
		float: none;
		width: 90%;
		margin: 1%;
	}
	#dashboard-left {
		float: none;
		width: 100%;
	}

	#dashboard-right {
		float: none;
		width: 100%;
	}
}

/* Landscape phones and down */
@media (max-width: 480px) {
	.dashboard-button {
		float: none;
		width: 90%;
		margin: 1%;
	}
	#dashboard-left {
		float: none;
		width: 100%;
	}

	#dashboard-right {
		float: none;
		width: 100%;
	}
}css/awesomplete.css000064400000003755151163531650010413
0ustar00.awesomplete [hidden] {
    display: none;
}

.awesomplete .visually-hidden {
    position: absolute;
    clip: rect(0, 0, 0, 0);
}

.awesomplete {
    display: inline-block;
    position: relative;
}

.awesomplete > input {
    display: block;
}

.awesomplete > ul {
    position: absolute;
    left: 0;
    z-index: 1;
    min-width: 100%;
    box-sizing: border-box;
    list-style: none;
    padding: 0;
    margin: 0;
    background: #fff;
}

.awesomplete > ul:empty {
    display: none;
}

.awesomplete > ul {
	border-radius: .3em;
	margin: .2em 0 0;
	background: hsla(0,0%,100%,.9);
	background: linear-gradient(to bottom right, white, hsla(0,0%,100%,.8));
	border: 1px solid rgba(0,0,0,.3);
	box-shadow: .05em .2em .6em rgba(0,0,0,.2);
	text-shadow: none;
}

@supports (transform: scale(0)) {
	.awesomplete > ul {
		transition: .3s cubic-bezier(.4,.2,.5,1.4);
		transform-origin: 1.43em -.43em;
	}
	
	.awesomplete > ul[hidden],
	.awesomplete > ul:empty {
		opacity: 0;
		transform: scale(0);
		display: block;
		transition-timing-function: ease;
	}
}

	/* Pointer */
	.awesomplete > ul:before {
		content: "";
		position: absolute;
		top: -.43em;
		left: 1em;
		width: 0; height: 0;
		padding: .4em;
		background: white;
		border: inherit;
		border-right: 0;
		border-bottom: 0;
		-webkit-transform: rotate(45deg);
		transform: rotate(45deg);
	}

	.awesomplete > ul > li {
		position: relative;
		padding: .2em .5em;
		cursor: pointer;
	}
	
	.awesomplete > ul > li:hover {
		background: hsl(200, 40%, 80%);
		color: black;
	}
	
	.awesomplete > ul > li[aria-selected="true"] {
		background: hsl(205, 40%, 40%);
		color: white;
	}
	
		.awesomplete mark {
			background: hsl(65, 100%, 50%);
		}
		
		.awesomplete li:hover mark {
			background: hsl(68, 100%, 41%);
		}
		
		.awesomplete li[aria-selected="true"] mark {
			background: hsl(86, 100%, 21%);
			color: inherit;
		}
/*# sourceMappingURL=awesomplete.css.map */
css/dashboard.css000064400000005771151163531650010015 0ustar00/* dashboard
about box */
#dashboard-left {
	float: left;
	width: 63%;
	padding-right: 1%;
	overflow: hidden;
}

#dashboard-right {
	float: left;
	width: 36%;
}
.dashboard-container {
    width: 100%;
	overflow: hidden;
}

.dashboard-container:before,
.dashboard-container:after {
	display: table;
	content: "";
}

.dashboard-container:after {
	clear: both;
}

.dashboard-button {
	width: 18%;
	float: left;
	margin: 1%;
	height: 75px;
}

.dashboard-title {
	display: block;
}

.dashboard-info {
	font-size: 12px;
	color: #333;
	display:block;
	padding:10px;
	background: rgb(255,255,255); /* Old browsers */
	background: -moz-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246,
246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%); /* FF3.6+ */
	background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,
rgba(255, 255, 255, 1)), color-stop(47%, rgba(246, 246, 246, 1)),
color-stop(100%, rgba(237, 237, 237, 1))); /* Chrome,Safari4+ */
	background: -webkit-linear-gradient(top, rgba(255, 255, 255, 1) 0%,
rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%); /*
Chrome10+,Safari5.1+ */
	background: -o-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246,
246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%); /* Opera 11.10+ */
	background: -ms-linear-gradient(top, rgba(255, 255, 255, 1) 0%, rgba(246,
246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%); /* IE10+ */
	background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%,
rgba(246, 246, 246, 1) 47%, rgba(237, 237, 237, 1) 100%); /* W3C */
	filter: progid:DXImageTransform.Microsoft.gradient(
startColorstr='#ffffff', endColorstr='#ededed',
GradientType=0 ); /* IE6-9 */
	border:#d8d8d8 1px solid;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	-moz-box-shadow: 0 0 4px rgba(000, 000, 000, 0.1) inset;
	-webkit-box-shadow:0 0 4px rgba(000, 000, 000, 0.1) inset;
	box-shadow: 0 0 3px rgba(000, 000, 000, 0.1) inset;
	
	text-align: center;
}

.dashboard-info img {
	margin: 0 auto;
}

.dashboard-table {
	width: 100%;
	border-top: solid 1px #ddd;
	margin-top: 5px;
}

.dashboard-info td {
	padding: 2px;
}

.correct-code {
	background: green;
	color: white;
}

.incorrect-code {
	background: red;
	color: white;
}

.missing-code {
	background: orange;
}

.missing-code a {
	color: white !important;
}

/* Portrait tablet to landscape and desktop */
@media (min-width: 768px) and (max-width: 979px) {
	#dashboard-left {
		float: none;
		width: 100%;
	}

	#dashboard-right {
		float: none;
		width: 100%;
	}
}
 
/* Landscape phone to portrait tablet */
@media (max-width: 767px) {
	#dashboard-left {
		float: none;
		width: 100%;
	}

	#dashboard-right {
		float: none;
		width: 100%;
	}
}
 
/* Landscape phones and down */
@media (max-width: 480px) {
	.dashboard-button {
		float: none;
		width: 90%;
		margin: 1%;
	}
	#dashboard-left {
		float: none;
		width: 100%;
	}

	#dashboard-right {
		float: none;
		width: 100%;
	}
}css/font/rsticketsproicon.eot000064400000026224151163531650012434
0ustar00�,�+�LP�./ rsticketsproiconRegularVersion 1.0
rsticketsproicon�pGSUB �%z�TOS/2>!S�PVcmap��
N��cvt
fpgmb.�z$gaspglyf�>��X�headEu\�6hhea��$hmtxRg��4Xloca71��.maxp�;�
name&�z��-post&+O�prep~�;�+0�
0>DFLTlatnliga��z��z��1PfEd����R�jZT�,��,
�r����������������������,,,,,	

������������������	�	�	
�
�
����
�
�
����������������������
�j�S,048<@I�@�AL�g$g)#g("

g
'!
g& 		g%gW_O==995511-- 
=@=@?>9<9<;:585876141432-0-0/. ,
,+*&%"!
*+3#!#53%53'53'53'53'53'5354635!%5!%5!%5!%5!>&�C���6T6���a��a��a��a��a���@��@�x�yyy
 y 
`^a)<:)8)^��!!y!!y!!y""y""����@��v+373!�D�D�4�ZZ�5��0G-@*;3&L���v&))+=4?&'47672#"54?.7462!.6'672#54/&�B#%5
1H
r0r��9%.\�ZN=�#���D.#1)#A�v2nj�P'\8/)}p7=��
FV3LllLi5F
�%Yj}+)>R1P
�
�95�j�R$@�v$$+5467>'4&'&'&'&>2tecL6
(^~^(
4Jdٖ�D%#L?V#d4)8@((@8)4d#V@J$P1��� 
6@3���v
	
	
	+2#432#432#543��(��(��(
��R2����&2����2����6�%@"
L	JI�v+?%7&767'67>'�t��Xtvd�dHX�Xtv`�bHXVr�t��VzPxdfHX��Vz��xbhHX�\t����#$@!��Y_O93+&763!2"/&6#!"&5427
N&��:��D"��"�8J `b

b`^
��  p
�

���'0X����@�EVUSQLJIhedc_^TPOKig]%�m$"~}{ytq#L`jKBA@?=<;8765	J|xwsrI		���~~iY_O����on[ZGF32/.+*
+=767'76?37'#'&''7&'7>.%767'76?7#''5&''7&'7367'76?7#''5&''7&'7>&'#">&'#"^<DJa
JD<^^<DJ
aJD<4L26H8@F%61H9-1
DD'8/F;-1%1%$

0)#/1
(#

1
)#E($6* $�aJE=^^=EJa
HF<^^<FH;%62N08�H9-1
BD'61F;-1BF%61�Q2+!%01
)#
3+!%13
)$
.�*&4,"���
-��%	LK�
PX@;�~~
pg
		W
	`		P@<�~~
~g
		W
	`		PY@!!!-!-,+)&#"
$5"+!6;6?>;232!5!'&+"5!#!"5'!�8
`��*�`
�:�$���T�Z
�Fd$l)- Pl��db66��dXNTT�d�i�S D@A
L�~~�YaQ%+4773264&"#7462"&&�(��\���Zm5<d��ʌ%HNpNNpN^�&��^��&Zm�Ȏ�dF;�9NNrNN�iPQ5@2

	LK���v+!!5)%5%P��
>���=����Q��M�`�cTS�����0%@"L'J��v+%+&76%6#"'%'7	#"'.7676>'"*

,b46& "���62$��
v��
$&�&
.*
P  �
�P����
&L�F&��$���l�TB@B10	L�v?=43+5676'2?6&6'5'&676?>76&'&'>"'&7;u^Tx��B]7��%'):*R:bBDT�^E�b�YiKV��FPD9FAD;sRV{��F]		
6��#"''!
)P<

9�	P�^C�_
Xk�JLT��F9FV��=";@8 J

IWg_O""
+37
/7'?'?/^`X{��RL��NZ�q�B��C��@F�Z\����\9��5Z���{��}����=	@J	I�v+
%{}u{��n���w�h������h�����<@9��gW_O



2+#!"'&7625#7#�
��

�,nnn"�$dd�,���j�R"%3<p@m#	'
Lg		gg

gg
W
_O444<4<;9650/.,)(%$"!	+2!"&'5!"&'46?>;2633375##!546#'#�
�����6�&!G������m���&��|
�Z � w6� �w�}�°�����6�N��
�����R$,4,@)20.,*(&$"
L4J�v+7'%"/&4762%/?/?/?/?��<�6
�2

o

�

o
�6677�mm"!mm!)7766��6666�<�g
�2

o

�

o
[777�"!mm!"m��777.777�jYR#3CSv@s,$@8	PH
Lgg	g
		g

gW_ODD44DSDRLJ4C4B<:0.(&##&56+!"&'467!23&/&#"&'5!463!2#!"&52#!"&=4632#!"&=4633�
�6J�����S�
�

�w
�

�w

�

�w

~4�~ |&����< ��

$

Y
$

$
�
$

$
���j�R!*3;r@o985(%)$L	iii
Y
aQ,+#"0/+3,3'&"*#*	+2".>"627&7&47'27'"'726.%64'�f��LT����TL��fj_l.^.m`�ll3�j`m.^.l_jY~z�x�cl33lRP��ȼ�PP��ȼ�PG3ll3��l.^.m`��3ll3�~��x�vul_�`m.^��Y1FZ@W*@%;3L�~�igYaQ#&')5#$	+#"&'&4?632>."+"&'546>32%+"&=46;546;2YDr�V`�<L)vC:hP*.Llod(M�,H<�RW�tB��
�

}
$
^W�tDRIM5:.LjtjL.(%M-�H9>Dt�J�

#
�

/.�_<���m��m���iPTR�jP����P�����
4��������P����������Y�Y���Z����"�d��j��	0	��
T����55EL\lw
+��	j�	 /	O	 ]	 }	�	 �	
V�	&)Copyright (C) 2021 by original authors @
fontello.comrsticketsproiconRegularrsticketsproiconrsticketsproiconVersion
1.0rsticketsproiconGenerated by svg2ttf from Fontello
project.http://fontello.comCopyright (C) 2021 by original authors @
fontello.comrsticketsproiconRegularrsticketsproiconrsticketsproiconVersion
1.0rsticketsproiconGenerated by svg2ttf from Fontello
project.http://fontello.com
	

	clipboardfolderusersuser	chart-bar
arrows-ccwmailcogs	briefcasesearch-circledterminal
chart-lineattach
star-emptystar	attentiondocsmagicdoc-textlifebuoyhistory���,
�UXEY  K�QK�SZX�4�(Y`f
�UX�%a�cc#b!!�Y�C#D�C`B-�,� `f-�,#!#!-�,
d�BC�C ``B�CB�%C�CTx
�#�CCad�Px�C`B�!e!�CC�B
�C#B�C`B#�PXeY�C`B-�,�+�CX#!#!�CC#�PXeY d
��P�&Z�(
CEcE�EX!�%YR[X!#!�X �PPX!�@Y
�8PX!�8YY �
CEcEad�(PX!�
CEcE �0PX!�0Y ��PX f ��a
�
PX` � PX!�
` �6PX!�6``YYY�%�Cc�RX�K�
PX!�CK�PX!�Ka�c�Cc�bYYdaY�+YY#�PXeYY
d�C#BY-�, E �%ad �CPX�#B�#B!!Y�`-�,#!#!�+
d�bB �#B�EX�
CEc�
C�`Ec�*! �C �
��+�0%�&QX`PaRYX#Y!Y
�@SX�+!�@Y#�PXeY-�,�	C+�C`B-�,�	#B#
�#Ba�bf�c�`�*-�	,  E �Cc�b
�PX�@`Yf�c`D�`-�
,�	CEB*!�C`B-�,�C#D�C`B-�,  E �+#�C�%` E�#a d
� PX!��0PX� �@YY#�PXeY�%#aDD�`-�
,  E
�+#�C�%` E�#a d�$PX��@Y#�PXeY�%#aDD�`-�,
�#B�
EPX!#!Y*!-�,�E�daD-�,�`  �CJ�PX
�#BY�CJ�RX �#BY-�, �bf�c �c�#a�C` �`
�#B#-�,KTX�dDY$�
e#x-�,KQXKSX�dDY!Y$�e#x-�,�CUX�C�aB�+Y�C�%B�%B�%B�#
�%PX�C`�%B�� �#a�*!#�a
�#a�*!�C`�%B�%a�*!Y�CG�CG`�b �PX�@`Yf�c
�Cc�b
�PX�@`Yf�c`�#D�C�>�C`B-�,�ETX�#B
E�#B�
#�`B `�BBB�`
�#B�a�+��+"Y-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�	+-�+,#
�bf�c�`KTX# .�]!!Y-�,,# �bf�c�`KTX#
.�q!!Y-�-,# �bf�c�&`KTX# .�r!!Y-�
,�+�ETX�#B E�#B�
#�`B
`�a�BB�`�+��+"Y-�!,� +-�",�
+-�#,� +-�$,� +-�%,� +-�&,� +-�',�
+-�(,� +-�),� +-�*,�	 +-�., <�`-�/, `�`
C#�`C�%a�`�.*!-�0,�/+�/*-�1,  G  �Cc�b
�PX�@`Yf�c`#a8# �UX G  �Cc�b
�PX�@`Yf�c`#a8!Y-�2,�ETX�EB��1*�EX0Y"Y-�3,�+�ETX�EB��1*�EX0Y"Y-�4,
5�`-�5,�EB�Ec�b �PX�@`Yf�c�+�Cc�b
�PX�@`Yf�c�+��D>#8�4*!-�6, < G �Cc�b
�PX�@`Yf�c`�Ca8-�7,.<-�8, < G �Cc�b
�PX�@`Yf�c`�Ca�Cc8-�9,�% . G�#B�%I��G#G#a
Xb!Y�#B�8*-�:,��#B�%�%G#G#a�B�C+e�.# 
<�8-�;,��#B�%�% .G#G#a �#B�B�C+ �`PX
�@QX�  �&YBB# �
C �#G#G#a#F`�C�b �PX�@`Yf�c` �+ ��a
�C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca# 
�&#Fa8#�
CF�%�
CG#G#a` �C�b �PX�@`Yf�c`# �+#�C`�+�%a�%�b
�PX�@`Yf�c�&a �%`d#�%`dPX!#!Y# 
�&#Fa8Y-�<,��#B   �& .G#G#a#<8-�=,��#B
�
#B   F#G�+#a8-�>,��#B�%�%G#G#a�TX.
<#!�%�%G#G#a �%�%G#G#a�%�%I�%a�cc# Xb!Yc�b
�PX�@`Yf�c`#.#  <�8#!Y-�?,��#B �
C .G#G#a `� `f�b �PX�@`Yf�c#  <�8-�@,#
.F�%F�CXPRYX <Y.�0+-�A,# .F�%F�CXRPYX
<Y.�0+-�B,# .F�%F�CXPRYX <Y# .F�%F�CXRPYX
<Y.�0+-�C,�:+# .F�%F�CXPRYX <Y.�0+-�D,�;+� 
<�#B�8# .F�%F�CXPRYX
<Y.�0+�C.�0+-�E,��%�&   F#Ga�#B.G#G#a�C+#
< .#8�0+-�F,�
%B��%�% .G#G#a �#B�B�C+ �`PX �@QX� 
�&YBB# G�C�b �PX�@`Yf�c` �+ ��a
�C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca�%Fa8#
<#8!  F#G�+#a8!Y�0+-�G,�:+.�0+-�H,�;+!# 
<�#B#8�0+�C.�0+-�I,� G�#B�.�6*-�J,�
G�#B�.�6*-�K,��7*-�L,�9*-�M,�E# .
F�#a8�0+-�N,�
#B�M+-�O,�F+-�P,�F+-�Q,�F+-�R,�F+-�S,�G+-�T,�G+-�U,�G+-�V,�G+-�W,�C+-�X,�C+-�Y,�C+-�Z,�C+-�[,�C+-�\,�C+-�],�C+-�^,�C+-�_,�E+-�`,�E+-�a,�E+-�b,�E+-�c,�H+-�d,�H+-�e,�H+-�f,�H+-�g,�D+-�h,�D+-�i,�D+-�j,�D+-�k,�D+-�l,�D+-�m,�D+-�n,�D+-�o,�<+.�0+-�p,�<+�@+-�q,�<+�A+-�r,��<+�B+-�s,�<+�@+-�t,�<+�A+-�u,��<+�B+-�v,�=+.�0+-�w,�=+�@+-�x,�=+�A+-�y,�=+�B+-�z,�=+�@+-�{,�=+�A+-�|,�=+�B+-�},�>+.�0+-�~,�>+�@+-�,�>+�A+-��,�>+�B+-��,�>+�@+-��,�>+�A+-��,�>+�B+-��,�?+.�0+-��,�?+�@+-��,�?+�A+-��,�?+�B+-��,�?+�@+-��,�?+�A+-��,�?+�B+-��,�EPX��EX#!!YYB+�e�$Px�EX0Y-K��RX��Y��cp�B�*�B�
*�B�
*�B�*�B�*�D�$�QX�@�X�dD�(�QX��X�DY�'�QX��@�cTX�DYYYYY�*������D�dDDcss/font/rsticketsproicon.svg000064400000021521151163531650012437
0ustar00<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2021 by original authors @
fontello.com</metadata>
<defs>
<font id="rsticketsproicon" horiz-adv-x="1000" >
<font-face font-family="rsticketsproicon"
font-weight="400" font-stretch="normal"
units-per-em="1000" ascent="850"
descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="clipboard" unicode="&#xe800;"
d="M0-150l0 904 225 0 0-64-161 0 0-774 579 0 0 774-161 0 0 64 225 0
0-904-707 0z m129 129l0 31 31 0 0-31-31 0z m0 121l0 31 31 0 0-31-31 0z m0
121l0 31 31 0 0-31-31 0z m0 121l0 32 31 0 0-32-31 0z m0 121l0 32 31 0
0-32-31 0z m0 96l0 94 129 0 0 97q0 41 27 71t69 29 69-30 28-70q0-56-2-97l129
0 0-94-449 0z m96-582l0 33 353 0 0-33-353 0z m0 121l0 33 353 0 0-33-353 0z
m0 121l0 33 353 0 0-33-353 0z m0 121l0 34 353 0 0-34-353 0z m0 121l0 34 353
0 0-34-353 0z m97 260q0-14 9-22t23-9 22 9 9 22-9 24-22 9-23-9-9-24z"
horiz-adv-x="707" />

<glyph glyph-name="folder" unicode="&#xe801;"
d="M0-52l0 715 139 0 68 90 217 0 68-90 508 0 0-715-1000 0z"
horiz-adv-x="1000" />

<glyph glyph-name="users" unicode="&#xe802;"
d="M0 106l0 134q0 26 18 32l171 80q-66 39-68 131 0 56 35 103 37 41 90
43 31 0 63-19-49-125 23-237-12-11-25-19l-114-55q-48-23-52-84l0-143-114
0q-25 0-27 34z m193-59l0 168q0 27 22 37l152 70 57 28q-37 23-60 66t-22 94q0
76 46 130t110 54 109-54 45-130q0-105-78-158l61-30 146-70q24-10
24-37l0-168q-2-37-37-41l-541 0q-14 2-24 14t-10 27z m473 330q68 106 22 231
31 19 66 21 49 0 90-43 35-41 35-103 0-82-65-131l168-80q18-10
18-32l0-134q0-32-27-34l-118 0 0 143q0 57-50 84l-110 53q-15 8-29 25z"
horiz-adv-x="1000" />

<glyph glyph-name="user" unicode="&#xe803;"
d="M0-150l0 156q0 24 58 58t159 71q99 35 137 73t37 101q0 29-27 72t-32
59q-12 35-29 135-10 52-14 93-2 22 6 50t28 60 67 52 110 20 110-20 67-52
28-60 6-50q-4-41-14-93-17-100-29-135-6-16-32-59t-27-72q0-64
37-101t137-73q217-80 217-129l0-156-1000 0z"
horiz-adv-x="1000" />

<glyph glyph-name="chart-bar" unicode="&#xe804;"
d="M750 800q22 0 36-15t14-35l0-850-200 0 0 850q0 50 40 50l110 0z
m-300-300q22 0 36-15t14-35l0-550-200 0 0 550q0 50 40 50l110 0z m-300-300q22
0 36-15t14-35l0-250-200 0 0 250q0 50 40 50l110 0z"
horiz-adv-x="800" />

<glyph glyph-name="arrows-ccw"
unicode="&#xe805;" d="M186 140l116 116 0-292-276 16 88
86q-116 122-114 290t120 288q100 100 240
116l4-102q-100-16-172-88-88-88-90-213t84-217z m332 598l276-16-88-86q116-122
114-290t-120-288q-96-98-240-118l-2 104q98 16 170 88 88 88 90 213t-84
217l-114-116z" horiz-adv-x="820" />

<glyph glyph-name="mail" unicode="&#xe806;"
d="M30 586q-32 18-28 40 2 14 26 14l846 0q38 0
20-32-8-14-24-22-14-6-192-102t-182-98q-16-10-46-10-28 0-46 10-4 2-182
98t-192 102z m850-100q20 10 20-10l0-368q0-16-17-32t-33-16l-800 0q-16 0-33
16t-17 32l0 368q0 20 20 10l384-200q18-10 46-10t46 10z"
horiz-adv-x="900" />

<glyph glyph-name="cogs" unicode="&#xe807;"
d="M0 245l0 97 94 8q8 30 23 55l-60 74 68 69 74-61q26 16 55 23l8 94 97
0 10-94q29-7 55-23l74 61 68-69-60-74q16-25 23-55l94-8
0-97-94-10q-7-29-23-55l60-72-68-70-74 60q-26-15-55-23l-10-94-97 0-8 94q-29
8-55 23l-74-60-68 70 60 72q-15 26-23 55z m221 49q0-37 26-64t64-26 63 26 26
64-26 63-63 26-64-26-26-63z m318 238l8 72 70-2q8 22 20 39l-37 57 54 45
49-49q20 10 41 14l14 66 72-8-2-68q22-8 39-22l57 39 45-54-49-49q10-20
12-43l68-14-8-70-68 0q-8-20-22-37l39-59-56-45-47 49q-22-8-43-12l-14-66-70 6
0 70q-20 8-37 20l-59-37-45 54 49 49q-8 20-12 41z m31-445l6 50 49 0q6 16 14
28l-26 43 37 33 36-37q13 8 29 10l10 48 48-5 0-49q16-6 28-16l41 27
31-41-35-35q6-13 10-29l47-12-6-51-49 0q-4-15-14-27l28-43-40-33-35
37q-13-8-29-10l-10-49-49 6 0 51q-13 4-27 14l-41-28-31 41 35 36q-6 13-8 29z
m118 13q-4-21 8-36t32-17 34 9 17 34-10 35-31 18l-6 0q-17 0-31-12t-13-31z
m17 451q-4-27 14-48t45-25 48 15 23 45-14 48-44 24l-7 0q-26
0-44-17t-21-42z" horiz-adv-x="1000" />

<glyph glyph-name="briefcase" unicode="&#xe808;"
d="M456 326l0-100-456 0q8 226 10 292 4 108 100 108l160 0q16 26 37
67t23 45q14 26 23 32t37 6l222 0q26 0 36-7t22-31q18-32 60-112l160 0q96 0
100-108l10-292-454 0 0 100-90 0z m-74 354l-28-54 292 0-28 54q-14 26-42
26l-152 0q-28 0-42-26z m164-604l0 100 430 0q-6-88-10-166-6-84-90-84l-750
0q-90 0-90 84l-10 166 430 0 0-100 90 0z" horiz-adv-x="1000"
/>

<glyph glyph-name="search-circled"
unicode="&#xe809;" d="M0 350q0 207 147 354t353 146
354-146 146-354-146-354-354-146-353 146-147 354z m223-193l90-90 109
109q53-27 113-27 100 0 171 71t71 171-71 171-172 71-171-71-70-171q0-70
37-129l-2 0z m177 234q0 57 39 96t95 39 95-39 39-96-39-96-95-39-95 39-39
96z" horiz-adv-x="1000" />

<glyph glyph-name="terminal" unicode="&#xe80a;"
d="M1360 849v-1000h-1360v1000h1360z m-838-600h318v77h-318v-77z m-362
77l317 135v96l-317 134v-99l209-84-209-83v-99z"
horiz-adv-x="1360" />

<glyph glyph-name="chart-line"
unicode="&#xe80b;" d="M34 284q-42 10-32 56 10 42 54
32l98-24-52-80z m890-12q14 12 33
11t31-15q32-32-2-64l-252-226q-12-12-30-12-14 0-28 10l-286 220-54 14 50 80
36-8q12-4 16-8l264-204z m-490 220l-350-550q-12-22-38-22-12 0-24 8-16 10-20
29t6 33l374 588q8 16 28 20 18 6 36-6l246-156 226 326q10 16 28 19t34-9q38-24
12-62l-252-362q-24-36-62-12z" horiz-adv-x="1003" />

<glyph glyph-name="attach" unicode="&#xe80c;"
d="M0 65q8 68 67 127l383 383q117 115 211 33 84-86-36-209l-353-351-66
70 349 349q2 0 8 6l8 8t7 9 6 10 6 9 4 11l0 10t-2 12q-19
17-74-37l-381-381q-37-35-41-69-4-39 35-78 41-33 70-28t71 46q82 80 218
215t194 195q2 2 18 17t17 17 15 16 15 17 12 17 13 19 11 20 10 25q16 57-33
123t-115 75q-68 7-152-73l-418-418-69 67 418 420q98 95 199
100t190-83q105-107
74-236-19-74-94-150-86-84-246-245l-209-209q-70-70-150-72-68 0-125 57-70
70-64 156z" horiz-adv-x="896" />

<glyph glyph-name="star-empty"
unicode="&#xe80d;" d="M0 471l94 0 285-2 96 270 29 90
29-92 88-272 285-6 94-2-76-54-233-166 82-274 28-92-76 57-231
168-232-162-78-53 29 90 90 270-227 174z m189-64l168-129 20-14-8-21-66-203
176 123 17 11 18-13 172-125-61 203-6 21 18 14 174 125-215 4-22 2-8 21-64
201-70-199-8-21-235 0z" horiz-adv-x="1000" />

<glyph glyph-name="star" unicode="&#xe80e;"
d="M0 471l379-2 125 360 117-364 379-8-309-220 110-366-307 225-310-215
119 360z" horiz-adv-x="1000" />

<glyph glyph-name="attention" unicode="&#xe80f;"
d="M957-24q10-16 0-34-10-16-30-16l-892 0q-18 0-28 16-13 18-2 34l446
782q8 18 30 18t30-18z m-420 50l0 100-110 0 0-100 110 0z m0 174l0 300-110 0
0-300 110 0z" horiz-adv-x="962" />

<glyph glyph-name="docs" unicode="&#xf0c5;"
d="M946 636q23 0 38-16t16-38v-678q0-23-16-38t-38-16h-535q-23 0-38
16t-16 38v160h-303q-23 0-38 16t-16 38v375q0 22 11 49t27 42l228 228q15 16 42
27t49 11h232q23 0 38-16t16-38v-183q38 23 71 23h232z
m-303-119l-167-167h167v167z m-357 214l-167-167h167v167z m109-361l176
176v233h-214v-233q0-22-15-37t-38-16h-233v-357h286v143q0 22 11 49t27 42z
m534-449v643h-215v-232q0-22-15-38t-38-15h-232v-358h500z"
horiz-adv-x="1000" />

<glyph glyph-name="magic" unicode="&#xf0d0;"
d="M664 526l164 163-60 60-164-163z m250
163q0-15-10-25l-718-718q-10-10-25-10t-25 10l-111 111q-10 10-10 25t10 25l718
718q10 10 25 10t25-10l111-111q10-10 10-25z m-754 106l54-16-54-17-17-55-17
55-55 17 55 16 17 55z m195-90l109-34-109-33-34-109-33 109-109 33 109 34 33
109z m519-267l55-17-55-16-17-55-17 55-54 16 54 17 17 55z m-357
357l54-16-54-17-17-55-17 55-54 17 54 16 17 55z"
horiz-adv-x="928.6" />

<glyph glyph-name="doc-text" unicode="&#xf0f6;"
d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38
16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5
17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16
37v233h-429v-858h715z m-572 483q0 7 5 12t13 5h393q8 0
13-5t5-12v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36z m411-125q8 0
13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z
m0-143q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13
5h393z" horiz-adv-x="857.1" />

<glyph glyph-name="lifebuoy" unicode="&#xf1cd;"
d="M500 850q102 0 194-40t160-106 106-160
40-194-40-194-106-160-160-106-194-40-194 40-160 106-106 160-40 194 40 194
106 160 160 106 194 40z m0-71q-106 0-201-51l108-108q46 16 93 16t93-16l109
108q-96 51-202 51z m-378-630l108 108q-16 46-16 93t16 93l-108
109q-51-96-51-202t51-201z m378-228q106 0 202 51l-109 108q-46-16-93-16t-93
16l-108-108q95-51 201-51z m0 215q89 0 152 63t62 151-62 152-152
62-151-62-63-152 63-151 151-63z m270 121l108-108q51 95 51 201t-51
202l-108-109q16-46 16-93t-16-93z" horiz-adv-x="1000" />

<glyph glyph-name="history" unicode="&#xf1da;"
d="M857 350q0-87-34-166t-91-137-137-92-166-34q-96 0-183 41t-147 114q-4
6-4 13t5 11l76 77q6 5 14 5 9-1 13-7 41-53 100-82t126-29q58 0 110 23t92 61
61 91 22 111-22 111-61 91-92 61-110 23q-55 0-105-20t-90-57l77-77q17-16
8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l72-72q60
57 137 88t159 31q87 0 166-34t137-92 91-137 34-166z m-357
161v-250q0-8-5-13t-13-5h-178q-8 0-13 5t-5 13v35q0 8 5 13t13 5h125v197q0 8 5
13t12 5h36q8 0 13-5t5-13z" horiz-adv-x="857.1" />
</font>
</defs>
</svg>css/font/rsticketsproicon.ttf000064400000025714151163531650012445
0ustar00�pGSUB �%z�TOS/2>!S�PVcmap��
N��cvt
fpgmb.�z$gaspglyf�>��X�headEu\�6hhea��$hmtxRg��4Xloca71��.maxp�;�
name&�z��-post&+O�prep~�;�+0�
0>DFLTlatnliga��z��z��1PfEd����R�jZT�,��,
�r����������������������,,,,,	

������������������	�	�	
�
�
����
�
�
����������������������
�j�S,048<@I�@�AL�g$g)#g("

g
'!
g& 		g%gW_O==995511-- 
=@=@?>9<9<;:585876141432-0-0/. ,
,+*&%"!
*+3#!#53%53'53'53'53'53'5354635!%5!%5!%5!%5!>&�C���6T6���a��a��a��a��a���@��@�x�yyy
 y 
`^a)<:)8)^��!!y!!y!!y""y""����@��v+373!�D�D�4�ZZ�5��0G-@*;3&L���v&))+=4?&'47672#"54?.7462!.6'672#54/&�B#%5
1H
r0r��9%.\�ZN=�#���D.#1)#A�v2nj�P'\8/)}p7=��
FV3LllLi5F
�%Yj}+)>R1P
�
�95�j�R$@�v$$+5467>'4&'&'&'&>2tecL6
(^~^(
4Jdٖ�D%#L?V#d4)8@((@8)4d#V@J$P1��� 
6@3���v
	
	
	+2#432#432#543��(��(��(
��R2����&2����2����6�%@"
L	JI�v+?%7&767'67>'�t��Xtvd�dHX�Xtv`�bHXVr�t��VzPxdfHX��Vz��xbhHX�\t����#$@!��Y_O93+&763!2"/&6#!"&5427
N&��:��D"��"�8J `b

b`^
��  p
�

���'0X����@�EVUSQLJIhedc_^TPOKig]%�m$"~}{ytq#L`jKBA@?=<;8765	J|xwsrI		���~~iY_O����on[ZGF32/.+*
+=767'76?37'#'&''7&'7>.%767'76?7#''5&''7&'7367'76?7#''5&''7&'7>&'#">&'#"^<DJa
JD<^^<DJ
aJD<4L26H8@F%61H9-1
DD'8/F;-1%1%$

0)#/1
(#

1
)#E($6* $�aJE=^^=EJa
HF<^^<FH;%62N08�H9-1
BD'61F;-1BF%61�Q2+!%01
)#
3+!%13
)$
.�*&4,"���
-��%	LK�
PX@;�~~
pg
		W
	`		P@<�~~
~g
		W
	`		PY@!!!-!-,+)&#"
$5"+!6;6?>;232!5!'&+"5!#!"5'!�8
`��*�`
�:�$���T�Z
�Fd$l)- Pl��db66��dXNTT�d�i�S D@A
L�~~�YaQ%+4773264&"#7462"&&�(��\���Zm5<d��ʌ%HNpNNpN^�&��^��&Zm�Ȏ�dF;�9NNrNN�iPQ5@2

	LK���v+!!5)%5%P��
>���=����Q��M�`�cTS�����0%@"L'J��v+%+&76%6#"'%'7	#"'.7676>'"*

,b46& "���62$��
v��
$&�&
.*
P  �
�P����
&L�F&��$���l�TB@B10	L�v?=43+5676'2?6&6'5'&676?>76&'&'>"'&7;u^Tx��B]7��%'):*R:bBDT�^E�b�YiKV��FPD9FAD;sRV{��F]		
6��#"''!
)P<

9�	P�^C�_
Xk�JLT��F9FV��=";@8 J

IWg_O""
+37
/7'?'?/^`X{��RL��NZ�q�B��C��@F�Z\����\9��5Z���{��}����=	@J	I�v+
%{}u{��n���w�h������h�����<@9��gW_O



2+#!"'&7625#7#�
��

�,nnn"�$dd�,���j�R"%3<p@m#	'
Lg		gg

gg
W
_O444<4<;9650/.,)(%$"!	+2!"&'5!"&'46?>;2633375##!546#'#�
�����6�&!G������m���&��|
�Z � w6� �w�}�°�����6�N��
�����R$,4,@)20.,*(&$"
L4J�v+7'%"/&4762%/?/?/?/?��<�6
�2

o

�

o
�6677�mm"!mm!)7766��6666�<�g
�2

o

�

o
[777�"!mm!"m��777.777�jYR#3CSv@s,$@8	PH
Lgg	g
		g

gW_ODD44DSDRLJ4C4B<:0.(&##&56+!"&'467!23&/&#"&'5!463!2#!"&52#!"&=4632#!"&=4633�
�6J�����S�
�

�w
�

�w

�

�w

~4�~ |&����< ��

$

Y
$

$
�
$

$
���j�R!*3;r@o985(%)$L	iii
Y
aQ,+#"0/+3,3'&"*#*	+2".>"627&7&47'27'"'726.%64'�f��LT����TL��fj_l.^.m`�ll3�j`m.^.l_jY~z�x�cl33lRP��ȼ�PP��ȼ�PG3ll3��l.^.m`��3ll3�~��x�vul_�`m.^��Y1FZ@W*@%;3L�~�igYaQ#&')5#$	+#"&'&4?632>."+"&'546>32%+"&=46;546;2YDr�V`�<L)vC:hP*.Llod(M�,H<�RW�tB��
�

}
$
^W�tDRIM5:.LjtjL.(%M-�H9>Dt�J�

#
�

/.�_<���m��m���iPTR�jP����P�����
4��������P����������Y�Y���Z����"�d��j��	0	��
T����55EL\lw
+��	j�	 /	O	 ]	 }	�	 �	
V�	&)Copyright (C) 2021 by original authors @
fontello.comrsticketsproiconRegularrsticketsproiconrsticketsproiconVersion
1.0rsticketsproiconGenerated by svg2ttf from Fontello
project.http://fontello.comCopyright (C) 2021 by original authors @
fontello.comrsticketsproiconRegularrsticketsproiconrsticketsproiconVersion
1.0rsticketsproiconGenerated by svg2ttf from Fontello
project.http://fontello.com
	

	clipboardfolderusersuser	chart-bar
arrows-ccwmailcogs	briefcasesearch-circledterminal
chart-lineattach
star-emptystar	attentiondocsmagicdoc-textlifebuoyhistory���,
�UXEY  K�QK�SZX�4�(Y`f
�UX�%a�cc#b!!�Y�C#D�C`B-�,� `f-�,#!#!-�,
d�BC�C ``B�CB�%C�CTx
�#�CCad�Px�C`B�!e!�CC�B
�C#B�C`B#�PXeY�C`B-�,�+�CX#!#!�CC#�PXeY d
��P�&Z�(
CEcE�EX!�%YR[X!#!�X �PPX!�@Y
�8PX!�8YY �
CEcEad�(PX!�
CEcE �0PX!�0Y ��PX f ��a
�
PX` � PX!�
` �6PX!�6``YYY�%�Cc�RX�K�
PX!�CK�PX!�Ka�c�Cc�bYYdaY�+YY#�PXeYY
d�C#BY-�, E �%ad �CPX�#B�#B!!Y�`-�,#!#!�+
d�bB �#B�EX�
CEc�
C�`Ec�*! �C �
��+�0%�&QX`PaRYX#Y!Y
�@SX�+!�@Y#�PXeY-�,�	C+�C`B-�,�	#B#
�#Ba�bf�c�`�*-�	,  E �Cc�b
�PX�@`Yf�c`D�`-�
,�	CEB*!�C`B-�,�C#D�C`B-�,  E �+#�C�%` E�#a d
� PX!��0PX� �@YY#�PXeY�%#aDD�`-�
,  E
�+#�C�%` E�#a d�$PX��@Y#�PXeY�%#aDD�`-�,
�#B�
EPX!#!Y*!-�,�E�daD-�,�`  �CJ�PX
�#BY�CJ�RX �#BY-�, �bf�c �c�#a�C` �`
�#B#-�,KTX�dDY$�
e#x-�,KQXKSX�dDY!Y$�e#x-�,�CUX�C�aB�+Y�C�%B�%B�%B�#
�%PX�C`�%B�� �#a�*!#�a
�#a�*!�C`�%B�%a�*!Y�CG�CG`�b �PX�@`Yf�c
�Cc�b
�PX�@`Yf�c`�#D�C�>�C`B-�,�ETX�#B
E�#B�
#�`B `�BBB�`
�#B�a�+��+"Y-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�+-�,�	+-�+,#
�bf�c�`KTX# .�]!!Y-�,,# �bf�c�`KTX#
.�q!!Y-�-,# �bf�c�&`KTX# .�r!!Y-�
,�+�ETX�#B E�#B�
#�`B
`�a�BB�`�+��+"Y-�!,� +-�",�
+-�#,� +-�$,� +-�%,� +-�&,� +-�',�
+-�(,� +-�),� +-�*,�	 +-�., <�`-�/, `�`
C#�`C�%a�`�.*!-�0,�/+�/*-�1,  G  �Cc�b
�PX�@`Yf�c`#a8# �UX G  �Cc�b
�PX�@`Yf�c`#a8!Y-�2,�ETX�EB��1*�EX0Y"Y-�3,�+�ETX�EB��1*�EX0Y"Y-�4,
5�`-�5,�EB�Ec�b �PX�@`Yf�c�+�Cc�b
�PX�@`Yf�c�+��D>#8�4*!-�6, < G �Cc�b
�PX�@`Yf�c`�Ca8-�7,.<-�8, < G �Cc�b
�PX�@`Yf�c`�Ca�Cc8-�9,�% . G�#B�%I��G#G#a
Xb!Y�#B�8*-�:,��#B�%�%G#G#a�B�C+e�.# 
<�8-�;,��#B�%�% .G#G#a �#B�B�C+ �`PX
�@QX�  �&YBB# �
C �#G#G#a#F`�C�b �PX�@`Yf�c` �+ ��a
�C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca# 
�&#Fa8#�
CF�%�
CG#G#a` �C�b �PX�@`Yf�c`# �+#�C`�+�%a�%�b
�PX�@`Yf�c�&a �%`d#�%`dPX!#!Y# 
�&#Fa8Y-�<,��#B   �& .G#G#a#<8-�=,��#B
�
#B   F#G�+#a8-�>,��#B�%�%G#G#a�TX.
<#!�%�%G#G#a �%�%G#G#a�%�%I�%a�cc# Xb!Yc�b
�PX�@`Yf�c`#.#  <�8#!Y-�?,��#B �
C .G#G#a `� `f�b �PX�@`Yf�c#  <�8-�@,#
.F�%F�CXPRYX <Y.�0+-�A,# .F�%F�CXRPYX
<Y.�0+-�B,# .F�%F�CXPRYX <Y# .F�%F�CXRPYX
<Y.�0+-�C,�:+# .F�%F�CXPRYX <Y.�0+-�D,�;+� 
<�#B�8# .F�%F�CXPRYX
<Y.�0+�C.�0+-�E,��%�&   F#Ga�#B.G#G#a�C+#
< .#8�0+-�F,�
%B��%�% .G#G#a �#B�B�C+ �`PX �@QX� 
�&YBB# G�C�b �PX�@`Yf�c` �+ ��a
�C`d#�CadPX�Ca�C`Y�%�b �PX�@`Yf�ca�%Fa8#
<#8!  F#G�+#a8!Y�0+-�G,�:+.�0+-�H,�;+!# 
<�#B#8�0+�C.�0+-�I,� G�#B�.�6*-�J,�
G�#B�.�6*-�K,��7*-�L,�9*-�M,�E# .
F�#a8�0+-�N,�
#B�M+-�O,�F+-�P,�F+-�Q,�F+-�R,�F+-�S,�G+-�T,�G+-�U,�G+-�V,�G+-�W,�C+-�X,�C+-�Y,�C+-�Z,�C+-�[,�C+-�\,�C+-�],�C+-�^,�C+-�_,�E+-�`,�E+-�a,�E+-�b,�E+-�c,�H+-�d,�H+-�e,�H+-�f,�H+-�g,�D+-�h,�D+-�i,�D+-�j,�D+-�k,�D+-�l,�D+-�m,�D+-�n,�D+-�o,�<+.�0+-�p,�<+�@+-�q,�<+�A+-�r,��<+�B+-�s,�<+�@+-�t,�<+�A+-�u,��<+�B+-�v,�=+.�0+-�w,�=+�@+-�x,�=+�A+-�y,�=+�B+-�z,�=+�@+-�{,�=+�A+-�|,�=+�B+-�},�>+.�0+-�~,�>+�@+-�,�>+�A+-��,�>+�B+-��,�>+�@+-��,�>+�A+-��,�>+�B+-��,�?+.�0+-��,�?+�@+-��,�?+�A+-��,�?+�B+-��,�?+�@+-��,�?+�A+-��,�?+�B+-��,�EPX��EX#!!YYB+�e�$Px�EX0Y-K��RX��Y��cp�B�*�B�
*�B�
*�B�*�B�*�D�$�QX�@�X�dD�(�QX��X�DY�'�QX��@�cTX�DYYYYY�*������D�dDDcss/font/rsticketsproicon.woff000064400000016134151163531650012605
0ustar00wOFF\+�GSUBX;T �%zOS/2�CV>!S�cmap�����
Ncvt
�fpgm��b.�zgasp	�glyf	���>��head�26Eu\hhea�
$��hmtx:XRg��loca@..71�maxpp 
�;name��-&�z�post$��&+Oprep�z�~�;�x�c`d``�b0`�c`rq�	a��I,�c�b`a��<2�1'3=���ʱ�i
f��&;Hx�c`d��8�������iC�f|�`��e`ef�
�\S�`�x�9�Cs�t�0#H�
Rx��An�@E�@HMK)����Wa�Ě��d���*w�ыdkƉ�,��ٛ�/��W˽>gu�w|;����PO�2��
�1��w�O�3���w[���>��
_l�1�h�3�x�!�1f�?J<S��O%�TI�V�٣�Pb(���(�-���)�A��%Jl%��Mi�4�԰s�a�Ldž����`�gM<x�c`@x��Wk[���
�B�ͺ�(cQ��$qb+�eQ%����un�H�M�^���5�_�?sV�O�o�iy��Jܧ�S>�3�Μ�YHhI�~�Rv���.U�=��K���ޏ��H?�Ӣ�W�n�N"&���pD��Mr4��a�
Z�U�IE-G����2I����Y�P!�;�4��t@���P(��\���h��%��GU��5E�ģ�`�4=�룕
�	�H��G���k�\�C��Q���x��dwI�0�	6m0ڈc�Y6,���|$i��י�y/���0�4Ӌ�H^�at����M�8v-�
�$v#]&�1v�t�ѕn�hA��,��x���xq�{��Q~ܤ�����H��TЋhJ�4�|d[�&UL�	9Ȧ�}ɋ�k��_Iا�Z���!te��"�%=7ݍ#�cI��"���ܔ&Mi:x#Q�i��P�
��
�����Zk�9-��y�U��O��$fJ�e��ѣs�"����p�듅4kOq<���D�C�rRM���	!��ȱ�H�J����3��U��4��CGs��B��������
���V�4�R҅�5>��b�`򵈃LP$bЇfZ9L$-"lMZ�ݽ(+
��4w��T�ݝ�{�N�u�W����Rp?ʖ�rR�=�r(-?��?�!g�(6zQ�ჿ��څ��¶1v�:o�M��t`�'�uF
3!�
�BA�9�c�U�"�p/�%�ː�Q~s�p���?�.9bQT���e�9i�<�ѧ��4µk^�.��ay	�f�5�Y>��KWge��uVa�u�M����i����9��V�S%A��l��ߖ&�c�+�ŏ�b����d�c�(��ޙ~©[W����ោ]O�?�
���
�X6��U�����5���[���c�Ҳm
����K�D�s������5���G�q��U��3���
ō����v��l�r��3kY٩��"{�ܱ�Ź������q��_Չk{�-</V�%�o���n85��&�N��%�h��u�ݤ��FEa�A)+
ْn	��ᰣ:�!>t]�H�S[F�o�w��E�Jh�
C�f�O��`�RR��8�I�l��1[R�=es':*ɲt�J��b�;���2;�vB����p���R)H��xT�\
R8�N�������m�XA�6�X3�т�NQ�lO���
e\�+��D6��F�w�/u���XH̖W�X�6���d�f���R��I�i{QK����d��TP������.6��U{�-�%��1K�q���y��q�7�?Z�m�D=o�lǭl�Yƽ}����;�ꟺ�I;M��')��t��6�18u&	m�:v��e��U�h�u�T�p���:��[3��?�t�U�����B�:V/�8���|�G�U�n{u��%�f��A�^{|��W[t���3�8�Y����kz�
�b�p�m<��h�����
�o��=���9ff���cN`�9�3��w����0���b}�ع@v�-�9��f�A�0Ϡw�g�{�3HX'��u2�g���y`��a�9�g��������.F?0v1�����Cc�������Ljq{����m~d�+�s�����xks��,d��
��9���&��Ҍ̎Cyǯ,d��qNN���L���L��w&�ތ�����G��	��	��	���y5#C���L���L�v�ZȄ��L�T�Λ/[���R��&���h���W{��Ǻ�%�A��x�}Wl�u}��wg��3��3���w�˟�̒�oE�4M�)�b%��)JfL�%eE�)9�h
�\�1l7M#�1,�E5��H�Ƶ��N
ß��"h�Tr�;����h��y�޾7s߽�{.i
ds����M��K��
a#m��I7�#ry���m�D%�9�X����"
�R��#{B�i'��Ӱ)ۘ`ܢ�^�A4�8��Eׂ|&c��r�K(�D�������R����=�D�AMS����Jep�����wk���]���]�B����sKG�-���bf��H,�6�p�Q34C(~��S=^�Wn�}�U篅��B
�&�T��fJ�@��~KE+
�&PJ2_���0e������7^��;cMY@��߁�_�n_D�ZP?�<QY���Sgb���x?s�s}tk�;7��D�'�����8ȣO`�~�\��A�D��(F�`�fgD��r|���r�H�_~֋�홙��`�s�F_%:�N�^i�-���
��SB��9�0p���f8���|����`f�e��7x��/RI�T�P.Zy=�	1Л�D��uf:��iB�T���χh*S�ŻF=
�;���?ד�k3�_��Ƨ��w�R]�Զ˾�J��w��?��߽%G����Ų�L��41��KK�#����ai�O�ikn`�kB���gz�%���E�3I�$X	8�C�{i���^o
��-����G�����;[9��{�`qUb��<�:۬PVR=|���?!8�IU��(��bN�47W��\q>��i���'�.�b�y��3q"�i�R�#pN��s"����4o��\@��7�
.UR8��
��Z@��)�X`~�	���=�f��/L<��_a&�Qm�WԬ�ܸ�'t��)c���4�L%�1po
��`Ldq訕����AP3eӇ`0�'莗�5�	?8a�۾��S��>^���=Kaw��N�({�
����}7�v�i���T�.tԳt
=�"�J�1R�&��4�
��;����V�Y�
��/�g��YU�S��YR�����8b�7}�"����+̰�T�?R����}ţ�qY��Iҡ�YI��U�q�iқ����c�^E,�$�giY#_#��k������Ȟ?ؽ�:v���r3��/��{`vjb玀D�̑�{2AN�g���p#��z��N|%���9��
�C�*��}�H�%�k�S'8�]�E\���5"R�����]%�V���s�P�4�.
@a�7���'�?���;G
�-�-�hH�
<��lٰ�`�F��Ѝ��EO��$ٲ�-k��v>�So�ǩ7��[󳥛�r���W�k��M%y�緳��ox,�$��Bc�}�0;+(�!�X��yj�vCE=�KȣTW{ڻ$:,�r�{��G4���Kd3|/�2�E�T<�X�g��]�iN�PW���;�`s��x5�c�V�����cw��
�c�1Z�mt
�u�
5�f,��d�߾e;T�m3n�1��2�ޕW<���H;�.^
��O�[��h[�mDY�#��j�E4�m4Y��"	�8i'����P�q�ab_��G8�5pD�Q
���-C�q��n�˽�k��ܮ�p��D��|�M�M�'��Zsf*o
��Ƞ/]J�2&e$�V/
4��qW��D�Y���R�R3�v���]T��|�<���s�do})�y.r��,?�ᛑ�
��Cz)�ky�`|b�`YVh��}�SS/��}w��W�D"�8�l��+PN�L��ǰ��(�Q�,�CV���b�L;��
>����3~��&�"a�+,)e����f�hF��
5>i�	���?��۟���r�o���z*CGǏ��f�	Ljh��R�3���|���3=������vs�.���K����qK.[UD~��L�9WK�q�D�1s����V@=�R2�L���W������o��w�]�A����h��{�v�^7�y�Ygd�
�f��߉�!�q����L�Jk&Ƞq(�|��#'����np�Z�X������d�$�*2�lz��u�O��O�|�Âhf��	y<�(����|����V��zЄ���"'X���O<��Ȳ?��7~���)Ӫ��0��i�O]��ߛK�s�"M��PW�K�jj��X��\���d��h!d!?H-�ʖ���Z�7t�A�e�tƲP�K=		ɬY{��g�N���{(/
��/ۏeX6���2	���:�r����={�x��#1��=����
�����܃�EF��2��r
��^6�G���s�%Lس��Ҿ?<3V�z��3�AA6E���ܚ$��nL�d,��5E�H�D1�#��3���I�@w�|��E��P	��_6�
�7���l�z�>;[/�B�\S�>x�~{2R��k�M3�~�&]U_���.VFDx��<��w��7�{.�X���xF����ɏ��,
���u
W����%�Kt.��[C?:vqa@�2�>���?�o�t^u�������3�y9�gȡ���Uz�s��X�cqN�x�0�C;U��A�T��kP
/"�9�a,9XHf�T�������i�g}R�^���ѣG�JR�)���m���@��.���֨1�K��6;VYN�E�q*pHLA�_�;\q-�:���b�$��2u���e�:/;�
;�E
žb_o�U�r�-לI'!C��x��\W��&ES��\���,�
^(�P0ʸ;���jfP�N������q���ʯ��~
��ĝ�.��_��|��Q�:Duj�5��Gp�Lm�Ÿ'u�kE��m���/����:>�gt���]��`����`^@_1�j�6�f�*�|gG[K��Nƣ���(V%[�P�-c��(g��&ԥbщ0�[�1��`��>�R�K`Iy<b�K��Z�![����������r�氣��/���w����uV₨��/)�*��'�U�e�	�q:n�R��"3�{�c��B\l'��J�
녶4j�J7]�Tr�U�%K�ŚQB����'M���v�2��Ĺ�'�n/6��j��.����Óձ��P��Ύf3�
���V��N�B�>��BL�_M�@����w
����>��J�*|��=jl�j(��c��������$���$�'����u����HW�bpc�����_�������/���2|*H��v&OKb���3��ִ=�C��&�
I����{���A?��F�����y^h�P�ϥ)�q�y�e�G���3�7�cy|�46,t�eW[k*�S�tni-��f�%Ղ%\���%O�F�&;�c$	�lBq��5��5��r���"j�"v5��מ��Sko��)���k�-X��X��#K��T��\�[Ɓ��ӫ���½K�’�LN���?<;q���P[��d}������^]cO����ҁw�G�Z>�+ħ�t�2S���"S�PV��*
,E�eDv���b�<��;,eDk��X�8�%���t�+efs%#e�]|�4�:3����"
���A�XR�<�F_���Gi)�s�%�י�����]�c�*�����[O�Ў����w�~�W�6u��[�{�}bȾ
��8�8]�����]����_��Q]<�X�h�ܭ����7�30|��c7�E)Q�[l��J~�x�c`d``b}�g[�m�2�3��0�ɕ���������r00�Dh�
#x�c`d``�������@
�h_x�c~���t����Vb����[�I�5H������o�������
���i�����Z����"�d��j��	0	��
T���x����J�@��Ԫ؂���9�EHۀO��^�COzH�m�6͆Ͷ҃g�—�g�	��,�M��4a�o����I���%ǚ=1Zs
��v�C�N~t��&2�{�ώ����&N�����	>{��C������:���.N�7�{��x_��8����X�4N���[t������<�$��D�Rz2ֹUY��H�Li�h�lY�F:P�<ͦތʔ�Υ�w6�nU�Lh�h�{��k�26z&7n_a�DE�O�-����A�0H#����w�G�4d�0s��"G�"|�Y�T3%�ǘQN����}D|Ϊ��S�YF��̪�6�zW5[���hW9i	���Ͷ�[ڼ��F���X�t�e��.MՕ�f�_qkNh"z�����
m�|�:��x�m��n�0���m��-�
��r!����h��
^;��<�٘'��	laѠ�<^�7�q�;>p�'��~��/}&�1�A���b�x"��'���o%0��L1Y���z�22�!�)pTN2tUt�%�<Hq��j%�|��A�K]�C�=�Rc^쐹43�#ww
U~k��(�5��)��u5��>@�x�c��p"(b##c_�Ɲ�؝620hAh.z'7k'3��FƎ��

~��F
D��%Rz�:HhG#�CGrL62�i�`�ߺ��w#��f�6�*css/font/rsticketsproicon.woff2000064400000013730151163531650012666
0ustar00wOF2�+��TV�0	�
��.6$X
�-���'Eb�8v�Q1���In�4d�"�A�M#Lp/O{hƒ`�y�a��A�I,��q��
��aɡ�2��;�ŐY��S!H���FPyUG�������}����s_���[��l�d�p[<Z
�n�E5�j^�Β�2�2�9��;�ϼ�mvG��D5��IY1�|��B�m�m�]T���]RP��2N,��)�c�Ib�#:َ��l����R�+?�o�2���
%����2�]����9˥+aR
ܺ'T��P����R��d;@�����
Г��]n��)W�]�Fj�be��ƨ���R.S��ojI�i�ε.x�v���367���m��E�n�G�d��N�SJ��kv�^PX^P�	������8�RՈO�ct�A*?�6+R�A�v��
��Ub
Zy�p�V��&s&Ԝ�)ە�j��CQ@�n1�5/Z��.�<���������i�i�����*rW%�S^�
3���s�<�h�@�Y���<�����&��O��y�˚��`Y'�Z̾�?O
���)(��p册PQ1R"��e6	�0�2L��*æ�p�2\��*ç��2B���*#��H�2R��l��
F>�o�Q���Q����?e
��A�0����E6n0t����X7ˢ�4�����i���X���B��;���P��!��\&���]ڔ�|ቮ/��`N��`vs�^MZnkc��n����(�~���L}�V�"W�,�ŕ�&$0������#5R�_���v����,���Xn��W��796�mz�R��kQ���*�����X����L���U<�
�!H1�m�d��N{�ꮡdfr�i��dDmxc�c�#ZG{���G�����w�<޼�6B�a]������0�3M�d,`�l��)M��ʪ���B�5y?�6
����ӌ/s8�i�b��`^��d�1��n
����J�E���+�)�
C¾��I�6����SP@�'�7sk���l06қ���Q�����>��@<b
aL�<��ؼ5j�u�(ܖ��SpT��%ׅ���Hu�7X5�!�]nT��ܚ�I��ڼ:Z�8E�z�=yK'�66����X4�SO�`�Gnk��jO�9{_�5V)�TA|��뒨��߮�B�f�${�M�sj�TFJ�8��	ԣ	�6d�z��_R��I�ShK���y�S�'7�����SwѨ<�0���D��?a�]��
����0�����p"@J�e!��6o�XA�Oʛ�-�{��-̟M���`�J����
g��9�p.:�����p!:\���%�V@�V�'&g骪��,RfE�v�B�
��9VCd(�,j�֗���*c9����J�E�^+F�~�-�k]��}�
ߴ^�w�R}o=��"��W�E�.�Զs�l���P�P��Q=�wlb+@��7���^*�ؓRZk�>�)�N�7m�ݤP<���[����W?�,A�Dm��9kV��|�	�ck^�����䊺�>I��ù���٢�a�[vm�4s�$�v�5o����2Պa�kW��`��u�ì���Jy�(��S��WL�V
R�*⽍ϘC����Kٜ����Y�0��`�@��-��D�;Q��`��mH��ܚ�.T2�ִ�&!�kOY�o��3݉��to�9�ώy���<�d���Ry�/��2�d>Ve��Nd�]��7�ϼ[�Qs�=`K�,�l
M���*�MleXV�ʆ}y���U^_��̛-����UR�t��(��{x��O1�`a�x��s^��͕nu�˰<"j����u��C^���Z<��#۰vC���@���0�w8�u(�J%�fn��1$��ѻ�8Zȁ�D�d<ET���!9#�'�sD���"�x�P�8�/
��C�
W��5C��0���$x���M�#rG��O����F'��}����C��#��c����S���`3x���O�2_�.���6���+'���B�����V�������n���}���3%�ҋ�phn��6��m���I	��$�A����n��s:�(�ߔ�����W{���V��SPkl���o!K��u��L��h��-×�B��ya:����I�,D�����"δ��M<�n��"AY��N\��i���2�:��~\M)���H����C�{��C�kl�'D[�H�>��R�yzv�cb���I@	��\�Ν�v�l"L�H(4�sEu���H�����;��w���n�F�D��2��+������/!ځ�'%���2¶�v/��:��Ƶl�VtW��6��y�n��d�ֽ�C���Α=�[��Xy�0JJi�|��,�$��GK��X[��:�Rg�#�5�ӄ�r�����@x�E��<��K�3��^�\���.��q��Mڧ�m���:�&°��q)�:�;1����=����u�l1���΋*5z6��s���VjKP�p���G���X��^�qi����r
ʳ����]ɺ���U�r��`���- iF)
x�
͟�|x���G�?���f�F�8g�4c��'�a
$�A��ʹgw���x��o�j/o�BY��6)W�0L�3�}q�x��8���Y[*$+�iKKˤ�l�2�t�'��u+�)���g�"�ym*�G��R"��5�68����8��<�D���9B,�+y1D�01Yg2*�ghuy�\�PY�ڥ��X`F�ֽ�8���>&sX+c��h�x���q��2�����X��
��\#��N����;��B%��vj�RP_'�$��C@��@7��՗�V��ǁ�!Ѽ�?�z���~*Zф&�0y�"��[L�	�e+x�$�_�2�d�a�Ylh?RH��^�b�Tp�ٝ$S�V=ZB@��v�-�٬U�Ji7��4�P$���Ɲ��Y�?�m��L�?@��}Tf>���X�*��F�֛�n�J�+�ča$���7+�M��E��������yY`.�n.,�y�=�[Z#��^����_h���'�{VI�Iο�ܫ�3)�������x���;�go5�����q�����#��y"%�ڔS�R�*z�A���C��L�>ΖT�:�z�-b2�w�1��=ƚׅ3kE�x[�:�֧�+9ّ#�Ҏ:k6�Q��.��*����Ys�H9�%&j����A�<�ș�3.|y���7����a!g�:����Z�i�FcuB�j�
F�5�v�"�:7�\��P^�Η����C��Ͻ����"��MDq���gwg��0��ݷa����ι�D�41j�&�@�/�9�q���ֺ96�����#�o��:o
�\������+N]��"�{����#	�����������ɑ��2�n���5����P�v���ϡ~Q{���O#��;c��ʏ�&�3p����G�=��y�K�N݉�
����px��q,���L{.�+��	���}�=
m�Y����ݮ>�s�	���Š=�����,�J��C�}��|}@O䘻�v����SS��]����u�V��P��SS^�i��P
!3�
�8&5�*jyq�2�D�D�ؓ�7�wFM�	�Q�2.̻��末�γ~Z�1!�qg��	�é�C��n!���و�x�?�:�7+��եo*�Ȃ�mŅ�|d��py�E`y�vt,⇔��z3ҜH�����s�����$����1颱���;�l���krMLJ��FF'&d�4P�R&CC{!,"�s�y�SV�,Å���q���T;'��`v�)Z�p�ªE�8;l�}�m�M}��
�(�W���Z�k����9A�;\G�f�slld<��ik�FEzu�^�w�K�u��ª��
����uNirJ�)o޵k������ßm��/�?�r�Q!��%�9�⹲��m�D3q�S߃}ܾ�:���SnQ:S\��^_�Y�A�<�F��rY<�K/�
]�Y�bڋ��i������B?$�NMŕ:�rФG��^�>�]�ۇ[����v!�?�g�z��k�v��]�Yv*mŒ�s�[Y纗\J�>�]f���.�>�RyU����U᫚�"�;Cu���U��f,�*Դ��ûSi����v�@��SK%�!�$�D���ko(�%C�����`Fd��Q���Υ�pID9/-9���*���y�}J�S
�o'1�o�QP�8��	It��!M�߸>����:o��L�Ґs���\�0�/�{c�}[<�j��Q��iAUA[����qɔYQ6S![L���q��3���t�/p3&X�	���ql]6�σ�\�	����oOO���eQ�y����܊}z�^��G��߬�1oֺd�\���E�V{��Ե�
�e*�U�H��#�i�'h�
+��\h(k����ki�:ˇ3�	al����iM�=g�W9
�����<Tm����B��;�<��tl�3xlo�@�v���Zj�b�\��7�8rMIɁh���io�[�NNО�yh�=f��>�}r�;u�<!sZg����Y)I�.�I��ZMQ�2=-�B˃���c=}�S�>���K{���;��
�R���طחLJ�)�ß[��&�Cc���ٲ�#X��
�

y���L�AL��dYY_�����u�4	$��k!����]����Gf�1pC��O�?�Q��R��y�
�NL���t>�a7}1����^>��4�MYdq
^�:SK�kO���D"�T�����I��
���"�	��l{�&V��@˳���'tDEԗq�9�	�Y�b�5k�㧗G�]�-���p"
s�]Z{L�&��M����v���3l²��T�s��e�G�0��z$

��	�m�n��8��wI&&I�^:Tj�e$��pJUjt�8�����{(��)�M5��dK���>��^�Zo��{�@`!���
40pj\E�xp���D"�
��������ܚ������<p�,X̢���A��y�]S�%��0L����0o��zgUG�ev��	�p�
b�@P&m�����IA��7K
���a�����JE�0�͒f�$�~D�Q���5a����]O��Y=�`�.�N6?�ir�-����+��<b?��Yq��<��H/F�t�tr�X�	X�r�N׶)�rplӷ|ѣ�J���5��13�K>V�������xA���,[��yK�6`��q�89�i��-�J���������)�Ki*���e���a�#����mj#�(��@5�(7
o��;v�߷�n��9?�i���ߒ<&�.5.�s���o����G,/�\w�IBE<��O�>�"-���l���8)`�;i;ʄ,��8��pSȬ�R�vN2t��I�sM�#�`	���$��
�9P���Z�yX��{-jh�g���յ�Z�������5�%u�����Dn��3��Z���Y�H�kЪI�r�<,
��@0>%Zy�bە���f�W�U�:Gd�:�,�ʚ'�iu��Uj㪕��[�kbh���T�ː���Ty�IWJ��
�c�B׍��Kߡ]�P�YH�R���nZ���
_�6WVQ��:h�J�'��pztۦAp�vBL��G\�ė@B�$�DR�r�5��Q�F�''m�,�)��4wS�T�y�N^	s	B0zO�1�x�;�4��:<9(�6�vk��H��:���t���(�y�BUx�N(m�F��x,��!p�K��X\n���Dž�qtV�8܉q��-��
�y��s��G8���EKN{@M���V���&b���>�(���Hz^��k&���h1��css/icons.css000064400000005544151163531650007177
0ustar00@font-face {
  font-family: 'rsticketsproicon';
  src: url('font/rsticketsproicon.eot?37506999');
  src: url('font/rsticketsproicon.eot?37506999#iefix')
format('embedded-opentype'),
       url('font/rsticketsproicon.woff2?37506999')
format('woff2'),
       url('font/rsticketsproicon.woff?37506999')
format('woff'),
       url('font/rsticketsproicon.ttf?37506999')
format('truetype'),
       url('font/rsticketsproicon.svg?37506999#rsticketsproicon')
format('svg');
  font-weight: normal;
  font-style: normal;
}

 [class^="rsticketsproicon-"]:before, [class*="
rsticketsproicon-"]:before {
  font-family: "rsticketsproicon";
  font-style: normal;
  font-weight: normal;
  speak: never;

  display: inline-block;
  text-decoration: inherit;
  width: 1em;
  margin-right: .2em;
  text-align: center;
  /* opacity: .8; */

  /* For safety - reset parent styles, that can break glyph codes*/
  font-variant: normal;
  text-transform: none;

  /* fix buttons height, for twitter bootstrap */
  line-height: 1em;

  /* Animation center compensation - margins should be symmetric */
  /* remove if not needed */
  margin-left: .2em;

  /* you can be more comfortable with increased icons size */
  /* font-size: 120%; */

  /* Font smoothing. That was taken from TWBS */
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;

  /* Uncomment for 3D effect */
  /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */
}

.rsticketsproicon-clipboard:before { content: '\e800'; } /*
'' */
.rsticketsproicon-folder:before { content: '\e801'; } /*
'' */
.rsticketsproicon-users:before { content: '\e802'; } /*
'' */
.rsticketsproicon-user:before { content: '\e803'; } /*
'' */
.rsticketsproicon-chart-bar:before { content: '\e804'; } /*
'' */
.rsticketsproicon-arrows-ccw:before { content: '\e805'; } /*
'' */
.rsticketsproicon-mail:before { content: '\e806'; } /*
'' */
.rsticketsproicon-cogs:before { content: '\e807'; } /*
'' */
.rsticketsproicon-briefcase:before { content: '\e808'; } /*
'' */
.rsticketsproicon-search-circled:before { content: '\e809'; } /*
'' */
.rsticketsproicon-terminal:before { content: '\e80a'; } /*
'' */
.rsticketsproicon-chart-line:before { content: '\e80b'; } /*
'' */
.rsticketsproicon-attach:before { content: '\e80c'; } /*
'' */
.rsticketsproicon-star-empty:before { content: '\e80d'; } /*
'' */
.rsticketsproicon-star:before { content: '\e80e'; } /*
'' */
.rsticketsproicon-attention:before { content: '\e80f'; } /*
'' */
.rsticketsproicon-docs:before { content: '\f0c5'; } /*
'' */
.rsticketsproicon-magic:before { content: '\f0d0'; } /*
'' */
.rsticketsproicon-doc-text:before { content: '\f0f6'; } /*
'' */
.rsticketsproicon-lifebuoy:before { content: '\f1cd'; } /*
'' */
.rsticketsproicon-history:before { content: '\f1da'; } /*
'' */css/index.html000064400000000054151163531650007336
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>css/magnific-popup.css000064400000017756151163531650011012
0ustar00/* Magnific Popup CSS */
.mfp-bg {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1042;
  overflow: hidden;
  position: fixed;
  background: #0b0b0b;
  opacity: 0.8;
  filter: alpha(opacity=80); }

.mfp-wrap {
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1043;
  position: fixed;
  outline: none !important;
  -webkit-backface-visibility: hidden; }

.mfp-container {
  text-align: center;
  position: absolute;
  width: 100%;
  height: 100%;
  left: 0;
  top: 0;
  padding: 0 8px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box; }

.mfp-container:before {
  content: '';
  display: inline-block;
  height: 100%;
  vertical-align: middle; }

.mfp-align-top .mfp-container:before {
  display: none; }

.mfp-content {
  position: relative;
  display: inline-block;
  vertical-align: middle;
  margin: 0 auto;
  text-align: left;
  z-index: 1045; }

.mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content {
  width: 100%;
  cursor: auto; }

.mfp-ajax-cur {
  cursor: progress; }

.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
  cursor: -moz-zoom-out;
  cursor: -webkit-zoom-out;
  cursor: zoom-out; }

.mfp-zoom {
  cursor: pointer;
  cursor: -webkit-zoom-in;
  cursor: -moz-zoom-in;
  cursor: zoom-in; }

.mfp-auto-cursor .mfp-content {
  cursor: auto; }

.mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter {
  -webkit-user-select: none;
  -moz-user-select: none;
  user-select: none; }

.mfp-loading.mfp-figure {
  display: none; }

.mfp-hide {
  display: none !important; }

.mfp-preloader {
  color: #cccccc;
  position: absolute;
  top: 50%;
  width: auto;
  text-align: center;
  margin-top: -0.8em;
  left: 8px;
  right: 8px;
  z-index: 1044; }
  .mfp-preloader a {
    color: #cccccc; }
    .mfp-preloader a:hover {
      color: white; }

.mfp-s-ready .mfp-preloader {
  display: none; }

.mfp-s-error .mfp-content {
  display: none; }

button.mfp-close, button.mfp-arrow {
  overflow: visible;
  cursor: pointer;
  background: transparent;
  border: 0;
  -webkit-appearance: none;
  display: block;
  outline: none;
  padding: 0;
  z-index: 1046;
  -webkit-box-shadow: none;
  box-shadow: none; }
button::-moz-focus-inner {
  padding: 0;
  border: 0; }

.mfp-close {
  width: 44px;
  height: 44px;
  line-height: 44px;
  position: absolute;
  right: 0;
  top: 0;
  text-decoration: none;
  text-align: center;
  opacity: 0.65;
  filter: alpha(opacity=65);
  padding: 0 0 18px 10px;
  color: white;
  font-style: normal;
  font-size: 28px;
  font-family: Arial, Baskerville, monospace; }
  .mfp-close:hover, .mfp-close:focus {
    opacity: 1;
    filter: alpha(opacity=100); }
  .mfp-close:active {
    top: 1px; }

.mfp-close-btn-in .mfp-close {
  color: #333333; }

.mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close {
  color: white;
  right: -6px;
  text-align: right;
  padding-right: 6px;
  width: 100%; }

.mfp-counter {
  position: absolute;
  top: 0;
  right: 0;
  color: #cccccc;
  font-size: 12px;
  line-height: 18px;
  white-space: nowrap; }

.mfp-arrow {
  position: absolute;
  opacity: 0.65;
  filter: alpha(opacity=65);
  margin: 0;
  top: 50%;
  margin-top: -55px;
  padding: 0;
  width: 90px;
  height: 110px;
  -webkit-tap-highlight-color: rgba(0, 0, 0, 0); }
  .mfp-arrow:active {
    margin-top: -54px; }
  .mfp-arrow:hover, .mfp-arrow:focus {
    opacity: 1;
    filter: alpha(opacity=100); }
  .mfp-arrow:before, .mfp-arrow:after, .mfp-arrow .mfp-b, .mfp-arrow .mfp-a
{
    content: '';
    display: block;
    width: 0;
    height: 0;
    position: absolute;
    left: 0;
    top: 0;
    margin-top: 35px;
    margin-left: 35px;
    border: medium inset transparent; }
  .mfp-arrow:after, .mfp-arrow .mfp-a {
    border-top-width: 13px;
    border-bottom-width: 13px;
    top: 8px; }
  .mfp-arrow:before, .mfp-arrow .mfp-b {
    border-top-width: 21px;
    border-bottom-width: 21px;
    opacity: 0.7; }

.mfp-arrow-left {
  left: 0; }
  .mfp-arrow-left:after, .mfp-arrow-left .mfp-a {
    border-right: 17px solid white;
    margin-left: 31px; }
  .mfp-arrow-left:before, .mfp-arrow-left .mfp-b {
    margin-left: 25px;
    border-right: 27px solid #3f3f3f; }

.mfp-arrow-right {
  right: 0; }
  .mfp-arrow-right:after, .mfp-arrow-right .mfp-a {
    border-left: 17px solid white;
    margin-left: 39px; }
  .mfp-arrow-right:before, .mfp-arrow-right .mfp-b {
    border-left: 27px solid #3f3f3f; }

.mfp-iframe-holder {
  padding-top: 40px;
  padding-bottom: 40px; }
  .mfp-iframe-holder .mfp-content {
    line-height: 0;
    width: 100%;
    max-width: 900px; }
  .mfp-iframe-holder .mfp-close {
    top: -40px; }

.mfp-iframe-scaler {
  width: 100%;
  height: 0;
  overflow: hidden;
  padding-top: 56.25%; }
  .mfp-iframe-scaler iframe {
    position: absolute;
    display: block;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
    background: black; }

/* Main image in popup */
img.mfp-img {
  width: auto;
  max-width: 100%;
  height: auto;
  display: block;
  line-height: 0;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
  padding: 40px 0 40px;
  margin: 0 auto; }

/* The shadow behind the image */
.mfp-figure {
  line-height: 0; }
  .mfp-figure:after {
    content: '';
    position: absolute;
    left: 0;
    top: 40px;
    bottom: 40px;
    display: block;
    right: 0;
    width: auto;
    height: auto;
    z-index: -1;
    box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
    background: #444444; }
  .mfp-figure small {
    color: #bdbdbd;
    display: block;
    font-size: 12px;
    line-height: 14px; }
  .mfp-figure figure {
    margin: 0; }

.mfp-bottom-bar {
  margin-top: -36px;
  position: absolute;
  top: 100%;
  left: 0;
  width: 100%;
  cursor: auto; }

.mfp-title {
  text-align: left;
  line-height: 18px;
  color: #f3f3f3;
  word-wrap: break-word;
  padding-right: 36px; }

.mfp-image-holder .mfp-content {
  max-width: 100%; }

.mfp-gallery .mfp-image-holder .mfp-figure {
  cursor: pointer; }

@media screen and (max-width: 800px) and (orientation: landscape), screen
and (max-height: 300px) {
  /**
       * Remove all paddings around the image on small screen
       */
  .mfp-img-mobile .mfp-image-holder {
    padding-left: 0;
    padding-right: 0; }
  .mfp-img-mobile img.mfp-img {
    padding: 0; }
  .mfp-img-mobile .mfp-figure:after {
    top: 0;
    bottom: 0; }
  .mfp-img-mobile .mfp-figure small {
    display: inline;
    margin-left: 5px; }
  .mfp-img-mobile .mfp-bottom-bar {
    background: rgba(0, 0, 0, 0.6);
    bottom: 0;
    margin: 0;
    top: auto;
    padding: 3px 5px;
    position: fixed;
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box; }
    .mfp-img-mobile .mfp-bottom-bar:empty {
      padding: 0; }
  .mfp-img-mobile .mfp-counter {
    right: 5px;
    top: 3px; }
  .mfp-img-mobile .mfp-close {
    top: 0;
    right: 0;
    width: 35px;
    height: 35px;
    line-height: 35px;
    background: rgba(0, 0, 0, 0.6);
    position: fixed;
    text-align: center;
    padding: 0; } }

@media all and (max-width: 900px) {
  .mfp-arrow {
    -webkit-transform: scale(0.75);
    transform: scale(0.75); }
  .mfp-arrow-left {
    -webkit-transform-origin: 0;
    transform-origin: 0; }
  .mfp-arrow-right {
    -webkit-transform-origin: 100%;
    transform-origin: 100%; }
  .mfp-container {
    padding-left: 6px;
    padding-right: 6px; } }

.mfp-ie7 .mfp-img {
  padding: 0; }
.mfp-ie7 .mfp-bottom-bar {
  width: 600px;
  left: 50%;
  margin-left: -300px;
  margin-top: 5px;
  padding-bottom: 5px; }
.mfp-ie7 .mfp-container {
  padding: 0; }
.mfp-ie7 .mfp-content {
  padding-top: 44px; }
.mfp-ie7 .mfp-close {
  top: 0;
  right: 0;
  padding-top: 0; }
css/main.css000064400000011773151163531650007011
0ustar00#rst_files_container .rst_file_block {
	display: block;
}

a.rst_flag {
	background: url(../images/favorite.png) no-repeat;
	display: block;
	width: 16px;
	height: 16px;
	padding: 1px;
	margin: 0 auto;
}

a.rst_flag:hover, a.rst_flag_active {
	background: transparent url(../images/favoritehover.png) no-repeat
!important;
	text-decoration: none !important;
}

.rst_delete_ticket,
.rst_notify_ticket {
	margin: 0px !important;
	padding: 0px !important;
	background: none !important;
	text-decoration: none !important;
}

.rst_categories {
	list-style: none outside none !important;
    margin: 0 !important;
    padding: 0 !important;
}

.rst_dashboard_items .thumbnail > a {
    display: block;
    text-align: center;
}

.rst_dashboard_items .caption > h3 {
    text-align: center;
}

.rst_dashboard_items .thumbnail {
	min-height: 200px;
}

.rst_center_block {
	text-align: center;
	display: block !important;
}

.rst_center_block ul {
    text-align: left;
}

.rst_dashboard_center {
	text-align: center;
}

.rst_dashboard_kb {
    min-height: 250px !important;
}

#bulk_actions th {
    border-top: medium none;
}

/* media */

.media,
.media-body {
  overflow: hidden;
  *overflow: visible;
  zoom: 1;
}

.media,
.media .media {
  margin-top: 15px;
}

.media:first-child {
  margin-top: 0;
}

.media-object {
  display: block;
}

.media-heading {
  margin: 0 0 5px;
}

.media > .pull-left {
  margin-right: 10px;
}

.media > .pull-right {
  margin-left: 10px;
}

.media-list {
  margin-left: 0;
  list-style: none;
}

.com-rsticketspro-has-top-padding {
	padding: 1em 0;
}

.com-rsticketspro-has-top-margin {
	margin: 1em 0;
}

.com-rsticketspro-has-margin {
	margin: 1em;
}

.com-rsticketspro-has-overflow {
	overflow: hidden;
}

.com-rsticketspro-avatar {
	margin: 0.5em;
}

.element-rsinvisible {
	display: none;
}

.rst_custom_field label {
	float: none !important;
	margin-right: 5px;
	display: inline-block !important;
}

.rst-magnific-popup {
	background:#ffffff;
	margin:20px auto;
	padding:20px;
	position:relative;
	width:80%;
}
.rst-magnific-popup iframe {
	width:100%;
	border: 0px;
}

@media (max-width: 767px) {
	.rst-magnific-popupp {
		width: 70% !important;
	}
}

@media (max-width: 480px) {
	.rst-magnific-popup {
		width: 85% !important;
	}
}

@media (max-width: 320px) {
	.rst-magnific-popup {
		width: 95% !important;
	}
}

#rsticketspro_remove_data_and_close_account {
	display: none;
}

.pull-left {
	float: left;
}

#rst-timer #timer {
	margin-top: 7px;
}
#rst-timer #timer .clock-wrapper {
	display: flex;
	justify-content: center;
}

#rst-timer #timer .clock-wrapper span {
	font-size: 30px;
	font-weight: bold;
	transition: all .2s ease;
}

#rst-timer #timer .clock-wrapper span.dots {
	margin-top: -5px;
}

@media only screen and (max-width: 768px) {
	#rst-timer #timer .clock-wrapper span.dots {
		margin-top: -3px;
	}
}

/* outer */
.com-rsticketspro-progress {
	height: 20px;
	margin-bottom: 20px;
	overflow: hidden;
	background-color: #f7f7f7;
	background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5),
to(#f9f9f9));
	background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
	background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
	background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
	background-repeat: repeat-x;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	filter:
progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5',
endColorstr='#fff9f9f9', GradientType=0);
	-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
	-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
	box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}

/* inner */
.com-rsticketspro-progress .com-rsticketspro-bar {
	line-height: 20px;
	padding-right: 10px;
	float: left;
	width: 0;
	height: 100%;
	font-size: 12px;
	color: #ffffff;
	text-align: right;
	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
	background-color: #0e90d2;
	background-image: -moz-linear-gradient(top, #149bdf, #0480be);
	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf),
to(#0480be));
	background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
	background-image: -o-linear-gradient(top, #149bdf, #0480be);
	background-image: linear-gradient(to bottom, #149bdf, #0480be);
	background-repeat: repeat-x;
	filter:
progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf',
endColorstr='#ff0480be', GradientType=0);
	-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
	-moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
	box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	-webkit-transition: width 0.6s ease;
	-moz-transition: width 0.6s ease;
	-o-transition: width 0.6s ease;
	transition: width 0.6s ease;
}css/print.css000064400000000341151163531650007206
0ustar00#ticket-global-message {
	display: none;
}

#ticket-buttons {
	display: none;
}

.btn {
	display: none !important;
}

#ticket-left-column,
#ticket-right-column {
	width: 100%;
	float: none;
	display: block;
}css/rsticketspro.css000064400000013524151163531650010615 0ustar00/**
* @package RSTickets! Pro
* @copyright (C) 2010 www.rsjoomla.com
* @license GPL, http://www.gnu.org/licenses/gpl-2.0.html
*/

.rst_files_container .rst_file_block {
	display: block;
}

.rst_notify_ticket {
	color: #ffa500;
}

#rsticketspro_dashboard_search {
	text-align: center;
	margin-bottom: 2%;
}

.rst_dashboard_item {
	width: 30%;
	padding: 1%;
	float: left;
	margin-right: 1%;
	text-align: center;
}

.rst_dashboard_item [class^="rsticketsproicon-"] {
	display: block;
	margin-bottom: 3px;
}

.rst_dashboard_center {
	text-align: center;
}

.rst_dashboard_kb_item {
	width: 30%;
	padding: 1%;
	display: inline-block;
}

#rsticketspro_searchinp {
	margin-bottom: 0;
}

#bulk_actions th {
	border-top: medium none;
}

/* media */

.media,
.media-body {
	overflow: hidden;
	*overflow: visible;
	zoom: 1;
}

.media,
.media .media {
	margin-top: 15px;
}

.media:first-child {
	margin-top: 0;
}

.media-object {
	display: block;
}

.media-heading {
	margin: 0 0 5px;
}

.media > .pull-left {
	margin-right: 10px;
}

.media > .pull-right {
	margin-left: 10px;
}

.media-list {
	margin-left: 0;
	list-style: none;
}

.com-rsticketspro-has-top-padding {
	padding: 1em 0;
}

.com-rsticketspro-has-top-margin {
	margin: 1em 0;
}

.com-rsticketspro-has-margin {
	margin: 1em;
}

.com-rsticketspro-has-overflow {
	overflow: hidden;
}

.com-rsticketspro-avatar {
	margin: 0.5em;
}

.element-rsinvisible {
	display: none;
}

.rst-magnific-popup {
	background:#ffffff;
	margin:20px auto;
	padding:20px;
	position:relative;
	width:80%;
}
.rst-magnific-popup iframe {
	width:100%;
	border: 0px;
}

@media (max-width: 767px) {
	.rst-magnific-popupp {
		width: 70% !important;
	}
}

@media (max-width: 480px) {
	.rst-magnific-popup {
		width: 85% !important;
	}
}

@media (max-width: 320px) {
	.rst-magnific-popup {
		width: 95% !important;
	}
}

#rsticketspro_remove_data_and_close_account {
	display: none;
}

#rst-timer #timer .clock-wrapper {
	display: flex;
	justify-content: center;
}

#rst-timer #timer .clock-wrapper span {
	font-size: 30px;
	font-weight: bold;
	transition: all .2s ease;
}

/* outer */
.com-rsticketspro-progress {
	height: 20px;
	margin-bottom: 20px;
	overflow: hidden;
	background-color: #f7f7f7;
	background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9);
	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5),
to(#f9f9f9));
	background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9);
	background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9);
	background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9);
	background-repeat: repeat-x;
	-webkit-border-radius: 4px;
	-moz-border-radius: 4px;
	border-radius: 4px;
	filter:
progid:dximagetransform.microsoft.gradient(startColorstr='#fff5f5f5',
endColorstr='#fff9f9f9', GradientType=0);
	-webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
	-moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
	box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
}

/* inner */
.com-rsticketspro-progress .com-rsticketspro-bar {
	line-height: 20px;
	padding-right: 10px;
	float: left;
	width: 0;
	height: 100%;
	font-size: 12px;
	color: #ffffff;
	text-align: right;
	text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
	background-color: #0e90d2;
	background-image: -moz-linear-gradient(top, #149bdf, #0480be);
	background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf),
to(#0480be));
	background-image: -webkit-linear-gradient(top, #149bdf, #0480be);
	background-image: -o-linear-gradient(top, #149bdf, #0480be);
	background-image: linear-gradient(to bottom, #149bdf, #0480be);
	background-repeat: repeat-x;
	filter:
progid:dximagetransform.microsoft.gradient(startColorstr='#ff149bdf',
endColorstr='#ff0480be', GradientType=0);
	-webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
	-moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
	box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
	-webkit-transition: width 0.6s ease;
	-moz-transition: width 0.6s ease;
	-o-transition: width 0.6s ease;
	transition: width 0.6s ease;
}

/* label fix, only for top level items */
.com-rsticketspro-spacer label {
	font-weight: bold;
}

.rsticketspro_clear
{
	display: block;
	clear: both;
	margin-top: 5px;
	margin-bottom: 5px;
}

/* standard form style table */
textarea.hidden {
	display: none;
}

#rst_loading { display: none; }

/* new */

.com-rsticketspro-has-top-padding {
	padding: 1em 0;
}

.com-rsticketspro-has-top-margin {
	margin: 1em 0;
}

.com-rsticketspro-has-margin {
	margin: 1em;
}

.com-rsticketspro-has-overflow {
	overflow: hidden;
}

.com-rsticketspro-avatar {
	margin: 0.5em;
}

/* media */

.media,
.media-body {
  overflow: hidden;
  *overflow: visible;
  zoom: 1;
}

.media,
.media .media {
  margin-top: 15px;
}

.media:first-child {
  margin-top: 0;
}

.media-object {
  display: block;
}

.media-heading {
  margin: 0 0 5px;
}

.media > .pull-left {
  margin-right: 10px;
}

.media > .pull-right {
  margin-left: 10px;
}

.media-list {
  margin-left: 0;
  list-style: none;
}

.rst_editor {
	float: left;
	width: 60%;
}

.rst_text {
	float: left;
	clear: both;
}

#rst_conditions > p {
    clear: both;
    float: left;
}

.rst_condition_if {
	float: left;
    padding-right: 6px;
    padding-top: 6px;
}

#rst_conditions {
    width: 90%;
}

#jform_time_spent_unit_chzn {
	margin-bottom: 60px;
}

.rst_custom_field_label {
	font-weight: bold;
}

.rst_custom_field_value {
	margin-bottom: 6px;
}

.rst_not_flagged > i {
	color: #0303;
}

.rst_flagged > i {
	color: #c35b5b;
}

.rst_button_spacer {
	margin-top: 1%;
	margin-bottom: 1%;
}css/style30.css000064400000000433151163531650007357 0ustar00/* This is
only used for the 'No matching results' alert */
.alert.alert-info > .sr-only {
	display: none;
}

.icon-rsticketspro::before {
	content: "\46";
}

#bulk_actions > div {
	display: inline;
}

#rsticketspro_dashboard_search .btn-group {
	font-size: inherit;
}css/style40.css000064400000000604151163531650007360
0ustar00.icon-rsticketspro::before,
.fa-rsticketspro::before {
	content: "\f590";
}

.dashboard-button > a {
	text-decoration: none;
}

.pull-left {
	float: left;
}

.pull-right {
	float: right;
}

#ticket-info.card,
#ticket-time.card,
#ticket-submitter.card,
#ticket-history.card {
	margin-bottom: 2%;
}

.rst_button_delete_ticket {
	text-decoration: none !important;
}images/admin/back.png000064400000004760151163531650010524 0ustar00�PNG


IHDR00�`n�	pHYs��~�	�IDATx��yP�wDZ�vw��������ݵ���v�cծ��{�UPTDAD�����)�Cnrp&�$$!w�M�}	��M(��v����<�?�g���>������^�z�5gvv�gg�y-�8f��!7�c����8$3��z���4L����Z�9=3��@�47�aL
��EH���X��R;��k"kk�v�5
@>�P�ݲt@OM@2>=Z�{�
6��&gFG�c��6�uj������q߄�`��5�,�8�g���i�uRg�
O����X���ͷ;䘝q���T�7��i�6�"��o|(2�źQaz
]���Z��ˀ"�H{dyh�1N󸶐��8��͓2�(S=�$��ยY��H:�B�I�q^����y'��noWD�%u{��>�����A�$��r���/��r�r�SU`y�P���6��F��H�V����g%H�D�]h�TO(����q���d�E�1�aL`��Gy:[�n���q�6����٘@��R'�j�7Ei��f�f�Ә)�8L�x���7�6M�ξ,
�#�v�,h�0J`n���`Lc�XG3���{�U]%Y[ѭ)'i�5�]�����*ī
p*(V�����T�v*s\1%�p�P�E�8}h��8�����!���X�8W��$�����Bk����77�\3�3c62M���:���f���8Qt$m��CSBP��D>V�<���Pd��hY�����@���,C=�y&r��ffv���4U
��
j�d
G�|+\`��Z��
ls=k��9XM7U�*��r���[_J�w����U�èr:�YhE&Ji���di�#[�I���&�md_Rr.�����x@
��nuQ.�.��9�nk���ވ{���N�8�k���r�k��*���1TN,��R��݆B�>����k���NUV�*�LG)�m�YRs����-x_<Lr�Q[/Ջ���j�5��j~x�
�Z��w#OϢ��I
O���O�0J=A�ֱ-�X��s	m��j*$���<�!����20��uJ�ڦHn�'6��
���0�Il�$�VU#���?�U�/��.����rϕpϖp���g���u��/B��K2�@@��(���=�r�$�c+e��gYJ��4s!u(�l�#�r	�l�!��tj�ڔvuR�*�Ey�I�����d7���}1��k��+UˆJ��
AH?�>/��X�	(���
X���P�O���7���S��bP���H4櫦ZH���<!
�u
��Lw1�;h��v]\��F��P]�)�6�"��j��*%�E�e�s��"���)(��=��֑,�2�i��={R);S�ۓ�[�voN$m�Cڐ@\�k�VC�^wI�}�ׄI���l�mC�p�9�>�AP�9]��T��ɼ����%�D�r�3y�霭i��I̍wh��k�)��w�8��a$neX�P�{!��w���ly=��5����F�r
���q�q��y�{���Gc�7��8��m�0qCR{��Y�fP�.���֨�T)}+���-�;R
>�'ܟ�ߓٻ�ݞ�2��E"mCB��x����A�O�E���k�K�^D�>��7A�o�ky�l�/��~v�?�K���No\�Y�m@J���v̭WhE��V�M�ܠ
����NV�[�"�	��R�.�~�vP�ϵ�~����+�)���)��H�МC��kfvn��t�<����(O�*�z/��޳А�S�r^T
}N��2����n�
%��J�lKeoIfl�K�t�g�Mʚ8ҪX�ф���>��]�Y�����m�o}+��W�Ϳh��?��ӈ���/�F8u�񥫘?�`����9�в)��X��JqX�1�\~�Xzp(_|�`���Jbm����#�$���U��܊˝�t,�������hy�Lӫ~ȗO�j٧��X�����С����c��a=j�k��2辙,o�\�8�/9�����@��0YL]ߕ�����J��r��R~`q��t��>~�u,��M?�E?�I�����Sw�Q<�T�R�;�9�1ص�oZ?�n͸���R�v���A
ׄAE�s{s�{3y�RY_4+⺶��օw�]�5��Xty�V��Ց�
k��)+�}ct�G�	�@�]�j��������s���^��l����?iڝ�'��������O�L}��zv~uF/�7�"��cJ�>@��v<�Y����en&�`�e��V�#��)�5}
��Ky/[d���U#�w��i^����2P4v�-`=��G�+}��Fqk�8�����r��=�ih
Ev����K���Us۷q�&Nq94�|��~�������z���_����п,%gV��dIEND�B`�images/admin/bg-button-green.gif000064400000000144151163531650012574
0ustar00GIF87a�x�Q�Z�p�L�E�H�j�d�m���Ja�W�,P)@�#���G�$�(J���p;images/admin/configuration.png000064400000005764151163531650012500
0ustar00�PNG


IHDR00�`n�	pHYs��~��IDATxڝ�gp[U�E	,C2��IB	��%di�42!CBI�,�G2����?��av�
=v�nc;�e˶,�K�J,Y��luɖ�.�}�=���3�ruuν�}���9W��a[ZZZ��"�6��5񹰰@���yz^��0�≄���N�}Ӂp$��s�T�U�9�ͺ��@
@/�.�bY�1�dMk�/5}{��?5�?6�6w�$*]8#�F7���C�
8�N������&@d��;�1Z��o�>�6Xm�"�O�m?ַ�u�B�v��&�F�߯P(p���斡k�X\\\��0����֋-���T���҄B!�Z
�������D"A�B:��e���L&_(�/
�1�t�d*��;��ٛJg�EyL���
�F��d2YSS�R�x#�op�/ә,�4ON�����J�LE�7��B��|�rww�������\&4Д����m`hנ�3�_�8�5�xTWW���5??_��B�*��c�w�l�Pd�h��C
�)�gx�Phã�=���H"��*�/�i�ds��dau�����Ebq�@
�����S���+��D�Rji�M92��^���b��Dn�9D�#�C��؄k����ܠ�j��A��t�2	V,K̥�Z�f��SC�J?J���A�-�6t
�!�:�[aZZ�MιI��ɐh4Js
4��:UY&V�-z%��F�3��ئ1rc���!����de��<.���`Yi;$�A.
}�
j͊B�|�X����/�(�L��Xm�:z�J�g:
����˄@/�&�I�R���66��91��J�ݢ6�@�L-׎�I��Ggf���u�u;\�q���i�t(�R&�]�M��T<�������̊BH�xE�&�':ɵ�_��/\n��ZlN�����1���T���F���T�?�Ioۄ��Jo+���$��Ug��6��zӈyltl�Vf�)��&�R(CytL�C�CS�S|�������;DC���t���z�2�aP��?�zX��h�U�H�5���a)����pj�S�Y3	(8qM�7���0	p���O�P��e:�L��Mz�����g����FC$N$�MMM�B��os���H|�suj���j���m���{����~�:\ƫv��&=�Vggg��;8���"U�Sk+D�ٜ���!�I8��k����~�k޾c��m��/���m҇Śm�56��ju�Y�����m��D�+��j��X��i���+nguSg��#G������:��0������V]��TCS3J6������3�r��w��r��>��F-]}��39+(��o���[n���[���?m6[(�M�����IUN�/9��Z��[^��}
q���v$�h߁C@��kn���m۶=��<�ȶ�[���B�p�ҥ��F��"������̘�J��nS2��DŽ�Ng�8~4w�q��v���?��S�:|��;���g�98]�ݩ4�
Rϐ��%X���:C�j�i�55�M
Z&�y���As��w?���P��;�ЁN�8q����>��O��[S[��_��6�қE�*�L%�T��)�\�dm�Hb�Di�x≗^z�駟~��g��^x4�~�����n߾���:l&=>��`&:9��d�ē�1^�w��h��|�(�+�����޽�ȑ#pj׮]���:h>����>t���G���x	S�T�z�M$�1�V�qnޭ�@�9ť��{(
���o�}���7�|�;v��9x
�z�m�)��D*�*��R<1����;A%
�z��w�6��Ҝ:u��^C�ď=�؞={<��O"�0���X���o�0�≭l�i7λUS��3gά��ɓ'�ꫯ~���w�y
�ܹ1��Cmݺ��k���o��,�H���$U�i��L�q�着�GP�t��p�j��}��Q��
�$�F��o��d�a�>��d���Jy�(�S�|��F��T�6��#��lBg�P���"���ZVm4w
H�C4>���J��K:��O0ޥ�N[:��Z�m�I�I�R���ͣ�>�s
U�Ks�]w�D"nHb��1uJeZCL�܊Nz���I����j��ڮ`-�e�,��ٳgi�޼(&ڀLjbJ#�i	�р�5vvX���:a�&�́5�X��Z��$���"��Xl�+;5Ʋ���믿3�z4І��ט.�������bvS��L�5�)�01:Yǝ�n�oz*$���jwҸf���!σ>�8E&Ӝ���h�
��WHVtҳLx7������b�7���1G���6������Z̋b7{��%4�upp�:ŝ)y[z�a��ЍZ�u��K�
76����&����ӧ�lق�a߿�[o����N��'����
��g�"t���K^���1]uL2����d!{�0�D6G21t��(��z�gPv�=�Z��#�QL&�J��d⽟@�+��b������܁�qCGϕ	Ԛ��3	��ae�n����{	�r�P!����σ9�(^ϩ��V�ˡ���	iH������S�g^5O��K�����J�/��"��L�OL�!���S�4”L��T:�ӐR�ݦ��Dt_u��=�˓�d��iO*umm-��X"b^~�eD4�`W���ޮd�*�	��٤��j�l�
���NҞ�-~A*�$�a9��H$$��c=�r�':�y�T,�r^�5�5�^;jEѷ�K��
1E��|���_|�EGG���
������j2��u��t�R��J�B����2��_q?���3�`��nw:��'��~ls���Tj�{�kar�,�TX�`����v�'&&���	��b1�ͣl3��လ�O�n�!��P��P<�������w�|�h.��,V�萍�E�`�2aG"5��&We[�xۼf�+�B��T�IEND�B`�images/admin/dashboard/back.png000064400000003075151163531650012451
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��ZkLW>3���ee��<����
�-*�(j����P����5�Sb�����6���*�1MS�Fc��&�36�FZT�E�V�}�c�l��
8�lv�ē��;w�|�{�w΅�F�0���.3�i�n�%�ϝ��F]�J܃z�3Y/��!?
Q����af�'ڝY��V����y��q����=7n�~�x��26�쩓Ɔ���C��zA�¦��a��2`�YYy�vK-l}����F;����Q|ʙ����
���a�}~(@P!�@�`xP��\.(+_F�}A�QM�E|��o�r�m�^�1���F�QE&E`>��9�C�)�~o84�s����mu�HD�Jлꋪ�2����,m��%(n{��u�z�����N���O�}pj�X��<߱i�f0�&��EI��az�o���L܉�
`�;
�����G�(����Q
Pò�O5�ց#ө�4*ѿ{���'�'`	��굫`Nn��yQ�0�&�<o����NԦ�ꪆ����80���/%�xY�d��d^����z%��׮j���~�O%$�ڋJ�݋�C(
kII��*���xBHsm]��$����+?�����	d1>�{�6�	�_�О��g��^��ag�s_���=��&�#�����;�DV�$�����^�s�,�-��Q��ʜupEuȒ
R8�4��pPEUp'"��GF�ٸ��v�����)����[[+���l/e���s�U����<ʖ/�X�4�4�L������)E0�t�3�Q�^V�WL�����˪���l�E�r�B��@[X����a"�������<EH	��mZ�h���*Ƽ��]���x���{�wΗ���x�HK1*�=�\@�����;�KJK���i��O?��څ�p�t����(F�#����P�ꥱ<U"�D"�lo__k~�ގт��}�b�BW&n�%���{pnA�$f<�RC�G�����z��!I����\	�|��#sӑ����w�!�æ����������9p�6�XIi.|����|�{�/%}��`
�y<�‰t�,*@0�����2��޾-�ߓ��VK@<�
-Jt)�����X���ֈ�}o�{RYR��FF���t�t����2��F��${�ES�m-ޠ�itd$QZ��������#�V��=x�a�7#z��Qw"#Y�u��}SZK�M%#P9�����PE?��МR�v�7w;�
���,4VG���K�"�-@#F��:<١`��f�ś�ITM���ކ��2�4���_�D�u5�{�t8��^��C*Q����r�Z�ԆcH:p<m�[y�~�M�$�{�f�$��-U�-U�TkO���:��9rNV�&�/[��PC;+#*=^��}�d�%�oB��!�&�tO0&aa^���+ӓ��4"��ُfIEND�B`�images/admin/dashboard/configuration.png000064400000003566151163531650014425
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<IDATx�ԙKhI�kb|��'�$�
�(����\��AV؜��^ֽ�d/��]����\�a�,��)�L"*!	
�4�������+�ǚN�tOg�~�tW����5���)�-C��ơ�r�\5i�
z��y����`���E��@KKK񹫫+=gΜ���fUWWW��޽{^ww�����n�S����\����Q������s�<�Y�F544�5Uw��@
	�]�j�z���K_�J�ԢE���j&�JN
#��÷5̚5���.\�>}�4�;
,[�L�1k]��j+prŊ�۷o?*��#�l�?Ν;W�9s�m���k׮U�?�F��Ǐj���J�dX��u��<���8#��ɍ7f=��GGGU>��5��C��J��gϞ9	qO�<Q}}}�5Y��o����������0�*���(
�_�|���`���"̕���zkX���ڒu7n���(��ݻwz
k�)'�z�٦�&�����_ߵk�~�w���m`�ӧOu��
���x�B+o᛽��YSG*�BG�r�
%E�r��GQ�K����ׯ��Y�ԁ�;w�,�'�t��X��}�w��s�.�8tr�;<z�H�X�3i�|����r�K�1���Aj&
�
ϼ�kX�J��x!I�L���	2��B,=44����"��ֲ��at�	��/v%�b��
���"{|%���U��nڴI3�-�ܺuK�}MMM"d/4�e��)j�f�@ۆ
������f���C599Y��
hٴ)f��u�֡E[%
�M�{Z�_�ɩm۶-n�1"IJS�	��3�߼�r큖?<�o�Ν�S�bdj52:�����~�tB�bf���<�]3h�?G���7�zM�������3�E�ܧ%nZ�����"$�q�5TQ��;���oL5��^�z���tIŵ�$%z.QB]�x1T�^4������>p!FR��R�O�.^

Ξ=۞J\�~����]��p�(p)�Ka4��e��2�ahK�>3hB;���(�1n��Q���n��`wM?�&��$0�Z\?�T!y}o���\C��c}#�˅:�\�r���%K���
��6|oReX&:j�Lx�Y��~dd������¼�'Ys+�Y�|y�BT��g�r0L!L��d��^#|���A�P�����`�>`�����ܼy�}˖-�R�?�?vƣI���1�\ik��G��x�^���Ĵ�ō�9�����>�`+ϻw��	G��:1>>>�_�x�.Ľ�6r����j#<�Mb_-���ݱ���4�P%��%Ɣk�&#�S���FàY?�y�fg�z"Y	E�(�����a��Sжn݊����$
dw�ء-B���8	�2��իu3HJ�kϼ�ڑ5�e{]49MN�淆D.�I;�o�ʕ�YT��+�_�r폆����ׂ��AZ�D�B�
��H%��`H���8��(�By���hn�Ib:��	�2�#`�6���Z���J�a%s�����q�m��۷�LMQ�n����U��;1��t����<�^���U��Lj�4xd!�$�={�����c��WQ��d�P��%���ًA��]��#e��()|�B�W�����h�
��(����4��S0�v@�P�@�#p�Po������|�"�g�A�^�u��_��z��
��`5�X;�4a�p0�N\D[9�gFP[Mk455M���ח7��)S��_��z�Wʤ��my��W%�R~���:'E���IEND�B`�images/admin/dashboard/departments.png000064400000001664151163531650014101
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<VIDATx���Kaǿ;;��]J�4La
4���]��ԥ�N�"��x�.b�t��
$R)t�KJA���)%�i�
��?V���;3�l�;�Rڲ骳C�33,��>�̼��d2	=��`��<ۄ�a���V�-��a�@�9�����7;�f���Y�؉;;;��jjjPUU�әq�,��|�$�bCCC��ھ�����D"(����d��fCEEx���@��l�gc5��륥�E�����	��B��p\���u��MN���c��n[�V���m�@"�P%`��x�~]�^�s�z7�5��tP��	09����]�c����	��託�|s��lO
����s�'����@
�.y;m����`>|�	/ǿ#.���ʷ��Iǚ����-]�P�|
�7��Y-�H��>8���MRN?����|ɥ&8��0F۶��&���83LyN�N����*'Mn%fCa���������E��H*$�+�	AZ#���5�Њ��b�"�T�ƒX�ʭX�X?Վ�����J=C�����x/�ZT�j�DWv�Vb`v9��;]8t�\�7���f�	�A���~����u�C��?�D
!�\�-x�a���!-�A��"�m�RL��V;�_�P�eI_��@�(z��O2���Ȁ�ELt�ِ��D�y
�PB�([,�f�A0lw��p9�Q�����&���:�~;����3��,II��mԅ-��K��MMM�s+�yB��Ĕ���p�8��IuI�>�z��ln�����]��
��޵�O�&���o�%�pp��O:�IEND�B`�images/admin/dashboard/emails.png000064400000002414151163531650013017
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��Y�J#Q����[⾠�� �/�
�'�8>�7�00㣟� *3*�����{
;cZ;1N"��N��s�ԭ�{�1��͍>��T*��J�]��.Z[[�˯b4�aC�"8���-�������-)**���H�.����B������S\׋[�/�׃��Jjjj��ӓnoo�����nn���EIIIMmmm%GGG��O͖k�1''�<<<��������+9s���S��P�
 ��%+�0
����4���:������!�jM^���픗�G.�������P\\��4
��Ƞ��Z\\���M���$�N�T��499IWWW�ب�(����N2!}b`RGGO


u
����:�O~~�	���?B���@������JKK#�V��,��4
 �s|5>0�MOOSWW���JY����FGG�����o:MV�B��zzz(11������#
saa����8lccce1�D@����L)���&��?;;���q
���j.XJ�����+++����j$$$�F��8�����^�{���ᰛ�d��P�����B���C{055�i�����{�x�,	(h���ۛD�Ȫ
��<�9��w�]�|[��R���411�׈[��<��}��<�9��w�-�~w������pj�K�M����^�6�!�z��t��)�������M�Ǯ�wwwY�������
��I"ccc�����bXVV����>���p�ĚB�???�w@!�����E�WUUq����c0�Ԛ��E���400`"���b
S�����ՀC^ �ua0Cl(
yxx8WK4W�h)-�!�{�B
�`aa!�����
�V�|��؇��:1�:xm->�t;h�u9�777bPcpp�A;��Rs���
VTTp_rxxh�0eذHk�j(R@�u,���:�6��2�?�!�P����,ld�������ك�uƟ
p����g���U����h�%�X�����CRg��@z6��r��1�
����A����
�P�h���X�zG���ܥa���j�jA[���*�(��Z*�,Z�/�z��!cc�
�XhcD8����ՁR�@�hŵޅ�߱
7��tB��4N��X%�P	��k�u�*B:IEND�B`�images/admin/dashboard/groups.png000064400000004321151163531650013063
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<sIDATx��Zkl��汳;��_�Ԯ�n�`7��hT+H$4Iՠ��"}�TT��'QATAUUA�6"�qT*DSB��	�*)��[������]0���k��;Ϟ;�66~�̮�*W:̠�s�|�{�w,��!���r����q��{=t��
7IH>��쮘i:s��s�pe�D����!��
�ַxk����N���C�Ƶ3�.���6?��aZ�8L#�k���Ɵ6?�UH!�����9@����X�ș�\=s�}ӞǏ���ck@��cE'�d�w�	�7��S��uq
�{���$h����z��vG��yyI�l;_>����Ղ��Һ#�ƳP'�0c�<U%`wx,�[�3���]��0��|�j]���Ԗ�k�,�"\��������e�,g�v��BT�2��|5��#U���Nv�;�Wo;�Q���Ȼ���WBh^	o��Z�����Qʱ@T����^?X���7[`8`�r��yW/14�]��L��ܸ��u����͡ХW����3�vI��kg=&�ewѶ��PߑE�G�C�RKj�
9��@6��!++�&3����~��;������m�mr�;��ފa��+6�h���O;����gi��Ʊ��T/��_���v�n�0LRa��e"��K�?C=#'�������<�&6�Ⱦ�Qt�५�T��:78V~�����!��yF�\bjA�9Q����Ǎ�Ȥ���/;��B'f���l�k9���d�O�㏠�kO@��@��E��.s�R��1���������-*�TA�NM��}s���kD=�m�/%&3�qT�m'���������ψ#*����Q�x�DI�S׆����wi�v6�Ts�y�x�P2���&�8�aF��E�p�{��W��ѽ������F���!���Ҡ���b
K�Med��5;}f��7d��U�}u�*��2��61K
�׼��)��
S��vVK�Q���>x{?u۾��5�&Ñ��>Q�U-�v(
[\4���'7���M=�]`���t���ں�@��9(ji���"�S�L��v�J��+�o��c21Ǿ��Ր�Y=�B3P�X�Ka
���]Q#������Pȷ�ڰ2�6��e��y��p�ʧv޹��$����;�Q]E@ȷ��p5ŀ�����ß�'`5>��(�\p�Y�G��E�k'^�\�^���Á;PG&(;5����E7�̬��6*�u
��h�h4Ǩ�{}�ӟ*�Fc\G������fU'�ށܸ�8��y��o�>�b����B�l$	��M�qԩq����Kj��O�uP�u�I��t�U/���;�~q��×l83����Mu@�k�����Ref&���TEj�H��:v��[T���O��xu�b`F�.��ф��z�:������6�m��
[�_�v�0�
��E
��ԥ��I>R	���'B�\l���Y�(M{�js��Á[��]�J>��I���S���8�E\�ONn���o�2�_�:�8�y�_��"�Q*�vT���GL߷‘�wg��>�����=M[;�i{��3eA�s��ڂ��O!��x^
�6�\��g�*�>�FNI��5���7�f?��?^o�������v�
��S�N���@�,?�=��8*�zz���s%�m�2�A�"H~r���uz&%�eZ���ق䣓A1���?�ф8�zbrU���D+Xo�e?�PuO��Q���_��@�zT�O�k*`�N�RsX��)Q:���^��D3�m�q���v�7�lfE��`T�}ņԭ�/��*�D]-,u�t̕�][s9�94�3�O��l
m=�^�`��d�����s!����䬡���f%E�e�;�
�K�Bs�1-��-J^���x��]���'s�E���.]ͽ�*
Q�N����V�\�����%��&}�r�V"��ôUm�A�����>+ٟ�f�.�<�S���I�wZ7��#(?���(��C��i��,�`�n.���u`��$���_��M^z��A�Ȱ�����Ǣ��
-Z����y�O�m'j}#�rIEND�B`�images/admin/dashboard/index.html000064400000000054151163531650013032
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>images/admin/dashboard/kbcategories.png000064400000002463151163531650014213
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��Z[L�e~K[���e��Ű*�p]j�’��e�Ŗ]�3���!�o��B3
�қ%\�Dc���w%d��8,��Y7
�ȹ����]�0�k��&�����{��y߉���8r+�o
�
����()������%�3,:˳ǜ,�!�[---�b1��n�,�BAcccݣ���mnn���z*++���Z����B����u�\����kmm�Y�}��0��)�ioo'&@��봽�M~�����R�$�ZM���T]]-�������bw__]]u�;����j%��H��^/E"��FL��PMM
�����8q:]�����^��f�Qii)mnn�
���*q���@�>b7rN��[��mmmT^^N�'�u&����)�$�H!xi��OFiitt��d�\q��dJy>��_4�	���,�,3�
,V��`�Q
����N���Ï�����+**�-�赤����hee�x��`6��O���T7�P���^����t:igg�Ga
#�<���%ٝ���NfC)��4	��]G�#i�y�I��i�@cLj��������NGϏ���_�٨E�Ru���H�<�.xq��g1&�����
����D�V�
"uP��6�ho3��L	c0:�:�6`+�"��GೡS�U�8�m����f�y4�
n�2����+�ŷ���aX�y����j@����õ�W�&S��F?�^������Q��Mr�~�y��pHM�0E����:�K�R���
?]�~���&2M\��-?��_����k%��>��p��#p�B�BA��B�"�/�1��[	��+�fT���<w|;a*SJ���
�䶆�?{^��@�����
���I%�F(�K���Kǎ��T!���.{���qZXX
�+q݃=~]]�}0IF�$�B$N���{	ԿZM̬�?(�����ԩ
-��+�鷿<�����PM��M�r�
��f����E��Nd%��=O [[�C
�NH.���E�e{��"�dg7z���~��)�6$/�p���I}����x朙A���<��F
V����7t��H�"͞gΙu�<߲ic�X�#�=��@�H�`	Ċ(F@"�X�G
^����+e���A(�f=ş$�GK����F�Y�X)qŞ���Q��p{�c�^��6���|/>�
��6�
0�,�e	%-�IEND�B`�images/admin/dashboard/kbcontent.png000064400000002267151163531650013542
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<YIDATx��ZoLe��RJ[�k�I���F�es��F]���0>L7��Oƚi�M��&~]���	�fQb�b�>�-3A�f)��k{�?�������I��˽��<��}_�΢(
ֳU�8��^��o��'�}Wg?2��{s���z��h�Q�k��϶|����{����a)�PA�3|������÷�ѸQ��e�Z�ZG%�x�������/���
����k��@Ǒf4�����'�\9��^��9��T�x~�����{~�i��^r�
B��B���8ֽ���vSF!�T��֎�7��W�Ԅ���
��bWX,��U�����(�ύ���7�\zY-�;}�?���x���؊�?Oa϶:�I@=�L�
-���FF���'eF�I�Gq�]�}�T���Wjom�
Ȉŗ�Woi�{�ؽ��:������c��Cp�a]��q��8��k����
���Ȟ��4~,8�Hn�"�U���8X�3Yٴ���ٱ
�DN��'����T����8�d��Fϱk���o�Z	��lV�D	��d޻��R)�b�UY�$I���].���G"�+R��'=��Ê��f^�����E����h��ܝ�C�4J�%���2c斃�s4���D@���Zl��h�ƣqsqh���''�7|�x�~�K700���m6�����&	�+��8J�P�zzzL%`���6���(��ph#���/+I.]B孀*o,����U_:::����X�@gg����M,Ik����ؠ��_�6�Vbhh�$@����W`}��+4q[[�as��&��M|�?��W`�Pֈ�#$$&b�ڝ�o䄄�
:M�����(K�c]�á��OL~��3R3�����8��R�������'�f���B�d1�_�.�큑h\lu;�/M��nr�����?�j<����4}
��fI��(��_VK�7N����%��B�*s�g"�åVB�/����L�4�����b�XW�F����$��q1��Q[mEU�Ŵ���hB��|\\��?�i��#��y���QLT}m����_���[�G�]8	TIEND�B`�images/admin/dashboard/kbrules.png000064400000005073151163531650013220
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<	�IDATx��kl�����]�z���c�1��(�V�y�U*U�J��$ZDՆ+U�E�T�Z5��(�"U�����+��>�@6`�	�o��^������s�u��k��+]�읙;�s��93�R�v�5Ak�^A�w���+�>�d�4ǫ��9�]xS����T����g�p�m>����s�Y��H}�2�W���P���_߱_c�u�<y�^KV�Vеin��l��v`7N����`1����4�6�z;B�D��2�_�&{�K�
��߅�?t����섟ֽ��;��jn��}Zz����wй]|<���'�������f����S~6�O��>�!��\��T�Ո��ЌH�[u����^�}h�ro�/tlza�{��wj���Q�ΰ�T����|Ȯ0/u�|p)�Ur1W:o�FP�Lʈ819�"��vnh)��2U$z�q	�;%�16T��>gO�_>�C�Uj�>S%9����C��ŁO�ww���ϑ΀�i
��L�2�$&�f��s���2րE��e'K3�ÜmD�v"8��g*ˁ:J'b�X�}7bqEp�����9R�z|�\lq�o���&��#O��S��.�r
0�9�HҬ�HH��Ġө��"��^Dc�{�H����O̡�'��~AM�H��D%̓��a���׈�5�yt�k@��n��HLZ�bߨx�'���k@�^��*�
D��h���VLz�GH�W~��gO��?g�iP��}�I���CG���ݩ/O��{�3�Z$��p��C�Q?g6e�b1 ���Pdj�Glp���Y����'���B�ײʬ@��'#d>l�K������\���i�<o�����s�vgӸ_؀�B]�dۄ7�

�왃q^H��l��4mYOO�f
�$�����^�'f4,��"��[��[������u�b..�)�]piv�p
�7W~�E�q�o���#�P�A�ka��@8&�=�܎�W����r|��
YG�>_A	�@ӵa��k�vZv֠����º���|<��3�]�Ѡ�m�IO`�7!ŗl@����-��@��Mc?N$�y8'
��:g�"��2$o1I�?G	^�������FI�6�V��eee��kFS�%hU�H�4�+�P��!=�Ѹ��Z��	4o0
oDz7~jm)�:��j����������c�]�h���9����K$���Ά�`@0D__<x0-W��%Cy(��
�����s�C�s_��($ow�E��f
<�k�ޯA�~!oJ,���(�zxVV���'���rally�A�H�#DO��\�5�7{����8w��B3�v	t8G�ߺ����`=�1��R�֯���\-?11!��^���=�@���DH��8b\��,M�gp��m��HQ,�3�{�+�;g}�#o������X���y1�AՉ�&^�.��"�nĺu�C��?Rт��!��*MS{�__pvuu�痡�۷���塷��n�UUU(,,�?44�F�6����s����E�,��{g�Ԛ����롵�ՑG�j4�̙3GQQB��g��l�H�,r��wʲK&\A�*���r�ƍ�ݸqC�o۶M����
x�>G�9��F,'�[bE�<��ܾp�{S��������}��-�����8$΅g�p����K�r�R�Fe�e,F���M����st�[K5��k�*��������(��<w�g�$��ه��3z�i�aO��_��ӗ�V�Z�����u�b�x�)�~N��X��N��_��2~��7�tmU�}���߲e���dJ	�a2�^k����7�"���?*uT[uGYZ��*i[~����gFFFxff&��8�n���������n��2�d$#���ׅ���	���'&Π	�3p���0���>-�S*ʢT�N�)�W��CP�U����¨�b��D�T������l����E{p($��=Xm�7-_n_i�B6˞�P�p���g�"�ȱ���T�������W�E�J=O�_x�ˀ��ϒbx��ە��1�\��+�����l��M�|
�N��3���R!��j���oذA���y˲����ʅ�<�H
��<k�_J��&�����xI�+kn����7>Y�	x�gx�2���K5@�WVV:��	�D�L�3,��b�ck���
�)�	x�x*�0<cx*����
�)�	x�吙X���\3<��~!��#E��/�z<%����o�l6''�Od�T�4v����ʀ��z��6�����_(�
c���a����>��nå�4��5N�����f�{�\���2�Q�$���.g���,�dī'y?�����E�ò��6hZ����~�[n_�(�.M|�����Sa��(���z�^m	�߀G�'����o�q�IEND�B`�images/admin/dashboard/kbtemplate.png000064400000001341151163531650013673
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��Z͊A.��Q�9�=DЃ/�{��
,���O���A�bH
D��x�"��w�IհK֝�ȶӻ]�̌�t�U�uߘv��lf�ܬZf2�Wx8�ۋ�kc���F���n0=�B����
�B�ϙ��N���v�R��{t�.�k���-�H���EQ`�X�v�e��f38�N��l�\.�P(�`0��_��y0T���cu&6�
����G�����ܦ��"{�^���Lg}�����.�H��je�!V��7n�,tJ#��!�r9&�)��d�u�Գ�w��"�J��Y�y�#=ݽ/x��|>όF��3��}���h���9�P�Xd
_^�ѨH�{��b1�2�B��D
q�R�t�`�H��z�>z#�â��b!{dk4�n���$r]�,6p�V��*1�m��d�ٙ�#@�E��W˨�jt�l��E�3O�̝&G6�L�^���^F��H��S#E�b��P�3�j��/dY������Ó��Y'8�=i�����!4z�l6�YZ�����z���e�F����g4�z���@
�$��ngB�T���:��������I�mH��?�J�����~���M�n�[���-��d7IEND�B`�images/admin/dashboard/knowledgebase.png000064400000000760151163531650014361
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx�왿j�PƏ�%.�B�.%Cp�[ߤS�
d�ԇ�2�M�\%ĒĂC1��IϽ��tɍ�9�q�~�5�ߠ��n��%CË�.���Ѩ�m��Eu���ƨ�m۳C?�
1�7dY�-˂^��NG��4M�u]p6���x���iB�߇$I
�c�@��*��(��$I+�
��^ŏ�}��/�k��`�0�Lؿ�����ł��ో�s�\BE�i�Tg��Z�dY&|H������o!+_�ß�@��ɘ\���S�O�d�!�>�`�y��/t�W�A��{��/�]c{D]�A
�+�!�B$&���Db"1��HL$&���Db"1��HL$&���D�@�K�}'�A���z��w�Z�>��X�)�0���1mIEND�B`�images/admin/dashboard/priorities.png000064400000001656151163531650013745
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<PIDATx��YMhA~����	�ZŵM�zi
�(Ń��A(�͋
O�ŋ�=y��QPDPlVş^TIjK�4D7٦�ݙq�6m~h�d�mfс�&��$��{?�+1��K����z�Z����/1N�9�U�EN9M<`,n�_jes�{eEN���S
�*�9-�����,PB�܈y�";z�8-m@zi]s�$K�(6��j��7�0J�Eˁ1�@t-����L�1j~�{�C�1">_��|�Bʠ��I�(�8��w�
��r��L�n���e#�i�n�N�Q�w9-
:�h��S�
h�v#���$#W.Cׅ���[�43���ԳqF�y�
�:=���H�B�K�'()vU��
�]�ɰ<�t��b�ŀ���}`�5�y���p%�0+(S쪶D�D�^��
eʻ�Hf+SO!�I���=���o��I<!�u�X2D�z;\����jC�;�gt�!Sq�{eYJ�
uB��0�����f��>j��l&����՞�y�r'��#!��d)ZR�Z;t+���l�@���li0������A!c@ΨL2���
�2僙��T�"xɮXP�id-Z&�
�6J����2�Uȭ>@
��HI�k�v��@E���݂�[
��zS��4�z)۬B;h��Ԕ}=�$��뇛��7��Ss��7>>�Rr���=�m؀@9@���l4EL�֍�i�yjddľ�0�Q�GŁ����/9jS�Ԧ6S��-%�؝���\���s�~	�܀u���\�u���2��:~-׹:r�D:::�t?w�I<133��B5s���������IEND�B`�images/admin/dashboard/staff.png000064400000003504151163531650012651
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��ZkhW>3�;��ݼ�ԚT�&�G�XH#�@[K_H�+���6��������Ї��"���?JQ�)�K4*���Z�<v���cf�Lϙ���&�ٙ�
'sgw�������i�87��=;://�|�Q
v7"�����E$�ي��`��v��
.�iƭ6��v��J�j�+��`����4U���?���������:+vv����&՞1���c��#�3WU������E�FA'M�x�Ib0~�<��J0x�r׾=�,���„��3��GV�e_��7[��ԃ�U�|�1eUq���`���!���o!<t�`�={5���x�hh�t	���.��r���b�}
{H��A&Ydbw=
�˕��X\��5�_K�O����w��m��9���@���6��
�hz��o���@3�ÔiK��m9k7��pa�Pz���8�?�Ξ����.�n�����X_����'i�,F��(}�8�b�z�Դ�Y�5�P�_�Q�1�QkV.�V������bv�I��rMVB�-3cy�Պ�M.Cl2����R�rp�F͞d�3�LB(m陮1�ZK@����,���W���q35A�n�˨xX4�<X@���m���f�y@	�ӥߔ����J8dd\�h
�}�끅�P���F<g~�&��U��q���Ue�����NL�K�V	6�abc�t9k&�@���K�0JY&�6-���E0�UE9�]f֓���n��7��A%�0���r�N|32��0:�~Bt8J���	��ذP	۩�w�þ�,��7A���
L[q{������=O�nEj���"����Z,<��y������}��9?~ڭ�����ҁ����Xa��|��B��1��D�<b~1I,�5��xsHlH`1'K����ٲw�Y�4Go�xw��A|�k�����;��J��?͢)|}ݯ�Ū%e/��^�gO*��,��E�2Se�8�ޙ��at
߼7.S�t�:�[[?k5��-q�><1C�K��̷�j��jЧ3o&b�^<	��q��Wtaj;rj�=��+w�o��8�H�a+,mwU?Z$�疮��ިZ��pP�^�Ă"��ul��wYN���S�5ى6��=���E���U����z,|�)A�-����Z��+��_�(f���?���#���v�ngy:�8��WW����d	�Qબ^��\���e�SH�6��P�D
O<��j
�r���(*����6��I_������hӋU���bj*��(R�)0x��U^q.��	��滋��(�?�8�FޟK]�6
#�6�*>��H
ġޔ��et�.b4E��O�U�^
�x�<�G>��a��M�O��+bG�p�泈oLB͋�X4MB���ҢWeJ1��8��IJ��*I���6��K����tʱ�.�v���8]�N�$9���rBcs8/�u��{FG�FNL"1\��h�r�"�ʒ-�8���R4үH�6�˭n�y��Z��Pq�%���mڡʌQ�Qz�-I��$B���
Z(W�-A����_3��$LoV��$娲,/c�mGڂ�
������J��<��4?�1�_<޷����V�e/����$u�]�4ySI�O�UL�����L^q�k��'�i4��'1ar��^�ESk-�H�D?4�Q��_~�LVq5IEND�B`�images/admin/dashboard/statuses.png000064400000003775151163531650013433
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��Z{�\�?�1���ٙ}��lvuc44M��6�$�bDQj�h�6�@*eBK�6ֲ���$������J��R���b�()�����iC�w;��3����Ν�v7sggfi�1{�s����]��,��I�+��x�ڋ�����5<l6[������~�m���dgh��@���l��m����仪��C1d�d��T�4;�.d�J>x`��V����y`
�q{����B��`��R
��)|�f�G�(`�s@�L�
���������@I=��n"-���[�i��)�s���c6�H�M�'��w��Q`\�x
ܶ��?w;��'=U!��Tn�I&�+Hr���J�?���+'�T�	wp9�?��I�RM�d�#
�Ąخ
}zS<�k�&u�@f1a��J��U2�*��V$����t%~w|G3ysI��O@�E���B�>p'	�+k"c�%=S�	ض�v19R�I�=����no��B�)[���d,ꤧ�Zv�Izy�`>�����K����l���m�nw/��X|Á	��~��(�+�r�?v=���9+�Ӎ�B&���;J��~��V�d[at����(0���XU�?�J����に���lކm��-��g�Z�=�C�7�Dlϒ�䯌R��⑭7���B��
TM�p���3TI�!Q�I/V�!��׿��W
��XU��?�?p�F�|�,Mm��rq����%5��.Oo��ˬn�������k)8�a��!<�"J��k�2�`�ݳT8���qyl�=_:�̰���}���@�=z!�p������r�!l��Z�2�(L������o��z��x��:�6��B��pہ-r(�A��L`ވ�3���9^�Ewޟ�w_I��[�<�s�V��^�;}��U��f�ui��y,z��Ԍ�'^�
���)2�};�7���6Q%��H�{�m,���/��?�
D����	q��t���+�flN���e��`��q�<�	����(!�T\�Q��P��s�G��[vR�ҿV=�uW�u�5|�,�&�w*�ƫ��<�04��������3��=����;�$��k�E�I����a='���^�.}kWGM(i��!����㐎r�����A�+�_�3F�[zc�?<8�vTBo	�*(�^Tl�l���~�����s���
}�/r�k?�tR�?�H�n���:I�e�<�Y<�Nh%�s��a��;z��9R��"��pY`�d����1���鿇ΩƲ�]��#��P�g���F��]����|^�
Ơ���d�?o��_v?Øa����G/xE�<�k�
,י�l<��C�]�)��`i��IΒ�_�?�pJFr(��;�vA`�Tr)��i�-�
\���[�*�4���V#�;J��FPFG��Y����QJ��rwO�z�b��r�,))���Ֆr�%��.�M~�hU�A��XCn9῜D(�!�A�I�I��S�M�*�<l=k��iK�2p�%�
�(�?�_o�P��d3�|�ަ�k��n�Gz�>��$�oɁ�@�'���]%���k��&deM��e�]ފ����+!�ݷ�����K,|K
0ՊJ��Yj����N�Z�kW_24UT�<_'�i-�g���5�T�x:���w�c&eꚬ�|}Zyn�ҎL��ZIy�2���	�N����^)�~���h�ׁ�X���!�]�jwAC�UU2
��#��6w�i�%�a\TK��j!�WSr�
���S��vK	7:«�Q�e–W��X�s
8rZ�^?ϛV*|�D�,���&5�ъMkɼ�~���U��{��S�{X����f�3'�'
Аe|>��G�>�����q�R����ν�I��=>Q�=��'�3�IEND�B`�images/admin/dashboard/support.png000064400000004654151163531650013271
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<	NIDATx��ZkpT�~�ޓ�&!X�ˆ\҂"Tq�++X�3TK,�U$��ja��V/��
t�j��p	��"!h�${I�v����^BXv��&�3~3�l���}���߷Qt]�\L���u����O�)g��?,�٤����u�X�ط�Ƌ��n�#bg��U}w��M��7��9}���c�	��U���Qh[2�W�y�68ڡ(1'R���t��2��S^<�qy����Ư;�~b/X����o���((���RZ@�?�!�a[�
���(�t�U���DCM�m���V��ב�2[�s���ƍ�~���Fg��L�	�$��<���8��6�<���ze.	�2�G��1{�)[���'k`�s-�m�;U���u���}�Xb���&G�+��m�o2��/_Y	�Թ��pV��s�t5���Q,v8g�
�&uc��>݌�eK�E"���E�o��{��
���#������x�����	�-��/cKb���
9���u`k~�+a5�@�/����IL��W�J�>�ec��(�&��I�L�)Sϔ/[���Q2��v�����a&I<���M��2��}��d<r���䦆�&�j�#3+�wσ��Q�t�bh6V$!B��yy�w����5�\�ENrS��{�kI��E�&moo���R�DKKܮ�0�]�;ɴJ��|�w�IU��FNrS�PSƭD�RQ*k��z�3�E��
�jt�:�Y�Z���ˊ��=���[n����E4P�����l�ћ�6��IN����k��I:�w����h?R��<�#V+Vw.6AlZ�	��;������X�?K$�c|��2y|��4��*��X���.�U��2��I�~|��[^�(_�����n�ⶩn���%�'��9�������n],c!�BقPSSC����h�e��UlF(�˼,�G0��;�B;_���n��J��8��+W�g1cK��B�(�pS�P����L�ܞg����~P���,�G�E��;|�@��ۆ���̚_3��ƛi`&���a,1z�#�ș�j���v=m�8�Y�u�U=��mR�-����M��kc޸��CY�OcKb%ē�\=�Z���o��{��ʘ�f!8W�`]5�ǎ�&B������
Vs�(G:~j����y��Zt�LY"~�7=���(Ξkp)��[�s~�[l��BUW`��k�@�IU$��P����񩲯��S[��A�NEOt�R����I��憤Bя�k�����H���Ju��,��Վ>~޽6�JZ���b��i��~�M������
��2�X���Km�h�@c$:eii
f�����&�B��g��X�$�w$�@�Qua��:[!�)&;�����N�k�D�O���}m�i�"&�ɑ�?wuF	���4m�߼�-8o���N���N���	Sz[��͹}
1�ELb�#]KP5%�[U��}~��w�7
����󫭤C|�1O��{�+W�a,1�ELb��\���Q�QT�$��^�a�+.��q��%�ۍ�~�1�<)q��ϛ��zތ�>�Xb����NB8ɝ�AM���L�g�ʐj�n�Y�G�|���CSSS���A6<^/�Z�[�-�.�e6�f��<}����X���
9�M
�BM�ۻH��t��C���[���ijv���lFqq1��p��|q���@3x\���<����'GKy��\���0p�@x��_�o�{�s��l��X|����
��P(d�%\.�����j>A��;�r�S^����~�w��䞇�(�S��hmm���5�Mp����;��K)3��X6x��Z��3�EY�]i�%Պ�c�=[|є�����G�9
V��X	��|n��o������tz+;�\�ӄ:uͫ�m]���b_[�7��]��0��Z��lz���gUV�b��
�W�����n�}�����
��Ԑ|��fn][�z�׻�k���+E�?�y?#>�F�qK����З��:9�<в�%�e6HY�'�m�S�H�RL6������[�\�$w������z(�`�e���+k��_2�6Fݩ�R���+[��"g���>�8�V䏻��.B��\z(Ч��bs�ߒ�����@���)>���~bR�������z�Qd�t��8��C_�OL��R�J`w�Ջo����dι�9+Q,bf!>���L�E��0�^A��B�Dz#{b
,������=�2[b��!����w�����^�F��F6�reP�0$��ݳ�O��WI��hTڷ��?{|�@��^I�Ц�IEND�B`�images/admin/dashboard/tickets.png000064400000003104151163531650013210
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�IDATx��Z{lSU���ګ]7
�9�`؀,&T�fn<B��0��5$����?����<	D�#���
���[�j�����ܛ�kK�mwە/�rO�9=��{��{/����Y&~�����M�:�1ʿF��Э��)}R<'k�k�K�_��i���T;|��mQ��X���P���^LX���e���ls�E�����T	�F;�n�ܭ'�4��b�@:���Eٺ��K��\&�ri���ˆ��p�4��>td��=<lU��
�Ϝn�%m
�>"���Q�˚UE��k��nq��oAW�n?o�����=��?�$�����:��2���.JTiX��r?u[��{�z7R6�en�V́�0
+�*�sp��.��AD�BcN7�t���f�����܌bRb<G������~�D݊�|8nXl���J�>�"ExRfo"^��\<�=L��HWfCS�
���ucC�0��������s���|<��s1"�g�%��V�(]Ey�v8��I8��XY���ɒ��'�@���ᡛGa�s��qd*��+�4�҅�.
4~	����U8�NX,��lFE�j�2,��y��V�
w��P��/,OP��-�v{��t�����`����d%kpD�����SF2��L"KF�D�#*<�	��.�+��
-���#Jx�)���h�9�v�2Ȫ^y��!/��閝�if�g�~���'��U�[�r�>؜Ff���
C��4�ߘ�'ON
�@ @mmmH�
!��}��O0���T��������]VW�g�~���Eq�jxb_����Y!V=0OUÄP��e36���
����>����#��l
�̬��TR\BȟZ�a��4��d��IL�>R���<R��v��-φ4m����(Tjp�F=�Lcc�����j��Kb����^�9�[�8K�Yq��bT��B���]���m�:���A�:��_]]��A��b�[��\_~E�Ր	��[xٲ��~�9�b.\�8"T�~V������l�B4�RJ��{��G��'��F<�0I=a-t�dEj��IV�	�k��(Ph
��FS���5XO��۾��a@�|%�?�?��Fi�1.\��N\UU�s��9�f�/L{�̭(�|)��i��v��(����0WYC6�,��F�,g��
,���o��|���W��GJ�S\WS�m�46B�e��'�&�4F9�?��(y��hJ����p�\�>���Rq�:��B)t0r��
����(�M�n���Z��g�h�a�;i�6�\��҉��K�a�l�z�:��!L���1:�Q�}��-��V��~S�
4��re��4��b8�DG?���4�~4Z]{��$y0�L�
��k�e�Ў��1ވͥS�EH�
�sfu�����~x&E[~G���~+A��J`��_�<�[����iC�c�IEND�B`�images/admin/dashboard/updates.png000064400000005141151163531650013212
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe ImageReadyq�e<
IDATx��Z[l��fv�b�����cl�KB�4�%��IS�JUT��%��j�>��TԼ�U�4y�R)}i�\(�Z�Į�p�l0���^{�s�]���׆��t<3���|���g-���'y�o��N�q������!��9�N�����ޞs���^SS�;v

=����Ƿwttl����R~��޽{�r��l������d��ݍ7n���6l���(i��cfX�?��rx&�u]G<��(`������|`��z���W�8��02��$6�M�͛7QYY�����/e�~�_�
�Y��G5��=;_��2�(hShMMM�۝��(//�ڵk�4>c�d�����Vn�/Zff�p�k�U���E|:0���-O��]O��;Z��N���=���Ϋ�Ըj��](0����q��������?��T?y�(܎����+?����d����
�q�t�A҉��������?��.��7gJf��r֢a��p�/o.�@�L�Sp����8i�"�9�<+�(�[E�h�/pf�&4:��TS����E48�b��Il�X�Ϟ.�lA���m�	����.�۸#�.��<x��
ō�L�/�,=���%E^̃��(3�&t�E��	���D!?+�py�x$3#f�Y�B��p
�`!���b.�v+#��e'wJfV���#"�BΉ{m�;��
��Ki�'U�̡��=0a�!Ou�����Wu\�e<6n"��j�s��I�﹎O���)	��\�
TB�,X��<�i}u�>nYBx�yɹy�(SFQwE<tg/��+��>�3���Ȉ1T�&Q!�\�Ė��Y�W���.�C[�ܸm_��(�i��s_�ȓ�,��"�#��I���g��ځ��vx|���"T�nt̀A�Gc�5��~�
�X����<�7�wz^[�ZH�����E��8H)�䙇�'��|e�G��]W�bs���@e�%�ajb񈊩�$Tj��6ҩ$v7��u��X^_%�=��6N���D!���Q�zo#�l�%)��x?�%D���!h���6���E��w�b�gY���Na�V?ʝN��76��ڍ�X�jN��>��
���)d�3�>�S�c�@!�:T0�S�ȁ�N�]?��_;HT�
gT$�՗{�aA0����-��;鳤<�,$
��‰^N��,}:Xj���GdՓ�"ő�/�T�#���>\�>�}��`�?7�������Fp�V�VD#Q4!�Ym��j�{��o�\����ϸ/X
�QȠbe}��֜�s�2�-?�yJ�꾓h\ׂ��sn�J����24
��h���56>6C�j%�F�h���(��?+<�j��v��T)��NL��^������}�L=���=�@
ZP�5��˄D<�ʋl:���Gb叀���e�-J�X�S��ѳө�����Bu��2�[�AϦa��7�����dz*�O�M!��P}u�z��_y�!$1+\��D#�h�)���6�8�`$c���
)ۏ��n��=�
�l&���^L��)R�}���@.;����SS�QKԭZ���9k.���GjAT0����EC����~R�	x�����ccH%��>���<��g7�Si�F�_03���@5B���H�.s�)��{Gƨa��1�1�;�T���
�=݈Ŧ	��mx�6.�[q;���
9�A}����#�5��E0��tf7���DS�����Otcc�0�G	G�¬�&\_����W�`th�n�Q����1vo��B�3G]}6W\B��Y��ρ(47���/��_g$�&��1���
�ƚ��!SU7'����r�����yQ]C��ԩ�(�g�KH�8�BQd�
���D�
�5]c"na�N�Uc���Zn陕V��whab+�cY���Q1�	�~>�>j���”t�H%RhM���;�XJ+QDFY�g��	�,	uM��N�5�.Hޘ?r��Hŋ�F�	x��z��WW�SY����R6O�5L��`��_�F�F%��khV�{��о�$�R	HNע_�(�b�
�I7��w�>���+|�-Qby�����h�kb�h0)a9k4WEU�TȊ���޾0D���wI����4��yM(lq)KJ�h0�h��
K6Y����������W�+8�!��enϔZRw��;����ȧ�Kf�hUbE�S�D��$��.TN�
��c�(ZB.'-�4�n��f,a�k��Y�$ȁ(5_65C��p.Ŧ�M�h��I�y^ZJ�qL����-�C%���W��93��?��d�t6�g
�JcgS=���2�y��|6iى�ij)h�ƕ�,��p1��cZ4���ktZ9���F$��O5r[���C~�B��
����e8�m=�TR�����I��{D��'���<֑B�b�C�������Ȱ���QhϞ=o�>}�r���C3?_>�[8�
^[��g�/X�?Y��C��IEND�B`�images/admin/delete.png000064400000001114151163531650011054
0ustar00�PNG


IHDR(-SsBIT��O��PLTE����も�RR�::����

夤����((����tt����%%��66���붶�oo����

䒒�CC����cc�������??�{{�))����33�mm��HH����\\�rr�����22�;;�����LL�99�**������##��{{�))�MM�88�ff�ssta�`<tRNS�������������������������������������������������������������b	pHYs��~�tEXtSoftwareMacromedia
Fireworks 8�h�x�IDAT�]ω�0`PT���k���)�(
*�`���i��K�S�_)�Hf����;��z7�(����,�S�Ns^�("%��Z�"�LD��^]_	�䲩=]˛�@��6g��=;`J1]����)�|hjƖX����A��.3�t�<6D��QQ�#裣��?���_L�@������oIEND�B`�images/admin/departments.png000064400000005345151163531650012152
0ustar00�PNG


IHDR00�`n�	pHYs��~�
�IDATxڭ�kT�m����e9��yj�C9��
%��<*ҲfU��ʐ��!^I���1TZr��+��(��g�û�g߽���ۻ����׳����s]�}������j������O��c������U��`|��Y>z��Ž{��\�RXXxJ3��/7y$̀h�|�C�-�7oޔ���۷o�ƍ�V�Z��5C\s�G`��X7��2�"0�_�>}�4b˖-[�dI@@���������������a�2T����2�\\�zvd|||<==�Ν�������\�<�3��.he�������������(͛7oΜ9^^^111���MMM̘6����8�1��!�F�����7B›W�^����WWW{{{&Jvvv]]��600�c
��߮]� T�ԅCZ��7޼y3�hggG
��---��bH��@�f͂
��ϟkM�."$L߿���4{�lkkk???ֳx*֋��]bȵ	������B�V�!�Ƥ���i���!!!_8*W�ᕢ,<@�p}}=TVVV�B����!a!���͛����ǯ\����Y�������
Bh!GB�*	;DH<{��]dd��ѣ��<Pw\���B%�Bh!G!�ĩ�H��ҥKdjʔ)�/_֚4�wE�-9���	���픉�344tĈ���j����<�9�
���	S~o߾mnn�����ɓ�)���싄��ȑ@9)��!O~������
*.��_�Z	T"�rRZطGH&�:abb"�#��>|В��']3-$BN��i���nO�>>|8kRܬ��ON���:tÚ���M�JKK���}���@�@!��!�U+���*����{���ͺ��������\��hk?�?�`oo�V�,����@�@!��c�r���$^�=B4�LOOW�T������Q��6mI�O���8�����h�С�7o8B�c
�C��B�B�!
�FH�ccc���Ȉظ9&!�TaIN��c'��ޓakk;r�ȁ�W�;n�!K3�@�*��	��CT���)�+V��bMh���ۙ�s��oU�r��Pf����ԩS@��*e�V;f�
�r$BQ�*9y����c1�i!ɾ����Ekk+��:L�wtt433���=���5��@�*
�'ȑ@9DE8;DHla6�6X��<��oU]��7o[_�|���uǎcƌqpp���������
�G�a
pH��Zȑ@9D���J�F����,&XZ�tY�Xz���F�~�^y�zm�:�1f��,�Z;��Cr�@�@���F�H
���
�PI<����k��������~����{<�h�����W���!��|�F����Rf]7_�>f�
�r$B��ۋR$K�J��ٳg���&O����B߄���Խ�;ӷ����?3s3Y�:_�2]F3��	TB9M��us[��t�k�����`2����e��gȺ��Шİ�D7oss��7:8$PA-�HL�9w��i��?'��sH������0��z���gPX\Ȇm�붮^����g�Xs;�/)cZ�Ew'e�a�9#��*���&Z;��7(3�Z�ﶯ2�ڵk�&L����=��u��G\ʁy��d�/7v����0˘�;�c
�C��!�r;W��S�Sw��M�`U��!cc�Ç/�Yn3{�т�Ҋꢋ��*��G�iR�	d�ĉ�U�W�dӃ1��!�
Bh!�u�pZ�#�P�*Ysoݺedd�����}�4���-�^�ohy��Ş��
�7V
��B��3		TB[|����N�c��y���J6��!Z]�+WM,��)x��y�/
��O���Q�9���׏s��c�v�3��	TB��s�dܴ�+o
�:��"_�%�&ӑ�
���B"�
J*�y�������RpMMM
������oR�G�a
pH��ڐ�Ň��e����!�I&А!Crrr*+��Fnغ'6�`L�ȭ�ή��F?��Lj����цꋐX5�a
pH��p��=�C#��˔��W�d�),T�*ž��|˶�A�1Aa�aq+#6�.��0i���ׯ+��N�3��	T,xh�&n��(_,�����w�^Z�-[��:u*q��5�Q��~��V��/`itt����kkk�>3(I���'N�Ipؚ���;�rsrn��荐�(o߾%H~~~d=//����dA�����"�E�E.\�{����i)���������ŋ4���t(;;�ߧ�UZz�ƍLYe뭝29��Ϙ1�"�ūׯ)'>lll��˗/񸰰���H|�P�֔l��p��G�555�	wX�]|��,P�|�*�gBB��&D]�0E?5i�$*ޢE�Ȉ�u}R��1��5��_���TJ���ݹs���ݻwo�ϒ9{�,r�c'�`%�W|<T���G�N}Ri=C�&..�
�W�^���g�SpI�H��
<l�0*�n��d30�F�S�H3�cJ��8�.Y�'���C��}��%��3������4�O$�&��!������ٳ�J3[```ss��m�{�4ڸE��B;s���f
��S֝�w�jc�;���π����p���cǎ9r$77�����q��Z�;�����
��(K�u��_�CZ��!�
�G����m�����Tֶ-IEND�B`�images/admin/edit.png000064400000001544151163531650010546
0ustar00�PNG


IHDRa~esBIT��O�PPLTE����������������������������������ޥ�޽������֜�ֽ����������B���Ό���΄��R�������9�������!����R��ֽ�޽�����ƽ���ֽ���1��!�������)ε�Ƶ������������������ޭZ���������������������������������)���������������9քRƄ{���Ƅkބ�{��c���{���{s�s1���{���{�{���k�sc�k){{�{{��sZs{{�k9�Z�Zks{�Z1kk{�B�B�J)�RB���A��ptRNS����������������������������������������������������������������������������������������������������������������ab�	pHYs
�
�B�4�tEXtSoftwareAdobe Fireworks CS3��F,tEXtCreation TimeFri
23 Jul 2004 20:14:04
-0000�o.x�IDAT�c��X��$�@Q�9�?�*$���6:F~P!I���c\�;����oZn�!����ovL�7���c\������kz
/����O��CT�6LHU�*$���!E�R�.F>e�HQA!�-Kk�����G����w���DHDX*�NZC�;C[�!��P[I%
I�$���L��%�؝��B���LlL�L�P!������D�r
�%Q�EC�IEND�B`�images/admin/edit_fields.png000064400000001117151163531650012070
0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<�IDATxڤS�kA����f��nk-EJQ�=�X(U0�z���{��[OQ��������(ބ�G��
����Iv����uvBmC��`�޾���{����#d�����۰���ӥ�r��ʣ����KOo��7��[h`�g�A��4�=t<�[����IPT�=Qàȏ��Qfb�1�Bד]����SiC��m�d��J��<��d���!���J�/3��i!܆�k2���'E|��~m�ƽ3�;���ԷRs��7P��9c`>S��]�B@ð
�����r�_���8!�N��cE��2&��ZXZX��oWf.w�Pn�p����ٯ�ۧqㄥW�׺��
�斌fL<��ᤎ\.����R@(��պ��b(\�j��fz��%�\���{i��F�_�H��"3X!�qw��)��F8gt��#$�K��r���fWI�M�4�?S
���a�!a�#�eS�A�^�IEND�B`�images/admin/emails.png000064400000003712151163531650011072
0ustar00�PNG


IHDR00�`n�	pHYs��~�|IDATx�Ř�r�8�y�7�����$!l|_��,���$�I���Qu���[��[݂��]�x<�?��A�d��Ԅ;��>��hb�fzᷥ1�����
E��II�m�o�`���o/Z�j�X_R��G�a���j�����@|\
�M��G�>R�Ԁ���E_���A�u����ë�S�n�s
��bK����$E9s�l@Y��1_��~��/�j��71�s��l3�g�Sfn��p��������"`I�Ν��b���kC����.-t�gqU�)&DKs�����#���-��S�L�T���O�]Jc�e��6I�q��A`;�aZQa,���+-�a�v�.��k�u�8��i�h$u�����m��A�u]�uC��7�al�I��[��ʯ�|�WN@��ϲ�(�zl��$�	Q�I8�x���
�ж�"���BrN�.�$V�ff��3���<�W	�d!5	�@sݰ���D��$[7�[L�<ʉr|�J������ل�����1��?�ֆ�aH)�L���1M=�h������|��p������p&�ǵ�u#�KlׇˀR
;E�E��xG�X�Z3*�͢j��4L��S��=m���q
ZV�W����`���R���$�$�(kU�mU*�����,���k�n�����u�iVhI��26�K�Bj��qTI8LDbs�lcu�=if����n!��];mL/'��N8c��3��,��k�1��nZ||�,RVH���0m�*�
�]ZW%,ı�ϙx�#�։��s��=��	h�h��c����7��q+��	��(!�FQ�jݓ��z�m�	���QJQQӜ�骩.�-�1�DQY5�D)�]��;���.�	52�3����T�I�)֭8�x�9�M���炭
�d!��YXO
�^����Ӣ���b�Mݧ<x��(���	O���U�Tu���]VȠ�m$�g��&oz;?J�wK�[P�
��?�9B�x�!n!��RۼK��!l��zkG��Ko�N��q����0՝�������/�v�����=,�x
�Xs�(���")DI&�v�IV\55���\IS�R޴��8}��@�j�	o^�V�""2Z�L�c�TL�34�@��"T(�f`��V�*oP;�şUPۣ�4(�@N���e����W�*8)@�	b�:!��O,���{<�H��R����a�/uw�9�_0���փ�1B[-^�D��s8�yR�)�+@��A��r�#ƃ��$\!(�ζ�"�PX��>�d�0(�g��&Db�Ep�"w����R���{P���0x
�N���RrUDE-�wY��	��R�X�:!���
�T�6�_�F;�ډ\�
�Z��}更�]]JV0�<���@���H��V�M�;��އ���$&��uwv�H%'U��6��E�����X3�e���`��(�yG�Tx5�Q�{Qn1"��rHJX�
Um�Q���B�|#{?�`*�
�n�:�D
�o��[>�?��T�iV�.�pO]� �+
5�eԉy�۱>�!��!L�ЍR�|�r:�;u�9N2�D�A����3mNj�����_�ɫ��p��f�P�d���B�S6]B�Jr��%��H�<���S6����!v���.'�eg�[�5)��qP���$Q�J�	�I�+�8�rX���:Fm̈3�
'������+ge�Uk���WG���@�jA�.c��s�RA�`!qzN:B@�we%Fp
N��*ȋ��͗��+qwCf{xс��q���fe��[�7=1�ֆ�_*X�pW���P�Q(=Y�Y���͕�]�������i�rw��aD)(�]�!H���qs����������C�x��G�	IEND�B`�images/admin/frontend.png000064400000010164151163531650011436
0ustar00�PNG


IHDR00�`n�	pHYs��~�&IDATxڭX	XSg�Ν�s[�uo�bu���.�vjW�u��nu�vQ����Zk�
�uWP�lBB¾�%	���HY
��HBȾ�,'�@�S��y��;�������GB��P4
`@�8��` ����%?,��;����	�=�ڰ�@
^EOj�����@6h�`�|��
-߅zmX��~��=9=rBh�T������?=>��,��1�0+T�3\'���(�#$�t*\Ԯ��"g�B�O�,	�~�&�
��Z�u�%�������l,�Hʇ���fxNO�&-d�ޜH~#�B
�3ԦE�9��asz�

tʬv',r�D���p�~�yb����O_�'��'�H��1�O_�ں�G�݃
��
^��I�}�~,�qj���T�=f�3~�/k=?�G|
��ב��>�
ԢBz7�̿?���@��4�.�f94�z�ktd����=�k�q/{n��G��<מ���
R<��p9=T���g��4�|ljߑ��0��=a�}ߓ��y�yW�+��9������,W�]S����ڄ��3��2�8�t8�tp���G���Ҿs�t�͵_�������6�~��o�5|��X'��d������;V`J�Ia�1Y�w���L}����K>�L�����K/Y/�؏�/[`��<�<���*~�Ee���ߍ�웬���aR׮ц���k�?�������Y1����?�tjF�����;�6^x���L��Wy%�;�#Th0}(�����T;Ǩ�<��1����G�c�_X��p8���6qi���qpU���-v���Mg�7��Տ�_0��a��E������#�j6�N��f*wF(����D���ʝ�h��I݉�ŧ?"��X�6iE[s1�]Z�>����˟X���;:U�931���=]�9�
�7zG����w�����X��۾�жc��0ʶ=�9�N��e��<�M��.)Q��jp���|j���\sh���m��c��虚#ӴG��%���p6Cr"��_I�6��W[�F�l���mc1lײu�4j����?��2�=��v[)a8
��K�a���Vx���F}p��д�#�:��u�Y��g�#m���gAph���A��ygD�
o%�+�2F�e�$j�h�H��Q�?��굴ţ�.��XJQ��X�7��p���2�EI�Fsv��������ST?MSx�O�`�c�$3�r�
��*��&����c���	?%�|6�A���McgV�~:����Bf\���KRr4�PI(

�؈������!��z23j����r�3��OR�8U�/���e�
�<X�
��
�}�u�+�s�Q����Fb�8�a�0�	��k�WO�}>[|'����-g��"i���\YN���r�r�e�Y�����Q-�2������v�oj�?�e�D��Sd{�ƀ�/Gٛ˱k<�R!x��}P7]��;����֎ԯ{����o~Jrbm�ؼ��Iy4�����17�|��Ԅ:^SK��/hN
&���[[ۊJX�̐_�����G���:��q��Mm���|5���I-��°'�y�_L��on�A�%�F)�pj׌�]�D�G�o�g~�T���
/�a��O���vF��u�rh)��N�X���|;r�!^���"
��&.�AB���h��A~`v���'����|J��6�@x��_!�:x]���,"pV��,�zɟ�=Wpyڂa̘��D%�s�-�ք_�"�QSr�4L��H��O�U�\�NW*��6��Z��ڄ
�
@ΌY��`X��5�CsQO
��м#B�e���Z�v�
�{��Wwg����Y6��}BÎ���]LZ�xե���Er~�����V^����B^AVf��q��k�i�/_�M!_'e��t�n5=�����\&.���
G�Ɏ�Y���mc�F7�~���xB,5�B�Z@�\�k>�a��_�EZ8�C�V&ʑ�3�]�A3���	�q�f���r�fS�=F���k2��t���QU)��|&�����	X�!i���-��>y�~��Osu6�џvEW���"T,�SÞ�ʣ^I_2�5F&b(��݀��`X���g�^qvV��ˬv�$Z��A�+Tɓ�0)��1��l|0+���`���j��>y�������xB��BQ��C�y��}ˊ6>��bBc��V!�C��Գ�f�w1s}}\��;�>n���HOH��f	4�֋Ĵ,��ޤ��˩�*T����}\�L�
[�ٍ�?g,���4Kzj%w����»R���P�~�J��rWM���lb^�6�w3�R����^1�S%b�x
U���]NN#ݤR�(�Ir"�TJrJJ��>�s<�0��
��th�:�d0�SP�E歝*9�\zvM���֯���/�,�f���&m�u�zL�'�"�Z����\���
��
ky�`����QG��̻Ok��>��ۮ�B8E�Z��ݜՑJ���~��x^p�޷��ȧ�[.��j&{{�}�
���3��x�l�X�����c��*�aB��IؘL�L0�m˻D䖆L��X}��+�$(�+Bh�O)���A�ww�WW@t�^]	�`
=e���H����T �&�KXP�/���
3,�j���y:)�܇}�©?p	������P
�o{�l���k�x��<�[�����)��H�m��;�q��@@Lwp2rA�5q�
��j��ս��:6(:t?�����ѕC�M�G[���������2�QW�Օy{J�Fj��ZkP+g`�.a�Sd��
,�L4Ř!f[��·������CCr��[S�Rg��r��l���4��������P�^)IY}��s�_��7vVL�K���
s\�9�ٕ�q[�e�+{j��ڭ+��+<=L���7U��l���o���܆J���:��~O��Jy��CK�0	K@����A&����=냞�������Auv�*�^FӵP
2�QF�i��m�qt�9T9�>&'�˚��ک�HI�ZҶ
�C��% 
�
!�
����F�S����	9:sm�t����DJJJa��e������RFzjb?��I�J8	ۙG�S��6	���!L’��AB��	X�a���ve����q=D˜=L{w��P��o�6�L��Yڮ�5V%[)���6.7���	��n�]��a��4
��
�C�8�݅N]y�aZ�[�I.U��11!��!3$�3Xw��Z��>ɡ${�����ޮ���s~
��Z�5��k�]����$
9�����`n�'۔���l
����T�(��Jeu
5����Ǫ�&g��y7�
�G�͉ߒ�ݼ��?b�X�>���䊊�eUgV�|7��4 ��
�C�u*S,�DK[��iy��u3�*�W[��L��5��P,nW!в�*�
!�^���.����b��%�?-�
u�����n�
�ݮP@B��	X�!�z5�U�����2��d��:���.��)<�5*#>�:��2.�"�k�]j2��洭/X����о{KJ�.L�J�<��6�M��8���`V`�`n��Yd�~��o|0�Wt�*��j��S�yىytb=!��X���n�^Ύ�[�?K��<}�;�]od}�&��s}�;0	K@�AB�c&ى`��潢�}��e��
�_����d��R��Ӥ���}Z2�Z�OC��Ȗ�tOO>'ak��32�z��}n��
�C��% 
�
���	Xi`2̭J�]E���P�,�(�j��%qz�u�8�
�n�%8Dq.
�N�߯��F�67y�K)Q/
�C��%���0?��C����W{[n�V���}z���ͬ#��h1�b����¨�p7g_ڞw/����n��53��ŀ�f�$,ݡ�
3�*\��;7��Jn��Y
���1��:�3�yDE}b{}��!Q��I�d%�
Ɋ��A*�#�F/��$"fID4��`�DX�^�O2H0!$)
��GT	�]�`-~�e�>���G�>���q�NX�>���g�O�|�*���.IEND�B`�images/admin/groups.png000064400000011542151163531650011137
0ustar00�PNG


IHDR00�`n�	pHYs��~�IDATxڥY�[���h�z����ZGŁ[p���`�*�zm�U��*�"�����F�&�Bd�E
!$�Ha�@�#���$�k�V�<�}�N��s��9����~����\�����ϟ�Y���zc��2��o4W3�����544�B&�Iq�Œ�dmmm�-]�_�Wͣy��\^^�
 \#�k׮���{{{�ر���g�Ӷm�v�ȑ��p�Z=�T���נ����,�!!!�7o޴i�Ν;���/���޽`yzzB���855�*��4��UJGGGu:�N���HJJ�`0����م*\�v�N��xi۝�[�W�V�����n��m��qE���O�>=q�ġC��#���u��={�=z��ŋ$	*0����-nqٲeh4�U=��!W#��
S�9���@��������ʀ��E����oذ�nt���6���ͺu�v���Ώ�6�\-���N�:��|i>/�ſ�/�nŊ,|
g���ի�\�&[�f���atWV�
�+�Ϟ=

�>06���6�ŋ_ǎۻ�+
��c�\�|��W�u˖���[9�;���H$Z�r�<��\���{mڼ�ߡÇ!��o��`�����=t谧��R�|C�I~��=��G�V����\O\���|��G�ضu���5�w�8x��aH�C�\�y�w���e+������!�;h�>����m�7�t�R(W�b����<�`|��)�����ݽ�-Y�f��6l��K>_��s���-ULjssoK�9�k�3��G�0��@��D>�쳅BNA�`�g�|���ݻ���޿z�.zC^��O�q�\�ţO���F�>V��l)�<fa9����d;,%|��ϗ,Z�b�ǪU~~_�&
�֭[���&H�}����}�����^�r�޿s��;T��l��[CFj�!�K���dvW��i�4Q��!�1���`ȕ�?��}�қ�}����W���}�
�M[�^���6,Y���g#:�ׂ�+{|�.Z����<0Q�nӦ����#F�|�Qõ����.YX��h����ܻ�E�o�`��uF~�ݘգ�.&��;�w�窥K}��5�~�<��"F��Y
������q�а�U�Ħ���%�k�mڤ��X�*�[�%��!���;g��;��[5�z��O���~z��Gq�O;\�9�D����4:��~[@�iT��-t��4X�5�O��]ݾ���ϖ��tJC��U���,�Q��u�\4ͬ���!s��.	���ΐk)JHH�x���k���P�h�L4d����gm�m��v���6j"�@@�&�ȹ����s#7�`��|���ѕN񵮒(��.����V�i-`���n�?�DoX���R�7oژ}��&���-b���#�js@���Y�P-j�:æM�UE[K�[�W��8滠�t���Xs���V��6�9([��ብ�F��&ַ��N�x0�sǟ߃���A���i��@O>�?�!��#��=�U�ڴ�U)�ԁ�TЇM�[٣��Qr�K�3+�,'�����D�k��o�ldidi��~�L=`��i�m��#�j�����/a����
���y���۶��;�W�$7{�V�*�W�JkY(�Kz�S�V���S�k�,��z6`W5��v7��_�vs�4`Wjo4�
T����ɵVZ�vfn�W�^o>��2��d���Z�δ���\����v���`PFkѹV��z�u%��w�BF���C�����Ԉv�Ǹ7�V�W��֛��m-<]��9B�+m�/o�t�^���4���+i�����L�ka94��T�^|>m������I`��P��'�.6�YZ�ǔ�R�
���^�^��nW���Ī�����r$��G~�u���t�]�Qs�}��IĜ�o<A��׋�ٹ��i�8�D�2S�5RX�G,�V�w����qP��q�L?h&�@�R�̡V>V���:z�+k��bEy�R�.�Hdr���j�34��dx�Bc
����gj�%��ܒ������MNM�[u�VYuc��BE>kƭ�H�&�Wf�����D��L�=F����AȈ,*7+k��*Q}[KkO�TI��h�z�=����&i)�֤�y��$0��71�ΓkNt'p�'�ˏѪoML
�W�WS�3��^e�I\�
��4�L���T���G-�ǭj�{s���5�^�ؕF�J	5,���%:�D�(՛J4��IQ��!^fH.1DQ����
�����o��5�¨=G�>��~��8�Y�Mf���E풰mhT��e�u�R=�TϒW1��YU�@#Qj�8�U9��E�9��#��.gAM��*�Ja&�DKU���5��^��X]'Px�$Q�
�媴冲#�SDR�®,j��l��b8Cԟ�h�e�A�N���:D=O�H]C��i�
�P�/P�+�%Z���"֊+�M��r��
��|�<�t����P���nh�t��.��8�i(�
Z��.R��+�kRJ;Cd�a����`vݯ<ӥB�EPO~�)��;��p�"
E#�R`Lḹjlž_T�a���R[��*���&�Ѥ�"u}Oo_����ܩ�k�4����͖�CSCQ�T�Ҫ|�&�X��*q\9�+�(�
��$h
�7])�H�.�_��9��j��5G3��H�%H�~�ߙ[q���cC1�tfR�3�,�Y
��e��2�*��ez��`������'��.��k��k
��2O��^�"�@�d���b�TX�5�����̺�����-��RJU�O,��T��']v�ٌ�
�Rh����
?�!FJ��R"_MWCT�^g����~�l��fgg�F'��F���&�"��y5�W�b˲�,�
��G�
ɺ`f�Y���#��t��'�e����O�~#�"��+��-�ؿg�ɡ�ٹ�B�:�L'��"�	U
�r�
��
��$:�}rrz����$�̡�����`��j�D�_�P,)Ќ���y)y�,�Ts"��d��^{�9�R�JU|�B���o۽B����#�G�PA����N%�2�|$�͖㋔D��,ր�X�5�#@��K����m��k!X�eD�
_T
��oU�hH�D<;�����8�T�,?�(
H��K������V��&��2�C�Hr0�i�%��8F��L�;H氀$`�@�8h�ڦ��M8m�|�U����(P�z�\9�ʢ����)DNRnA�0����
J2�i����}@L��7J�+�xG8wkX��u��`ښ�ϙU�@uM�O��X-�L
�R�J1��n��+P[��''ǝf����O\��X\m09�%�f�
X)��DB!h
�|J@�H�e{%{�%~%Z�;��������N_DY�K��3؅��0G�d��G���J��e$�#�"�/�B)�#�X�-�&�N8�##�
=���q�r怠
R�y	��q8�S4=I��AFs�F�|��#>��C1�-@�M�k�&0o�����OPe7i���M�Df�Gf�bP4�[��!�h�l�����jL����M��
QDj��*�$g҄�b�
�'όFў ɏ��!p��?(�����r�pS�%���
e�%�ʋ�e���0����X�b��O��4^h|��(��ą	��S�'������eںɉ�������Ѿ��&�&�b3hh���@�+�ɡEf�#2����O��N�f������r�F[L^$�8���Y����Π��q��I����d�FL�dlx
0O�9�X���DdC�"(E�x��\o��K�����ب�φd��P��2_�qp�Ox*�^26,���{i0cU}�%��/��/�/����a����O����?�?���^�Sd��'i@ҝDTx�!�TG!�
)���VN������X{A����\�ŠsH���>�"=�
�O��M�܎Cތ�A\
�]-w[HގP�W������!��(��\�`�7s�g[GKGO4�t�Q�ͧ��N�^*�a!��(Pz5ˌȢ�5�#���6[?�
�=��|n4��eĠi�22;�Qfރ��{)�;�h���W��Sq$��'UH�TJ�V[Sch4[l���}��ٹ�/�n�6[t&�ׇ�!Qiף3n�e�%��K��50�8آ<@��K+`+�9mx���#2IO�ɏ3I���i�0݉G݊Eވɸ�~9"��X�|fnb���
hz
v�ٹ�9�����ê���PZz=*�rD��)!ш[O�`r�	�;I�{)�i�����!�����
����X3Hx���NO�B{
BĄD!�D�E��d�����Lc?y��r��WC�t||L$��
0�(�qZpd���u+6;4!�n
s�S���a�Z{�V��PT��%�#!�V���,�ҕ'�Q��H�d6�~�y���1�9�/^�B�����PDZ,27,y;6���4�fl�ըLL_k�s(ixh��E"n�"o�f�p�
&��q"���\���=333���o����=���#����Z�RY&*�2��\Z!��Bਖ਼j�N��谦�&��G
IF�琘xja>��勥2�F�1�L}�����9�U4ӿ�A.�	�N>66ˍ�������������P_U��q�^���j
5�MfS��	uv������(��0�v�y7C�a��
8��|v�m̵�B��(T`|��?	-����7]��m����`&.�IEND�B`�images/admin/icon-32-search.png000064400000003516151163531650012237
0ustar00�PNG


IHDR 
szz�bKGD�������	pHYsHHF�k>�IDATX���og�睙��Ʊc;8Qj�%ICӯ|8$R�r�^�-*�T	U�
�!�@TEP�*��*�*��
�iL\�!㒸���ɦ�uv�;�{�����)H傑�λ�̜��<�;#�ʧy�O5���/�ۋV+n.���yfHDV��orT
I�֖��K}}��Ue⽋O.-U����'"
 "�J��N�3^�7;�S�s��[��
�V�Y���+_:��b���Z��/���'֦UcpN1F�}�V��­E�./c�#_�388������vC��)�����a�X������z��yx^F
U먳Tn�`y�.����}�A@m�.s����;wQ(l�:�`n���$�8OD�8'8�>����M�i˫�*��=����R	cL4q�P]�r��%���ٳgO�o�'?�Z&���T��U��|r��wS��b�$��r�2#�#��
��!"t�g�

q��&'/P�.�s�NR���Y�b�udh�A��:�s�(��8u���u�o߅�Քt�YtM8��1::����a�s�,ֶ�am�U��L^��:p���W�ĩ`����ug](}F��8fi���.S�Z%��D���7$��V]"�Ðf3̪H��6��B��0�c����s��t���t8����x�SnݺM�^'�c�0B����<���k��N�78�P�8M+F3'��uG
��$	��y�(�ƍb#$�%�"�8&N�MIbIbKmy�;�
�M�ե���
irO�AU���h6C._z��߷�S�U��D�0
����񃀾��{�Q���#���Ç�n���ٵk'z�-��s$�����b�E����Y&&���C�*ES�:e��F#0�T炡P���8u���׸>;K��"��$qDIB����	^}�Tnߢ�lv���*�FkH�
#նq�8y�I�y�m����E�F�Ν�mzJ%x�s�9�:?}�%�y����PfF�q���|`�gPg�����
<���<���]���͛DqĶ��?�}##��XY�g^��W~�מz��y4SAJ>�Ύ�v�5$TLGX)�յ*l����Z�'պ���s�Go��Gr��f�C�ǻ�c0�@Ŵ�
"�Q@7�uv:I�Q(x���H�����&_(��G���R1
Y�zټ����y������S���u�;8瘺x��M�8�8<~�\>�����ߌ��"k;�z���������8��x��LM]d~�:��+��xi֎@pN���A�7�1���O~�#&''ټy3����~?~�w���\��A���A����v��3�u�����h48����88v�Y����:����^�~$mR�Zapc����T��Hfg�E��)ϗ�\.�H�
�����ݻ���0j�o}�d>�{j��_z���}`��
�?��gϚ.�������y�$��r�O��E𭵾���Ff/;who���'ƈU%)
��\	��7ssN,.޼;>>.'N�P�ܹs�>}�LOO��z=�᯳���@��	'I�1��q-ywj�}[./�r9ٿ�k-�Z�k׮1??o�^�*Q�j�����U�S����ܜQU�X��qA����������v߾}.�˹;v���Q722���ÔJ%d��s�idiQ�T���y�ٺu+��gJI�)d�2�����@"zTXtSoftwarex�+//����.NN,H��/J6�XS�\IEND�B`�images/admin/icon-48-rsticketspro.gif000064400000004575151163531650013524
0ustar00GIF89a00�������!�$�!�%�'�'�(�)�(�)�,�!�"�)�-�!.�"0�$6�+:�/<�21�%3�(5�)7�,6�*7�,3�&5�)8�-<�1;�0<�1?�46�)@�6A�8@�5E�;A�6A�6C�8C�8D�9G�<D�9F�<H�>H�=H�>N�FK�AJ�@M�DL�BN�DT�LY�RT�KP�FR�HR�HV�MT�JV�L\�T[�Rb�\`�Xh�bg�`q�lr�ls�mu�pz�t}�x@�5E�9B�6G�;H�=G�;K�AL�BN�DL�BO�EK�@N�CO�CP�FR�HR�HT�JV�MT�JW�MS�IU�JX�NX�OY�OY�PZ�P\�R]�U\�R^�T\�RQ�FU�JY�N[�P^�S_�T`�W`�Wa�Xb�Yf�^d�[e�]b�Yd�[e�]h�_b�We�\b�Wd�Yh�^j�bo�hi�al�cl�dl�cm�ei�`l�cr�kp�hr�jt�lu�mw�pz�tx�qx�q|�ur�iq�hp�fq�iv�mv�mx�oy�q{�t|�u�xz�q|�sa�Wn�dp�fr�ht�jx�n{�r��|��|��y��y��|��}��~�������������������������Ł�…����Ɖ�Ɇ�Ѐ�Հ�т�Ձ�ք�Ӈ�׆�׈�ō�Ē�•�™�ʛ�؉�↎膐∑牐鈚䓛ꔡĞ�˟�Ơ�ȡ�æ�Ǫ�ɧ�ʨ�Ȫ�ή�η�Ϲ�Я�Ҹ�Ѽ�ο�տ���������������������������������������������������������!��,00��	H��#�*\�0�1:f�Ӱ�E��&��k.�����!0Ҙ1[�l�gF���QfR.c���KdLșyуM��0K��O[�jѪ����YEJ��ӧ�h�2U��A7L�:��V�
5+��)��.���#����S[���"[��&��*U�D茉�F*,xB'R��ֺk���M�-Az���@=>ܸx@@��D2�i����{'��s�&�O�8AIT`w:���^lz��~��+�N��|�&��#'N5bF�`x�~$X�.f�M_?u�`	%�P��3���Lm�Wdܰ�B�������%��3�=��r��"��c��<�AB�`㍈d�!^���0�8	#$:�^���A�7��B��hc�pqJ)�]�	:�<�##.'�{��FH�7E�C6�Ä!!gHb�i�tr	0��3�����q��Fd�A���
2Ġ)��`垣���%�\�
?�I�
���^-���
ag-�0%��)��&���O&���G{o��F�r�Ѓ6����
+�0�9�'�rI%�<�O?��C�
��ٞn<(Fr�p�J�C�$h�A6rV"�H��>�$|�"�,+ǣj@Fr�p��,�K�#t�A��8���&��S�"���l��p)�1`��7�v�A
��
���2x��1Gk��$1�`�ג�:5t���̙l0�<�Nn8s�6Р���`��$1�\��@|0�4�rO���`�2
�
j��/	���
\��@��$U��:�ۏ7eN/�6�0C����ڠ+�Tp�?���Y(S2�7��O>�H�ŧ��B�w<4�ÓBd-���
�F1O>���K�OZ|1��sl���@0�TT+Y�.�����[�|�ʻ��x�>'Dov$��`\�8��	�ˇ>bq8�.W��:p��b�{��b�;�RA��A
QЅ/�a��i*W3��8���B���A�PN���<A�5�AC�x����Z�Z�X�
@/���3��!��xK!��N2��	V7���j]�"px��D$"���dp�7��'Ȗ�.���A0���|K��H*�+��:��wǫY
��09���dB��;�`b���
�HGJ�z�a����@�`F!���YW-P+)��
���N�O0�&��v&��:]*I��:����l_
~����N��`*�I/���J�	�{�;��

�E�FPE���0CZ0�㙠����7���D���G��_�
o@@A�b��&-�1!��"l���7n�7	���5,p�mn�j+�#ʘ����?@N#�
l��l0+[�Ud�t�e�@;���u7�,�j	\����(
`2�e$@��%h@��	�S2���!��	�
<��LWٻ�U0�_E`�)P`�mhKD�ZzR�8��d��P�H�'\�)
��$i-wN>���0�B�L(B	F�'`��Bp�
V���Ѕ1ԡv8�*�
X��ը6��
�;images/admin/icon-48-rsticketspro.png000064400000010334151163531650013531
0ustar00�PNG


IHDR00W��sRGB���gAMA���a
cHRMz&�����u0�`:�p��Q<tEXtSoftwarePaint.NET
v3.5.87;�]5IDAThC�ZX�g�uw�ͳ�72&j��
Pl��"(""6P@,����b��&�ĖwW7qW�"��2�:��AHD��ĒdK<{��7f6��/�}���:�9�;��~�/���?��/��q��v������<U�m���	o�y�	��j�oݔ�>XV������U�7����i��^�yQ��O'�1T?�6��_ッW��ë�c{�F���;��+�D<�-�/�ߐ�JTR=�Bd�b�Vy
����+��vbO�{�T�!�~�3�1�)%k��~�+C�]�0x��W��������m�!���v7m����&
��1:��Mz�l"������T-2x~�m]�PU�P���%�{���w5m�w\~�]ނw7c[��VG`f���.z�?�gYH՛��k�l�zC�<�u%V\Z�Iu/ߊw	�;�����m"��~���uq�ӊ����H�N�B���D�Y��#x�9ֵ�Bt�r��e<g��6j����ԯ���dž�X���ABm4�֬�bu<\��`��_�k���/U��˓�_Y�R|JS��f��7ךּ�Ug�[��Y_+��2���U�Zk�V"R�Ae���|p�-}S_=j��mՋ�6��vD�)=�c
���H����dR�-ê˖a�7ׯ�y�v
6T�aSU<6V�!�*�U�JFU.ê�%�Єa�0,U����N�1��뗭S��X�(z�d"��)\��J�>�Z՘<{,m�ֆ�^�h��e��$��$k�j.C��j4�l��Y���l|X�	�D^Z���^����X�
BhY�3�=�s�Z��v�buV��B�gv.��^0�
��ָQ��vz�W�-��j�q@�>�oT�ѣGx��1�h���+�6�����V�֯n���K�դ"�$F�S��"��t.�!��s���5k����B$&�˫A`��#��(����1ը�D�1����鳧P6�j6\�Cleb4dM8b*V`s�:���
j�W��^�a�GXR�es�/����U�/�$��aH��S"l��0�~�9+�C1M�f�Q%�o���1�'x��1���am�j�T�@TU8VW.
�R��d�e�wV=�l1>*?
Hdԝ��|�+��3�9Eޢ/fz�'"��~HM^	����
�13��Yu�XO��mԽ;���"����T��Ԩ+.1���U�d�r�2���t����XP4s����h*|�`��Q��<w�]tD��Ws�D�}���$L��K0�t
E�z}<j�}Cu,
����w�����Aub���F-��2���eJ%ˬ(��J9>����>���,���0-�
޹�3��}���@�E�c���[+0�|�Q<�P�l�U���yem1�*#��Q�~�X�PV����u6�)g"�x����`T7WaO�Iu�
����)9�09{,3��v$�k_e��I޼�`�o����z5N���o��T
�&V�p���a���rYu?i�s����ק`]~44�5X��/��;��.��vƤ�1{��	�H�e���I�!�p��˪�D}�2�Kv���-_�`�j�4��Qx�2�uY�m<r�(%�E�z�>32>S�'%�15�U��匉YNp�8�2�s�	��&�]���ƒ��@�
�L|�*�0���=�<=D��4"h0ɖ�$�@��}^�dIu�Q������Λ�М@�kU��5K��แ]3G���0�$w�fuF��U
�=M��9����[D�UGb]eN�?��E�r}����r�
�U�i%�NT�e8�y(i�Q���x�u�z�{��5��il��,T�pq�g�
��a����-��5$�`��c�-"o�����xܧ܍����oE={�L<6^k���0c�P�
��e���)	�w�q���	�k�R��L'��g�c�iWJ�w"��8��B�L�s���5/_�95Yx��.�}gi�|Ѩb�r<�@J�����2��g��QYu���P�c�w��!pJ���4["�:���7_`�����5��@�f����\�Zݤ�LH���̣l�Fe�Tg�L��ǣ��'d:">;
�z
�_ՁwL��i�0P"`oxbM��AH�fWz"�VߨK�q�΋�\O�>EaC��v�2Ԩڔ�㱓�y��hب���pFuJUѤ�[�#F1�s1��L��\�N+v��TE׆cr�����ePU�����ub�)�����)���ӨQ
U�l��Qר�qT'ʥ������������j#�2$p��
��`r�X���e���_����o���W_�xɟT��1�x��ƣ��)#�R�q<J��@�j���Q��9����+1�3R�aH����
	d�#��������β�Jס�r-��ڌQ�����R�S<R���*7*��㑳���h��ԨR�.>$��紴�`����Y+A��И#��53�=���J�U�Q��W�9��=�ۣ6ۅer�=ƴ�������nn�QԨ�����ϊ"�M�gz2�u�=�5�us�V�W�e�~�/������߹sG�{�ow��l�\�x̒�RG��#�7l�=;t���`?0�l$�d��E�)VIݰ�Z�+}D��U`��}��`-v彃���q������MT��9��h�W�Q�Pb�k-#��JnT����o	aX�뷮cv�T��cs�8$���;���69�����*�NT�G%-a�R��:
���#�>��w�cd��,��U�,���	#7�ּ
hoo�ݻw�q�0$�/��'�IN
t8�w��ɳ�������F��K{�P=���+���ݵ�ѭr���#�H^�l~N�ǡ)}E�ړ�f��Y�k7�b~�\�|��ט����)�)�.��J��c���^g�?ڨ�:��ʪ˖a�)VR���
��>J�E�9j�$k�z���`�։�2�B�@�9��1�v����2�c���k�)�
U7�GV]�7V]��nw��h�A4i��!)��G$:��:ݍ�6�V�#����
��.�W�2��z�4�:[Fj������Tg�`:{��'�Ӣ19y�P���k���y��%�m��]
�����Hu����Qy��lg�xi��Jg�ua�>"���K��u�3��
k��X�����/�y�.t4;B���Ny=L�'�.�Q�2��c�сC�Ga.[F�R�Z�F�HqFp*}�s�AXFO^��'\�5��ܣ��B^:n���k��"|��ţl/T�(�U�z�x�uB�H�6��v�m���0,i���c���h���
��w�;�W��!̦K����T�@@��
!&*������v�Ѫ.�,�)eː�7g'�u�7���cqZ&��o�7���	��g�ݘ�t��ڥ����#�o�����
VѨ�zV�*{]�̈4�x�-#����v�0�Ù����C8S|sS��4E�i��'����]��&�͑8tg/�g�=������I�G�w�Fծ��F�2�s��NtL�X�Q,<�Dk󶑿��;��s�.��~əR���y�3��n��i���S���e8�
U����Ir��&;Bݠ�C��7��}���L)o^t���G��[�0U6i=����5��+ƹn��:Y�p�aՍ�];��=F���.�HY
�$'=xS7:*/�L�^{����,J��sS$s�@�N8e�Q���#��f�����.�]^��u�s�(�����H�9j���(B3��E�9c�+1��	C�YcD:5��e:�.������p��
%�s���7q�a���﷿��d��D��*Y�����|�=�%Jgا��r�D�5Y����~	�ޜ߉�>�K@<��5B[�-&���3��A�%����[�^�����z��>�,N�78i��[8d��i����_��5�63U�V��K5��43ʝ1K�	_���xU�k�R���V=�ڄ�u�:֍ov(���y�9˽aT�[��?�Ի�٫vܑ�U�w�_�õy�6���17G9����U�6˹m�s_�i�O��$ե?�IEND�B`�images/admin/index.html000064400000000054151163531650011103
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>images/admin/kbarticles.png000064400000005602151163531650011743
0ustar00�PNG


IHDR00�`n�	pHYs��~�4IDATx��X�g�����P+Q���PRբ"�H*!D�S$�H�-!MH���,�cw����{<��3�cn�}�<3��x7��ҖW^g�9~�<��&'Y����p�'z�k�P�h&{(��>���
@SXQ��Ahz���0���$�
�}�7s�3�7����JH�=QJ��ov��}�K�Q�\
��5�j�y3D���(���Mm�c����O��s>��M�G�(�
���?[�-=+ڸ$��F��g`�#���z�==�_���֤k�z�����8Y�G���P����Y+╚t�V.�����
�����Z�Z����H�����x��gd�D!�P�Z��gh�\!����|o�8�X^(
��`�D���{C�r�t|�f���fh��c��{��lFx;�?��_�đ��sQ�+u6Wikm���5�#���PX/<�x������+;��i�ͬ�zFH�$��qr���@�1�b�U��@r�
�Cu�rv\���~r�%#˹�^�dϤ��������z�iU]�#Ȫ>��a�]A��Pm՚���A��eeϣ��h4j4��z6����Z/o��mw_���
ڎ���t��U�y�ɴ�qdqY��Q��[y���-۝�xlo�I�aX�����A&+���F��k��O��/慑�x��.F)U�h�=�Φ�u�J*���};����K����aل��~
�]�b���}�{P^`������Xi�^mV�Sǁ�tzЋ�ae�mY�;��Xk�^{&�avdb������?�=?�Jb/��z��j�pn�ƌ��G�W����ۍ��d�Nw��红�¿�B��#�j�clc�z.\�$��4�$&C��v-����%I�T*���p�^Q\{"�чE������nпY��95��9A_`�NW��N���5;��cV�g���^�U\���7�m(^�VA���CJ�w���r�z~����k�/Q�;�㈒Z���6/�Z���k�&{�X�Y��������r�l6"������${����ah�),�ŭ���K�>����W��C��
Fɖ�\���	a��4��p�<�jt��<��~�5�°����Eq6�<��>Ty���K�\/���2`��jٶm��؁�(����7
�%F�K�iA���zCYE��X���?
L���B1���g��z<�ym�����3�O_+>�A��I�mU�j��{"���"�ݤF�=�Js3CA�A��$�.a��P��2%Y9�
�k���T*ɲ<-x����>1�����Ǘ�?�����SWro�mx�e�@��թ|
��ʰຨ�>lz$Ek���\|�i(�A�q=χo�le���8�^���3��^��"�4O/S�[�}�r��+Y`���04Mw�x�V��B��4v4��Tm�Hp��@�
`A���V�7Åx-�ˊ�lps��6�]���w�����;��
�2��0Wa��C�0
�s}ߕ
����Y*Sf
���0P�y��4�=R��o�6�
��Yb��f;�,�����o���㋻?�G�Ɖ�mȪ��Z^A�F��e�9�)�!b�(۹��l��x�x�!�d�=h��D�0�I��gx)�y�����o?����[����e��2B��4E��]
��m���Y�	�[�ŵ����(�	_�	>�T+YsC�=��'B��j��g�>vn�~t)�$M�@	�|_QU�ѱ-��L�C5Z�-�+CI�G*����F(
0Y��,@�(1(�k���ʼ0mh��R�����������_�^��x�
z����e4�F5�8�Xq5�G��D7�wӕ�"
KA/�<�=ӲP'Ynz�0����kz"�h_R~�����V>{�g�<��vw
ɒ,��i�@��n�@5re&]�!ld��c�PRP�wrt��DՁ|�N�"��Ѓ+'���@�B���V��o}����g�<��ʻ[u�Р�V�7]��
�!�$c���t{#C�
4'U�,�����`�v:&�xp4��N�3[	b��S������t�+/�ҟn=���No���(I�Ї^����k�N0ԑ�1%�js�T���*S��1G�+��2yqb
CX���i������b�6`[���0��K��K��khCIRUU�TP��f�R5.Ӑ���%E�]
�4L\�����2�:�c�N	3n,h\�Ѷx��i��{0`J��4`צ�>��Kb�!p(�����G�����>[�*R��貖e�t@p����;\hPٱa�t4�#�a+�
WVV���i�>2kd/:�,Ix��,�
��A,#v�'8��P�7��HE�t��W��Ȑz�7���"�f3�ɬ��-//�vw�@�
�����R����k:����lRB/4`PE���2�����ߐ>i�
�@"loo߸q�
��
����?�IO>O�d`)RM���B]Q5�]�h�i�G=���/o��:��	O���o�2tf
H�C܄3�i
��}�3�z����~zM��#�8���P���'
������A�Aӈm�*p�p��C/��Ar��O$��b�<QQв��͛7�Y:�F�'�g`��WH#6x`̠iznH=Cs<<%0�
&U+�D��H3'��[ɂ�e29��E��aN��W
�3�`���UЀ�
F�ɀ	�z����\G��uhg&�G`_4`��HO  �`�|
lr��)T��V�U�T
:޺u@�
��ќ�����fBB�$Jƌ�91�KIމ��蓺��:gs������5{�+P�IEND�B`�images/admin/kbcategories.png000064400000010103151163531650012252
0ustar00�PNG


IHDR00�`n�	pHYs��~��IDATxڭX�s�w���{37s�!�&�eK6�ۙ��r?\r�l
�@L1�@��+��n�X�U�^��"Y��,�U�%���|�#J(7��;�˯>|��o��;���;;[��X3U%���k]�=����g��G���8��[�JoI��t8�ܑ��q	y������a�8�Sr<��Ѩs�'_��*;��x���g��9����>���ӶR��q��}{��߲n�H��~W�U��E'�X���&��)��w���z���?��pN�Ɍ[���p���i��f��mB�<)o_�	\ֹ����Rķ�]k{k�+�Ą�>�>0>�����8��iw游iL����@��`��0~Y/t��lo�?�}^�_��f@b���l�ݓ����P|��IA�p���6���k�D
�I'k��&Ϊ���Qӻ<%pZf�7=����_�V�۠�µ���Vx+�ҡ�慟L���؋�Uq�=©�T�9Uc†1j�tN
��QM��R�G���t�5��u<�2���y�����^։��pJ�rC?��e��A�OSc��գºq`H�>����fT�9
e~��4�Z�d/�,��<������[of���&�]���ۢ��	W��_>J���bU3KT�r5�Z+�5L��tRD2�{���Dߒ�e��L���|�܁`9���O���@��
�@1o��g\�9�^�wG��N�{�pu��
i�C�"%�|�S��7�	6�⦇��9M/Z�/M0��ܕiުAl1J��e�y�Ǫ��Xw���
a5�#�]����G3�%���.f���*��
P��e*vH��Հ��%͐5�^�5��_#��I�z�	�X��Զ0h_t,
���
��ua�bbt�?<$��G��C&}H����I{��!f���*
�4�k#�^��fP����Mz��uV��p,
;��n��a�8-��?"��a�������/�8�r�#��&�+YO��;CN����C�e_���H�MHZ��Aͪ�$�(}a�6Z��"�-s��ܾ0�4�\&���a[y5C�<�bb1Z�cϿ�����ϳBN�^:oX���!>��;CA�d
3K}$Ujx����&j�A�AE2�{�j�Pͤ皦��Y������^�
�N#���n;�e���Y:%')�X�Ġ��}9���\�3���Xړ)��*��l�I��q����7jȾ�C1!�+S<ĐQ
Nr�53*
��u�`[M�����'�n]*��ۣ��/|Xu&���	��֦�/�+���	ix(�4�(������Qa=
��U'mL3J�,"	��X���6��-(V
����Y��kӯ���^"h�xU���]`~ĩ��O�u�þ`6F�:�9��\��'�����䁍���|Ui0C`�A��'�$�1�l��/��A�D���~���5�(Ƈ����OP�|V
q0"����R�s��R���X�i���&^GD̐�2e=٠F��Rï�&`�6��)����(kPͤ�ؗ�4�.�b��p��"r�Z��9��ݱ���w�b�^��8�t��!��_�[C��HЕ�$��wgHIY��NԐ�ɏ�6���F0�訲'�
�s�Lz[����a�wsH�N�gcc#��X��9'(��{���'_�0������{�0@�j~<��@511����%��b�����SM�
Y�RtN�Aۍ�ѡ!��U��Ց6��؝n�AIkI�3�z<�g)��c9�V�_�
��u�<�����K�FCd_s4��G@�Z�|�	m$���
��b�����Z&�A��FA5:�KF/���lv�ݲ�#�n�wks����-�h�:���!�ya�IP*��u�_SkB�5?3"�����;���!@#�ͅB�zD��Q
L~�0!
�!Fz�#��I��3�l6;��a~���<����_���-��^����s�y�xa�����ȿ�V�&W�è@pB1r��	���/hu��FO����7AeO�۠��	h=��.L��-IӓZ��e�Z3����m�[�c��Օ�KV^��7?z`7mϽH���T~�R}�Vw�Q�@�~�m��wI	P����W�	�
ɧ�$A���n��,�zFkژZbm��ŽX-�~��v�è���n�>/�3$֏��R�"�w��
W�@��Ԛ{����8���E�t))��
5V��]�=�h�r�`_���bY���2z���fw�76�m��xxٶ:_�e�7�s�㢨3IA�|+�<C,�J,�F(��Uݦ<�K���G���9����q�.�Z���NBmD/F��ThC
pN��zVI��i�)s�îWҘ��++&�3��B5(�G}��'��O��9O��i[����+��+�WO�Mre��V{�����
�(��,�؈Y
6�B_k�5c�Fh=2�{-	c�~��i2��mi��a�wck�X����^?�s����֝��op�;�.��v�^'���
�ֆ���h�a}M��d��T����d�Z>Z
QC��#~-�L�dP�E��~F���2/$K�x��Y���lɗ���~P��K���6�\y̗��hf�Þ�`�P�S�S��<
�Ą��c�F3�7WN�'�|���Y����xu����ʚŬ�t1��V�V�׃�{}�C��t*�&�,�w;�*�P~���:�
��|$��~F
�l�|
Nt%C=�	���ۨx�U�*�SA��;)�q�#v�cN'���M�G=�ulhX��g�?�@���r
��Q{�5Jm$�+���lԋY�>���>��O�R`Њ��a��P�yMY����Ֆ8(�;<+�Z>{@Duy�af�OO�yHʬ��I
>!��6���X�LiŴ椶������mO�ք������9�1�;�
4Բ�	A��3K��͒�|�غf_5��&��cb������5\?a��?T&|�മ��>���3��;
o��Å�L!��1���n���$�|��Be���v����?o��ZV�G���9�4LP,��&��g(-�kR���������V'�}Dؾf6�tqV�'�t��T�u�H{�
F[�#~g�o�d�PҊ��Zc�vH���W�\�{+ell��C������j6��*�ۜ�Ou��v�����V��ߟ�.�Hu]�!��b�E)�2��B\2
9���#YH��y����3*y��݁M�/��1���Kۚ�n^]���Pڋ&����Sx]i��h��ɨ�3��f��+B��w��!V���	�Њ2J�9ռb^Y�Wa�YZ�?�����ts��.�˺���8;-��v�Gv�f���)�tnB��[���벩%dr�C|�O|��[�Qq�{j��uj��j�ћ��~�g�����'[��N�c
�k�h�z���o�;�Ť\���'oV+�Xw\b��T�	��!1��$r@@�gT��<1���pbbL��1���#7�-��r��v�mqqQ)c�Ķ�0�㥔�~R��;{Z�q;�a�Wp�y2N���\��+������E�ǻ���#��@�[[���e6[F���jC��^)��˩�d���E��iiA?L�6%Nh`d�
���n�^f���^��f��hXcjW�Zp�����Z���q)����]�dZ2���;�$l�Zy����w�ϞH��r����üj�ҍ��mEwHO�$�b���q)~uqr~J�`�1:���ߍ�[Y�Հ^�����{<�ӹ�f�X�3z���<_�O)��4¦1�ڔ��n$����?�9���¾�#
#�hw
3R.W�YrWB-�7'�$�&��z4o�Jo�<=��儽�b�-,,��=
�β��z�ם�?��I�+�����J5���_�d�^O�A�,���p[[[����+jHWIEND�B`�images/admin/kbrules.png000064400000007103151163531650011265
0ustar00�PNG


IHDR00�`n�	pHYs��~�
�IDATx��XY��}�׼�3���/�S�ڇ��v��!�N]i��;����1#�NbK�!+�xdˎ�X��hu�$�Z[�V�w��S{p���&$q��
Nd?���-�u�p!���}���:_f��m�����~�߸��w(]4�e>��
���B�����1ZvӴ;>Q��0l��8Β��0Ͱ�W��awo���Hq|z��5�j�1Tj\c�!ZIH�8��t5�s3�Oz�5[n��IC�����\�?����،�����R^���C5
�8.R��
�}@���z�hۦe���i�lV<G��$閧'nھ��G��!��sAR�'j��`�~*-��M�m�Z>����r�p��-˺��b���ډd�|V�A�c�1�r�^k�u�ˆbm;Qi�p���x�H�*7��Չ<�U�V����t�<�dwܝ��G�j'��Ñ�Hy0Yk�&���r�(�d4Mer����8����v�}_��LR�
3��\d�C���"+wl��
���l)���2S�uݸ�u�N��:��yh:+��4T�H��=S����Ǘ��a*M5E��V宍��Vbk�lq)�O�h�.�lg�Ľ�,{��i4$I¦waȧ�&����-�+�;[
�.j�^d���l8��$sY��t�C�%Al�lE��\��jF/7�ǖ�ٛ%�����P�E�uE}�&��D~�4�s�:a�n�����e%W�Dq1J\����n��Z=Kq�J�*5IQ5���J�(�r45�s��Az�Q���ۇ�7�r;����v��8�Es5�g��m�.�J4�2���M�n���H*?�cLE0-7*}{%�I��|�����r�a�Bc����7���=�X�R�a��"���D��j���m�F�0
�

�-HKIJ�7���Mi+��y>�H����;�帹�A]�2����>��>�y}���b��ag�}-M�Kl5�),%]p�&,��7���Y��R$]���a�zm(�J�@O���w�����֡ԫ��[���
���x1���S��n��_�0����B���aY���,��P�n��F~��n�Z=�;,���Nh�.�6����s�-�[�$�҂m�҄QBq&@p1>a�&�Ir�@W�Ћ,�m�>+m�I��D��w��Z��;�j@+u��b���~q.��q�:8��4MQ����,�b���"�p"?˲e��T[-W/�0�����^Rb���y�R�^H�]4���=���'֟
������_]��i���QHE���-"��r4�I�f�I�V���x�%lT��a�`,�����-{�C�X,&B7��R:z�D�i-�*O��:~v0��t��45UQ�JM@T"id�T��	�ނ�@_�H���w���5��U\�EU�&N�UM���C�4A��fh�H;N���9�|t`aөЦ�!`"�zSQ$I�5w�|�C��$ȅ�L&O�R		N8�h��ѹd��'ņ���W
MWAO�^����b���0Cp����G�Oz4p�&i�M���YU�*(M�2
�2��SCǙP2�Bʺ$�@^�M�.�)�%�"]c���s5Q�h��*'�U���ji��[�
��*[�E:4���cϜ	�隡)�(��r,��W\d���v)�
V���(s�t&G��h�V��˟^'�g���Δ^�g^N
��3/E�k-��e�Vo��S�r{xk(R�a��Ç���ၹ�S��*5��h(*l�l��b&W��[V�%��#�07��<�e�G��ԛ��o���X��x�Xu�R��`�����Y���E^-xn�oah�<R��>�~��,`m8��gyI�@	�r]a
�G]S�&f)�hj!�~��rCi��g��N�pc�ږ�w���o��ɯ��F�Ǔ�uӥM8^H���Lv1�y�[(P2���7���7�f��G�����RKT(�bN�-�*��r���(W�Y�^L,D3D�T��T-<Y���7Qxn�Xs6�����DZ0��O}�l�̚O���ɇ�&��|g�6�d��”��
�~o��&���ѹR�x�V�JC��L���$�g�i�
�����`,�%&r��K;�g7�^��h��'6���4KV��jJ���`t�G�9����5�\Jm�WV�}�^(G&R����X�o�;;9K��fCIpSb8���x�=���L�24[�������u�N���~q�|�H�[�Oc���i��*�f��[���[{���?����op�!��������woܿk�_�]l��UeQ��<͖�|�ɤ�B�R��.%
Ģh.NO�I�P�+�&ޞȽ5���ѿ�x�Y�k��PZ�(�9N͖�fͮ�X⮟�l8�%.�l�ϯ,x?�g�[>^���'f2�"Uy^EI��!�SE6�r�4$�Q_�-�T�ș�SQ2zd��Ķ]��|���|�~ײu۱z�~����,?5ںH[yA���_*����%��
��%��"W�k�E�{�2�K�+Ws9z6�B�1lUlaRVJ^M�<y����W/���~s�>F�w,'᎟e\�9}
*�MT[�o�rllljj*�!��d�z��%�<z�>*�ɲ��q�S.p���S��|����~y��6�ڇ���!�+��7���:�X;M�Ô>�mo����H.����Á��M��$�{��
\����@��~,Y
��Ϳ�����~௖�O��X���O�ʻ��@J��K��뷔d;���������---�,�>55ӯ�${�=')d�If�k�����g����=۞�n뺜�����澰r�ҦX�tX0,���k^ġ�h�uB/oܸd�x���n�3SP��W����O�m��T�SY�'Sn�s����y�j^��i��̖s[�_Ab�Z�TO@)gff�<p����
���*Qӌ�bWbo�`���l�}۰lg8��2Z�1U��U/$d��#Y�]���
�
�P(t��up���HQ����]��aTNs�M�������J��y�y�}�je��x2*_J�=]��S�(��n0��
"e�ۘYVFS����_�Rz�
��,�w��MkU�6[���s���܁��b}4%�\~�f�*)�K
+��0������L�SEE{s���	��"������׮�)����j�m&'�1��“��7�GCR��rWջlXݎ�{��4à&���L�Ӫ�de�s�
���?)��d�c������^�����?:J=z���S�@@x{�%kj��/׾u���*�s\��Ʈ��.��S������������!j́����?9J�?U��g��+;���B�����=Jٵ?̄j�f�泩D���_)��
��q��3ŧO�Sx���˗�W.��>W�;���ӳ;�%�)��[��E�
�eOҞ1����GO'��>y4����ɦ�qn�����:+[-�Mմ�Ѽ#>=���c�"ŸJ��0IEND�B`�images/admin/kbtemplate.png000064400000006434151163531650011754
0ustar00�PNG


IHDR00�`n�	pHYs��~��IDATx��XYs#g��O����+���a��$@�BBH
�I*�f&��X�7m�n[����.�ޭV�ZK�%�s��=�A�}��7mY�ѹ����:g�r�<��^W�z�i�3��I�,]��O�-��{B����,,��|"S�V��r-S��ohQ���L�N�
!{��Z���`w��O�����V�L9��cSl��BW����h����b���9���?��5�g����r|^!F(�̈�f�F�9۳��Lg�qf��v���-�9�.��r��{���s"�����yE7m۞�}Ǟ93�0�f
��,�O*���L�%M���Ec�`h?��ápd����"q�D��b,�Eb�h<��)2��p8\(�@�9sg�p�s�q�W7�.��ʈj��C�Ş
p��/
�//J�(
�,J�(#ʒ�H�,)���(��ʪ�(��j��Uu00R�|�s�_*�I�a��9�&�a2�N���xj�m{�<ڳ�lFy�l��9e��v"
\(�p�<�5��D!I�#_�aj��?0�����n�x��iáaZ&������hh��I��#��a2�L'�H���8x7�J)S��E��B[���{��owϿ���>_��?�
��` �CC�`(�#���Ɉ��
ӝx"�PE��0�
!A���!�a�f?ԝI����p4�ا��,��SD���!�=�"���q1s�C�dX,�;�R���|�"i��O\X��ȵ�D�"3M.,嶆�j���q�cz���\'�:u��6��_�`�*S4�:k4O��Z�A�՛�f��l��z��h��v��j�Z�v���;��v���u�=3g�8���2"dS#���
)#�T����D��@�(-'G��zO��=��$��D,�����
	�A�p4��=Y|{S�̓~�f�M���2VJ�23L�Gc���E)�ZS)c���3u#5t�iX�(Μ�b������ʋ�}�J(3vf�mĪ
�RWVH�y3��93O��%�kHԙ܆t�N6�@4��N����9�g��׫�z���GWS�!(���5W
%�R�D2$c��X� �<H�H�G)�G�G�)
u����z��`�o���t�?��l.���Sj+*�I��dM�˙|>�/f�R�P��|���T(U
�2C�X)�ʕR�Z�TʕJ嬕��-%߫�����'���k4˧�z�z�"i��D38c%�8��H}c�-`0�#ı1�<�#�L�HIdq4E+rФ����Z�{}�ͷ�P����K{�΍9��5vY�PO�]G�k47�s��0�
~&�&�}̊	�>�̖\iݬ�d���n�y~\�m:��
>2���!g���B=Q����j;>�gkۻ����������n��m�0R���v0UvY�1av1a��}�ts)�`֚�[����B?͕�/��Ţ�٫�
�Z_P�v�o�8�vO��|�����A�i�A�$�'ȂhͣwF���m>�V��䇊n�N�8A�}�����)S`
^&���20Pt�&�Ap3�&qp���e�l���2ח�Kzv�������ܱ&6�
��t�2�P7+���j(�6G
��'��'tyR�E�'0yD�Q�yl`r�o̺?�6^�E��>��yͱ�ѥS
9o�"�+*�Ż!ekw��wû���3mnm{������W�O���aZj��µ��z�V�\+o���Y5�5��tI�mEB���H����N�H
U���DJeG9Úh�ȧ~�nY����;���uk��x�L�L�"%F����
A��(�U%�F����58��܎@�h減�3�^�s/��[Շ�6c�`�ir�ӆ��o�i�h��=Ծ$t�˧2��L.��gs���I.���ӹB:�O��|!](W�G���K�p�忙�����b�,_BCg�}�RE����>�T��B"'�pR0��H
�#`?�DB�(�$�h,��L�&��^��7��m.�V��Ì����I$��I��<�@L$±�P
���$���B��V��EQ%�H�GY�`���/���cG�Et�������MI�̱�>N�{b��Ι6*>}z^���x�Y��Bm<�i}��@�6\Zdm�!�k�f��_�z7&�;�[�G����r`ѨAYPAh}@A�uz�a�1(4IYQ!�Q���֞o���w�@�
�y#��RE����9��|t��{=��5<��þ@��8��eF����j��
5�PH�v_N�ŋQlqB:_L�
'��'��	��/���FJ�R�$�:ۿ~.�Y�V�f�V��b��p�#�{���ƔP�h8�Q����h+)*�u�'te��U^�xE�ľ�j��$�l��r�w��k��ϔ�ߑ��U�ۥ��p.8�N}��N�L'Bx\M��501��BD�1H2&�)JWK�hՏ���<��7nq�SY�	�K�w��ک;
�s0��(��2h��f�_��޽���C����n�����w3�ו�
�Ww~���κǃ�Z�����>�b�x76�6�[4|�>;�֮/B��y��f*�7��Y�[kuj�N�ӭwz�n��n��K�`7��N����崷��"b�"��ЯG�Wv�//*�m跂�b#}
į����z�k��e��V�d��/����O��{7��힤R%�'�)��𬨪�A�$�A��rʐ�Z�ˣ���WN@��pzVD���i��魗����e�D��ƴ��Gb��O-�ȩ�4�x�WS��7���m2��&���l�:=^/N�۞���Ԣ�2%�!I���eJ��K�K�"i�IL3FH��A�jɾvD������@��
��B�ʗ����p
��P!6��\���I��b$�d�	OüK�q3�J�O�
s��K�s�º��d[r�Y�K��!w�{��n0��j<���L�.���)�L'�D�C3#��,����`;w�G��>�Х�x0�6ۧ��i螢ЈS����
�
 �1rƯ����cW"{q���@��#�!�[��ry,�K${dY;��6O'�.9��ލ�&I�(_|P��l���\d����c�_YiT����b�+
��s]�kgg�Xr}/��z���
�cq���([D/�sױ����n�aSl=��e�B.!P3��h�q�
/l�M����a5���xh��!O_��n�M���.��r��+�����`�U����hIEND�B`�images/admin/knowledgebase.png000064400000004441151163531650012432
0ustar00�PNG


IHDR00�`n�	pHYs��~��IDATxڭY�[I����n��7��r(��(OD��k����n���a��o�LSS�^�ד?�}��ct.���Cz��˧�\����;P����~���5[�Z�)�e�V�T˕Z	�L�P�F���tq�(��->��/P�t�ݩ՛�J5W,�sE>���D*��sɗs6���l2���bE�֛�6E6��{j�ģ�nG�PLe�%��c�)+��3�АKf"�T$��%Ӹ,_(7���5�f�<�`��F:_�3�q
�ca�ψ��E��#��c���`�,T���=C�@V�����34Czؙ!��z�&�`�	_*W��/�z�t@bD�0nFYI�e&JLz�g.�O8�N�;���C@��d�H���p�+@�3e%Ø�1J2(�9!P���Z��;2z��z�z�!���E'�B��2�r�`��@0z�O	.ʇ��f�%�!��e���s$���J3������L����(���p$��=gוjM2�ʲL�]�\*�g�0l��ʋPF���)��E�A�
���#A2
x�ҖN�=�߂�L���2�2��at���+�@�L2�E�Ke�=:�Q�V��e�~Wh;�=D��l�g�E�����34��|L���S<���?_�xu���P��b��{�ճ����[��4
�
0�?�/oç?�ǧ��#��~��iL.��d?����n���@�0&
�3�b������=|��롲"d^����X��}[Q��}�ӂ�۪�L/S��6o(C��t:B&HYEe(W(3���Q�A!"�
\���rp����uyg~C��k�k����k�1�J5aH��;�;*�)C�}��zh6�b'�7�sm�Ϛ��\�����B֡���ͳ0T�,nj��������!g�˒���zugo�!8Қ\�}���2���74d���wJ�<=J�D�}ж���&��v����Ճ�$5d�Bo�s=7�'$9t3"�ޫ�C
�!�B
^�s}���8O�;55F���q�\@�\4Y��ƎQ��&�C�
#bm��\܆�Oq���$��w�Z:v�֣�K0��j�L���Zo�
e(C���2�4��X�T���'��`0A/��vLJ�{c|�!dY����o4n�d�.�f�O���J�P���Vv*��h�8<�WA.�+B��gTe�l(�|	��a3��a]TM����Ժ�њ���C���6�5�N��iu�n"P1�G�#�P�4�ai/��D�B�!Ӛ]�J��������u
"(#I�N��uj�ƨ}�t��z"�6Ԣ��)39u�$Ы�c�M���Qk�!��C�e�+�w��s頵�
�K�������\:���,p#�R��2�E������i?]�`�����頓Dr�qCE��PUa���3z�g�t<g�D�
�^-��a#�"/`H�6��)]C���gq�:���j�׀��Z�&7��Î�jr��x������U�*�蝩���{6���k�:���}hCH`�N/��!��5��yq܈�)
v��9�=K��_���e�A�io��sOI�bJ���A
	��౩@�L6�ڼ����C�y�0����T���̛�Gd��1��l���KO�D
V��E:|l
�O�����ә�(��՞Mcr@vf�	6���ƈS�&ڐ�o��L7�
b/��c������)�l���za]���~�A3���Co}	٫�~��Щ�1��:^4�Ѿ���CA44ޠ�:5�����C�~�tH驩S#y�cH��t��c��q7���L6��K��Jg�2��:��	
��iJ��!8u<I�+:�t&#��Z�fs���:����)C�Ȯ���z���t�xpdwaY)���x<���Z�b����_�(���hq���S��Xˊ��,�Ӄ�fls���U:C0�AC�5���m��H{���:E6�
&�J��0dO;�[؉��X��y�ۭ��-�a��V��Zm�'�A�U�\����e(��*�6�˛ʕM�ڦ\��t8]XK��������j�H�����j���0�mˁM�3n�j�ֶ���[��e��Ź����Ս-��`�|�H��"�D�7���FՇs��*�������ՙ�||�t�'���x<~�������R��[��'���K����3���k4x�:=����递�'�}���km�,��IEND�B`�images/admin/loading.gif000064400000005514151163531650011220
0ustar00GIF89a��������!�Created with ajaxload.info!�
!�NETSCAPE2.0,���/����ҊR�wg�[7�yH��s$jum��1��|ӥ��i�ff>��7����	�=�Q�Ժ�R�ڮ��冽��Q̼��ip]2�sc]I���7��w��FX������8(���(	�g�e��Y���I��H
�8i��Xi��:�*�z�J�:��*k�[�{P!�
,���?�
��kq�e!���ف������^J�j�7��y��+��2Ć;�O��Ĥq�&�Tg�a�Z�6&�z�ݲ�|6���׍^Ǒo+�Ҷ��y6
(��$6�'H�ǥ�H�b�ؘX�xHy9�ׇ)i��)
Vx7��	:ʚ����z�*[I��K�˻���;�+\�iz\;l�<\!�
,���?���
�o�j��Zql��xm5ƣ&f��q�s�v�]ý���X���
�A����(s���4��
�&3UF1����4M>+��:カg�[N�~��%��gH8f�'w��98���)�I�Y�����V��yډ�Y*�@�i�*�
�:��W��K�z��;�{lk��R�k������W
=}�U!�
,�˜?�������g+�w򝁖�y�iE��>-Z*\'0E�7
�9?{�".��<*k'�h��!�b��ڜ�h���Ă��HN����
���Cz||n�j>;�7�`5��������FUX�H��ֈy���(�`�g	(z�9*ՙjGjZ��z
K�i@����:����hW�R��+{����:�j��,��ڌ�\l�:�-|k�͍L}��S!�
,�ќ?����ҊR����xs�|��y�����S��a9�uzw����CH#v�����S	%q�T��Iq[]�ej��p5yE�p�̅{�`�x�=�_�f���'�g�V$H8������V�8����Xf'i�t���w:�zZ�6i	�Y�J�j[W�x8��zWk�|��{��7��(l�-K�l]|�;�*:�۬��\���,+�M�M~Q!�
,�՜?����ҊR�'�x�����e�=�ղ�ɡ)�ۡ>�����L�HՒ7߉����%��5�C�5G}��q3|�f�[.���u
o�l��h%8EX���W�ȗ�g(9y�d��ץ���WI9Z8��vڇ��*�J�j�:���X*��ʻa�詪�{I,��F���Xgy�{}'��y�
+��k͈��l�l�4�L.��N��mU!�
,�ڜ?����ҊR�w��\��}���"xv�a��;��ݥ!�+#��
5�v����͙�mtS)�jcL���5P����:�.�`��Ú�tx�.p���pŏ�WV'�T��ƥ����H8Iy���	���5iyJ6W��x����I*zV�j�:�J�7��k([�{����ˋ�j�i4��{W�<})�|�i�Y�=j��Ɍ�����+����/�MN=R!�
,�؜?����ҊR�wg|�{�}](���e֦5��-�ʊ8.8��h~é
6"m�@j�X���^��jaƤ��]*+P��t�H��b���i`�zGcSܸ��F�GF�gg��V'@�$��ƕXiv8���8��	Xx��i��*�9(	G9j�G��
9y����Ƙ\��z
{l,"�K��Zċ�,�:���m�]:�K��}�]�-�L-d���	���8OZ!�
,�՜?����ҊR�wg�{�
O��蝙ձ
�j����|+'��&��
3b��%iK����K)`U�rV�Ч��s�[�ڳ��š;�nó�5Pǫ��1��w�G�s�ؔ(���8�ɣ�F��(���Hghy8��H����YjyWHb�ʊz{:*�;:;F��+J�{ɉ��ܼ�,�{�g;���;$-Z,��Z-��Z�m,��~�M}R!�
	,�ʜ?����ҊR�wg�[�'���aifV�~¹-�:�ӊy.<��
2��h�%��[���P#�h�eAs�l�{�M���=7�뭓��xe�:����{�?6�FȆ��ا%��3hw���VG(R�Y���9��gI����6Z����J;�z[{�DJ�if+)��kZ�kL��,�(;}�;]�ڛ�|��m�,��St^!�

,���?����ҊR�wg�[7�-�H
OIfV��-ž�:�]1���SA\CZ�'L���[3W�(%�j�"��'3�3����՜Eo�lc�Z�F�;/�9W{��>߶�h�W6�g�w��	�(�H��H��5��ɧv�Y
�z*$*�G8+8[���J����ʻ�Kf��+l��*[�Kۼ�|�8��Il=|<�ZR!�
,���?����ҊR�wg�[7�y�#���Y�������=�����Մ7b�*W�$3�+-{�a�x=6iXf�S�Vrw�.��Yg������6)j�q�f��/X���hH�(���x�����W)i��I�Gy�	:�y8y�)�Z�x�ʉʚ:�P�;�jJ�p˘����	ܩ[��+��U!�
,���?����ҊR�wg�[7�yH��s$jum��1��|ӥ��i�ff>��7����	�=�Q�Ժ�R�ڮ��冽��Q̼��ip]2�sc]I���7��w��FX������8(���(	�g�e��Y���I��H
�8i��Xi��:�*�z�J�:��*k�[�{P;images/admin/minus.png000064400000001652151163531650010754
0ustar00�PNG


IHDR(-SPLTE���ҝ3�/�0�-�Փ�r�]�Z��y�z
�h�h�e�ȁ�y�h�h�f�ǃ�m�[�X�yҶnްjްkޯjۮi�ݳ&3P;	�&3&3xF��&0�#݈`&3(&3(PF��&0�&3L&3L,
h�&3h&3hfeLfeL(8HdiW\diWpieH�ieH�paC�paCnoi&4(&4(ntB�
ntB�	ntBcnal%�@%�@idEupnE���8ZtRNS@��f	pHYs��~�CIDATx�c`�`dB�,�l�Ȁ����	���1������0��(2g����i
������a�<n�IEND�B`�images/admin/native16.png000064400000002631151163531650011254
0ustar00�PNG


IHDRK^��tEXtSoftwareAdobe
ImageReadyq�e<;IDATx��WmlSe~no?׮ۺu��p��M��f�4*�(H�"&
����F������#��`�� �QP�,
"�b��7�1��ۺv�n{��}˽k���v;��}?��{�y��{�D"��12�a�g���b�LH�P�xub��ƫ[�ܥ����L"�`�q�ŷ��z�\6�1Y��s���,X�v4�p�3�ј
�]�3u9�gG
*c�޾i,���㣗!����`Uy�pZ0�����m¹~���m�h<#���+��/GXR��-��F6�8�w8m�8ۈ���ϝ��+��/}!]fuM�a�w��ȏ9�6�k��zL����i�M��$�p�Tj
ĸn*ŕ��4h��ǎ�A�@QhHȵ��"��
�
F�ɾ�a.{-�.2�e���쭧�[p�˄w�z�
�6Ի8�S��>������M���V<B�[u{�
�^`T��̱q��2+_F%]��h��M>o*(&�ł���m��f�ю�B����'L�*�f�6�l&z�[��
�4�e[D��sa��6>f6T�eM����,����f�9.4��`�l;ȁ�|����l���˱}M�p��k�'��(���b�
F��Jʼ�����S�%)q���g{�h��`㝅�v��p;L�~ʏ��(�e%��~���z-bT��)�jg��;��i5bd\���['�$m~|Ə7�¶�\��<�64��$_����eU��Pu9����Š�<��˝8�:��5���I����S�'�	Yn�!�,<�bp4��*��?,Q�H��	�Q)FYS��9NF��x���y��:xg�p��H��'{��*OT�t�,�pQ�E��f�˅�`��!^����+�߷`˒R��Q�c�����l���~�L�"�zkdZ�V�pw�;�!���"~
']Œ�\ʒ�=K��Ḛ���څ��Y8�D�^��!rf��u�<?4����z�S���y%BɊ�w9��<Y��g
C%5�����ƍK��h�g8M�=5�8�k�K:��2T0����|��M�SD�E�/e���j5	�ò�q!�l�d):*~�Bck[wbך��r�q�@8M^�0��E�z�[��������V�ƨ�iƲJ��&d%�pYJR����΃�e�ev=�@�����wP��v#����7;]բш�6գ�$A
�%p�'��,.���<������iq�R)X��%����Ȓ	��f�󇩶-�"���_:Q�U���ʰ��|D��+������N)�K1I�-6��eT:t���t#E�x|R���<6f#f��/‰X'~E�Y3tc�#YZ\�IEND�B`�images/admin/native17.png000064400000004347151163531650011263
0ustar00�PNG


IHDRK^��tEXtSoftwareAdobe
ImageReadyq�e<�iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpRights:Marked="False"
xmpMM:OriginalDocumentID="uuid:7EBAAABA8EFA11DD9FAAE23BA555FDD8"
xmpMM:DocumentID="xmp.did:1E3535097E5311E08F3584759DAB68A5"
xmpMM:InstanceID="xmp.iid:1E3535087E5311E08F3584759DAB68A5"
xmp:CreatorTool="Adobe Photoshop CS5.1 Macintosh">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:0980117407206811871FD68D23D5FB14"
stRef:documentID="uuid:7EBAAABA8EFA11DD9FAAE23BA555FDD8"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>E�N
�IDATx��X[lU]3g�N���m�Z-�-HK!���(J|�)�M4�#���/��2�_�PB�[�S�
�-Hy�-4���흧������m����9����Y{��*��0�-���۞�L�UO�-y>,���w�G��&,��G��Ф��P�ښ�W�\B�m�ؼzy-���|��7x�0��;`�=�1w�&&>}k~������i�A�"7!�VA	fB�Ѱ���>h�(�PԜ<��n���V�<u8����+�G�_��?���%&�d����
����2�(^�u�3?����2�?��e��u+�
����P�6��>����YLb��f3����f.��
�#�Q�3`�m�>�΅��y��_ӆ����n�Ա�au|?gL_Y
QRA�t`�<qg)�,�+
��-����1_���_����/����{0��ө
����1��t�k�Q�����&�]+/T2��9	5�"k	��Nԁba�>J��b�9�I�F��C��7�M�C_���/�jo�3��1�l�_[��Y��5imrNz}mu}�4}H}݃p��S��&�����K6YG��c�k����9	R�)mhGع-��
@_T!���#�7�(��}�4����)KL��e��~&6��v�7,����@�]���Ub�����cy���`�֖Z*��i�xx�;�n"�nl{�?Xl]q��%�e�Q��71B}���<���Um��L�%�>K�K�&���W�.Z��q�C��Iƹ7��ǒ�S���m���s��+���C12)ok�VV�2�=i}�.
J�޵�l����	�G�`Q�h��o��"����!(��jN�k�?q`l�m���1��8�{>�~�,��y��k�K��c�P.��	���uY+c�#��
J*�cTO��Ⱥ��\���[`��&�a�S2�\�lQY�'/�l�%��U=�ڏOE-E�Bcq�EЫG��G��?��z}oT���i��xJ(N�)L|�?cq�P	���]�&YO�zy_t/�.�9<�<�Y���	d�ߚ,�߹�^
"�$���`���߉���
@Boq/i��rr��]�A��y���7�z��gI&�]�|q�Y�d�ŵ^�	y)�Z��
�~��z�4rz���S�
��cV3��d�-X�Yt��bVC�Yoœ�Ԥ��J�9��7�Y���
�W��8�9�O{�IEND�B`�images/admin/native25.png000064400000004701151163531650011254
0ustar00�PNG


IHDRK^��tEXtSoftwareAdobe
ImageReadyq�e<�iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c061 64.140949, 2010/12/07-10:57:01        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpRights:Marked="False"
xmpMM:OriginalDocumentID="uuid:7EBAAABA8EFA11DD9FAAE23BA555FDD8"
xmpMM:DocumentID="xmp.did:E22C8CC8268211E1A76DF2FD3265B1E7"
xmpMM:InstanceID="xmp.iid:E22C8CC7268211E1A76DF2FD3265B1E7"
xmp:CreatorTool="Adobe Photoshop CS5.1 Macintosh">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:E494A596202068118DBBE12BF99A3F73"
stRef:documentID="uuid:7EBAAABA8EFA11DD9FAAE23BA555FDD8"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>8;�+�IDATx��X[l�e~z\����[�;��c�N��	!�M�D/�
�xH�W�hL$�/����pC��H<����e�ucsk��c�vk������v�
�[2�������}��Vv��m�g9qz����\��!���x������M	���^L�TYY��h��TVE*$�{<�St�	�Y&�#�P��
�[,P��p^u��D<�Ƙ�ڽ	+F8A���}e27�9�
)P	H�S�	*�r���UA_j�t���((3B&�Ak�
N��h`�`:;<�Y�Q�r�U�O
0�f�>
�1�|}�X��X��
qe�E5�ӗ�}3���-�f}!���Y��@�y��ǑH�r8�(	�9���R�o�
�:_��V+�g�H�T)��y@���,Șo@�8ȆZ�B�vq��Y�]?�c��5���E�ԙ�K�2"�8��/֡��w���za�{o
������ېo�"�׫�tabh&����ia<H�$�s�ŕ"�����!K�\i���b*��R��wpZl�3�ͅEr�Z��T�1V����|~х�wU��HW\kb	))�lMt_Bcc�xV�T�n,&�9��o�#	���Er�Y��6���<���O@o��uwbEeq2|���^ӒL.K�܆qZ@L�(efr$��Cu�ӫ�kDlȺ���	L�3s�5M+F�/��1�N/���6ڰ�jÚ�������Uu�3��9m7N��9�}��-b�������;��_��
�w؄���p����:4������kLc,�?*X)
�d,"ȍ�87�(�*AY
"�E3sYىڐ�������sg�$�[c3�)����0�p�΃��X|���*��j�۠�SB�A�<
|��$�h���)<�m�4����~sf�$�sUݹ�.��7c�ܜՆ�Y)�Q�YvR�,��F�c%���m��;�fqBӾ*j����|Td��݅��߉�)&��B�3Bm=�
��I����G����fܣj��/f*�1楒���)qU�%�/W�8�w
�yq^Z�~���q�t�6��c-K\�RF\�e{,���Ih4���_�X,�z*�MU�)*m�h��2��Ƚ���B5~=�|��v���o���߿��5��}�G�R+W����b����hO��x,�U���}�O����{͍��z�X���/��(�&m�iO�x����B����s$�?kG3uG�&��͟�?�b�k([���3:�G�a���a�o*L�
����h�
��Ȗ��ųO�Y��m��W�q�s�X�Yך:Zu-K�J:
T6���1���:��@��T+p�tR�N�T�Qb�[���a&�H�	�����q�
�Y-;:�5�|{(����\y����=Bדpw�"��z�f+Ӓ�j��_��i'}7;XC���E���'���I����`IEND�B`�images/admin/notify.gif000064400000000553151163531650011111
0ustar00GIF89a��������+����#��;��
����R������B��H��j��a��C��R��D��f�������1����y��3��
��M��>��A��,�ܣ��������������j��q��e��Z�[��s���Ђ��}��v��x3�f!�7,���px�T�H��bI:e4
�Id\4-S�*$9b0ǔ��<��eD-%���%
�(ҨM�,3�H!C*���C�+��7.��7

����7���
�\TA;images/admin/plus.png000064400000002050151163531650010575
0ustar00�PNG


IHDR(-SPLTE�����p��C��G��H��C�蒼�I����������z��B����������u��?����������q��;����������o��k��Z��V��U��]��*��	������C��Y��V��[�娦�(��������������
��
��
�����,����������
���ߐ��)������������
���������ݏ��������������
����	�������ׁ��y��z��{��|��(����������@��x��|��v�䵡�C����������z��C����������v��G����������{��H��	��������z��~��k��p��p��l�ʣ|m�|m�h|m�|m�$4A}�|m�|m�$8A}�|n|n<
|n4|n4|nD|nD$4A}�y��y�$�|n�|n�h{0�z�4X|n4|n44|n�|n�$��ĞtRNS@��f	pHYs��~��IDATx�c`F&fV6`�����A���B�@�����������UT���54��ut��
��ML��

�-,��mll��l퀴���������������������@`PpHHph�_xD$CTtLtl\|BbRrLJjZ:Ī�̬�\$w��#	����WT"	TU����#	4465�����(����WIEND�B`�images/admin/priorities.png000064400000005113151163531650012006
0ustar00�PNG


IHDR00�`n�	pHYs��~�	�IDATxڽ�yTwpZ�����,]��WŢ���Z�x=�V�j��	H8E�C�J9D,YDnBB8$�)ʙC	
$B‘�I&�$���{�xO�}2��o�7�%��1���t:d�
�fj.4Z��Ys�L�5z�y��
d/��
ey3�=9���LǫL���:�YڗH��}"'4��[�,��$�q<�A��"%ֈ(��3�x�V���!�S�w�RC
�=�k��hc��	��V��O#�5���2��vX��TG��ԕhU��{2�i�}��(�`���,�W���AMS��H��a��Q�#�2�,D�Q��ee�"����.��2������t)ٗ~j�"�My�<�K���L��U�������⧓��S$4�dZ���"!���,R
b_@��J��1'���dJ�8�g�"����M�V�=����,�a4q�
M���$֋#$w���6�G?I�]�@�a�\?�4�j�V�h(Z�Hh�Xx�p�"5��퓹�-bB�Pp��:Z�����j��-VC��$�ϣ���w���_2P-����ς@����iށ��a	l�j��l���2����@�]�W?k(��]���2x.�2y��(?���)&%�"IOɋ�J8��HIj����{%�mS����\\��o��s�+�Wn����Bk�~�B��|�ޒs��}����}%���e��>�)�}�P�g�"�5���6�2l�������3�����XG^�<^��a��NکUB�6HJ���Zܪ��ZgaK��PL���!�F3��-X��6m��`��H
�H�n�NF��(tH�C@���%ba
��t\
��|d�Ӱ�V�Ǜ2�W�
����K=\��6k�1i���a����B%s�	7��_��ҳ�+,�n����
��T
�C��X
&�p9��j�m�A�x�q�kͺ�u���W�#�g.�ZX�-ӎ�b��r�`����n�z��|�Z��/�l�W�%u�O"�R��`Rd����'u2'�n���;�V;W�òީluj���v��H@z5/WՎƆ�oͅJ���F�e�{�î�ԡ�s4�ҵ�bӔN�@cC�U�L
/�ET=1�hP�`lh�?h`�OI܈�6��U_�)\eW�
W��l᪤��t�=`?Y͍Ts�`��tC�BrCL�Hr�$�\l�y�YczE>u�X��&�h����(��hX~
�T������g7��n���A�
���1�Dmm�ɓ@���$�p��9"����2U
/�6�ŵd��6�����]u"ge\�W
cz��	�6O�W��AS>�����7���7<��Vx��
9K9ǭa!�*��`�8��^q"�#��9�z7��@�9CC{��X��2/��h
���T�͆��(�|�Y]WX����ä���v6r,���At8��!�eƻG�>@;���%�{LOcC��;�#k��$�xMQo�m�*�-w�FI�{[��)�H��lL`1I����	�R�0:�����2�G��X�3����@��!���7e���|���4y�f��Pi'l�n���4��U�)���dL�Xd@����B(��6��ä�G��C�H_q8�M��1P�A%뚲x���e����E_AM��Ɔ�dJ?�VU�?q/d*�&�XW�ohX�����O|�'�;h�"��}���<fR�)�)K��{B���,����Vc�t��YEQ�x��,�,���[���L�%HMBhN���P�k?�B������e�^x��"�/�B3E����5���@��KF��I�o��D�,f�Y	��ņ���74@iu:A��@���R�D�>e���%Q-f1�����֠MR?V?<��264�F���ķ|��:h�o�b�lV����J"��G-�aP�P��1��	�Lz�P�{�_�lv�iH����yG�o��[�6�`��v�`���5�p�H�~��H�G߷f�v��>�;��o���>�o�8@���d��ٮ8�}	��'���Id�[�LC􋊬��(�+Ѧ��k���'g����]q�n��o����[g۽�k�f8Г��}
�f��%��M��/E��t�=��M�6Dw�g�"��'�ym2s��j�`���
��v����>�~m�ۆپ6���!/��9����h���X��qK��-�6�$��u�!9
?E1�z�|*�u�	���r�@��@�귷��w���m��{�����t���>f��T~��-x�d�oc^��mO��W��<�:�|?(3�(�o(s���3�@��@�
0�94F&�p811E�|��+��x!���n���I�¿Kh������䂭�%��O3�_F�7�#}l/mt�68�I��M�n��o{hrRt'������x>�/pqE�b���B8�ҍ6��{�
ӭ6��O�ZG���c]�l�	N���),��T��RP&��6,��7~��a	�F�˪�K�ѯ�:-2z.�o��-����6���:>��JiIEND�B`�images/admin/publish_x.png000064400000001114151163531650011607
0ustar00�PNG


IHDR(-SsBIT��O��PLTE����も�RR�::����

夤����((����tt����%%��66���붶�oo����

䒒�CC����cc�������??�{{�))����33�mm��HH����\\�rr�����22�;;�����LL�99�**������##��{{�))�MM�88�ff�ssta�`<tRNS�������������������������������������������������������������b	pHYs��~�tEXtSoftwareMacromedia
Fireworks 8�h�x�IDAT�]ω�0`PT���k���)�(
*�`���i��K�S�_)�Hf����;��z7�(����,�S�Ns^�("%��Z�"�LD��^]_	�䲩=]˛�@��6g��=;`J1]����)�|hjƖX����A��.3�t�<6D��QQ�#裣��?���_L�@������oIEND�B`�images/admin/publish_y.png000064400000001341151163531650011612
0ustar00�PNG


IHDR(-SsBIT��O�PLTE����U��߷���f��������ﮅR�����X���|������͑޳~��7�3�m�EƳ��Գ��K�ƒ��3������k����С�������������c�ȿ���Cg���ɤ�։���1�U��{������!�Ž��+��)�ҝ�����a����w�ʎ�Ǜ�u�䯡�����Ć�ν��R���/��u������L�ٳ��
㶇��^��;Ŷ��ș�ˤ�o��/��0����{x��\XtRNS�����������������������������������������������������������������������������������������\�	pHYs��~�tEXtCreation
Time02/15/06j���tEXtSoftwareMacromedia Fireworks
8�h�x�IDAT�M���@F��jA����}g�D�C��o"�18��n��CQ��O�ՠ2�y
"1�|f���~-��f�-Fq	M��Оh��E�9K{��(�j�_[J%s�m�JMe_��H2�qЭ��v��s3��e��H�z�+��9�>3�K��ls�]�ZF���ns�w����N�Y��
{"�k���IEND�B`�images/admin/rsfirewall-approved.png000064400000015247151163531650013616
0ustar00�PNG


IHDR�L�otEXtSoftwareAdobe
ImageReadyq�e<IIDATx��]`E���}=�TH�����.�4�B׳"���=��
VDN(���`��{	�/�˫[���<��Kif.����켝o�_��	�
��˅�ULt�7B�(�Cy�.�r1D�.:�tс��,]tс��,]�.n��.��.�At�r$W�B$^���K�)��%��1��>:��V$w���g�tѕK��q��)DQ��[^@*wѲ���)�j[�[�(�7���v��\�ï8r?%��q�`$<��>YvJ�WRDE�Ɋ�b�@�@|e�]�;*���5{(��x}Ht`�
��]Ż�\��o�x��U���ܒ��dN��ȊD3h�x�夻�waF�o��}`t`�&���e�g��b0���d�H$�o"Ї��L(_����D�g�R�[J<�+��Y��>�CR�сE�2ga��9��0�o�[,��bo��_��)��DP�
)mUВ<�0�xYR|�R����o��2M�:��}��*Epj�8Q�rIe^��3Y8O��xlD�e��9�n
hq������\��*�77���ч�^Kt��y��U>�}�Iܢ���
���*�衬��̩`b��8�jZ��r{΢!���k`g�®���$ŝ��%�h�4BE�7<�Ĺ
��"�[&��(��AF�C�>��b��2�%1����G���2g���lsjW�vs^c���ǖ���y�$��x`H��
!	��4�-����BMhC�4����'��u��}��#�*����`��2�\�WQHq�@$�y����*�9w��d�1�������Q�,��P�YN�%�^jp��F�h�
���-[�܁t���W��],��Hd��:��j*y���涮�o�`��;��V��.?U�{I�S�7��F��K��%����n�a3
N�C*&�?-w3�;|p_�+k~�cǎ��R��lӦMBBB��7�b��#""z��y�5���T��l�믿��!c�ΝeeeF��W�^�p:�
���4Pt�0�8(A��5YxU�ɜ3ϔ�7t�ZVM����~R�yvU~eD�V�]������קN���ZňFKx��N%	�H�.�=a��7k�@ǎ��3��k׮�<�Ȉ#�L��}�w~��g�5nj3o�<��R[S����UTT�7`i7D
a�1	_z�%��E�	��D(A����8J4��P�~py�ڧ8R�9�1D�"�Up��C�aK�L1�'���5t���ܢ���f"744'�p8IXIfm}���
vQE�'U^y���e�o�t|||AA�-���޵kWmM�fGVV��СC�N�Up�_U�j&��y��'N�BtcժU56���l���ݻ������o���|�A����z�_�~��x<#G��cs�7"3�2�y�w�6H�+�
���J�^�A��GFF^jU�*�@�.���,�j!�'�Bx�D�e�e�&�9��Ȋ�1��!D�}.wQ��$�WUh
O���Ȟ<�MC�f
�z0�KJ���}�W�nW�l9BBBB�x�	�ٌ�����v-e�G}��oOJJZ�bCՀ�y�ƍoٲ���1<�S�Ly�7������HRll,���t$RRR�Pmݺ���[o��ꫯ>����0S�o��ݻ,4����q��@`���:t�ݽ{w-�>bM���{,g���u�*�?�8�Z���z$���c��f��P[l��c�	)>Er��ҕ�b��a�G�#on�RmgoQB�Z�9����h5�r���G��sV��i;n/I����F`i�J�_�	O!��}
���������`$``!�K�.-Z����
1���rX(��G�ŋ#�ѣG�Q�F�ê��[�lՊڝӦM{衇\.��Ν;���c���H�߿�U�|��7�w��Xa9�����ڇ~x����|Po�]b�J�Kƻ�9�.)I�Ȃ���
 �PmH$����ji�$:�����6�&�_8A0P+G�ypR��؝rv>�6؂NDU�����"���Aլ�q��1`b�W�|��qj׮݉'��tY�k��k�
����~���}����4m�t���5�>j�(�o������N+�ꫯ�
�������@̊>��wߡW���s��	�en��r
�-I�x�@4�V]tPyS6\�<B��ddK�@!�P�>���8%6#)q(������M�f��:z-���)�

����9F��A���}�e(������MSb�����o��f͚!q���%ʺ[�nH,[���|��'xTX��/�`	�o��߿?K̝;��}�2���W7H�R�Wd��*6��B��'5�[��0�Rd�!e-��	&��,�/:%��"��o9(��qf�xEb"%u�t�r�J�΀lR��g�axx8Fi.�h�<��3S�Ned(���L]j&=zt]�&�C�h��Eô&�|�����q;��0b�T(5d�*ߴi2�9�.�2�۩S'vؗ�%��q9�Ñ���g�Ǣө�_ue�_�Y�P-�W	N�o�Z�������V�
�P��C�(Tĩ�Ũ����1�$��ut�c��A��=��Kc08�A��aDC���@�p�|@
��ĸ\O>�$`
|/\����/�Nqq���?�`i�n�iƌH�E�G�}�v����N_�d���ә��1'�L��\v9�[pQ�hx�\��"���*���0��ޤ8�H�KDGsd���)ԪNeӰ�V���ĨV�3?�R�feS�&���[��$�8�������"�
�A�#��D)�׭[҂�X��nc���*�,��^zI;�Z��&M8p``P�wL���K�5l��"H���a�L��'O�	��Ny��7�A~(^
{�ҥ0�.2pQ�H\j`lI��\�)Nm
U<�	�CĜU��C���k����E�v���Hb;PS��po��"s��Q�����b�j_GO�Y>��S(<�0�16p�4­�؀��_��Y�f����������|��?������c���$''�
Hm�̞={�*86l���3g�b����?�8ƻ`�^x�h6��
~��5a„��l@�RK07�FV�E�djm)�Y��~��~zb��+�����k�U�a�8Q۹kT�a��S�;כ"���f�3kb$GJ�غ)�i<���Tz���4n:���Ǐ3'�E�X����J���^;��6�w�b�-2��t���SOC������z뭌,�xl��Κ�-�捪��ٷo_�֭�p9+�`ƨбڠ�ۋ��#�b�*����tP�y�Pr�DJ�O���m4����O9�:ԼWQ�*�Ä��_р�wC�"+�(��kk
63O*\JӔk�r#$	+3�'O��<�g�}��0f�`����Ͽ뮻���#�&�P���3�&N�Tn�j����k�
Ģ�7ui�	��7o���l�J�^����@�^�Ca�]�Y��n�ɠ
�Q4|�p\"(�$lA�rN":ss3�|��sbr���]0/�x~t����+߷V�"R�vT��8+�n����#7��
��#w+�s�K[q��-��Ќ����};��$��K�~�w��X?��
��p��k�����iP,Sӌ�I�����ښ
�5�~�i���K����T�,�/˩1��:7�}�(��۷���rLᖕ�!����!�D@'ҧ[�C0�3�j0*\}��ړ�G�:w���KΤ�>��m��"Sc(�-�W^��SZ�}�U"��q�USW�$^[��=��cl�����Gl�afq�&=k{��{M�H����A��Ұ�X@h˖-Z�
`��*�UW]U[S�1�2�S`a\8!����tj�Tj���[���,cb-R�	�z<x'�q��ե���u�w���=_��
���YO�Nz
�����U�T�=��aq��;����M����NS��ŷ/ٻ|�+ÁKcx�����J�L$�mtƟ��5�{}�k���mjG�=���-��o�T̶m�`��>eX!�Z���.�s�a��(�ѣG�;.�2�I��t<8��o����[c�۶m�/0�u��ܵk���N����D�N�4�G�Jtt4'�
}��c�;w��uq��a�P��������2S��+�
�h�sft��Ү��o�y���k��ܾxb'l�����fb��D���$FQR�L�6���%�k�}�K+p��m�.�^�w�H�3F��.؈L�7?>�H����QFW�}n��_��0>���Y�y+1D��>��*IE�(�9.i?�qm�.�����Ц�Y�9'�i0A��K��$���'J�"������H�D�Bh(ŜjH1%�6��$�Q\N��.�{�h��&�r������~$�^�,P�f���+{�6Cc�nS���ʢ�`�7���E��hn����%��a]��!��a�}.@Q�YŰ%Q����M��U�%..�]�
�����*�=Q�(�8<\����x���.�1�h��ظ��F�3�x|I������!��^�"�V�&��I���W���TTq�,D��6�M;���֥~���Lqw��䑓"9��#)���0�!Q�Rbl�u�	�%��򉴨y,W��6�g}��n����B���_`A�w�/��E�ض��@�^��d�Zd�<x˭��H�X�+���*��Qk�v}JꆎW_�p8�IN��w`Az��9n���(+ߺ�f�����
%�{�cw�8��6�D���
x�)����_ȸ2�
4`�D9].����8�aÆl�9���'@Z�ؓ��㻉�-�!&�W�[ƞ��K��ne�8�W�^٢��]MLJǰ*=�'Jee%��Jԗ�+W��ѣ�m�|#�g�}�����'"�\����3Y��B���X�j�rC��m�����G�,���t:
��k9����;��F`]\n�����g(�C��|�‚��[�ֶq��8�*�:��\q��ÇDQ?9�
�%�7t\bR���*�����zG�����9x�`�eǟo��r9�$I�G�fUkү_��K���ɴ:�t9U�ƍ���/���{�Z�|ymSu`��;��{�as�5�֭[zzz�+����P5iҤ�9ʝ:uZ�jUxx�y6��#YYY:tHMM=�7�?��9ssڷo�z���>�cr�S��?%;w�fc
��՗HII)((�
��t`�E�I�&�(y��'����-Z�<y�Bu�2�8��G.SY>
�w��D�舭z�d�̙���ӦM�~JZZZ����̤�$v8d�߾�N���l.���q�ǥӧOgK��ٳ���O@�Fx��q��ҁu�����z!���k֬�XGs��O^���V�*7D]�$##CC�̑kOe\������]t�w�trr�ʕ+��)X�s���l���>��cLL�ڵk��'Ǭ�&w����ݠ��.�������l�2`���/�m6�رc�ϟ�JDDĺu�e�&l��IJ�%X�<j~/��<x��㩭rxx��ի��G���]K�}qa�S�T�?��VLtl�5(9�g�Cb��V4!������y�ճA�~�}1���y���8�Ѫ�0��zv8��Z�l�~E֦��%ǖ�n���}��iU�W�
���t
U��x�GU�ְ�t��ֱm��_W[�~0`^��Y�Ei7��X�$��nӂ`7��!ȷ�8�-�J3����_�
ݓ�J�ˏ,?���|�׋@a`�-|l�?�0t�P�4Hй�e����_1�����G]��]_�0]�x��GW~����+��M
_�c?�a�ӫ��!	C�m;�
����
a�q��+Ơt�q�F�;>�J�
�k"%0Y�-��Y<�ج�fg/‰l�������V#�J����N'L�����L��K���jyd�C-�H7��떦#�_v�..տـ��G��r�
�����F�g�������b���l����n�ظ�h/0�6�hI�.ڔ�)��!8[u
��_;�p�H
M2yew��~�N�2�g�ai���x�bm�ǷM�{`�Ż�峅�)#[�h�ԅ��3�;��`�s(�0/8��wx��/�
��7GVgІ����;o�	�T�1lHdd���|UV�EO�x*�9Q%����p|�s���	{f����}����z,�����k�>T��A���wЅ�^�~9��E6�-���fP��u�b�����JkO��������G��S�
��U;1P���vD�/����+�xj`�ڔ*�WUъff�{V�����`F�C1�n̍W�N��,�K�^��,*��6G��Y��ߞrЖ9t]QU!S����fE�"NA����Wo���x������Je��5�`��6��W�CM�m����>	g,��^��%��}~��1B�l
	z߯A�Ǩc��x���!��� fŧmN2���W�6ىlk`�
�@Y�`���F�ݷ��Ʈ�&wu����2o}�����ҋ��va�����,]tU��,]t`颋,].�'\d�k��IEND�B`�images/admin/rstickets-pro-box-legacy.png000064400000154377151163531650014477
0ustar00�PNG


IHDR���Y�sRGB���gAMA���a	pHYs���o�dtEXtSoftwarePaint.NET
v3.5.87;�]�oIDATx^�|g��
sK��{����qww!B�wK������J݅�P(Py�t�l�޽���7\����nv��]���^q��g���;���{a��=<��o�y�۷o������~��_���,�nӻ����ǛБ��+~��w��U�{��N%-�O8����?ߺu�رc���{��ihhx�������O>���?���O?����ׯ3>z�¾KZ
��T��q��"N�l�y�P@���������566677755���c8�����~��W�Q�.�>|�����ޏ?��x�Ǐ���Z�=��/�_y�_�ɚ8p���իWϞ=KZH,P$@�6����ݻwA�H��
���*���Ν;7o���ӟS�����T�8�O�<��������֖����Z�Q,mmm�	uڏ>�����b\�
�B���~��2�v�P�r���'��/��:�������_�R�z��#��8q������ǁ
Fk"�
�
�NZc�4�>$�Z�I�$V���_~�������_~��W�~��ݯ>���/����o����#!��6�P�g�}��^���4+qU��q�_8���/ap���1֐�z/��
A�H�D��G,�$-����Z"�5=$������o���{�?���O����w��P�~y�@d$����M�>�8q���.]��o��g��Q�*`Һ����/|�~=CD���s��F��)ؐw$lТB$`����N4��&�*�������~|��/����ݏ_���_�x��,�=@���yh!�M����36��k׮�,�1����R��q�؇,l���������Ɩ:#�U�N�<I
#Hf�L+!T֮�j���ˎ��S�D���r����ܽX{�������{w��{�������?~��+#�����&�X�
��+l���O�4�2�"k�/�A��&W$\��j�?g�>�N�2��
����2��0����dK�ATb	r�VE~X���{����EZ�@�xHbE�y�M�ֆ]������݆����/~��ý�����{��U�T�X5�"��)�"�x!��0���3g�����S|@��/����K|��۷�jjjT��#~�UUKd��,	'�,�K�8����?8s܁�?Y��Ib��Ȉ�k;n5���?>���߃&G��~��%Ҭ|�%-��&���z������H���6U6������+//!����>{�HU5��iEI�=�����ىb�G���o��{���7�>�;��e�`���ݜ�Af�{Yfl�u|Ӆo��{�?��>���~{�ۇ���[<|���/	Nm!����ėH�)r��y�l�:u��@K���Ç�$��j6�R۩��պj�EF�/{�K����
q�(�
Y�l�C�|K֨�]%-B�p¬�8��<ƣ_�,��.�F�r�p�ѻnn�}?#�Vz�{����~�{˕���S�}w��ß����?~�G?|��'��+v!��Z���ۓ+�d�K�o��Ȉ^a�Fx�	�`�V�f������<���߯��,A8!J5]H֖��c��I�j,񰫫]cr������?j���\�tiẴ�g������;i���3�KJ}7&�bT����w���ZRz3��O׿�w����x����B1X(���W�/&�Ƙ�%>-�0m�&�lL��j�H��~���I��{M�)E�������	��eV����S��QeA�l���1�t�;c�2>~�����k��ln����+o��;>-��m��%��NL��|3.�f\��Q���y{Ӛk��ϭ�{����|���ʺa�J����fa�@ʪ���,��[a�EK�)���
�H�c���?ĢeS^5���o�8	$eK9j�T�
YԞZdº�.H�Uq>z���>z�$�J�d��{�\^�_zz^���Sn�%ފJ��{)*�bJƩ���;�\]v>h��]_�}�L��W�PU�
���&�L�#sM��Pm�z��
�0�1Pg��ET��5ށJ�d�Yi��	�0�
J����1�0��B$��&D5��p�@��hɓG����'�6�4ع�I$uN�}nG&��t+:�����o|y�ڗ�~{l�����ۮm��~�oǹM�;���ß~z��ޏ���<��O��!���+��{Lbԛq��k��1y_ڠL��
��f����^@e1�Z�%
; �X�[�b])m�Z���j��H�U�ւ"*�K�&UBȂ$i�^��I8�C�}>�����?�;�G�l���ï'݊�w{����u������'3��d^Ii��|���o�93'��_�e�>���O����?=��C��?a����!��>~�H�aw�Da*%�d��*jhY�j�eբe�����$n��x+DUp�(`�.>�ZAC�n����@���I����4���h����&���/j8���?����B��+��n�"qo�ՠ�k�bomú�V����_��yz��K�ֽ��bк���Net�i�p~Ê�s}O-��ξ�M�~t�Ꮟ�<|��G��
@��	M�+�>����}�"e�,�^ݭ�YVL��ό��K�¥�#�҄����YF���{t
v`_5R�.�ѼV��***��&!M2���<o���G���/�]�8�<~���[vx�K���^$o���������D��in�ٲ���76\��b�ٵ���^Y�p8����K}�͟|rX��[߿���??~�X�_���f�k����y�+����e�j&���kR�wٍ��V-lV�{�=�&K��UK�9��Y�7�D#��p��
|Tr�l��k�����
�-��$��%4
�iii~~~k֬AbF~�/�|��?<�;��4�v�[�HZ/\}-x��-	�"���y��䭿zcٶw6�:ryŪ����,\t~V֕��3eK�Ypf�����/���?|��g�ԟ�^�\��޸w����.]�����ӣG0OpF�6�2`����5
�ǏY�
�b+�=i�4�y�j��B*�\W6`ci�!�v"rZT6�)L�ST����<q�8�k���B�������b����
E���th,���xQS�/O?���o}=m�8y;ǣN�h�_]�������{�ͯ�~��~.
�J��ӫ�����	<���e�g\^u�x局�'L?�xl��~�
��c����;�4t����հ����@��-�n~�у?jR8�Ν�`����ε;!&�Z�*eU�/���S�a��Y��֪�(˘�K�I��*���:�l�
��P3[7g]#�=zt��			Hisss7l��@��8��B!$*�=��ӟ?�:֣^����+
��yz�?}���_~���VKХ%���O��[pf��S}N�Y||֒�O���{�c��I�����᧨1����c�NV75T��ػOk[}���q?����'.^*ok�s�P���{��:�ǿ��k��|�*����ѭt��(_=x�����t�����?y���~��W��=I�LK��U")�"�
ca3%�d̷�G5wv�����r+W�455522Z�x1B���0��}e������;n�j��W6�Gp]y�7�t�7����#D/M7.,>�,�Ē�g������<�\pl��Ó�6r�	��]c�v�p��o�����YP^�SZt�~�����K��;���kZZ��*ZZ�[���k�8}�*ZMK[���;r��g.�s�?�쳏>��ۻ߃+ҟn��,:����t����_��֭�U�<�<�)/[�$�����P�J}''+M�	Z؀ׄ@����̙�(O#��R!;�ۿ��ǿ^�{֫�ͭ����~|�+���|��?�����^�Z~an��E�'�/==
�1����G&M?0f��q�#�7��=�Mv�w�<b���]��dg&eg|���>���/�**s++�Z��|�QQmuNE��W�|�IsWgQMu]{۾cG+��Դv���j>p�����m_�m��mjz���֏��v/�F94m0F���G,�2X�6���%�kjD5H�yX�Re��?q�ȥ��NJK0iv������k׮�<y2қ��`�S
��O�;�J\ڜ��yKO�^}=pӱ�nv~���}�yɥ¥f�������1���9G&�8<n���S��qh\�-�:�G�u�h����of��н]�1)I��q�x���Ƿ?�0�
?�
��?�4��0�0�Ɲ�0���7_7�����/���ҍ�g�\�jj���R���aog)2�{ۺ�`�n�w���'O�ff���sW.}�՗p
���	J���(륥W�Z�V��I���F��(�
�B��h?�Bv��N��C�V�Z���kȐ!�G�ƫ
��_��׿=���N����������B���[�u&�����4���i�NY|j���3g��4��i����#�&>�k�;\n��>��S�bw��.r�ٶo�]�#b�K�Z:ZsK��@7%������K�N�p��Z1����;����WV���}���w0���wo��{8�{?�
����w�^�uuw�R�Ӄ�8���jZU��g��V��9��FQd5��0��&U��Q�I���������i|�QQQ���N�86C���oe��E-N�V�����R�+��.�[4��ʮ[�;Ol�{b��S��°<<fʡQS��|x�N���g�����OtM��v~܂�!�_�5:.�#(ܔÆ�4u�eK�C�6��~��0��tg�����쬬sg����_�����EXض�#=+��O?a4�䗏>����>H�����r֓ǀ������+O~��	��4d���>�^?ľϿ��O>�D&�L*���ǡ+@�l������+fѲH^�xA��Q%�J�_�8�	"����0`J����8�_F���D4���l=������h�x��eM����/
v]���"����N����;���'�>4q��S��|p����,G�u��y�Ƒ���~�A_N�Mӝ*���d&&&����X[XXL�:����O~���������Μ�r��-9y��p���o��m1	�Qq��_|�SaiIRZ�w���������w��P9l��QPVr���=y�w��_QK�u�c�O7vt���'O~E���m���*S�z���O0���1ƚ�w@6|�>�œ����XT�ˎPp�V��	`�
h���fff�7o��[�l�Q'DL�(�c��O~�yi���ѽA*k�^^�sj���cs�����y���>4i��ӺFO�1�s���c�y���1��yT��������3��9�ۚ�K�t��ʼn�ƌ�8|ĈL
����_o�w{���f�����+C��?�)������Uk�|��G8���
K����w�D�Ƥ�fG%��~s�=�i9Y�\F���w>��c�9����i���L=�ѓ}����]�=��b�����d
O��2Pݲ���c��}�ɭ�>��ǿ�
/��K��?3pD���G)�%����0PC�4ip������d�4�u�VX�>�
7��wvw�_6�
7ع7H��w�"p��D2���9�q���r`�Į������5f�Ǩ��J�6ٰ�ҋ�W���y95Z����$����%("	��<>���!��#c?Q���7��4�4����){{{h�|���m;�������]�q�ɯ���kV;q<bwdd\L�β��-�w=w���:*!����_~�MVnN|b���s�zEMu~qс#�!�Ͼ�z�޽��epƿ��*S�,|6�
��G7�u9��9q�|M[k]G[���z�������\)���p�}���3f����:::���˗/G���K������~�����~�1䐿��ֵQ���\�{h�����<���G���|`������Q��PmsK�V�[��g�b���(A8֚g\O�i��<���K!԰tuu����2&��O�9‘gϜ���412.�/����v�؁�]CCs��Z���Ç�g�f����==������i������ݴc���玟>�kwdVN���}����+j7���y�`nQQ\ZZR^Nau��G0fw�;�޽��w��޼�SY�g�~��>y�6������jOsCK���wPԠ�b6�"L��T[�@��	c�%333))	�"&�:++�^F�88����4}�w����Q,m���sp�S�;��I��c&�N�q�^c�<��u��
�f�{�صY�h�M�?nr�HA��c�i��D��׍3&&�������2,
�"��wvv��x�1
���`go����~c&c�����<8�n���F�B�(((��9NNpf���+rOߥ>Vv�5U��M7q•����a��ٙ�~�eiuelrbe}}lZ�����q%��J�㓓��z��O?I�ɭknC�t��ɼ����;�}���������N��R������������c�j�$�-p�	A�0�8_()���a?b�>��<�/�s�C�}�G7?����&E����έ�aí5K�,��5uv�ĩ�gt��ue<�^wX�a�1{<�{=#OlZ
ȡ��ht
�q�����M�Q�7?a�BH�@��#p��'���g��������L&C��^�Q:
Vl۶�ԉ�H���/?�����,\�P�t��iihN7��#����,..F����_���mܼ�ȱ��޾��VQU�+2�ڍ�w�[tdM˞���k����ܬ�=
���/J�*��
>��|#|0���]����iQ�p>�-�����n�^�:55F	�P\\��Ld�c`֩O1�����ge�K�5{	Zl����:�/��hl����C�q}����sD;�«M6��7i��O���޻W�5���s>��D��g�h��D�ûG:��{���/�,
vGr�P(Pp�_ߵkF`���P��F����N���c]'���aꈿ�M`
Z��~�:�3j4�8K��Xq�T*E"�ε�A!�F&��{;�/�O��`�BpE����_�ۺ�����o�4�k�J����y��3!-*�okFtv��;�>���O�����7n���=$���Iu�*@*}���KtsXZ���C����(#�Ld��	3K8���Ͽ����O��Z#�:x4H��-��䤎S:F�k���ΰlgXz��GT	�O��?�6�bʶ�+�B�&}a��}�E���\4���"tj|O�i�i<���ĩ�GD͒�N��0?���:�wBٰ^X��ߗ����L�>][Sk��}�ǎ2h�c�:4h�
PGj$����-V�X�?���bܸqxs��\�9��H_���^UW�*<)5���K�cv��V7֣����+>��(D�$'F��5��|��N�����fV"�'C�P���	8��>�,u��
s�1o�>:���>��F�FOi���r��lw��=r���V�w�ܳU��*R6�e{m�ȳ�f�/�jp�֙���F�;��e��|�J<�°>�tIti?M��
|sk��L���C��V�J%ބzp0�2�H�!�<�1ԩ���PW��Ԭ1x�왳|'0S���[�d����<*2f�f��w�{��/������qXDd���.,"M�����GJfFEm���>A���j�w�F%g�#l޶k�7(
�q�W���C

�WZ�lٴi��q�*��L��1���~~�ӏw���uGCfVO��29�%��T�{�HݛE�=|�&����(�9�㋚y�F'i���R
l�r]*9��y�3|�#�UNN*�/@a�q��s�~�<	��yu,fX-rQx��dKP*Y�n.hAw������k�;w.�lc}����`x1R��`h�3��L-~���e�8����'�kgN������W��B�}�?
m�a�
e����ޏ�Q��nikE.$��k��._��b_�~:�$�W�I�c��(��������cf�K�(�	�Q$T��$w]��~��w�����=t�`խ��/Jߋ]u!��9��'�����!�6�ɛE�f	��J\�(���kM�6v�F�;F}v�S���w�7ܹs'|>!	|<�Cs�{a9�K|~۰�4�
��@��k
C�x����������;fLG{;�B`@���NtT�5�+����,}�ɧ��!�Z����˰��ݺ}��	}�iS�~��w�.^������ٵc�����p~����j?��"9�$jx�����˻��m]��۷�SQpK���[�:)���`lQ�E��H�ir��|'[wVy�Qw����~�=r�;�~|����;�����o�
?�Iz/>������Mj����]S߿w_��T�#����y�
.z!�6���8@�
z$�|�N��bL���e�TkB����䃱Q%>9�A��=�y��88�Q�o^{�5a�<0�X.\�c��
��P9�1v�)�`���]�����8�����Ά���a3�a(�|5����������\\\�F�p'��/�N|a���sP��PE�1�(����������_~���>
e���)$O���/�=����'_c���ݥr(��n����N+|stA�I��#��H�*UDy@��,o���&�xŠ"��oHtU���XQ���!!!���lH��w���x�
oooЂ����o���ˏ��$��Àm�������u"�Q���k�c���/#M򯄓�S#ʖ<�"ǁ���	�>��=��·?��L�e�$�ט�4&wb��O�������R�MӢ�R��LI��`"�����0�	=))
�8�x*??�u�/<�=xCx&Xi`��4
�o1b'�S��y@y�&�Qi�@�c�E��x�C�����B����c�V��]�f^�w	'N5�
U9�ʈL��Nu�WV'M����.]�""�M�6!y�D�O�,]���c2��O���<����0Ru�*<���_�~x��/�~E��������-x��<�,��ɢ*�qa'��>�ˉ5�:�2
ȚF�P��S���|<N�Idz�8!`�hC��7��Po#����h�,U�@��:Muc�]�x���d	��'|v�cK���8rp777����d�a��T�eG��a[�";4O&�願Ďi8��0X��C��D��L1��4���|��;�ǛE*uRhîi?9':�EN&k�a%KӂhXlI���J*�E
D؅S3��4l��ga��q�c@W�h�<`$X��~|�uX��RgT��"Q�7oͼ��zeu�t=8K|JH�D��

|�N�]s���j��=}�b%s���iq��z�6ű/���Tb�	KN

[��7�߄����"_KmS��d�%�0�A�0ט1J�'�͠���G�Y�N�i�
��V�H�ȝa�g͚��"[�0~�"['{����T��Y������W�$e:���T^l@�.P!N��*��ᰱ�aa
?��	��A�=�GZ���E�������7%a�2N��r�4�$	bE�2||Jc^��8��H8ٰ�m�i�Y�p��%�sy]�1=_��"���:;�Mb��fP�{�7B
�*1�3�!��.^�ˌ������ä#̆�E��#q"#�/D瀔)�e���F�2���1�o���2���|�;�p�Nec����*ݞ8�����<Q$gL��U6�f���a�`Im��
G�!b<�}FB�=H�{C���]�d��N�@�@��\�d	�N��DWB��FI/V'᤿�NW�ˋ�g�<�����ౄTA���ʇ�cJcH�ئd�J���H����8ux�E�-���j)�UMT��N��E�l{��c/[�����Q��1�N/���8�-(�V�J�e�p��%���Ы7%��\Ia���K��G�d$�!N��D�H{�ZzC�l�۲;i�^K=�Ά���+�m�u�t�<6`����P�@�R�Rx�e�-%*@�N�V%�F��`��b?>w�>U-}���$#U���}%������
���.��Y3�	Q~���@�ʈt_���I#;�A
m�yV���I�������Uc�7b����o�IU!(N���`:�%�I�$�@,Y���L��j)�����T���%5����¹h�"@�TA�/�4��/��*�Δ�U��%�q�qt�3Ks�Я��ը��U��Q��A~�����%�>�:��-f4��"i���|g�f�����*QT�h��N�EwAB�
d�Ti{�:���z�}�O�Կ$�a�8��l���L>$*�R0�>�[�P����
���4k���
�A:�χ s�P�
T�\H����qQ�jI�0�x!a��;��xH2�c(��
6�-=�Y#�e�%¤�Ɔ�`��g��ldK�+��h�A�W���t�
3�^1-���'����b��|����Ӿ�E
��'�\T:��Q�\)�!p�|�Q4Xb��32kT�`!�B��~,-t��7⤳)��,l4O1=�:����k�'r̔��Y�����tBM,'�`f�(�\�7X��N��ĉ���5��xOm�-&J��`�a
wE��Y�/9ƙ�O���qy"P�Fx`8����6���p����P��[l`^ׁc\#�.č!CT5ac���'�{0GyeoT|Af�oJ�HǤx6��%��1e��l��7$fT����
4����=թ��X�t7S5��٢��YB(�C1���"������T�Ic����`�JY85�@��2��b�	&OEDD���)Ꞟ�8�1��j����c��}����È,x�:"G7�!A�Oa���F4)̦<��1L+[��!�u8oF<2��H:���iǰ���]�/����]��p��0_�i8����AT�Mp}�+�i4�!u���3*0N�	-	i�(f��j��̠��68��0�(4b
��<�g�UD�ÁN��_�ʘ��P��8�f�����%���:w����l��LX
,���,�T�5YT�[��gM6�J��g�ԀS��P�U!*#�D̜9�
�LxK���ߢC�ᤩ�dxi�mֿ�\ӝcq�A�D���Ao�k
�Bjl�ˢ�@R��0��٪�+��0���:3���0�c�}a�����S�q�����C�`�����a�~0���ǃ��|H|0J����?hb��"�a,{(�\���u�v����P�
�z-��E
&L���#|C��׆t���,�a��t�z#,��F��J閆�N�qP�>D2��Bg�I�k�\����
�.^��#G��-6P���`�a{!Y�@�w����p�E�f��7B7�a���M�\`��{��э����X&tt/�,?���52.�s�g�+
�#��6������zi��-�К(�=��^q�i|���f򡃿���^��b�8�/�30�̭.�X�D��9Gk�~|��$S�cro�)�Y����'�'��*G�;�!,3N4�:��;v,�<F��M�	0���w��X`c�1
&�C��:�1_]�ap��ŸÑxC�U�5�6J�����G�ְ.x
}=o_��	8	�ķ��Gk�m�y`�؞���5�>q�L>�|
H�&ß��2I'�NX'1�[]�m�a61��8�Yf6����؃1֔\�%\��D����0|@�B�F�S��L��@�t�#D��	�a�q�����%L��c2���q0Ċ�wÛ0�?���?`B0��
f��Z��z�s�n�C0��4&�_Q']���'�5��B�����$g�޼Ak�}|zD�	�P�@f�R�`T��Q_�^�#�tŖ�S
�Q�J���d�n����IsD�G�A.
Ai+�A?~<D��!A��p�>��+�[�!����`�!_�3���BW�DW���<�G�G�7>L����`l)������	��!�N|���8��ID�rl���{".%��8��:��
�
�‰�H�k�1��	��
oH�I�l�E8I��O/'�L���@�YeS9	O���ƙ��N�S<�#[�A�
1��EE'������FH�0��F���'N��897�=e�J.`�!k��/
=�;�}(Qy^��|��ǎ.��=e*�چ���%�򢚼\�{p߱=}F�0��?�H���?
��ob'�?9K�A؅�C���gC`�#AA#v<J	��h\�xC|7�Jm0�gq�Ёh���.N=��x�*Pm�Jx��I�&��?�f�8�^N��TO��O=	f>:%��Bʈ��a�a��&Y\�_��}���t�G}���tM��m9|gN^qNLt̑�':��}==�)%Q�E��,2�(�!��i��`F�G���
́�Bv��\�9����Vg_���"|�K��	j�8�8�X�$RY�ق�jt�D��0ĕ�EjR-����L;�{u�|�3��`Z�Yi�u
�@�>��!I��>q23����)-,�ml��v�H���N�;���s����T'���-%|��Pa�h��Y)KA�O{#v����׆�q��B�eB���p�L��v�x
�,b��:�^^{�����D��`���		���)6�%dk��q��!����RJJ��(K�L��m���h���rd�'�C���y����ѽm'Z�:���s��C�%�(9�w��K͂gq�e��
IA�8;d��^�ta���̈́���a`�r=����1M�1P�(,��3ۋx��Wt)ĥ�����o�B���9��HC�����!���Ӡ��T���B�"�|x+�Q��ONr$�L�e�d����)
�	���,u�9Po�7Q+>����#�:;V���;�m��j�р����ݶ���}���T���<�D���}x�t��-JT8�
5���(�C�8�(0�1j��	�8�`�wCJ�q�H	h��E(�
Q@F��o�5�*�LmZ�+"UD��4�X�p<B0�	�:�:N::
��3�<g���ރ5��B�_
_��*���^���@�&L,��P�-�c�wu�n
�n�ˣe���OM��D7|@���O����dZ�%v�B!l-ť�o�14��N]�=�6bl�O�M��x��$L+���B��8݀�8/�6�+^�lq
�#�DMl��#愱�"qM�(�
���C�������>^��@����%$�����u`�ac����W1���Йh,k�]|Mr�xBKb���	��?W�PW]k�k���ġ���Kqw�n�Eb��0�)�@ߑSF
IB�
ZȡRQ����+��2�1l-�)"�~JK([��k�>	�i��ŹƳ@��`؃sc���4�DE�W#�DĄ4$w<�v�z1$��r
�#�ga��`t
dq����(��=Nh�b���NW���ú�}07�ka'
�(�~Q������ԉF���v�[��/���)�oBp�7O�D~FEE��ac�%>B���u�C�R��@q
���q$vN��{h�`�ޓM=)7��08�"㤗3�U�
��1��S�619��"x���1�o,�~�+08��ǰ��@�E$�Kف�|�,?�V�P��W灮Έ❋�繧�%��8��F�-v�G�m;��뉓�G��S�ؕPW��0�2�B�^p��й��!d�$e�
[�v�T�2���J
XSt
���PtC�˛>'��<��P6�,|Hha3l^��`�!J(��*0�"a�UA�8e�����s��B���ܿ�}u~xH��g��{O��om��Bw�]
���{�[��
�#��%{:`�pQ*E`�	"6��pN�K�^��J}t����0����(�!�K�@�!DRtl,����DE`�@8�T��S,]�'c�ð��M�H��`쇫��mp�[5�Ĕ
Y�s��U�>�l�Ԡu��]TiF�����vt5n)Z;<}��d�"^�`ia�����է���
A��4��`��ya�ןbZ�6�đ�`�$�N�����ᐠW/�#D�衿�d�M>R����	���i�?�{
�)��1����0�
���,[�Ri�v�6Ն��D�`3��gٿB�!*EQ-	<�+��R�&*�NXpթ_��L����Y]�>g��U!~�|�x=�mz�����*<?pH(�w�ၐ硟�����|�F�
�k�5�e
�HA`�R�6��u�d0ڃ���-���a��&�v"�9d
8�x[l��O�g�$R
�R��N����;�Up���p�T��Y�li�"U6C�����L�iy�Ia�&�']rDs��Ȗp���.*�7�x�֒M{��eW����M2u�������e}�Sg�op}�C�[���Hx9�JF�]p��H7��!�K$��5zE�$x-`�!!�D�	Ӎ���‡!��[�4����)(�Y\#B��
0wHiз�xC�H.���ը:��#�!`�F�����]e
��{Յ�,���Dz�"C�8UѲ��B�
�έ���ϙU>uF֔E%s'e��"gY"*vv�'���I�8�H(�d�*�\h�*�|8�`6!
��G@I� ����+
���*|[�	��`|�ƴ��͠o���.�8�~0CY�(�dA�(�#��a�ч`-���(ŐJ"4B蘵�,Q"���в�T�&Uu����_�c���d���.�hC�x�D
��,K�r:�}o5���*�e�!��@]lp��r"?�Tw��`���MUb�zN.&
�ϡC`��n�
��)RId8�%:�8��q"k���
<^R6��%��"����%@�0px��K�Vmau�f���_L���yl��e��7�Xl6��dj���|���z�)I3�ۻ���N�AB��p�a�X��N
�Uk�O�e��U4�F�N.�(��Wx
(��%Ji
V��`�N�q�1A��s�O�:a`�a��1P3�)��0�����"�]3�p�*x�`��?��J���"$E��f{Y��
TM��
Tm'�Q/elin&[�#�ٹ���DSӱ���{:�+VU)�jIj�j<�t��ޗ*#'��5
db�ROx#"M
I�lV
�cx/�w�5>*�I/xC�cpB)l�
G)ߠ�*l���R(DU��:
��xCT`��
q��F�!t��"�t��*�=��(���RU}j�\).���߉����QQ�r�p:
�/9F�~$�*��"V������0�T��|�0��xȖ��6�ZD�,�ЄZ��@%b�zM��8ST/��������\��ɴ`�ɥr#��K�rU�>����e1�a�z��UqZ����<[8�^q����*`���I
���6�ĩJ�W�	g�T=�j������Uˇ���T�����iU%J�R'�?�7�khy��B�8鷕�ޒ�e�0KT�.)�E�>T��Y�|مe�j�y2�:H��j��BJ%�Ē�V�9�ҫ�}U�Kɨ�ª��}�RO��WU')�%�g���e8|9(H�q��P���$r���xy��V�҂����%�2�=�h'���'z��%�	_��E���+Q���("�n����JU��/p��TH��W��?V�T��K؝/��|�Z����Mo��N
��|�h��;{^���y�E
�-���EH8�!��ƽ�V����I5�Q�%�εW��f{�P�.�XV�/�H��O%�jk{�g�_�ɨUT�&�%ؒ[���t�8)^U�2�T����{�!_D(�*M�ʺRU�RL��RY���U�I�Wuy�7}�[%9�zU
�T�a��oĩ�*�jL�8��SR�N��B�!NU]T2����$��JV5�Q
���D,T5���eĪ�Ϩ*U
�+U��3Dz��}^J�N�qR'{1���|*�KT�@�BUr4��ҥ��w(q0k��W�X-�Q�����JV-⥇/�S�r���W5V�@Wm����,
�4�IU�8-�`�N��s��U���CN�Mx[��X��g�Y���\��U�<��BeY�	WM���+N��3�y�X_L�?ǩjxU��,N�`��08q�Y�4F�:@�Ʈ�	%��U��/n"��(J�r�XF�0��Ml��Jk̿‚��B5ۘ�
*�8ѽPK�
�T��Z偪�l�S�b��3~^z��a���2�3>z^!�5����']�B��p���d>�S�nXJ�
ݙ�B��j�RQ����4hA��Θ���&@b�<�ƴ�;q-tF-0���g�R���c!f�R���,�KF�=c��eB�XI���}qJê�r�g�b�@E%=��^���`�	K"ha��KX!��@��b�TOO�,K�ɒ�RA���g!_b��`\�&�*��d�I����^��^����{5�l�A-��)�煾��j��ly��qR,CPɖH�B�c�	��a^
�6V�؃�pH�X���*T�V�(��݉
����$i�%~��W�/Nf�,�U
UKKj�^=�j�A��yQ[Md�S��S�٧�e�T�\0*4���~�XN���Té*P5�J�X�B�$P(=E��|�$	�e@��^�^�����b������j��Z��-*��0j�}I�4HI'�;
�����0xG�P�!IBH�H��oL"�x/��8H�Mb�iV�,l:�e�ʗ5��l�!V֕���2����Z��ež��ZdԳ:��^�ޗ)��aRg�8)�
7I�a�$ �		Yf�ǴU�B�׭\�&4$<4hUXP��Еa�k
F[�9AI�q�qQ1�	I��q1��b����ccb�ccU�>�fC_<V������5�^��B��E
ՔJ]������ۋq�f2��-�}q-�y5}*�%�.����Ĩ��N�-��
��-Xb��#׸re(|e�xԽ��rU@������
[������!��׮OKM�'v�\p\LBBLJ\TbBTbrLr*��%J,��W�תRd����`A�����P*�GTD$ɒ�C0�ƨ�i�\���<U����2a�X�W�T���e�v��Oc���<(�~N8��]Yȴ2+!C�ſ��+Cׄ�^�
O��g
�CVp�����hA!+��׮OJ���+*&"2jgt�����xlLT\BtlB$RO6Db�Q�J{��'k�	0is���H�=뽽U+���jI=g>�,��Y��5>b]�j坊��;�D��ND�&!Y�4�66�!��2d%2����+�V�^�~�ƭ[vEF��&&'�f'e�&���e�f���j;p���֮�M�+*K*
��ӓ��c�c�"���˲�B�)�z\֕��`��ހ5�5)>�.m��!4GbUz{�W�UM�=�J!V�4�+�
��CR'�I��:N�Q��w�(��:���!s'�M[v�LIN.,Ϋj,�k��j�8��q��c_WK[W}���}5��+�VUvTUtTV�:p����#hgn�>���+\����w߻y����g/a2�Z�gx>"`ۡWZ��j��+T�P�E���^����ٗ��(D�VY�������Uh���_�I�b�9���0�Q'D���)��s
���\S��l<�C��>y�𑖽�y���1�e+�-�2�-�]'��99E[�6�L��*/��w�3ڄ���f��[��eSơԺ��.]@��D��bB:�YX@���B}�@��j
D����P1#
�\u��>o�
}{-'�t��c����jm��)�%��s�W+�;z�psCSscS󞖂������)�mY�1>:�8����?'W�Y��7s[���>ӳ'�H���
�1��q�h[4^�?�M�ڼݦV�^�:��yh�rh��W��V!�\?bY�m��ŗ�)=p����׮�8rfO}cAn^R|B\tL\tlbl\L�ظ����ĸ�4DN�k��cX]p�FX�K�#
d�Tςë�	{�SU�a^PE�YpxA�D8������Ͽ�{`OeuMǻ]�pUBcK}S۞����AA!!��#K+�:�:��W�XR4;}��h�h�t��0�^��Q�$�u�;
����w>g�ta��4�Z�g�ĽF�Z)t�zԈ=*��+�����8���[���o�~��C%%�1��Qp�I�	��w�K`"a
���гH�`f
S���{��U˄�S�r�J��DIx7Uc�Y׸�!���3]�����fi���ɩ�{Z���f4e���M!��q�Q��x[^�5'ь�b�K��%���l������nu��:�	g	�ϴ�%�Ê��Ż�ŻB�U)�.g�G�ԭD�U.�[7qMgP��w��{�k�j;X�]���'6>��(
��ɕ�n(��La�	!�����=��9��y��T�z��<ϭ�HR'�.�LnTT}������0�߱}Nj�KrJ�*�V$�&�L��K2Ζ�h�
��(J�
Cj+���$X�l��Xa̟Z$K���z%�N�7�D�]��.u�.q�.}��UJ�*��
�r�ae�CK��e�.ê����U�UʡŊ�nS��5-�<��ȭ�w��s��Km����`���)�a�۞2%?��~�b���^��QU�ˎبJ����RϚ~�yI='9�V����,X"�A4PPY|�ֹ�Ssd{��4O����̆�]�ۦ�L���cl��,x�ְ��8I��4�Q�(�vE;�c��'Q��8�+���JlA�=�+k`_�ӫ����p��y�;{W�xW�xV*<*�Ur�*�{�̳.��=Jdޕ��5�UR�J�K9h��OӢ�˹?�p��M��J^>�
�P!�Rv�~*�p�0�GH�1>Ú\Չ,=�Ѱ8{-�
��:��e�ck����\����c�nM���
/�;��e�X`1��q��N��x;Y��
�^�(�X'~�#֢8'!�8���e�V��9��ūD�
,�g[��7Z	Px���a�)C�r�
�g�ͣ\��a�g�LY%v/�/v�V11�`p󥆫\�t�R]]cBJ�ȝQ���a��S�+펃Q��(Ae��!�!�4ٌ�J>Bd�_ɡ�Z/T��j|�b�1�"��ý�b*����?�⳯jS�=�q���%C[e�M�C;��r�fs�-�Lh�
���xhCm�Kp���Kv�	��*�Ԏ|T�N��Y"����S�.�?���V�p�0�.�e2f��yq�܂��7��q���Ί�ѩѻ�bc�#�-l����d�I��
S\��X�2%�%��Z���֕z�:뵐�(�Zd'�R=��w�����p�GfǷ�o_����K(<s���/j���(to{��=�d#����KI���+Nq�=7ޑ��'tK�
⸽R|�F�cY�^�
ȴ��Ư�C�H��
e�ĵ\:��mQŬ��Ig>;v�M��&$�F�$�&S
C�K���G���cm�4i:AeK�/�M_P�W#�FI��-|���?0��~��g���g&g�]��n���Q
��{nM"��l���p뗷/�)θ�q�wr!�x�����
��į��v�S�2�ӫ��p����MU�x����JAth�»P�U'v��Jʜ\��Q�"o��ݫ׫r��"��0U��%|Тj���)�[�P�����@QEb�w����ޞC4=�?�:�A��!zÏ���{�g�SS�ғ3jK�>����۝���y��[3�ӽI��H8��"��2qM���8����y�S��v�W�5��y#�Q�5�j���,-pb�Q-t��*+��
�G��g�tn�Ԭө>=����09���8��lJ���A#��vH�+퉓U��|�L�U�M{MU�����w�k�#������{���um)�q��B�1�ӣ�u�w��Tqڨ�G!
����3���/���WpN*�',�_R�*N�R�G�]K$�&L��{\���w�.A�$���Ws��e��mCJ��4I�l�E�=�Mk�ݧ�S5�y����(M�9ܪ#nl_5O%3�T�yԮ�]�1���~�q��������
yǽ�U�t|gag>?��5Y����
!-%8r�%���X�,�gk�d���<Ĥ�D�������B�{�ԓp�T�'T�L�z�J�(��6�F�/hݒ�
$�ڵD�Q.]���ދW�U�V��N���Rl��f�hl3l��B\�`��ç�Ҹ);K�੥4j3CՆ��L�`����"&q�W�n\oliJHK�H�]���r�ջWv�ߩ����8�ԠHF�ݺĆW�tT��_qW�*NnO��N�X�d7�a��֭;j���7,b���I���{V������^��dp:��&�
O;�r�w8�3zG�]����fL�\5��)��tq#$|���08%0�s�YᲓ��ah��@b��4�%�3g��$F�'D%�N�[v��>�s�v֞	�j�w��G�B
�[�S�Oq�*~1Nn��
��m�"�5�
�ֹ�P��E�JN�I�`�2�T�)�[�IA��ҭT��R��Z"(vZ�>w���[��)�,߽3��Y��:�qR&�Zl"����������MMR�a��j#n�eiB,U���tWW�!�62j7��eħ�d圻p��Ww��<�f����e�e���Q��(Fc�N4�=F��K�y'۞�����)�n���n㒆
�u��:�"g�w�%����3^9�l4��
%Er�B�'��J�(���b��Js/����pJ88��^%q��V�݋d���D�Yw�ƭ��}�2�w�`�H<vQp������4>�[�
��F�e�4bE�WH��R4K�2�n��qe�";�v?5=��񓷿��}1y��Q�F�K�@Y+pm����M��uۃ����#�]�U-�'18Q�ap&��B��0Ɂ�`�K��GY�T��ֶqS���y32'��,_��W�KpUgYZ/�&B$�&�SQ�w+�x#G�**�r�нG�>t�����bT�(R[(n‚�(�E�$_z�,3��^��u���y�S��a���s{;�G�f�S�D�*J|��w��ŝ�/��m�'+�7:��H���
���J��(W���)Z�F��6�~UG*��6�h'�٥��=�B�^��8چm75a���m�qo��=�����O`��T[/#*Pg�h�|�[�أP�Q
UoP�Z+���l�E�uN�V��n�b�ĽD憝�B�{�˄�Ry�Ô��g/�w�X����̝ѻ�"�1u	�tG�.&�aV̙�����bpR�J���Ym�Fc�"\2�CE'&F%šJ��丨���D��E$m�N���.:r�ԭow���Q�)�*����b��k�إ^��
��Wx��ܡE���-M&,"�5G*��q3I��#���bx�k�d�ɩӢ�bw����5&Mɏ1��P�B��<���G>p�j��󫆳���{a++KE�͵�/+rt��U-���Ƿ��uDG%FD���m[p��w��ޅ�Q|T�`5풼X���h���K
h�h{B�dL��J����{||rBL|TqaݕSW����C���uưR�DY-����z�jS�Yw�Z�؍e�Ъ�l!��$��.�dB������MY-��s�Q��N�X2�#O�/r�4���^(QknE�7�bx��T�<�\!\�
����(㍨r�ڱa��w.���Y�Q��+}��Q�ѻ#�)��2��re%�?�&�3�M������Q�h�]I1�E酝��_~�Ƨ��V�DID^�l�Պ��Ğ
ח����Y�8�ю*AU�'Na<5#@�Es�m��$�!�=�����Q2~b���WN,�ۍ3_�'a��4�{���Y�n�?NW�,I���e<�^I	]mM����o}��ɋWKۓ���lڹm׮������pI0��a���%�$%��`���S
�o޺���/�|s2�x���}@��U�w���V+'��p�7�T��Q�4,j���S��ɋr��;���!�^�ȉpܴwu�����Ҋ�yU{+ۻ�F�㼄:�p*��/n.%"��js-*��(8t�Z�UE�����Y��Px.��͓Wn�?{�x[cCiV^z3�Q꺴f�$��B��cl5=)�
��������o\����SwN��l�Z��Z��(�x�&GY3׭A�Q�PK�!m���gX���Ag�s���
�:��81ީfl�R���]�
�kJ+����қ��v�M�Ī�k(u�爕y��:�E}�,~�%õ��^"�(�V�\Kd�J�2�J��r���?��{y�O�ٜs��C��}�l�*GQ~�];qY1.P��1h�"j��:"�������˯�||i����;��Op���깲Z�[�ػL�l�"J͕"�Z�kcc��"r�/��(�ٍs�
�^Å�u�0Q�<�ϋ����&�C�uC�
e��BNr߉
��=W�ny�\1�~Q#hzAs-��7U��Z$r魱
��U��z>�Wp�e\E!׫\>�c��A)��nT}�Х�.�z���n��ỷ>�}�[�Ƈ�o~p�҇�N|t��fC����A���Y��R&�Wq\jy���}�ln5�]�idi���Dϱ�e�ĵ��AӈV�38�|~u�b��x[��8�iZҤ�����:q���#sR&I"�.#<�٭Η��'���g8���=*�y��"�r��X�V$�Cy���R�	�*<&֌�Q9~vͤy�S��M�]3qZ͘	5C�c�L�ԽJ�R�uCm�ّ�r��T^�]�ᳱ������g�=��:Q��#JJ����0]a\���C9#������r=�鎲(I��
pN(A����a���K��SmO���NV�j���C�2�گ,*J�2���'���+�2�j;)Z�-ֲ{y�����\�UVC�
'T�q�5EL;u���S3��^��^���	8�1<$*�(�Nk���H;n��0��!�Ta����zݚ␰�
�x�
O�QF�sNPt�0�c��|��@���T
�{40�'���]���r�3�_T*J�n�r�
�K�عR�Z*Bs+����F�BY)p��ː1MV�DȥF�Z��X�"��j�al���Õ�]�,��-.�Z�6�0��C�W��x*|�(Gq����q{Ot<����'N��6I�w(�g���T抠�>ګ�$����@�']�lB��\ė;�J9HO1,������\�W���>J�(�I�eb&��T��*T�=�en�]a�+��gY�k�8���<|6�u�gp�a?���ԉP�c�D=���D	�)�R-���M�=�po�Ԕ�cҼ'��rE��>���2�p�[�X�#t͑�f�]��in9b&>��A�8򙖫FW������[��E��bU1�@��z���"�k�fֹ��\�W�r�QF��0�\�2�s9��.ߥB���,`)֮��J�k�;]+�\��nUbE���BD͵J⁀�J�Z)����]�ε|�:�[��n(���u|E5���P��~��K3RU�g���/j��78�Z���8�
��LTD1\a
�l:�b�ݶ����j��g/��>Sm�[�o�	.����f6K��MT��{�
fG>�^��5v��>c���p��L��\��៪-E@e����^�*�ͅ�3͹Td�(�*�rЂAFɄ�J�
���+9�:�s�@�RT_R��\)qA%�V���k
$0ue��*�
�G��f&���B�s��=�D
bLEv��i��%�Lp$��G4+I�/�)��s��\�D��ʚ����;~��p缬Y������d����p��P���8���\
��M�p�����L�(�!�P�	���S�"J*��*8��Ы���!$�H��0�]N�֘��=�5`�s�B
A
���a\V�U/�
p��8��q=�e�/�Z��5�e�`��p�s��rp���P�$J(H���a�f�,fFN��2if��9��I6�x�™��9g	z��-TmJPV�.9�Q*��Ls�㫵�'AUmn�L�
�*����pb?�HPRi�R)��t�Z�7�*Wq��K��\j%����D��oGe��Gh�ȻN"��<�R�s�D��*�pP��:O�&���P^��6�
k��;�NQ4�)��2
�u�����{���DՎ���(d�`�28G�{��Y��L�3-K't�L�;p*
/j�|V��0u�Ex9M��zs.d,����<E\�(�ȫ�\���d��rm3_N<GZ�_1�|��
�k
rGE��3�3.�(V��0�r]R$�'�F���Zo(�m�Yie1�h���V��m��yV�]j��|�j�d=�m���<��cˋr�5F�8�0�a|쨲�e�k�Ĕ�7h��6���+QI8�|Rg�%��Gs���8�/d	��$�=q"���r���lh�`��gj8�
�-���l]�#*]u�iI�:ZL7^2ұ���ߌ3��p��S���}�ɃL��<#�i��q�şng<Ro�g���EK�����Y�7���OՖ�p\�uBt������9�;
"���w"Qq�GSd�K�)��p��	|N�ݴ�Ii�R�3݆�zdwf,ȝƋ{����\/�T�s��%M��w��5U�.����i�|��?�s_�媛_uc���)յ�'L�i����5�',�s/Jx�Q/�
8o��)�f!��HK��3.���`k2���:^�q�����6a���u5G4���ij4��yN�4����>&�ct�x������f��6�t��~���N��|C����x��$c�)����s�l�[����pI���ѽ��d��`�@\g��<P�Ed��;���Y�8A$��{&(��T�2���]�OwNJ���N�
�<��gګ��
���J��+,]�\k�����4���8���Ro�A�޶�in`=h����i�h���J������_�E���$o�[k��e���]^��������_7��m���h��mκ�z�U|}���_af&	��,2�\��s��u��-4�0䬷��5ykěZ3��h���TT󕵜aYή���O�RY-�4�sh��o�b\_o/��plyѶ�R��lڐ�/ɿ��.ل��l㥣s=�NE��y�|F���Y~�e�l�l�z�y��"�׳��J�|�j�;���R��m�%�?p�k��o(��������Gn�9d���l����M�=r0g���(�!c+S�ܕ���t�]���Ӎ�&�Z�1�]if:Gh��j��b��M�.!\�F���7��j�4���|S�ޑ��N{�
��f�0T���p]�T�s�Ի�mL�p�|W�
�
�g����AY'�U�j�����U�"�=�}���v�oq6�|K�f5��ק.��7sL�{D�+^:*�S���tN�+�x������9C���X
���3��Me��x�

�����j��{�����&S
-��
,��̱2ch���f��0�k��D�WT��6[,��/��������c���Ӱ�dbd�Y%�s�5�n�s3q\ek5�X�
s���=��*{�r�7ԏ\jĞ2��Vx�K��x�!��6
dHZ����'��4]k1�&F)8_�wF;!�DQ�k7*~h���Íg��n1T�3���)bp��wpfs96y�g{1Ne1�M�ܷH�Fjx�wp�>��S�_�����`1�-�����X,1��e6hؿ��K�[nC��i{����Vn�|i�T��0��ch���*w�rST����U�1�Jy�H���Wn�Ҽ�J�^(����;y��H��8��Gi
_Z��V%bR�
')2�Z�4�޻Z�U�lU�\�
�
d�3#nn�"�ض�k�ʣ��nL.Q/�I1�
�N��(����0#g_�{�lT�w񁢥Y�y�}O�������pNFĨӹ7u��5�����gZO��}ڞ^�D�h�l�ZSdr��L%��9BY�@��G����Ls.�9�������V�hS�$g���A~�v��X�S�\�H��+�,"`��p�E�Z�{��K5Ϲ5���AZn+G]�L"/��G^͓�9x�`!ǔy��1v.+
ĞE
~�*�^iJY���B(���P�)V(���%���5�.�RӐA���jfX۹�?�J	�/*r@/!��
�~��[	�H.Nn��N��I'7��.�dD�g��������]�Ӧ;�R7�=�/sO`p�$
��BE_���il���w��6Ep�zS�Y\��^��;]�,'y���B�|1�RV��<�<�Q	���nn�2�"��6÷��a�R߳T)F�T,�t�
�(��7Lo(�:/.��*��3���\�\�w-Ɛ�37�ҫ�SQ�`Wj���V�R'X`E3_w���䵎R��VKF�*�5<e��v���:!.,�KF���h2~�L��ᴷG4�Q�5.m�#�]�m�낫�Xu�І�/�)��b9�I6�TG�N�
�{K��Iڛ
Iq�ǫ���lw�tI�<��@}aS�)��=۸�LZ�>��0�QZ�f;�s��,G�<�Zd$+�#�t�:��Y��s!gh�&��8!�r0�"v��
 k.&u*�R�t�S��j�0J�0�"��:��U�=���E�ѥ��6&Suq)���ֈ
ތy�[9�Y�hj(�����Z�
m�Q�F�ut�i
Q�f>��v��[�RPm�U*w�t�eo<ǀ��n18S-b�}ۅ�����u
z�F��/�6xjK���=��eq+Vo�[;=i�Y�&7^}��8�.)E*O���'
Vm�tn�8Y��,8�+��s8H"��v�|�\I��;\Q1�A��<���+ͷv�U��=s9�]V�b���VV�$ȷٹ׊M�t0���M0V�t�2�G��<U��bfb<�T�#4�m�Ǝ,Q:��m����x[��0P�����
����#�rԖhp���u\`�4�-�7&
���+�
���_�.�s�ڢ���oY������RGH�afT�J������p�'�"��'/��o.�Ήo�8tz����N�>y�ԉ��
c��J�_��g��%óܝ�)	��4�j��s�[�	�����%��F�d���N�8�A���(XB��GY>,��"DOa��H{�3]�\*����G�dD��
��=K�"�DZ�L6Pl�����W
tҘ>H*2�i2��m�:��ci�X���`����eNҁ���I:nB��s�W����D�m��ul��L�^2�}�,Jhh'X�5��Τ!�K�8�+��y���E;��P��TT���z��u]�'NvzNI���d�;�xŸO�9n^�Ԡ��'��|�Q}�n�n��4γ89�W��"2���*c�|�4>OH�H0����'7^f`;��f��S�%'��h��,�#N2q��
�r��X
�̦�N14�2ҝ�a��d\�зF�a2U{����s�5&�>�e��x��c���t�������u�?e��z�ɋ9fSL�&��q4D�kM�4n�|��~�����e~���Rc�da��k*O�*�'�:��1���*�XZ'`F�*��d�y��A1|g��0�����q��hn���}9�[ڦZ��/H^Xu�aE��S�!;��A��^������d�k���qN�$�ɦ��{��<�I�$rN@��4G��S��$)v�,�(.V��Q$�S��DGE�P�*tK�)S8�B;i���3,k9k�DY.ٶ�,Q��4�"�H���
��8�k8�-��HS��<�:'A��h��i��؏�9n�|#�z�-��ctt\i;0mn<�@��(٩?�
�P�S��s�ྮ7E[�7m:X2�s�R�uȿ
�m;�R���b���Dmm7M�%
ͩ����]ru'j'��j���{=]�|7�pk��n�^��m��<��r���	e1�Ɍ�a��\�V��=u`�
���0
�=`�s�����``���0�Υߡˇ�����K6A�+�E&c�O���s�[E�{��*gDNBz�sb�N�D��i���s"G�.P&	�ɶ�Di��8�+Kq�9�39�T;qG��$�pT�q���G�9E(J�dZ�sx鶢LGI���\�ı�o9<��9�g���r��K�6@���q�n���B[�P]��d�E����@37S���+8�w��z����b]��h9�z�	/��x���,-�2[M�����/ғ&st�o����æ�Ї��V��[��<�m3?�����S����m�1�72X�a�D�x���NSi�f���3i�5a0
�9E(��:W��^Z,q)+0ͥB�	B��B%&��I]�iJI��JE�v
��T�0��V!r�b�'�ebĔ�n�Y�Lh^����;G$�[�]��t�7A�j�桞��=�9�o�J��{%+�2�1��$#�Q��]U���:���$�,��%��e��-^�H��"y�~F�@_Ǖ'��"�d'K
Rm�6�\[i��8�A���!F9:'	�iYJ�:�4�`5�j�i��a��sʹ&jq�i��/�?�כ���9r��0���d�!y�Pjh��Po�֤�1�n�o��%�v@�������ػ��|���<-^��[��k����Z�q��ۿf6��M���~S�������׌���bm�����m���eIݳ%�@]���s���@�Q!�;�K-e�NL�pPVً�(�c:���K�ԥ�8�q���
F�E�*;Y�)U2��KJL���"���%�<��О��T!�au�~G��&����kTb�ǭ��o񜀹S|'�Y1m������C���=<V��	���2��҆�SD�;Q�h�-�Y�tG�i&o�%�(��qW8�%o���K�z{�p;���N����6C��9����p���؁��ev�����l��Q"����h���A�sl�����[���n�<�gh����v[j�@Y�=E�=^cD�����߼J��L��[�7�Ya�(���O�~�pG���>�f�.��Sf�8�&�a��R��;-]�^�r��w��,�ih��8�VTj�Z
t-+���b���AV��L�s��:��Kd����Y$w���$��\e�\Ti/(������s�
C+py�G��r�re�cځ�ce�^!V��e�
��ѥ��3ty��̄ӻƹ߱��a�p�=RgO��qV�F���{G���_�"�
+6�De�o��_��w�S�}�gO��,��doq�H�f�[9�r��H-q"�d�����S��?���ϩ:g�p��X�u��-����	�]�^w���׷�2�{����ְ]e.O���V���8i�Ju܊܅N�t���B���"ˉ�S-�*��'���ia�V�1�Z�i��hm�$��<�~�~�L�V��mW�)Rx��LF�H�ۄ:v/P�e���K���	��yn\Y���c�j�0�A����\{fV~�H�o�)
�|� ����LfZI_\!G�%��#
0�Ӷ�7�g�8'Z�;ʆ�~W��-tϔvؘ��/�z{�u0��H�a5��Mٿ�'�wMx�:8��E�����O��QF���\�2��Z�~�o�&�nv��@������G�z���t�싌�_�����3���=�}/���N�x{^�ǝ4��y+K����b��4D[RM���p���4�����Ye�v0�`h3�b��ۣ6{��ihe?�f�~�~�h�`��A܁�y��!��Dk^���������V�,��0�b��S���k�Mִ�3ycҿ�|[{�Y���d'�:DX(�8�iB�G�4�4�A�m�Ih�<Gq��(�ʵ@"α��Z���َ��<�T��]�8�GI�(�$�\'Q��k��!�F�;���޹�
�rl8:KPOp-	�y��]f�	|�
s�eC$y<�H+�E�f�M�2��i1�pȈ�V���!Xj����p������
��3�M�����]��l��|]�qf��xMh8���K����f$��X'E��~���a�֭?�ѵb��M�7�z���Z\y�4,[�L��d�;�ۊ�l���
��p��D�G��m$p���A�7-���/0��g:����k����:^Z����=ߐ�9��ySs��Yۧ�i�5�r~�&�0�`J$��kH�{[�����3u����&�T�lspO�Kvr]b%�t�"Y�*R2��P�Αf9�D�цs��{��8ێ�+�Qg�:�l������a2L%�g[��܊��,+A��
�V��$A�H�����^��a��=re��|Q��ɍ�p%�V��f&�
����$-�)Zc4uG4\:PY"5]`��ge5��t���i�8r��H==n��-\b?p�kV~�ڶ:���\cd��^U�).�wI

|��u�|�3���y��9�V�8�F��væ�����gfed���~�?΁���S�*�4L�`����E(�ߖ,�a�t�h������p�;����|��@��.oڽ�%�8�Z�k�(@h��u����F�uM\F�Kp�?��p��xGy6bf[A��$Ӟ�(�3�	����;I39�tI&@r��[�)9<��9Y�.�A*3%����&stz�ǽ|%Ev�9rq����	S)�3��d�
�딃���h���#[��5�M�d��;ͱCt'���a2A�d���h=�Z'8�Z��:&�t���+̖
m�k�N0��o�(�k�Bg��S(�m���u�4��X������E��K��+_���G#�pj{��&��NN���`���a{�;6���P[i.]�t�Ν��n��'Na���d/Q��{�L�����żf�o��no�C�����r���C8n�ʗm�:�q��tM�hN��_�AC�.�|�x	N�T�N��4�	�J%��.NΉ|e�H�uN`�r��Sl�i��4Y&G��
L
tXh�6�m��r��a��s��K&_��;KcB�(��nf���Y��b8�P��}{ě�K���y��5�%�&�L�<�L�ZL5�أ,7D0h���z�_N[�����"l:p��26�k>_߽���O�*�r���2#��:�s����W��o1�<�D�<B�=k���n��,�yKE�5��%<Q�-��*���V�w��ou�mG����-�i?�y��!\����[QQ{�'Ni����a�{�(�"��.�R��A��Q-p���"Jr��
d�<N��8�ǁ�����l�16��|�T�$ݞ�a�Ͱ�bg��8��#G.�w����\�\��(J��؊R��$i��:��-�ƶ�g2�b���O_���]{��&��c���s㑺�K
8��r��������ip�e��@��:�5�2�Jǁ�o��u�#�t�z�tlV��򄚳ސ.�H��nIB�Y���ML��v8��h��ԛn`�؀��FZ*�=�]��������;�]P^�c|��bcaG\h�V"�V;pK�]��rq�
��˫�+ŵ�:���z��2�K���Z��Z��guȪ����������+U�,Y�'N�d����N���8�L�q|�h�0�W�1�%:�c��t,�j_�j���Ib�_ʒ@K$O���d'K�@��dG>�YɎ��q1�M��(K塡,���$�N�:	�vB�P��H�B�HS��:�l�>�-�r�7=�"~�;��p�`�i&>�_sK��H����/����f��|��z��������Ê/�S$����G
��d"�ɶ;��%i��F����E�<�,�[�Щ��9�~G1�R��%�R�Y�ɝS�x"ܴ���ŻQ�q�%��g�\Tl+-ub&p�q�)��h�P�y��Y�D�Z����iA=&Z&ڌ�`�����͛7º�…�*����-��{��3U!�a�
����8�=NM���$p^��	q"�$I���M�GC��icX:���𴡦�=��:5٤m<�رД��Fo��q��e�6V�r|����[/��ߜ�o:������c4���v{Ms�`�QC&���sm���'�K�eD��毨>�g1�=�x7�o��懺�0WX
H��/��`�G1�u+��R'EwX��o���0"�{�b��L�$u}uu5~�j���	dXݗ�lUpr�S�
P��M�I���!�����C���=��p���BP�oh8�l��Q���b�
���7m�����[pwZ#+��r
�4����(�i\�o.W��N�h�,Y�ě���s�(FO����|j�EN�<\�(y�PfBm��Z�L(/q�1����U;���o������X����?-�{��eU����tK�y��%�	~�'�?4��4�H�(��h��^I�����C%�JS4ٳP�i��.o���$�h�>2%�`;�pK!n���Q��P:vZe�����X0�5U,H����s�HI����l��BS+��K0��T��(�3�GT
*��a�i(6
�3���1��".*�h.%|\M�_�pGu�@$��zJ��)H���X�"������?������qO܀2��غ&Jݓe���q>E�bco�2�n��j���,NU��'B�
Չְ��m�����|d
��k�\����/��(�	c8�D��?�J�k'��\�E_�őd[K�l����ܳ�.��(�U���\��8x�D�B����8ֹ��[�b:n��\
df6��t!���[�G��DY�0�آg�Q�d���V��q��-�y��Λ71-X�F+�󺗗�	���
�.��"ڞ��WS�82Ulj=z�nu�℥E#��!̈́�8�,rMq�=/�J���97	�-��bHG����9I���S�4qI����3�X�M����s
_��(�9ZL$�
>p�2"
L]�g���0Nn���b��\�UZ��:f�t�W�Y�շ\k�`�J�W��o4�w�y�9�Qu��3����m�N?���֎��’򒦖f�Yg���A���,m���a�U!�W:���uv�䈣����%c~��n�8���Pm���.��6U�*�$	�Q��4ˈ���5E�x�'��%��
�Z����@+2���"H�Cb���t�<����S��C��	J��>&��eE|�d9�`i�4i.Gҽff�0����§���c�Y:O��˹�b��#-���o10ݠg�Z�
L�p��Q���*}�0]�0�p�0]�Uaz���ktM�꘮�5[c`�ژ�ն߉[g0&��P$1\^���(jDc�
�mmh���y��}�;���O��+��\�d	o��bL��40A��8V}��k��-I!��E1Ɩq�=����s��^>U<p�:ԧb�5�U���\e)LLD
jCS��@{PpB�<
E��,�h�l0�Js����HL0CC	W�L��3��9�{n���.SK0ۨc�Z�d��q�6���[�74�2]�k��t%ħc���"��4T�$T�<\8�Bum����1]�m�Z�d��!$���n�Y�8a!�yN�=mEЊ���#���j�J�K���o�g��8�n��%�^p�(p27�b~-I���k�L����s�XY��$Q2�,Q��T��$�@]�5^Ն	��P���	0H�Yh�tGQ�n���i���f���z��:�aZ�+Ѵ�C�ЌB��6㰧
�afk�LCu�V7t
��
6�16^��1[e`�o��J5[m`��r���J�U������1�\�E���T_�5~���&�X0}����Z(���p
��ĉ	��)�tzN5���W��
J`A}Q67e��*B�%��ڊ���%�(3yh�nLs�$�p��C���v3�MF���!,�U�Fᚆa�!zf!zXSöE��E��9Z0�C4�aHM�u�Wk�Ƽ˕�k��iw��6^���v��
��!�0��5
C�LW��(7H-��u���l�7N�TS�79p��X{1�m���Sx�r��9rɈ��F�6�9N�
��Tm�8e�8��^��Wa4~�����/H�
�w���J���p��D�DA/kx1g_��\u+A��f�D�swZ�m6�\g`�Z�d��q��Q��a��A��a��q��Q��Q�L�uM��&A���
�c��f�1��o�RC��ag�V��Np����k��iZ��%}���&iz�D�f���Q�3g�N�l���Q�0�g�QK��%|'7�N�����:��
�l�D;`�f"~�
��D4�m*�&"dE�NNA����hO{�p����8Y��I���ņ
юk�ma���~���z�Ն�a�ơ'���+t��h+���t���l��i��Y��Y��y��Q��q��1xv�
���+u�LV�v��Xc[/p��:�[��b�
7��l�o��lcå�i;'�l�|�¾=gk���9P��mE�j�U{��0X���`��حN)nW��:8�[�8��_�Fh�X{�N
� �n��3+G����:Q�~!PM�(xbr�p�
�(�H{~�U�u�?� 
w!�G��Ƌ��<m�%���t���g!�̲
��φKn��v���s�<T�a��P�gB�d�<^��t"���/�pcK`�1^�i�l�q��j3	�1-����l3�mD+F:���Y�h�0	ֳ�3����2�
h����a�V��_5H{S�
]��G?��d?�&����o~|�詃��t^/~��c�D���<|`d���wη�,\��ѕ�UV�Y��4Z5�v�Q����8�o�n������!05��(��r�7�n�"������aj��c~9���v�'��/��(Q�7%�1v�X�\�8������k�a���	�b��%:�x�x�9��y�l��Y�m2�Zk�x)�+�j��a�������#?M?-4S��3M
'��j3^���
�@M;�C�W0X]�=S_=��e�(��r���P'�Ef���7�N�>5�|wrsb����Գ�N�U��8�ꟲ�'ba�v��!Ӣ&^�}�j�����1*���ӭ�*BsW�d{E*
繯U��Ѣ���,�u1]�m�7�$��|���Fs�v[Ģ�h�0b�����5�D/�����T�t/U�=q��I;��4q��0*������6t{Yj�UQ^�
�|jOj"�.I"�D~�o��a���r��Y��a���rMm��:K��[��韛f�\�d��������y��E�.K�
��N��
=C�C:�o`�H�4��(�E�>�k�4�2���G�/�N�2��:���S�Y��ەT�;3bk�#���}}p���M6j��=���W��G��:u�?i��G�O�.��/9R��0zX��Q�g�M�#��X[�-�6_���t����޲!�ˆ0�G�l���Lt3��b��i	���k3`�q�L�W��٫�K�8�
N;}��f|�j��/l;�:1Ɩ�˞���~��5��C3��:`�i��?��W�x9��Ɗ�mڃf�L
�L��[��4�a���8u�B�s#g%�&�td��T���X�Ә�"&��pü��[ϴ�*-;Q�0v���KSɒ�qu����WDG�E�8}�̓kv�=|�XlV|L{�Տ���	�^�ܔ�v�vG�ư�p�X�11�����ĸ]��j}�5�:/uY�Z�/�2[�������6��6^��6�e�h��ZF˵�Lu��خ7�n���`̙e��^'f>Ź��D�e���8�o�c�.;�N[t#�;����a��2���4t��[�����-�2��2Z��~lC_m4_m|54�/4��\:�.�f���f����X�=q��1�i�V'	�,@e����\��Ɓ�]���X1�b�A�]�9�U'*ā��c��6T���?���uG��%��m̟�
����g�?��W;�:r����Ve���	�7�[i!
�6Y>���ً�J-�5&+�
Wi���sZmۯ�l��
S�e�&0D��肨��2���A��GS��_���$H�j���fs���A݇�I�6��e�i:lj0倏	��n�B�[^ht���o�G�p�l���n=�Y
�7Z�m௡�|��R
�%��KѴ��s2u��M�h�jc,*��
c��X��a��X�f�i�������
Dz62�C�@-�?��
�\W/t�N��kO5���-y�>:��huҞ�5)�
'�C�Mǚ��o�<�]U{���h��YQ�Q�
&�����*�2/e���i�u�Z[�pm��چ�Fk4̓
����j`�Z��ޚA�a��k5a������v��>ZП�����J�G�,�y��e��U�q�G��2:c�H���ӑi;и[l7Z٬1e*��_4��|4�a!
��C�kR3X��f�=	]�mx�-�?�!>��gZϯ���?,0�p���nU�jO�j��y���ʁ�6�o�8Z	��	��(��q�@^[��݁M'Z����.�nL����;��=3i��Z�d��>��&��:��|��!�P������L��$	��i��Y���*}�p=P4	�7
նXm`�Ri��:�~ͧ����Wp2~������X_�Q��'�̵	1ÝUL�cZ��!P-����q��E��(1X��(����X�h>�.����x9��L{]"j�ߋ@U%k�\i�Q����5��
̂�����Z��痵`r”���	�cpS�
S�fF+�Vh�N� ���G�
�����#���2gJ�
j�TU� L���`-� m�`]���G�
�v&nj��x��>���W����d�mAa�˴M���Ѭ��X/73��ô:�uM��-�5���jQU��It�ƩF���j{U����aoU����k�i���l��74+rŒ��C7���c�Y~F�FH�Wj��2���S�[�������P�5	C�H�0@EA�Ɩ0�0��|-�]�œv�\�:;�(xS�����{c��f�?R�h��\���\�/�쁿�$2~W��_�a`ih��[�KP���u�4\�c�H[��f�ʊUe"Vi�=I�����ݳ�'`�!�B�}�4Ƒ�����-�t�m��u4�5�`f�$���V��fPݠA�
@1U$=�f�AF�~VA��AF�����(V��Z�0�,�v�r�����8u�ڢU��%�Ĥ�%��&ƵG�v&fN�:�Vv��_�����nE>�t�`ؗ	�
O.ײ�3��71Z�e�P��i���/��[0Do���B�g�"t�g|g����8A�O�F�ZX������r]����o`hb`h��_'|���02
4@��8�-����
�u�aՖ8.���WyL�<vv�L��a�A���n��Y�#�aW̞�1�;c[#2a|RgL���Y�S
Of��9Xc`f�m�L�[�z�jl�<�6������\�k�@�p���-�f�~F�=2=�p��Ӷ��C}֕§>�J{3�O�?B$uWJb%w�y�����q�������6�$@��_��O�l��fB��Y������h������Fˆ��X?�,X�2��r���B�)V�Ӭ����e��6OY��xe�xA��Uk+׆���\�n{զ�Ɲ��Q�9�="�uW|Gtʾ�����}�E��%��������W�Ueh���:�m��,{����^�j���"cl���&˘f�7���
p�A��a��I�6��5zA�ala-aKM�u����g�L�x���"}�Ef��l�>��+�#�
��}�ܸY>����rW����)[��d庲�+�m�ܰ�vÖ����7��n�׶;�3=�#��di���w�U�/>�S�Y�R�Og�+�[F�$�FK_9zyuN��`��j�_����N'K�`�ӸW���:{|luW��O5�i�a�=Sm`�^>X/@�Š]��:}�
-�M�}�
�j�N�o:]�r�)���{���ة�b��/M�		�	�����Y��<�
pea��իK��V��zcɚ��-�˶l+�[	�t�β�\ͻ?ܼ�م+�_>x��/�\i|���w*��\a���b&�]��V[�ᅡ����W5��R�O�=�A8�h�8
�>Q��W&�Kd�biu����[1�(�?-�$���t���B}����,X�/�,�;�Y5b��scf-KZ������<0�?
sY@��β��e�%��E!+���\W�j]��e[v��HٓT�U�gN��8z�ȕ�._x���|xy�������'7�]<v�k{/�_��b���ә5���7�C��	u"�o���٭K4u�z=�z��_�'����4�ޢa��O����|���L]����y��LS�B[�@��uC��8/j֒��˓��7q�o�����ox�M�k���V�,�Ь����u��c�wG�o�ݗ�֜�x�v�ɶ�w.\��Jש�+w�i>޴�����`O~EG�ͯn�o����?��Ν��}r�������K���.��k̷��4\�z4\����9�_�G]BUګ�Ƞ��Y/7�:
�i0�8�	���#~*P&�����p�Ӗ�
1`�`դ�I��T�	��K��IJ�~�Ѻ�������B=�EL3A��@�r���,�"�w�����m��
f�⸹��&.�MX�,qᒤ9KR�$/^���78��涧w���Y�cMΚ�۷o�Z���`��;r�]ۛӚ�q�;�퇎u����8~��w2;RK��f���CEW��t������}��w߿��E�ڳ���/�˪Ͳ�5��Q�%��h0�
h�"n�5^�o�^N��Y�`�����T���\���LI��^�	t����e~68"�EΊf�dAZF�4�k/�4FM�B�&J�zKQjF�]v��L��GO1t��.�7�o�?SKk�`��Z�3�ys��^A��׏��sʬ]SgGLB���-���0a΢Ĺ���-MY��/�gY�"��������+�}��jc�
b_:�U�Yw������/�x�B���S�N��~�xo��+�J�v���K^���{|�G�|�}(��P�������ۻn����7�����x���|u����sU�j��V�_��]�j�gi0q���`\jc�T�d��%�͖jZ,×�Q���_�l�(�8�U�3���g��^c%�
���)p���C����v��Xwo�j�j�`�s�>��a>���1�i`<�x���4s�l��lx�Щ�&͏�;?z�Sl�s�
~K�/���
�}���,^���7m�_�2�5������&6$d�f�.]��z��O4j�:�UT_x���ڤ��u��8}�|QW����_�q����蹣MgO�?y�̱���<z�ȩ��_��|rg|^W־���*=\Xx8��Hyő���UgJ+ϕT�.�9_�p���bm��=�
K������,f��-��
zL��D�����CH�B}E�`O8�fk@���p�[q���ϐ�1�!�?tA]��:&��Ќ�,�3�gh4CO���m��6sM���$CC<ƭ=eӄ�;'͈�2'f���s�fKjoi����.�时4
cy@��Y�p�!�+V����6�j�wq�撍�ՙ]�:;��?r�p�����OEU�z�ځs.�8_{���{7޹���.��Ʊ�Gn}z��H�/o��ij����hA����9E��K��,,?[Ru���TIՅ��˕uW��\�Gk�҈��f[��榰��7�8�;Gh<^�p���|S��f�&F�i���2�«yP'��k8{�Jdl�Rw����Z���.�D����i��61�n�3ASc�
�y�f��x�`h���u�fm�:w��Y��Ί�
:'b��ٳb�L��0#n���sg,Je�)@B��7e��O@�2�Y�CrBrV��"�	/]U�ruaXxq�ꂰ�S-G.ݞ�
�`�>��ې}�rg�K��w���7�N6~��{7���u���DS������e�K��|���Õ����e��-8�]z���ti��
z�\���PY{���bu��w�
Wi�ڄ���~�{+�TlZ��&#< �oI��9�g�
*�dz�fn1�Pg�@T��t�.�LX�S��X	�@��&#�yC�fhM�2�e>��a���p!O���k�ڑ��L�1iZ���gFLB��k���	3b&͊�<7v�����cg.���$a�҄���%-]���BPdl�oP�C17`e�����U+oMQ�����K�l,[��b���M';��
�	r��g���r���W>�x�LWZ[r��ڪ�U��i9�I�brd��J�=�Qp2����U��P��>]�U�˫�Vԝ�n��X{�zϕƦ�{�/��������?�~�я��km�T�1�pEXVHHƊ���i���Ο�u����i���p�q�����vX۷�V�[Z�o�'a|�x��X6Ylh��wF3]�g�D�x��	�0�JGs�����v9�(���Rm�t�f���h�0����2t#j����7w�%����YO�0c���>ܹ��e�aa^7���sʌ]S'o��6u��i��L��:=b��ȉ3vO�=ev��9����̘;s~��	s&�]�4oI�|
j|�/�XB1 k��� P��
�\]��d冲5��n�X��j���[�6n�߲�|[����_ܺ���wN�����Suy{�3Z���$%5ǧ�%e�M�ϖ�te�ʡVp8��h~鉢���0��g��/֩����
�k��6��l����}�?;t�#��:���oN�kh۳�)�Е�A+2��7i	ڲ��K���.Z9gƶ��V
�-9β��na1����kh���h9SA���~���s��|�x�J��!��L�����0��e4S�p���\�g��!��k��5������L]�ٸ��L�iZ&
M'0
7\��jf;�J����6t��Q�6���m��퓦혌5�'o��h3"���=}VԌYQ�fEO�3mn�y�8ka��E	�'�_���f�o�b4��>�Y��پA9���!y+V���*
]S�rmI���U���k�Vm�V�q{ͦ��[v�o�Y�5�qg\St񡂚c������3қS��2���h�P��7�(��&��W|��*����T+j�W����e��֫M7Z�������?�qבO����/������Ϗ���ĩ/����t�����śÊ��䄅g�e��(4ꟺD}��/^�pQ�1��
F��=w��ac�}]�������c<M�r�������.�S��2
1�=P�w��������,M�Y�F�tfi���О=Dg��9zs5���G����2��,-Ñ:Z���<��5�̶s�u���r���c�l����&m-�Kj

iΌ�6+r:>���Yh�b�f.������]$/Bh��ty��f-��'[ʘS�EakKV��AE��j6m��Q�-�~���
����������7&�+9�+%�+��da����$�%�A��"�8�W�Z�������8���A;����1O|�
��g�:y��SX_��l��}��ʶ�)
ݐ�zmNXh�
dK����K�sq܂Eq�o͉���QS��2=r�ݓ�FL�e����.S�&�[N7��ed4Wٷ����2}ܺ��O��WWkN�9u�֟�i2S�d���L=��:�S4M���14gd9��n�g���G��c̪��֏��[G��6b��v�d�������m������"?j˜��c
:����iF����%}��L������@|�05�!�W�)�G[_�z<b����Tn�^�ig��]�["��n�ո#fO�ŵD%�F'��$�'$4ǥ�ON�LH?��v0>�Hz���#��3�g�/
�0��G�E�#
����{�����O��0��?4�����Μ����o�c}���~{;;vW��P��p�ի�CB�I�O5��ti��qs���B�03v�Ԙ�S�'L��4m�ĩ�&L�6u��)ӷM��i܈0/�rw���x�Q����[9,�t\fm2CWo���DM���:C5t�1�k?�J����6,�kt���k�LX7v��1c7��eԄ���S�Ŵq;G��5jb���Q��w��?u��gFM��'?PDCP�����E�A�R4��e�龁�v�~��MW��凬*]S�r]a���
%�7���\�n[��mU�vTo�Y�#ƤB���ݘ�������ґ��/	��e�O�>��{0+�`f����9�G
�N�/*;x�dTɜ"4%	��/x�N
Ě6`N���?@�<�ũ�_�:����_w�����o.\��"�W��ү���M�kQ��\��
=44{zkP���ǩ��hq�<��g͍�1;z��(Ɣ��5}���bF��ĉ9i��I;�N�:~�����M�-^
��le9ޔY�3��`�4�^<W���MZ�9~҆q���u��-#�m��	�GM�9�m���)��O�>aR�]����c"�&����5��ܘ��b-.��G��8��b�bJ���~�1��	Fx^hx>�W0�i�j��Ϧ��[��o������mu�#�w`�1zOD\Sd|sTB(B�q�{��SO��ٙ
���se��-=^����hq��c�U'�+�TV����X�x���zc������h�A���v��Ch�>;|��6�N���W'��œ~}
���7g��7�.}w����^�z�2��x�ߡc�c��nEQqk醍��6�^S�
57�dE���h��%I��s�T�8�ٻg�K͈D�r�ԝ��38q�X�n?a˘q�F�Z7l�o��=~�hZ�l8�^���>(4e�.d(4���8}n��C��p�Lh�z���4�6O�"B��O{���ym���]y�/�)vⒸD�-W�I���%Jl"EQI��E�`A':0�0��z#�z���@б�b��}�\{�İa��s���i��펿�������w�
����i���>�ҔUD(��_�����7瞜>?v��Ĺ���x��EPxc�
(�X�	�]�uo��s�v�Ꝯ����{��]�z�ӷ��:G�=cS��S��\`��>�Ĺ���k�ŵ��Fte=
]��F�7�u]dD�BCRkN뷒Z�
���*�m�ّ�83V�6����'�O��83p�ăϿ�x�G`�X���w!��
}�J�ڵW��!Q�P��(rJԯ��_H��T\�+�d�g��Dd��}_���X��$MQ����g��uH�x�X9�C�r�Z0Q�V)�v�M�IԀB��|�P���񓍊���''΍�<?~��x	����k�"
�,��X��H�إ�ӳv��Fg?,Ŭ�?s
OxF���g�Og�3s��8�,8��]�斤���r�ْ��YZ��l�����eMli=�����RzSR��jM	�%e6'��8>c�Jm93�-ɼ�X�Δ͝qx�N�˹ڴ������^��ܣS'�����ޏ?�=�a�Q0z�r�_pw�G�~w�}�����0=��f-��xeOj�2�T��Ae�=�uU�
��9]��ߞ����
���߿z����U��-���*"�5Ǻ�C
�J
��~����4����ةsc�Eq��6@�+7��|v���u�N���ۈ��,�is��G&�'Sޱ��Čo���f>0�Bp1�l)���
�K���Hll��7�Ki�Ol��McJgL��IT�Ybf�d�Ķt�#�e����$M��iv�6�.A�7�n3�L�f:.O]�:z���3�O|����_|�U�v��~�;G0����ݟ߸�*��R�D�B�C�
tP��+��#���>yx�7��Pթ*M�.e�i���*M����#(��|�1U�?C�y����~����'�kFN5��]ss�*#�"W��i��>]����Lz�Eǟ�&g�S`��SFE"E
���R�	/7T$�M�"&�[I��5�eMl��Vk�b��l��ikͭ��m��˝vq	7�df��"���'P!˵�m��g�7�ߚ�ym���'g�=>}z���/�8�y�ǟ��"���
�ͷo��R�l����^᧠t��*�W,^Y�d�.��5�R.=G�f��O�5.��ڕWA!c��o�s��[G�^�;��o�<rL�ۨ�`���clL�4<�zDE�
�R ^?{q�����Q�BPع�ѫ�0�
Y�!
YEN��
rZ�`\΢(�WDJ�aJ�,�ُ�(U�,jP
I�)��iB,�#I;^�љ�&g2��zNg���"n�%��p9;�s�y�P�Ӝ3n��yt�E_���X�3��tǭ�����/]9w��7��85�j<�(6�w���#�oCP�u�
L�^��L�^�F�#����2^ѭ����
U
X~}���yl�����rHQ5���F���Ra����
Xn0k�Ͷc�G`�"?���}�?�<�(d@,�=u�t)Q��.�.^��x}����7�]��x�c�f�fG�������sp��{h���Ly)��E�N����Ќ��ȥ��gV��K�Mdu-�Y���_Z/�A4ő?�Ȩh��)=�bkK2n�k�ܪ5b6Zk��skM^�ֵiX���k��m��:����J^o���'�b��k�m�_��\���;����W�(���ON�Q������|��þ�
�����Է�bU�7;��W_��ʟo���r�w��'s^�6!;���o������~󇋿���~���^�
]C~�k�ᚾ��?)~��ܨ���֑{�r;�s�X���.�'H�������Ό�:;�͹���N��4݈B�#B��\�Ҿt
�um����}`���=���1�cP�X��G��'Ӿ����(�L�Ή�!�ŹeiQ^]��.���D�����66���uC|�ךb:sLo��[��zNk�7�k���*nY�fl9%`LX9@D���Kx��|%��$�K�0��"�����'hu�z��/��ko���������Iܣ/}MY�a�ѣ=���w:���;�o���
�z��	@`!�T���3�(�t)���삍/T�
�����c��o��K��X�ߌ�8��$"�O����̷��~{m���gWhj��
�߀������"
�"#,ӂ�~�5��t���UD�ia9���붪	��I�)e�!�3��ƨΚ2Y�h*���5�����l85Z��'洊f�dEF��,��uğ����-Xγ-��ւ|i��唼���J�@�.�R(\��p�)���`84��<�cӽv�{�^�|�͙kx������ߎ�����z��/���#�����v�x��
�/��0j��o�B�^{�hx�ڳ�6�j��!b��i�!�)\�4�`
��Pa֐߆r8q`^�>���W�E��\�v!�y��S7Bp�A!�)�SC����0럞�C��;���[R��D�������nk��.�5����0D�iӖ���]`cCX3�k��W�so9��7
	�-`���z����E�=��D9o�˧����!�R�	y��+;�Q,�R>�K�b4Z��%B�ڢ��*�<��S���և��}k=��!�!�M_�2u	�I<�
�����|������=o�z�H�_߽��;���ou�P춿�����h
�Tl6Sk����v��I/�6��!jȩ��<~B�.TQ�,7F$(��r�Pxw�v��n�����;h{�����`�1��p�=8�n*�J.e
�ɹ��|h��5
�
�)�7��̬1$�pg���5~��5�y�ѯ�{7=Q��3�B��+�pDl�����S�@Q�91��@�Ȩ9ʥ@�(I�P���U��R8RK�P
)���x)ʐ(ǀ����?��妧�1�b�l#��z�q�Yh�5�����o'Ϝ��w�����
��O�����K���5��u���%�&������ZdQ8m��K�6����#A��5���)�/F�:=J���7&N_�:{��k�n,^��:��{��o�����>���98�z
G=CO�����0�ԏ@N��P���B3��bdn)2O�4�H�4B���o�",���\��}�
Rín�6��&����׬�I�on������D\�6v�fͶ�$�'��彾�W(
\��<�Ӓ_	>Q���h�$�Y)���aQ�1>��+�x).e¾�?�"@�8��$��x1a���2
��Y��I�92�ʀ����;�_מ]�<�����M0�mE��j��/�>a��������=�w���V.�qS��S��;�m�����s�Ǻ��ON�?yv��g��g��/�\�ڱ~�K��k��3w�m��[zX���A!0��<~B�ftb�Md�Ŝ8��l����E�u�JE��Y�}:�=]�-hÛƘYҭ4�A͒{Ac�hto�Z�eeӹa��6�_��]��뎘��X�-�hsE�΄͕F����
9��y�(X��)CT��P>̋b.�@���/���e)�d(�&��
�%�D�$��p8����j�-]N�%�VZCVAnY����D�7�҂�2�x�g�{���K�q[s���%�S�\���_�|���#�+�Jq��ǟ<���c*�ŴB��9>��Cj���'<������iF᝵����M](|`A
���ȥ��K]�݃��K��H�B���ADG�2�BhfY��戡eu�@4�����Y�̂}qťY�ZX�.�E��N��dp��h*��Σ�M�������ɥ\|�C�)�j0
t��"����b��-�e('bo6�Ť���QJ#4��3�
�K��C�,'���T%���ҥt���T�����Z�-��E���lb�ڰ".-��	�O�){���F�b���[z�;�
w�o^_�|q���SxC̩�/O�~^������_"jJ<�#U˛Ί�}j�o�(���w�[�׾z!
{�X�o��Ň�>��!�0�h�=����6���W�6~���s���j=�)��禸��[Y�j�뫦e�S��j��֩۰��m��,F�^g��yݖ�fQo�������
ϝt��pF8�xc�8����/�s~\Ŭ/����@��K���
���d ��3��,��X&
ȥd������v:�*��v&_�ᜫ�
�B[�ZtG�樑\��zH�\��S7Qg}SS��q~Y�C·��,]@���1ݽ��us�ʕ�o��9}f��E��Z\�1�#_bdA�=�8=~��o��5�qg��=�N]G7(Dn��\�aR��@,�G9�Ct��J�`�\7arF���=e�k�\*"�,�H�ҚF\�Q�4�sK�g�Υ
N��X\s������%�`3y��[Kx��li6��
n��3Y�����4q)�7�q)7bƃ+J�(	R�	��hП�������'��L(��D�_؇tJ$Y���D>J��SE9SN3��S障����L���m��`�����V�W��>!Dơ��1
ݐ4�<K�4��8	F'}c“1����1?0��p�>p�ܷu>���Z��e�ӱy��ꍥK�琊O��8@|6�Z��oP�����r�}���͛��{�;�Ǝ.��n󽞭�^K�}kw��吥SP����#"R��R��d�Q�/���o5��0kbk뱵U��}q�8�b[ֺ7��K�-�A�Z�tj,~�F�lr��nݳ��?��&x���2�B�#�����J$,7�C(����b�*�	��_���BL��ɄC)��`,Ťh:��E�e��+)P��	4��\M�k��N�5_���b5_��R��V����M�XSfK¸3c:&m�Ti�O�q�_���N�㓁�1�o���o�C��������ٺ۵�ѭ\���7�__�|~��������t��������һ�[��N��.ӝ^�=�V'��}7����@Tri�M��{��N��F��pj�O;Q4��ȥ�����ܐHa�a�m#�AFe�)�ؗ,A3��Z�9wځw
��4�aݲ�b\��vSX�58RW��ݞ�Õ�c��]n�����g���W�p��̅�<��}|R�G}��hA�Q��H%Q��#��b$G�#�i�*gj�TEV�Jm�p@�!���y
�"�Y
�|��K��b[y�"fΔݞ�ؒk|k+n4�0iۤ�^]�.�WV�++��E�‚�ٌ��or\����C��!�n������{����k���&
��aw����{-��[;�֞��[�C��AGߠ�t`�E
�(B���'��#���3�h����㋖�]lC�BƦ!��ɔԭؖ�q'��giç�
�16Qav�F�����,�R��(ҢW�żOB;�N1��_�_\��Dž=�T0���<0�3J
�L�$�	*��HDn'�J�t'�_��P+��%�P-�*�9�pYR�V�ٖr���:0�'m
�T��!��F7V��Іޭ���[6��bX��/�Vf��S��i��{|̃$<4�y��58�����	i�g��{/j00��C
eY�%Rd�qD!3��'D!���h�(��SXY�r��"E}ڏRW����j�)k��K#����6<�Q�#m��l1�%��J��}5Yo5'��<!��~_���l}a0�'ň��@��1P(�J&P���πHT�t)�,%��j��2��M(l�Q�*;e�q�T�����N����[��#B���=��ۓr�RN�l�&��C1'�I�Iҙ]�p0���bR�;*�6�iCc^\ޚ[���p����#�:���{p���1��G�~�!WCȨ�=q?��1���S<X��=>�g~��mTę�
�)��NFc�2G$�&N�1
A�V���*��V
mz��#�DWʎ�+k<y����f�/����B���Ŵ_��(�<ܸ���y���(g�EdQ)!c>1�#F��XFB,�6�UP��ș�f+�E
U(�U��J��m���T-�k�J�\��@�n�j}��S�٭�w�`�mgw'^H��T�,<CΛ�`@�@���&M吗�$��z�^-Ww�xd��X,�v�u}�{6=��2址6㇡SF����g�<�?��<%�R!�'�],
1��Y�o�RuL��o��i>�k���r�oSQg���-�,����:RVg�����d�Ij�.$R����f=�	x�a�Jy�'{�)rF�/�{n!�
/��I�����P�������J�b,I�~��(yL΀6�H�Ka�r&[ʴ�Y�.1T���Z�U�8�j;��.���(��Dg��Ą%P�*�����`gڎ����+�p�x"���H
Y��k�|�Z�����j\ᗞ�'���y>��!�Ơ��)��od\x<�?�pe�!��~r�����Լ��ac3
�7[���c?
�4��m��6ۚ�XT�Q�HXL�8|�����B�͹�Q(PD�C٠���v�B8'qaw�1*��~�$$�qDj0eDX��j2^�ɵ�\M�a�Ue�ɴ�c9��8�r�+e�,s*y�?�EɸD��wk;{ȫ಺�KF��Ѷ�WOo˘|���b��_-pփ׬�j��n^�&�B����8d��`0�FEQ�:L���\df)����MB���
�y�8VbP��)x4�6�P�h�i�fX�\J
�҆4]�sD�lS��0V`P�D�R+�:���O��:=9,�8QJ(	e�B�j!���rF�9��8o���?N�e�44�d(BSH�p�`$/)D�r%)��נ�O(�,�B���̕��r(��b`�,U�,
U�� ��ܭ���5}��j

-T#�
sA���1���$��������m��d>�/�˲,�\.���nۦ�YJ,h������cA����3�)�4�A�fcx]�o��S�S�(\m���Q�ͨ��2a?�qiO!
�j��l�rmF)�n���#dxL�����M�]1�#��N$�`B���ШhA':E)-�ߏ�b�Mr]D���
�rN�~9lE�"�@$��"�͹T
�f��JP���;|n����U��E�R��
�/�^0
�#�E�%�ހ����"��r��n(_�V3��
�ׅ>uU��61���(+���IV��8v��p��g=>��
)�+������]�"�E�6J�)��5�eː��4�9�<�K��O���
�e�7��WHz�(�8��t_���=�|HHp2o��G�b,�NC��%��B,6#]Ne*0ۨ��l+��$�L)�+Ιb�"RI��ȥj86�RD!Jc-\�����y�G�	�|�m��
�p36�����yD�?-��G$IB��r�P�����)��Hi�q�]�/�74P+h�J�8FSAk�
��E^��:}�ic_��,#~�6D!��gI�ެ��"�Y��丘����Ϊ'�F9Xk�'�=!7�)4]�|�At"�
j��('�H�̩��#_@8,��?��.�TD�)�Z��'˥��y�����,(w����VF�:�hb�jB�ƙ��iF������
:_0*"�"(��@��b1�)�}ָY�՚��0��5f�
C2���0@�(��l6��2��Z@�u�����y��oƻ/�M
F��4�S�P�]�Ek.91�1�+lC̹$�7���.�!;�(�"�(�4�"�"��F��LM(d}!˥p���`�"�@�C�!���)f��ȗ�4�?��a�:=�N�\�
oO!�	{�w��;|n����;%�s�����4QQ-��eI*%Tsb8)e��=�n�PCȽ�4�c4\>w̅�����;�$L�#��:?=��#
y*Bf0+�.�i�
���H���촫os�l�"�rNG�n�؄��
�BHO���9!�F�rP�R:(�}���.�'���3��
�h�a���ĀR8^�&�!GiE�,&����N�TIV�i����BSy9UHQ9,SD��TU4��3h���@��9���2:��(�T�:1N�W��J$R	G*R�Ey��z�����'!J�(��N��Mr�lY*`H�$L��b��~�ܗ�L�ꔽ}�(��^[�b�Z)��[��Þ��Rn,a8S.W��)�=y7�'zAW��l���#�-�-w��p�~�%�@��&�U��0��
�"�ԅ�dP����2��F-��Mm~��Jd9�dgV�����
:�;�6�ZՊ��1���/����w��m��5��ۢ�SJ��+�Q�Ql�T´YT���	ЙDVV>@'�h]��g�jrv2��6�0�y�)�^�����k��׻d�#n��gt�]����N8X��˂3hwmR[3�3�`��6�x�FfB�"ipɆi���P�"�L3�&��5
:AD9�d�KJ�JD�����!����Z{�?�Ѓ�a/�N���.��H��@�
2�ћ����OS>W��E�".�������!�b���Ab$�A=�iR�}a㐴{҈?�e<`��=h'x��.�q�{�J�O��C׸%'�q�W<PE�b��S���X�*=���D\�GmY���@��RЮ9C�=5��"�Qƙ"#���
"w+ս��n�;��B�U���t��*WK�1��&/
�)0�U(��6ǩ���Y,�l��?��D�I�y�b�K�S<3zL
>��1�P��C��1F��J`
��ٱ���=����
Dᗲٯ;���B�P�@)�%�B,
]�@��/D��0W��BW���W	�5�:^8�l9�)dr�M
�f�R`�1
k{Uf��H\kϿ��9��2!���mC���$���
ذ�������G19�Lgҩ�bD�{K%d�$�d���#
�Wt�V�͂c:���(L�
�Å*ub]��24���
��RV�8�߉�n0&r�ݽ��Ĥ�z��B��C���0AJ��ZP�}G��Y0�ʮJf��
�leFD)~��5�mR�����ی<�wqخ��
ͽ*D�*P�C����'�%��
�����z>���Ë�7d_Qi�mr��D:�NeSx�x�8'�؁�ր���(�EaA0(3z���-�Ki�	4~�G�;��.���w�y�8!���;�q\t���h�P#��H˥q��PV��{1�U�8C�v3�?��D6�b�d�E]�[���'�u;e�GQ�����B懓Mѩ�I��:
c�6���h3�LH<��I�d���	4�(���$��x!-�4����MQ���6-ػ�p��n1�����Fێ�7<.�U�F�$db<��0�1��5��0%T�Q|W|�eJ�pMal
�(
�T��1�tJ�����Z���R��f˔��&.)������~8?�'4���N�yD�B�b�H�����7��?�b�H����N�?�C�)�bH�Q,h��p)��V��T"א�-�uB�H�`؍�a{�	!(�#�q�(7<�Eol	c�BA�9�Lj[r�(D�%9JY���ejET��|����"^]����f����on��D�o�����ɲ
{*�țUӖ�D+e�Ti�Xޣ���:Z�/h�#�p`DD�
���W�EFL#�
h�*�(��,v�iKW��cݛ}�\��cq�"�;5d�(��uʠ��5(dQش�A�����n��U�f�/�Ӈ���6�?b�+�z��$��J����ڣ��T(X�eTbt_�����l�4�ՠ�U9A~
8trh�a����7Đ�_D#���!>zY.P,��Bm�i��"�3���ؕ�H=>Z�*b޷��N9�T�5x�K����R,*̵����1ͧ�U�Y��+B�-��G�f������4��7��0���d�))��0ew���=��]\�{�R���)$7����4��H1����x>�($0r�a�O���
���F�������:S��]�Z��m�t6m^�R�
Ph�j�*�߆a>E�2�'9�dv��~�{�W��&%[���G}�VNT:�"Po��;㩇ث��@a��E^����>����]��
T�h$e�&6;���-t �}�~~&zD�)[t#u
Q����u%.)4��F�P�}i�pIM���%s�I���?ٷ�ҩ,P���ߠ
#77(_)0�4��)20��EB!��Ʀ��/c�}��1�W;E���jvmI���Eq��5���(��!:�
���!hkd��������f}Ğt�K�t7k%Z����U���?u�Ԣ_B�y3�	1�&S��v��Fwx���Q6kv�(_����8U�O���B�:)�R]����ř���X!��.�{J_E�f�䦶q�d?K�����4��BU!�/h����N8
���rM�Vܔj�6X$<��m�Dl��oi�I��(��Q�q�}aZW�������Rh����Rq�����i�C57B��Tz�B9U>r-��A]�JS�Moj��G�+RM!�L$��/���;����t�d��h��y��Zi"�=�&��B���&U{�S��@9�Q��1���vx��g��?�/�n:h�}:�j���gʐ��P�Dq
����7�k�Rw�
�&�f:�������V:լ�2�RJA!�U�7�E4��?rh�!������N�
M��r���~�w��¨z�Tq�Bg���&���b�Hkj42�^B=����L��sȘ�fM��G�o]���Nz������E�i�ѵ/�ar�6����}x���Z�ӃN�}�G�P�
u��m��:���Z�$���3$��7
�W�6C%�<�Oy�t7����G��]������=7:տ��A����TV[�G��?�s��Ÿ����/��{��f�5�,����w��w��?�G�����C+޿T����N�9c�?�!��=���ʋ
�����(���q}yt�8�痟�܁_�In�O�K~���?��Ο�6�T���XN�C��|IEND�B`�images/admin/rstickets-pro-box.png000064400000076101151163531650013221
0ustar00�PNG


IHDR����j�	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR
RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!��
e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$
ɈQ"K�5H1R�T
UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB
aAHXLXN�H�
$4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�,
+ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_��
c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v
m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�|
(�h���S�������c3-�
cHRMz%������u0�`:�o�_�FqlIDATx��Oh\U����NjD�E�-�B���XQ$��(�V�Z��"�ܸ��B,
ڝ
�t���1X��BP,5b�-M�&�Lg��7��=�x��I�`�Hr���w��~��}��77�m
�o8<��*�6���x��^;��䟶�����?�9�O}�O�
��ml�N-�:���2�h�re�����b�pؿ��r!�U�"����mu��V)]�������"�,Z��
K�9�t�bcC�
Mt'�01��rs�(�ЌZ�3JyÜA�X*澣;�k�20W^@CC�"&|���B�z�Fc��7��CU!�A&ue�
}j'�%<�&��"^y�󇈦�)�A@��u%@���h��&O/"��UAըM7k�䞏�;����$�'���?�K�\Ex��oL���~o$�DH�+�rQ�{Ame_]#WMN5SCU�O5Q1$�#]
���{Ԓ4���������T�oϽ�]
ԓۚEb�NJz��|��M��|v�v~�-q�+����J@��
��u�4<"ʖ�����vQT���eT&j�]����瘜?���<�����Bv{KIE�5AÐ��4Z�w�)���n��u���G��摆
M!�+ķm(���HC�=��6�,��Q���U�͟(��+��*�H������Ԍ����!_�q<7R<����nr����Ѕ��ϵ禆/�ϼW����O6ݺ\�Wj�ʉŵ���#���l��JW��?J2眥����si����ι�Kι�SH��ιюu֮����"P�tp)�4�E:o0�0�Lsk9���]f�����>J�����|Ǣ�k=�ˀ�tģt`OR;�’�jf���L7���H>�V�l�����Y#�f����ͬifn��dS�_����ϋMa��sι3C�$M�6��44D�,���a�o����,�b�)���
��4�L2��s���}��x�����h,N�}���{��y��s�9[��w�N�j]G�����z��.ݗݮ{�[���f�x�[��L�8|(u��>!_�/�>!��"u�B{�]��ep-W���R����E�.��Q����mW�>�?�:ڡ`_��E�x@3
�*�*r���m�?D�?�@>
���b�'+(��@!�4�I�z�ҳ[X%��_��`0�z��H���~��m�g�!k�,�t3��}X��f�7�촳��Zd�=��U�:n���)�6؅��f3�Zφ�_���
�J)�]
V�j����)���=�H�v�t�u�l��-�l�0�m`�����a	���7�-�?�ۚyl�`��e��,���!Q�p6<n"G�0�_���Vq�[�����­�[�ھ�T
L�XR�����ViE=��~C
�@��f�~j�/X4�Sc�:���je�g��9S��.x�R��-��C��Q60���%t��/
�k��*����U����Kj����0�l�/�lx�1u1��wH�[����4zr�^�x�(��7=�_7~f�{�4�"B��t�y�䙛��w�ϝ�=�{D�?�t��:��}ϵ���3���㉈vђY��㽘��/�k1�3�h�4�~��k��c�w%�	@w��^�K8��������S��ȷ����si0a�w	�S��΄ő�_U��Yl�u��h�{�_���Z[lTU]{�Δ�
�`���
�@�@-��"�<�B��T0T���#A���!
&&����Z�	��1�W��N;-�Gg�s������F��h�LN���3��޷����d[����7454~��|���?.i�/���.旫��Қ��2.=��K�/�5�����yE�B.���˪�����#sxQ����S?=�'����W�����#���g���X�N�G;2?�ca����t"��K���쎠�R�‘�]�w]��b��۞�/���R�mG[�ݩ��_�`��6�||�(�@9��^���#��w��pSE���r(�k���q�+
�Z�!t�;5(?�-��)��"�QP���4������^w��7��F��H�s�oH��
�J��B(ya�j��q�@Ⓣ۱w�Q�y?���EU8PT�gr�5���a(�-[�{��I_�-��:x����h�
i+�WW�XhzmD
6a(�]�Š)���AL���5}y?*jw���0$8L[OXi�����//c�g�;0�z�KH���X�O;H(N�J)�>�S�Riz�|nW���'�ǕG;�@<��	P:	��͉I��sc��U�<c��no
i.WJ	�G�9�L���"�8�؃x
vֱs��
ޛ=�g��, ! XhѴ���T
���ph��u�_:��E�*��)e�ڵ�)9%�=�	�P�!Ys����-캃�Yl����P�1�)������fz��C��*�
s�b$H4$!mMC7���f�W��
��)	aK�;�W�up�LEk��/�����M;��˳O(�7��N"���,y*�Dc
��YyH%hĘa��N��$H[w�l���or��w-�'�<�uEo�x~N'�n3���#X��^�p
=vB��ۚ�7�8akۦ�����>
F2X2�W,��m��wk>��r���V���J2TR���X��U2T�GG��#sH�$lc
�{���T�I��#%!m	�_��$F�rQ��TR�S	6�Dpk�q��ޓ�]�Q�ӱ&������1Gʰa�DLB7%D\��$�<V�*�
�_R%$d;�I�0�w����V����|�+�]���ST[ȵ�""`GtRdTBFDTBD�c=��B�U���-m�����G�k����m�n)�KfKݫg���՗���5g�~�Yj(;G�e�(�Z3�6S���Լ��&#��/��dr�_x����~����&�45�6W잷2���.�o3�!�=��c"����f�{��1&���l"�$�܌���1���̭0~_��~����њ��fs�X�mLX�7�
	`�o��w����3��.6�Y�Zc|@؜񱾓��~:5i�ݬ�f��{<��=2����9H�gL�0r��3	`�p�zМ=}��If��R�i1�SMl�y�4�Ns�=j�^4I%��>Sܦjf���-+]�x�>�˜t������f�g�@?�+1��~8㬦���~��#�x��w�ι�O1�o�
�����
��*�	%�q��u(��t(��Z�NG-`��(����:jg����T�/:����h)t��u��/U�K��0�hR$����}����9��Ͳ	u��A7�;���7��<�9����=���{
�^���k�5�u�smV�6|f�rV�ܻ�j�,�O�_&��KV�,��-�e���ɽ{?*w��e{ng���d�">j�����sm���
�FTL=��i�:U*^��:�S��6QF`f�.hS�b
/���)�3�SI�^�})�4��)��>��4�d�D?�x��_�9��
%�<P�����I'�I��39�3�
f��ꕝ��P�P1H����}A�����|%�81��)�g��N'P1l֔ga����R9Ol{L�mUh����w��i2�X��B�4��L���C�b�����"�<��+
�9�{���8�>}��j��J6�t��Wr���I%�<U���l	!*�Bp�(g
J;�F
�����I�s����
����Mz��s65����:����s��%%��C�V�ӽ���Q�y�es��f8�e�#C�l�T�J��eJ�#]��vjU��|��"Z#�zц�	���<�9�e�½����[�Z�?ľO�ϋ����)!J�A������g��v�OB)І�ބ���vZ�ee�;l���e�<n�:��~�k�3��H�;�R�`��|�.�-aᚕ�3!x-®�{�����&�z�D`���y�+��CG�t�B��W���0�F��
36W/Ե%t'����X�I	z�[W[���DG��1�lG6��
2V�z�~�z��* �D2#��g��/�
mJЈ��]�����!ӑ�x�d4�`��(v�#wp"�����n��h�B����ˍ�	Lѐiϕ��

�	L�N�#d��@V:�.M$��`���l>|-�O�
���`ƅ9�s�.~	�Mw>>P^=�s�
��1̑�u<��;X�"h�iR���&r<~�7\��+C�m%x�*�������w7\;�vXhq��:�}ȶ�%c�U��t��7�8/��z��񈑆�6�h����(d��	��W�Ln�w�%���".ڸ	�H=��p6�M��l{�%
d�s9Y#ڎ���h��?���ڸ|o��4��8��tA�y���+]s�9�='aZ�M��
�XmX�#�kb����v|���;h|[�$��Vk&�$S5p�/�֫�u߈;y	Cԛ��5y����v�}�����`m���p|�s��XF�.�/r唷O	s����4���1���5i�t=Z��g2{�Lf������!���VGHQ�oO�R݉��߿9�.��|)��_�%�cc��4�n��A؊)���A[X߀]oZbg���~���h̘����-���5��z��|x�2�o�r��zW��ƾ�O�e��x�"�P���4.��R(�Z�`�~j�|�7U��j��nA��8h)��QS���[z��M�؀��A@��j%VS�
�Pv*o�4$����(�5E�
%��-��E����4/�}&q��	3�.��l���b�=��8�=q�~��)��Q��({/PtJE8�91��O�k����Bx�v�Η��w)ə�-ޱ0y��
���(��QYO����̆x���ilF�e�А�k���-VLZt�~���&yW��3��nP���>�>�|vS�VƱne\��������GN��kO5���ln]��<p(�����'9���4�=z���;�u�ҿo�Q�W*�9��"B���Ji�W��ufs|g׏;�u��Ӵ̉��	�S���?�������#��'��"�OTJ=^&��_���F)uODnq�R�)��)�J�G���K��Uv3"%b�H<6��o
d��F�r?��e��*
X�-�R�籲�p����%�$rS��+<|h�w�Y܈�XZ�޵
be���J�QY�y�Q��[O�Fڿԏ�O�?x��X��O��$�q�a�J�-ե�zd�r�|[���cd9��+���_���8��n;X�ֿ��c�=�f�
�i
X^�v8
�0�>Wck�z^�30�*k�:���:�C��X!��s�-n�R�5h��w`��ܑH�\`ph�"C3
���j�n�@��q]�j�C�!������2�`��f2�3[�����e�\�@?��l-�R,��(J���$��"�@�s���9�"w�?�da+(��/�"l�|���9�~Nd��aTY[D��B�"_�ϯ+��d�m����q��|�
�^���k�5�����{�U�}ǿ�s��GC�2V$+(����R�
jd%P��Ě`�b�M��+5&mҺ�(u��jbLb�iV��44(�Z��a��13�̝�w��u��������{�38�(�=k�{������Ϲ�|���?B�8��%=.��q�E�K,z\b����q'�H��7�t�VKb�����'�K]�5
��iXv�ꆏn]�����f>ް�W6,�Y�s�oW�\�;~��c;��;>��;����`َX��,��Bo�
���^��$Ks1�I��.�G���
O9�{���������?�OWS���d�|��R�.Fˑ���y0�{3�}6�{G��W4k֤�����(A��J̐���㣨��CW���!�2t��v����=�^��dГ�
�݇��4T>��>:�>��:@�
0|\�'=�����/	U�t��=���+Ӎ�L7z�@�KRȢB€y(!L�*D�$�%U@of�T?2]}�M�#�яޮ����k�觷\B�|�M���	H�ct��Й6ȩ�l(%a�0��йL�OFNfHP�㡄��̫4b�:�i�R_��G:�͕��_$�!ʃ!D%���ntfR��.a�S(���y"t�b�
���Id?&���|D���)��vEI�m}��9ȃ�C�K�~�冈��h�N���Ê�&��\Dg����ȧ��e�[V��@�<mh�Wh�'3m<��0d0y�X:�Q���$�2܂@!;Xd��8�O�g�Lؓl_��z�zC.|Z���Pl�E�2�i��}@�%�c��Y�4��T�[����Axl�`F	�:y~�w�9Ţ�g�4�L��P��t7z{K��@�l�#4;h9M�]k9�$|"�%��K��
��
�FW)�Ќ	����1e^]��M|3�t�ȥ�M�	`��EG���!�	%�#�#X"�IA��Y�/
�Z�?͸/����y
��_c��B�ڕu7a�hA_��tb"��!41�]���`���=�?�[7���όk��k��<�@��=�i�
����i鋝X$1[���G�^�l�^�ۮߍ�S/�Mϭ��'��˟x.{�}x`�=X7�3ص�5���l��Yd��#(����?6	r���\']�W�ų��{�oz7'�	{���;�FQ�!J�Q@ˑ����/\��-}	E]�}�~�~,~z��C5b��T㓘�oƯy�O?�?�9�����G1t�s!bQ23���g	�u884
"�����ӓ�K��=z5[z)���A:��㐶�����NgfY��W���W��ç��v��ꦵ�|�b��ӈ?�~9V�C�yd��B�-�5P�l��	�;0�`��ӏ�<R3�t���a?9���)"G���M?�#�#��m��|�q����a�Ɋ-�Չ	X~��EF�9�lK�tȲ�@U�a�چ!iʂ���ށ+��
��.e[���%���b���:����#�-�����_|a�]�d���lŷ����ʸ�$�?��|��0�a��K6���ˤ(Bt�X�%ڇ�F^���ƩŶ���5ɚ�h���$oXu,�Վ�	�U@x�J5�_���C��0����%#�Ji�\�Bo�EU˝+Ʈ5{g�^�>9��%
�]5���N��С<r�E|D_X�m�an���@.��\.���'�������Kؾx>?����bs����ƒ�r��܀}�7�6Yfۅ�
�+w(�ls�ȇK��o���&:+s��5�
(���Z��������|�b�O)6���cK=ܲ{������~Ӯ٦r��?c�}������y�kx�E�v�Y�R��N}n�����G��D�϶Q>\4�b[~�0,�?`䛍�:����{�o+�CQW�9�M�'����8$$k[k�fZ�P��2�2�
��q�M:�0:��w�|���Vl��`n5�
�\@��]�(���um�o7g(�@i��		h$��S%�k��F�Z!m�k�+�}w���r��Rlb��+�f��7��/�Fv$�i�a�0S�E������.��܉�f��a��J��U*�n�vMP���[�Z�����]��_���s0w�{�̘��E����|-�h�Hn���3����Y���f��k�
�p"�/�?�i�R�Ɂ�b
�	T��i�!WB�X"XTzxW�I��g��}T_P�7*�u�N��aC�Ӓſ�z�]ڸЉEp���M�6�����߲��g���F��	7Xh�,�X	��Ji��p/�"��}TϬ��^$�����7���M�M3p�ƈ�~��c��#�D�Ѧa ��X��-������_��[���D򬤉�".��}�,`+K_6���D�?�G��$�)^����*��K����V�|k���d&@y�ށ7i�1�E�߱��j����I����ʈ]�Aׁ�.2�%��i��JC3�t�+&�HL�#���H��!]�ݶ\N*.1�/'#���8rV��=Cs�J]�T8����]�8��/��JФsjB�*h��2�"v����P���ؘ؆PT�
�$B���)�Q2hT�[B���BAĶ�,��"��>"���_�mL��8؈��}��T=x�����3�N�!�H`Ut�
��y�tl�al�Pb�X��`џ�jF�$��D�}	$e+��%�{E�ٱ�%���2�zwۆT}�#ݫD����L�5�PM�ChJZmUu�8RCj��;�K�7e��!J^Ab}Q�69eYA�WG����7��2C��A$�.��E�GL�3��
7�mHշ?�}��݅3��)�{/q�hj���I_��ڃ���TN�(q��yU
��FP��E,��oJ�4v|T�:BR�7bJ�uh�ac05�U_m��U߶15=�T��c����G:1s�-M�omS"��̥:��U^�s��u�r8�:��2�h���P9�%$��Au0�J�[*��m}��^����힯����e�>��N��{�[[&5�k�ƿ>L�?�2��ܑ­AV�A�iNCPb�s�]��ޒ=�����;�?�Y�`��
����^""���/�$E�����}������(��(\��?F���C�'�?^մ�xu��U͟i���h#[�|�������~&]_�Y�+Y�T�
7��W�5������0�?������\�W�v�:�H�K,z\b������ѓe�^"z�����h���&:����a��N�S���D�}g޻��i��P\��#"�Y.AD�^��w��z"�0�>o$�C������.S�0&P7ʈ�\
�L��,��h��
��ʺ��̫���$﯄q����c{\����ǭw;��&�/k�v��9�G��`\��u��
��K;�:�
k�y���_֙���]��d�,7U���"��_�Y��q5���X�
�q��>CPZ
�Z�d��l�l����70ne��q�������֙�m��3��,���6D�S����_�dY�59�oO����B�_>�;O~�R2�#�9�*���̲��s���^R��?�r+ʖ���3=(�/��/���7�N��"��јu+�E"�eC��|��e���7��-�`A���!9�n�N�_��%�W�#�Qc�d�gCr\���BQε.�R�6��4>��	i�n��5¾���[�=���bw��f�~7����q!�se��R�h��IQ��R���+r��:����;Fy�,���ƣ0����7���x3^�lcj���-��҉�K�٬f��a�3�
':U�m�L7K*��|�}�m9���C"��W��:`f�:�Mg}vҠ[�+���~�U����>+��4�W$8*����N�lC�c�x�s����=?Yg�u'�7������s+P+�^U)�$e�)ӄ��c�X���f0V�Q�2r��J�1ٙX�{\��|��~\ұ�k$z�k%�=��r�l��w`�S�ټ@���Y�M��b�g9׋�n�,5e����4�E0極��;i
'�(�R�o�B�~f�.��ێz�m���b�}�a旬Ud�[�Y���q����jqW���k��wJ({�����z�j�r巊�́
�03g�y3ﭴ���L|G..��q�E�K,z\b����3��?{W&Eq�ճ��*(�,�(�D��	o�x#"J�h�/扟����	��1���A�E�)*�ZI�E�Y؝cw��ݝ���ު���Y�#����S;�55�3�{类JvUNvUN(Q�	%�'���PzB	�	%�'���PzB	�	%�'���PzB	�	%�'���PzzB	軟>�z�N��V��U�g��g�3/��_��O�8���W�]�i������+�=>��k.��(wY�tY����o���e3WM�{ƪ����jj�%+��Sp��ɘ��lL[q.Z~.Z~.X~:�_~�[~�[v*��u�.=S����K'��gO�Yϟ����p�K"黇��v/l����p9&@�`Ox��`�C�4%p=~C�"ҋ�c�ቤ�]
MD�?{)o���@*% Rz�k����>G
H�<{.<��<@`�3��W��	�W�\A���0�DJ@�r�)���'��<���<���c����r��5]�"����wh"��G4�(�y0!�Y�=(
�Ndr�HgsH�r��Z�˶
�mF&ӌl��L�t��47�њkG���iM�a�
j�$_��� �{,��'�t�RE��t.�t.�lK
�.�#�@hiv5@
@���:ڻ�ܘG��-��Y��N@��҅RB�P!�*ܳj\�znmkGc.���6��Gw��G���J����ƃ}�R�G>ݎ��VE�^o̓���OK�H��[<y@��M�9����Q
��8�z�
���@�J�mib&�l�B˶6t�u��W�:%}�Q�M{�l��4��[ј�@�r�
�h/�#
���S��ҷ
��3ү��](���~Q�Bx1��nt��9����t��&�4Rl�Q�l�恀TX͛�p��A��s��})��L��·UQ=����CP���Y@���tK�����p�p�y�D�\Ӻ�$��8.r�?a����T�[j��7и:���_�$��D�jDpd�-����5�*�ovo���V喇�3>�
��^q�1J�m4����kt�
W#XO.��^г$h�x�%IRw2K�v�4p��4�`&0�F�`MP2[e��#`������X{Oքhf)��n��^!,�xH�r�75gYR)���*�\
�t�ހ$���u{��L/�_���"�O@�#�^u�#=.�bò	�Ǥ���0�J���\V��,���^*#��Z�]I7o
^�x�"����N@����/c%���l��A
n�p��B�NU.���m�`'��-:����fP��s��������$b�V��k���J���8h�E�0�n��߀��e-�Ǭ#�v�5��k����2�	���c�mRh�*8N[�4��]���bw��Άn�P�/�����.�t��)�5��ΰ��`��U<�i
A!Me���Dz@�RP�P�39��q���{8��R��֍Ӫ���Ɗ�/c�b٬�n�Z]f��³c`f����\g���ݏH<�I0<c"ئ��MC�:�tE�-�O��]�Nm$��.U���N�t�Dzi��7'~���k�?]��^��EȂIxp��7���H�	�C7�=����Z	@�BW�[wE²�
�x���{���'g?do�`��8e���p&.�������.8���ϭPsV�}�ű�[eH��$>p�(�����{3�7H́�O�_{�K�m��p��Ūt�q��^.K
�O�>2Bz��y	&-:	���ǟ1��k�r��K1��	(J����i�E�d�+H<9N
���Q�B@�/B�	�5#��ڑS���s�ѡvG
�վ$ia���U�ʀ��N8l�_��+nb��p��+��
6�����b�Y�R�Ļ{�Z60�ѕpN��B`И��0��$��
�!���x��Mqx%�K�>�|����_}K7?�+�-�D��W碤�rK��C)S
I|H‰�9�>�A6�g�=�0��8t{֑��k�l�ݥb�1�
�6��J8�ND��x={I����Wp����G�jCk������<�I��p�8�p����Î��q������z�jԤA9�j/��T��s�0�g�Qp�W>6��~q�
"��T�'�c�<&�`AK��]�>0�j��;EA��|[[�T��%��p
N��wvps�/���9���[)]�����p�8��7�7��Ab�wگ%}9��f��+�6�-���R���Ot���8�Ա-̦ܶ�����a>
y/p���8��9r8��V$C6�\�-�ɥw�k�/�2��ls->.�}-�De!�nR��zؖ³u���~�M����)2Z�J|��ɐ*�-���8�R���U:�H�9vF���#�����.tu9c\d�~�ӆʣe!�vழ�Wc㛴��n%����3���o�>&40B*w��6=p"���G��G�{p�}JM%ȼ²H��b'j��>{yV͞��*��I/W�Pl(��N���w�1�����^���o��ǭ���9/����8�+�y���:�Ȅm�N;&�c�����/��"!��N1�v��W��_|3p�x~S	�E��q��fCI*a/�c��꽃H;q��vp�V�7ea��)b�wp�����^��g1H|p*�׫.Ն��v��\h}�iS�jw��="\=�ژKG���1tDE��ħ}Hǫ��`Vǚη���F�ZWP
������"@`�qs���Y	�
0�������RZB���~*��W���;����;rx���;�\J�Bn��ګ��Hʓ&;��+��?�G�
?�عi
ecI�+��z�ӊ�JW$-�V�U��Na���.v��]��JWo�ʗ�t7L$���I��|B���앐���M�l8��GT�;4�n��1��)�����w���pr���$d�(B�L��1#�myT��
߮�ㄩ��3|�o�a��<�01�!�N�=�'��IJ٪���o���!����y��?`����נSB�X5ȉ�ÀSo���
���7*�p���lwR�~ڇ�&A�����[������ؾ�0Ъ\�G=�)�OE��b���wFb���=%n*����y$k
���$
k��	;��IA�Jȼ��t}��j(�t�d`�
�7�;N����󗟉�=/�?[.�;x�������*ܴW*��
�2͜1ni��s�t�g�ՓD
5�@ʑl���((!�i3n��&[q�7��e_ņ�zLx`\/��M	�ؐ#�f�B���Q
��^�cRT�3��_����N:�`�RI�r�.U��v7^w�h�U�s�zx�
��L���P�0�p��#��BT|��
��d�Lޝ���BUM
$U0.�J�J;@J�ǰUx^���z�j_w�;x�.7n��7n
�&U�Ɖ�v��;c�ŭ��=�~�G�(�c���*���IiZŒC,�pm�+�0��NN쵄W�ƶm��	��z=I��"d�,�F���l�.ym1ӈH)..�FU*'�H|4�m=jk��7=N���c0~�h7o4���q?�Ÿ�b�]�h�j��ʜ6��=4�^�-���gF�(\�Q���I�!�b�M�.Y•��G.��c�@x�{=n�j9ɠx/=xh�h)�$l
���S�:�!�ۋH��zP��W����|V���J:*��A"&�c屪�z8E2mnj�.�V�:qL3lӣ��F�����f"*���-9����x�ZD�-��6޴5�LaO;�;�[9m�t�2�.m�ա~�g�`��Q�ץ_+
���C����3���|e�I_���j��C�Y��(�x�opW��6�`�e�=��`�ϒ�s�}}�us(�
��T֛W�X��
@Ie�-He%�8�J��V���ci��j	���	7*=
���
�3'2?����]D������i'��}e�cOYIg,ހ����P=�J
�Ѭ�Gn��.]o�m��4>���߳
}��&�d��Z����;��B��n�K<�s�^As�^�v�����	���jXQW��!�e��/]��-i/ەЀ>L���[���
�U�7��n�?"_Y�V>;pRY&��X�3�F�K�(��TR/�[3�&��p�i����f��K�N�
/���֗%���l����7��MU^j.ٰMK�bɷ���r]f
�ֹs�>��W�Vk�1k%��0&B"ȴ��a��u,��:����SΪ��u�����ƱST����%��k
�j��9���T(�&'�j3q��y���J���=�h�/�A���|vCJ��5��pH���|�������o���
l��k9'\�z�&��0?s݀}���z��Yռ4Tac���C'�Tj�	���3�J��(@K=g�A��
9s`a�!	��Ƈ�G7>��@�`�2�=��wl����{k��P����%tGR
��0����7c$��k�T�J��h�x�A�ص�xQü�8��%��v샴��&��
�v���d���q����~�/
�0ZCY����<Nn@��M�i
�2#��ο̃'[�Ӿ��d~��_���j_[8�|zWI��Y��JK���Y����a�d�I�jdJ��nZ�HntÏ3������n�k�'�	tC������ׯ��_�4"�t��6�������~�I�#���6�i���7l��G�
�f��geK�~�������3-k޺�ݫ7\[؆k��pM��
�n��������u_����Z�
�խ��Җ�o_�0���Fn�q�ͷ7�@�An���F��h���ݯ�#�
m+���쒆{��z���濫���kJ���GA������a�7�a˂��cP;W��JDT�W7\s�K"�	%�'���PzB	�	%�'���PzB!ЅO	!rY$�xTq�b�1�+B�6!	!6
!&;���X�CYT�K���N�m�>x\q����g�G�-B�.�8���.�xB!�����6q�~)��\.p%�G��nω0����,�����5f�Pfq��O�a��`��L�is)�+Jg�	�*>?��/�)�!�+�o�4��Y����*���Nݙ�>��w�S�tڍ����6x#����}j0}�'�C���WX�If!������
���	�:��"�"��E~�u�<�X+�
�F����[���S|=�n�<��g��4>*���p��M1�7^bP�o��LՓ	5⶙���~8�ővf���@��5��}�����68+Oǁ�C���o�+��bu|��2H�6�gNv����.w$]E^`-����}>	�v>����2��ɺ��Q��w:�N?p�i�S���^��=���d��un�$z���R��|��\�P�]�Oq~��>�~]�x�{\g�9��=�]�Ӏq$����L�v����M?�7�S�8��G�3طX~��3�_bU�#��-�Q7;�V~��n������<X��=��]րW�w�Fwb|�_�N=9��9>#�>�,-\tw��IN��N���fl0q79�?���!~���0�16��^<@��{;M��B�?���C�~��B�_k���_���2�3�z�-_��^��&d{�;F:@�+�sw87?����
��}G�O�����Q�(�Q�m���;���
WAO�(�k���H���>Gr|�s#���9�ހnv57�q�L�~�m����`W�K3�t�N|v�w{h���kN�Q�����M��;c4�
}\�)0��Vp�㗌e�
��xo��ހ~�dA�8��b�<�t��#��S1ΊKc*ԏeg�g���
�^c���(�'S��F��������{�Wx8��p*�AG�P�1�ݛ�FrCï9����Io@7v�éw9�?�\�6�Q1>��ЍN����{gB?�F��8-&>��s�`gmzO�bS��Kz��WA�w��\�l�s|���%N��ߑ<B
�5N�ަa�8ᚱ;�q1ޛ�t��[v�S��-��g����'{�q���X�Ǽ;�[#��d��Ɲ~w�a�;���{��&�3k�
�h����,��o�s��'��썛X1���C{�:1�#=|��c�D^M�|�ñf�ɼ���tзف����>��D�DidD��R�a>���2�{�����8�EO44��⤋�bG�q;_�M���G\�$}�@���1q��H�t!�ײ��|g�a�����n�����=���G��1�np��i@�82�y��K�>.�3��>�Rɂ�̟��Sw*�M��_�vѸ�^���#ک��g3�Y�Y��m:����M��:��=�~3-!�M<˴���J��L��׸�"ZJDoV�G'_�3�[�y��#�D��h=GD
1�k�c>o�ۙ-k���B_vV������W67Z퇔����PzB	�	%�'���PzB	�	%�'���PzB	�	%�'���PzBۥ�g���䨪�w�g�2I!	L
 ��
[ؔ��@�.�P��,""��(�	">���M�EY��$�@dM�:Yf�����z���qϭ�U]=ӓ4���%ӵ޺u��|�T��Y�V�6�l�t���V�X7Ί+�V�X�@�bŊ�+V,ЭX�b�nŊt+V�X�[�b�nŊt+V�X�[�b�݊+�V�X�@�bŊ�+V,ЭX�@�bŊ���|��>�v�ߦ�m�y�߾��)%��Sq�8g��3�s�O�z�)3ϙ?�s��q����lg�?�og�?���~;}�d:}�d:M�7���o|����e:�h��;6ʼcߝ:���;�S��۔yG�)�”yG��yG��y�p�\�N�s�ߎ�s8��s&�9����s�qs�q���^?_~�|���U�}�1�Q���I��#^����&��?��6x�@��YJ-�<@D�HBr���8Γppt(�	�@	�I�[���p�	@���u��J���������9��v@.�YP_�co����"�����@�?C�$0B$�D�A"��Hp$p���H���N8"�6�#G@����
A��#���oB�}��vB$8�~+!۹�`9��n���@ߜ�}:�E�$I�����I�a@9���G@8[lb�:Np\����8	>A�������ۇlw72�.td�H�;�Nv"��
��@2فT*�L2�L���.tw��;ۋ��zsy�.H
��I+A;4��,��������[�o�2�CPn����@�]�
�`�*<�$�k�0�����5w�B�����2�hK��Lu�-�F[:��T���]����Ao>�|���W�'%$$�!��
$!���
I��(���y����ՋLG��H�w��=�L[�,:ڳ��!_pP�������
C���@�d�+�F�8��������";zy��qG@�Dw_R���4�R)��S��d�[�ABr����v�K���2�wB��)A�z�\|r(���s$�|��>t&��i�BG�R���E$
�H�	�
i�/��b���$	?#@��&k`	����Ю��ǿ�cp�H����d�hK��ڑB�3�\>I��p}7������B���C��!
�,	�U¸�`�v���.z:z�iɢ�%�lk7r�yH��%0���qvY���������
!En��=!p���P�#P�E�;;КJ�=�Fwo\r}���	�x��c�q`@�c�2�DX)�#���,AA��aCp
Z�Q�އ,��"�@�����nt6w)��D-
��a�������@�IЎ·�$�V3�mN|!r��3i�t������B6��j@h���#G�X�����Zx?���C�y
�x�8�:�
u�5@Q��$r�<:�����U���=,�����X��2�K��
�Np��<�S4��P,
��@kG��.H�J9hV]P`�����A�Dog�^��A�e"�.�����$���s�X!(�����(�@�D<M:F���"�k�����\�
e^����Ӓ#��1J���
a�ڎb�3]Y�u����ƒ�`���~%��AFP�t��;�c�8n���7�:�”@�/����澩0%2��F�
�H�F�g�x?�-�����lS��u�gv7���.������b�Qo�s�@�b�V��o$hH9�;"7�"��4���b����/���|kM�*0T�118��q��qT������P�`���|9@���30�.�!\#D�'0ȅ���4<�A�”�\W�2���`�����[	�F�vR����hϤ�ѕ��,6yp�n�5��F�m�lly�`ew\�BB%�-5�=_���_�G��]�#�R0��#���u��S
V�	3c`x��@+9r�@5�ҳUc���NQ��j#�UB
p��If��n�42�]
�:��&�!��"���U�z�3�̚5W6:D,�/���ck�*C�:�����ke����?���'��H`�u��ل���c�hv�CD��s��o��5�[�����#P3��$�qd�d�'=$;;�ѕ�k+��
j~�#M��c�M1q{E.�(��:߬�A�.���A��r�
Ţ�����	G��Ǟ�|?|G��W������Y[�W*p_`�2
����B�3I���_�kF�d�Q:UQ�"��r���`6ׁ(���F�/r�E(0}&�|�+�^D���N����
�M.���֙���vj���Q��@��8B����
~�����)�ݼO�	?�\�F�탓�����:p����b��B��B��\[}My�ɡou���)�\[�d�Nn�Y�@2`�CJ�R0d�}��_�az�;��a�D����	Ꮓ0�u̱�m����h]y�8��$��r��6���,2���4cx0ɦ�a<D��x��?Y
:��kͣ�)��d�;�|�rܶ�o��1��o_}󦽋y�b�w�‰��{��u#N3�r�
�����9�(t!���
���3�O��B֝��Xxҡ	��C��~"��9��u��7��ָI|_�X��k�$ߗ$wH6�4bC5a���ޑB���]T��N�E�������+x($ȯ-�+CO��_z����=����ٸ�K�Ĵ��~�����Q��,����o�'&�p"�>�z<~�x�����a�Է����t=�V�Ph/�+ȈG���t������7cy#f�
���W�1�d!��
�~�a�L���CT[Xof@�$��,�
LJ7�U'#�V`F]�hj�M+r�p*�b��|sgm�_�5�-̞�W�{-��M�&���ʪq�w�?���\�+_��λw�s�^��t,�o��D-��z&^��7�u����{0,U��5y��^y�q�u�'��3\~��@����aPd�B�zF\�~؈���u�G�a-�e�g���P���\!�tg'{a����lz�cǮaF}�w�<8�U�k�0{�|}�o����.t�woÑ�=�7z�8�q�����-^X�,^]�
殙��V��?|�{��p�s�p�{��<�'�3�"|�^���>/��^�6{8{�oun�-o����R�>�R�������P�3�����,Վ>n�SN�k����u?��|7�'�����{s}����6�	���i����KI(��n��/'��]G��P���[q���'�#�D���j�(���Mo��X3g={*��|��h�m��W_S��M~9�o����啷��!�|�����w�����|n��Z/
b��~>ᗰ�ی�Ԅ�у:�&%����t��>�
�a���>tˑl�?�F.a˾1x��y�4��gr��p�c����G�nH��%?���&a����~��c��s0��g��,"������5��������}���O�F]|��t�8gL�f�c��߼\��K�z��E.7TI��y�tu�$FuZ87-���EWi2�]�x��gP�����q�c��ŕϯ�i`���4޿���=6	��������U���\c�—S�s�z��נ&
��t|nT�!2����r\�E�v57
��]�M��S����3�H7�M��4BGg6T���q��$��k�NSe��Jn�;�'��W<��^�:<�;�Q�%�0�������E�>���8���
�E�sp;�Xn���h����A'|�H-3��P	�Z�A`�77�m����_��7�^Pɞ����G^�'6-�0c�
��[z�1bL%�@����{��6{�}!n~�O���2�Y5����Ѐ~{�˱���_��$[�N�ĂG]t�χ����E��"��:�I"P�ڲW�r�U�<�}���3I5)����	��
y��,o�E ���`E�迒-�Tu��s#v
���n�Ln����X�Y��7��8<�D�E��+��^�*)M��1"�|��X�����Q�k��'@�wBL�pŸ�,�7���[<p%vB��;\nj��J1�eXp�NL-���
�{I�b,�,[w��
p��
�sK����m�r>���ïT�B��ڇ�i��1�zӭ�oZz2c{�v�ꓠ��5蛮L
�`�LG�\>���8QB�(��-�(�S����u�ӫ�V������Ӕ]��V�Ɩ<��C����{'Q$)�^�다��\s+��̇b����juoBV��@���/\�Qb�cX�H���I+y�LD��(���#Y���SI��qbr��f�^��0�K����H�a"�MU
>!v�א͞}��-���v0]�P,�bp�#�-�:��{\����Խ
��c��-���~���=�poH��7(P�DyȰ��}蛦E�j��!�ϗ%�ty,Ű�e]�A\JB��C�%Y��v��)/�)���@���?��g�´�N/uу=+�?>&K��"�X���)}��Zp
����|��?�Xe��	��	?"'I
�X�M"\���N�.���{��8e!��͡���کBC�4�O�����吭0aĶ^3��~𭥘�;�ʎ�W��"���"���i�
n���S�F�u����Z�N�Me�θ�빡ɱ���K����x�O~;o�K��7��t�N���wǗ�����w�K�����a�C
��2�}Ү�#���}aFi�e�����@��NMdL���\�+���2�
p=9�z���q�0fȘ
�Ι����p�\�D@�������r����x@��c��Ű�1��t]����)��w�,�7IYD���ʪ�J8������F�Od�9���qߟ�0�eA%�>M�S�4�=�RNf|�
�>�2�S+�!���"���dPz,M��m�c��&,�\���n�zC���`��I�<8��^�h�Z�F�hl�x�6z���C>�Dž���qr�.S�\��B}�(&=�p;%�	��|0�߸-��k���)Փ׃II��BY�r�r0.��)0�!l�����Q�a���<�x����
����[p�"�t������"�N��=2���z�l�3��X6���?��}��
7�8��0s��.���!��+{��>(���z<Bf�7c_��K�K�N�DZȂ�(�������
�˸=��=i��<�
��&��;��	��&I�c�li$���lեi�d�9p��♵OV�Gi�O�ar��9h�n�s��)��2�L�I��o}@��b����"d����V�@/���6��,�7a�K�$d+H�"��
Q�p	H��-�@��JI!�\�I
U���N#"ܶ�����6�
��
pZO�G��(�x�/}n�>|�Ss_Yނ˨����	BJW�+��E����ʥ7�)���k>kNmm���z�#~���$$PU��D�J�q"7p��q.��
��a�xߌ���/S����%y������ϒ<�c����}��
�=�a�S=�Kނ�7�G!n!�&�
�E��{/Oϴ�:�o܍�\6�J��A�r��]SSLrm�	̮�aL+mF҈����>F�G�y��0�p��#��G��ų�Fl�<��(-@��v�L{�d�2s"�y�J?4*!�"��o�51
���p�loP�{f�p��5�B���Ն�^�@ߔ-���2�t	��U��V
)	���VH�UԖD�V_0�K*����OmuҸ퓟���������߮���+A,I/�޿�_�g�O�>s>v���g��e���Y?�?[���T�%�SƸ�+[���Q�.�ԁ���w�����Sw�ʦti�4HN&��T�V)����:e�
@2R���]zi�o#��$�Yd��C�-�F&P7�U�
��,8��p�;��#
C�pH��3�Y'�����p��5�M2���{���x����f\$�9��ZfIХ��T�Z_��UM��ވ�u���E
Bi���㡒$e��
}�B��*�m[��-��[[/���>j�c1뼹x�…x�…��EF���~��Q?�Ӥ�^�!2-��(ӂEbp=v2�ӯb��x<�E����
|��͝iߌXw*i�"Џ��;
0���w۵E7I9�L&�����I)}މF^�WY��
fhD>|Bը�&�"�E�|6�����_b�����oR=4�G�2�z.2�{$4�	G)}�-�)FDJ���{�w����˾���Ϝ7p�΃W�U����煤ǩ6)��T��^&�H�=|�y�zl�,E���k��A�脺c�.+�>�I}��}�a�=���C�ޏi8����C�N$��,���:3^'�Go7ߑ<�/�
e��Y�|p���1����A���.�Z���t���1'y}8��ނ�-|��>�!Å<��F%P�m
��"K���;�ܵ�ι?�u-��u-��Z����\��_�׿t�����q�����A��,zIF#P�Q�-W��Մ\��k�#u_^@������2
�=���R�Rz��r(����1;���GJ��H֌��\��z
�٢x�!�-|(���Wl��
!�x(��`{�2�}0�C�G����ԅF-i!�9�qҫ�������0|�0Ŝ{1grD�����ғ���~��WDa������#ƺ�D���X��8?�KÝ���\�Yt�Jr�͔�rs�m=����W�o�'}��@���f
���m�#��%�P?vA��d�̀��2���KXx�n/0�z险#?��&�O�gݩ��@8
���&M�LaI�+I�EN����\�������ʠ
�C�Eg%�y4����[��\��B�i;݊M��W�\?hK	47"�`F7�k��`�r�}��OK�5��y[��MtN�)�!C�F�F^�L�.�v�—R�>.Ja��_W`ft���͹8�G�#���I3G.CV�+4��5ߙ���-=�Ǜ�|�b�޿,n_��a��KIS�oU���H6M�yz��9R�}��;O��Q����$�g<��D�|O)�hC#5���!�\���iA)����P
��K,�e�u3��h����0�F���f&�K>���(e�q�J��ߋK�gd�����3İ�ʅ���t��&�z7��ғa�_#���U�`��b�p�k��|�y����sb����j�l�:�S0�����E>R��*�1.
%$#ϛ���bpӂ1x�����;�ܝ���I[񼅮z������\�8��S�!��u�
pj��5�3|���V�8
�-��|5)'}�n�ܞ<�:��bi���4,#�����4�ި�.�\Z[�]�*�A���
���X���9+���.aҍ<j�U����z�l�3ur~eA?��[c����hBtŲ��Xֱ4J|_\3�Z�
���P���;�r,��|	�i7��9�ֳ%�����-(\�k*�6-����zb
�%$�~�,��YNP蔡�9H��m�^$M�n�ۈݩH�����|�ɯt����w��d�j��>�@�~�	���(�R��{*f��俉��֘�z���n�OL�>��7d��%����إwF
To��3����t�=#����W��"<mXh��%�4��3p�.yC��dC�sr�
��73�nJ�@�`��5����]]�jqmq|����n�
y$Ƀ��5X�x"�ct^����%�!H��u7���z�u'��Ռ�U#j�K
1J�Kx�p����C%��y`���en[��*�7��ѷo�����{��vr���}cK�W�*6�-��;�/y��%U�W3�{}�1҄5��I�yl5]^�A��`�}�-���-r��Q��P,���pF8%�|��k,�t;��M_�Vj.��[V8����윞�ޭ�;�,�Յ4~|���?8iU��M�
�-�Q�o阤�>����ː���y��f����-C�}AhAa�/WL�tP=!���L��.��G���Y��˧���ۯif�����q�?g?�ػݰޞ�>�"�}rU�u^����o.�O����G�J��Yn��#&��؞����Z��g����'���Cr	�g���	Up��
�F�-%+���{��8�if��ifrB�]�K���4Cբk��[�b��	Z��懒_4c�]���Vl����]
I�jY��]����
�؊�<�^�nP�O.�1�eQ�j~�.�!b��&FT5T��w��d����y���ۓ
�5�hfg4R�&�Ztk�-�7�d:��d��ܺ��ƽ]�r����.���	=��N*v�wz�yD���`�Xo���5�������KJ����t�J$�;�Θ��2'��|�sǵ��7�����if�-w�oμԽ*]�f;	[�b�n%d�{�S�֮��첫��Xr�}?��q�'7����ƆO.^��xK���;&�\��v�;e�|���m�h#���&K��!bP�\�!�r��ɗe�w��t��-�Om�c�嗮mX��&�f45���i��״\�|W�|c!

��Ҡn��Z��vZ�[�<��jʯ.46���������5W,�|͙Kg�9rɥ�w]z�ꭗ^�f��K�l��5
f[vɚ�e��mXv�چ嗮mX���3��\qY�Q+�h��ʫ[����{�~�|�k^�j��-�uk�z�b6�e���"�N���m�����kaᅋ��W����_����6��z¯�ް���HD}D�%�"JQ+5Q�
Z�Q��:����
D$7b�?�f�nŊt+V�X�[�b�݊+�V�X�@�bŊ�+V,ЭX�Rt!DB1d�V'��J�-!�.��Z���!�B��|�r�U	!�VпJZ�:�ݶ϶	!D�1��K�sths���sWUx�
5��!F
!vB(���b^6d����_�;@�z`AB�i��@Dެ�!N��&���r�9>�zک���>����r>_�hOo@�9�X�����[��744����7��}v�9��a/�Wb����
�K�#��s���������k�3��<��=޿��x1�7������6�`�`]��u���rG�����POm=�7J�2�x�/Ɣ����j^�؀�,g�6����+�q�9������X��#��?8�%��ȹ�
��+P���g0Z�A�ߘ�}���/����i;��F�85C���՘�/8����Y�&f�>�.;���I��Z�u��V��	���Qf�:�<z
��l�"����<�}{��u��;���lc�wF4��Y���D���Np�]y��"t�F5~����;�
����F_aԃ��6�����C���{*�g���o*�9w��}����Kc�F892��e�G=��|C���B=��CXQ>NJ�Cc�cX�w�o(y��9�L��2�l���Rotn�����+����S}Ύ,�`�Op���>O��2��Q��Tx��b����-�!�5&Lmh�ph����H�s��a�'�c�]��&��
}�����l܀Z�V���Dw9{(#!
��=���mƲGXў���F��n?
/�n�}�mw
x���~����|�Z�	`v�OdwuO����x�>�>������/��Ƚ�JuE��Ox���dܟ=yN�����h��x�O��܍�^S�`�
ͺv���e��xP^�M#6��;�8�~l��_����˚�-s��z��c�9�ui��l���2&�<Fgbp����{mD��P����;{~;�l�KCF�9�eE��e�+&��gth��
�Z�W�bEX�,b|E��/�Zv!���&?�x
���o����0Yp�\7�5�=I�cȸ�B�|�M�u�0�c�*ܮȚ8�ޒ&XZ��9����f���e�X�
��a	�f^F�+�Ťn
�3�cX���X�g��CS~2�x��9}������!�u��4H�a�]!�Y�]��{$����:�O���p�#
�����/��X�x>�>�CV��`B�\&�9���d+v��z�F:W5+�h2�]�#���y�r퐘snhy���h?g����PV��bR����HQS�V"��/y�ۋ<'��x%�݌��s�+��l\�
d�1�W�139��~b���9XC�et����>����R�9���DL�c�s���7�f��56�ɼ/|F@o�QdP�؈��<��b��u��;,��>{f5<�����xv��.|��ؽ�l�ů�kV��#��1��8�x<��U|����]���+��zXY<����f�������q+�4K��`���D�YN�ت�8�i���\�?#HӴ2;��z=[y��2{�V}F������E�Be$�I��nn+���k9��/
����s��h\�X�_���p���LC�-n�=9-������G��P���n�<��=�;��ս�����]�
�>;�۱��J�&6�#����~+�*8���ŏ#�@�����ٮ�;b����/F�=��O
3�Y{��{GV"�0�L�gE���4e>_�{���E����sT��JvE�Ip�$��{}̲sZ<A����<��-�&�|�w]%ϓ�{|
{@���'����i�33��r�f����pq�n�ksb��<&sƲ)P�r�(T�ޔ#�R�i������iV��c��oX�:��eܖ�#7a+v_N��
;A1צ|�/��/���v�3A5����H�2�T���b�teD	Np7k�F���eMo�ط��D_���Z������י9l���5��o��<O��Dr��U��4,�L��O3�£�O��
�c���D��V��:·J�,s�>�J���y�#q�����c8���+�n7�1�m���8^�)�>����|��1��V?���	���P�QS~�؞A����<�V��J^#�f��	�S̤Vr�q�u�?�g���ױ5[�bƧ�q�/���a�1W�y�`��Ǻ��3�2+�'��&nf�ü�ϰ�|b�m^c�!�����
�y�'�6S�f(o�0o��ߚ�k1sd6_�c��e��\S=���}Db	��	>�,�O�-��6�^�f+��-�d��9��k�ٶ�ם��
��t[�Gx��#��D4���JDg��~ެ�'����g:M"�g�l�HD��DTKD�huD�7]MD��M�����":��0��N#�+��#�G�h2�;��""w��Z��":���E�����"������r�y��;��N���/�I�ϩDt=h��GD��i�lwVp���sO#�{q��y�#�hXd܆���<�q����Z�o��o��.ID7��|+��uy��KD��	|�)Dt-`�\iܫ�Dt4�_�=��5D�H𲓈�~�v�7���T�X��݊t+V�X�[�b�݊+�V�X�@�bŊ�+V,ЭX�b�nŊ�+V,ЭX�b�nŊt+V�X�[�b�݊+�V�X����j��IEND�B`�images/admin/rsticketspro-legacy.png000064400000102240151163531650013612
0ustar00�PNG


IHDR�d��(�sRGB���gAMA���a	pHYs���o�dtEXtSoftwarePaint.NET
v3.5.100�r��IDATx^�]�G�q	�Âp�Npwwwww����B��q���
�
q������{�{�3�wGB�v��n�vgz���������{
����������O����,S��	�J��/��?��s��?<q
�YBR�h�[C�������ƃj�r��9�瀟~�9�瀟O��T��Yץ���v2��@)�=���W^���#���>_�M����/��?��s�ρ�M�_
��m]Z�|{���Oj�-+�Ϗ�	�FH�����
Rp[�dݘ���!�lP��M�[�瀟~�9��@,r@���H�׽$n�6�H��dΥ����y��l������z��T���ۚ�I���ڔ���4h(?(5(A,V�_��~�9�瀟�?2�
h0���Lʵ>����\^�*-Փy�_�ٝ�}�����h+h��4Sw�����n��r�@P�矓��9�瀟~�9�ˁ�0�"���{K�…"�HSY��LYxe��|:߁�͸4I���'m7�j{JK������䵠Ѡj��T���~�9�瀟�'�@��FPη>��k�:�U3S/��H+�s�\h�Ԛ�]�!�/O���������FRyw	ɻ5�{���
��*��|r��*?��s��?lr��	���\
$���8�Es�"(�2�X2Ay����(�f_�&�.M�i�kt;h�%w䕜[2<���}��M�r(��n�N�i����?��s��@��@���
��^������r��}�[Vx���%5c3@�
�0y������Se��	Zy�Օ2;i�#̊Z�o�.�B�4~�~>���
?��s��xS��=pא�e��'�?l��h�V�l�;�X2��I�\��'i�<��p�s��4>PS��*�44h:��Ľ�T�C��s��?�x�8�M���
��7��;�K	��ǜ���=r��:�vlc�0i���0g�s��'!z䙁��x{it���
�/97���|�|��
�מ�;��7��?����ȃ�
��߷��nΑ2a��!4]��٨�\��Q�x�L�0V�w&(+⳨�w?�N��,�Bs��]}jJ��ً�V�9�瀟~��9�M�
�i�}�=�﷝�®b2�I�j���I;6�����];�
&������#5b�3��|�p~��:3HӠk�(EBsJ�-%ۦ4O�?��˲)eS�砉�����T��s�ρ��x��/�2�y���Z�.���l��\m�0v�s�d�١�ٜ�ϣ���X̓�i?����h}��UPkPP��K���s��?���r�ե�����~��7��W��<��|�ٛ3��vL
Y��=i�c��
L����gh�!��H����N�ξ�%�E�(@y�9(�����s��?�x9��
W`k�}��ۤ���������GjǞ����\�3�2U+s5��	�
��i�
� s�Y㝇��'CO��!}���;HӃ����
7���IV��A
@����7��?��s����q?o=�ƸGp������]Z��s���C�\�c/�L
9*
s�8�\�I;v�g`<8��F�N�Ҁ��Ov�s-��������Y7����?M���/���~�9���k�u�#��/�%@��v�D;佦c�����̥yV;�x��3��v�p�2��9�ޱ�vLs�Q;�f��c
�#`<���.�Nvը��n�d�x��4�WUʄ��[��d�K�5aV!�"�r�0(����6�9�瀟~<���w��
�M�}1�D�?�y:w9�Ze���]Cvd�g����U;��Q��H�X�q$
ww2��Ą$L
�x'�u��t;�VZl 5w��R��$��Lg
�ʼ.������sZ�3ܣ���9�瀟~�g9.:���6��
Y�c"�Ys�bzL��j=�1�I�{s�2zVs�X�؈�2���vl�L?:Q�q��cce±Q2��Pz���!w�4b��=	ƽ�w�>sG�q�������G�I�#m�Cx3i���T�YR�oF�����m@w�5��+�瀟~<��}��H�RXR�+5e���R`[����t�\mcO�Ǯq�#�U=�%�i4Ý��I'G��#�d���}��'{V�]keC�	ٹ^�O�
�Bd��Od����e��y2��t�'@�j�����`��H[�r��F����NGZ��C{n�ݖC���y�e}��AG�m@�8�h����瀟~�9�_���
�v����&2�	�y�Ca:���S�LO�1���C�h��1Rf�"o�]��$�˟^��~�M�߿/>�Ǐ;���o���?�޽{��˷�~+{�
���kʸp��^��Xg�k�Ԏi��vl㎇[H�Cͤ=��a�����`oU)�-��ؐN��O%�C��4��~����?��s����qt��������Ƞ5��`MKv�;6�����1���z왡2�dy��2�wz��=V�G�ɓ'O����!���%�}q
�\����~��-������H�k�]��g��'GWʴ�e��ޚ��
� �o
0n"m6ֈ���@}�����97��,�R�P^*�g{��_%?��s���5�UtAy������qE~��
	���Y���2�P�s�T��Y��t62��2��,Y�w�|�헚�Km�`��_i���3'��郲��FY�����uy�x﫲d�"������$�69z�|���@S�����P�Ays�b����<��i��t�a��vL0V��`#qPCiu��ʤ&�jI�]e���`�_��\�0*{�����5Щ&��҃�[�x���?��'��.(/�j����v�d���_���C$\�D����zҩ1��"Y�F~���fL355��vȊȫ����e��!2��zaP'�|1��{ɐc}d��~26|���?U���l8"���4n��[�e�m2o�,��Y4s��ۅ7�4d�q�c
�8PO�ﯫQ��u@�5�v��$8$��w��OY6ҡ��DyQ�?�ݧ��ڂވ?���
^)U��u7�ޠY��Z�~[�d��2^�'�\;Td7�KB\�?��|.���x8JWPj������C1<�/���`��x�E��>S2���ط+Vㄲ�ه��o^
0N�]P��f�s��T�]J;ʼnZ�3��B�N�2s��Ռ=�|r��p�\��f��f�[?ޒ��;��}���ce��n�Ǒq��0'z�ӳ�'B���"��{˄#��o�ޣ{��75p�ꛯ�}+e��a�`+M;&
�90�f�e+@v�qMSn���F��Ր�;_�<�5?�<��<�9K�96V�R�Q�Z�cL�*Uy�58�a��l�3g
��)s���2d�,Y���Ibat��2
eȔii���~�н�㙯-~�j{��۹��햵a�e���2l¤�5���3WD��^ꆲ2��{�W�T�,R4Ƽ�
����e�>ʔ9�tԷ|��e��1`�coԭ߀�y��ks�ߣ[D����ᕪ�0�!S����"�yA�ӤJ��U��i;�Q@ʔ��<k緿�z�V�f-K�/W��#�Ǐ������ُV�^Ӳ<˱R����^�<
�)s֬��y�Ӥi�
A���봜�o���AK�ʙ�H�[�|x�����4[��2��-��S��|��Y��L�<}񴼻�y��$z�o�D
�Ous�;ydc���;�V<~�y}�r�\��9���v<Tf�"]�v2Aٓv��q$
אF{�KC���,�3��@�.(����e˅��/`�	ି[�
���y�נ!m���/�O�R��%%A�1ɳ�90'��9y�|�qs��ڻ�Iۮ��)P`'N��i㷶�:v��s</�y���S�IPp�Ե2��Y������ҿ����?�A�FS�2T$L8�y�ES�N���r�M�.^�i����P��h7��g����{�6X��%_�B�-@9;ʋ�ɘ�$�+6m���@��/-;t�
U��Z�H���$�=K���0��(L#;�o�r;�H�5�@�{�[�H�i<�Ie�1\3Y�٧N
��YG���^���Gj�2]3sE�+0f"�^z�s\���9rѻ�aN���dҞ1��D�|��5������鴿��%s�ب��1��
��I�=U5����T�QB�֦~@�*��+lޛo˚��}�5T.]&=��R��І�j�nshJ+�%��.}��󣕨��ח�5y�|iԲ��3�5��0���`����QS�F�r���%���@9_��1�a��C�;PN�6m�֝�������ճ�Ir��{��w߷��q�̔��/�1˷��D|�ɲ<_ƃ��l�$\$`����BP�z�{���<���S�B��9�����^�R;�I��(����B��w�J2��Y>[�aYi�dzI3�x�Ɂ���H��Rd2Z���k��$
�C��q�C-����t�r��y
��~zFf�*��0d�v�d�q�=��ήJٔS��M�'4�f�oc륁��7ޔաaO�>ٺ]cU۠Y�_a�~���/�	�8��G����\�-T�d������S�؄:���|�[���ό	�GN�"�)W�V��YY+7o(�5�|�N��f�){�\�2�,f}��	���<�-{�R��-Y�e�
����"���,&�o�ޏ���xT�|��R�J=�����ؚw��r�0$=��^�몟(-��[J��#���@�ʙ�x�"�V�~l��������5M�G��E�˰S��q��[�c�ԌU�Lm��@�zV.&1���jd�jwȱw��@ye�9r���}���2s�Ti���(��a�v��2W7��k�
��;JI���@�*��N
�)8l��%B����
�g谿a���=4,�ɒ<f�0W?�:~�A���Gx�>ԁ{���Q�ԩ�6o��=���8I�fs�2Lu��¿ʹ��;�l�Sb_���4i;��b�G\���EPN�=W�}�^[l)�}���,Y&Z_v�Ag��|t��tѲ�ҺS�3�D���m[s�?_@6#��r�e�ݙRtgN�a{
�#C���+��cc�ju���SC5�k03��N"4���
ڱ�	�*�%g5��N0F�"�["�q��U�Qxc�wu��d��r��~-9ɩK�d��	�r_ݙ+R;�ƻ�W��Tkgy����ߜ[��II`�-'�`��|�uY�y�?J�Z-
�7�+y�
���^���=z�'�b�f����i_ziꤝ���ܬm��7fm6~�
��W�����B6H�|��uPΙ7#;������(Cv;��b�n�6��EPN����&[�~����
�j03��F,[�Ʋ����@j֯�'��[s�?��>`��
:���T3�v{��,}p�Mב��Ü�@<��4���yd�l;�U~��g
�oܺ�9u�;6�p���	O����5�X3W;rV���T�1sY3���HR�N-u�������5m���~���w��]��2��<k�@&��YN�ae�ܶ"�c}:��QPl�b�/��x��7���eR�R��%b��Wu�]}�Ï���<`r�oΙ�PA�i�6���a���S(W���֭h'�>(��{�+Myحo?������P��Ŭ�^�&�~|fAy�����߮[7I�b
�n�^�\y�Fp|Y������
".Π�E|Ŷ����2��{����=D
����5��@�ޱ�\�#�1�#"ʻ��A8җZ�L�>�8���c���coڱ��@Vy�U�j:s9�c��t���T�{��B��ZA3��g���x\n޼)!{�I��m4�j���1��ښv\�	�
������;�H��oCf���
q	.V�T���Z����]�7|�G��+���!���Õx�ĉ�x�d���g�Ї�]g���k�
�~���:=F�,yC�ޯ�{�se�BB�"$�]�V�m=ߊ��;�t
���`ƢE⍦-XP��r�\X���k���%(��b��o/�r�+?����F�
n)��
�<6���9����,6Ɓ�ep�����b@�,��?��Q*p�]Pf*̾�w�»�5��	��ecw@6�y<��h�rd��XE-�رc�֞%8٩�S3�Ԏi�>fe�vd�r��3��@��<�ٻ���F2k�49��|w�;y}ǫ�bw}͙�`	Ⱥv�W�Q��/kT��E6听k�#{M@l�s#�F��y�5�2���}��Wiӥ��ҥO��_5j���q9�TVe�����*�=�w�R�����k���$6~��'؛�@~�t��`��C�mh���J��˚4{�8H�/~���v
�5N&v��y�����V~l��Æa�.�|�++��7�}�(Q����Z�m�[���s�X����<�ܻ��ʩSw���L��E�"(ǃ\
i߭��,7i��(����3���\�n���~��������<�ė�F�֗˕����5����[E���%��!�������w�����̃+�#p�5d���~p�L><6����~�1C��d
ܿ&��cu��Ґ�+
YK��Ԏa���i2]�cWg.&�!m�4��s�=��.��c���R{7�ch�4U��Ԏ
�5
-%%��lk�����%J�M�=G�H�h���Pm��|�נ�	bV��zM���r�ʎ�8�j�Vos���A��һ���/�@�R^�nj\o
�i�h�L�ƭZ�E0�Y	Ds\9�a_��xV;m�нM�}(?�e����Jp�\�N��ƌ{�|.A�d��9p�,S��3	�/�K7NR��ʆ�[�
yld17d��,�u�[����^��9g������H�c�G�MO��ުܥ�k��]��\��{Mdc��o\@Pμ*@^�%=?m/%w���Fs����D@~��,��|�駚隹�W�P��y�1���g�33��]�];v���*�j��������y�[
�X������.���;�ߒ~�A�\+]w�urMh�$��2�֊Jo-(��^"($b�\�<q�,ykFg���ez-�E�g��[����A'��W|8��l��8���/\Ȱ����k�z1E@�*�j]9y�fjWe/Z�\F!	���Et<s	��*�w,JN�3Dz�|~��թe����냳�.}ǔ�w�@�,G��U�t�
�"(��uk֦�i���Ԩ[�:䱊(C"�8���o�f����
.|}1�������Ə���#�oZ����@�PږZ�:O�k+ev��{L͘�4c�+0���4��`�,d�QS>qL훯�k"=M�
u��8D�řK׎�S�t@V�@T2�&3�k���9��<$������^���'Ið�0����9��J3V`\)��T�^\�n+,9ק'(
J=\�X���~���1C��j�Y��)f�2�5F���Op��Wb�X��ַ��{�8e�ǍvrY'ĵ��Ԭyn�ܹZ��T7�1��I�&m�rb����>�A.t����+V����rΜ'��LkƏ�]�=��*U��͛���߀g���f��uM�O�R�Z��Ƹ�h	�Hm�=t�q1m�|ɖ�(ks
hހ#�X��ߧ̝'P��([,̟�v�ע������;����RywI8x
�X9r����!O86Jf�O��fIȮ-&�{�a'Be���N@��b�v8su�w5���]�<��f���*g���5��i�v��Ȟ�cG�qdf.:s��]Y�d�|�R��odDZ��%���v����\a{1�;wH&��u��+����L�������Y�6��n-\�Բ���	���%͚-�{�?��W�F�9�i:�{�A��T���n��2M��b�}��J�A��oVu���;���2M��@c@�&QD��:�(��L188G�s�,1�SQ����t���=�g�mf{���aW����x�T�i3�vO�*[6���h�ʠN�ɠ7�60v�m���"�<-9fr<��R�fͯQ�%(�$1��7-��Lٲg��)+^�([��c;�m�[o�߿���ʎ�9�s1íh�d2�b���P����g��@>���wF����%�"
�T��*j�k�v��CO��&�1i����{�.�n9p���@yڡ��x7G�L��1Y�c�`lde�����<��Pd�Lͻ�@]
���8DB%�g�J���1H�;ލ�cP�e��=r��9��c���Q�e��];&��^T�m/��r�
Y�?�x4aL_��
�9w��e�4j�d��ՔY���T�:{��eO�7W��~?�ɪ7���a��C,�%(cE�h_�6Iܸq�ċo7���c5�8����6ղ��9<o�ʉ����T��Ȍ�Ƥ	f�$�3X~l������b�Q�^=;�I��{ܶK�G���y��Xx�5�
@S���q�ɉ��-2�G�N�~�!Q�l8����Y�qm-�x|)��f���
/�r��ҏz
����mձ㣚��=�_��߸�<��2��xr���Tɽ`}�9t�8�v�Y�X��j�=?�ԏq�����IYO�$I����x^ҿ���q˖����x��Z���m�>̞;�8c���C�ۘ<�U�Z�ѫ0Q{�&ϙ-/�/eY���9��3L�5�Y�|�88���߲s˖a���ĉ�G��O�$Iu�LA����"��}}�E84��7m����A�S�L��	_�����n?�`οS�vmM�(o���W���Z���}�pO����p
�W�F/�.
s�L�ZG�K�54ӵ�vLS5Sd�D��7�,��Ǐh@���k~���U�ut�L>8Vz�����G#c�#�X��u�q�d��c7@֎Y��Y��l4W;ٙ&��N:
���p�ɚ&�Ͽ�\��,�Ci�j�ޱҌ��0��T`c����yu�}b�
F��'Ȃ��6�'
��'P�W�U��X�=i�,�sޏ�8A���[��s�@�}�{�L21嗭�1�9y�e���(��\�`�":��%�IW�YHT@„	��-X�Z�v�d�̙2���,�=���թ�7&��^x�'8/�	��s�{�frвC+P���.��k{ɇ=�$�%L�����:eϔ%˂�K_�ӏP+�dn%��g�6G3nsD����8L�c����ǎ�,�ϝ�p��2�c��ܯ5�ٱ�����u�*�^��9s�xCFN�$n)\����Y��C9eAf�1���7_1�1S��|�XY�C"���2���ȏ�T����ïD�%O^uN��5��*S���P�L��p--D|����W+ר�@.�D:�߽���)R��±���	�}b�����J��#,��b�g(���9	��]t4�j{Jˬ;��lx!i^_3]��cj�d��4��Y��9{D���;P6�*�w.��GzG:s9ҳ��Z�1�q�1��	�<b�q+�;�pю�,F"�!���D�;�{��.~����pN�l&UC_�@Y���`L�`\fk!��W����eU�;p�j!�/
�_�P��qc!
KL�+~_A���̷,{��lٌ��0}�[u�`y�Th��T�
�W�X�G�S�A.t�x���T�mPƤ����^�f@o��)#&�R�����SW�k&���e0��7PƂ����ͱ(�Д��ʗ���^5-���	ԥ����'��6�;=�������O��T���Q�Sc���c���eZ]����.��0��X�n�ՠ�Cj�V�{�}��90+�eh�c�����U�x闯�=��O��-P�DؙF�1��)�31i�-~�kҘ[q4'�Ϡ��7>N�?O�֮e�̰h|������K�6�'P�O�R�ƍ>C�lXG��o�?��R�j�c�{�7ߒ
��(�u�}�䵻0���G�kZ�cj��IGG˲�K%��)�s��y�"35f��I��2<|�#����hk!k�lt�ҽ��ڱv�"��z"��ڡ+@�<b�=�{
Yi���\MvԖ�v-�o��F�
]"�Bq������VHH��[
H�
�	��SbA��*6x�(��	܌�"��k��R�N�Ve��:E����W<h#��6ndy/���K������X`�U���k��˗�6(+U�o_yu!��=�r2�al�ڵ~��ݪ�~�H�<y��=�&8kp�����ӬMk3P��݂N={�eU���Z�õ�@�{��!=���
V�><�B�G<���i/��#cT��gB�3�r:h�[:t�&�-�iվ�
�[��u~O�RZj^��
1����>�k��H)T��-P�DL����n#<Xx���^��U��N��P�0�]�.^�y��NPN�"ś�7�����1o��Ӱ��|��6��:�]C%ψ��=��Q�ʀ`�m��J�ד�w�J�C��x;m�X��y�Ęc��=��╋Z���ै���޽++B?���}�+��
k�,�H��c-�I�Y�i�<bѨ�\Mg.#��	�$o�jg��������m�|��eٰ3D:ok�yWs�X�?Vڱ�4@.���ۘ���'@�������`��#��+�.0���F�Ү�[6q�7i����Z�����k���$��R�r�;�Vu���^�&���^�G1��ƾc����v��ʃ�F��U�˕�6(-Y�o�{h��7a���q�w�'��UG;��?b�cġn��j|#W���3��>�q��t��\�c�O5-�<�tO�V���Û	�{�<sy��`���+|7k�詓�H��b��8М?�?|h��S=����Kj7l�U��������!O�ȿ�m�
�X��o&˽�l5�Ľ޴mUlv�A��Y3,y4r�2}��S~0ݢ�_J�)-�7�4`���x�ӄ��H��	�<�C�zu��b"C�Ҥv�X��;}�e�����Y�g�]_�*�#��u?��w��N޺��<�UKw��;&
9�G�+GOqd#�3ã>��8�����N��y��c��g��=V��f��1�T�L��
��:�Ef梩�����V���%
�+m/���'@~yK~)�9�FE7��U)�W��k��G�o��deF�0��`Z�c@?�r��N={��zr��ʉ	a߀�m���>t��ąӑ�~�!S�I�&�C\N���Y,�2��+0b��z�,[&ڠPx`�g�f�a&[�;(¤��נ��g%�w�.����2Fg����ĘiSL�רEso����y�;vx8e�l�eL��a��\��q`ꫀE�a��z��b��;u�_�Y�_��k{���A�b�X�N���Q$�r�]~ٽ.Y�dԔ	���H�j&f���C`�2fb�'b�|���[�KlZ��Ed�8�f�.�qd�O�U�ov�A�8��U�Y��Y���mkԭ�Ī\��1��I�2�o?��f����k���X�*�4���#'M0�?����}���l����_3��J<{�C;��竖�q�vV�7gK�����4M�O��h챡0E��S'�1�eODp���S��ݱL��wM;>�w�t�R�H���D
Q���j��k�B"C�jMC
��\j��ʲx�"��ۯd�֙Rk[�ޱf���Z7W����%7�ը�F��\�T������q%�BCa5�ޘ�pްM9�5�a^�mت\�^�VMz,��I�S�+�n8��)�x
WۘXq,^�_�ȿ;�I�D�\e"��y.�>�w�`[u.Q��h�2̆�B�����_H�BS�c?�ovxJ
�	�~�����ַ31�w�q0������mЬ�'P&�)R���CƎ6�;�����<�K��-hޮ��ɋ����1,*&��^��G�ޛ���)�<�K�.S��-\[��'=��S;|Wנ>������Q��t?M�m�t��ի����0�T�2Wkկ�W�>���~���a_)LB�\y�l�9���vu��[2f�ʐň�^xil��#�J6�]PN��A�F��=���+�B=dc�	o}2���5K|\�y㿺?e�TFPnU�j�����T&�u�,M۴��ۉ���y�0���v��j�w��+(gY�R���">�)�Csk'D�y�Ot�>AN�:�e�R�(��ki�[�3�cd"�v��{dzU������E�w5٩3o5�8̑&�=ԩ�R2a�����e��O��:�{Ǻ�Z�M@.�)�ߔ[�l�!A�S�(#�MX���;z�)q`Z�rzFS����2�U������)�^eh8�)�v�r�n$4j�M۴~X�|�Ϡ�o����L��S1m�3�`/,t���J�A���fϠv
`qe���o��۪n���W�]S�,�%����sh��(��<�ωu�
|5fWƖ�	.�̞I���$p��ٰy�G�X���C�
����1��}�8S�/�o��ؚy�6�K�p/�����r��_oaax�����j!��O��wR�m�f�n�I�0�o�W}��g�G�E
����:�E?c2S�F���_P�rH��9K����U+���Hʃk��I���:£���u��y�5����*7;�m���G���v@���Xx�������rn�}��O����g��>�]��}��U�!�j�`�D�r���^x��Y݃E�X$�a!�6�p
���*Z����]���Bx��B��+�����CRI�߱J�<ZJ�D&�nN@����=0C���@枱'"X�yL�a��[x;����P'��Z�j��Ih��8��(0V��f`�4duĢ3M��{�;V�\=�v���"d�=�~ks�v@~yk�v���{�$�r����*`�,��b�h?c%֭_��Q+���^�Oa��?u���AԪ<�{3L\�'�)Q�2@~̢�-��u�v�f�k�.�N���q6&S�XI����`w���Թh���eL�̞A����©�����;l�
T�d/&���ϳ��&O��%☯
�ҿ�1Q��ĉS�
|���d>1�7{&�o�A��@H�Zf����	��>��$./���д[<��a���AQLz׸��T�P&�@]�"n��������neZw.^*_@��~?��o
�����PX-<Ձ���f�t�kwG�P��и;c�Z��c���2هբ�^ï���
-ڷ�O��<ٱ8��37�C��e��f��'N"�J~�{�J����Rv���E�	y�2�	,��g0��rM
��3��A�r��~Kf�1��~�2Z-�͖���ȓ{G{8���O+V�Bo�\C��A}�!�e���b7�����E�1�d8�]^��ܸq�i���^i�Ԫ_߹@:��r��5j�8��ȞOu�Ҏ����Z�&
;�dzЎW�VL�m�*���m;�Iħ�wk7)��'�lԎ	�Eu�����*��}.��p�ܹ�:��	O��8Qê�g��p��J7^ܭ���L<�Y��N0���J4�eR��K�u�y|�+X;u`D��9���àAb�m�
EK7����n�1����S�N�{ޞ�mx��1L���TOЙЬ�0���r<�8��g%�[��E<�����Dz�͞��G���f,n-��'����s��%.�"��N�T6}6��ЏV��L��bqMM����r��4d�,*̻���m��\t�i6Iv�A���-���L�K�;F�f���)l5p��9�`�ɧ���>�eπ%ƲNVuV���yѸΊg[�ݫY�����k�{�_ݗ˗��E���q�`�4v)`�8:��{C&�����x�0Y������wv��i�\/á��f���]��3���m��{�کN�]�c=U���i2�#�{f.��r��n�vO���(�����j���Gv����ヨ��ߔ�[k�J;��Zr8x�����r��2�?�u��M���	Ǖ�p���'��S���S����f=i�F��C8��VΔv1~a�N@v�	
'ڠ���gpB��ʽ�թ���@��#����<�1�����=Aӫ�skԫ��`��4��-���+)CC�i�P^޺�cA牨i`��k�N�ڨe����
�	x./�2dܴ�t��W��%(�4����r�0Iw�����
�7���!�F���d�!�!�P�3.8?Њ֨e�~k�>=m�a|u}1�W�'��hF��M|.�[���u�r�cx���0O�m����ਹ�j.�"��L��
o=�USο!�̻3M��.��U�~В��E��4�XO�h�Z�L#
ӻڝ�
�yR�/�v�%9��4Ws�ؙ�zdf.[$Q�\�?���qĢ�Eoi2
ӑ�ζJ�`�\�|e.8X�/��B���T�TZ�;6j�
�lM@&��IQ�����f�gϙ#����#�1�=d
�f�i�6���V�8�f+#�`�Z5�:(V���h��0ֶny��Rl߽��:b�mPF8��~�?r��2v&�Gf��o�bܩ��RF��?F_l�D�2���w�ZV�X0�p������bA`*W!Q��^���mVW=�����kc�r8�R��C�3<��^�Ww��x�̇��ߒQA9y'&�1k�wя��L/}�rz�'e+V���Ԅ��k�qd��7�&O���Ъ��V/�r����v筞���*���&C�⌺������r;���$,�~G����n�U���6:!�zo��ؾK��&�v�oژ��2o�(�
����AE6��#�.��U��$x�i��^�w�s����	��w����_������s5M֮y�#���5v�E7@��#�Eo��T��[+ȼ-����z�����]�m��
�c# 
	V�|�̳~c�
���1K&	ʙ���9��[3�0����s?׎�m$H�Я���������I����@2&1�/���Ym�/y��
���}`�o�5�����������|��4����7�FF�5u8�%{VS~�~)
�&(�/A���=��򞩨�׽Q�_5k/e��ɢ���J����r^L�B�^<���}�N)S�4mC`�̒��d���"U��<�ϜA����O�0��g�rG[�#o�&]���_x������9�����5eȜ��i�Me�[�^�3^��%o��b���p�K�����P�>籐)$L�襌�L�M�.�
O���׬�2x�=�+]��L���Y�5
�Z_ދn�%o�{U���!M��4du��#�de�
��矝��(S[޷�L�3*�����A�{��A{]�V�1��5d�q�3���{Ǟ2s)G��[�Ȭ-���q��Yw��_]
�6�L��`\0$����IGM�2��d�1��8i"I�<�ӣdI$I�Ē0q�{��[[����K�	�ԢZʼn�,�c�IQ~l�?���ď�$�Qdw��R]��`�P/<��
~�A9~�xL��ċ��o&J���=���#�^���	��L��0Q��va�$	�6����,q�lB�?B�/���@���[9	��⠍;��]'LΦ톼�l�
���O�;+:�~�al�Y\�zq���<�I��K����e�AD�X�v�������x�ww�L7n��'�5V�9,Q��p��@���:�@���S*\����\>Ϸ��~��a�N����յe6��vI�s9������S?�x��t盲w�^M�d�1Ý��u���Q{�8sV�pc�w��v���4�:k�1���Z9t�1W;�d��U���W�L�/��R3ϳފ��M����<Ns5��T
$H#���=�5�e2��8	@��Ӡ��
%���F��b�P�K݃p�h9�1��F�$ųb�G}�al���cZO
���l�+��r|���3�7PI�$��{�	�t@9�9?���A�
�K��w��]�sN�=p��q>��;����Pe��	M�F��[9��T�N���ǮL9�	>%N���߆<ӼIp�
]r�����!A���	H�^�5P��;c��5��P������H(c�[�I�c���V[nY��P�y�1�X�r?l��f6��n�\
{9:�\nga�[�>,m7��G,���G;˜��h
K��[�n�͛7��Q�&����%lo���/ҙKs�Reb�ؘ�KK��Ǒ&�Ĝ��ؑ�Z�;+@&;�X׎��<6��d2�;C��䓊����-�ʵ+Z�YwU���Iݍ�5����8���Bʎ=e�@���H�����I�ОaR���,�LO1��v;ˣ�i���	�ߡ�kz��(�ɺ&�Y[�}�Qi�1e�vƋ�)���\c��BS����ƍg&&��f�L�(��]��74����l�#�}��7�(A�������)�7��'������0;�0	dj,�rת-�~O�b�\@9��|I������hQڡ/(�����+;�,�J��>�}|��=��~������l"#,}|
��;�:@�b^�sm��E��7�p��2:�\㋗e�ͭRp[6i���fS"��գ��{�if]2O��#�7�|�B��`��v�	�{{5dw�*�q�bg�ݕ5@���G	urde���&qnj=.�ő����"2y�8�|��BC��عc�kcg)�Cd��g�|벨=��1=)%��\��t�0AB�i��J8�X���&H@g�����`��4Ka�4�p�����Db�~���0����BB�D�x?^4�xД-�,
([\�(�SeYI��ߎ7��I,x�����a��ΊG���lFfep,x5_�7�{�V�L/�>ew�yz&�����J�_��M�({�}A�(ۜ3�����c�}>}���=u.�=z��J2,gP�̞�/�&��>3e�܅Zͫ|.�oe��y�7+~��?�����r��K��K�М8!��
w>�Jz�
�-�k׮j�$��0�;i����ko�H@ִ�8f��F�	u�q$;b��4����9s1M&4d-+�D��̙���ĐڱdzV��TP�oP��e�������-�H�
�\9�̒�C�SN�x��b�\c�	2�{QW��_����Z	�6��^�C�
�a�Mo�)3)��	��v℉y�T�&K:���!�X?(���2v�
h��|�#+�J?s�&��mP�z�3��`��E�1�+�<!��?FoX%)�E�YO��/(�����A�Дm�2�~Y��A	`Aq���@�~�8��9Zj��мlƪ��@���o�M�Zh��e�g�WO��~�(�����f��ܑW:"G�v��1�@�t��t<�B��*�m�˟^Ҵdߕ��w�m�-�eok�T�0W;�*�I�Ws5�P�̸c{�M;6��	�%6;�d2ԩ��2v������I����H��
�"�v"�Y��@Ǟ�')��L�����l�}���j�UB��7�g�3ǜ���ӽ̎�����1H�ح/�EW�-|���}e�y=���>�4�x�l��<��bj���d�#+��CN���"
�-�B�N�}��_t���i�`��Z�>G��x�#
s�+b^jé|���~Pv�I_��2;j��A���){�Ɋ�ʧW?մa��l3~�i�Fi���K�jw혉@���F��S�jw�ju��Q;�ReBC.�%�3��=.�1���4D.~zAe�&�)�}��m�
�:��1���{]&ɽ6�e�+���WL@������jpj�q��=9bR�h�Kp��	$@{��Fs���3��mP	����_V2�~�"��o��e�|m��g@SVL��v�����yԪM��#��oQғz����At*�D�϶�����VC����:ͮnAy��At4�i���_��
��i�15d�3�f�y̬\<թ��p�\9w��)@V�^�ݞ��j_�v��:�q�:��\j��x��3�؃���J3���\mԎ����UlCn�i���|�#(k{�Ƕ�kh�����rF��5�g�_���.�����U>��ϟ�	�j���4?���>>�y�{���2_�25����,�ݺ锞�f���4e������=nm?����pߛ{�V�$6����'C٭a�=E�׎,{�c��0�ʌ��0p���n��O�|
���d����e���fRew)�2��t����E���t��L�=I6�m�@���jY9Gы���O����{k����fl��t�����:���i2i�v�X(��1�ce�V�H8�V;�IE7䔁{˙Kg����;���Ƥk�Ay:�穘jʈ��3�;'RL`4K%����M%��N1y�L�Ǯ����!~P���LPN���L��a<�ț����+���M�1�d�
(�Q�O�	^�s��ܚ�◧�5��8qע,_C�|~P��@9)@���;+��g���޲�v��9�#�V7�v����eŶ�4ӵ{C�~��G�#��=�j�\ԎI
�Q�N�3�U�����\: G1U�ג�xҎ
�L�L��\]|�c��%o�13WHv黱���p��*�k��0�|�{��s�ɠ2ɑf3%5��
o�vMLA�����mm9AB��0�>:+s&���MB�9%�濹t,�3���.�����2o�-pd�h��x�{�Yn��_V�C|�u�SԔ��S
�
8�8?�;��c�z�<�V#���ʙ���:zʼn{W�
Bz������g��ξ�.��8D����A�p��X캿���c�:}P��=&�Νı���܅sr��
�#r3��Z����ӻZ���?6"a�Ym�{:D˜�Ke�깱�?�������{?����j`��fkR���O�P��T�m��5m9n�3\���ڕyM=��7|��c_�bm���|�@����-V@��B�,œ�k��Ж�Y������Mi=tR���fe�Q�}�`�����q��c�C�̯삳���l�_eGF/{��<D�lO~(���V2�1�,c(gm�.(_�sA
�I�}U4��Q;V���<n������Q��.��&���e����$t���s��;�Z���P��;�cg�qd"�P'�v�4dc����D
�\�p�r�;v1W#m��v��ʄflLB`�={ĩ��I�\�zY�n�
����NPvh��̜4����Д����;ow�㖩-�5�W���b/��z�Ϗ�eXG�F���D�[
mO@�{��§�3�K��a��k�!�-Hy����x��{�vd
rAm��}�F��5+`�5_��6/��A��7|h���`����F�pA���?���	�
��c��z.��`���o�U������p�2Y�DyNg�r�́�h
m��:�#Y?Db��T��xo������@��m�yYw��R��n#�w������W�j�3y�{�P'P�%4g.��5�j�s�)3��w�j�\
@Vg{�[mL�qC+9|6\�V���|'��9$�BZK�5��=d�q�j���i�P��I�������X	���O�a�f1���0�}����b!�A��=�K���0��J��:zY�25i������X����_��fujRtA�s=�-[Z4��
y⾨�_����Z��-���@�u��P:<�%4����BL�qn��>=���x�1�����	��+�ˤ$��0}���B+����q���8�]@6j��f��wNH��Y����Q�Fs5Ot��V뀬e��u�I����4���\��Ę*ӹw0�C����vB��f�d�c�vl�[��\�;n���<}@�W����ˤM�$�d����<O9˪T�
&E��+�@�ϯm�+�D���6F=s{ȉ!�幯��L��
���P�`eʦ���]�Uݤj�X:�?Ú��er4�ț��X�	,
�|��e�!5�mr������Z�O39��)Uy="�(w>�2��6q\$�i������y�s=xX�d6.��r<��A�~�Ŷ��zf*33�(�+�3����s������	��)U��v"@��L��	����K���

l����\���dB;��]%��d��̥œ\�ջ#�V+g.jƚv�{VS;6d�2����]��ܮ�1<�yޱ��"��Ն��/b����ON"(���TZWR�;V`�4�
����(M�YeNNX�ʝڲ#K�y���C���j2UeiB7�YLRL*��=���ˉ����1q,���_V��*���y=���$��r3L��{�����ݥ�E�l�a8�WV���r|�YGf����F&�s��`�~�nKO����Pg;�H*����bQ�߷��r$��N��.�V�F��x��&��>�W�
��͏��n�G��LP`�;����D���H&b�%�e%���Ї���9U���5��J_T
�
��
�ή�l���W�e��oH��9�3����Ԏ�d
���td�k��C$�������޼���puzy�!3s��Su�1�4cƌ9&�Z_A>��v�3M�gz`/]*����L�Fs��W�lS�n���\E�F��ﱩ)�1U
d�ז�߇@2U��'6��5�C�3a?�g&��W@���^��^�J�����x.��ȞaP��X&�
��9�=t-&�%�i�m���rPf��^cg��ON����[�$�i���6��0Ә�W^�(�C��o�E��T��l�$��xK�e��n�3�J����"�Uk`�=Kԁ~
A�R�6�޲Y����7��AYw��f��|}s�j���v�!-%�>�<`�Y�W��8ȶ�P�u��`)�-��
���14dc�L
�y����ɳ��j�.�N�ظ�P�H@v$q���\�c�IP;V�̸�B낥MHcY6G6�(�햐��d���guf'
Gj�Аu@κ*�eZ)�J��+�A9&�=v&P͑ʱr�w�����Θ�x',E�x��뜨x���I<
�aP�����DA��
��{�=A��{b�X�	�7��u�z�c�SP&��-o�u��L���iqP��-۬9<���ܲ(�F��t��I�3.LX�>a3���1�y�,�(s�,.�x�"��w(��.d-�F>�)GyF9�|+����EQm�=VS3�n�p�M�r�@�%��f;�к���_�a:�W1NS,��!�T"�q��2�Yx}�����
�/ͱwl4WG������{lr��I��:��ȥ�1��wD�=��D��p�C���j�3�=i�*3s���Ž���ɒM�K���Ț\Ng.w�`�Hה�5P�sNMjV�I$��Qr?
��sCL@�[	���r��q(��,[T0V_<à����y0����3֊���0M/�b&��L��A�9�Y�-�B\��aQ@8�p��8��c��n���~2y@��#(j���.�y���0a^���(��"�O!m,���W�)��o��؇��4g�p��n�r�@�֖����m�x�w��+3����?�NN@��]P^z�ui|���	-�i���1��su#��E�A��@��D'�&�y��J���
�\�@Hv��\���w�ҌU챥�z�1M���{\`m6�q���8]J��UC6h�d:x��8�[Дypyt_��)�iy֭]-WӬ�ġfEOk�+9�GxԜ���k4Sb��?�"]�O�}�A
	��N��_	V���r��(��f(��a)�
>�Kj���s��]�����^u-��r��f�S`„ǻ��xO��A�7x:�[Cv��}�3ʺ�c��c���୥e�n_�_���;��Я@Ӓ��fE�þ�*o�����c�ڱ�������*�ѻڨ!k�1�8���d�?6j���\.�\�v�p'o�NʻZiǚ�Z7W���̵�����EG��krʌ�S�-�wjɚ���
�,��	1\/~�L�ܮX!�SL��Z�<�#�ڻv�U�+��a⻋g���D;���0����`���'<�~ߍw������ձ�ʄ"qV�*T.)��8X;��m��:�ۼ����:���d���(��e|���]��n�X���zO��~P�9(S$:c1�mu����A�~�l0j��0~�
��|�p)y:��-�9uq����t�2�h;o�ѻ��+s5�
�c#�T"�ډN
�y�M�.�j�ɤg�ѻ�q���c�3��U�L;Re=�˭-*onZ"#6��k�9����L�F��	ƈ
\�ѳ��<�����-#���,&�����Y��d����g}�:�=��z�e֙��B�B6|�)'L>�ڮ	2:��(�ޕ���"��MDܣ����r;'P��n^�g�j�eq��������{��|e�d��,�u
e7B�=9��A9v@�Ɋ��Nl3�{�b��4��@k������K�m٤Ž���Z����,����\B�h���P�Y�S�3�U"j��c7@���eԎ��:�y�ݵcc�q�u���ˤwH7ɽ:Ы�L0���
/���OCS�C��n8���&h1�ྮ^j����/�cS�ճ�x@,�c2�_=�k�d��(4��v�Z�&z���U���^l�rbʁs0.�Z�ܥ3�Mf
�W�r�YP�/BB:y�?+>�������:�c�	���(fOm�&ʣ�_yɻW�ʱ����Z�9�Ϙ��g��U!�0W�B�q���r���`�ܒM*�,�%qj��?v�=6"�1�Iw�bV.g�j��C��Q;6=�	��Ԏ�E6ѳ�q��'�Xi��N��c5c��vlu��V>��4^W[��Jk�Gj�JSP�6�����z�\v�7�$��6k��GK���]f��tS�v�io�Ϥ#�0��ЦX19<�}L�(��!'1~��/;�vK��˳��^�f~]B���db�H�zT{�+v<���ڢ�2>f���/��Us�"]����e��3��*���=t�w,�a۷�!)�_���xoҼ�3���ы%��b6о�}��	��7#xF�������3��ڋS��o�G�?v�2�o>�if��`Vz_�۵�cv�+tF�E�Ե�)���Řd���NF�K��%�O�oͪyG�d�yV�▷:2+�3o�.�T':s�D�@��v���	�Z�����`lf������3ʌ�S�ý�I�5Ŭ�c��Z2�c�<y.&�;��L�Z_^C�s�Nټ��\L���Eg������;G!%�с��
T�L\`����@�)�/����{�v���	JpO��!��`�\�k�N
����0�Mj�O=,*�gn���>�m}�����X�uxǪ��7ױ�-~gV6�ە�9ʤI�0��q�y�r����
��ɐ�Y�?Ž��
�N�]s���.�s���@y?��	:=��7����z:�J�6��Qe���!�?skG��.�¶������	��n���X����bf�Z�-��o�p�|T��ӆx�tIb<���6B榢d����ʢ����c�ߡ��}h���(|�H\���w��X��	0��4:�\�\%Yu�Cɿ%��wRi2�"�AQ�dҙKe�����rۋh���\
�5��<��3�c�رw�s-���f�b�j�TqM	Y�g���0J����Y�\��c
����t}v�W�'�w�Y6��R;�:�V�F�w�0��3&j�vd���L��I�&��Ļ0_�L�@0��t!&�/�m.�k�{�ma�ɏk����A����X��}�)����k:B�z�o��V';�g����J��e6���Գ<�)��e��W����h�<&�A������[h�<\Cn���"B-��1=(5zR_�\�0��jE�xd.Z�^SQ�賝���:�6���sx2�/��D)V}�~��`�����v�ט�[X�r+�K��N�4h�>����q��.�����W��
�o�A<���b�w����
_��j��GZ��j�JCCƹǻ+;��V�4l�	�:љ�k��d�su�<�y{
& �<f��3g�� 񖙋�j-)���.gSdFM��Vr��
Bz���{����^r�O�N&��F
Y}^m�=�Юp�ׯ�p�9���
7�`���M���W�Ӕ�K��:#b��F��ٍ�$c
N�,cH�X�X-������A��TDp�oϪ��Y�
'{�g��	&f�/c���¢��;�+E���c��
��z��+5M��<��e�3�3o5��
�`L@V`	ȑG,*@��dԐ���3�1+�f���d��<�aC�q��D&��!ͥĺ��=dc�Lc"��X[^>��,ڼP
���=vq抺�	�?(��V�--�����k�gu2����_]?�xf9���%���Ε���AS�*/o/-�';y?Չ�jg�1��Ǧ�q�3���N�����j�v����w\i2�l�'�m��ǎʑ�G$��v���_��s��K��'ӶO���	��~���А]Υ�n�vf?(?���_1?��s��@����D���(��>&6I�-9���1��\�����Վ3�j�ju���v�t���j7�jOG,zJ�o]fiR_��/���ܾ}[���YŽ��#u�ޱJ�B��kf�M{6���5-������vE@(�i;D�CR���~�9��@�8�Ҕd������ʉ{G��0�=�:iy�u0V��j�X�Oy��v���P'�C$��Й�Ժ|2o�l�d�;w�8A��|��
Y�w��[[�Į��
��!�Bz���+��MoI��U�}�hj����g@1�����o�s��?�x68�f�5�ʙ�ȡ��K���H4�t��e�C$��c�:)@�@ك��{�Q3s9�X�vL2���P'�14dgf�
g.�i2�Rej��8H���Jzd�����Q��o�ɾ�{��ƒ}Uz�\M��Zk+ʤ��ds�f��QZ�k"9�{����
?(?��_?��s���@�Ik���.0Ͼ>E�e��ؐi0�F�:���\�4co�Ncc�LK@6zW#]��P'cf.�DPn�Ӝ�>
w��մd���'epH_)�:�4\[SFl,k�����O#��bi��!9C��a�v�G���Y����?��?��s���@��I�e�$�ftA��Wu�佣�}oZ)�5��-����N.�N�kڱuf.��E�v����P'�����c&A�q.�r����5e�sgd�E2e�x�vt�<zPӞgm�.5�V��O^�d�����p�r2����>���W0��N/�=(�{a�.)���Z�S%a����j*r�?�/�g�y���
�=W]��]<��:PPPE��v|���Do�K,(��*�?��vIi����J���j�;���wY��el�]%T�|��g{=2�M�`��qo��^g{��^O���S����<��3�~�ʮ_�տAo�K��6R�l����6�%��ی�b}<՛߹��d��
��2��	�e��.���
��֤���c]~!õ=3����45��.��7�~F�;�i��2^]{�3�������xu���5|y��c�9G�9N���$
��%�_��5�s��^��xo�,
r�>s�w�e��c�G����b���:>�̍�_�qo���z�9�<]�y�%��:ʝ����"�s��U�^l��l�G)�D�s��(���

�V�|�2#v1G�j�1�<F�L-�	I@�p'��\��Ǧ�N4Wo�.�G,�d���Ԓ�虹r�M��"7]W�ESV�^|��͛7��Ӳ9t�l�w��s5���i��N��]0V
L vd�1k�ח���~V�3x��w�qp��w���#�9
�$���UA�@_�n���z��I2�9/��`ճ���&��^��L��&
�{�/@�@�@o�\2v�J�-���S��
'��s{P��\����9��ol��w=<g�~��;��_mE9��qb�"ϘX"�K��a���F���}{A��Y�\N�g_�'T.j����i����I�]
c�)���7N`o�;���U�<L����X�C��5��".���޼�IW��$�o�>}b_�o���
5J�+9p��B��M�����wO�cr�E
��p�7�r���-��F>7'k.�YnG�=�	��@��>�2	X���O�̬�k�;3\�M6\����?�y���|�k=�g���ᾨ�"��5��IPg+9�5T*�8־�O'@#Aڡ
xO��c����[s��q�)x'p�=_�(WA�_g�Z�3>q�dm��l��Yφ�6�[��NK(>�Q"@#\���d�����<���V�~W��m��FJn�'��"����Q�czX�8J���?��ԙK�=V�,*��Ȏ�\d����q4T�ݻ���	Ċ�g/���–Ȱ
���0cs�%��@v8tydj��e
�
f��⤼�;�S�Sc�g�x躂��(���4��{'���y��
5�j�P��9��"p.1�v��ESč׍�����Rka�n���;��/�����;W�n^�:�	�.��a�J��W�~
�s�7ׯ���Exg�	�Fp�<�s���2�%'5q�`���F������V���︇��P[C=9�YO.L�|���	�����M�:O�6�r��[��[��
g�A��r!b��Ho����9�w�/')j@�>�|Y��]fXwg~u|n
b����Xc�(�[Ṋ�6��g.
�f��X�5
�7֑u�d����
����/y����ɱDž��|�o��E;��!��6�عb����z]��s�W���=+�7��7����<Ӫ����
.ލ�)��zq�Wq1C
��K�\��^;����b=�
�׫A\��Q��"�|���u���4�	޹�c��}�9��y�e�<�l�)��W<�|�>��@}���K�=�}l�;��q&r��u$η�{YO��P���|ȖnV��ܡ�-Z����r��R�ti��/
�Ԏ
i2�ls�:��ꤜ��کNFg�M8f���#]��
���
kI���,��\�p򴍓�ƍ0+p&@���O�&����<�=���D���y
���B�AY˿��8������LXJ�(���M)\�r���y����f2b��
�$�w�ԖLSk�
.�r����D��*�i�Ԋ�c���@9?>spm��U�g��Sֿg}9Q�4�f����8A+���N�;繺�_�29�l��E��'P&�X_NJ�
�)uy��y����×/�̉F�I	:�xPf���x�ݸ�u�c'<5�A٪LN��cM��;M��#�s������i�:s�I
�2$���d��(/|O��b�}��;�4.p	���A�'����\0�
ʥ�i��L`k֯��I��x�Kݩ�`�d�s�>�����7P�׋iAU�w�w+@ژ����
�)�S
�s\sKB3����67_����xO0f����N���?Jj\|7
��Kg/|R�\Ê�(��s�uP�QZ>B@?\,D�=�ր	�Xt��|���e��9�wkf)�ij���e����@x�W��\���T��4�Fs�W��
���Z��{���e��u���4m�D���C2q�yWe��+
�:t�=�H�v�)��Xu�!���|j�wA<@[
O��k��=�M�N35]3����^�˨-h{�x����rՙ^���	�W��@_���P�
�Ḱ���	ĉ�`��/��2'|���m��;�Ms)�K�,�w�,������i�l'��
�
��ý���?
ʴ�(���eWoStA��4�A�YM��@��L0c(����2Cywٟ��
���
�e�Ӏ���xd��m\]P�s��u�e�r�v���ej���Gm�&v������I�կ�4=��똂�9�A��LGe|���
�A_�3�C��3��%�s���:�_���B�V7ǚ�s�?y�3��6j�ד��]Pne�{|��qP�-}\�,�rQB�3�e"
(�O7g��/�ʼڲʁMm�&eِR�|�P�?�%��U�<����20W�ֵc-HyW��\�c53�#�Iw�v��:Q;��wl�Hg��s�n�v��#�XK��
�ܫ2I���dŮ����r��I�y,LF��ҫE��@��	�F��
P��N��VgW��>�/������
N��@���	Dd���U,�&��re
M9��
w'����+{�A��4�
���(���k)�4幜���)�l#'r�D��J9���[reN^�9������
2�+P���agEe|�Ww�
ֻ&�}���)(S��_��}*ȓ����w��h�z�}e.��_M�'�z
��4��{e�
�ڃf�����23����Mv|GY���r��a!D^Q���B����4�[���.(��I~�jW�]�2�B��=�A�&|�2e�"H�+}"<��c
�\0Mq�/yeZL��9�ƅ帗�D�5��5�y��w|Qk�„[pd.���\�p΢�k�����n��xP|g=\Ʒ.��l��JC#�}�{��
�r�
蜤�.�2_{0s��(o��@��	��[�K�-����F0��
ڱ������dOi2=�:9�8�\�����:)@κ*�v�b��A��I�	.�CFK����꼮�\�c�cW��
�a�)�O0A�5e��EA���L�W�wA4�q"7:>����p�(S��D�s��_
ԸINg�s��� 8N��A���>'UQc&�q��
�4-Cy,�(��t�q���
�s�� �f�
�5�'��tͺ�n���V���LA�}H����zݽ�2ͮ�Z�Wp����|���2G�P���9�=��q2�␚������(3�('��;j�ܲ�	b�����{Y���<(�ǽ7pfy�蘯Cq�'���g�w�\��
�S��Z���L`{U�R�v��8�)(ӄN��I�L�.{��+֝}��PD`%U����v�k;���C�Q��Q������XI��E���
*�{.f�A���]Pf�(���g��(s������ .
ۂh����$��5����ߎ0��b'r��{�d鯯I�����
�f�=M���`���M�xq�"�k�d������J�<f��eC�S�O��4�ud��g�`�����/8�)�p)�*��T#(��#A]A��hV4��B�#W�@؜�a4����0�s�;³
���4m�R�DM�}|�qb*zA'O�0D|�s��
���y�0>sГX56�Ήl�
P&�:�U��)�ϥ��	�;�׿W�rF�9\�oq�ue֗��Ɋu�FM-����&���2��Eo?y�X��7P�Ħ��ww0�狦LM�rB-�m4
�λ�ݓ��ɜ/ʑ�w��Ls��;M�Q���)3YAcA��7�
�e֛�k�='h��E�~
�L�(��ql���pD|V�Ls<ƔQ�S�6��2�^oX��E��
P���
�N���i��x��c3�c�Zo>�3��m�2�!�W�D��5O��$�y��)����\pN��ׅ��dY��
p��;��I&��ru�ly��=���)�\u�r�2������fh�#*ˁ?wˈ��$_h��	�[9���wlt�����"�ry4W#3����x����ک!��j�/�c#
{<f���"_<�U�qdR�Ƚ�Șd������	���EV�n�$4���5�����}�Zʚ����Ǖf8ȹ����S�@��,���렏@*<A�rl9zdi����^��D�rdSf
����G	|�$|�(s�@s��wN�\Ms�v�>�Y�2W��Bj���ߑoԦ��E'$��k|ӟSPf���}����&Z�������+-^_��)��)3���5.z�ƿ߂�ap
�[�{�j�N��;vi�����ɘ:���	l�
2�@�.r�����G���5��
/5��w'(�:�����n�}K�]�f3Y��Ԓ	vN��K���<�3�;���y]�_��m���w���o��:zq���Bs7��E��=�2�ϸ����M���A���w�̭Nחm��7�J��$x�KК�I�!n��F8s����,jI�xV�k���n`l�(��8����J�d:zeZ��-�/hnf�p�ྌ�8;�P�ʚZW���Q��O�������]N,ڊツ2M>UAA��[yUl���ɗ��+\j��Ϣ�L9e�	�����E3�r�
P�ʖ�]�8W��AAܟr����\ŷ�d�̪F�?�
:�����r�GfL֡�������$~qk���2��~�BC2��E�&����@���<>��<�s�a�	P���;�P�cԔ�x���`_.\���I�BM��f='(�mn�߹����c�����2�o�z	nA\�9c[���\�Q�)S�<��|O�ڽ_�~wKHlh���~:ʧ���A�
���(��> .v�@���g�,�Qcn�
�s��m�(s\S#��q>�ŋ�ǹKB
A����/�4MY/�c��*=^A�'~
�a�N��G�B��O���[t�9�T��L]	�s�|��2)q$��M-yB�ӑ+��T����3��S��q���c8s1�X�;ֵc��J3V��Ԑ-5�����Z�Ayvꊢ-gZ�b;����X���q��Z#'EN.��΍6(��B3�'F�&JoA
�a�@c159�3��#v5eLN2�ڊ�ھ�9	����͚��	n*�Z�{
�����s��<\��8��YlLJ
e%�rq��`IS�'?�b��RNP��$@q1����@�2�Tq�OM��w5�M�2��Q�4<�G��B7>��iZW��2��Z��Z����{PLA���j7����&�#(��릅���Ps5�o@�.�	�M
�D���L���?��S�/�����BY��L�ϩA\Q>)�4a��ky���FP�X
0wqH����Zj�A_��݈��u��'���k�8��N��^4��:c����Ņ0�@�|�|p�S3����1V�L-|%��_��L��u#JV0|g�)��ą�Vy�����D�^���t�de֓�b�����:L���I��8��HV+a`�7_�
����}�!������so�4�����'��tR`C��d�{АUܱ�;v&���\m�	�vHi�1dMS^�b/��DހYi�Lc�d�sR3H�@Άk88{�3�L'3-f�q@\QNq��A��	rF!�h��E��q�8᳎��h
,Dm�W�|�u���U��GS25Q�����|0N�
�?M�|�Ǡ�^��4�Sc�s�@Wg�񙃉�k�`�+m�+�e
en�����L��:���
��ϭj�`��1��������zY��nL�@K��45�=u�D����k��x�����CTp�m|��D��r������Ɔ�S���	��@��≌�9A�o��DK��.���^�Ou\Cp��;��u��/֍��a��Q8V��`�x#(P4�r���������X�~Se��\,{��(|�F�����Z���5e�<`y����.nei��wj�c�k����Lʶr��,�
���Ǟ���'�;	����h��h=���z4��g\ppLPyP�����_K�a-/�֟��w�יqM���2vᝋ"�mZ�8�hݠ�ܣ���*)hj
/��4_�КW\��|���β5�t��\���^�ݝ&u/T�"��K���0����d�&�E;���$
i2œ������{�n���F�@�@���C�y����BA�
�/�j�fB���?��s���3�����叟*��d�2��br���W|	���p.v6���f�,�;_�ޙ"=N���NJI�մ�	Zӄy�"�]��\Q��5@;�w��Ԟ��-����Еy]Jɲɍ6:�Ϻ#���)�v��lSK����R}��/5b�r�2�S���~�9�瀟v8�	��=�}��I77y#$��g�)lu��?Nq6pU��I���Y����sK�sMe�o�eޝi���2�j�u���=�Q�w\W�V#DI'��(+>g5�2e���>��
�!��H���i$﹌��|f���$��eҾ+y>�T�PXʟ/$e��2�qh����/��:+H���2��.u�ҩ�W+](v��բW*\-|���BW�\.p���[K\̵��砯rn*�U�Mž�P�ZвW��2pv�[���n��=��\_�eL��6���H��C�5~�9�瀟��Y����5�vܤqR'.?s���2qрNIʤ얤b�.I*��];���uIȫ�3�k/�$e|;Ŭ�R���+�n	\S.��Fg���c�so�{������ɲ�ȸ�Cd��>2�F/|����M�_�"��w���;I����w��}w�}k�̺5I^�5�c����OG}9���Ό����[}������;o��U�{|�vy�����˻~��6�����Z}S�o�o��i�m�>m�mЧ�W�ZU�P�@�T��K��Ҩd��
J��R�x�Ku
4�P3O���4��Z�W���R�W*f�y�l`��3U��r�jWKe�z�DƊW�d(w�P�RG�X�\�K]̓���ܠ\ɋ��B�)�aO���ϙ����瀟~��s��rh7���IEND�B`�images/admin/rsticketspro.gif000064400000004122151163531650012331
0ustar00GIF89a��A�6:�/s�k�b�Y�~�w�̔�˔c�Z9�.>�2L�BI�>J�@K�@�d�[F�<���&�A�64�(���>�3Y�OT�J�?�5�ә����<�2e�]Q�F?�4C�8V�MF�;P�F*�*�,�!�҆"�=�2%���᦬�`�X&�O�D�
��"�1�$2�&B�7�����\�S�
A�5Q�G��ʟٚ�z�rA�8���A�7U�K�6�-L�C�Ł�փ�Ж@�6n�f7�,�Հ}�uL�BS�I}�vB�6I�A����f�]n�f>�3�υ&���ո�����x'��ۏ��y�㬑Ќ��3�(d�[����Ø_�U�Ӥ?�47�+6�+���b�ZC�8?�3I�?L�A-�!~�wy�q�R�GZ�O��ޗ4�(8�-W�O�وq�hL�Da�Z^�TD�;#�4�)(�L�AH�@���������ʁM�E���S�I|�t��ׅ�t�mT�J�۹�Հh�a������ςu�m�
+��ϋ�ԃK�C;�0\�Ta�X\�S2�&<�1C�89�-u�m[�QX�O_�V.�"O�F~�v`�WC�9���������T�J�~�wo�g0�$g�^5�(<�1q�it�lQ�Gg�^C�8R�JJ�A.�!Q�G��'�N�D�D�9[�RG�=F�<8�,�լ\�R�֢V�L�Ԛ�D�9�?�4���!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS5 Windows"
xmpMM:InstanceID="xmp.iid:F4E7BBF66F6511E189DCEDE00DF875CA"
xmpMM:DocumentID="xmp.did:F4E7BBF76F6511E189DCEDE00DF875CA">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:F4E7BBF46F6511E189DCEDE00DF875CA"
stRef:documentID="xmp.did:F4E7BBF56F6511E189DCEDE00DF875CA"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!��,�ʼn�*G��#3N�m��`.i�ʀ�ЄI�̮S�Pٖ
N�\IPM7\�7g�x�F���D$�rҴ��tHD��	eM�PcV_>����ije]Va$��6�ƜJ�AZ�@89+�b�
.���y�G)��#��Ú?$	�F-\�vȈb��Y�@1��b�
S�"���i�+x8�Q5'��Ee
��$0IJ0,�"K�c���串��1�)A�fH#?��p��fG2`$�M�*=h����XY*�B;images/admin/rsticketspro.png000064400000026156151163531650012363
0ustar00�PNG


IHDRWD5v�tEXtSoftwareAdobe
ImageReadyq�e<,IDATx��}	�U��WGwϙk2	�O
@QA@6,�"

���"����_<Q��C��������,ry	��p$!$$�d�陾�}�{߫z]S=�s�	��]]�������Y?~�F��g
�,����ء��Q��2�	_��g��M�$�{�<p���=��=�9�,���_�^do��Kn�s��1ڎM�JLua�={a�W^�Xb�%�}%�8��v�hg
�;Q�]j°~�@�|�qo[s�g��^��O��F�?ķ-�Xb�[�CD��h��8�o�կ4E�,��b`�h97Y�!�hp�x�Ul��h7��j|c�%��(���B��2�6	
��P��i�]����m�`'lp�.8	,ے��1J%ъE��'z`
�m��#�u�Xl�w�p��.�oc,���Fc�SE�R�˴��k���)�88���>E�ŜhD�EQO��jx<ӤUt�}@������,��v,[�%^ɻX���#��Xb�e�(�F�m-sb�Z�[�%7
E�粐�础�c�Ze.-�/:��J�e��L�l��΅d�k[	�6�>$v�T||o|[c�%��\opw���RvT�&�um��\&�l^�*2V�B�Z��&k)۪b�b;7b�K.��8�3e�U��l��'��́�t
!@���] ���b��Y�}.�������E�[@�>�
��,�;]7!_d200��\.H8�
���
$v�q=e�[�ZL�S��K�l�8$��E6Xd�
X0�Rwr}��	������}�ؙ܃���K,\�$ڟ<N�
�����B�P��t2����8��?�+���x	�@�#��g�F�>���]�V+�w��=�%����:�~j�i'i�$v���Xb�e����D[#`Б����j��1A��/-Sn��%`��|b��pb���*�,#
��c�u�b��dö�2+e��q�tf���7Ψ�iJ#^��%�X�����R��e�j)�C�=2��.���
�H���"����綶�r?@Ÿ* V�J�U3\+��d
C��p�6F8I�"��������P���[K,�L$p��G4���oXs�<�m�l6'AY��F��`s2	��j`��t�\;[�``�(i��d$
����)\[��j��ԁ�G�-��v�K,\��V'�@&����.��	Rm��&&R��V����ԌU⨭��%+����Ek��F�Y�`�8s�|����K,�Lp�Y@�2	Y�քY���;!�
���X�
�U:�����	�v���f�vp����L�d��_��>��7�ٝyh>��m�>q�u�-�%�X^Op=C@�G}`%��tUd�Xp9	[P�
�v���d�����Ok�?����7���@�	�-:?��`��Ysv[f�;��IG6��Xb��ה��K��AT��:�����[�V�X��kJ,V���3g�����m�]�3�S��BdY�g�`�*�i��;0(+L:�ȼ��+�^�A���/�u�����%�X�S�#?~hx���5�h
����h�I3V�W�%J`�X{���^x-�<��ٰ|�
X6i9,jZ
N��^ؑ��R?4&�E���_ſRL,�����絛�ud99����>�AÒ�zV`���d~�Xb�e�ĺ������M��Ju�R���]�����R�5��aWd�tĿ,�¶�+��q)�:�t8��d8l�J��jʶ���D�Z��oau���N����PL�^��Wqu�*G�@U}�U=�(f�{�^�y�N}�
��q��BG).YK,���#�˹��DŽ���~�	PX5{��Յ�b;t���E���V^'�\s��B�N�c
��e��S�S�g��`���s�O��}�`z�Ea�$�A���*�*�
`�d��
T%���/�c���D���^?��%�Xƛ����#�cr�‚+{�vP�;���g�7�fe�t,��|g�up����~�Rn�|<��Qx��e	���ֺp���j��YG�}�K�p��}�'-��c1_�����dv�*�"�.����b!���<���m��]�m��}�+Z3��-Z\C!�X�G�6�^����fp����W�����]�0��B"���(�{���Y��*'�W{��KÏ�������/��~�*�ԱRN
&%'A�IJP����@��g���;����|�o��5-��WR�UF̔���
�h�Y@�8�(��Q��%Ix������Q���E�@h!1�UW
P�&lm�h����D;O4�1�ZJG�p�K-�*ڎ�c�E�:��c1)��N�����D�$���$b�cE;��qP����GEK�p
�T�_���f����uF��h�����T��������Q*�e�����!��4N��	
�j��7aI>c��I������q�1K���������Z?h��@���h���b^��˧/���?,��P�Lp�}o�]����+�j�@T�uQ�U�WZ)�{cU�,��`Oq
�Z�՗�u�2��Ho�;�y��~-�wE{��������}�}M�o��O�s��c4�byc�4Y��8�:#a�7Ѿ3��:���*W:d�Ұ����.��Ӣͨqd��й��"�~�mɨ����_��JI��R�Ul؞���:��l��X{ڲ��:ѷG�|�P!�8gR0��g���;����<:�I�\7���:8�O'ÌE%5Wi��Բ�J�.���*;���j�ݲ^��4.�?y`c��#|�#8S�?)�ǩ�2ľ�R�,Z�ƾS�P��c;�b}�z3��x�$7��{��@}�h�h�y�~�Z�~C�wl���Ӎ�	z�Wc[�a���Sӓ�X���*��N$��Bې5>j��j��/b[%�������a]�E����D����E�
�!�BW�\�ir�%�?�$\"��c�dSA�l6/�b�@��!dU���7�s�SKT�����%X6m�֔V��T	����G���r(��,|q�����]t��t<�ʽp���y~�B���+�l�Y�[�$ث������U����i��V��{x���tb���S�_}�����*}ԉ���^b��O�-C�L�Bۖ�&���ym^�p|1��Tb(5
j_�׷��9Z�$���
�������֟��`�	z�q�1�7E���h�o�ɻn�:J�
�Od@�-��S51*���������u���N/{�[h��ZN�C���^��;��d�d��_Y>i���*�K����Ϟ�ַ=%�����a`{�]E��XF}W�dL��wo��כ��+��zP���`��!?��6,WWh�z/��3A�%W4Y���g`��;
n�%��
T)�oUV
5�i�����p�+>\����o����E3�'��/ݦ���L��L�褹�&����1֬��.Z��~m`}Y�5��+Ul�����-�u�����ˏ&�b��|�2j��Q0����J����u�2Žܳ��\��K�j!Q�V�
������\��oT��%'’֥�r��=�<�i�CPv�0[�e�շ��V��OPJ3H�N���6�7���RC�ӡtk*��{,H~^�~�l��D��'D�G��������4�z��T��wvı	}��.��Q*k%A��}�V��ؤ�U2�D��l`}2b@��h��2��D���H1Ğ���s��q"
��yYB�7^��I�2�|��~0�5��ܢ�T�~?D״�hr=���ю�s��4�Jf�{�/�?f�R�T�\V�`�)7+�\jh5�g�T�iʮ��M+��Й뀖��)@+�P�UH
�LF\�i��a��j�ON�[��{WC�FH��S�Y
�
�(����6W?i��G�mq�����žҺ1z�:*�7�켚la����J_�J����������ئ*�n���������E:7�����GH?>�kXL�Ӕ�����l�&����(��#�̽J�*�T�e����ﻳ�3��L��`
N�߬�o{�~��%��"���@y�%d��K��}�X��Wj7�ca��7���r.���<#d��W$B�Wz������&�����I��w���WQ�F�~�k4�ri�hH4@{�҅��jmh��U����Q�ݸSm`�iA�X�c��T��-K����VZ��U��>q�f����ކ��J��I:��@yw�5\�
6����t�Q�/�Զ�'S���1����������k�Z�c�"@�5��n�����<'��Z/�b�9���0s�H�I�z�17����v���P�+:�>K�)�q��_��Lh�,A��UẐ]���}�DL�ߖ����0��!c-�2�U��*O<Ho����
tLX	���`�	���i��aS���,Y�Ńl1+�յ2.�rղ/���ޅ���Vր�R������.0�|�W6�M�p/v����*�a��4p.Ll�!b�3�	�K���OL�VÆ<@�l-��
����k��0b�#��B��*3��m��_Tx�*��TӉ�-OT�[�T�j��#cf�z�|��gʼ7���8�j�߳.��%�J^y�S��ܯ��əōTTEvT�L1#��0��s(V����[4�Z�bJ����ٵ�Y�e�w��-uy`��*��nRR��KIL*Ik6�[�X�i��ZA-YEj2�e�	2��D|�c��g9bWh���ؓ`��i(Y@,0<��5�M�hO��)��j�bGi[g�?�o"�i;w�����j8��`w6��Y�?C�~�rO���^�h�mp-��1�,������k�b���vC���|O���d�R7J^)p^�S@��c=H8	hm�!cg5���y&�U��U\nVl�S0\�a&��>�^��;�i�ݼ�*tTE-9�#}���8��������5g?�"���z�0���_��"��
�X�8>R�O��v}�—�r��d�y�u��TP���ߏDLH<4���8�Q�3��7!SkF�!K�s
�Z�
f�Ǻ�$�c_��2�����t���/���]ؙ�!Y��Zfc�����;�VL?~}ν0�n��i��E���4A�C]ź�DP�*����~U��A�B=a`�V��h%�1zh�R+����y�쇦���P�v��"��j�DΘ:)�I\?���I��(�+	XG���Pf����M21]�e�Fp�n��ڄ�;�g�Tx��2��"���On�],��K��<��c�P��
5�5p-���?��"�披�(ּW�s&�j�%T��"�vc5��L%�u�:X8e���Z(�(�ˎ�,���ν�l�b�BK�4��rL���EH�N����2��ԛʭǾQ9	�/3^M���Z�@UZ�Rp�U�WWa�x��SC��s�d��BDz��2P�����ɡ�F	�Z�|
��U�E
?�r6]OXZI�4��;h"�8�׳'J�����U8���=��z3�]m|M��x�Q|רc'��Z�)�\=��0IF~vԧ���Fşײ������Z�e�;Bg(�����v��U�����J�E��Ϊݶ�Qd�7��x�mg��/�ruT�kaG^�g�8g|o�k���l=��??���TQIp0����1���*�}�l�g��zG#h�;L^��<��@o4%'m�WV�}��0NV'���?��O_�v�e6���I�VAs@-�������#�8JK����L���9]�SHW�bA���NEV�K��K��T4�1�:�U��g������'/9	�һ�Sa�4��0�R�V�VD0��S�*��%�7-S֒j_M2�^1.�T2-���D��#'�&`p���i�D��]�B��[�>�^�Ɖ�?�Wy>P�!��O�9e~�54^�f��aLĵ��A��
�UH�'�S����
�h�����4K��S���
��X��V0�k�אSʉ��	}�bP�J2�`�cAI,�2TVX�xY/Ë<;���j�v�/��3\�A������^:o��	2p�"�-��]2,���}�=ue4Ԡ>L�m(���yz�5�K���am̬
�V��"�9b�"1�a�R'�*����+�U��yYhM΀&w�Sү�J��gM�0ceA�?7��ި't���j��4F[F?�
�$����zQ�r]P�[���s���b��.�E��m��(դDj-V����,
��-h[��v�><?��N�ǡ�	\7
�ﰸJ{��B���}^*��
�~����9�16c�+���'�q\64��jfl����W��D�����$h6�qMv�b��e��5���4��dV�����t��88��2�
�B�G��lPCV^~��cgsEfyvH�@�jF#���j�*����~����v:Oض�^�'�n��,"̾ŠDO��y�!��%��,�sL;F��=#P���!�9�����܅�X��3��0��C�T��0�E����E��>"Zf�s_21`��/+�A�G0W��
y��܍��J�8U�μ���]V�����3�B��ࠑvE+�
W��ʘ�_����jhٛ�SnF��95��ձ�Hr�)��u�D+����
�a
f�,ދ����l�;a�������<�]����S&��
VZ���y�CɇI��8�V��!6���Й_+N��N"�
�/p�LN�z��7p��$֒Z=RYM�x�%<��azt8�G��*D�it�D���˯5��~������Dnır	��C��K1�X�o��/�m��z����ME���W���1�rF��ٶ��a��Y�	��`�Wa�2XIcxx򻊛�y�$��Ƣ����U��K`p��_�p��ۺ'��#B�C�}e��#�F���\]��:3��ðd��Sfs{�LX$�Z��g#�U�Ad��FC�4��[�eSOT0k�C'��]I�J�v�2u5�jr�;-�3������`Iխ��(�}]^~�����L.������ڃ:(��l�Q�+#��/�j�`ٴ��p�aV�[���!+ô,[�b��*K{�o/>GjEi�%�Бp`��ˆ}�I3k���_��*?�L(Bt���ʧ�/�PQg�T-=ʎ~vpE�k>AXk�z�%@.�c#��p��SI��m7.D>�$j|��cQ���W�4��&�+
���!d�{�6,�kL"�4J\�u��ڶ�w�����f�XRŰg�Wds��v�_��e���o��
\��ޭ�����Y�X++^�#�fc���XH�L�z8���BS�;%��2��!]<X�K�U`�Xw���I�l�?Sl+m&a<Y�i@�U-T+�m��T���=��Bx̣Xs���Z���7���az�1��@*�o�{�!��Qd�4@V�ȋ|�A�a���쯵�ݐ���/6�\�ih,$G6ȻC�o$;"�s�qͫh��vHS��̙1���Azv��_o�p��At��:b��A�m7��ס�*SB���@��lЀZ^�Jn��V@���R3?ʸ4��o\?�z
<߾	Λs!��8���bN&8d�5�_�4���>�-��,���9�Y���[��;/����M��R�g�~H���GM3Y�K�M�9	�o-`l`��xWĺ8b�|+D�ё�B���j9�7�NO��:������l4��'t�����ի#9U��W}�@��i@��f�h@tl�^��öͰ�ab>��G��J	#U�Q$Aeg�a4�([0'?��VR�ך9ڮE꿲����)�������viH����с?�Ek΃U?y'<�kܲ����f7͡���Ys�VX�v�`zc�,�}�-�@g���)��/��4���	X��LSi�~8}�,~���"�?�y�~��L"����=�I�G��Q>�5wM�����c���~bc�����6k��2ο+ֽ}��g��
���)�l�W��L7
qj�o����H'Nt����������긮�~ڨ��@��Ve�(��=�S?/]]
�=�=�j�+z�Kef�S���b
�u��3��}�^Z{K�%�3%i/zE?~�Oz`�{��c��Eg�I6:�^ɾ���}#Y^;����*�|&b�dRk�A���0�dsXc��aU�f�0�o�q�i�8�&��w�M���iZ�}(���s<i��d���p�Z�';~�@!*�?ʶ?��XTj�_�sYĶ�4W�D''F[|�Wϵ����F�2���~�1�NҖ��z�*��GE����R��$�S�<��1�k��($KPh+����%�6l��)�lwe:%p6�&	v��"���
SBY��(`�AB��_v�
�?�n#�Y���k�!����90��E�\:b6F�M��������f��0�ǫ�c8q�/��+	.
�׊�e�Q����/U�{,�:jY���2ҡ&���j5�.E��$\���3�$�[/U(hih���ð0�d�e����ңQ�B�`���}��릈~��c�չ0�HR��W���;��TR�)t�l�5�8���׃�����6�ys�c�R��~ȥ�l��5�Ɨ̂@�wt�S���ق�R\�5���q�2�I�P-s^�R���|ơp�i߃��Ɇ13��7y���W�"|��oÒ����k+7��ƫc`5�[�ȶ���`�����'��R*=
�����ÿ�#
h�XF#�I���^���$.i���5�l��^|�^m�>;�r!ח�W�(LK-�B�,DZ��V	_-���Z�~�
9ӕ;�ۊʞkf�:��+��ES���f������|�
e�
A��e��h��Ns���[��L?���oy�>��T7�czLeL���F3֬U�%�,�lk+.�ҳ;-���D�W�l5�
(�����ղ��)�`\KPܭ�L�5���6�\Pl�=�΀����\!��n���_ɾ�l�XY������#X	K��}]�A�S�0�y7������������%��d��`�9*{�%�@k��jVВ�٤~Sl,�b�9���2��)I+�R9�Q�B��5Z����n]
�I��΄:�N|^*g�<V�*�#�$��w�k��D*hG����X�u���k��َ�Y��w���&�|l*��*��,�m�v�A@��-��`��V��d����4#�]�\pP3T��\e��K�`����U�Fx�}���x���7rW����X����Y����
	`yO����3�Q����̌�E�9�҂�%ч`����\�/x
Jp�e
uIC]����T2T������F�����X�	�F��Xc�%�qW#��X��%^��~rJ��A�r���d
�����dFqV
���+�����(K0��ܷN�u	8�3:��Q�f�`�(�<
ď@,��2.��
7���K4:/�&�dr��H��X~��٩&�,�B��cT�E�#��z�
pu���d�Pܪ�n��P��ac�Vu-��yr/��}o�;`X�Xtŷ?�Xb/q�Z1��i�-��|�[��Z���*M���\D$����w�[,H��Z��Xx1������խ�J\~���rA�z��](�z��?�����\����K,�gB���$����)۪T�h6WR�1-�B���2�Ǫ�Y�>=
��`��*���b�:��Ga�e	>��hƊ��ܞ��O��+-a*awl�%�X^WpE*�Ts�uSR���^`"���(���z������5�w�-M���J�1A7X�����!(#�H��x|V�;J�%Lǰ���K,������lM"��lvp�V2�lV�g0Vi���8��G���tp!�e&3�����bP�$�B�V�C�U���sC�х׊!`Ų�{�[K,�Lp�;�YO�<�>"�i��jE��-��#��j'3V)D�|��Q���\9�0�
��z���L`զ�
�'���6��.v׵���M��.g�K�`ū6�îb�%�����	�)��+��Ǟ;�Ձ;�&VZ�`��S,C�1�`�R	��^��$��y�:`?L�f�2�˃%���6ېhu!�D���?�<��0��`�����b�%�Xjgхs��,�[2г.�u��e���ּ�����d�K{����)#~�2l�ܬm�v�)����}�nUFu�)򊗙��WbF�4��uO�����^9.݁�'{�3�Xb�e���kA�S}лA�Cx!��{M�V��imZ^�;�A;'@Q�[����Y0����Z�6!��U���۽^�B����%��ʶ����5���W�.�X��Zq����K,\���{}=k�w
l��nrZ��!�y�c%�6�,�E0V��6�^�	ۓL�U�j�u6�-������w�]���ͼ(
X�W�P����K,c.�Xtҷa�lM+�>���l<3571����25����������O�R,�`M6�L�����g3w��������z[*)A�/�����\��?�Y�-1ͽ���
�6��w�⺷%[�v���	�&��u�����d���ꭢ-U~�����sk2��̾\X�2���T1���!��K,���UK�����}7as��٩���S��Rs9�����N��`���$�5A�*�{i�����)u{[
�J��6������q1�����M��H�Xb��o\M)��]�g����ꥐm˵&&;Y��ut
Hc�h���P�]#��=�2��{�o,����&�F���z�^��!���ak\���s�R��b+���~!�+���s���IEND�B`�images/admin/staff.png000064400000007115151163531650010724
0ustar00�PNG


IHDR00�`n�	pHYs��~�
�IDATxڭY{t�U�g-�q-�r֬�,R���x��"��\u���:k�z�"
��PZ�nӴi�&i�ͻI�&i�}��4m�ȣ�#M����K>͊����Y�o�}~���9�KY�������͛7CÉ����z�BQt0�dH�0���XwO�[?	\�Ō��7���ǎ{������bP��x��!!
(�tiiI.�9rd���۶m#@�������5(�$d��ABgaa!11��g�ݵk���^{mϞ=��	���+(@
�0�a��e�TCJJ�SO=���/c1�/�UBj0�!��3k��t�z���۟��^xa�Ν��C�e�������7n=ztÆ
X`ǎ�=�܎�B
&0�9��
Ch�N'�߲ej♠
��e�m�'4aC���JXu�����k�ڍ7�;
�@�nݺ}���]�`z5(��I��	Q�k��P(|��G	4���~���Ç��#""֯_�iӦ����!:xy8�I`�9��C�=��y�G""6�ٳw��
[6�����<t��#$�ɠ��!&�j��[�ڼ�0�!��d����~��X�vp'��'�yc�������;�t0�dĦ��}�f~�~x�0�!��dmj�@
x衇�����j�G�����4fƉw�~�O�f#�ظ)��_��o�{�V�IWE�t;�Yuᥝ��pr�@�u:��?�a㦨�6R;^�:�J���$�|L�'��&��迋b��oo�����%E��0��^{
@ı��Ҳo��͛#�y�Ϗ�$x3�Z�.���t�yx&�)��Z�p���7�z�h�}2"�p���w�����ˣ�=�k^�!O��a��>ٔ9�B~7w����N����k+�Ikp{kc)���_�ŗp��{~�轷^�S�2b�z�H�%qš>ٜ�m��Z��6��N���M�H��c�	���*�
����@���W�L��:��}���6F�`��ˠ�Ә�f��5}�1e�.q�&~�|n�pj@��S��H����*Z@���%O��]��T��k�
�2����1K�h��Ѫ��?�N����Q~ܣ�hq�;�j���9����L��O=�zU��}�����C��C��A�)@��+����N񻃦30��w?��.�A��}Nw�~��`��=��U����_��/��~ޫ��W�qw�N�a�`��p�J
�7o�9�W�,C<����o��8ٻ\·�⃝��t�#{�?�V|�S���pt�wJ�w�����nU����g��_�w����z��'���C�&��\k��,������w��p��E�܁��K�_N��.��v�^U�H�����L�������P8�a����cjr�;��ٮ(f�_�`l���}��}�}��݃��+�ژ�+�d����+gE�����pX��Px������Rf��-m��VE�]fj*,��k���?�R�h�G�3~�����|���[�h�[ػ
*Z��Fn��Զ��ڵ��6<�mn��̪�����Dg���M�+14�
V��Il��ҪV[cM��d#�us+�W�y�j�njd�h�Z�%�v~�Ef�I�lRSSq�MYe��d�z8_��������,6ijxe՜�jNY
OS'�5��hST�:{Z=5��f
Ǭ�3���X�e��.w�$�f<E+�`�S[Z����R�M
�����PM�ĸ>;'�T�K��b#��X�41J��j�<HR�"��;�F�}���!Wg������������y�����VYU+�)�[�ں��VI%��44�N\^}}n-ߖ�����
Js��<��"���F���]V�+����f����ѷ�0�����)�wjʋ�k�0Y��T�e�v�W�o�j��@a���RE\�'��z����
~@Y;����PM.*&8b(���*���7�M6dMou���...2??�vqq�}Vos��-s��`��8�Z���^l
�i�������(��_���U֫_�#(��)R���Z��^�o��j��wjiqannn>(�`8�QԴ�M�H.�����Ѓ�A
�HSm��wc���ba�.�!��*�x%��H*P�Y�nu-��[�zk����:���}e�k��*Ѓ��B
��4��J-���,t��d�-�!NaJ���9�l>�IC��(�@���v�h�\}@1;;;t0�����
E�FpHVi"��
y�rR�:�[��Q��di,	�u��&�
���r���i,yW	�r�{�>�����-�-��Iu����pS��	���
I9���/Mg�<�)�D��ߛ!��G,�0�&L���Ҵ��L$NP�+֢*i��ܩ*���>�_5um,U5@3K*�
5�&�,0��Q����y�.�'���λ
�Wb���żL�_�
�d�ae�T9Ej]n(P��H��S��0�Pf��9t��*�S�:�H�-(��ʯ2$�4�jQ��2YVn���PCqٹ�82'.�{9�(�.
�#O�5O���᪫}�)�̏��<M
vMf����7�{��
Ux)Op)�w>�ɐh�VC��D��J��f���s�	�E�?�.���櫈��C�'�8t0,(6�����$(�>Mg+SYr�#A4��d.<�K�'ӋBg�j@�?M���_�,�Jʃ��L����N��P�H_&7+���@3���&��CVĀZ�:I�+4�%��"��ł����Y����?��f��}
��Φ�~b�#s�)�UPŔ��d���V�����36>VP�`%�P�’%�4���.�p�g�P��+䳩ԱI諸^^=���E%�O�g�L$�N��I������͂��\^B��J`��;�!��*��ƽ�IB���4�Ǟ@�"�Kb��b�M+�>��|{9;:)w`xlU]�[uiLx�'H_]L�.�LQW)�1�cH�
<>��:@Ĩ�l�&'=��|�L�
A'
M�T��)�q&��O%偞�q����ܪ�g���d��I<��
����h�O�?�F;�Q�/�=P�$���L�(�`H���p��"�#�g��,�*�Tb.|~����$�H��0Z��E}�ƍ��~_z<6������e�D'�*�
��D���U�i��s�,�TĀ́`NiJ�9q)�Xlډ�<)�qc�nEM�í40�o0W����Ĝo.eֱ��'�A��u5�#׌�&�6

������ܯ/����:��O'�s�ES��B���^��n�����wwu544���x�
;!��A;�B���e�4(hC�1y<>;:�!�gS�c2�W�̔|6�'Q�����:��O���7��m�_-��ydd�����t47۪jju�
�ެ��$JuEuM������t0�$^AAc0C&0t9pWpN��?��p���=:KKKp�+GH������v8����0�WP�2L`����R���/�\�s�KGő�IEND�B`�images/admin/statuses.png000064400000007761151163531650011503
0ustar00�PNG


IHDR00�`n�	pHYs��~��IDATxڝYyX[�u�~���˗&��i�N�v&M;�LZ��4�t<��6��x�`�`�
cc�c�H
	�"�	�&@��?mHhAZz����a;���{�9���9���.Q�׸|>����,{]�~�׿�0�-2�E�E<������P�+j-%+���'�q�i��1���Q!Ep�"�
����ɂ��sHV��3[�}��A���PXQ�4n��6��L&�J���)�p:א��gsY�E���t�[K���8�zEw�e��|kY+�h��^�T��e����+^(�,w�7�%��"���g(�s�
y|S�Ȕ�1d��'����gwQ�Ej�����`�K���w-/
�jгqO�3���"�m���k(��s
׹�k}��>wV�3g��ٺKS�i��P>�-����75.{\ASy�S��*o����͝���7���s�%<C)���
�4�AiLU��Cu�GT�ʄ1u����܄�̸�K�6�=3�>���D��,:�Lޗb�z	�����y;�&9-^x��ߜ�op�el8��<A��d{h�]������h�{��
@���Leʨ�Ĉ2��Lb��[9�����Vi����^`!�z���>2,�
0V�hKf�2��C��+��-�F�l�J�����썠`�0
�^��Y�(aP? ;<�H
�om���m�HL/�^�C�Ď�K���5ųڛ�+=�h��pE�
U���"�Bl"	6ix�`(ȳ���%��'��_�+��C�Z9����\aL����2��8�s�~2O_1�*�֔1I���
D�&�7��-��M��
S�ƿ�dm��
��:�`l������H���%��-����Jb�&�D��y��Ax_h��S�F�r�,e�l��s6��}��|��|������������<���k�+�x�`��'�
0�
m�q����9��8����U1�~L��q�ob2$C����c�k,�
������6���2�
��_�3?��88��t��/Kn`hJEl����,��̟[f�������ي���s�ѮM��Q�	���/!rS&��L���gw�M|�0��
}^>�v�E�JM6I%���
�t"��
0�Ʃ����7L�	�ވ�݌�����q��,��W�;*�u@���O�J���Y1��\5������O�Y����+��dK�Y��˨^$��{��v��5�O���緇>,�}P�5��zl}sHu��)
��4>?M\��:̄�������??��b�������[Z����u��C���沋�߫YW9�?���¿U?�T:�A닛��5H�F�������9K�;9(.�f�o
~x���'(��c��Ӱb���
3����%���������ɗf�v�k'p�n����5��%%�0*4�Wi�V���E�=�y}���#_��_��}������-4���Y�#>/Ry�՞�(�~��gvXu�n0P>�U�x��mA��6�$��6
,���fϕ���j�{E���Q����wN�=�ײͳv
��_�{���̎����+��>n���V�|�
�nF�en�caI�ι�M�Rx������%�{>��K�wK�I��iѵ�X{7��PT��:�����4��T%^.������2�UT~y-+�|p+n*�c�
�SP5�?�N6����_e��l�e��w�숴�k�Y�]H����5f�\�QĶ�>����H�Q&��n�x=�X�l>�}��}�8��m�ֳط2��g@�~u
��n���*{]@��	��5��@��d��g�U0u�����W\6�l�5���.�O�Nf�.�P�NE��,�Nc�9�����u��K}����+h㨦xX�&s���F��1�]HU��@tzB����<��sw�ۧ�Z�/bƳ
I_&5�4�����S��Nj��|1�*�,�h�F���d�Y��,p4	�J'w���-�P:\oh��Y��n|�8�2���x�sÑ��+������d��PdzS�FC}퉾Y��٫���5�u�����ڮ9C�qQ��*K�Z�U33=v���%����_��C5�ſ�L�y��A|��;eU{5
��r�F�8�ר�D�����)\:@�s���K��0��]�c��P��b��r��F�<\}�S�ž�ae]W�q<��V���m�B���9�r����9�m������A����z6=����?R�v�G?�ۀy�9	���Y�v�*��w���ض[S��cP�+��J�(�.�k��u?�4��\�z�����Ee?18
o�Jy#���F5�z��0�'*eYP\]�D�t�sX��9n�U�rT�|`V��Y�J)"��nݼ���t�Kö��w�c�*U~�Ks��:d,e-��Y��4�N�;���N�-�,hZ�tv�g�B�}��ʿF�z�9��G�Q’.*a.��u!u����uuJ�|f\�4_Y��0cx���-�5ܣ�զ%�s�)��=>��.3�@K�/
obB��	�1����,���^�����-ے;�]�M3<1]4
/��md�
)�G9�7�%�Vm��\>��
JAp��mn�d[,�@�pjDbr��
#��	�ts�)8����R���a��|+U�T�-hm�P�o�}K������	��|��-��xIV��E��&�Y���/��_k��A>���)�&��p�Gw�G�h�L�[��	Sy��rxW�C���Oj�qP.m�)�,�VEK2����(��y�+�DN�<��U��t�����>K�/�Z�X�"Ih/��`Ƶ�%�C�����8�iX�T�*�����&�i��8�Y�P!.�x}�"��&?��|C���T�5�N��';5�H���m�	3g��-6��9$����?��|�m��*�Jz|��=A�$�)DM
A}��=�(z@���n��ǻ�$�@P
�sL�(��M!h��c��K=��i3���XK4�Cʈ��B��@[kv��R�5�:4g:������V�1��N}�M]/���F�s�e1�`�@$
�WǷ�N5�c��Is���vb!/V/8WV��ŕ�@W��>�^�FP��)O�{��(Vq�E~�ߪ<�$�W��l�F��R�HgӘ��x��m"��3�Z��XEِ�v�T5fhf�3�e�Y=b��H|��������:Qj�:�JmS%�q(��f(%��Y�VĢ�k�{j����M|@�A'��{�<��i��b�i�G��
��aҜMQ���\��p��?(�8Ʒ�p����)xUR�"�L�0�o�E7�4A���1��о��
�x�`��{ꥉX�~�0��W����v�n���q�?�D�LK�Z�jEIX�1��8Vy���^��F��6@{��d��C�H;k$�g	��~�]WN�2�?t�2�"���偕��#=�R6A��J��V$��h`J�(7A{�|�%;K�W=E�>�|W%C�j��XEn��F?\����{C�����i4�>ҋ�juy����
Ml�P��(#O�*QСFYL�t�dm��k%�6t��!��5�T�U�����d���"�-�Ȭ�
=�ɇ$��.�����p�,o�'`AiX�i\����ڔ�K�lR����]����$V���'a�HR~�c��r��ɍ�
�"����JS+>�$K����V�����m��v�E��r���:�Cu�M��"Ml�A���(z���Vx�-�#MhJ��F��Vx����Q�f1��#���&I"Jz-Kh����6�RP��8Q=S-�ّW���U������1Wmm�������('�	3�+�[}r��QY�Nw��]-|k����V�f�'p��B��pW�����3�K���v�IEND�B`�images/admin/support.png000064400000006252151163531650011336
0ustar00�PNG


IHDR00�`n�	pHYs��~�\IDATxڭ�{pT����V;N��S�ZQnB*�KjE0��P�"*��D)���VQ;*���ʭ��t��l�$Y�	I��
	$!��u7�Iv��g�^�;��=9�	�~3���>������h]^	�������3�\���kyc�ц�n��n�����踨*4�dh�_�~[�X�����PSSөS���򲲲�FcJJ��P�I'C`��[~�F�m�(L
�A��V^V�������_��T\\l6�����
M:�̀��I7N�Ky��
Po��i��^HMIM��(,,���<�|[[��b������t2�f��Ў3w�Ky�
�f���?�.c����^����҂,��t{G:�3��	T
�J~)���F�~I��떴�L�o�Zz[Ӛ_�V�9�����Ja)1��&���a
pH��ZMb�O�w�L���7ox�8���o�hv�څ���}o��nE3���}�5�~��	TByP��
1�Q�	d��4�Q�	�Lk\��%��>�0Q����th~Y]a-$Z�*�a
pH��ZȑZ1q2ĮbuOUoOV~�o�_H��K������_����;�UڻI>_��O�<+��=�*4�d�08$PA-�H(�]�Q��|���)W�ZtkSB\o�R���=/�^����۽ѳc�k�3��v�������A-Th���a
pH��Zȑ@H,����_]}���Y���&���O�9�\+���;�M޷շ+ɳ}�`�ބ��m�ù�zsEeaAAnn�Q�P�I'C`�1�
��6�
�r$BN�n�L�X����dN�n���u�_{��
�C�e&k���WV9���sŜ�%S��
��U��,S^^iii�Z��!0�@�
ɡ�B9!P���L�,�Ֆ�߯��>׼r�-9޽+���Ԯdś��npV�I�q7���ӛ�w�6���{�&�a��@*>�JV�l�r$BQ����ٜ��^w���x����
�?^�}�g��5���i_>�̢���\�s�:>}/(\	Fm{�J�,c��@�*��	��CT;2���c�dff?^�����|�/�����O&-�L����Iy�_�?�Z�������#���8j3��	TB9!�����H���
{��=��zb���WV������stt�5��/�ܮc�
�$!�(�cD�[:''��;00�)PN9�u����S����5ؽ�C��7Nr�
aF@�@�W/��z�"��H�DH���,;;�������Q��$����3�]��b���T�{]�/D�}�*Ŝ"�r�"���
���ȭȪ���"�]KYe�15�����иe�j��*�\e@B!��Bi(���MOO���
�!��\S��ŏ0��H��c�-��!�
B�!�E�����\�K�g�ل0c�����\^���e����Hj��v"��H���D�Z]]�������>�O������e�7b|�@!��W*ȉ!�.���/��@����8w��q}}�`�|oD�*�C��Ӥ�”޳g�C!1e$����Ш��2g�
pH��PL��r�"�a��jnn���jkH�
�����r����I����5@�@%�6��CiYC����{���<X�Z�Ǔ������|��+����?��!�
B-�D9D�Ɓ�s��FH91yĀ�G�.���	Q��d|��6SfH{[�*���&@�@��9�!�E0|R3�����б3��UE^,CNׅ�w͛h��SokcHM�5�1�a
pH��P��H
��H��"��;�9��գ�P�	��C��Z�Q���i*�{�$_݉�M��$��
�p$[imnj���"oYY3M�N���Vߗ�_~����-�,_pS��+��Ň�Z����_�JcЎ1��!�
Bh!G!�(��ib;v,�h΅�����Q:�]�|��3ѵ�a��w5-�\z�O2n���{�����Š�(��҆�@�*��vȑ@9D������BS��̬���ɎͿ�~BƸM�t���g�/���k��n̜|Չ���N����|�2C`�1��!�
Bh!G!�
Ť�ڏs{���eZ4��3z�_�z�i��2O�=/y�zҙt�#�N�\tK��+������q���
M:�3��	TB9!���@H{u"9޹m����(�gZ��_�o�����|���i�K����=���~錒�9VhLIa�f��
M:�3��	TB9!��G���P�3����<��0s���f^|�׎-	�]�<=僯p�g���t<��遲�~�gΞ5�ͥj�B�N�0�c
�L|
�
�r$BN�������֦��S�︾v��k��ʳ3Q��eŧ}[�<�=�W��&L[�ӶK-Th���a
pH��Zȑ@HՊ�mٱ4�%wN<v�k�φ¾i���޽�}�n��C�kHy��
��P��ܝ��c
�C�z3ZȑiOݹ?�!q�Z�g�M4ͽ�&~V˚�}��o<��E��1��#��sT�E�׏�F
�C��B���8`��&���œ���g}���
	q���;2���6�$��N�
�a�
�6�{��>�?g���s6��ǥN�����$����b�ن����C"�1�`�1��!�
����#'������U�d��ԃ鿼9�о�egjj�������
Iq��"*t2�f�D���#b�q%�m"O��=0��4����i�.��l��<��V�P�I'Cʗ�ɨ�4��!Q�"����DEH�Y��D�y��s�����n's���AE�r�ȑ��4��B��D�N�R���ɓ

�6�U�:�r��Ŋ/��y�3h5�u�T�{��R|z挱tp7�wvv�0���!�A-�3>�8Mb*>�1w�mW+�bB9���)�#)E�,�h���QqR]��'R`ǿ�QQ���T��y��y�����4*B1�8:�̑�$GN�K������U��c|��%x�"��
���K#�IEND�B`�images/admin/tick.png000064400000000777151163531650010562
0ustar00�PNG


IHDR(-SsBIT��O��PLTEL�	�֥��R��ԟ��c�
������~���V���`���k�/���W����߲֖��}_���]���g�$�渌�PP�
���ݱ\�v�B����������r��[���\T�
��I�׃�ߩ��\���R���W�l�%�Ұ��p�5��΄a�T���`���8tRNS�������������������������������������������������������em�	pHYs��~�tEXtSoftwareMacromedia
Fireworks
8�h�xIDAT�c�Eh|C4e6Tci-mn3Y���X4@�HC��RF`k5y�@|a55~�;���L�X����}U�K�u$%%吜.o��ć�EQ�����89Ř�1}���&���<IEND�B`�images/admin/tickets.png000064400000006544151163531650011274
0ustar00�PNG


IHDR00�`n�	pHYs��~�
IDATxڭY	[SI�6�����gz���Q\@VA
�"����l$!�-�HHB��%	���œ�J2I���kQ>��֩soݪҟ���NOOI��ξ�`
�T*�R��Z���p��b�F��z<
�B&�����F��S�����AC�D������=<�;���{���5�0>>n2�&�=��ޞ�|>T��ֱ۬���
�����'��V�1F��rB{���S�>�m6էO+��3��]��*��7��'�E�M������N���*�.����lɇ1
țq8޴I3�)�gM=L�|kk��}ė=gwC��,�$�0�A��^�"y�,��hƫF��bh��
���7L_-j�l���/�
�l��N4pxx�OZF{.o8��|�ާ�L⫵��^oN�2�7��5Ɇ<''0�V�18�W|e.�ë�>۴��K�E���F���
�٭}t@?��?�^��=o��צw(<X��J�Tqr|3帾�?T"Q����(7���D��R���OŒO����KMO�-,�/�kKE�i��˫k�bey��\�)�O��ֳUSYm}9��_1D�jE	�$�-�P�M�8�S3v�K�Ѯ��#��I��s��2�-��;???��O9�lS��5������#�n��`�՛+���q:��	�'g��QC�P]�oNe���Jj�T��N�ݩLk�,v��"�OOO�t����Z��hc�ёJ������zy�,F�V�����i������ѹ�9|��N/�`�h���J�)���Z����,
Pτ�
w�@/���D"�Z0H�>2�C�r���
��O�N',�B�^�����������{{{�
]���\���J����D
PW&g�	[����8�uT�@DȈ2H��l6�A��NGGG���y�[�/���T�<1C��Ejc��b;~J��,I��240�ݘ����K���>S
!](��+�c0�AJ��c8
!��K��hh|T�^F�{���C�g�ɍŒh���*��)Ő=�?R�gLi��=mH����Kc�?E�	2Z'sx#E�F�����j��[����p�B����
1D��א̒ET�Di-}XnXe���C�777�:��'��,���"�{AmZZ]!Zb'p�p{����)��3$Lk�":a�—�
*,��IT9�����0Nm?e�f5M�|�9n=�y����s�p��zJס���=��1E��B�i�M�2BRt	-�C��zD��3o�s'��`��g��y.c2I��Y\�k�>�1
C��'��,f"��F-^_�e3�uc���b��x�>��^o�!&��eu��0��	Re�U|*�����xlC�	��zaa~aqi�f\��	���+�VVqD�q�Á������-

ȴI��=�&7v�W���/�D)E����&�'��W�B_���D�3nom��	�3�'<��l�"�[���!�*AR�4��7a���IQ���9�^ul��+�UU�Y�D=$�_\9v�/TmB2?�G�/�D�H1$H�?���I
�จ-z�٣eow{g���-=�leLKS�|�Z�:�s>1��!�
�ٞ١ȗh�"�L��Z�
��{΄ɂo�;;;+++���\Y^Yۚ��ݵ���r��δ>��h2!��؄���#C��W���zYb�e�����=��0Z�\��
��	�����"���c`�D�Jq�}j���ϡ�	�AC�!dmybuT�*y�5��e�$�<�����P��w�2�4��{9?����4��M�yVqB�?a(��?O4F���Ѓ���j~lY�:N<$
b����EwsN��17����d��I�ܪ�q�쬋D�B�����K�(��r�>a]������+mә,��	=www��e������Բ<���9N�����Q�j~~���^��W�"�4�a�~��R�J��Fa����w���—؃Hy
����[˶={v`��<�i�|��/���;�7%~d�>m�}!�P��~%�Ae��w-Z�_�ЀH�
B�
<.k}�X�93ҤQQ��b�"")�I�@O��6a��7�s��{Ea��{nLI��h�|�izp)s�\s��ރ�5�0��<��]�Y~��#U,�h�:��fvQ��I�-6\o��D�4��#,��+:c�;�mҙ�$�H����Mv����l�>�ޕ4,�7['w�7�[�_*����P6o$������{e�w��C>9��?��K�6�x��d��'�#?g\=�����B��/����z’�^���3[�y���vQ��`���nzN�Ӄs9<<��?pZ��fƊ{�R�d<��4��a6�^�����MVܷ���	u��Kb˹1�Zo6��&���I�R2瘙�seM�#�,N[ݠb����\d�
\�!�"���R������(�s�x
@&)��ِ��ż{;k�O�=y�r@�7�pWG�|7X���L�lqJ�}�҄�!�ܫ��~�|�u���Ky��W�$#Cr�ՎUC������b(�A��>����r@IT�8��6]]O��{��T�uZ666�9�b6[&&�SSS�
����6pE%%5v'u��
>���Pl�f�ZSK��B�b�Z�è��DB�A��fp��ϣ3�pKo���P
BV�q�
��:��]T—=�C'��'LBFJ��PB�(��?�F�+a�*�^�p�U
r�E.qG��G�̂�Vzs/n��[�~���J^��b��>/�?P�R�|^��q��50�V����b�:�,`��[=�7a�
E��
U!='�8P�WRٲ��H1)���3�xYm�ؠ!'���1�
�f�=���ʒ���wmW�����G1�rb_�s9�g]Q��_l�N'|�*>>�⧲����@����W�sf0]˫�������7��n�f�.��UX�MÝ7
1Eh�1E�Ŭ{o�Jر%M�%�ߡ�<(myP����QY������q����Ǖ�J.N�1��
�C�p�
Y-�T���_��e���Q��Ϝ�__T���e�o�5����W��Wu��3/h��u������|þVԄv���Fqˍ��7ߵ�*i�]�~�]ǝRnL'��{����{^,N�U����7��4�4�Y��-�O�&��w鍒T�0�)z��1Ei��u�Oo�"�)�F�S�I��$TO=H��$Ϩ^��M��ug4u?gw?o����,��C3ZOf����v�C�stC&&SF��b+�-�;�KڝRΝ2.%Q"�������{IEND�B`�images/admin/updates.png000064400000011644151163531650011270
0ustar00�PNG


IHDR00�`n�	pHYs��~�VIDATxڥ�w\SW��淋O���[W�����uUT�Z�DE�2e#�&��F6��`�=B
d'$	��IRq��y='ߜ�ɽ����{�Ɇ�����T�|M*_{y��s�tmN��P�|��?k��~���
š��ڋ�:��I���C
�L�v	�]sk�y�@v�L��[�r��	H������:_�Upč�e�<ia�.��īc���9iO�d/3s'ڸb٪\ŵ��=��Z�dU�U��(?��bη�斩")K,c/��K��e90֒���V)"Y�`�nRTL��L����\y�B�ӆ7hT9��p){��0ĭg��]��n�dH([���cI����r�hutA:$\�]�Y��D����1~�0w\
V�-�Z�@�-t�o�tx��9[�6r�����e�*i~��d��V)bلxMF\�
W1�ir�[�[��{�'j&x����k
�T���6�CqC�|2�db��%Ds�|1af�N2�`��-H�ER�iQJT�#雕tM/cyb
�6��
�ǧ�96�#�t��ӆ��A�0��1��"�pb��1�bϷ�;���R�R����12lePA����/�z�<�>�A���Xa�t����>����B�Jm�����R:?y��G��prƧ���\��<pD�R�^�2�c`N20�@�m��|QO��,T2�J��,�<��t�`ƴ����&d��VH��S��EE{�0���OauS���$n����ԲL��E���cZ�9�p
��"O��]h��W3��Y$]PB�ɛ�*�L�R�n�׳�����߽HI#WE�wM�}Co�8'�}Ԫ�߻c<��b=�M������yr�;%�M��<fj�����#�b�U2g[�B<ԙGqf˙3�ԩ����Qvt/ů�W,YQ5�N�
�>�pz�i
�@�i�=�k�yC�;~̟@	�g@F�$.`��
����@�]��:�B�
�l)u��5�9����&���R:7��J�A�)I#T/to���s���T�1�7�i�j�X5z4�Ah��oT�=D�١�=�������v��G�S����h�Ri�A4AuF�jXs�<a9}1oL��()��`���qI0�{6l��x.{�WiÊTq��H;_z���&��Lfͥ2��j�yc�fij}<���;�J�|F��O���	>�l���/
O��2�y���,���n�m+�T���R�߫�6��jp=�{_=���roڢl���3�ʮ'	$�)�|˱?C�S�Gb��d���W�wk�q��#��$����^Z�3v��J�L%M��@�M�&'!��tE��c̳�sy̥��>�9V��o�vԳ�lͻ��8w�;}�3��ؿ��G�m�:��k.�M	�᭖H�ih�~B٩�_s�M�[���&��~��!WܨW�x��C{�Gd����f��O���~̽m��:��q��J�f���M��>��zus��F�b��K�ŘO����̴/��ɫ��I�N�(~�Y�A��+ȶ;5��>�A��7<ɣ}̻��K�tS0���	�N�[�	Ct�
�b'�0g�U}}��R��-�wv��
��h^6������K聎�?�T|Q��k�5�²4�|��������SU�(cX�e�Fe��n�>��;�#v�GtŎ��H�
u��1���z)1�I�3�G̰'kv�4j\Ek��p$m�fc��������a!��l���&
�Q<�'k�kgh?�Չ����<�Q}6��|Q��2�Ud��ꮻ��f�>@f�4`�<h�g>h����:fd�q�����Y���9�6p3[x�)�m:gpg9�
�)���}��|S4�����L@'��D��_2����K������7��nW��t��v��u߮�2�%��S�,�0xN�L���}�5xȞp5����h����K�����f�9՚�PMτ��A?H�ӏ�E���c)@�3�(ü�sE�ư֋���%8��
�t��P��)}����n��3<��B�u��Fnz����_+�8`/��.�j�#�ƣ�����n1;=�����!��0��Ա�JVV활z�|�AA�QAӹ�&
����rh9�0�E
�hg�F~E!MP5'�Mn⥶��z�
J���Z/���j��j�D�;D|���0%��I����$S;<�PT�N\�^B��d$
;�Vu2��Tf-0P0�j�$�w��F|�����-��Hs���
i��*ِ�Ih/�e*�{6�����v/���|��f��m����8G��Cv{'}�
��z��}x����c`:q%��ezP�^"0đx��b�vȭe�z���ϡ��"�@��gx���BX��^9+��Aq���NAV1�
�o>��S��S�v��/-���~a��S�ڣ؝��=�����keh>��i.�`d�������vD��D�]C�z����mc�M��q��x��h�]��}3��S7�ȃ��at�[
���u�v����S�A���[?��"�+��o\���!;���'��
|��dj=��
����
��L?�[�1��]�5�Ϫ0�l����(dܰ(t���W��`G�LF���m3�0��#��:��5�Ph�;}.4�c�at�IFՉ4�<5ט���[mC�9F~���(n�g�N��]>ɻ}������K�럶7
m�_���ݮ����mvO��	�r/\+}�u��Uj/�(t����
���s���B��c���A�
>k��u�;E\K.�#��D*B?�\7�\#8�H����m_9G}�$s�W�L����^PuO����Q&���^Ў��l�}���j5�B������e̐
vh
7�e:��:R0��NO	FR3��
��kD�3�N�fV��d��T7	���N�j���gA�Y?����_9Fns���
b�_;Gms�n�dӥ��~�6��9����Q�����o
�Bz4�F
�\5�Ⅱ��pFh	-����;��&�
mPN%�f�˦�b���5&)������В��#swx@������0�S��ϬB�V��/��>���&t�U�'vΧ��Z�i�<X�C�\]�r�/�;���P�H.���*9A�ܐF~X��}6nd1����yxk�ji�<l���<���[�FI`ӆiB`Z�R-h��Bu��O�=���/�[n1{���m���͍�u?]h8���߇�_�W����e���
�l�G!ݧ��[�����Q�
���t��;!Q�/��k�%���{I%��k��3	�:���1����)�L,U�K����]w���G�=?�����n�x�[퉶���*m�֟*w��ٹd�u$c�-��cx!X>�\�:^@=ϿW���u����X!�e.�T�y,�n�d�]e�W{5~6��pt���o��w=����&c�͗�6���e��W]6_q��W]7_v�|�q�E��-A�u\�+ߣW���/]֩�NvΥ�1��X���+9^�s��d��'ń_���L�bJk$\��,i�̮L����׎)�ᝰ����sV��[o4�ި�m7��)sۍ�6�6[m2t��х�q��o��f�*��
馐�(N���#8�Q#?����������ϕ�\�Z���$�в&wʻ��&��v�$����mw<>40������́m����,���&C��f�CC�ϝtb�^o>��W�������pҸͳ	�\���g��fp��3K�KG�ˁ�;er9�ˇ��*�����u��eږ~�[}v���V������f��}`�(l6z~������/8}���}����P����
uN
Y�MX��������!ۜ�8%������^�X�/��$
-��;�X����y�k�}�[�__u���v���|jb���
ا�֟�l�`���__qR��a�aoi��r#\5iи�x�i�t�BHf�d�t���O�1C�Y���^�~xM!�T*�����Kq=����1�X}��C�!Z�����u�C����u��ם�_sV���ۮ��ߚz�
?�q~z�=�p؃�FN��_j���<;j�8�
�jY�	sě�t)�X}u����d��'�ɍݡ���"���^�cn����~�
9h�m�mt�*��8��S�E���	H��o�_��m��M���XMۮ���;�;H�P�i-����ym��F������J!��w�GV���!/E��v�z�;��;�	9�?�A�q1*�,�@Wv��I#ӆS�=7���tꄏ\ͦ��[:�/KV�W��篧wlz���	���l6e|�8:��*�b���0�}N��4�80@`�]�k���b�Z{��ĉ�1�.Y��r��nYv�5z#����y�+f�������W4/�Z^����p8t*eb|�8J���D	}��~Ph��Р�2�A0;+^Z����o����7��S5�"%ͪr�yM��O
��%��@T-,,���p�\6��4*]i:
�����A5�npɚb��-KČ�}˅d�{䠍/�L�0%�,��G��7X@-������D$/.��i��b
$8*�z���t�ɟ�J�R�Wk\�=��GQ:&t�L�����@o{�՟�a}Y�^��:��"bL��Q�����'����d'��3M�Ȗև���+���]g�ͬV�P4Ü"�2zI��QZ��Ǟ�,�����벿��}�+ua�"�,ID��y���Ҋ��+H�^���oӺ�����Ҕ�*�ޯ����!v��]IEND�B`�images/admin/user.png000064400000006124151163531650010576
0ustar00�PNG


IHDR@@%�	pHYs��~�IDATx���Y��Up�5M�'!�`�	cFGD�!�Db�ۨ1H|3�EdD��f�MQW@p�FQ�P@��G���/_�O>.��r�S�N�_�N�:��Y�v�������۷oߴiӿ3��A�:��Yb�ĉ


7n�7oޠA�|��n���c&|4�j�M��
 �۶m[�`��?~�5�t�֭W�^/�(P�l����&�E���/��{���ʛn��omʦ�h:#�
�������+p����e���3�ԙ&
��M�ֹs瞧-�0��#���h�v��d����n���$L1��
��/����_|�:Td��p=��]�t�C�
��2^q�w�޲��*2[F���s�kN���*���ص�b�����8��+W^xᅗe��C=t�]w=�z��qY�eSL�H�3�x�	|��G�w^�Ln��vE�o��
7�p�:\u
��+
�(�b���[f�8��˗��Ln���.��{��W\q��������#��2��A�(P�|�-��聑��,�'���{�]t������A3fLuu��!Cn���N�:Tڵnw�y�?2��A�(P6l�bܸq�
2�
��W��g�}v��gG��ѣ?���5k�,]�tʔ)O>��x�s�9.��.�x�Ѡ��ׯ�"�~��u��UUU1K�,�'�v�Z�{���k�b@���/az�����?���7�|s��<���AǓfmm��f����r�)�e�����;L�۷/@�V�r�ڰa�W_}���_��2a�…�g�W&s��Y�h���j�y�f:4�e�>��cL1�,�'�s��G}�믿��K�+,�����-[�|��7F�v�����8}�>��Ӂ2�
��W���C�Ǝ{�תC��͟|�z�j)hp77�g#�=M�f�;|�p�d��8~�xMM�ꡁ�?��i
�	&q��;h!�#ƽ�C��Y�?�ꫯV͘e��Ȟ={\A���?c�}��e˂���
�-��F��x6b�[:4������6�f�0�8v옋,Lo���;38��Ah���=Y����@o��m�Af����Լ��[�A.�J��$�$ij��ҡI�,sY(c�v�EB8�K�,ԠL��)b�[:4�e�{�WF�w��q���o��p$�R
�]���&���:M�f�[F�aN�8�k�����;���GqT(eȒ&�lĸ�th�7�>|��$�2:q�͛KVl�`�#ƽ�C��Yv�i~�X&��ݻw+���P�4�>�]p�1�m@�?w�\+�@1U�u�LG�ݱc��MEWD���3�_�|�j��bĸ�thΚ5�4�p;�Y�+H�ȑ#��ՙDqT�؎8������$^љ>}�ՐQ�;�\���h�8�`�У��Dq��hw
��*�S�N��$3N���*d5L�V�����d��@���Z�U5��������b�Y1���.z��bĸ[SR��R��	/Ԗ/L['
ީ2F)$B���1�]�#BC���L�x�i"�	SK3��Qg�e���|I�
�*JʢL6I�tr�mۦ���h1:V�a��P�3;εG�0gE�ۺ��\��D�d����W19p�]���cM(ܚ�[�������G�%�~q�Et�Ԧ�k���]]+�m�̙
ȜL�L���q+����O���ܷo�����݋�W����H�@ěM�ٟ�$�Z��"
�yf&QٵA
���A�WZ���F
�?e�G�^QH��}Q�����qj��'�+�js��h�RA�9Gs��$i�B���;�_
`��Iŷ�c�%�OQL\����7��;�I�آD�J�'��-F�}���m�duuuT�X��%���,L���]�>���}jN�Ë��|��]P�$
6�8��S��-��l�#�UB/�	}>���s�;�2	�?iҤɓ'����Pr
��M
=\
^E�K���}@�_�J�K/����/�8Pc3��Q���6m:T
^�t7ȗ����+��C�p��7n„	y�)�������@��kͩ�#���'�#0�&GUU�P�R�C�C�8������q�Fޟ�t�x;�ah�K�B��1cƎ[¡dC�L�2lӆQg#�{Y��D�KЋ#��&٨Q�^|��D�Y��#��"&ŋ����Y��
�%�:���@���9rd����Kr)�ttA����9���M5'��������hW�C�>���#F�x�F��,���~	�}�b��N�@/�<��;Ç/��7O@/9x�`�D#���\�ښ��Ĥ�@҅8�S)�Q.S�<���s�=��E���<��3�<���棑�)�&��t����ǝ*}Iڰ���aÆ2hР���y�8p`��8��)O#1�o_�@_�I�2zڲt*zDS�V�}[�~���
�%b)�H*�{ī��<�_#m���	}���]D���Ǐ�^O=�T	-El�@$&򤈀W2�I�z>��=$
5�%v��<Vdal�X�D#�ٴ�m��W:pG��C��,�.�G���R��q���K!0y�T�2�5Q+��W�	���f
<_���O��0
�5�~��}|ݺuvdp`+���F��dd&���
��p��E=�M
|�`��ôy������:.Y�0�"��+"��L{#��t�mn@g�M���%~��0�)����0���۲e�ƍ]/59�!����1J���]�U�.��=3n�p��\F�!���e�s��������U�V�����,.�cU&rÊ��WB3Nq�vL�Ww�s�w�r���m�v����ۈ۷oO����k�9���kjj�Klkr�c�t�eSLL?�3�,�\��m�ɣ�X�cǎYP�&h�i�Ν;v�pcںu+�~�mm�B�eSL4��d�q.���0�SO�X�IEND�B`�images/arrow-down.png000064400000007043151163531650010630
0ustar00�PNG


IHDRh��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR
RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!��
e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$
ɈQ"K�5H1R�T
UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB
aAHXLXN�H�
$4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�,
+ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_��
c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v
m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�|
(�h���S�������c3-�
cHRMz%������u0�`:�o�_�FNIDATx�b���?2�-y���[��b,��-c���W����b��=����
Y�A��30�E��g``��aXs�
��D��u����N���a=
���5q����R���K��X�������,�-
�p���/�*+��` ��
v�Y��V���I,&�!����&���aA��3�s�G��Y``�h��Ԁ��2$��,��C�٩���n��Gz��(+h����v��0$�|:�\��KBq��WK�\�
9�ؐ��$4H�����"B-"M-ME����D�Mm���&m�{Io�x����<RmMn.6��<<�I��է�遉O�T�weM��O���}7���T���v�������`���ti�^-��88���ې��l��.U���t�������`e���d����2��LB��F���"+��c�|^��8��|��ĤgEzV(���J���'���N~\�I��I�ʅ�ÎLB9�,��4�Z��uس���>�o}z}?���C���0)ʪ1�Ń����^)!$�vh~�2��\��7a��RH�_���[Y���E���Yjե���'z03�
�s��~ K�K�0r�e��%��vAs7b��	_�
]�'�8�K!�Y�[�h�0�+�&@���Z��Qo~�%p�Qǀ���7He
`D�(9�^�6#���S�^l,�A
��A��g0F`�Iȑ:J�+��5BF-?ڪ�4G'#�W�iO�\V5:�`H48�|�WK.���N�4R�ֹIEND�B`�images/arrow-up.png000064400000007007151163531650010305
0ustar00�PNG


IHDRh��	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR
RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!��
e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$
ɈQ"K�5H1R�T
UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB
aAHXLXN�H�
$4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�,
+ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_��
c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v
m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�|
(�h���S�������c3-�
cHRMz%������u0�`:�o�_�F2IDATx�b���?2�-y���W��b,��-c��]���{���b��=��?�Ф(��eW�"����
��<�!�k-��D��u����N���"���5r���jC������X��M9)�����b��}�	���P��f&F��ѩa�[!N6�M�N��~c�{�5��7���R��e``���?CM�-C���A�B�$�n\kߣW��������ff&��?�0�ش��/?����?��2Fͺ�?202<e��=��������b�&�}�p��g��w�N
��������W��QC���_Q�O3|�����h������	����g���*��{o�1j�N���?å)I�^a�[w��	�w�rm���g`XVưp�y�]gn30B�͹�?7;3��A�����9Q�~�d
a������.�n`8�eN�@QR"���3��J��By+�U:%������B˹�W��s����>}�|2�y�,�9e~��9��в"��g/@�K"�-/Bno_�$������'���(ۡ���to=M���Jq{e-�@"������Y�C�'��5�Z��"8Ђ�X���R���{�1D��yr+���V�۪Q����KQ��
�,5�YGkD���ƺ�Vl]�>E�<q|}3���w�1oa>ie;�Zʎ���~�v�z��&^��,S�?��h��
�c�
����0
�/��IEND�B`�images/attach.png000064400000001312151163531650007766
0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe
ImageReadyq�e<\IDATx�b���?0222�nnnaaa����
;
�a<q��ޙ3g��{��H/#>���%�Ν���ի�/^<�ϟ?L			��


�����d�4���ٹ���t����������cccK@��p��s455}ddeĦϘqjŊ��M�R���۷RKK��������٭|||��.]z��p��+������?�������K�.=}���@���
nii9���;u�ԓ���I(^C~~~=�&{��tv	�~&��111����{s���e(.:����������/_�EHH��v''�`���+NNN�^/]a�e˖��(�D�,*&��u���{����
�0���jz]]� �)L�{�zw_�r忟��Dd�Q044tڸq�K`8h
+&�C���y�#�
����u(0�v~����
PP�����Ï&L�
D�r�?~d����w;44�@C�ޚ6{��7oޜĖf�m_cem~JJJ���1iҤ�ǎ��B�����
���JKXYY_EE8pjڴi1@�w�4c��ILLz222Q|�|���Ȁ�����y�@IEND�B`�images/audio_icon.gif000064400000001155151163531650010621
0ustar00GIF89a�+,--333?@@IJIDDQUVT[[d`_dgggggwpoqvvxii�nm�yy�{{�po�rr������������������������������������Ʃ�ĩ�ֹ�ļ�׵����������������������424!�+,�@�J�R�T*�J�R�T*�J�R�T*�J�R�T*�J�R�T*�J�R�T*�J�R�T*�J�R��*�J�R�T*�J��
��J�R�T*�J�R�<�L
&�J�R�T*�J�T�A�P)�J�R�T*
�Z�BRYdT*�J�R�T��)�0m�J�BQ�T*�J�R�
�$#&�QE�R�T*�J�R=�b���H�J�R�T*�J�Z
c4�(,�J�R�T*��,,��1t<�J�R�T*UJ!ِFR�aL*��J�R�T*�"�e
�N�sQ�T*�
�R�T*�b�0X:��ŤR�T*�J�R�T�ȣш,�J�R�T*�J�R�T��s�T*P�R�T*�J�R�T%�ƤR�T*�J�R�T*�J�R�R*�J�R�T*�J�R�T*�J�R�T*�J�R�TA;images/box-bg-12.gif000064400000002511151163531650010103
0ustar00GIF89a#�������������������������������������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:6897235B345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:6882931D345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,#h�%�di.h�Vl�l"�2e�xN|8��0((��r�8���tJ��X�c��r�|(���z�F�ߒ�|>/�~���������
�����������!;images/box-bg-2.gif000064400000002267151163531650010032
0ustar00GIF89a@�������������������������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS5 Windows"
xmpMM:InstanceID="xmp.iid:55953E633B3F11E0A9F5FEAC25FEB1D6"
xmpMM:DocumentID="xmp.did:55953E643B3F11E0A9F5FEAC25FEB1D6">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:55953E613B3F11E0A9F5FEAC25FEB1D6"
stRef:documentID="xmp.did:55953E623B3F11E0A9F5FEAC25FEB1D6"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,@J��I�u-�ͻ~`(�di�h��lz�%t-(x��D���px���r�8���t-X���v;Xx�`�aL&3��;images/box-bg.gif000064400000006046151163531650007672
0ustar00GIF89a�R����������������������������������������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS5 Windows"
xmpMM:InstanceID="xmp.iid:C71495FB34E911E092F6BF663EAB75C4"
xmpMM:DocumentID="xmp.did:C71495FC34E911E092F6BF663EAB75C4">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:C71495F934E911E092F6BF663EAB75C4"
stRef:documentID="xmp.did:C71495FA34E911E092F6BF663EAB75C4"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,�R�`%�di�h��l�p,�tm�x��|��pH,�Ȥ�HY:��hj"�J)جv��z��\�X��z�n���J䌃���]��o{��z���������M+MX$M(���"������#��i�Y[�Z���������������T����X�����Ƿ*�Ϳ�Ѕ�����������
)��mѻ������������f��a����
�����[�Æ#J�(���	�,T�0ŏ��I��ɓ(S��\���m<�Qȉ,s�$	��ϟ@�
��KJ1k͜PS�M�;��$J�*іJd����SyR�ZK���
Y���ڵ��xa���K�*Z�����]\�u;L���È;�8�m����2�`Ř3f��Ծ�})��LT��Ө��sWɢK�.���më?�vl����n�€M��5�M9�O�H�N�����!�=�w�б�C�n���صsߓ�S��FO��}���R��kx���w߀�w�g��w�_�W`}D(�Vha�
�
2�Ġe>�$�Ha�
�C�"q"Vg�4ֈ�~v��Ђb]v[�2�(����Q��\�)�3.
�TVi�T�2{�$��\L�&"�bi�h��%��x��Nt�6&��i�f��G��|U��H'x�����&�袌&�̖{�fD`�%��dzf��v��2�g?o�d��f�)����j����f�Uj�����������H̤�iit����6*���F+��BN���K+TƎ�����,�Ֆkn��fk���TV�#ָ금�+@�����o�pH��@�[�}C�K�������V��{T��k�����{(�
C,������b\շ�Fٱ��,���319�\l�+ܲ��63�D;l3�'ws�Jc�s�x�\n�"`��Xg���V'
1�뢳4`�|�wJ]-�r��W{}�Is��T�jL�Q��6�p.��r����)3���O[ط�Ӳ=������xϙ5NaڭNM3��Y`�騧���T�Ṡ�9ٜ3~�ˆ���̤���^��k�m�xS�7z�o����S��ԫ��a+���u�<й{��ȽWo�����񳧴�b�C>���>����������K�t�����}�����*荌t�;'H��	p�cX�'yWj�!v��U�(�����؝c{���B+�Z,��R��
��x��
6`�>�y����
qH�����P���B��F���H4?r��a�{b@�2��hL��XE�P6�K�/��EՏ��#���>�q�l�7X��%&~�s���0No�~��$�x
�����rD�$1������H=HN�~�$o��7�ѐr�
�h��m�3%*wII��d9�EY��L�c$�H<���4�I�jZ3��%+�	�ae�ב�C��e��)|&4���vf���_)�C3��\�-��R�S��h5߉`r�f1��OPֲ���g3O�K�ZԢ/�$�9Da���A��hi�}���)/�RvfT��h�G���È�N$UD#��ߩt�-
�4_
�mZ���iH���*����t:+Ԗ�XͪV��U�ԨnD�h�J�9�	��|?��R�VբW�JW�zu�=j7?�P{2���Z׺��R���b��˯�4�{�i=�׳���=)��J�H�t��mV4����	�B=9�������O;�G����\-L��Ȏ��0�H]�(�ƶ��C�$?���fU�E},dQ�׾ڔ��8ͧ`Cv\��v�˵�s�]��U�3�-1c��:����na�����ȯ~�������5mG�KO�R��Me|�k��ҷ��M,~�K�
�w�Ȱ�7�pX�EĀ'�#8B�-�qyz����֤��@���8�q;images/browser.png000064400000001726151163531650010216
0ustar00�PNG


IHDR�asBIT|d�tEXtSoftwarewww.inkscape.org��<hIDAT8�U�KL\e�����ByS�����
څic��؅i�3ѵ��H�E4jM�	&>R#E���&�6�D��Diu��@;��¼��\�]hL=��ۜ#�Rܚ��:)�R��,��%R�D0��i}�8��ݭ}q+��{�ɓ�t����t4n
�r9H�9��4_^�LaԲ��z�����[Gjo;r��*\n77�"Ų"���f��{�.���ũҥ�?�۶ݾ8�Sv�kn�����|З)��KV�1W��F'Hmn�Y�d��]n=g�"Ko/I!��:���>��
_��M"�W9��{(%�^���[,�mۿ��v9_h�l�-݃�R���R/
���������<v�ׇRJ)����y�f��m!
8�:B[żq�r>q+�
�<I����i�x<���j���D,YG*kPStK);%�����uc�ƒNsE������������
�V�iZ�c>��J�{$p-�Ε�f���Z�^�C�ut]�\.#����~}�R��Z�n���(�%��#�֠���^���Occ#�e�3e��j�&��m8�
��M����>�P1M�����������Mjd��.R�;�$K7VL�]�-�v�:n̤���N��<A,C����Qfz��`����b�P(���yR�~n`|#k��u�g��s��|d����.���Ik(�r,iE����@�B@Ӣ�O�8uu����n�����)B�>��rx�8;37�z��Fj��RJ	!2��Z��f�T*9�>�/�Wm-�ڢ�:g�9�׋��hr���@X�;�3�>�556�1JFg<��o>��kr�nl,�0g���PTJ�͛���f�IEND�B`�images/close-ticket.gif000064400000000371151163531650011075
0ustar00GIF89a����ѝ�J��n�݀�����]�8�������Ăش!���ԥ���Ɍ����̒������ح��ܶ�
���v���������!�,v�'�^i�(٭����%KE碞
��d㝝)W����Nq��t
�F&�Pv.��ǡX$�	�f�͆00���f���"�n�9f	|v�$�u~�Y�������C��!;images/close.png000064400000007031151163531650007633
0ustar00�PNG


IHDR�a	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR
RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!��
e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$
ɈQ"K�5H1R�T
UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB
aAHXLXN�H�
$4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�,
+ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_��
c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v
m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�|
(�h���S�������c3-�
cHRMz%������u0�`:�o�_�FDIDATx�L��Ou�?��2;�3�.,
�JSRJ	��&V�Mc}i�	ެ(/	�4�Dx3VK�1j��Ӄ�jL�hbb4�EXyawaw��ٗ��y�	>������}��҅!�1g0tP
܏���VP�p�6);����*��֐��
T�;T�&�J
�I��P��
R�4���LU�+
�Zw�p�ʫ�UDb1�6ZҤ�ݮJ�Ҙ۔��Ƣ�=2�dZ�>�F�zg(�J�P�<?���럠w4�UO�'G\�=aW�ma��Ĺ��Yvf>$���L���O��0��!XZ���e�T@��<)L��Z=);r�T�%��q�3�i�g)^���TH��a�9M��%��Oc�<�})��Or�î�?i+’��T���a������WT�N��G���4�`t�@᭻�l���ڙ&;�ʃ[&(���z��g(�t�ͷ�&�j`v���D�dp�OV��M�U;�+h���Y�P���=Rg�`��Y�8Ag��a�QQ�7)�'���I[�k��vz�]���1r����N�sϐ����7_�+
�c�Rl��x2w���`��X)��[��3�'����-�_�@�$�������l~�ٱQz�,��
ϓ{��]C��Ű�S_ߤy���ofY~�u9P�6X��2p�:-'����
�ޙ�H�C�kxr���b�]_�#��"�SS<�I`%,D	���vN�
}���#�5����[l�����*��A)P
]4V��,�d�uÀ�gޭT���|���iP�j���D�=�]�Z�Ls,F�4	#��/�펮!S�C�%�}�������)E])�E��
��}�í�{IEND�B`�images/date.png000064400000003112151163531650007437
0ustar00�PNG


IHDR�asBIT|d�	pHYs��~�tEXtSoftwareAdobe
Fireworks CS3��FtEXtCreation Time2/17/08
��XtEXtXML:com.adobe.xmp<?xpacket begin="   "
id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 4.1-c034 46.272976, Sat Jan 27 2007 22:11:41        ">
   <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:xap="http://ns.adobe.com/xap/1.0/">
         <xap:CreatorTool>Adobe Fireworks CS3</xap:CreatorTool>
         <xap:CreateDate>2008-02-17T02:36:45Z</xap:CreateDate>
         <xap:ModifyDate>2008-03-24T19:00:42Z</xap:ModifyDate>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:format>image/png</dc:format>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                                                                           
                        
                                                                           
                        
                                                                           
              
5Rd�IDAT8����J#AEϫ���nIV�r=`���+?#�!�\��3���0�+3&�
IKZMU=խ�t�a�B����}��}��|r&�"���{Qu�č*.���p��z
y�c�>>�?:zP�ON�2���G.E�h��*��T.�����aS�b�wv�,C6LQ
e����5`00���v��|o5������2�z���}D�Z��h=?c�:��
�
��]-���[�cTA�e�^�6	�p�m��@+uL�n�1�Ʉ!V��v�\�'���,�n���
���z�1W�|x
��ɚ�i�1Fb�o��!�X�'Ĉl6�A�eY��?��Ęr1�t86���Z����Ur0��K�F�ϭ�+S�Ҷ��mIEND�B`�images/delete.png000064400000001040151163531650007762
0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<�IDATxڤS=OA}+`�1z54����Hl���cB,h��
�P�_0���/Il,�P�	TBC�(��ޞ�����yo�f��mۘ�Ì��_�B@��qrY�ʦ'�7�u�R��
�Dž����o�(��”A�'�����H�r�I��
���f;���,- ��%!�)T���dd�VC4�M�Te
�H�n��P(��J�J�E
�ψ�-`;U(��dR6
E����xk��zR�#����(���5���2}>^{=E�f�\�PS���8�ǃ�NY��Ub��S���
[�e�4�H1�8Ƙ=9��1�)F�]R�߯��{����t��8�o�H�"ۭG�P���eS#Vɟ�jxx�m���P<����j
B�e�/l����py�Q���
�mu��މ�v�(Ѓ�\N�m�WP�k��2"�w�`#��a8>IEND�B`�images/display-icon.png000064400000001165151163531650011123
0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<IDATxڄ��jTA�����:c0&�$DD�!���w�}�Y
�(W�\�!yC���(�7�(f�x�Y�
��N߬�c&'^���꯯��)ƈ�qq��m�5��`�x������|��n<��t�T
�6�Y<O���+���K�ե�9�b��[gj�;o�taC�s�GhMh܉��
���g��W̟����u�d�g&Q�7�1�k�|��H(Z>?�	>4��|�Q�l}7�3�	T+������Ε��?�?����S�;v��O�Vq��i�c
�1�J	E�/?�Fcl/i��]�aFc�e�8��߶�8:
q��2�h"`8c`�>�H9���+�?$2�b�apI�0ZH-�)�_�NE��z�JU~@'ɍ`�Ysv#l�.�#K@�(X
��u4 ��
"9���:�����
�t"g��m���ȝv�v9{�ˆ���Jaru�3y.�
mA�KǾ{p�w�@�P���a'Ƅ�F�
;3G.����������\�%���&����IEND�B`�images/downarrow.png000064400000000447151163531650010554
0ustar00�PNG


IHDR(-SsBIT��O�<PLTE��B��؆�a��`��V��o��W��m���n��n��s��ߏ�q��U��Z��n���o���)�עtRNS�������������������OO�	pHYs
�
�B�4�tEXtSoftwareMacromedia Fireworks
8�h�x7IDAT�cF��f�`���0�/B3�τd�
��l|���0��0^W���IEND�B`�images/dropdownbg.gif000064400000003124151163531650010653
0ustar00GIF89a�888222%%%"""(((000������...---,,,+++�����������נ����Ҁ����������ڡ�����???���&&&###
  ***777'''444$$$111!!!666555999333!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:39D0BD5434F611E0A32FC47285039436"
xmpMM:InstanceID="xmp.iid:39D0BD5334F611E0A32FC47285039436"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:89E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,�@iH,�H���l:���i)�Z���v��z9��xL.�ϣ�`�n���aC��������!���������������������������������
����
���
%���	����(���	�����������&���"����"�������H����S���Ç#�8`��ŋ3j4q��Ǐ
C�Y �(S�\���0cʜI�&�(r��ɳ�O8
�b���H�*]���
;images/edit.png000064400000001103151163531650007445 0ustar00�PNG


IHDR�abKGD�������	pHYs��~�tIME�	
82x:�@tEXtCommentCreated
with The
GIMP�d%n�IDAT8ˍ��K[Q�7�����ŭ�.B+X�����C��BHڡ���
��v(�K@��A��-�K�ͽ�rQ��C�zs��ἇ��>�s�5��r�ܯ�Lz񧯚�r�����(��u]QJI��I�ʽj��:A��`�6væ�h�4~��]�~Z���4�N��"�F�"��O�4�M����O���������Omڜ�'������K�պz��hf���KZ4��''�D"�|~	���Z�P\���+�f���*��b
`*9� 
��m�e���/�ܒ����p���2��2��ӞZ��j
������pО_��z��mXXe������β���u�|�J<y>K�t:Ȭ��	��tŞy��^�y�eF��X,�C�������P(�����mC�(IEND�B`�images/editor.gif000064400000015063151163531650010001
0ustar00GIF89a��������9c�_o����
$j���y��4Kc���::�X��ې����Ҝ�����������Ά��ޚ��f�B�6_�����������������������`56���ې=8):����:���Đ���f����؊�����`�����������%c���f��/i䰳�`��fĸ�fS�X�̀��Y]f`ې:65���S�������f��8*����_`���·5ff"X°�݃���6������:5������Aw�ff::��::���M�������˴6ƴqs���ܱ���u��@`���mLp��xY�:���f�Ѝ"Z�_ϰQ���Wn�:ff����::���`_6566``��5���1Q�:f������f��f��::f:f��ې��釫����f:6��ff^��ff�۶f�Ά���:���������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:8ACA168434F411E0B81B9D3E1ACF6461"
xmpMM:InstanceID="xmp.iid:8ACA168334F411E0B81B9D3E1ACF6461"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:89E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,��=	H����*\Ȱ�Ç#J�H��ŋ3j�ȱ�Ǐ?�I��ɓ(S�\ɲ�˗0cʜI��͛8s��ɳ�ϟ"J��ѣH�*]ʴ�S�B�J�J��իX�j
�i�ׯFA���u�ه`ӎ����ۙ�@ɝK��ݻx��݋�+J�q�
L��\�'���v���&�Ly�⒀+k޼�2T�Y��V2�ӧ=�
��5g�AI[-g��u�f�唙}�S��Hi#��{��榇K�[<���u�;w�|;��$��O�|���ǟO�~={�(�Sn��v�ڍ��K�k��1՝H��T�K�7x~��~s5��xd�ҟ]�G�Z8!B��a����`r�}�����0�H
/�Ȣ�7�D(&�gcK>��{>�hҎ����/(����a����'م0��v$jf�a���0�#�?��R����I�ɒ|r�`��r�a�x����cR��t�$�iI�\VF��+
Z������z�(
X�x�6�H%��Pi�^r(gQ�h#�B��j��&�F�`xE�:R���Z$�A��i@������q'�(("�%xR�ׁ�%y!��-��lb�I
��mM�
D$�f�%~�ژ�9�z��/��+�i�����R����\0(�}�a��''b���a��h�(J�
��wr��N��F�ea���o�6�;f���:k�,+IKp�h"}��{��ȝ�N9�/���#[��-�u��ib2�2�]5�1�m5��~�3P:�8�J�2�q���JHΝR�WB"W
X{8F�n���bF
Mj��^G	.�ߪ��aO��Qf��4�*8Ou��������y��b{	��#��y0��t�z�Zy�NN��z.�����o'�h�g=�D���c�a��Lؗ��Ԫ�As���?1��'t
fo���0j��e~j��N�%���}�C�J��;��G�����O3��^���	P}7k������i���R��&����W?�f�6�_��6l���a�Kt�!�0�<�Iq�~��4�o<)NтI������x�!e��
�E���hL�s��5��p�J�H�:�Q)s����Ǜ䱏��
#s�A�|�#"�H5*��_��
IIV�(@�lb��]%�6y�D2�OL��@!Q���-�
E`B%��
�4�jʥ�2%f`����(?1�S���K@�jZ�ք`Ll�/(A%X(B@�4�
X�%i��`
_�	��x�$
��&���|�_�+I&K���n �.��n��
�%�%3'�[F ���
p\S�/Q��ٙL0����
4��T'h�s 
���L"��m@$�����Ę
�@��d*�iS�`�%Ԭ�FE
�x��iJ"�����0J�P��!}
'
��A�2u�#U2Tz�Ā%!AD�O~��&<�	X����
��dIe�R�jL�N��l*��	��$P�>0�
��}hK@��%Y�Ww�����%6�
�`|�i�J�Є&�!p���08pȫ^/i������Da��]2���@��	�
u�d��z��e�gF�N
1�H@��x�(�/��yJ8�c%Im_��݊@-��J��7�`����\��!CK{��.�4��I��wb�Ɵ��P?�K�ⱖ��	b�S'25�J�	b#��d�d�@^s�������
4U'�.x�I���h@e`'�e2�gN�Jn�	\U$t6	5}�[�b��'QC�@���
�A|��,��X�Y�s^�
�ÌEBc���<��Q�N+�$�z�[IT@��-�J��W\���obGR��&�$Mj�\�
�ep&pJ�N�(16�Oˆ
<[%A��GB[�P�^Zpr_@6�'��C��
yȂj{�@:����pLk�$7�q���X�G��Mi��<�d��&l?�F�z�s$��?�N9%��S�:�(ן��2*`r��`�hp-J��0C۔5���Mm_5�N�\����
6 �\-�B�
T���`�,��&a@��=�a��aL�M�젦�nɟ�&��J�Q�굫���
�Xٌf��{�Q����<�j�>�M9蟰���
(�
^�Jސ�BG]�m���K�84�	z{�~&(����%���Y��a�������'t	b�̂@&0��	�Y%�w��?�Ƨ���1*hb�$v�B�
�5A���R@z�(�
0�@q�3����BS�
y��^R�K\p�L51!UH!�E�Go't�U)�n#s�~�g-��DpiD�����A�X�$O:�j�n��IBr;1x$H0|1�we҃8!J��s+�	���7F|$
D�U��ySH��u��*�\wEr�}_��^�p�7�d(�O�K%�^3QLN���LH��v��X��6��X���Yhu�1�}t�
r@�����],1TP8'pH8H;h�]�J�Z{���TW��*{�X�H�؊�8@�HPt�h�x��&�8��H�X�Ș�0q��،�HH��ҨE�8�֘�̘���؍��p��Eو
蘎긎���T�7q��X���𘏂#�6A�������8��X�<�Y�|�4���,������$A������
��踐��pL�Ue��,i���i��$�崓!�#�jI1d(T0Yy����-��Y1ɓ4i��(9ɓ��?�D�>�jE���q�@Y9Ք��#�Y��"��	�Y�i�vƕ#1w��SV�9�p��u�u�dRh9�j�q:IN>����	IN@Nl�}>Y@�BY�	�)g�v����9T߇q�%T�w����jɖ���}��4�!����"1C���Y�,�	`�I��^X�q%���	��!4�b�@����I�P�P�w����$����-�����qgI�6d�����ٓ�9��i�:��!PT[����j�)���ٚ�U`�"1O�ɟ�蟏YN�	��H�����IUŠ5x���<_:zsW��9
��O)e���8�䔞���i�Yl
���6�+��	���u�7���Rڣ���'A�@��$�(A�o���	�*�0!�+Ѥ��:rz�C�M�q^j��I[��@h*�'��n��q�m��H�9q���c:��_j#��������KZ%i�ϸ�1��	َ
J�*��H�0a������ʪ����
	~^��h��/��
��z�O!�Ⱥ�ۡ����1F�:��Z��z�ؚ�ں�aE�����:��Q�蚮꺮�ڮ�z����:��Z��JUt�����گ�:�;�[�+=�z�
��۰R��;�+[�����tq���
��"[�&{��J�(��,۲C��.�2;���4�{�8��瓰:۳>��6��B;�.�D{�H�F��L۴��N�R;�<;�V{��
�X��\��Z۵`��Z�b[�fkD_{�j��ؑ�l��p{Cd�t[�%2�v��z�n��~��}�����;�����{���������������;�����{���x���۴����+��;�����{��+�����������K��;��۰�{��k����������«��;��;��{��ˮɻ��[������;�֋��{��K�ջ��1����{�;��;�{���黾��%����B�;��˷�{�������{�����;��[�l���������l�\��{������l�
��;�$�&|�ʛ�*l�,����0�2<ú[�6l�8�ò��<�>�ê�Bl�D\Ģ{�H�J�Ě��Nl�PŒ;�T�V|Ŋ��Zl�\�ł��`�b<ƀ�f�h����l<�n���r��t\�|�x��z��"��~\€�(<Ȅ�†|�.��ȊÌ��4�Ȑ|Ò<�:\ɖ�Ø��@�ɜ<Ğ��Fʢ�Ĥ\�L|ʨ�Ī��R�ʮ\Ű�X<˴�Ŷ|�^�˺Ƽ��d��|��|�e\�B{���ʼ�:��Ό���4;��L��|�kk��ܲ��ͨ���\��<�&[��̺��]����ΰ���|��\�{�L��ϔ����I����}�Dk�
���м����=��\�-���ռ�����!}�=�Z�&}�(��ʭ.��0�2=�4�]��8�FΚ�<]���@-;�D�?]�H�C��L��~�G@S����X͂Om
P�'Q�
�Y]�F��\=5pam�dm�p]Q�i�	_-�q`�����
l�֟PՆ
�.���1Ն��x=�
؈�E=�Q
�%��0�n���]]��v}`����%QS�գ��_M�=֤M�M�D=�uMU0^�bM�t�$�֪=b]�-��օm�"�ڽ-�-ܻ��<�����{p�ò��=�&a��=�-�%Q��-�m�\m�ۍ�8�ݫ=՟
����}�"a�]��m��M5��k
��������M��j�$��@�
�^0	�
���IP��~�#a�@	�-��	����-�̺��M7N�fm�^9��Y��@>�y�D~�Ԉ�J��6��N��P�RN�;images/favorite.gif000064400000001160151163531650010323
0ustar00GIF89a���������ۏ�������������������������Ó����ĺ�������������������������������̯����������ٌ��������������~~~���xxx}}}���bbb���fff��������񒒒��������������������������������禦���������������Ȼ�������阘������픔����������������������!�M,̀M4���@M3��7��?�

<8��>	�E.��	
���
-	=�
	$L&+�,&J$%F9���BD%"6
��":1�;/����Q�~&�@��
#����( �!ɀC
����(`p����$���	6�A׆�4	;images/favorite.png000064400000001277151163531650010353
0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<aIDATx�lSK�a�Gg�0���^�!��Q�
�U�6�[�j�NhW�p٢E�V.�
�E�����@E�3��:�͜�<�������'���t��^5<�=`��_��S�|2�d�jU9x��F$m���3��cdO�z�f<ϫ�6���"e:������l؝k����vdHRt���v�H�x<>�ey���N�y�X(]��N�S$�N6�i��햒�&�ɭ����F��l��
j��F�f�Z-��DQ��F���?B3x�t8�P(���ze;�K�$�N�c��j]��ۃ����T`������U���F1��/�KĈ���\���O��nA>"�V��
��ng&�
M$�7m6��q|u���5�z@}���Sש
�p�^o!�د[�H$X��b�AO��l4y�M(
�l����U֘J����0}3:p�����`�1��b1S�R���(Ý���{��l6�"�=�Lr�"���Y�:�N7���T*�p���f
�h��h̺�n�\.���K��b-о���
6G��}E��Z���R��!�N��(�D�0-
o��x(�\�X�7}s�KIw�n�IEND�B`�images/favoritehover.gif000064400000002032151163531650011366
0ustar00GIF89a�����ʔ�����u��Չ�Ճ������0��!�Ӈ��y��"��{�ӂ�Ԃ�ҁ�с��
��v��$��'�m��k��(��3��h��e��t��s�v��"��#��m��r��p�����������
���ӈ��
�� ��
��
��$�����(���9��@��A�7��)��-��1��������!�����!��"����"����#��"�����������ޢ�ޟ��Ր�Đ�Ï���Ց����������������������܉��e��d��bϼkλk��k��a��M��F��D��`��_��U��l�{�z��w�Ո�Ԉ�܆��w��o��n��m��t��t��s���!��,�������[�(�c�@Ө�(���7~�0�Ȁ,W<��@K$@�p��5-#@�0D<
`B;=|H���:��Ӎ�Fp�ʎ8VT��9F8<��h���hѶ���ŋ4j�M�#ljAR$`���=����b/�BsB0
�D�蒸��%RP �B��2Yb��b&L�3�Y
�	�;��g���p`�
6lP����(�S�D�A
<h��r;images/favoritehover.png000064400000001365151163531650011415
0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<�IDATx�lRMhQ��٤�&i�$�؆V���V[�B�h*B����x�&DD/�^�"�=��_�R�Kk��Z4���%�����L��6u���~ofvf�Ǡl{�ܺ��W>�;ę7|�I��2`�X��-���
\/�g�%�f���/;�U@XH�e���߶�-��	��0�I�P�,��|%�1�
��Ȯ~��T@U7�(U��륿
����p]g�|���6�Q�f��˒ɒ�(�q���dlm���}�D�tu'�6�.g��?�^
�pN8W[�ֵ��t\�%/7�0�+�.�E�+~3W���}��8��{&�WW��3�Q���j�����昮e@�r����Bu`�.�2�R6��`�#��p���ز���sa!���k�ח�'�^@�7ɨ�߁H#����7��s����n7K#P������pXY����s�=Rk���<6��T�Dk�
笝b(�r(�(���e�8�C�H����i��������$75SqRMP�P�RYq�˸
w{3j��ɫ�1>�3�͚7U����^�)��
������1�i�u�:��n8�������/��kw���Hq.�����M���=H:HۨFD%�I��g0h��G��x1
KCI�t��up�.8F��8�#�q<,3���DIEND�B`�images/filesave.png000064400000001023151163531650010317
0ustar00�PNG


IHDR(-SsBIT��O��PLTE��̙��lkkBB@����333�����������𶶶)((L^>�����zyy����癡��������SRRg|V����Ν����x�i;;;JLG��ֱâ���^]]���UiE�����rrr"!!7@/�Ѩ�����ZRR�����շΥ��RJJ�`KK6tRNS�����������������������������������������������������H	pHYs��~�tEXtSoftwareMacromedia
Fireworks
8�h�x�IDAT�m���0`�Lƺ�ʼnΉSO��d����K�6�$�Z7]�~1~NE"7���~(C��\��#$����
]3i0#�Z��Q��$��J�U0q�M��t��FA��7Yx(
,��p=U����UV3���7���w�ju:��3�IEND�B`�images/history.gif000064400000003272151163531650010213
0ustar00GIF89a��==�nn�33�~~���//�����׾��������dd�����ږ��������������������GG����~~����֦���cc�����PP�����Ѓxx�ss�mm��\\xff�yy����NN�ww�������66�}}����FF����==��ĺ�˸����߻�̵�Ɲ������NN졡�����ȡ�������פ�����������񨨧����ë����ݼ���TT����ZZ����m[[���!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:BF4FB609352211E0B0A8F71350810230"
xmpMM:InstanceID="xmp.iid:BF4FB608352211E0B0A8F71350810230"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:84E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,��TT����TNN���N+!.��!+,��,4%C>H5�'='%4/2
 2P��/���*<IDA1;F-*L
	1M-3967@:JB?EK3LOO��M`D���#"�E����(Q@4�ɇ$Ld�@�&&H��
��ɓP��²�K�#;images/history.png000064400000002027151163531650010227
0ustar00�PNG


IHDR(-SPLTE������������q�ݝ����ؚ����ۡ��l�֌q�>v�C�����R��Y��c��r��z��ž؇�ى�i�ӈk�8�ɞ��N��V�Ц��x��k��t����Ճ�a�цy�E��_�΁���併��y�^ݲX�r��xܰV٫P�i���������߸�Ẳ�hרL�d֥Iڲe�ņ�À�ňָ�շ�ڿ�Ƿ���ǷH@ǹ��M�ʰ��[�Ǻ��M@�B<��[�Ǻ��v��|@��K�CRO
}}}ǼCRO
����Ìǽǽ�ɇ�-��-�ǻL�l<�`<��y�tRNS@��f	pHYs��~��IDATx�U���@����Z�%�~	-���>��>x5~�1���	"J)"&J�l._(�
�J�V7�@��*�;V��GfOZ�iǚ����Ȝ�����:��qX"0k1���2{�b�?����X���`����z��b�#p
�!p?��E\�_n��]ލ�Ǘ��Ns��IEND�B`�images/icon1.gif000064400000006364151163531650007530
0ustar00GIF89a+*���θd��������ڍ��u���ل�����tټS��������}�ݙ��~����ȲZ��������u�����ۅ������Ш�ܑ�����cѻe�ޖ����������r�ք��|�ف��ʽ�;���ַK����܉�����g����������ɰJ�а������U����ߧ��v����[�ލ�����]��x���ݶ�����x�؈������ǘ����̤5��������j��u�������τ��״#���Ԁ�����������ߚ�������������{�ܕ��n�؈����{�������؅�܍����M�ي�Ԁ��z��~����ׂ�ۖ�ې�ܐ��������~��éA����ڈ����������ۖ��������܋ϻp�Ԁ����ߐ�������z�ݒ��m������ے�ׅ�ւ�Ղ�Ԃ���̈����m��g����ޒ�ܕ��w��i�Ņ�����ޑ�ڋ��l�����5�����z�����y�ڋ�����{����z��z��r�<��վ�A����،��������������ߞ�����z�箼����݆��p�Ϝ������zѾt��~�ݨ�������������ד�۟��Lݼ3�������ΔǰU����ց������Ћ�������ۇ����Ԥ�ڮ�������������ב�����҃������n�ׂ��t���!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:6842CC35345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:6842CC34345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,+*��	H�
Ay�*\Ȑ�Q�y԰�E����[���3.�,�N�7=/�u	ף�D#E���HO�
��3C�1+�w����i��"J5�5��P$z|,m��R��2¶[2u
>d��l�
�`�.	,S�h1��"o�ΥaŊ4��(��"�^#��("�paĉ�`��s�1"�������ie��ٳk��6�/�
+Vo��n�H�Dh��ˆH8���z7ŶҬ�a���Xc���H�O��;.ܰ�B
Ob�7O#�|�
2ʼn��VQ�HtC�s�IG�G���g��Pс��CA�@&�D'���p�;gXJ$���b�&촟0	���S�
�t���H��8ꨉO��@-h�H�d�TY��,���Ι<yc�;Rie-�d).����@H�J
���l��!9��s��ye,qj0g�w6�#��K���
�PYBʒ�#��΄�4�wNZ�!���ĬU�At���
`A��cJN-��	Pji��>�&F���b�$�:�!+�AA�`J���
o�@EO�j��hGa��>�T�&��Q�!{��A��,(�J5�p1��Q�&���/�Dd�;}�kG�l!�/����(���

�QF��1�%,��3p�>���6�ȝx�E.)XaEB�#6�qJ�Xg�&�H�K�p��4�RC3�X��[<����p�@��"��@2�|����-u�2JحL���aI3~
)�"�$��Ӊ!�P�+��aG�l6�
��:�~����l����r���,:���*��IM��B\����>���r$}���24,@"!�!�^����pQ&����H��#?�}��?��@��2`�&\��$��
~�#�:�	��|��۶���j��0�@��"L��R0	J����4��=

�F)D��y�B ��3��P�LD�*,E��^p�D �T 
HA
��0��R[/DPD��X�i�A)^T4
!	Ix��7p�jD	��A4��=,���ۤ�8Rъr�
<!>B���@�>
dL:(�*x�#��J�2���9؀GLjR1@fpO��
�`�)�Td%\izA��Do��h2�
�f`�^R㋱p�~PL>,���d
��$����6���^�����s9R(�{0�P��m���e�9�z��_�G,�(���
�'��'l2��d(7��>~3���
(��j@����G�P2���Y��IQZ�Xh��؁G��զ
=�Cu��V$
;images/icon10.png000064400000003262151163531650007621 0ustar00�PNG


IHDR���tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2AD61F2350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2AD61F1350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�����IDATx�b�bdd`d`Hb�0�f�rbH
�H��&���͛7�0ӗ�A���+������q������W�>�@
=Ҍ��@4X���3@J�)�3=ְ�]��͛���Ȉ2<}��
�$�j�xszX�+��01�zo�A@�_-D
�fï_�Y��H�Ř��D3<bw��.�{�Vx�g��sx�|���IƋ�_^FCC�AFF��˗/�o�fx��@1��
)��9@�H��8��Ng��`۹y�(���l��lLl�f���;���6��_�����/�n�Y��R<�@����d3<�qcx�����k���h_�����Ke`X2HJI�t��N��uvf((�<�;���,�""�ll���}a���;��{b<#3�n���"���:'''Ó'Onݺ���Ã'�'H���N7�����7ÉÇoܿsg&P|&�"Fp�"����lY֠��&	�_����'��j�/��:fo5F�����fU]5s/���^|bf`�f��=�ߗ�@��0�,��E10��M[(�����ܪ;���~d`8s���o�~00�)�+��,0����g���Ucdd��N���0H���K��Ԋ���_���Ϸ��Ճ4jII���Z[Z��=��p��5���a)��@�;bݺ=�6na��L;zt�L������`�,,,
�?�0���G?�4�k�t�a����9IEND�B`�images/icon11.png000064400000003255151163531650007624
0ustar00�PNG


IHDRhOGtEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2AD61FA350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2AD61F9350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>��K�IDATx�b�e���f�����s���b

5����I��?����c�b���q����ܹk@���w��[�������Ĕ�Ռg��?�Qn	3����m�����F�?�i``�@
�S32*n?������{��h0899e������[�f���=��`dd$p�ʕg
I~���WW�r�bjg`aa�eddt:��������_�X��쪪�:��2���c��0����'L^^-�2`122<y���R���_+&GG�O߿3�+#C߬�?~�0d����+y����1�I��"%��g�Ʋ��?��a��cNF��@�M`���߼��0d���v�B	$`��bffa
^~~G3[[G3SIQQI���_??u���S����~�Co1H#��@\JAA��������G=S�2�881|������_����y>>�����EL?��I��+���4��۷߼a�r�Ço_~35�a���/��d�KJJAzX���t($@�����][�1r3���FF��b���AzX��~��|||������İm�pP�C
@ro>f8�m�n�f		��gN��v���O���J|||������	��4��۷�Ksr��ڹs"0��d��ҁ0��
++�0����>C�0����G
�5�a�]Z;�IEND�B`�images/icon12.png000064400000002455151163531650007626
0ustar00�PNG


IHDR	
D(tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2EBF7AE350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2EBF7AD350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�/_�_IDATx�bdX,��@����R�8î���0U�
�����N#P8�P}��W�_10�}��ߏ��#�B�L3�i߿g`ggg�|fkó_��g���7�7�F

����101,[��!�EML�������]C>i�7.0��󛁃�C���S�~��Pf`x���#F!F=�f��6#�
C{4d�\ե�Ź�8ٿ����Ƴ�/o=��hQ	#�l�u��N_?}���ϟ?�������/>���������3<������
�3}����W�l����Y���2������_����W(4��X��0�
���eC�]<IEND�B`�images/icon13.png000064400000003331151163531650007621
0ustar00�PNG


IHDR�Q�tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2CD4567350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2CD4566350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�76!IDATx�b�bdd`d`Hb`������x
��"\
Q��+E�a�/��_W����WN�q��������
�iF�y ����� �
6#s�.��r���e��q���~������*p
�$���xszX�+��Hb,��@���?���F�~j��<�Cf�0��L9��r�wd�7}KdfeeX�ޖ3�_��O��
��L�,u,�N���>�c���K_�e`٩��E����b��!�`�!H���c�W���l;7or}���>`�����l��g�>p���X�?�9@\���_?|`(���$�#��@��M��i[yZ?-���������eM�ci���05��]�k���l�e�����z��=C{�"���0`d������6�z�;�_R*t���|hX`,0"�t
m�tskk�_�3�8|��;wf�g�+d'$P��ߕ-��u�$��+��3�D5\m�e�A�
nN�c���*���0�Ab
94�@?�(3;C�+O��nJ:&}F���
ι�[�޻r���U�(���:X`��@CXM�L���=B�@�����bBR�L�u$�R
��$4�7ډp'髈j��(�sp�3<z���)�榯�>s<`�t���:�5��a����//�����Y�}�����W;7;p���t
�_��1\�~�A����7?���gœ�2�lU�P2f`b<�0�W#P�1C�*qk
1�IEND�B`�images/icon14.png000064400000002353151163531650007625
0ustar00�PNG


IHDR		��6�tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2EBF7B2350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2EBF7B1350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>��u�IDATx�b���?01;�Ù͌�A"2İk1����e�A4@1�>����/�=��H
�o5:c3�Ԯ��}��O�US9.��6��&�������r@�fٿ�g��}������ve��k�篻��������R���b����𛟗�
��.��V@������3X���	�:�;�>PyYl��%,F@v��e�ӗ����cdxte�>�X�k̟s,
����3�c۵~��o_���f1fff;w��kk�4IEND�B`�images/icon15.png000064400000002552151163531650007627
0ustar00�PNG


IHDR

�5�+tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D30598F3350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2EBF7B5350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>΅��IDATx�b���?�R!.FF)I
�b��@�Y�����h�b��1}%C��?012V��gf������*��W�ff��w�PP�����۫��S�������h@���99g�M����������������T��[R�ן߿Y?�}�����]���{��d��$׹~FF�.k�bf�@���K���N�tv����)d�Bŝ����;;�Y��V�����q�O�TUC�f^11�W����?���y�d����s��v��Ȩ���<I��LJ���L��������-�ǭ\\߮
�ocf������������5�X�� ~�nA
������-�
��@1N�?T������IEND�B`�images/icon2.gif000064400000005664151163531650007533
0ustar00GIF89a%(����������������������������������������DDD���������������bbb����������������������߻��JJJ������������ppp�������ᠽ�������������ڄ��������������޹���������NNN��Կ������������֡�����ѱ��PPP���������VVVMMM������������ð��������LLL��̉��������r����飣��������霺���Ɯ���������������������HHH�����������YYY}}}ikl���뮮�eqy�����ۍ�������������׿��έ����ӵ�ں������񧧧��˚�����������і�̊���������������������п�����������dlq��疖�uuu��������ݑ�ȏ�����������������ꄉ�����������ͥ����������������RRR�������̤�ӡ����䕕����������fff���aaa��՞�����WWWzzz�������ۘ��������������������������䤿ү�����������ddd��Ϥ�Щ�������ߖ�̙�������坹�����������������紴������������vvv��������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:68679A7B345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:68679A7A345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,%(��	H�`�����[hϞ�~#
에a�z�����<z$8p�^=�����/��#
����$ ��y���R���{�	
)�)��J�����{�<Lh�`�y$��J6a�|!�s�^D"��j��?]�t�#��+���e�݊�M@$`�5��̓��G�+\�y@�<�ȯ@��,��f�3�t����D�H�U��If][lX,��	F˽���a�J���C�^
����o����_\��p{X����v{
 ~!
��4�V�`�Ӣi}B�7��iȣ�+y���
XR�Ea�O>jt0�63Գ�?�$�Yt�eqA.^Txa>"�0��3�v�죀?
�r�&���5&��ъ+�����3>��$҄	��ca>+dSD!'�����@=�]=�cO��P>�)�
qL@���v�$�ϚW�J(c
��S�B�p�s�K�|�k�x�ϸ��]�p�-�r�=�@ρ^�C�=��p�0��Nߠ�>F8�N�3O>�����L5�#�:�#�=0�U��>�P��b��b<!����2�9�īPL��>�;m���C-ȫ>�`&i��n����u10>+����C@>�0�0��f�>�ˆ��sOH�t�����>+�AԼ��66ȣOP��]�3<1	o�SNS��	=*�d
�Ӱ�S��b�O�C�<��X�P�=g͌.�M$�
=<�C��s��x�<��C�p�4}L1�!@@F�4�w���>,�-��%`|D��P�pyd�y�[x�tS>�B$3`�������CI!�ӹ��7��1(�v�O=������cS\D�
�� ����P��OU>�?��O�@�ЁX
X���	7`�҅@�2�@D �NT ��
�{p�+�@�8<`�@��GH@H\����l���3��8`�
H��6<�}dx�ꈰ<�z$P��fv*i�)����#
;images/icon20.png000064400000003503151163531650007620 0ustar00�PNG


IHDR�Q�tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:6FBFC48D352511E08D5EE3222AAE0118"
xmpMM:InstanceID="xmp.iid:6FBFC48C352511E08D5EE3222AAE0118"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:84E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>
n֣uIDATx�b�9���o5��ؒ�?�
��L�/>0�g����O�~�
�����˾��?1\|+�,�ga|�8�ߗN�쯴9��Д���?g�	��on���=ß_J��bd�'����ÇW^530_��F��F6�'B"7�h#�%l�2���r�8����X��Ճ+S��c�ϔ~=5K4�фo�Rʌ����bx$lS�g_�T���^q\{�AZ<��+���g����Ab��/c;���3f�����
�տ���f�	���10��͹��3Ōb��������{�,�w2;�迡�{��2����ߟ�_~11ԯ�Z�dj�p�!3#3+������p���O���0�K�1�������l\߿}cay��#�??�

�LL�2�3p]��f4p�'�-�!�.-'
+%�%,���)&&�0�P+�ȟ&�~��$�W�(�?��+i>ͤXL�bjHł�b'66S�`kI���be��
151�Jd���'�k�t�w�έ_��n��<�^�:
��������e���ұ��W���<8UT\�
��*�a]��y�'��ͣJ"�J�U���0&�b��Ţ�'W���!ծ	��nhw���)����l�58�LGh��j��[�)x�,��oF�g������v	F˨o�k�����
�9���\�D�e�&�PHXg�<�[�L�[a���
���H�n���J�P��/���)�\�
�2TUE��#oK�p6�ᮕ͑�
��N8�&�U��������'�^.X��+�5�}�eUjP�J^��XXV!�c{ǘ�_�Ci��>IEND�B`�images/icon3.gif000064400000006072151163531650007526
0ustar00GIF89a,-�����[��������\��$������+��A�����5��z��4�����6�څ��w߹��@t����d���������d�����,�����%h�9��'S����)��}�r�+��j��K������,��\]^/��+}�����G��R��������b���9��kkk��g��K��I���<f�6��M��ttt<�ꩽԋ��T��U�����h��2��B����]�C���������%~���Z{�:�����7��P�����s��{��B��Z��2�����1����0��v��I��-�������[��Q��&��FSd�����ޕ�������W��=��6��9��M��3�����@����7���6���eee
��4����3��d�����*���yyy���nɓ���*�羾�0��6JeK��+�薖�1���3��Os�?��?��7��E��!}�����5�졵�_��L��6��0�������������������������������Ԣ�T��8���/��:p#Z�p�u�|����v|�_��R�󎏑V��1��4���g����$��^��$��?��E��:v����eoz8��'�����ո���ԋ�H��Z�񰱳?������������q��[�M��n��;��#q˥�������������������ǟ��*���0��M�Y��0Z�m�1��/����q������5��Le�������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:68679A7F345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:68679A7E345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,,-��	H��
n��X��
_��#B􀍚
xK��;b㉈<$���
�;�H����:Bt�+���țӰ;�dd[�4����5�
�DN�0��F��W�Q-m��4��)D(��M��+8����h�6���`ȐY�x��N�rX*�ܚL┐�a����҈xr����{
�Wo�Q<�d���Lh`�Ek:$��	�.^�ȸ�Z����>�d�T�n
��5D�
>�'�[���,�4�^�ٕ#"D$jd.\�խ�•O�S�
�()��	ډ��1JKtT
�8�AC8+0pQ���$z1�X�ׄ�%��!Q�#�N1��j���Sc�@�@x�
�q�#QL�N���k�'`��/\��J]ds���1BM��S@a�kl�E;�ĝ_��Hƣ�t�dl2��f��A��ਣ�t�@6t�0L~�I	(���#���C:���&t��hB�37�1�0���,"&N����$!�BADZ�
qC�u�a�=�z�3:
�C��4�W�
��7<�-��{�-@�<�9���(�_t�-�W��ǹv�!�Tr��
�SP��9#�@FI�b��AJ��l�&a��<��`p��x�L1(?h�?`s�.lV*��B�5g���C'�-�TF)�<�7!ts�@��J�8r��\�0�;�`�
��p�-YP2�@��
7�)7��B�l�
=�d��b��8�N$�x'��H
���D+�!4��	�1�� �L	���(���@�
�b��6+�
,��F$���Kq@C"@!����O,�%؈��Dh!(B�_�D��A0�_N|��
���N9���n�!����l�H`�D���<B
��pP������?LA�
�c8� ԆR <�GHB����@%��L��8�+V�
U��8ġ*v�C���B����p��hE
��&:�	�b+���%��"1�)V��``P+X�2�BhD#ˈh�@̢)��D�@ṃ���PL�*N��f�hX��F�Q��b*zHH,r�t�Y@����菑��	+��GV���	��*\1��А���*Z�D�җ���*	�[�R";images/icon5.png000064400000003224151163531650007543
0ustar00�PNG


IHDR���tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2CD456B350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2CD456A350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�LG��IDATx�b�e���f�����s���b

5����I��?����c�b���q@x�ܹk@���w��[�������Ĕ��g������ֳg��@�[�la`����ATT����?
�dsjFF�����;xl��s�h0899e��	������������###�SW�<��	���}���յ�h�R
fa@��h6/##�P��������_�@�3䰴��
�C���Z�%$d`f	pq1d������׊�������(��e���!˷ϟ_i*+�~|�!��H�3ScY�ԟ@��s22>Jn+���o�~���`����
Bp�1��/�0F�����AX������������TRTT�����O�8q����?���@����'
�RPP.(,,#)
����Ȱp�l���T���gx��ç��������"��?�$���
����[��o�0\�pL�0H$���'�]RR
������?���""`�\\@)��&;�����yxx���,ml�AzX��~��|||�����a۞=�p#<��ro>f8�m�n�f		��gN��v���O���J|||������	��4��۷�Ksr��ڹs"0q�d�&)aP��"AVVV%`KAS|��3`��ϟ����7)c[�&�IEND�B`�images/icon6.png000064400000003420151163531650007542
0ustar00�PNG


IHDR�Q�tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2921D10350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2921D0F350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�BIDATx�b���?0�}��A���b��0=xv����?��j&�����2���>g�{�!��7�7��~KY�\�\Y`�S��ݍ�[���8����߳�������m��b��k2�<l��׃�ɭ��ĸ�����������X@\9SL��ũ�S�f320�et��aX�T����\LL,�@��N=�dh^q9��ݛ7�N�f`Q�f`�����=û7�9XdVJG}3����={3P����@|K�A�1@a��O{�8���Yr��SR>�?x���Ӂ��
�"��
fN.QFF&��ظ�\\����c֟3�D�3�g`dfb��0p�-	c�����}�l�33����ߓ��[���Pr}�Q��,�C^��+�9Z0c5�?޻G�3��������b���.�/c����@��oB�z
@�T��0EO�g�T[�:T�RqP�)�Y]�
"(�����I�E
nNtRp'AD�"~�jL������E|p8��=�{�}Aց'�:F,�4��.Iĸ(�'[�H��pf�ua��ij��Kvg�X����s$��G{���;93/�HxA�W���4o.L�mw����=��"g��ߍZ=nU���u�^��`�dV�X��s#*.(W���5��H�Z&0<0�k%i��'�8Z�9ؑ�X�ߞuEA�i�x/��ȧ��ҳ�R�a���di��T����h�FqS,�-����ڇ�k[��R)hz8���/Dz�����fi���j��V�˕�%3)'*<qiH�ZJ
5��o��<�!X��/섐rG1�M�
@�;��/Y�IEND�B`�images/icon7.png000064400000003271151163531650007547
0ustar00�PNG


IHDR�t�tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2AD61F6350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2AD61F5350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>j�p�IDATx�b�����1�a?�ӥ����!P�,3݈cf8�?@1��ki�{������
�xs�����o��^n�
~~�9�����r�˗��F�7�ca`��rۛ�����U;@F#�%�@�TV�ɂ��O._fx�k��?Y�����Õ���Z_�ʠ"/ϰ�6v�)S��vƳ�;��ם�i01��2C���.�
����W�����W@�
h�ʟ�10|ca@HvIde%}x�VX��%��ҥ����@
R��J9��T�:����7~~~�G���M+`�T�b��gt�@_-_��PҔ�H���!���?�0L����o��3���ꆯ��>��O�;�IT����_�-y����b��,@�с���b5
�b!
��`�z9m���60�rw�b���9TWw������
>#G&H
�eu���b��������7o�~�����&&&q11!aa��FE#09��d��
�QQ�o�b`eee���cI))���g�&�zV`B`����B1�@�H�����IJ2̜5��?��+w0��C�
OQ���"܌,LF�8I�͚���-o��_���w��N�h�
�����қ3WM�Y���̌�w�g�����ՙa��U����j3D�ĀX�Aa��<Шc����^��a�IEND�B`�images/icon8.png000064400000003073151163531650007550
0ustar00�PNG


IHDR���tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2CD456F350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2CD456E350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>\�QmIDATx�bX������C/�x����b��3\�x�6���0(�
����g9��2*c����=���d�O99�1L��e`�"$�Ν;��
�g<#
𓗑�
$@�K�z좣]��/��@�nܸ����}�������2p�𰱼��w����i�7@��@�
�}���!�`���HG����7��MB������:�t�n�GQQ�
�� ��
ˇ���3�-X��3e
�|!!f��@���+�?�3ppp0���0�ܼ�
���d���q�ښ�����7o��P��VVf`����K`�)ŀ��'�4D�)&�A��dEi
�{h@�?
W��^�	�r�T�!I
�=l��۵���v�f;��������.s]�dRɓ���{KR8�鴷�sC��/a�'���x��8���ղ,�&C9�}�_D���J)��̖�lۆ�y���M�fbひK��4k����q2�1�ܦASFh��j�Cv�sӕ1�g���)�,3�'JR�X��^zPג��0��SZ������[�J)�5�#��
	?���]���L���n��IEND�B`�images/icon9.png000064400000003145151163531650007551
0ustar00�PNG


IHDRh��tEXtSoftwareAdobe
ImageReadyq�e<diTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:D2921D14350F11E0A714942B011F416B"
xmpMM:InstanceID="xmp.iid:D2921D13350F11E0A714942B011F416B"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:846B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>����IDATx�b�``gcKc൴dx����b��Kc�+������b0��g����~���F!!��������
F�)0Ԓ���r��-��w�2�߱��f`PV.|���O߿��������^�����GQ�
D�ۯ_�##Í�7�0=|�����bxp�*�77Cwu5H��n�Wo߾����d<uɒ�@���K
G�
���˯�?�����;���ݻ�9}z��w��}����g�6n<�Y޼y�����̌�$L
؁
M��������?@A�
��h4;�˗/��^���7�g���W��}����������?@�\v����^^T�C��۷G�8P`�\�ll��?>���Ϸ5�g�=x�b)�Ǐa�ښ�>w^�«����!������s;;$�`�����5�Yӛ�o`��l����5Æ����
6H$R���Çp�؁�u��Q�O@o%de��A�m60�ݻ����ɀ���ח/P�
2��ݝA__����ǧO`b��@r 5
�0}��l�_PP��ã!7))���
�"�A�P�A���ի��m��('���T$��ׯ��xq��_��j�.�?IEND�B`�images/iconbulk.png000064400000002746151163531650010344
0ustar00�PNG


IHDRh��tEXtSoftwareAdobe ImageReadyq�e<
iTXtXML:com.adobe.xmp<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS5 Windows"
xmpMM:InstanceID="xmp.iid:59941CA939D411E093F792C51DC4B951"
xmpMM:DocumentID="xmp.did:59941CAA39D411E093F792C51DC4B951">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:59941CA739D411E093F792C51DC4B951"
stRef:documentID="xmp.did:59941CA839D411E093F792C51DC4B951"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>:k\IDATx�b���?0����O�#L�eڑ���^��@
��������������{��1\�\~��/���/�o[��'��/�~������[o��9�>}a���%@�m���?
�r����g��L����+ÑG�}������/߾�]�D���������_�~��v��7O

M�������o�~�����U��i��g�A~�Q�s�:Y~������/D��_R|`30p3�����;�_���0|�������~c���+`z��X5L��o�/޽{���/��I�7?�d`����;߄�Ƃt�$�}�����Wb����oj�
o�v� ���	
[�����$�e&�2�m������:88�Ł~cC(�
v�!Ú�o�E�6>`P7�b8�j&‰�_d�a�����w�	0ax�P
�B�%Db�:�믿ۮ��A��4R��0�^�a��X���ǟ?��
�A�
e
�ـ�0��3��*H#H`hd@D(&C�|>��AN��m�gP4��L�k��tXIEND�B`�images/index.html000064400000000054151163531650010013
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>images/ip.png000064400000001640151163531650007136
0ustar00�PNG


IHDR�abKGD�������	pHYs��tIME�,�ޏ5tEXtComment(c)
2004 Jakub Steiner

Created with The
GIMP�ًo�IDAT8˭�]h[e������c�4i�棍m�Т,�u��ī)�0o�)�Ee8o����R�]�GA��L�7�0����v+��\?��,Mr�s��������{.��~�8���)�-]�
,�
�X�t�����ދ�����4u�lj�d�ȁ4c�(ˢ\o��i���ɍ��e!�ɹ��������`��W�'��M�
d(=��ؤQV�9?�r!��'��h��Ɋ'2��yG�D�pZm��H�C�6y.����K��Oho~��G�x�hnC���hCJLC�$�h/C���
�죤�����i-	�<��R.r�
އR�+@h�c����\�_$b)���
 kN;�N��p�@f"����l�R��,B�Rl�ޡ�l2��Z^G�,-�Roa�<�K����6B��B��E��zːR�5��hi��!iQhR4L:]�V��d���z�8�þT�B�(HC�򷶊ÇƓdF������&M/ȧ�^�]�~��Z��k7�7
�;����sK�[x�
=��ء��w�
���v�Ƕm��*��X]�|�/�|�x��B��HР��eq�弢�p�k��9.��ž�V����ίs3S��/R�P<q��Ó�%��J��g�u��^�lT�\�c�,�8���M��hfd6�3�$I��,��f׮��<[;��B����=���N��խ����P��N{]	�?�>���pl7�1��IEND�B`�images/kb-icon.png000064400000005511151163531650010051
0ustar00�PNG


IHDR00W��tEXtSoftwareAdobe
ImageReadyq�e<�iTXtXML:com.adobe.xmp<?xpacket
begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 5.0-c060 61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpRights="http://ns.adobe.com/xap/1.0/rights/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpRights:Marked="False"
xmpMM:OriginalDocumentID="adobe:docid:photoshop:4b6d0a6a-ccd8-11df-ba14-8629334cc09d"
xmpMM:DocumentID="xmp.did:562D8E6AEE9511DF883DE6AD8E9C48F8"
xmpMM:InstanceID="xmp.iid:562D8E69EE9511DF883DE6AD8E9C48F8"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:9DB61C9EDEEDDF119B3CEF1F2FC57A8A"
stRef:documentID="adobe:docid:photoshop:4b6d0a6a-ccd8-11df-ba14-8629334cc09d"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�u�aIDATx��Y[oE�]����iڦ�/-��4MZ!*m#�B������oTH��J
���(<"nMJis�M�ks�����w&3ݮ���BYi4�;;��s?���ɞ�K��`����׿�O$�咮(J���5�4���F��a�T��*�g}ZUթG�}��[�U�7]._�V��r��<����v3Z�th��a���?
>�#�����6�R��R��[,�X,�
����q����t$P�����R�����=��K�#��zY8f��X<�P��#n�?��[��Kijj��f��l�P"�8=[/�S�i���(���H�7�����2���B�A��6Y���Eʺ���2�͈��7�6�����56�׮�AD�U��:@d�i�ɤ��V��p�2��v��8�AT̉��N�U����,w:`'n؉�PήPH�ժ�����
lpKI
����cs5��	;m�V�幤��q:�_]]�A?�0��X�Z���'�A6�����h<xp�E"�ȧGɔ���|�y+d%f'��v�[���633E	�5iz<^�H�<�L�c"�L�e�Q.7l:��X7�fg��|O�Z��b�|.W�;N���	���Ž�c���u688���u�-,̓�(\P�x�\�bΒXK!Ub�����	Ɖ!�����
���i���y�f�9Nd1T,
:��r#p�oB%&'o�`����
@�@�JQ�gΎ���R@���*��_������
�D�.�F���	����j@�Q=:��;5����I61��i�'�@jPlzp
�KGG9 �D+y��C��;� ���n������4!xfX�
#�h�2P*u�mnn�L�����
#��̱sc��TqN�ݞ��N�ˎSt=��1��/?󬋈�M+�ŀ�}sb�JN��8�����Y�H|ȑ-,�1dg��E�	�m:�"BjEX��ȒQƮ�H\�g���bw�\D�E��$���,M(x22Ӧ`�f�L~<��(�ă9a2Z���8�(9=�QEQ;�ĭ���\2'@<x����s�|]�ɋ���ZxkG�����ؙ�'�6
",�L�9��H)�<J[EUQVq,'n��Vb���Y����ϙi88nV�+���P��-T�i�lV���9�C6Ɵ�`��]�T��ϯ9@$��;�ymy2�}����?�o
= 1E�:|��.km�-�*����9���8׭$>Ph
���s�zz|�Յ��q���oI��o���Ç�l���
���;�#�{7I}+��7���������ih�x|����Qj�J�um����"�R]0��Օ�pGq8�h�д���Z������)v��X�G_^^z{|���13J?!QjF�]$ӊC�����aii1��r��#I=�[�<#E���(�:e�)Ȁ��{Tb��;wf��?T�P,���/OcA�~�i?%Y��kUN�r�b�p�«u�+��?,���4��8e5ն��^=�J�A@��-=tBB\�`	�͉�*B�{�^�T��#�3����3�=:�Z�D�sCC��O�~f�SJc�B�_��5��d%�:��(I���m��f}�ϧ^��'7&�?�ø����
_�i��ﲭ��y�\E}*uT���2C�0��;�LN�6ɶ�&O*��kf�Tl(x"�R`uLaD�H�5��_���������K�s$��y���IEND�B`�images/loading.gif000064400000001323151163531650010122
0ustar00GIF89a�������������...���```���"""JJJ���ddd���&&&NNN���������888�����򶶶���������!�NETSCAPE2.0!�Created
with ajaxload.info!�	,-  �di���
���@�8�5p�{�۸�����@�.s��
E��B!�	,$`a`��i�����©�ҧ����X/(��;�!�	,6
 ��a,�$	"c�b�(�ϴ��2�����[��K���ӸN��U*�N�!�	,5
 ��ET��4b$I��<��uy�;�
�Ȅ>b�G��̑s9y�֋�*�R!!�	,2
 �di�ֲX�DQ��H�bRUEɴ]�:^��f�_Q�#����c�J��!�	,7
 �di�$q]���b�iمa�h㢶m�]
��a�.�M$��4_-66ˠ��R!�	,/ 
�di��DQ����r%R�
�5���p���Ěq��^-4CY��!�	,/
 �di��DQ����r%R�
�5���p���Ěq��^-4CY��;images/lock.png000064400000005563151163531650007466
0ustar00�PNG


IHDR  szz��iCCPICC
Profilex��kL�wƟ����P�L�W�Ya��B�!�T��t�&T[x�RdSF���†�l.(���C̐�`5�o�D�]�q�>{>=y�sr�?���TG��5�ƨ�c�LM��|H�	O����IMM�[k�\�Ѵ�)i��f���
����2��,��Hr�:�D�ԟ����6��
1��A�1j� j��UJ��
`\�V)V5��BC�
`o
�3���)�5�h*0�n
4c�����|#�� 
S�E9��_(�τ��O9���7KH��6�|�'?,

�6���p�.���yǘ���82�i�aS��`�^��hQ�C�'�D
QM���N��f
������}�;��,0�$�F��*'e���ŏ<3%7��S�z�N���:#u&۷ݯ�?6�}��O�����9��{��(itzl��/�$�$�$�-����[4�l�͸-Dz,�N�H
yE�%OW�)�����u�-��UT��k̵K��̾��7u�8��R�jo_|������g.�D�
���?�w��ס�g[F��X�p�q��B���t`��K�"Αޤ��cű��
�iN�1w'o>��w
v�0�n�˜Iq�*�Y\��!q�������5U�CL?BѾ�~^�Ĭ�@�$��rmHUإp�B�ŎΌ=�_�89�>%b�
����,N��/����s�����t���{��~�Y#+Yw�ܺq��߶���U7슮�^���o牢���C�~���#�cs��i<��#��ƅ���/�]��j��v{�~��ÿ�F_�q;	$x�HEv�<
("��C<$���%k9��6��r*���>�v~�
���2�z�m@8���X��(���Л�^����%T�o���?/@�%���׆��=
UG��F���C�1�')1��"u���5|ޭ-�EƗ�1WZ�����veת�_mZ�W��>p{������Kv)���������@_ӣ��	-խ#��)�٣��.]t��{��xCb��=1���p����ɪ���J'���ך�<�4���s@M"�	x�T!�V��e10�1X(��Q�����83
2/�(��b�3:��u�`�B�`%t��=�`�	�j�e3�@�O3�\C��̷�+l&FF%��eT�\
������ϴo�nw�P��O@XIDATX�ŗ[�U��k_Μqng.�Q�h1	Z1���>H���a|P����4��VH_jjKC[��B
�E��O��x��"��6��j:36�S�e��VΙq�/M���}������m�?�<�cǎ�$";D�+"�y3sfv�̎�e������gp���o�-{~�8õ��aڭ�n�b��
�_����[�n}�38z��O��y�f�S���9����9y��$	�CC�>}����_l߾}�8z������^ߴi3��E�?�]c��9���1280��5kX�n�Z�e��9s����w�m����>��Ç�����͛7s��e�:�N��ĉ8����C��drr�/2\��1���r�ʗ�l�2s�ȑ??��N����OS�Vɲ��'O���Y�~=�j�}��c�B�$_���Zycf�W���hP]��MLLąt���s�

�f4[-�:�?���7|cǎ��;�СCo�y����$���$IB�Z��l����N�@�����Q�v�����yV�ZE�q�Ν;�صk����}��Yz�U�v�uk��{e1�E��U�V�.
�:Po�޽��bs����i��.
�<��^xl���eO<�+K*�
yg��"N�|��i�+Kj�!���
�1��Y�����aL��������'"��g``Szl�;Mkf�i���X'Ϗ��	���X�bn��Z�p��!3[�Q��k͌�.�t/��X���ϟ?`�|'�3�Ji�0i�ْQ��1��a��Is���6���7	�O��&��Qפ���$�
{��S
 "6
���o,yr��^����i��{�l	�=HZI
X(���BB�-����,�lr�oQܺ�oþKoϊ�Q�W����PGWS��"=5�2�TjHއ�K�$��]aW�\���6�)�|��5#��py���:0
"�u�|�5���E��ܑ$�䐥H"
�K�D�6�����F����$�A�G\���M�>�SH=
q$yI�$��*���ڐ� mMkc!
�@�"�_����(H	���&�>��*"H����Md�a�AВիs,�D,�xo̯�]�e(]D5bf`�F�P���{@��p��~�w�a,�E��_a�)b��R��o��0�QQ5���K���K�ɑ$��Ȝpǁ�Qq�Q�ԈAq^��>��~�F�SEC$���+���	"w;`�`
t�x��^Ҡ$��A)�>�e$z�bg�/"��g��zGP��Ys���͍}�H"D%�,��k
�X8,8����p@���QC��C"D�)���JtF��z÷"��i����s��.�}�<�<!��8Ez�Pڣ��y�;E���Z���/�9O���.��?
	J�%��h8��R�hD��f �S�hq�E82
Do$�n�$��
���Dg�����Yd.�Ɲ����H��K��%���K��Z�Y�脲a��>�@PS���M�4|P�n7���]�q`|��;>ȋ�,zd���L�o�w?d?0�
��v��YT���
�<<>E(�hm
��Κ~;�y�IEND�B`�images/logged.gif000064400000000346151163531650007752
0ustar00GIF89a�͕߷E��Ԡ!ϘɋܱV��Zޱ:�o�ڻԤ٩/۳m̒�A�JƇ�J������a������!�,c�%��eZdZV �:���V5Q<%-7�@h<$�[n7�(*H��GI�IҲW�FK���U��@��^Nh5�
���i�q�r0&8�1#{��'�#!;images/notes.gif000064400000003322151163531650007636
0ustar00GIF89a��������򪻻��ګ��6Y����������O}�?f�b��[��U����۴�Ž��pppJv�R��_jl]�Ý�����e�����d��X����Û�����Ik�Uv�ez�`����𣴴�����잯����www��ܾ����̮������������>a�����f�����������������3�"�qn��������6Z�����������������ͩ���������������������������������������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:BF6A3C33352211E0B0A8F71350810230"
xmpMM:InstanceID="xmp.iid:BF6A3C32352211E0B0A8F71350810230"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:84E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,рg
"g"
�/]�]Ig8*>7K,T':fgcd!V]X?a^\fg
�`e]b_Aa�f
g&�eD����&g�[�Bafg�1Ǭ��g�M�9�UZfg�(�ɰg�+�-��fg�����̂3�8	Q�)Cv����=�@)R��&fI���#HX1�#l9@�ę+Y>`��d�0�(I�	�@;images/notify.gif000064400000000553151163531650010021
0ustar00GIF89a��������+����#��;��
����R������B��H��j��a��C��R��D��f�������1����y��3��
��M��>��A��,�ܣ��������������j��q��e��Z�[��s���Ђ��}��v��x3�f!�7,���px�T�H��bI:e4
�Id\4-S�*$9b0ǔ��<��eD-%���%
�(ҨM�,3�H!C*���C�+��7.��7

����7���
�\TA;images/open-ticket.png000064400000001044151163531650010746
0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<�IDATxڌ��K"aǿ�����2�)���̥Þw��=��֥�A��)ļ�Wlz�x��(QdEYGWg�̙y{�q�('{�3���ϏyG`�a\��闏?9�'�IqNhC�C��2���p^��VK.
r�^��G�n�K��@
�B��rP�$A�eJ�V��)'MӈH0D6�E�R��t:3�Ri7�ɀLi��
���뭚��r�UU�8��b�AH;�0j����l"�Lj���F�H$h���c{“"�m�(�nOde��
>��v���O0{������p���%yk@�{CS`�5��5�A��@���qTDz�!2fZ6�1���B|20	����<��=�Y�4����3�q�21�^��]��}CLb��]6����~Y~�N�4��"־�<���菴�9X��k*}�9
Q�o�*���q�.�!:E�&IEND�B`�images/open.png000064400000001777151163531650007502
0ustar00�PNG


IHDR(-SPLTE3�f���������������������˘�؃�ڋ������������ܣ��o��i��q�ߏ���Ճ��|�ό�Փ��e��k�b
��z��Z��c��k��q�ّ��r�͂��T�]��\��f�q��d��A�F�J�L��^�S�Z��t�$ګ3ڬ<ٯΘ̑Δ#Л5שH�ǣ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������`�ʎd���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������%D
�tRNS@��f	pHYs��~��IDATx�e���0EQ@K��(`ņEc�JB2��~83w�]E�`��s�i*�KP!�[����%����
`6����du-�C}�1ݡ�a20��&	0���/�(��Zo��8��P�>9Pz���?�0ƮyI*�v�wVy��f
��$n�IEND�B`�images/print.gif000064400000003314151163531650007643
0ustar00GIF89a���僃�}}}���;;?��������������臇�����������ttt������XXX111���hhh������������������˙����⟫����
 
���DDD������yyy;;<vvv|||�����ϴ��<<@���kko��岲����VV\��퀀�FFIDDHQQRfffCCD��•���;sY��ť��667���C�������󫫰�������������f�f������ػ��IIJiiq��������������<i�___FFNTT`+\z����ffg��������ɰ�������������¶�ǻ��DDMMMZuuu~��YYY���!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:BF6A3C2B352211E0B0A8F71350810230"
xmpMM:InstanceID="xmp.iid:BF6A3C2A352211E0B0A8F71350810230"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:84E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,ˀq�Ok��T���SeEi_��J	@q4�qj^��<�=N���"n���".��)5D2PB(9Z8:'AQW1
;c#`6-�7#gF
+U3l��[L,Vf!\m�	�MIȼ@�D���`���p2j�8��L��.Y��I�5hp$��%}xó'��;images/print.png000064400000000573151163531650007666
0ustar00�PNG


IHDR(-SsBIT��O�HPLTE������������������������ݾ�������Ϣ��������������N������kkk�/NNN
��
tRNS�������������������������D6	pHYs��~�tEXtSoftwareMacromedia
Fireworks 8�h�xtEXtCreation
Time1/5/06ÿ'�[IDAT���K�0IQ�B�7�@�u�ټ0	?�.��Ox4b4��`X=4�	t��r�TA$Z��O�{&-{9Ɣ2�{�'�6��q���
�	Y=K{IEND�B`�images/raty/cancel-off.png000064400000001273151163531650011504
0ustar00�PNG


IHDR�asBIT|d�	pHYs��~�tEXtSoftwareAdobe
Fireworks
CS4�Ӡ5IDAT8���1K[a��*�8��o$ڂ����_�&jݥ������v�LU��E��D���+�~�u�iK
|�,��}9��|�s�����y�F��1�ιI3�Z$u���������^�:��sÀ0�1A�T���2�\c�~���sz�ޝ�/���#��_���D�\�����q�1>>���$���\__$}���8�a�^����R�R���8�1Ɛ��H��9;;����Vҧ���IK�|��>WWW$IB�$Hb00H��f�I�V�󼒤%�̯]�}ߧ�����D�ݦ���W<<<P�V��<����l6K�������?O�h4HӔJ������xyy!�c�Dž$�1�9�Ԏ��c6���F��O��y
:�Ƙ�pc�^�٤P(��)ccc#fk-�b���c�s{��o�����`~~�L&�+,�Z2��z���C�8����igggA�����z�NE���c��X,255����Vk
�s#(ooo/H
�V����������8���%�Q�_����AҢ1f�97#	cL�9�+�[���-�	yK����8#IEND�B`�images/raty/cancel-on.png000064400000001313151163531650011341
0ustar00�PNG


IHDR�agAMA��7��tEXtSoftwareAdobe
ImageReadyq�e<]IDAT8˥��KSa�[���n��QP��2w��ܦγL�[,bi��a�A��\�C��v��_2Ml�ZFjס���NMjm��kʷ�`&.#z�����<ϓ
���bV��P�T3�%�I��{G��qRiv�ȅ�
�tz�#E��6����Edd���J�`���DR�2<]N��;�4�Ѿ;���m>�7��8��ɀQe6�L�I���t��殷c�q!z�|v��j�/Xi���@��
�%1|h���l�
!���|������!
�Y#�u�U�N�w]�˼H3��u�	t]E��>k%�I�f��o���R��D:�0��`�~�|�
���(r�
�on�3oG0!�$����V��
�*[W0_������-+����
d��W�&�2�ZfMF��VJp�iF&B��
>��R���g�-�
�~	C�m��ڴ���ER�
ឫ�
p�5ްy����+��21���K�aw�h�`�
��#���a�Z񽞆�T�Zo���L��ѓ���`"�(?��'��ˎJv�K�ކ��|�:�G9[�a�w8�2
Jw��f'��y����m�zsӘ��Tsw��_��_��ιIr�IEND�B`�images/raty/star-half.png000064400000001233151163531650011364
0ustar00�PNG


IHDR�asBIT|d�	pHYs
�
�B�4�tEXtSoftwareAdobe Fireworks
CS4�ӠIDAT8���MHa�����k����FA�&�q(��u	ɓBj݄"ȋW
��4"�D�y�:uXvA�����J�V4��l3��t�
�v�?<���|C	��ɤS�K1�T��nW?0X�)��UG�����
�N�����#�"��D"p3�NU�skd��բ	�EuM�N�N&�jȤSu[Ym�"�m��W��$u�M
�Q�k��|9����|����
���m
�����s�gC�i@ض�iJj��"e���IF�Fwu]z�w;Y�sݤQ7A7@
X��Q���<��X_-��'��o�l�u��~r/&8�+Ҿ�����q��!X_�`~~alvv���#v�b����d�l��z(�0M���,��jko�5��_x=�'��{��a�
��ǒEߘLp@�h��ʁ��JYY�P��h,J��Njط�C���˪�r{qq�cfz�m�c�h4�i�[s��N4,*��;�����7N�-~�f��C�\��J�!(�'w{�����.
��CW�����A)����ߪt�\IEND�B`�images/raty/star-off.png000064400000001255151163531650011230
0ustar00�PNG


IHDR�asBIT|d�	pHYs
�
�B�4�tEXtSoftwareAdobe Fireworks
CS4�Ӡ'IDAT8���?La��^�k{׻�-`$�ł	�C&T7eqra¤	qrs#N��f#d��ѥiMt�"ZJ���Dۆ;*�ρ?C�賽y��o��ȤS�3�TO#�ڈ��p��@i�=
�ÑH4�I���)
�Ny�����(�T&�2��z�2������K�a�t)��|�ޞ������I@&�J��4�Fٯ:H)�4
ǩR��ukض
���$s���t(��Z'mmmg�@J�mۨ�����tu�`�&������G/��қ�7��bB����86RrP��86�����啷�c�#p�ƕ���eŅ&n��~�U�G$�Z
U�Q)��o|�����3�^���+�DG�J���xp]��.�"�e��ͭ����ֹ5655%��a[^���@
����:V��8�9
��1t!����~�B��bZ&B�N{�|eU�u�A�P`�P�9��LJ*�b�IssK��H�O�
�{��ڧ�����ɧ3+�l鈚[��}�D+��K=��͎�%�����hh�n�x�������hD{��IEND�B`�images/raty/star-on.png000064400000001167151163531650011074
0ustar00�PNG


IHDR�asBIT|d�	pHYs��~�tEXtSoftwareAdobe
Fireworks
CS4�Ӡ�IDAT8���1h�A����5�6�&�(��D�T���8�(�ԡ*N.'��E�tp-�A�P�E���mjb�wibI@�������w��.��ݟXyJt�ݚ�N�2""P�؍�����Z.bkK�uqh�Oujď�S�,e���W��`�Ӣ@�����vnh�W�3�_��\�{�Nx�Ky�N)��ߓ
���0�al�5=EH1�nro7���:��~N��|�`_#���s`M�+�F�6��
$_���^�PO��2!�Q��?�6���._b�r�M`q���	���7�������/<bv]�t�c��)�j��e�6���8;�Z�-�K��3
A�Nt������kL
2b4b�Ќ`Wm4$��������
�a��9f�%�?�𾭃pH���Z��/mŒ�[\����j9�����R��юV���F��N_}�����/߁;/�����<n��9��|.�ddK�IEND�B`�images/referer.png000064400000002763151163531650010167
0ustar00�PNG


IHDR�asBIT|d�	pHYs��~�tEXtSoftwareAdobe
Fireworks CS3��FtEXtCreation Time2/17/08
��XtEXtXML:com.adobe.xmp<?xpacket begin="   "
id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP
Core 4.1-c034 46.272976, Sat Jan 27 2007 22:11:41        ">
   <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
      <rdf:Description rdf:about=""
            xmlns:xap="http://ns.adobe.com/xap/1.0/">
         <xap:CreatorTool>Adobe Fireworks CS3</xap:CreatorTool>
         <xap:CreateDate>2008-02-17T02:36:45Z</xap:CreateDate>
         <xap:ModifyDate>2008-03-24T19:00:42Z</xap:ModifyDate>
      </rdf:Description>
      <rdf:Description rdf:about=""
            xmlns:dc="http://purl.org/dc/elements/1.1/">
         <dc:format>image/png</dc:format>
      </rdf:Description>
   </rdf:RDF>
</x:xmpmeta>
                                                                           
                        
                                                                           
                        
                                                                           
              
5Rd/IDAT8���1N�0�?WK��p���;7���n��Ԋte�K]%@EH���Q�R�⸶�-O������?;JDh�V��.�Z(
��"2T\
T��A�6��O5�_�Ґ`xĐ�����?�e_�D�kA0>A����בfCܭv�j��c��o�U�t�i(�1��M���\>�^2�t�,&��]�:(2&��@E
|��5o_XL�5b��gׇ{u��=]�@�J����*�m(uЫ�R�r�|E��H�NBۼ���|6-�Q�)�\�����D���"�Tc<_QIEND�B`�images/refresh.gif000064400000001541151163531650010145
0ustar00GIF89a�V%-*;$;&<,<*E.A".F&2J*;WWc{|��z����������������������������������������������������������������Ö�ŕ�ʘ��Ě�ɞ�Ɯ�Ҧ����̤�¢�̪�¬�ɫ�ĭ�̯�ٱ�ų�ʸ�ϻ�ͷ�Ҵ�ٺ�Կ�ڼ�ܹ���������������������������������������������������������������!�,��VVVVVVVVUVVVVVVVVVVVVVVVVTVVVVTTURTUVVVVVVVVVVVVVVMB4"
7FMUVVVVVVVVTVTV?R/-
@VTTVVVVVTVV7/8US0-6VVVVVVVVVH8JUUSP2�@TVVVVVVM/:UUUSSS.))/MVVVVVVA5RU	SP$U
?VVVVUU45U'9P>U9-5TVVVVV" <U.$$*%SE/VVVVVV 
:U'(#(S%%$S9/ TVVVVT5/<S.(U��P.#USG
5UVVVVUF#SSURRU<HVVVVVVM5/
=ULUUUD;IVVVVVVT41'UP
CVVVVVUUVV82U0 /@QVOVVVVTVUU:!
8!:UTVVVVVVVVV�TVKB":"INUVUVVVVVVVVVVRUVRUSVUUUVUQVVVVVVVVVVUVVUVUVVVUVVVVQQ�;images/replies.png000064400000001602151163531650010167
0ustar00�PNG


IHDR�asBIT|d�	pHYs��|4k�tEXtSoftwarewww.inkscape.org��<�IDAT8�m��oTe��{�t�3s;��3uJm�@��ɠ�*$"qa��Q�+ݙ5lԥlL��6�F��DхD�X�T�-�:)�X�3w�~�.ZL��s���99��f�{���
;�2�	f��V�c����Os�ڭ8sS6�"ƅ�{F��l�J6X]�̟'��m288�5>6��m�Z�>�KO}t���-�v��fK�����www5nb��.�hn�l<t���b�d"�F3}�#V����"�m���k���H$�<�����R�>�DD?4~�-�bDp
2���`L��,�I�V��f��G;Lg��(�X���8�Ÿ�i�__X'�{9���S,,��<7���P�P�	ÀĖ8:���/r6��=��m;���j���}�R(�D�ZoA�!:H&�A���yx�(�01q���v�=�����0D|�%b(���ǟ���
�͂Ȇ�l8
h���G��
�����^�K%*��S�mR���ׅ�g h�
��\�F�I���2X[)�q�C��?�<}��ZD��q{x���8ض��7����4�`��\/��W>a�8�$IL�@�`�����.v*���L�)t6
��*4�Q��rG~�t��z�N,CDa�~P���w�ӝi�ELB��ry��Lo7�
p��kM����+�5s�(Cͦ���ڲ�\��̌577�(�J�V�x�8�g�Gy���Gӵ����l5���j�B����|�l�<7��P_|ذ"�X����'��:}�|���?N��-�IEND�B`�images/search-button.png000064400000005755151163531650011317
0ustar00�PNG


IHDR�$	pHYs��
OiCCPPhotoshop ICC profilexڝSgTS�=���BK���KoR
RB���&*!	J�!��Q�EEȠ�����Q,�
��!��������{�kּ�����>�����H3Q5��B������.@�
$p�d!s�#�~<<+"��x��M��0���B�\���t�8K�@z�B�@F���&S�`�cb�P-`'������{[�!��
e�Dh;��V�EX0fK�9�-0IWfH�����0Q��){`�##x��F�W<�+��*x��<�$9E�[-qWW.(�I+6aa�@.�y�2�4�������x����6��_-��"bb��ϫp@�t~�,/��;�m��%�h^�u��f�@����W�p�~<<E���������J�B[a�W}�g�_�W�l�~<�����$�2]�G�����L�ϒ	�b��G�����"�Ib�X*�Qq�D���2�"�B�)�%�d��,�>�5�j>{�-�]c�K'Xt���o��(�h���w��?�G�%�fI�q^D$.Tʳ?�D��*�A�,����`6�B$��BB
d�r`)��B(�Ͱ*`/�@4�Qh��p.�U�=p�a��(��	A�a!ڈb�X#����!�H�$
ɈQ"K�5H1R�T
UH�=r9�\F��;�2����G1���Q=��C��7�F��dt1�����r�=�6��Ыhڏ>C�0��3�l0.��B�8,	�c˱"����V����cϱw�E�	6wB
aAHXLXN�H�
$4�	7	�Q�'"��K�&���b21�XH,#��/{�C�7$�C2'��I��T��F�nR#�,��4H#���dk�9�,
+ȅ����3��!�[
�b@q��S�(R�jJ��4�e�2AU��Rݨ�T5�ZB���R�Q��4u�9̓IK�����hh�i��t�ݕN��W���G���w
��Ljg(�gw��L�Ӌ�T071���oUX*�*|��
�J�&�*/T����ުU�U�T��^S}�FU3S�	Ԗ�U��P�SSg�;���g�oT?�~Y��Y�L�OC�Q��_��
c�x,!k
��u�5�&���|v*�����=���9C3J3W�R�f?�q��tN	�(���~���)�)�4L�1e\k����X�H�Q�G�6����E�Y��A�J'\'Gg����S�Sݧ
�M=:��.�k���Dw�n��^��Lo��y��}/�T�m���GX�$��<�5qo</���QC]�@C�a�a�ᄑ��<��F�F�i�\�$�m�mƣ&&!&KM�M�RM��)�;L;L���͢�֙5�=1�2��כ߷`ZxZ,����eI��Z�Yn�Z9Y�XUZ]�F���%ֻ�����N�N���gð�ɶ�����ۮ�m�}agbg�Ů��}�}��=
���Z~s�r:V:ޚΜ�?}���/gX���3��)�i�S��Ggg�s�󈋉K��.�>.���Ƚ�Jt�q]�z�������ۯ�6�i�ܟ�4�)�Y3s���C�Q��?��0k߬~OCO�g��#/c/�W�װ��w��a�>�>r��>�<7�2�Y_�7��ȷ�O�o�_��C#�d�z����%g��A�[��z|!��?:�e����A���AA�����!h�쐭!��Α�i�P~���a�a��~'���W�?�p�X�1�5w��Cs�D�D�Dޛg1O9�-J5*>�.j<�7�4�?�.fY��X�XIlK9.*�6nl�������{�/�]py�����.,:�@L�N8��A*��%�w%�
y��g"/�6ш�C\*N�H*Mz�쑼5y$�3�,幄'���L
Lݛ:��v
m2=:�1����qB�!M��g�g�fvˬe����n��/��k���Y-
�B��TZ(�*�geWf�͉�9���+��̳�ې7����ᒶ��KW-X潬j9�<qy�
�+�V�<���*m�O��W��~�&zMk�^�ʂ��k�U
�}����]OX/Yߵa���>������(�x��oʿ�ܔ���Ĺd�f�f���-�[����n
�ڴ
�V��E�/��(ۻ��C���<��e����;?T�T�T�T6��ݵa�n��{��4���[���>ɾ�UUM�f�e�I���?�����m]�Nmq����#�׹���=TR��+�G�����w-
6
U����#pDy��	�
:�v�{���vg/jB��F�S��[b[�O�>����z�G��4<YyJ�T�i��ӓg�ό���}~.��`ۢ�{�c��jo�t��E���;�;�\�t���W�W��:_m�t�<���Oǻ�����\k��z��{f���7���y���՞9=ݽ�zo�����~r'��˻�w'O�_�@�A�C݇�?[�����j�w����G�������C���ˆ
��8>99�?r��C�d�&����ˮ/~�����јѡ�򗓿m|�����������x31^�V��w�w��O�|
(�h���S�������c3-�
cHRMz%������u0�`:�o�_�FIDATxڌ��fCQ��$�B!�J"��m��>@)�E�]u�m�
��U�6�UH��U)ɦTK	��u3�q�=�v�����̙9@)�J��Ԑ�*i�2�w�Y{�.����vi<`->-#�p�
'`#����y���નo��*��6
I:���
�����˽����зv^�Z��[�&��t�z�)�
���9^0���@?��T�-��|�
p�I�M�����3E��b�<��j��m`�Hv�@%��Uq���k-Iߒ�
�|���b�IEND�B`�images/search-icon.gif000064400000003254151163531650010705
0ustar00GIF89a����000///...DDD���������AAA���������222<<<��Ϭ�������š��������������KKK������������QQQjjj���GGGOOOUUU666777EEE������sss���444������NNN������xxx���������������lllLLL���kkk���}}}]]]���SSS���������uuu���---((()))***+++''',,,111���!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:6842CC2D345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:6842CC2C345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,��HH>?5���$4K.KK	���#DD,K��D-K*E��"9K��7
F��8K
��BG��G
K%�GI��IK1�IK
�IK0�AK)C�C@K&�3K';K�=J��2:V��A@��!��A�-y���ŋ)TX��Əm$�$;images/search-icon.png000064400000001203151163531650010714
0ustar00�PNG


IHDR�asRGB���gAMA���a	pHYs���o�dtEXtSoftwarePaint.NET
v3.5.100�r��IDAT8Oc���K%���%�„w\����]�շ]��w�-��
1�Tv��Xc��������=��q�G b��@r
5P��LV�I;n�����~��{{�}�u�>��	b;�@r 5
�Pm���������Տ�?�ܽ��7ɁԀ�B�!�p��i���W��7g��7�+b
�
9��Z�6)��L�o���ޖ��W�:O�I�4(N���@j@j��@
��M�u����B��̦n��]���Al�H���
�cʌEK��)���/�#Z�x�2���DK'���jC
��-|!R4�PA�[�����Fo�Ab 9
{
T�4����
���/[�_0��P~���0��b��5��Q��
�vvvg�������737���P�_y�/�����1��@��Pm��gbbr6
 �DD�##������Pi�d��������ڟ%%%��RRR
���%$$�B�����ʘIEND�B`�images/search.png000064400000001203151163531650007766
0ustar00�PNG


IHDR�asRGB���gAMA���a	pHYs���o�dtEXtSoftwarePaint.NET
v3.5.100�r��IDAT8Oc���K%���%�„w\����]�շ]��w�-��
1�Tv��Xc��������=��q�G b��@r
5P��LV�I;n�����~��{{�}�u�>��	b;�@r 5
�Pm���������Տ�?�ܽ��7ɁԀ�B�!�p��i���W��7g��7�+b
�
9��Z�6)��L�o���ޖ��W�:O�I�4(N���@j@j��@
��M�u����B��̦n��]���Al�H���
�cʌEK��)���/�#Z�x�2���DK'���jC
��-|!R4�PA�[�����Fo�Ab 9
{
T�4����
���/[�_0��P~���0��b��5��Q��
�vvvg�������737���P�_y�/�����1��@��Pm��gbbr6
 �DD�##������Pi�d��������ڟ%%%��RRR
���%$$�B�����ʘIEND�B`�images/searchbg.gif000064400000002611151163531650010264
0ustar00GIF89a]���������������������������������������������������������������������������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:67FC0460345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:67FC045F345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,]H@��D$y��df	j>��h*0
�r8`��Db0�P��|0�L.��X,>�		�!���%�%A;images/searches.png000064400000002042151163531650010320
0ustar00�PNG


IHDRa~ePLTE3�f�����霨������𱱱��������د����������Ѳ������������ڬ��X\^nqs������000V[]```��᰹�@@@)))YYYHHHPPP~~~#$%hhh888���������������������tRNS@��f	pHYs��~��IDATx�m���
�gL��B��2+��J{��p���Ŝ��Y��!���e�s��u���	�	@�c�:��D�$��)'!$S4%8�s�X�$X��¢�F���2���A�㗜LQ�5e��]��ȋl'2�<YS��ƞ�Ʌ%��)�+E�xfE�z<���nʬ^l��j$���S3������q�xIEND�B`�images/smallicon1.gif000064400000003242151163531650010551
0ustar00GIF89a
������������ұݼ����������մ����ܺ���|���������Ɯ������[�پ�Ȣ��������������������������̯�����������ҫ�� l������ͣ���ڷ�������ܽ���׻�������έy�������̬y��������������ڡ�Ȁ�Τ����ٙ��׹}�ފ���������̬z����ʭ������ʢ�L����ԏ���ְ������ܽ����Ϯ}��g�������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:6882931A345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:68829319345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,
��ff�fD4>N@5!+f1#6a�aLT]-e���[Z
/�K2

)
.<b��I&'Gc��cVC_BJd��dX7fO3AWMR,FH;�`Y`�("Q��%0��:@��Ȕ?�
�H$P�	��;images/smallicon2.gif000064400000003327151163531650010556
0ustar00GIF89a��ܘ�э�梩�A�ӊع|ۼصo�ѝ�x;ݾ��۔үh�����ۗ�ؔ�…�x�֎�ᛷ�M�͂ϫd�ږ޻u��۸r�Ԑ˨a�ԋƢ[�ć���|غ}������ܽ��Ί�ϋ��g��ޗ�Ї�zղkڼ�ӏ���ڒ�ߘ�ؐ�֒��쾛T޹l��fӰg���ϝ<A��ږ��n�Ӏ�`���ٕ�Ԑ��.���˂�����+�Ј��믂(����������΅�磌~&�_�ӏ�Ї��?�����2�ű�ݙ��>�ߛ٩H��񭺠m��ǯ���-�܈ѡB��0�ѐ�ήŔ5�﫩}&���Ց��ۗ���ד��Βf��~���!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:68679A83345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:68679A82345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,րxw���x�"gCVBP�d"�x.bm<A`�a.�RThj@=�!22!>
 G�$&&$l_�+44+[

66]D�/i

rO/�,55,f''11Eq�33K00tMu�Т�'#F�H�G�DX�@�J�(P\A�ύ
LJ���ƀ�~F*pQ�@E�I��I�`�M�$Z��/s�Xj�N�1Q�&
;images/smallicon3.gif000064400000003254151163531650010556
0ustar00GIF89a�����㏡L������¬t���ұ��ݼ������������մ������������uB�Ɯ�������|��[�پ���ܺ��Ȣ�̧�����������������ͣ�ʭ��������������̯����׻�������ܽ�̬z̬y�ڡ������������̢�L���Ϯ}��������髏R���׹}�ԏ�ފ���ְ��������ݻ����P�ҫ�Τܽ��Ȁ������έy���������� l�ڷ����ٞ��k8��g�����������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:68829316345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:68829315345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,��h����h

�
R_D9[#M&
h 3@:e�eNUS
^Ld��d1I)!HZ/<aCfPf�GQ-%bb�"T?6Vg��gFXh40`J(	7	E5�'.]c�Kc�cE��"X���,<�A�‚W�P����	A|L`
;images/smallicon4.gif000064400000004173151163531650010560
0ustar00GIF89a��L�������uA��������������Մ�؈���������������ؤ���������������̀�k��֒�ρ��ҙ�ʀ�Y�����h���~�ʀ�̢���׊�ؔ�P�߹n�����������Ҁ�����ߌ^��������������ę�����䒎��ј�Ӏ�N��������������椅��ۘ�����ׇ����ô���˴ֵ����ѭ����z�̀�����������ڷ�Ϯ�������ڳ���ی�Շ�ݐ�͂ܩ�����Ճ�؉�������ݒ�w��܎˰��������ٻ���֋�ː�׈������ȶ�ي����r�Ď�f�����բ���ױ������������޿�Յ����ף����ޑ�܎�ֆ�Ӂ�ј�̂��~��ӌ������́�X��ڋ�j��ޕ���������������ס���y�����������щ���{�a��������������܏�[��Ԃ�ϑ����ˀ�������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:6897235F345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:6897235E345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,�_	|UKDj
\�ɓ�08iD�%T�`C�
 O�S䕠.���Y��[���
	�!�
�1f�"P�,%y� ��\��1�
��5s����
� �L�O�(4x0�ǥF*d����W 8@
�]8�0�U��Lx��8^��ɀ�ǐ
�����%wHa��DH��bxAqfF9jd��ԢJ$�yDÏ8J�X���-�x��0�0�D���1oL�P*��o"e�t
 ;images/staff-icon.png000064400000001346151163531650010562 0ustar00�PNG


IHDR�atEXtSoftwareAdobe
ImageReadyq�e<�IDATxڄS[Ha�fv�qw�jG�Դi+���҃/��=D�
�b$d�PX���I$=*ty�
D"���U)EQ�ܢ2w�23;��Dv��9���w��J&�H����Z�����h�8nuZ�4H��%����t^
T�@U]�ב�ΘI�5
��CUU��G"�W��ZH����aH���.��;�D�FK���e��
M/�yz�u!�,�a)(a��{��/g�Le{g�]<�K��PUY����q�Nb���W`�m5P]�B���e)��
���^�W�`���[�I�%�X��I+�M޽�t|`�U^�Y�n�����:>|n@��w�`s흗�o'��1c����F�t��x::�8�`�X�Ƌ)`bbe��#��/�2���
��p:��n7�(=66��}�����7���{p:��@@�$�	�?���N��^��i�Sy�Q;�󌢨�ɱ�����p<��#�07�L^ev;A�`�g�4�f[a����2�P��
��EK���<z>�f�I�F%.�p��PH�1��h"E�(F2G��^\��:l������A�dS����(!�Hd>�Blm���4H��<�-�I�A~]J
�|g<�66��_��ܓ73���`
XK�/\�IEND�B`�images/staff.png000064400000011530151163531650007630
0ustar00�PNG


IHDR@@�iq�IDATx^�Z	p]Wy�ι�[=I�nY�8&ر������	e�V:K�-KC2%���%�Δ�--K
0��v
)I��@�NjlK�l-�����w9���=��%[Sr��ߜs�}z��/�?��)���L��K/kaZ)�K�}�w���
�/d���k�Bs��q`����ÔO���]%Ճ$ȯ�;��=��UD�"�mG��5�H�F$�@禍h�����8q�*��,����������:�G�x��s/mu>͚�H��Dd[�)�dyn��q\�w�&���C�|v�m!ux$��N0vߗ�k�1�?���խ�@�Ie�W[DF)

�(�D��
�X�J>@�2�`��`P��p�,�>/���Z��T?��m�w�TD^"͡���#�Rb��C_���Mpn�0�'\�9��y!���6�)�!q�=/�"H���R	��S�*�h:
n0"�4i�2
���00p��B�?��ږ�W���q%�LY�煬@#c�B(A�"�[)ïV�nmC���4IC�A�B)�b���T�o���W��ĕR)��]�E��C��#ݰ,0ƈ|�[�|��;бa3��=0-l.�8c��k���^lK�����ͫR��U��)�aދ���}(MF��ØB�0߫
�\�Ê�H�-�fN�۞@s[3�M�n�1$c��J�LI�T�pP'�P)QK�IM�R,azl��iTKeT
%̎�`|��d���K.�†m�on�
�+3�Y��`�X�T
B ,f���+�|�
�@ppC�@J���p����ˆhu
��46^�M��D1�#�J�j^��d'S���C����YA|W�u=���+�U}�K!\�`��4�L�t.��?���گ����l����U^1(pQ+��)""�3K1�aSp����4ўO�"��1X���24<��T0�[0��;��o����&�
	�fҴ�
Z*
Hh�X�ڲ	�-�*U�ov2�>�0UV�?����k��&���'cH�d�d�h
9������(z%�_��sGF?����mmb�FF��^Q�U�0�*��R����qt��"��kϹ��J�E�
���D�f��V���8��$঍��,�b��I��J@1���1�L��@W&�l6�
;CS[
��9���:�ř��9ҭk`;��
�i"�M�rچX�r��S�J��_���s�q�y�hl#��a�BO�5i'�B���t�i��-��+!s8�DRo��Kת�M0f�IDu��Sه��P�gbk�w�~��X�O6{Ր�Yϡ��r�ړ��!1�p�iM^�n;�m6
[ä�4��h�zs4ֹW�+��-y��?�Ъx"��7m�Aog���D��⻱=x>�5�~��b��]j|*��[�r�U�
H��+���̀�5kE�B�ۯi�_އ;^�|�
/Ƈ�xy����q盯��Ƶ7��o�_�ᄊ
�]����I�V�%�Ց���Jad�E��%/�ڜ@wW��̊X�N!@Xd��\|^5���פ�ޖ�"��V�*�J��Oy-�#?9��k?n̴�
[���lE�������U��zLly)��$��Rxz��{1��;a_C
�j�
�ت�n������L�ή�t�ҵq��;��]������z�7��6�9lW_\7ڔ�E)�{W]
��;���ޚMD�fm\��"0��Q�Mp0p�v,�Mp	���t�/}�6z�W!|W����
�n��GV�{�{^��z�6�mcoK�Id`F�0�8�H��
A��a�\�d�!��pKA��<�J�'��~
^B�oUn�C���DZ�|2�P�Hi�<�@�դ��u�kZ����lUJ�VM~5?R}4_t�
����%<C�5bPgz>$O���C�xs��d�����ڪ,N
��BI�ӼZ��*�W�O\=j�\'9)t$Lϕ\)�ϛ��B�O�]���г��	L;�)&�zATPR6��	u��.8���/���7��(
�Apt.WD��=�+z«��� ��Q�j�NN�]���w��
���Z�o�_�A���`<л���%J�z��5���`�@*u�\,>p�	���-���u+܉�I�yH-��msy#%:�+F����ذ4-����q���Ç
���l�!_�������"؉xʀ�\�T=_�FKz�����{.�x���B/7HK���$�d:�I`xh��|��̞^#&F�#��C�*8��Ӹ`�f�2��a`����B�t���&��B���ℝ��6��Ϋ?��ׯ�Ů�;
�g�>pFO��E=,bh���>M;@�U�JL����֜�Nư��C)�9����?��رcGwOW��o}��oJ�Ӹ�xꋷB�Obb&�?��X�F�s=v��3xnp�&&�G^�/�?�o�>��R��_�D"w4e����Z�朣\.#���~��'�ќ��\�D0�s��H�D��F"�����X��_�*O�{��g�?MB��^
�-��?眽-�Hų-���t�d
�I)11>��7���p��v�XvQ�zXy�hɘ�2����7bjjD��ʎ��Kйw��fn޽{�3A��#����6\c��;��+�E:�z�05!�4Ѷ��\}e͛��v��/�q*����Oz���!���4����/y%���fؿ��SZ�o>�(��L׌��L�\)���$ijϋD��0�w)��T�̦��LH���#�u
��]�n-��bO��ċv�ԛ�'�}L?K]b��H+��7A?B?p���"����gf�P(
�F�����$���(��Ib��u
�D�C��k��-�LS֦9L*���5HT�Uض���K%9ҏ�{^�������0
��<t4����W}�l3Br:�FFF����,-���'��jҕJy�������ҧv��.��$D�7����o��_4��%��4U'�q����q�\�h�bD
��alt}[w�4�6�}�0��6<��z���.���3Z�X,��X��)Z�N.�^�Ntu�K��������|�����$�c+��wr�^"��mim�3�Cr��Z���!eC�h<��ۦ�o~bb�d[���#����X�2����MW��{nd�JE��D
�4���s�E�<���̲l��w�әl���o�ڵ������Ԁy�<�t�e�&���E��T����ו���y�-���DH(���<�b����r�c�F"J5䔄o����vZ!qr
k�U%AN�j�O�ۈ����LJ��Ճ�X�JJJ����V��O|v�
U�����bqCJ����RT6������Riz�##��vF�s�a�3��ɤ��cǰ�‹3-p�
���I)�@)�����^;:{R'�?F��Cn9nO���Rȳ:��-��}g��׽��<?�8k�3�{�:��K������݃��#�q:�{���5hoo�a�}�
�l��^a4��KaH�RQ�	��ٳ
@�rn���KI/�x�S�z)�BC�c�����𣘟�c���%WbM{�⡚�o��
/�C���֎۷��x������gD��uG�$4"��S,n�,�Z��Pcs��|
(В΀t�	AЈ�3��a����q�q��c�}��`��r�<��Gq���?��O�[�לs�|>�?�ǧ�_&Z�06r|�Dk�4PK"�s~�m9�z��(���аmM<�%E�����(�^t�>6ۺ���a|F!j3�ڲ��}�n�&'�x��`��܌&��g>�
�A
78�D��&�F��(�B��Xn�=�QY.ǎ`��ܙ��B�4�`�8D�6qjr�JI���0t*�1+JhL�����k��F�����Ԍ�[m���x�Pcc���q!���
��-���ٖ6}�V)�"E��V�`S��~�U@�&��J#��Ֆ����_V�B�H}�8���H͍
��@��i��{�i�}W!�qZ���Nוz�5Gc�
ض���ܰt�kt!�|l�I0�Nq94���<��CN����Cb�D�G��V+��8�#�\еB4r}���
.'����J������I!�(���ǩ��65
0���0ҏJ�W���E�Zx�Ճ��J"
8g
H��l%�V\���*šiZ���	�S�+�
�y��h�б6ò�z�5֏|��33��@w��R�m��9�X�&Bz�ν1��Z��6j;��,�ڄ`Yz)\N�?ޱ۟�:z7���=�h���i<wh��u8q����zApv8�z_A��d+��^�U�~�ӏ�'A�L���3���}����|�m�ݜ��7�2�",V���|}C���G�P���΢k}�^�Ɔ�u���g�i�s���B"0L��Zx�FF�qu^+eH)s�����0����jF[SS�vZf�E"��$J�k��H2CA��I"Y�
7����X/rG��L�#�E��>��j<2p�t�-��bI!�N
�R��3�栌Z}����m׏�J����A�9`���o�H��D�	IB��ȤR�>�ײ��yy$eF¨���Ÿ#X`D�^�/6J�%m)�ty��0��b�T9��BCC��Ve!D�P�4��8�y�h�Z=Q(N�q@��9����H�H}�	�`�@fշ�@�@��]"��`�
����`~��IEND�B`�images/star.gif000064400000003233151163531650007460
0ustar00GIF89a`��77�??�FF�BB�DD�LL�L2�JJ�Q3�O3�S9�N=�Q;�RR�[?�UJ�ZZ�``�WK�\P�``�dK�YQ�aS�_S�\X�^S�gW�ff�jS�d[�bZ�hd�ll�eQ�ji�mc�pd�i]�mb�ss̀
�r\�wr�{{�xs�wp�wx�||�vb�yt�xb�zoы�~|�~|���Ԅ�ӏ"�|����|�o��k،�֙+�v��uג��yٝ%�۔��~풍�����}ݨ)������ݪE���ۥ�߯1�8��%������ک���
ટ����4��+�8�C������䯯��"�J갬����B����9벮�D�f�H��0�޺������Z��)��A��K躺��A�������L��r��O��n��F��9��/�Ĺ�Ɂ��I�����S�½��E��Z�����y�·�͙�����L�ǹ��@�����X�����U����ҫ��Z�����W����]������ۢ�ܚ����b���ޜ����߰��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������!��,`��	��,�:"����D�J5DHH��7�JԩSH	a�rԇc�B�ހQ3��.G�>���(O:���S�ʿE�NY2d�f�4]�X��K
�D���9�e�'M��Ts*.q��BX���i��#'!$B����#˘(	�Z$�͘8;�$$#h��@���R#a�H%�H�p�DN��LБ'�zr���ϙ7vB�	Uȑ%;5:M��]0e��C��g�B�*�财^N�
n|��]�{R�`ٳi��vW���y����hp�è��G���+E~*Oܜq}��A�:M�soή�ƚkт
k����m�����t�M��?�V!u�'��W!�M�j%B8]B�^B�'�{�8_f�d�@(p��#pph�����0PDB�$��G6�Ag�b%
L�B
@•4p�?g�i�y��y�@A���y��a���9�,m�圄��BB@��jBAB(�`$�ABP@Bf60@E@@$4gm!�	�1�;�
Z.����nx�KC����*��� ���آ
s�2��@��j|~d�'_0�+�~��Ƹ�z��z�z�Ǯ���L�ųn�b�P|��[�����P$��b��+�'8ԘK��J<1<�2�*LL���2���̃����(t-<��Ƕ�<Q-u�0�-�QKC���#�lr�	$\�(#���ZLQF%4\0�@��+O(aDM���T��Lф?��l,�@7�a�{��wH�Ё@#�ф�+�	R(
fĝx/|и@+ф
t�=�P�@k<�"|.�Y$@�@��p}��2�%xFd��
pB�l��K,��P,^t�P��@;images/tabbg.gif000064400000002553151163531650007572
0ustar00GIF89a.�����������������������������������������������������������������������������������������������!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:BF4FB605352211E0B0A8F71350810230"
xmpMM:InstanceID="xmp.iid:BF4FB604352211E0B0A8F71350810230"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:84E04B214C34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,.*����4�Q��0$
��È`(�@R*U��X�@��C"e�;images/ticket/index.html000064400000000054151163531650011276
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>images/ticket/ip.png000064400000000402151163531650010414
0ustar00�PNG


IHDR�a�IDATx�cd�0��
6@���Ҕ��X4#2�7���@�����v@ą
���·J�L]���!�����DF��~��D��Pq{�ƒP�
PW·�;¼��h�$�
��B
�A���H��v�և�
�MAl��g?4�.#�/!�l\eB]����Pv#�O���G,^"hQ`�
L�)�X�FIEND�B`�images/ticket/url.png000064400000000441151163531650010611
0ustar00�PNG


IHDR�abKGD��������IDAT8���1JA��VB*E!7�
x!�����6Mb%XI!��r{��$邱�̮�Y6��y��̼���x�;>1�}�1°�|�%6k�|����>��S\��R�g���}&�(s���r�I�<.f�T$�e�8�����)����B��n���|����@���=	B�e;r�t�:��m��Q��v�-�?�ʶ��8�E��1�ADL�p�
�IEND�B`�images/ticket/user.png000064400000000422151163531650010764
0ustar00�PNG


IHDR�abKGD��������IDAT8���=j�A��_�
	���!'Rz�
�x�����#��)Bڀ�M4����K����̰�3����	m|���ֿ��'��nbN���4\��"�����4ptU
�{q���r��xN��x(h%��H�ɹ��ܗ�������ed�``��>�6gx,��B��/�sb^B�cc:0:e�IEND�B`�images/ticket/useragent.png000064400000000621151163531650012004
0ustar00�PNG


IHDR�abKGD�������FIDAT8���;/�a���=��P��
.k]��FD�u�CT$>���|�(	KT��5����mv]
�L23�~s{��O=VO�r����3��`4Ǧ��vde�F�����35����6Ԛz�iE0�V�P��c5`��<)��`	�:�E�^���v��y������!0,d�K`@=�2YD�/u'_��1��?s�iD�N�����T��x{�Z�̩�y����{��w9�P�������n`�����0��h�}-Z
��P��J��B�̻z��uQ��U��.y�+7K����ς�,��c{*w�3IEND�B`�images/title-bg-2.gif000064400000002303151163531650010352
0ustar00GIF89a1�VVVWWW^^^eeeLLLGGGTTTRRRHHH[[[XXXQQQNNNSSS```PPP]]]MMMZZZaaaDDDAAAKKK___YYYIIICCCbbbEEE!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmp:CreatorTool="Adobe Photoshop CS5 Windows"
xmpMM:InstanceID="xmp.iid:55953E5F3B3F11E0A9F5FEAC25FEB1D6"
xmpMM:DocumentID="xmp.did:55953E603B3F11E0A9F5FEAC25FEB1D6">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:55953E5D3B3F11E0A9F5FEAC25FEB1D6"
stRef:documentID="xmp.did:55953E5E3B3F11E0A9F5FEAC25FEB1D6"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,1&`Ui$Eqh�d�eQ�<�r4���aI\.�d�iB;images/title-bg.gif000064400000002403151163531650010214
0ustar00GIF89a)�)))+++"""***222000...---(((///%%%555<<<666&&&###
  777'''444$$$111!!!888,,,999333!�XMP
DataXMP<?xpacket begin=""
id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta
xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.0-c060
61.134777, 2010/02/12-17:32:00        "> <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#"
xmlns:xmp="http://ns.adobe.com/xap/1.0/"
xmpMM:OriginalDocumentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"
xmpMM:DocumentID="xmp.did:67FC0464345511E09D7691755906BE53"
xmpMM:InstanceID="xmp.iid:67FC0463345511E09D7691755906BE53"
xmp:CreatorTool="Adobe Photoshop CS5 Windows">
<xmpMM:DerivedFrom
stRef:instanceID="xmp.iid:7D6B953C2D34E01188FBBB19AF6A7FA8"
stRef:documentID="xmp.did:4708CD2B5D33E0119DB99C23203B5644"/>
</rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket
end="r"?>�������������������������������������������������������������������������������������������������������������������������������~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!


	!�,)"�ueY��P��H��FRT�M�E#�`6F;images/uparrow.png000064400000000454151163531650010227
0ustar00�PNG


IHDR(-SsBIT��O�?PLTEx�T�Œ��€�B��W�ܑ��ۀ�U��X����̭А���a��[��Ը蒯֑~�V��W���r\�tRNS��������������������+�}�	pHYs
�
�B�4�tEXtSoftwareMacromedia Fireworks
8�h�x8IDAT�cAt`�B���cC�aaff�A�`!��030�8XY��tfJO,SIEND�B`�images/user-icon.png000064400000001207151163531650010431
0ustar00�PNG


IHDR�asBIT|d�	pHYs��:���tEXtSoftwarewww.inkscape.org��<IDAT8����jSQƿs���I��FR+mJ@A�ւ���B���BWn7ݸp��V,�o
D�QZAhԠ��@���ۜ�{f\T�������7#��b���%�0���~9J#��?85�7���
R�T���3�o����8*�F�iCZ62^%c�΋8��L�����E�T�������z5Y*�z�J�Lہm%����8�?#l�R�ɸ-	!��L��L4�����."��H�!��X�/\[k~nD:肇6ޯ�t��v�6�D���n~�(�FzҋmdQD���\m�n��l5�(V{$���r��w��o��f��y�
5��J���P{�9��v�w]J�I�5�!
)�%bh���e.ٶ��0P����?U�ZN†8�_l���&�'�Kئ��չ�Ϻ
��}�"����������v�
IӔ0d�_`f(5�(��s���������L�~aa�F�qNk�4b�q_
7߾k>������~X������IEND�B`�images/user.png000064400000010544151163531650007507
0ustar00�PNG


IHDR@@�iq�+IDATx^�z	�$Gu��2�gvf�+�e�
$,!	,����l�8 L�X��6�8��
.#�!�P@�1r`�m+H˲WH��F3�cv��髪2�9;��c/6Ɯ����/^VvUw���z�����~E����aY�L-�_�ͣ�DZ�駑���d۹�DB���M�Fߗg�]l�kV��b�_��W���A�8,��'�(@T*b��65�5�NO㑝��]�N+k�-f~�����/�z�x��k&>o@_��B�P��“
l��J�|3�w���>�8Q!,C�
���7~��pV	p�o���,�w}�3�4�o�6�:�B���l`�A�����4�Y$�/BpV��2�߆h��EhCi�4�a��G��1+��p@��؃R�!,/B|�@���-
y�wܸ�k͖�������Ⱥ]ǸR��)ْ�Fxhj�y%��Bh��쵍�ִ�\وRC/�oC����	���h���A��2���8��
�t�
�З`f�ë�/N���?��5+@n����6.�y(B�إ�f��}�u��,�A���)Lm�����!�a�6�a��ۣ^�����_�&��W�0�6Pz
��v�h�1�g7�����<�Be)���'�a
R=�x�d�j�
�1��.��Mk�RO��3,�0���|#�Mx0��n����F�ZC�f��=;?�A�Ņ玡1Q�%P�B�4�k֦LS�Z�Mf�02����J	��*#�4w�ABbρ~Fh4|��c�͐R�h�RhckT���ahu�#0Y�C�5DJ0&��ik�hhL���C/F��Z����ڀ���]�����:kJ�2�3A�!4l-1Tn����3��=-�!����	X[�UPL"(�}���
ϗ��%I���7�|3~���m�{mQrY�hz	���0��Ȏ0p"��Ų��I`r}Y�����a����Jf7�5��W��BJ	J�:P����(����s�V&�N�L1r��)�ו�	֝�I)���<F73`�^�s3|@d$�q��r��"��9���4�V�
�,��",�Zq���X_G�j�;}�,�Q����
��z�@A��������vs�K���B�2>�
A&����T/��0R&fB����˷�+�/���!�$�H��a���
�*uH�wEO�n9�u���Q���Mڂ�)@x
���ؕɬ:�z$Ĭ�L��/��kBO��ԫ��,5��z.�J�F�
D�
�R�9��BG?�F�F$A’�Z���@+����ɩ�^����kc$\P*�bj]ś+#�B��
�%kW����SǑ#��-��|&�8o�W�"���!`���͞39^��0�f�����D�S�S�Q`�Q���0tuA���I��1�����v�J���
u�9�?�0����0�>��G<Q�:Qqr��5a�_k��v���ߓ�N�!Ġ�c0��	�*0i��k�(��tO���v�]3�/���#ǖ{�(MԆ�1���o�`�DQ)6�88�lm޺���6^lv[Y��G`�ր֮�*�83�sw�s�8!��jw3��:�_��5&�˂�1�f�[Z)�Q.����>�r<�hw�	��Bfȕ����J�?Z�Kb��(�?0{��<5j�q�Y`4N����!�"Z�<��g�y���5�*�
��l�����F�`�Y�g�>.�ʽƖN(�l_@'�B�g���g���;������_����E��)��dC�*u�Q����Xj�`4�.�S�ͻΚ�Q�͇�9���E��~d)��0@�Az�8b�1�,e�N
!�>yᄈdk�e��Ծ��ְ�F6�Yv��ހ��&?9+R�<t�ǎ4S��κ��\�����r㢋�wa���
Dr�f3L�|
�N]̷�?��/�uh��1i�aR�",��Tx��ѐ�jx��\�O0;;m<?��,�w
A���cAi
S����m�pH8�bKh�n��=3g�q�&�2�ݳy�"(��'䢼ⴱkxaau
��<A蜵?���/ՏMOGK�;�j���G���?	���b���>.�
�Z�p�p��_+��7m��?��W���}r�������w~��g=��s��U���?��RC�8N0�~�[��@�=��˘;8�^�fF����~�Xܻwߕ�>�ݫ�^�����'�Ʋ��%S�E��b듷A��P�3�93����G��'������&T��x��`����Sw�5�N��8.}�?�9���b	�N��J����q�ޯ�Q-b��C�kH)����-W�X,baa
��5�I��?��6�Z��'�o!���iS��r�R�<A�0����8���?09VF����R�	�=�^+�!�Op�3�����y�>2Y�����MB�^A�=�m�23@Z^#�npYAE��$�6)��AB<�K/{�?�����f�(@�+(m
�`EC�I���_��
��s���GsiI�H�/A�����^7�Ci�1��������_�I8���'�(��A��4Z!O3D�Mv���nc���S�y�y�n�;�U^B��W8��k_�v��v��6F�֐�PY?��C��
1�$�^�ϭ�b�1���	@�<��6"�� z
���U��z�R.Q4r�WȌT}q
�"��ػw��'p��g�ܽ~�Kމj}�FLj���C�W>�0�YzI�
�Z�T*m|�v-�t��v~�p��GD+��!����8
�}�.l�40FC)�$H���������۞�l��8r�G�0���`�֋1?D@�$n1�o*�hy�

󜜱t�0
�~A�`��[���[���_�/��*3�9��N��k��r1�c:%����0J��w���Ba�\�`||���rO��/����
<�j�r�u�v��t����2F����
�{f����'d�x�TKQ}�:п���e��s>�;_(�[����s�YK��ڣ���&��]���x3��KPJA˲:<������}���=b���l�~�_RT�N���FI��ҽ7�г��o��̢\_?�1LG	�8�=ʊQ���8<7�Q���C���cg�|���9Q���NGc���蟴��S_���B��Su7����?�a�#�<?�=N5�x�o�.S
�GgdU�����.<���<m�r0�N����B���@`2

 �-�F�/N)��%��G�{��}�K}�/�A�9)�c�f��s|�G8!�H8����x�ti���=��[��(�(�B?��ư�����x��y\�mW>e
ғ�`�9>�1��#!F���^q��V�e>~�!`g�q0h�����"�	����<6b������y�n�3���B'���	�i�V�k���+�O�[�΀�CylN"Р1<	ٷ��;=9���W�V�7�z�K�|�R���G꼪ݝ^kiw+�CT���y�A���&��q	Q��3å�Nj
�8�b��ϼ�
>e0�z��Wn5�l��C1`
�2¨�"ČU��i����t��A�
�yt����9�5��H����S�Zo%�S}tc��3��E�q$�h��A����%��lV�"[�x�	l�Jn��z���!p����6I!�0�Y"E
�_����U�{�3o?5���"ϫ����1����I)��:m�+ݹ�4[�g	Ȓ�':��h�2����!�h���s�ϓB�;L�ZB�9A"����On�7���9��ҭ�<���A�+,��!�b3�%�[���7|���yc�֋�Rc��Dz���V�ҧ�$š�1����(�
3C���<�ỿ�ޯ�Ny$5��
*�۴���&���>y��K���~X�����	�$�6�
��	�����)6�>��)`c��ujc������:������c�57��w����Vs�0��~���q��[��X�,�V��s/9��8�	qql����&�Z%�K?L��b!�P���ͨdw����W�a���\T0:5:멼��z�崳��Z<��v�G�Ks3�s?��>bK�E�C.0s�3m�����DC���(�+��0R_��<�q��6p�rH�B?�}c4��4�>͈�cd��ɴ��)	��.���c7T?��Kp&�/˨���‘IEND�B`�js/anonymise.js000064400000001540151163531650007526
0ustar00jQuery(function($){
    $('#rst_anonymise_button').click(function(){
        if
(!confirm(Joomla.JText._('COM_RSTICKETSPRO_ARE_YOU_SURE_YOU_WANT_TO_ANONYMISE')))
        {
            return false;
        }

        var $button = $(this);
        $button.prop('disabled',
true).addClass('disabled');

        var url = Joomla.getOptions('system.paths').base +
'/index.php';
        var token = Joomla.getOptions('csrf.token');
        var data = {
            'option': 'com_rsticketspro',
            'task': 'removedata.process',
            'id': $('#jform_id').val()
        };
        data[token] = 1;
        $.post(url, data, function(response){
            var messages = JSON.parse(response);
            Joomla.renderMessages(messages);
            $button.prop('disabled',
false).removeClass('disabled');
        });
    });
});js/awesomplete.min.js000064400000016473151163531650010646 0ustar00//
Awesomplete - Lea Verou - MIT license
!function(){function t(t){var
e=Array.isArray(t)?{label:t[0],value:t[1]}:"object"==typeof
t&&"label"in t&&"value"in
t?t:{label:t,value:t};this.label=e.label||e.value,this.value=e.value}function
e(t,e,i){for(var n in e){var
s=e[n],r=t.input.getAttribute("data-"+n.toLowerCase());"number"==typeof
s?t[n]=parseInt(r):!1===s?t[n]=null!==r:s instanceof
Function?t[n]=null:t[n]=r,t[n]||0===t[n]||(t[n]=n in i?i[n]:s)}}function
i(t,e){return"string"==typeof
t?(e||document).querySelector(t):t||null}function n(t,e){return
o.call((e||document).querySelectorAll(t))}function
s(){n("input.awesomplete").forEach(function(t){new r(t)})}var
r=function(t,n){var
s=this;r.count=(r.count||0)+1,this.count=r.count,this.isOpened=!1,this.input=i(t),this.input.setAttribute("autocomplete","off"),this.input.setAttribute("aria-expanded","false"),this.input.setAttribute("aria-owns","awesomplete_list_"+this.count),this.input.setAttribute("role","combobox"),this.options=n=n||{},e(this,{minChars:2,maxItems:10,autoFirst:!1,data:r.DATA,filter:r.FILTER_CONTAINS,sort:!1!==n.sort&&r.SORT_BYLENGTH,container:r.CONTAINER,item:r.ITEM,replace:r.REPLACE,tabSelect:!1},n),this.index=-1,this.container=this.container(t),this.ul=i.create("ul",{hidden:"hidden",role:"listbox",id:"awesomplete_list_"+this.count,inside:this.container}),this.status=i.create("span",{className:"visually-hidden",role:"status","aria-live":"assertive","aria-atomic":!0,inside:this.container,textContent:0!=this.minChars?"Type
"+this.minChars+" or more characters for
results.":"Begin typing for
results."}),this._events={input:{input:this.evaluate.bind(this),blur:this.close.bind(this,{reason:"blur"}),keydown:function(t){var
e=t.keyCode;s.opened&&(13===e&&s.selected?(t.preventDefault(),s.select()):9===e&&s.selected&&s.tabSelect?s.select():27===e?s.close({reason:"esc"}):38!==e&&40!==e||(t.preventDefault(),s[38===e?"previous":"next"]()))}},form:{submit:this.close.bind(this,{reason:"submit"})},ul:{mousedown:function(t){t.preventDefault()},click:function(t){var
e=t.target;if(e!==this){for(;e&&!/li/i.test(e.nodeName);)e=e.parentNode;e&&0===t.button&&(t.preventDefault(),s.select(e,t.target))}}}},i.bind(this.input,this._events.input),i.bind(this.input.form,this._events.form),i.bind(this.ul,this._events.ul),this.input.hasAttribute("list")?(this.list="#"+this.input.getAttribute("list"),this.input.removeAttribute("list")):this.list=this.input.getAttribute("data-list")||n.list||[],r.all.push(this)};r.prototype={set
list(t){if(Array.isArray(t))this._list=t;else if("string"==typeof
t&&t.indexOf(",")>-1)this._list=t.split(/\s*,\s*/);else
if((t=i(t))&&t.children){var
e=[];o.apply(t.children).forEach(function(t){if(!t.disabled){var
i=t.textContent.trim(),n=t.value||i,s=t.label||i;""!==n&&e.push({label:s,value:n})}}),this._list=e}document.activeElement===this.input&&this.evaluate()},get
selected(){return this.index>-1},get opened(){return
this.isOpened},close:function(t){this.opened&&(this.input.setAttribute("aria-expanded","false"),this.ul.setAttribute("hidden",""),this.isOpened=!1,this.index=-1,this.status.setAttribute("hidden",""),i.fire(this.input,"awesomplete-close",t||{}))},open:function(){this.input.setAttribute("aria-expanded","true"),this.ul.removeAttribute("hidden"),this.isOpened=!0,this.status.removeAttribute("hidden"),this.autoFirst&&-1===this.index&&this.goto(0),i.fire(this.input,"awesomplete-open")},destroy:function(){if(i.unbind(this.input,this._events.input),i.unbind(this.input.form,this._events.form),!this.options.container){var
t=this.container.parentNode;t.insertBefore(this.input,this.container),t.removeChild(this.container)}this.input.removeAttribute("autocomplete"),this.input.removeAttribute("aria-autocomplete");var
e=r.all.indexOf(this);-1!==e&&r.all.splice(e,1)},next:function(){var
t=this.ul.children.length;this.goto(this.index<t-1?this.index+1:t?0:-1)},previous:function(){var
t=this.ul.children.length,e=this.index-1;this.goto(this.selected&&-1!==e?e:t-1)},goto:function(t){var
e=this.ul.children;this.selected&&e[this.index].setAttribute("aria-selected","false"),this.index=t,t>-1&&e.length>0&&(e[t].setAttribute("aria-selected","true"),this.status.textContent=e[t].textContent+",
list item "+(t+1)+" of
"+e.length,this.input.setAttribute("aria-activedescendant",this.ul.id+"_item_"+this.index),this.ul.scrollTop=e[t].offsetTop-this.ul.clientHeight+e[t].clientHeight,i.fire(this.input,"awesomplete-highlight",{text:this.suggestions[this.index]}))},select:function(t,e){if(t?this.index=i.siblingIndex(t):t=this.ul.children[this.index],t){var
n=this.suggestions[this.index];i.fire(this.input,"awesomplete-select",{text:n,origin:e||t})&&(this.replace(n),this.close({reason:"select"}),i.fire(this.input,"awesomplete-selectcomplete",{text:n}))}},evaluate:function(){var
e=this,i=this.input.value;i.length>=this.minChars&&this._list&&this._list.length>0?(this.index=-1,this.ul.innerHTML="",this.suggestions=this._list.map(function(n){return
new t(e.data(n,i))}).filter(function(t){return
e.filter(t,i)}),!1!==this.sort&&(this.suggestions=this.suggestions.sort(this.sort)),this.suggestions=this.suggestions.slice(0,this.maxItems),this.suggestions.forEach(function(t,n){e.ul.appendChild(e.item(t,i,n))}),0===this.ul.children.length?(this.status.textContent="No
results
found",this.close({reason:"nomatches"})):(this.open(),this.status.textContent=this.ul.children.length+"
results
found")):(this.close({reason:"nomatches"}),this.status.textContent="No
results found")}},r.all=[],r.FILTER_CONTAINS=function(t,e){return
RegExp(i.regExpEscape(e.trim()),"i").test(t)},r.FILTER_STARTSWITH=function(t,e){return
RegExp("^"+i.regExpEscape(e.trim()),"i").test(t)},r.SORT_BYLENGTH=function(t,e){return
t.length!==e.length?t.length-e.length:t<e?-1:1},r.CONTAINER=function(t){return
i.create("div",{className:"awesomplete",around:t})},r.ITEM=function(t,e,n){return
i.create("li",{innerHTML:""===e.trim()?t:t.replace(RegExp(i.regExpEscape(e.trim()),"gi"),"<mark>$&</mark>"),role:"option","aria-selected":"false",id:"awesomplete_list_"+this.count+"_item_"+n})},r.REPLACE=function(t){this.input.value=t.value},r.DATA=function(t){return
t},Object.defineProperty(t.prototype=Object.create(String.prototype),"length",{get:function(){return
this.label.length}}),t.prototype.toString=t.prototype.valueOf=function(){return""+this.label};var
o=Array.prototype.slice;i.create=function(t,e){var
n=document.createElement(t);for(var s in e){var
r=e[s];if("inside"===s)i(r).appendChild(n);else
if("around"===s){var
o=i(r);o.parentNode.insertBefore(n,o),n.appendChild(o),null!=o.getAttribute("autofocus")&&o.focus()}else
s in n?n[s]=r:n.setAttribute(s,r)}return
n},i.bind=function(t,e){if(t)for(var i in e){var
n=e[i];i.split(/\s+/).forEach(function(e){t.addEventListener(e,n)})}},i.unbind=function(t,e){if(t)for(var
i in e){var
n=e[i];i.split(/\s+/).forEach(function(e){t.removeEventListener(e,n)})}},i.fire=function(t,e,i){var
n=document.createEvent("HTMLEvents");n.initEvent(e,!0,!0);for(var
s in i)n[s]=i[s];return
t.dispatchEvent(n)},i.regExpEscape=function(t){return
t.replace(/[-\\^$*+?.()|[\]{}]/g,"\\$&")},i.siblingIndex=function(t){for(var
e=0;t=t.previousElementSibling;e++);return e},"undefined"!=typeof
self&&(self.Awesomplete=r),"undefined"!=typeof
Document&&("loading"!==document.readyState?s():document.addEventListener("DOMContentLoaded",s)),r.$=i,r.$$=n,"object"==typeof
module&&module.exports&&(module.exports=r)}();
//# sourceMappingURL=awesomplete.min.js.map
js/awesomplete.script.js000064400000005334151163531650011361 0ustar00var
initAwesomplete = function(id, allowEditor) {
    window.addEventListener('DOMContentLoaded', function() {
        var timeoutticket_search;
        var queryInput = document.querySelector('#' + id);
        var awesomplete = new Awesomplete(queryInput, {
            filter: function() {
                return true;
            },
            sort: false,
            list: []
        });

        queryInput.addEventListener('input', function (evt) {
            var inputText = evt.target.value;

            if (timeoutticket_search) {
                clearTimeout(timeoutticket_search);
            }

            timeoutticket_search = window.setTimeout(function() {
                var xmlHttp = new XMLHttpRequest();
                var params = [
                    'option=com_rsticketspro',
                    'view=kbresults',
                    'format=json',
                    'filter_search=' +
encodeURIComponent(inputText)
                ];
                xmlHttp.open('POST',
Joomla.getOptions('system.paths').base +
'/index.php?option=com_rsticketspro', true);
                xmlHttp.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
                xmlHttp.send(params.join('&'));

                xmlHttp.onreadystatechange = function() {
                    if (this.readyState === 4) {
                        var data = JSON.parse(this.responseText);

                        awesomplete.list = data.list;
                        awesomplete.evaluate();
                    }
                }
            }, 500);
        });

        queryInput.addEventListener('awesomplete-selectcomplete',
function(evt) {
            this.value = '';
            var cid = evt.text.value;
            var xmlHttp = new XMLHttpRequest();
            var params = [
                'option=com_rsticketspro',
                'view=article',
                'format=json',
                'cid=' + encodeURIComponent(cid)
            ];
            xmlHttp.open('POST',
Joomla.getOptions('system.paths').base +
'/index.php?option=com_rsticketspro', true);
            xmlHttp.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
            xmlHttp.send(params.join('&'));

            xmlHttp.onreadystatechange = function() {
                if (this.readyState === 4) {
                    var data = JSON.parse(this.responseText);
                    if (allowEditor) {
                       
Joomla.editors.instances['ticket_message'].setValue(data.text);
                    } else {
                       
document.getElementById('ticket_message').value = data.text;
                    }
                }
            }
        });
    });
}js/dashboard.js000064400000004423151163531650007456
0ustar00window.addEventListener('DOMContentLoaded', function() {
    var timeoutticket_search;
    var itemskb_urls;
    var queryInput =
document.querySelector("#rsticketspro_searchinp");
    var awesomplete = new Awesomplete(queryInput, {
        filter: function() {
            return true;
        },
        sort: false,
        list: []
    });

    queryInput.addEventListener("input", function (evt) {
        var inputText = evt.target.value;

        if (timeoutticket_search) {
            clearTimeout(timeoutticket_search);
        }

        timeoutticket_search = window.setTimeout(function() {
            var searchIcon =
document.getElementById('rstickets_search_icon');
            var loadingIcon =
document.getElementById('rsticketspro_loading');

            searchIcon.style.display = 'none';
            loadingIcon.style.display = '';

            var xmlHttp = new XMLHttpRequest();
            var params = [
                'option=com_rsticketspro',
                'view=kbresults',
                'format=json',
                'kb_itemid=' +
document.getElementsByName('kb_itemid')[0].value,
                'Itemid=' +
document.getElementsByName('curr_itemid')[0].value,
                'filter_search=' + encodeURIComponent(inputText)
            ];
            xmlHttp.open('POST',
Joomla.getOptions('system.paths').base +
'/index.php?option=com_rsticketspro', true);
            xmlHttp.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
            xmlHttp.send(params.join('&'));

            xmlHttp.onreadystatechange = function() {
                if (this.readyState === 4) {
                    var data = JSON.parse(this.responseText);

                    itemskb_urls = data.urls;

                    awesomplete.list = data.list;
                    awesomplete.evaluate();

                    loadingIcon.style.display = 'none';
                    searchIcon.style.display = '';
                }
            }
        }, 500);
    });

    queryInput.addEventListener('awesomplete-selectcomplete',
function(evt) {
        this.value = '';

        if (typeof itemskb_urls[evt.text.value] !== 'undefined')
{
            document.location.href = itemskb_urls[evt.text.value];
        }
    });
});js/export.js000064400000005106151163531650007047
0ustar00jQuery.noConflict();

if (typeof RSTicketsPro === 'undefined') {
    var RSTicketsPro = {};
}

RSTicketsPro.exportCSV = {
    totalItems : 0,
    baseUrl : '',
    ordering : '',
    direction : '',

    getProgressBarObject: function() {
        return
document.getElementById('com-rsticketspro-export-progress')
    },

    setProgress: function (current) {
        var bar =
document.querySelector('.com-rsticketspro-bar');
        if (bar) {
            var currentProgress = (current * 100) / this.totalItems;
            bar.style.width = currentProgress + '%';
            bar.innerText = parseInt(currentProgress) + '%';
        }
    },

    setCSV : function(from, fileHash) {
        var progressBar = this.getProgressBarObject();
        if (this.totalItems > 0 && from >= this.totalItems)
{
            progressBar.style.display = 'none';
           
window.location.assign(Joomla.getOptions('system.paths').base +
'/index.php?option=com_rsticketspro&task=tickets.exportcsv&filehash='
+ fileHash);
        } else {
            var xmlHttp = new XMLHttpRequest();
            var params = [
                'option=com_rsticketspro',
                'task=' + 'tickets.writecsv',
                'start=' + from,
                'ordering=' + this.ordering,
                'direction=' + this.direction,
                'filehash=' + fileHash
            ];
            xmlHttp.open('POST',
Joomla.getOptions('system.paths').base + '/index.php',
true);
            xmlHttp.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
            xmlHttp.send(params.join('&'));

            xmlHttp.onreadystatechange = function() {
                if (this.readyState === 4) {
                    try {
                        var data = JSON.parse(this.responseText);
                    } catch (err) {
                        data = {'success': false,
'response': err};
                    }
                    if (data.success === true) {
                       
RSTicketsPro.exportCSV.setProgress(data.response.newFrom);

                        setTimeout(function(){
                           
RSTicketsPro.exportCSV.setCSV(data.response.newFrom,
data.response.fileHash);
                        },700);
                    } else {
                        progressBar.style.display = 'none';
                        Joomla.renderMessages({'error':
[data.response]});
                    }
                }
            };

            Joomla.removeMessages();
            progressBar.style.display = 'block';
        }
    }
}
js/index.html000064400000000054151163531650007162
0ustar00<html><body
bgcolor="#FFFFFF"></body></html>js/jquery.magnific-popup.min.js000064400000051204151163531650012544
0ustar00/*! Magnific Popup - v1.0.0 - 2014-12-12
* http://dimsemenov.com/plugins/magnific-popup/
* Copyright (c) 2014 Dmitry Semenov; */
(function(e){"function"==typeof
define&&define.amd?define(["jquery"],e):"object"==typeof
exports?e(require("jquery")):e(window.jQuery||window.Zepto)})(function(e){var
t,n,i,o,r,a,s,l="Close",c="BeforeClose",d="AfterClose",u="BeforeAppend",p="MarkupParse",f="Open",m="Change",g="mfp",h="."+g,v="mfp-ready",C="mfp-removing",y="mfp-prevent-close",w=function(){},b=!!window.jQuery,I=e(window),x=function(e,n){t.ev.on(g+e+h,n)},k=function(t,n,i,o){var
r=document.createElement("div");return
r.className="mfp-"+t,i&&(r.innerHTML=i),o?n&&n.appendChild(r):(r=e(r),n&&r.appendTo(n)),r},T=function(n,i){t.ev.triggerHandler(g+n,i),t.st.callbacks&&(n=n.charAt(0).toLowerCase()+n.slice(1),t.st.callbacks[n]&&t.st.callbacks[n].apply(t,e.isArray(i)?i:[i]))},E=function(n){return
n===s&&t.currTemplate.closeBtn||(t.currTemplate.closeBtn=e(t.st.closeMarkup.replace("%title%",t.st.tClose)),s=n),t.currTemplate.closeBtn},_=function(){e.magnificPopup.instance||(t=new
w,t.init(),e.magnificPopup.instance=t)},S=function(){var
e=document.createElement("p").style,t=["ms","O","Moz","Webkit"];if(void
0!==e.transition)return!0;for(;t.length;)if(t.pop()+"Transition"in
e)return!0;return!1};w.prototype={constructor:w,init:function(){var
n=navigator.appVersion;t.isIE7=-1!==n.indexOf("MSIE
7."),t.isIE8=-1!==n.indexOf("MSIE
8."),t.isLowIE=t.isIE7||t.isIE8,t.isAndroid=/android/gi.test(n),t.isIOS=/iphone|ipad|ipod/gi.test(n),t.supportsTransition=S(),t.probablyMobile=t.isAndroid||t.isIOS||/(Opera
Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows
Phone)|IEMobile/i.test(navigator.userAgent),o=e(document),t.popupsCache={}},open:function(n){i||(i=e(document.body));var
r;if(n.isObj===!1){t.items=n.items.toArray(),t.index=0;var
s,l=n.items;for(r=0;l.length>r;r++)if(s=l[r],s.parsed&&(s=s.el[0]),s===n.el[0]){t.index=r;break}}else
t.items=e.isArray(n.items)?n.items:[n.items],t.index=n.index||0;if(t.isOpen)return
t.updateItemHTML(),void
0;t.types=[],a="",t.ev=n.mainEl&&n.mainEl.length?n.mainEl.eq(0):o,n.key?(t.popupsCache[n.key]||(t.popupsCache[n.key]={}),t.currTemplate=t.popupsCache[n.key]):t.currTemplate={},t.st=e.extend(!0,{},e.magnificPopup.defaults,n),t.fixedContentPos="auto"===t.st.fixedContentPos?!t.probablyMobile:t.st.fixedContentPos,t.st.modal&&(t.st.closeOnContentClick=!1,t.st.closeOnBgClick=!1,t.st.showCloseBtn=!1,t.st.enableEscapeKey=!1),t.bgOverlay||(t.bgOverlay=k("bg").on("click"+h,function(){t.close()}),t.wrap=k("wrap").attr("tabindex",-1).on("click"+h,function(e){t._checkIfClose(e.target)&&t.close()}),t.container=k("container",t.wrap)),t.contentContainer=k("content"),t.st.preloader&&(t.preloader=k("preloader",t.container,t.st.tLoading));var
c=e.magnificPopup.modules;for(r=0;c.length>r;r++){var
d=c[r];d=d.charAt(0).toUpperCase()+d.slice(1),t["init"+d].call(t)}T("BeforeOpen"),t.st.showCloseBtn&&(t.st.closeBtnInside?(x(p,function(e,t,n,i){n.close_replaceWith=E(i.type)}),a+="
mfp-close-btn-in"):t.wrap.append(E())),t.st.alignTop&&(a+="
mfp-align-top"),t.fixedContentPos?t.wrap.css({overflow:t.st.overflowY,overflowX:"hidden",overflowY:t.st.overflowY}):t.wrap.css({top:I.scrollTop(),position:"absolute"}),(t.st.fixedBgPos===!1||"auto"===t.st.fixedBgPos&&!t.fixedContentPos)&&t.bgOverlay.css({height:o.height(),position:"absolute"}),t.st.enableEscapeKey&&o.on("keyup"+h,function(e){27===e.keyCode&&t.close()}),I.on("resize"+h,function(){t.updateSize()}),t.st.closeOnContentClick||(a+="
mfp-auto-cursor"),a&&t.wrap.addClass(a);var
u=t.wH=I.height(),m={};if(t.fixedContentPos&&t._hasScrollBar(u)){var
g=t._getScrollbarSize();g&&(m.marginRight=g)}t.fixedContentPos&&(t.isIE7?e("body,
html").css("overflow","hidden"):m.overflow="hidden");var
C=t.st.mainClass;return t.isIE7&&(C+="
mfp-ie7"),C&&t._addClassToMFP(C),t.updateItemHTML(),T("BuildControls"),e("html").css(m),t.bgOverlay.add(t.wrap).prependTo(t.st.prependTo||i),t._lastFocusedEl=document.activeElement,setTimeout(function(){t.content?(t._addClassToMFP(v),t._setFocus()):t.bgOverlay.addClass(v),o.on("focusin"+h,t._onFocusIn)},16),t.isOpen=!0,t.updateSize(u),T(f),n},close:function(){t.isOpen&&(T(c),t.isOpen=!1,t.st.removalDelay&&!t.isLowIE&&t.supportsTransition?(t._addClassToMFP(C),setTimeout(function(){t._close()},t.st.removalDelay)):t._close())},_close:function(){T(l);var
n=C+" "+v+"
";if(t.bgOverlay.detach(),t.wrap.detach(),t.container.empty(),t.st.mainClass&&(n+=t.st.mainClass+"
"),t._removeClassFromMFP(n),t.fixedContentPos){var
i={marginRight:""};t.isIE7?e("body,
html").css("overflow",""):i.overflow="",e("html").css(i)}o.off("keyup"+h+"
focusin"+h),t.ev.off(h),t.wrap.attr("class","mfp-wrap").removeAttr("style"),t.bgOverlay.attr("class","mfp-bg"),t.container.attr("class","mfp-container"),!t.st.showCloseBtn||t.st.closeBtnInside&&t.currTemplate[t.currItem.type]!==!0||t.currTemplate.closeBtn&&t.currTemplate.closeBtn.detach(),t._lastFocusedEl&&e(t._lastFocusedEl).focus(),t.currItem=null,t.content=null,t.currTemplate=null,t.prevHeight=0,T(d)},updateSize:function(e){if(t.isIOS){var
n=document.documentElement.clientWidth/window.innerWidth,i=window.innerHeight*n;t.wrap.css("height",i),t.wH=i}else
t.wH=e||I.height();t.fixedContentPos||t.wrap.css("height",t.wH),T("Resize")},updateItemHTML:function(){var
n=t.items[t.index];t.contentContainer.detach(),t.content&&t.content.detach(),n.parsed||(n=t.parseEl(t.index));var
i=n.type;if(T("BeforeChange",[t.currItem?t.currItem.type:"",i]),t.currItem=n,!t.currTemplate[i]){var
o=t.st[i]?t.st[i].markup:!1;T("FirstMarkupParse",o),t.currTemplate[i]=o?e(o):!0}r&&r!==n.type&&t.container.removeClass("mfp-"+r+"-holder");var
a=t["get"+i.charAt(0).toUpperCase()+i.slice(1)](n,t.currTemplate[i]);t.appendContent(a,i),n.preloaded=!0,T(m,n),r=n.type,t.container.prepend(t.contentContainer),T("AfterChange")},appendContent:function(e,n){t.content=e,e?t.st.showCloseBtn&&t.st.closeBtnInside&&t.currTemplate[n]===!0?t.content.find(".mfp-close").length||t.content.append(E()):t.content=e:t.content="",T(u),t.container.addClass("mfp-"+n+"-holder"),t.contentContainer.append(t.content)},parseEl:function(n){var
i,o=t.items[n];if(o.tagName?o={el:e(o)}:(i=o.type,o={data:o,src:o.src}),o.el){for(var
r=t.types,a=0;r.length>a;a++)if(o.el.hasClass("mfp-"+r[a])){i=r[a];break}o.src=o.el.attr("data-mfp-src"),o.src||(o.src=o.el.attr("href"))}return
o.type=i||t.st.type||"inline",o.index=n,o.parsed=!0,t.items[n]=o,T("ElementParse",o),t.items[n]},addGroup:function(e,n){var
i=function(i){i.mfpEl=this,t._openClick(i,e,n)};n||(n={});var
o="click.magnificPopup";n.mainEl=e,n.items?(n.isObj=!0,e.off(o).on(o,i)):(n.isObj=!1,n.delegate?e.off(o).on(o,n.delegate,i):(n.items=e,e.off(o).on(o,i)))},_openClick:function(n,i,o){var
r=void
0!==o.midClick?o.midClick:e.magnificPopup.defaults.midClick;if(r||2!==n.which&&!n.ctrlKey&&!n.metaKey){var
a=void
0!==o.disableOn?o.disableOn:e.magnificPopup.defaults.disableOn;if(a)if(e.isFunction(a)){if(!a.call(t))return!0}else
if(a>I.width())return!0;n.type&&(n.preventDefault(),t.isOpen&&n.stopPropagation()),o.el=e(n.mfpEl),o.delegate&&(o.items=i.find(o.delegate)),t.open(o)}},updateStatus:function(e,i){if(t.preloader){n!==e&&t.container.removeClass("mfp-s-"+n),i||"loading"!==e||(i=t.st.tLoading);var
o={status:e,text:i};T("UpdateStatus",o),e=o.status,i=o.text,t.preloader.html(i),t.preloader.find("a").on("click",function(e){e.stopImmediatePropagation()}),t.container.addClass("mfp-s-"+e),n=e}},_checkIfClose:function(n){if(!e(n).hasClass(y)){var
i=t.st.closeOnContentClick,o=t.st.closeOnBgClick;if(i&&o)return!0;if(!t.content||e(n).hasClass("mfp-close")||t.preloader&&n===t.preloader[0])return!0;if(n===t.content[0]||e.contains(t.content[0],n)){if(i)return!0}else
if(o&&e.contains(document,n))return!0;return!1}},_addClassToMFP:function(e){t.bgOverlay.addClass(e),t.wrap.addClass(e)},_removeClassFromMFP:function(e){this.bgOverlay.removeClass(e),t.wrap.removeClass(e)},_hasScrollBar:function(e){return(t.isIE7?o.height():document.body.scrollHeight)>(e||I.height())},_setFocus:function(){(t.st.focus?t.content.find(t.st.focus).eq(0):t.wrap).focus()},_onFocusIn:function(n){return
n.target===t.wrap[0]||e.contains(t.wrap[0],n.target)?void
0:(t._setFocus(),!1)},_parseMarkup:function(t,n,i){var
o;i.data&&(n=e.extend(i.data,n)),T(p,[t,n,i]),e.each(n,function(e,n){if(void
0===n||n===!1)return!0;if(o=e.split("_"),o.length>1){var
i=t.find(h+"-"+o[0]);if(i.length>0){var
r=o[1];"replaceWith"===r?i[0]!==n[0]&&i.replaceWith(n):"img"===r?i.is("img")?i.attr("src",n):i.replaceWith('<img
src="'+n+'"
class="'+i.attr("class")+'"
/>'):i.attr(o[1],n)}}else
t.find(h+"-"+e).html(n)})},_getScrollbarSize:function(){if(void
0===t.scrollbarSize){var
e=document.createElement("div");e.style.cssText="width:
99px; height: 99px; overflow: scroll; position: absolute; top:
-9999px;",document.body.appendChild(e),t.scrollbarSize=e.offsetWidth-e.clientWidth,document.body.removeChild(e)}return
t.scrollbarSize}},e.magnificPopup={instance:null,proto:w.prototype,modules:[],open:function(t,n){return
_(),t=t?e.extend(!0,{},t):{},t.isObj=!0,t.index=n||0,this.instance.open(t)},close:function(){return
e.magnificPopup.instance&&e.magnificPopup.instance.close()},registerModule:function(t,n){n.options&&(e.magnificPopup.defaults[t]=n.options),e.extend(this.proto,n.proto),this.modules.push(t)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button
title="%title%" type="button"
class="mfp-close">&times;</button>',tClose:"Close
(Esc)",tLoading:"Loading..."}},e.fn.magnificPopup=function(n){_();var
i=e(this);if("string"==typeof n)if("open"===n){var
o,r=b?i.data("magnificPopup"):i[0].magnificPopup,a=parseInt(arguments[1],10)||0;r.items?o=r.items[a]:(o=i,r.delegate&&(o=o.find(r.delegate)),o=o.eq(a)),t._openClick({mfpEl:o},i,r)}else
t.isOpen&&t[n].apply(t,Array.prototype.slice.call(arguments,1));else
n=e.extend(!0,{},n),b?i.data("magnificPopup",n):i[0].magnificPopup=n,t.addGroup(i,n);return
i};var
P,O,z,M="inline",B=function(){z&&(O.after(z.addClass(P)).detach(),z=null)};e.magnificPopup.registerModule(M,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content
not
found"},proto:{initInline:function(){t.types.push(M),x(l+"."+M,function(){B()})},getInline:function(n,i){if(B(),n.src){var
o=t.st.inline,r=e(n.src);if(r.length){var
a=r[0].parentNode;a&&a.tagName&&(O||(P=o.hiddenClass,O=k(P),P="mfp-"+P),z=r.after(O).detach().removeClass(P)),t.updateStatus("ready")}else
t.updateStatus("error",o.tNotFound),r=e("<div>");return
n.inlineElement=r,r}return
t.updateStatus("ready"),t._parseMarkup(i,{},n),i}}});var
F,H="ajax",L=function(){F&&i.removeClass(F)},A=function(){L(),t.req&&t.req.abort()};e.magnificPopup.registerModule(H,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a
href="%url%">The content</a> could not be
loaded.'},proto:{initAjax:function(){t.types.push(H),F=t.st.ajax.cursor,x(l+"."+H,A),x("BeforeChange."+H,A)},getAjax:function(n){F&&i.addClass(F),t.updateStatus("loading");var
o=e.extend({url:n.src,success:function(i,o,r){var
a={data:i,xhr:r};T("ParseAjax",a),t.appendContent(e(a.data),H),n.finished=!0,L(),t._setFocus(),setTimeout(function(){t.wrap.addClass(v)},16),t.updateStatus("ready"),T("AjaxContentAdded")},error:function(){L(),n.finished=n.loadError=!0,t.updateStatus("error",t.st.ajax.tError.replace("%url%",n.src))}},t.st.ajax.settings);return
t.req=e.ajax(o),""}}});var
j,N=function(n){if(n.data&&void 0!==n.data.title)return
n.data.title;var i=t.st.image.titleSrc;if(i){if(e.isFunction(i))return
i.call(t,n);if(n.el)return
n.el.attr(i)||""}return""};e.magnificPopup.registerModule("image",{options:{markup:'<div
class="mfp-figure"><div
class="mfp-close"></div><figure><div
class="mfp-img"></div><figcaption><div
class="mfp-bottom-bar"><div
class="mfp-title"></div><div
class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a
href="%url%">The image</a> could not be
loaded.'},proto:{initImage:function(){var
e=t.st.image,n=".image";t.types.push("image"),x(f+n,function(){"image"===t.currItem.type&&e.cursor&&i.addClass(e.cursor)}),x(l+n,function(){e.cursor&&i.removeClass(e.cursor),I.off("resize"+h)}),x("Resize"+n,t.resizeImage),t.isLowIE&&x("AfterChange",t.resizeImage)},resizeImage:function(){var
e=t.currItem;if(e&&e.img&&t.st.image.verticalFit){var
n=0;t.isLowIE&&(n=parseInt(e.img.css("padding-top"),10)+parseInt(e.img.css("padding-bottom"),10)),e.img.css("max-height",t.wH-n)}},_onImageHasSize:function(e){e.img&&(e.hasSize=!0,j&&clearInterval(j),e.isCheckingImgSize=!1,T("ImageHasSize",e),e.imgHidden&&(t.content&&t.content.removeClass("mfp-loading"),e.imgHidden=!1))},findImageSize:function(e){var
n=0,i=e.img[0],o=function(r){j&&clearInterval(j),j=setInterval(function(){return
i.naturalWidth>0?(t._onImageHasSize(e),void
0):(n>200&&clearInterval(j),n++,3===n?o(10):40===n?o(50):100===n&&o(500),void
0)},r)};o(1)},getImage:function(n,i){var
o=0,r=function(){n&&(n.img[0].complete?(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("ready")),n.hasSize=!0,n.loaded=!0,T("ImageLoadComplete")):(o++,200>o?setTimeout(r,100):a()))},a=function(){n&&(n.img.off(".mfploader"),n===t.currItem&&(t._onImageHasSize(n),t.updateStatus("error",s.tError.replace("%url%",n.src))),n.hasSize=!0,n.loaded=!0,n.loadError=!0)},s=t.st.image,l=i.find(".mfp-img");if(l.length){var
c=document.createElement("img");c.className="mfp-img",n.el&&n.el.find("img").length&&(c.alt=n.el.find("img").attr("alt")),n.img=e(c).on("load.mfploader",r).on("error.mfploader",a),c.src=n.src,l.is("img")&&(n.img=n.img.clone()),c=n.img[0],c.naturalWidth>0?n.hasSize=!0:c.width||(n.hasSize=!1)}return
t._parseMarkup(i,{title:N(n),img_replaceWith:n.img},n),t.resizeImage(),n.hasSize?(j&&clearInterval(j),n.loadError?(i.addClass("mfp-loading"),t.updateStatus("error",s.tError.replace("%url%",n.src))):(i.removeClass("mfp-loading"),t.updateStatus("ready")),i):(t.updateStatus("loading"),n.loading=!0,n.hasSize||(n.imgHidden=!0,i.addClass("mfp-loading"),t.findImageSize(n)),i)}}});var
W,R=function(){return void 0===W&&(W=void
0!==document.createElement("p").style.MozTransform),W};e.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(e){return
e.is("img")?e:e.find("img")}},proto:{initZoom:function(){var
e,n=t.st.zoom,i=".zoom";if(n.enabled&&t.supportsTransition){var
o,r,a=n.duration,s=function(e){var
t=e.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),i="all
"+n.duration/1e3+"s
"+n.easing,o={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},r="transition";return
o["-webkit-"+r]=o["-moz-"+r]=o["-o-"+r]=o[r]=i,t.css(o),t},d=function(){t.content.css("visibility","visible")};x("BuildControls"+i,function(){if(t._allowZoom()){if(clearTimeout(o),t.content.css("visibility","hidden"),e=t._getItemToZoom(),!e)return
d(),void
0;r=s(e),r.css(t._getOffset()),t.wrap.append(r),o=setTimeout(function(){r.css(t._getOffset(!0)),o=setTimeout(function(){d(),setTimeout(function(){r.remove(),e=r=null,T("ZoomAnimationEnded")},16)},a)},16)}}),x(c+i,function(){if(t._allowZoom()){if(clearTimeout(o),t.st.removalDelay=a,!e){if(e=t._getItemToZoom(),!e)return;r=s(e)}r.css(t._getOffset(!0)),t.wrap.append(r),t.content.css("visibility","hidden"),setTimeout(function(){r.css(t._getOffset())},16)}}),x(l+i,function(){t._allowZoom()&&(d(),r&&r.remove(),e=null)})}},_allowZoom:function(){return"image"===t.currItem.type},_getItemToZoom:function(){return
t.currItem.hasSize?t.currItem.img:!1},_getOffset:function(n){var
i;i=n?t.currItem.img:t.st.zoom.opener(t.currItem.el||t.currItem);var
o=i.offset(),r=parseInt(i.css("padding-top"),10),a=parseInt(i.css("padding-bottom"),10);o.top-=e(window).scrollTop()-r;var
s={width:i.width(),height:(b?i.innerHeight():i[0].offsetHeight)-a-r};return
R()?s["-moz-transform"]=s.transform="translate("+o.left+"px,"+o.top+"px)":(s.left=o.left,s.top=o.top),s}}});var
Z="iframe",q="//about:blank",D=function(e){if(t.currTemplate[Z]){var
n=t.currTemplate[Z].find("iframe");n.length&&(e||(n[0].src=q),t.isIE8&&n.css("display",e?"block":"none"))}};e.magnificPopup.registerModule(Z,{options:{markup:'<div
class="mfp-iframe-scaler"><div
class="mfp-close"></div><iframe
class="mfp-iframe" src="//about:blank"
frameborder="0"
allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){t.types.push(Z),x("BeforeChange",function(e,t,n){t!==n&&(t===Z?D():n===Z&&D(!0))}),x(l+"."+Z,function(){D()})},getIframe:function(n,i){var
o=n.src,r=t.st.iframe;e.each(r.patterns,function(){return
o.indexOf(this.index)>-1?(this.id&&(o="string"==typeof
this.id?o.substr(o.lastIndexOf(this.id)+this.id.length,o.length):this.id.call(this,o)),o=this.src.replace("%id%",o),!1):void
0});var a={};return
r.srcAction&&(a[r.srcAction]=o),t._parseMarkup(i,a,n),t.updateStatus("ready"),i}}});var
K=function(e){var n=t.items.length;return
e>n-1?e-n:0>e?n+e:e},Y=function(e,t,n){return
e.replace(/%curr%/gi,t+1).replace(/%total%/gi,n)};e.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button
title="%title%" type="button" class="mfp-arrow
mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous
(Left arrow key)",tNext:"Next (Right arrow
key)",tCounter:"%curr% of
%total%"},proto:{initGallery:function(){var
n=t.st.gallery,i=".mfp-gallery",r=Boolean(e.fn.mfpFastClick);return
t.direction=!0,n&&n.enabled?(a+="
mfp-gallery",x(f+i,function(){n.navigateByImgClick&&t.wrap.on("click"+i,".mfp-img",function(){return
t.items.length>1?(t.next(),!1):void
0}),o.on("keydown"+i,function(e){37===e.keyCode?t.prev():39===e.keyCode&&t.next()})}),x("UpdateStatus"+i,function(e,n){n.text&&(n.text=Y(n.text,t.currItem.index,t.items.length))}),x(p+i,function(e,i,o,r){var
a=t.items.length;o.counter=a>1?Y(n.tCounter,r.index,a):""}),x("BuildControls"+i,function(){if(t.items.length>1&&n.arrows&&!t.arrowLeft){var
i=n.arrowMarkup,o=t.arrowLeft=e(i.replace(/%title%/gi,n.tPrev).replace(/%dir%/gi,"left")).addClass(y),a=t.arrowRight=e(i.replace(/%title%/gi,n.tNext).replace(/%dir%/gi,"right")).addClass(y),s=r?"mfpFastClick":"click";o[s](function(){t.prev()}),a[s](function(){t.next()}),t.isIE7&&(k("b",o[0],!1,!0),k("a",o[0],!1,!0),k("b",a[0],!1,!0),k("a",a[0],!1,!0)),t.container.append(o.add(a))}}),x(m+i,function(){t._preloadTimeout&&clearTimeout(t._preloadTimeout),t._preloadTimeout=setTimeout(function(){t.preloadNearbyImages(),t._preloadTimeout=null},16)}),x(l+i,function(){o.off(i),t.wrap.off("click"+i),t.arrowLeft&&r&&t.arrowLeft.add(t.arrowRight).destroyMfpFastClick(),t.arrowRight=t.arrowLeft=null}),void
0):!1},next:function(){t.direction=!0,t.index=K(t.index+1),t.updateItemHTML()},prev:function(){t.direction=!1,t.index=K(t.index-1),t.updateItemHTML()},goTo:function(e){t.direction=e>=t.index,t.index=e,t.updateItemHTML()},preloadNearbyImages:function(){var
e,n=t.st.gallery.preload,i=Math.min(n[0],t.items.length),o=Math.min(n[1],t.items.length);for(e=1;(t.direction?o:i)>=e;e++)t._preloadItem(t.index+e);for(e=1;(t.direction?i:o)>=e;e++)t._preloadItem(t.index-e)},_preloadItem:function(n){if(n=K(n),!t.items[n].preloaded){var
i=t.items[n];i.parsed||(i=t.parseEl(n)),T("LazyLoad",i),"image"===i.type&&(i.img=e('<img
class="mfp-img"
/>').on("load.mfploader",function(){i.hasSize=!0}).on("error.mfploader",function(){i.hasSize=!0,i.loadError=!0,T("LazyLoadError",i)}).attr("src",i.src)),i.preloaded=!0}}}});var
U="retina";e.magnificPopup.registerModule(U,{options:{replaceSrc:function(e){return
e.src.replace(/\.\w+$/,function(e){return"@2x"+e})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var
e=t.st.retina,n=e.ratio;n=isNaN(n)?n():n,n>1&&(x("ImageHasSize."+U,function(e,t){t.img.css({"max-width":t.img[0].naturalWidth/n,width:"100%"})}),x("ElementParse."+U,function(t,i){i.src=e.replaceSrc(i,n)}))}}}}),function(){var
t=1e3,n="ontouchstart"in
window,i=function(){I.off("touchmove"+r+"
touchend"+r)},o="mfpFastClick",r="."+o;e.fn.mfpFastClick=function(o){return
e(this).each(function(){var a,s=e(this);if(n){var
l,c,d,u,p,f;s.on("touchstart"+r,function(e){u=!1,f=1,p=e.originalEvent?e.originalEvent.touches[0]:e.touches[0],c=p.clientX,d=p.clientY,I.on("touchmove"+r,function(e){p=e.originalEvent?e.originalEvent.touches:e.touches,f=p.length,p=p[0],(Math.abs(p.clientX-c)>10||Math.abs(p.clientY-d)>10)&&(u=!0,i())}).on("touchend"+r,function(e){i(),u||f>1||(a=!0,e.preventDefault(),clearTimeout(l),l=setTimeout(function(){a=!1},t),o())})})}s.on("click"+r,function(){a||o()})})},e.fn.destroyMfpFastClick=function(){e(this).off("touchstart"+r+"
click"+r),n&&I.off("touchmove"+r+"
touchend"+r)}}(),_()});js/jquery.raty.js000064400000034646151163531650010036
0ustar00/*!
 * jQuery Raty - A Star Rating Plugin
 * ------------------------------------------------------------------
 *
 * jQuery Raty is a plugin that generates a customizable star rating.
 *
 * Licensed under The MIT License
 *
 * @version        2.5.2
 * @since          2010.06.11
 * @author         Washington Botelho
 * @documentation  wbotelhos.com/raty
 *
 * ------------------------------------------------------------------
 *
 *  <div id="star"></div>
 *
 *  $('#star').raty();
 *
 */

;(function($) {

  var methods = {
    init: function(settings) {
      return this.each(function() {
        methods.destroy.call(this);

        this.opt = $.extend(true, {}, $.fn.raty.defaults, settings);

        var that  = $(this),
            inits = ['number', 'readOnly',
'score', 'scoreName'];

        methods._callback.call(this, inits);

        if (this.opt.precision) {
          methods._adjustPrecision.call(this);
        }

        this.opt.number = methods._between(this.opt.number, 0,
this.opt.numberMax)

        this.opt.path = this.opt.path || '';

        if (this.opt.path &&
this.opt.path.slice(this.opt.path.length - 1, this.opt.path.length) !==
'/') {
          this.opt.path += '/';
        }

        this.stars = methods._createStars.call(this);
        this.score = methods._createScore.call(this);

        methods._apply.call(this, this.opt.score);

        var space  = this.opt.space ? 4 : 0,
            width  = this.opt.width || (this.opt.number * this.opt.size +
this.opt.number * space);

        if (this.opt.cancel) {
          this.cancel = methods._createCancel.call(this);

          width += (this.opt.size + space);
        }

        if (this.opt.readOnly) {
          methods._lock.call(this);
        } else {
          that.css('cursor', 'pointer');
          methods._binds.call(this);
        }

        if (this.opt.width !== false) {
          that.css('width', width);
        }

        methods._target.call(this, this.opt.score);

        that.data({ 'settings': this.opt, 'raty': true
});
      });
    }, _adjustPrecision: function() {
      this.opt.targetType = 'score';
      this.opt.half       = true;
    }, _apply: function(score) {
      if (score && score > 0) {
        score = methods._between(score, 0, this.opt.number);
        this.score.val(score);
      }

      methods._fill.call(this, score);

      if (score) {
        methods._roundStars.call(this, score);
      }
    }, _between: function(value, min, max) {
      return Math.min(Math.max(parseFloat(value), min), max);
    }, _binds: function() {
      if (this.cancel) {
        methods._bindCancel.call(this);
      }

      methods._bindClick.call(this);
      methods._bindOut.call(this);
      methods._bindOver.call(this);
    }, _bindCancel: function() {
      methods._bindClickCancel.call(this);
      methods._bindOutCancel.call(this);
      methods._bindOverCancel.call(this);
    }, _bindClick: function() {
      var self = this,
          that = $(self);

      self.stars.on('click.raty', function(evt) {
        self.score.val((self.opt.half || self.opt.precision) ?
that.data('score') : this.alt);

        if (self.opt.click) {
          self.opt.click.call(self, parseFloat(self.score.val()), evt);
        }
      });
    }, _bindClickCancel: function() {
      var self = this;

      self.cancel.on('click.raty', function(evt) {
        self.score.removeAttr('value');

        if (self.opt.click) {
          self.opt.click.call(self, null, evt);
        }
      });
    }, _bindOut: function() {
      var self = this;

      $(this).on('mouseleave.raty', function(evt) {
        var score = parseFloat(self.score.val()) || undefined;

        methods._apply.call(self, score);
        methods._target.call(self, score, evt);

        if (self.opt.mouseout) {
          self.opt.mouseout.call(self, score, evt);
        }
      });
    }, _bindOutCancel: function() {
      var self = this;

      self.cancel.on('mouseleave.raty', function(evt) {
        $(this).attr('src', self.opt.path + self.opt.cancelOff);

        if (self.opt.mouseout) {
          self.opt.mouseout.call(self, self.score.val() || null, evt);
        }
      });
    }, _bindOverCancel: function() {
      var self = this;

      self.cancel.on('mouseover.raty', function(evt) {
        $(this).attr('src', self.opt.path + self.opt.cancelOn);

        self.stars.attr('src', self.opt.path +
self.opt.starOff);

        methods._target.call(self, null, evt);

        if (self.opt.mouseover) {
          self.opt.mouseover.call(self, null);
        }
      });
    }, _bindOver: function() {
      var self   = this,
          that   = $(self),
          action = self.opt.half ? 'mousemove.raty' :
'mouseover.raty';

      self.stars.on(action, function(evt) {
        var score = parseInt(this.alt, 10);

        if (self.opt.half) {
          var position = parseFloat((evt.pageX - $(this).offset().left) /
self.opt.size),
              plus     = (position > .5) ? 1 : .5;

          score = score - 1 + plus;

          methods._fill.call(self, score);

          if (self.opt.precision) {
            score = score - plus + position;
          }

          methods._roundStars.call(self, score);

          that.data('score', score);
        } else {
          methods._fill.call(self, score);
        }

        methods._target.call(self, score, evt);

        if (self.opt.mouseover) {
          self.opt.mouseover.call(self, score, evt);
        }
      });
    }, _callback: function(options) {
      for (i in options) {
        if (typeof this.opt[options[i]] === 'function') {
          this.opt[options[i]] = this.opt[options[i]].call(this);
        }
      }
    }, _createCancel: function() {
      var that   = $(this),
          icon   = this.opt.path + this.opt.cancelOff,
          cancel = $('<img />', { src: icon, alt:
'x', title: this.opt.cancelHint, 'class':
'raty-cancel' });

      if (this.opt.cancelPlace == 'left') {
        that.prepend('&#160;').prepend(cancel);
      } else {
        that.append('&#160;').append(cancel);
      }

      return cancel;
    }, _createScore: function() {
      return $('<input />', { type: 'hidden',
name: this.opt.scoreName }).appendTo(this);
    }, _createStars: function() {
      var that = $(this);

      for (var i = 1; i <= this.opt.number; i++) {
        var title = methods._getHint.call(this, i),
            icon  = (this.opt.score && this.opt.score >= i) ?
'starOn' : 'starOff';

        icon = this.opt.path + this.opt[icon];

        $('<img />', { src : icon, alt: i, title: title
}).appendTo(this);

        if (this.opt.space) {
          that.append((i < this.opt.number) ? '&#160;' :
'');
        }
      }

      return that.children('img');
    }, _error: function(message) {
      $(this).html(message);

      $.error(message);
    }, _fill: function(score) {
      var self  = this,
          hash  = 0;

      for (var i = 1; i <= self.stars.length; i++) {
        var star   = self.stars.eq(i - 1),
            select = self.opt.single ? (i == score) : (i <= score);

        if (self.opt.iconRange && self.opt.iconRange.length >
hash) {
          var irange = self.opt.iconRange[hash],
              on     = irange.on  || self.opt.starOn,
              off    = irange.off || self.opt.starOff,
              icon   = select ? on : off;

          if (i <= irange.range) {
            star.attr('src', self.opt.path + icon);
          }

          if (i == irange.range) {
            hash++;
          }
        } else {
          var icon = select ? 'starOn' : 'starOff';

          star.attr('src', this.opt.path + this.opt[icon]);
        }
      }
    }, _getHint: function(score) {
      var hint = this.opt.hints[score - 1];
      return (hint === '') ? '' : (hint || score);
    }, _lock: function() {
      var score = parseInt(this.score.val(), 10), // TODO: 3.1 >>
[['1'], ['2'], ['3', '.1',
'.2']]
          hint  = score ? methods._getHint.call(this, score) :
this.opt.noRatedMsg;

      $(this).data('readonly', true).css('cursor',
'').attr('title', hint);

      this.score.attr('readonly', 'readonly');
      this.stars.attr('title', hint);

      if (this.cancel) {
        this.cancel.hide();
      }
    }, _roundStars: function(score) {
      var rest = (score - Math.floor(score)).toFixed(2);

      if (rest > this.opt.round.down) {
        var icon = 'starOn';                                 //
Up:   [x.76 .. x.99]

        if (this.opt.halfShow && rest < this.opt.round.up) { //
Half: [x.26 .. x.75]
          icon = 'starHalf';
        } else if (rest < this.opt.round.full) {             // Down:
[x.00 .. x.5]
          icon = 'starOff';
        }

        this.stars.eq(Math.ceil(score) - 1).attr('src',
this.opt.path + this.opt[icon]);
      }                              // Full down: [x.00 .. x.25]
    }, _target: function(score, evt) {
      if (this.opt.target) {
        var target = $(this.opt.target);

        if (target.length === 0) {
          methods._error.call(this, 'Target selector invalid or
missing!');
        }

        if (this.opt.targetFormat.indexOf('{score}') < 0) {
          methods._error.call(this, 'Template "{score}"
missing!');
        }

        var mouseover = evt && evt.type == 'mouseover';

        if (score === undefined) {
          score = this.opt.targetText;
        } else if (score === null) {
          score = mouseover ? this.opt.cancelHint : this.opt.targetText;
        } else {
          if (this.opt.targetType == 'hint') {
            score = methods._getHint.call(this, Math.ceil(score));
          } else if (this.opt.precision) {
            score = parseFloat(score).toFixed(1);
          }

          if (!mouseover && !this.opt.targetKeep) {
            score = this.opt.targetText;
          }
        }

        if (score) {
          score =
this.opt.targetFormat.toString().replace('{score}', score);
        }

        if (target.is(':input')) {
          target.val(score);
        } else {
          target.html(score);
        }
      }
    }, _unlock: function() {
      $(this).data('readonly', false).css('cursor',
'pointer').removeAttr('title');

      this.score.removeAttr('readonly', 'readonly');

      for (var i = 0; i < this.opt.number; i++) {
        this.stars.eq(i).attr('title',
methods._getHint.call(this, i + 1));
      }

      if (this.cancel) {
        this.cancel.css('display', '');
      }
    }, cancel: function(click) {
      return this.each(function() {
        if ($(this).data('readonly') !== true) {
          methods[click ? 'click' : 'score'].call(this,
null);
          this.score.removeAttr('value');
        }
      });
    }, click: function(score) {
      return $(this).each(function() {
        if ($(this).data('readonly') !== true) {
          methods._apply.call(this, score);

          if (!this.opt.click) {
            methods._error.call(this, 'You must add the "click:
function(score, evt) { }" callback.');
          }

          this.opt.click.call(this, score, { type: 'click' });

          methods._target.call(this, score);
        }
      });
    }, destroy: function() {
      return $(this).each(function() {
        var that = $(this),
            raw  = that.data('raw');

        if (raw) {
          that.off('.raty').empty().css({ cursor:
raw.style.cursor, width: raw.style.width
}).removeData('readonly');
        } else {
          that.data('raw', that.clone()[0]);
        }
      });
    }, getScore: function() {
      var score = [],
          value ;

      $(this).each(function() {
        value = this.score.val();

        score.push(value ? parseFloat(value) : undefined);
      });

      return (score.length > 1) ? score : score[0];
    }, readOnly: function(readonly) {
      return this.each(function() {
        var that = $(this);

        if (that.data('readonly') !== readonly) {
          if (readonly) {
           
that.off('.raty').children('img').off('.raty');

            methods._lock.call(this);
          } else {
            methods._binds.call(this);
            methods._unlock.call(this);
          }

          that.data('readonly', readonly);
        }
      });
    }, reload: function() {
      return methods.set.call(this, {});
    }, score: function() {
      return arguments.length ? methods.setScore.apply(this, arguments) :
methods.getScore.call(this);
    }, set: function(settings) {
      return this.each(function() {
        var that   = $(this),
            actual = that.data('settings'),
            news   = $.extend({}, actual, settings);

        that.raty(news);
      });
    }, setScore: function(score) {
      return $(this).each(function() {
        if ($(this).data('readonly') !== true) {
          methods._apply.call(this, score);
          methods._target.call(this, score);
        }
      });
    }
  };

  $.fn.raty = function(method) {
    if (methods[method]) {
      return methods[method].apply(this,
Array.prototype.slice.call(arguments, 1));
    } else if (typeof method === 'object' || !method) {
      return methods.init.apply(this, arguments);
    } else {
      $.error('Method ' + method + ' does not
exist!');
    }
  };

  $.fn.raty.defaults = {
    cancel        : false,
    cancelHint    : 'Cancel this rating!',
    cancelOff     : 'cancel-off.png',
    cancelOn      : 'cancel-on.png',
    cancelPlace   : 'left',
    click         : undefined,
    half          : false,
    halfShow      : true,
    hints         : ['bad', 'poor',
'regular', 'good', 'gorgeous'],
    iconRange     : undefined,
    mouseout      : undefined,
    mouseover     : undefined,
    noRatedMsg    : 'Not rated yet!',
    number        : 5,
    numberMax     : 20,
    path          : '',
    precision     : false,
    readOnly      : false,
    round         : { down: .25, full: .6, up: .76 },
    score         : undefined,
    scoreName     : 'score',
    single        : false,
    size          : 16,
    space         : true,
    starHalf      : 'star-half.png',
    starOff       : 'star-off.png',
    starOn        : 'star-on.png',
    target        : undefined,
    targetFormat  : '{score}',
    targetKeep    : false,
    targetText    : '',
    targetType    : 'hint',
    width         : undefined
  };

})(jQuery);
js/kbrules.js000064400000030503151163531650007174 0ustar00var
RSTicketsProConditions = {
	typeOptions: [
		{value: '', text:
Joomla.JText._('RST_PLEASE_SELECT')},
		{value: 'department', text:
Joomla.JText._('RST_DEPARTMENT')},
		{value: 'subject', text:
Joomla.JText._('RST_TICKET_SUBJECT')},
		{value: 'message', text:
Joomla.JText._('RST_TICKET_MESSAGE')},
		{value: 'priority', text:
Joomla.JText._('RST_PRIORITY')},
		{value: 'status', text:
Joomla.JText._('RST_TICKET_STATUS')},
		{value: 'custom_field', text:
Joomla.JText._('RST_CUSTOM_FIELD')}
	],
	conditionOptions: [
		{value: '', text:
Joomla.JText._('RST_PLEASE_SELECT')},
		{value: 'eq', text: Joomla.JText._('RST_IS_EQUAL')},
		{value: 'neq', text:
Joomla.JText._('RST_IS_NOT_EQUAL')},
		{value: 'like', text:
Joomla.JText._('RST_IS_LIKE')},
		{value: 'notlike', text:
Joomla.JText._('RST_IS_NOT_LIKE')}
	],
	connectorOptions: [
		{value: 'AND', text: Joomla.JText._('RST_AND')},
		{value: 'OR', text: Joomla.JText._('RST_OR')}
	],
	addSpacing: function(childContainer, text) {
		if (!text) {
			text = '&nbsp;';
		}

		childContainer.append(jQuery('<span>').html(text));
	},
	getFormControlName: function(name) {
		return 'jform[' + name + '][]';
	},
	changeSelectCustomField: function() {
		var td = this.parentNode.parentNode;
		var children = td.childNodes;
		var responseSpan = false;
		var selectCondition;
		for (var i=0; i<children.length; i++)
		{
			if (children[i].className === 'responseSpan')
			{
				responseSpan = children[i];
				continue;
			}
			if (children[i].name ==
RSTicketsProConditions.getFormControlName('select_condition'))
			{
				selectCondition = children[i];
				continue;
			}
		}

		responseSpan.innerHTML = '';

		selectCondition.options.selectedIndex = 0;
		selectCondition.disabled = true;
		selectCondition.style.display = 'none';

		if (this.value != '')
		{
			selectCondition.disabled = false;
			selectCondition.style.display = '';

			var xmlHttp = new XMLHttpRequest();
			var url =
'index.php?option=com_rsticketspro&task=kbrules.showCustomFieldValues&cfid='
+ this.value;

			xmlHttp.onreadystatechange = function() {
				if (xmlHttp.readyState === 4)
				{
					var has_options = false;

					var select = document.createElement('select');
					select.name =
RSTicketsProConditions.getFormControlName('select_value');
					select.disabled = true;
					select.style.display = 'none';
					try {
						var options = JSON.parse(xmlHttp.responseText);
						if (options)
							for (var i=0; i<options.length; i++)
							{
								has_options = true;
								var option = document.createElement('option');
								option.value = options[i].id;
								option.text = options[i].name;
								select.options.add(option);
							}
					}
					catch (e)
					{
						alert(e);
					}

					if (has_options)
						responseSpan.appendChild(select);

					var textbox = document.createElement('input');
					textbox.type = 'text';
					textbox.name =
RSTicketsProConditions.getFormControlName('select_value');
					textbox.disabled = true;
					textbox.style.display = 'none';
					textbox.value = '';

					responseSpan.appendChild(textbox);
				}
			};

			xmlHttp.open('GET', url, true);
			xmlHttp.send(null);
		}
	},
	changeSelectType: function() {
		var td = this.parentNode;
		var children = td.childNodes;
		var task, selectCondition, responseSpan, responseSpan2, url;
		var xmlHttp = new XMLHttpRequest();

		for (var i=0; i<children.length; i++)
		{
			if (children[i].name ==
RSTicketsProConditions.getFormControlName('select_condition'))
			{
				selectCondition = children[i];
				continue;
			}
			if (children[i].className == 'responseSpan')
			{
				responseSpan = children[i];
				continue;
			}
			if (children[i].className == 'responseSpan2')
			{
				responseSpan2 = children[i];
				continue;
			}
		}

		responseSpan.innerHTML = '';
		responseSpan2.innerHTML = '';

		selectCondition.options.selectedIndex = 0;
		selectCondition.disabled = true;
		selectCondition.style.display = 'none';

		switch (this.value)
		{
			case 'department':
			case 'priority':
			case 'status':
				selectCondition.disabled = false;
				selectCondition.style.display = '';

				if (this.value == 'department')
					task = 'showDepartments';
				else if (this.value == 'priority')
					task = 'showPriorities';
				else if (this.value == 'status')
					task = 'showStatuses';

				url = 'index.php?option=com_rsticketspro&task=kbrules.' +
task;

				xmlHttp.onreadystatechange = function() {
					if (xmlHttp.readyState === 4)
					{
						var select = document.createElement('select');
						select.name =
RSTicketsProConditions.getFormControlName('select_value');
						select.disabled = true;
						select.style.display = 'none';

						try {
							var options = JSON.parse(xmlHttp.responseText);
							if (options)
								for (var i=0; i<options.length; i++)
								{
									var option = document.createElement('option');
									option.value = options[i].id;
									option.text = options[i].name;
									select.options.add(option);
								}
						}
						catch (e)
						{
							alert(e);
						}

						responseSpan.appendChild(select);

						var textbox = document.createElement('input');
						textbox.type = 'text';
						textbox.name =
RSTicketsProConditions.getFormControlName('select_value');
						textbox.disabled = true;
						textbox.style.display = 'none';
						textbox.value = '';

						responseSpan.appendChild(textbox);
					}
				};

				xmlHttp.open('GET', url, true);
				xmlHttp.send(null);
				break;

			case 'subject':
				selectCondition.disabled = false;
				selectCondition.style.display = '';

				var textbox = document.createElement('input');
				textbox.type = 'text';
				textbox.name =
RSTicketsProConditions.getFormControlName('select_value');
				textbox.disabled = true;
				textbox.style.display = 'none';
				textbox.value = '';

				responseSpan.appendChild(textbox);
				break

			case 'message':
				selectCondition.disabled = false;
				selectCondition.style.display = '';

				var textarea = document.createElement('textarea');
				textarea.name =
RSTicketsProConditions.getFormControlName('select_value');
				textarea.disabled = true;
				textarea.style.display = 'none';
				textarea.value = '';

				responseSpan.appendChild(textarea);
				break;

			case 'custom_field':
				url =
'index.php?option=com_rsticketspro&task=kbrules.showCustomFields';

				xmlHttp.onreadystatechange = function() {
					if (xmlHttp.readyState === 4)
					{
						var select = document.createElement('select');
						var option = document.createElement('option');
						option.value = '';
						option.text = Joomla.JText._('RST_PLEASE_SELECT');
						select.options.add(option);

						select.name =
RSTicketsProConditions.getFormControlName('select_custom_field_value');

						try {
							var response = JSON.parse(xmlHttp.responseText);
							var departments = response.departments;
							var options = response.options;

							for (var i=0; i<departments.length; i++)
							{
								var group = document.createElement('optgroup');
								group.label = departments[i].name;

								for (var j=0; j<options.length; j++)
								{
									if (options[j].department_id != departments[i].id)
									{
										continue;
									}

									var option = document.createElement('option');
									option.value = options[j].id;
									if (typeof(option.innerText) != 'undefined')
										option.innerText = options[j].name;
									else
										option.text = options[j].name;

									group.appendChild(option);
								}

								select.appendChild(group);
							}
						}
						catch (e)
						{
							alert(e);
						}

						jQuery(select).change(RSTicketsProConditions.changeSelectCustomField);
						responseSpan2.appendChild(select);

						var textbox = document.createElement('input');
						textbox.type = 'text';
						textbox.name =
RSTicketsProConditions.getFormControlName('select_value');
						textbox.disabled = true;
						textbox.style.display = 'none';
						textbox.value = '';

						responseSpan.appendChild(textbox);
					}
				};

				xmlHttp.open('GET', url, true);
				xmlHttp.send(null);
				break;
		}
	},
	changeSelectCondition: function() {
		var td = this.parentNode;
		var children = td.childNodes;
		var responseSpan = false;
		for (var i=0; i<children.length; i++)
			if (children[i].className == 'responseSpan')
			{
				responseSpan = children[i];
				break;
			}

		var children = responseSpan.childNodes;

		for (var i=0; i<children.length; i++)
		{
			children[i].disabled = true;
			if (typeof children[i].style != 'undefined')
				children[i].style.display = 'none';
		}

		if (!children.length)
			return;

		switch (this.value)
		{
			case 'neq':
			case 'eq':
				children[0].disabled = false;
				children[0].style.display = '';
				break;

			case 'like':
			case 'notlike':
				if (children.length == 2)
				{
					children[1].disabled = false;
					children[1].style.display = '';
				}
				else
				{
					children[0].disabled = false;
					children[0].style.display = '';
				}
				break
		}
	},
	add: function() {
		var childContainer = jQuery('<p>').html('<span
class="rst_condition_if">' +
Joomla.JText._('RST_IF') + '</span> ');

		var selectType = jQuery('<select>', {
			'name':
RSTicketsProConditions.getFormControlName('select_type')
		});
		selectType.change(this.changeSelectType);
		for (var i=0; i<this.typeOptions.length; i++) {
			var typeOption = this.typeOptions[i];
			selectType.append(jQuery('<option>', {
				value: typeOption.value,
				text: typeOption.text
			}));
		}
		childContainer.append(selectType);

		this.addSpacing(childContainer);
		childContainer.append(jQuery('<span>', {
			'class': 'responseSpan2'
		}));
		this.addSpacing(childContainer);

		var selectCondition = jQuery('<select>', {
			'name':
RSTicketsProConditions.getFormControlName('select_condition'),
			'disabled': true
		}).hide();
		selectCondition.change(this.changeSelectCondition);
		for (var i=0; i<this.conditionOptions.length; i++) {
			var typeOption = this.conditionOptions[i];
			selectCondition.append(jQuery('<option>', {
				value: typeOption.value,
				text: typeOption.text
			}));
		}
		childContainer.append(selectCondition);

		this.addSpacing(childContainer);
		childContainer.append(jQuery('<span>', {
			'class': 'responseSpan'
		}));
		this.addSpacing(childContainer);

		var selectConnector = jQuery('<select>', {
			'name':
RSTicketsProConditions.getFormControlName('select_connector')
		});
		for (var i=0; i<this.connectorOptions.length; i++) {
			var typeOption = this.connectorOptions[i];
			selectConnector.append(jQuery('<option>', {
				value: typeOption.value,
				text: typeOption.text
			}));
		}

		childContainer.append(selectConnector);
		this.addSpacing(childContainer);

		var removeButton = jQuery('<button type="button"
class="btn btn-danger deleteConditionLink"><span
class="icon icon-minus"></span></button>');

		removeButton.click(function(){
			RSTicketsProConditions.remove(this);
		});

		childContainer.append(removeButton);

		jQuery('#rst_conditions').append(childContainer);
	},
	remove: function(btn) {
		jQuery(btn).parent().remove();
	}
}

jQuery(document).ready(function($) {
	$('.deleteConditionLink').click(function(){
		RSTicketsProConditions.remove(this);
	});
	$('#addConditionLink').click(function(){
		RSTicketsProConditions.add();
	});

	var selectType =
RSTicketsProConditions.getFormControlName('select_type');
	var i;
	for (i = 0; i < document.getElementsByName(selectType).length; i++) {
		$(document.getElementsByName(selectType)[i]).change(RSTicketsProConditions.changeSelectType);
	}
	var selectCondition =
RSTicketsProConditions.getFormControlName('select_condition');
	for (i = 0; i < document.getElementsByName(selectCondition).length;
i++) {
		$(document.getElementsByName(selectCondition)[i]).change(RSTicketsProConditions.changeSelectCondition);
	}
	var selectCustomField =
RSTicketsProConditions.getFormControlName('select_custom_field_value');
	for (i = 0; i < document.getElementsByName(selectCustomField).length;
i++) {
		$(document.getElementsByName(selectCustomField)[i]).change(RSTicketsProConditions.changeSelectCustomField);
	}
});js/ordertable.js000064400000000560151163531650007650
0ustar00Joomla.orderTable = function(listOrder) {
	table = document.getElementById("sortTable");
	direction = document.getElementById("directionTable");
	order = table.options[table.selectedIndex].value;
	
	if (order != listOrder) {
		dirn = 'asc';
	} else {
		dirn = direction.options[direction.selectedIndex].value;
	}
	
	Joomla.tableOrdering(order, dirn, '');
}js/predefinedsearches.js000064400000001207151163531650011347
0ustar00window.addEventListener('DOMContentLoaded', function() {
    var toggleDelete = function() {
        var btn = document.getElementById('rst_delete_btn');

        if (document.getElementsByName('boxchecked')[0].value ===
'0') {
            btn.setAttribute('disabled', 'disabled');
        } else {
            btn.removeAttribute('disabled');
        }
    }

   
document.getElementsByName('checkall-toggle')[0].addEventListener('click',
toggleDelete);

    var elements = document.getElementsByName('cid[]');
    for (var i = 0; i < elements.length; i++) {
        elements[i].addEventListener('click', toggleDelete);
    }
});js/rsticketspro.js000064400000042443151163531650010267 0ustar00var
RSTicketsPro = {
	getHttp               : function () {
		var xmlHttp;
		try {
			// Firefox, Opera 8.0+, Safari
			xmlHttp = new XMLHttpRequest();
		} catch (e) {
			// Internet Explorer
			try {
				xmlHttp = new ActiveXObject('Msxml2.XMLHTTP');
			} catch (e) {
				xmlHttp = new ActiveXObject('Microsoft.XMLHTTP');
			}
		}
		return xmlHttp;
	},
	sendHttp              : function (httpUrl, httpParams, httpType) {
		xmlHttp = this.getHttp();
		if (typeof httpParams == 'array') {
			httpParams = httpParams.join('&');
		} else if (typeof httpParams == 'object') {
			var tmpParams = [];
			for (var k in httpParams) {
				tmpParams.push(k + '=' + httpParams[k]);
			}
			httpParams = tmpParams.join('&');
		}
		httpType = httpType.toUpperCase();

		xmlHttp.open(httpType, httpUrl, true);
		if (httpType == 'POST') {
			xmlHttp.setRequestHeader('Content-type',
'application/x-www-form-urlencoded');
		}

		xmlHttp.send(httpParams);
	},
	flagTicket            : function (url, button, ticket_id) {
		var flagged;
		// no flag
		if (button.classList.contains('rst_not_flagged')) {
			button.classList.remove('rst_not_flagged');
			button.classList.add('rst_flagged');
			flagged = 1;
		} else {
			button.classList.remove('rst_flagged');
			button.classList.add('rst_not_flagged');
			flagged = 0;
		}

		this.sendHttp(
			url, {
				'option' : 'com_rsticketspro',
				'task'   : 'ticket.flag',
				'cid'    : ticket_id,
				'flagged': flagged
			},
			'POST'
		);
	},
	disableBulk           : function (value) {
		value = value == 0 ? false : true;

		if (document.getElementById('bulk_staff_id')) {
			document.getElementById('bulk_staff_id').disabled = value;
		}
		if (document.getElementById('bulk_priority_id')) {
			document.getElementById('bulk_priority_id').disabled = value;
		}
		if (document.getElementById('bulk_status_id')) {
			document.getElementById('bulk_status_id').disabled = value;
		}
		if (document.getElementById('bulk_notify')) {
			document.getElementById('bulk_notify').disabled = value;
		}
		if (document.getElementById('bulk_department_id')) {
			document.getElementById('bulk_department_id').disabled =
value;
		}

		if (typeof jQuery != 'undefined') {
			jQuery('#bulk_staff_id').trigger('liszt:updated');
			jQuery('#bulk_priority_id').trigger('liszt:updated');
			jQuery('#bulk_status_id').trigger('liszt:updated');
			jQuery('#bulk_notify').trigger('liszt:updated');
		}
	},
	departments           : {},
	getDepartment         : function () {
		if (typeof
this.departments[document.getElementsByName('jform[department_id]')[0].value]
!== 'undefined')
		{
			return
this.departments[document.getElementsByName('jform[department_id]')[0].value];
		}

		return {
			id: 0,
			priority: '',
			uploads: {
				required: false,
				allowed: false,
				message: '',
				message_max_files: '',
				message_max_size: '',
				max: 0
			}
		};
	},
	changeDepartment      : function () {
		var department = this.getDepartment();

		this.changePriority(department);
		this.showFiles(department);
		this.showPredefinedSubjects(department);
	},
	changePriority        : function (department) {
		document.getElementsByName('jform[priority_id]')[0].value =
department.priority;
	},
	showFiles             : function (department) {
		var containers = {
			message:
document.getElementById('rst_files_message_container'),
			files  : document.querySelector('.rst_files_container'),
			label  : document.getElementById('jform_files-lbl')
		};

		// hide the containers
		containers.message.style.display = 'none';
		containers.files.classList.add('hidden');
		containers.label.innerText =
Joomla.JText._('RST_TICKET_ATTACHMENTS');

		if (department.uploads.allowed) {
			// set the message
			containers.message.innerHTML = '<p>' +
department.uploads.message + ' ' +
department.uploads.message_max_files + ' ' +
department.uploads.message_max_size + '</p>';

			var currentFiles =
document.getElementsByName('jform[files][]');

			// adjust the number of upload fields
			if (department.uploads.max > 0 && currentFiles.length >=
department.uploads.max) {
				for (var i = currentFiles.length - 1; i > department.uploads.max -
1; i--) {
					currentFiles[i].parentNode.removeChild(currentFiles[i]);
				}
			}

			if (department.uploads.required)
			{
                containers.label.innerText =
Joomla.JText._('RST_TICKET_ATTACHMENTS_REQUIRED');
			}

			// display the containers
			containers.message.style.display = 'block';
			containers.files.classList.remove('hidden');
		}
	},
	addReplyFile          : function () {
		var department = this.getDepartment();
		var currentFiles =
document.getElementsByName('ticket[files][]');

		if (department.uploads.max > 0 && currentFiles.length >=
department.uploads.max) {
			alert(Joomla.JText._('RST_MAX_UPLOAD_FILES_REACHED'));
		} else {
			var file = currentFiles[0];
			var newUpload = document.createElement('input');
			newUpload.setAttribute('name', 'ticket[files][]');
			newUpload.setAttribute('type', 'file');
			newUpload.setAttribute('id', 'jform_files' +
currentFiles.length);
			newUpload.setAttribute('class', 'rst_file_block');
			newUpload.className = 'rst_file_block';
			var newLabel = document.createElement('label');

			file.parentNode.appendChild(newLabel);
			file.parentNode.appendChild(newUpload);
		}
	},
	addSubmitFile         : function () {
		var department = this.getDepartment();
		var currentFiles =
document.getElementsByName('jform[files][]');

		if (department.uploads.max > 0 && currentFiles.length >=
department.uploads.max) {
			alert(Joomla.JText._('RST_MAX_UPLOAD_FILES_REACHED'));
		} else {
			var file = currentFiles[0];
			var newUpload = document.createElement('input');
			newUpload.setAttribute('name', 'jform[files][]');
			newUpload.setAttribute('type', 'file');
			newUpload.setAttribute('id', 'jform_files' +
currentFiles.length);
			newUpload.setAttribute('class', 'rst_file_block');
			newUpload.className = 'rst_file_block';
			var newLabel = document.createElement('label');

			file.parentNode.appendChild(newLabel);
			file.parentNode.appendChild(newUpload);
		}
	},

	showPredefinedSubjects: function (department) {

	},
	populateSelect        : function (select, values) {
		select.options.length = 0;
		for (k in values) {
			var option = document.createElement('option');
			option.text = values[k];
			option.value = k;

			// check if it findsthe [c] tag
			if (option.value.indexOf('[c]') > -1) {
				option.defaultSelected = true;
				
				// we will remove the tag after we set the select true
				option.text = option.text.replace('[c]', '');
				option.value = option.value.replace('[c]', '');
			}

			try {
				select.add(option, null); // standards compliant; doesn't work in
IE
			}
			catch (ex) {
				select.add(option); // IE only
			}
		}
	},
	disableStaff          : function (departmentDropdown, staffDropdown) {
		var departmentText;
		var departmentValue;

		if (!departmentDropdown) {
			if (document.getElementsByName('ticket[department_id]').length
> 0) {
				departmentDropdown =
document.getElementsByName('ticket[department_id]')[0];
				departmentText =
departmentDropdown.options[departmentDropdown.selectedIndex].text;
				departmentValue =
departmentDropdown.options[departmentDropdown.selectedIndex].value;
			} else if
(document.getElementsByName('hidden_department_id').length >
0) {
				departmentText =
document.getElementsByName('hidden_department_id')[0].value;
			}
		} else {
			departmentText =
departmentDropdown.options[departmentDropdown.selectedIndex].text;
			departmentValue =
departmentDropdown.options[departmentDropdown.selectedIndex].value;
		}

		if (!staffDropdown) {
			if (document.getElementsByName('ticket[staff_id]').length >
0) {
				staffDropdown =
document.getElementsByName('ticket[staff_id]')[0];
			}
		}

		if (!staffDropdown) {
			return false;
		}

		if (typeof departmentText === 'undefined') {
			return false;
		}

		var optgroups =
staffDropdown.getElementsByTagName('optgroup');
		var optgroup, options;
		var i;

		for (i = 0; i < optgroups.length; i++) {
			optgroup = optgroups[i];
			options = optgroup.getElementsByTagName('option');
			for (j = 0; j < options.length; j++) {
				options[j].disabled = true;
				if (optgroups[i].getAttribute('label') == departmentText ||
departmentValue === '0') {
					options[j].disabled = false;
				}
			}
		}

		if (staffDropdown.options[staffDropdown.selectedIndex].disabled) {
			var found = false;
			// search if the selected staff is in this department
			for (i = 0; i < optgroups.length; i++) {
				optgroup = optgroups[i];
				if (optgroups[i].getAttribute('label') == departmentText) {
					options = optgroup.getElementsByTagName('option');
					for (var j = 0; j < options.length; j++) {
						if (!options[j].disabled && options[j].value ==
staffDropdown.options[staffDropdown.selectedIndex].value) {
							found = true;
							options[j].selected = true;
						}
					}
				}
			}

			if (!found) {
				staffDropdown.selectedIndex = 0;
			}
		}

		if (typeof jQuery !== 'undefined') {
			jQuery(staffDropdown).trigger('liszt:updated');
		}
	},
	showReply             : function (button) {
		button.className = 'hidden';
		document.getElementById('com-rsticketspro-reply-box').className
= '';
	},
	sendRating            : function (url, rating, id) {
		this.sendHttp(
			url, {
				'option': 'com_rsticketspro',
				'task'  : 'ticket.rate',
				'cid'   : id,
				'rating': rating
			},
			'POST'
		);
	},
	refreshCaptcha        : function (route) {
		document.getElementById('submit_captcha_image').src = route +
(route.indexOf('?') > -1 ? '&' : '?')
+ 'sid=' + Math.floor((Math.random() * 1000) + 1);
	},
	
	openMagnificModal 	  : function(evt,modal_id) {
		evt.preventDefault();
		if (typeof jQuery == 'undefined') {
			alert(Joomla.JText._('RST_JQUERY_NOT_FOUND'));
		} else {
			jQuery.magnificPopup.open({
				type: 'inline',
				preloader: true,
				overflowY: 'scroll',
				items: {
					src: modal_id,
					callbacks: {
						beforeOpen: function () {
							jQuery(modal_id).show();
						},
						close: function () {
							jQuery(modal_id).hide();
						}
					}
				}
			});
		}
	},
	addEvent: function(obj, evType, fn) {
		if (obj.addEventListener)
		{
			obj.addEventListener(evType, fn, false);
			return true;
		}
		else if (obj.attachEvent)
		{
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		}
		else
		{
			return false;
		}
	},
	timeCounter: function(startTime) {
		var start = new Date(startTime);
		var end;
		var timediff = start.getTimezoneOffset();
		start = start.getTime();

		self.chrono = function (){
			end = new Date();
			end = end.getTime();

			if (timediff != 0) {
				end = end + timediff * 60000;
			}

			var duration = end - start;

			var seconds = Math.floor((duration / 1000) % 60),
				minutes = Math.floor((duration / (1000 * 60)) % 60),
				hours = Math.floor(duration / (1000 * 60 * 60));

			hours = (hours < 10) ? "0" + hours : hours;
			minutes = (minutes < 10) ? "0" + minutes : minutes;
			seconds = (seconds < 10) ? "0" + seconds : seconds;

			jQuery('.hours').html(hours);
			jQuery('.minutes').html(minutes);
			jQuery('.seconds').html(seconds);

			setTimeout("self.chrono()", 1000);
		};
		self.chrono();
	}
};

/*
 Developed by Robert Nyman, http://www.robertnyman.com
 Code/licensing: http://code.google.com/p/getelementsbyclassname/
 */
RSTicketsPro.getElementsByClassName = function (className, tag, elm) {
	if (document.getElementsByClassName) {
		getElementsByClassName = function (className, tag, elm) {
			elm = elm || document;
			var elements = elm.getElementsByClassName(className),
				nodeName = (tag) ? new RegExp("\\b" + tag + "\\b",
"i") : null,
				returnElements = [],
				current;
			for (var i = 0, il = elements.length; i < il; i += 1) {
				current = elements[i];
				if (!nodeName || nodeName.test(current.nodeName)) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	else if (document.evaluate) {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = "",
				xhtmlNamespace = "http://www.w3.org/1999/xhtml",
				namespaceResolver = (document.documentElement.namespaceURI ===
xhtmlNamespace) ? xhtmlNamespace : null,
				returnElements = [],
				elements,
				node;
			for (var j = 0, jl = classes.length; j < jl; j += 1) {
				classesToCheck += "[contains(concat(' ', @class, '
'), ' " + classes[j] + " ')]";
			}
			try {
				elements = document.evaluate(".//" + tag + classesToCheck,
elm, namespaceResolver, 0, null);
			}
			catch (e) {
				elements = document.evaluate(".//" + tag + classesToCheck,
elm, null, 0, null);
			}
			while ((node = elements.iterateNext())) {
				returnElements.push(node);
			}
			return returnElements;
		};
	}
	else {
		getElementsByClassName = function (className, tag, elm) {
			tag = tag || "*";
			elm = elm || document;
			var classes = className.split(" "),
				classesToCheck = [],
				elements = (tag === "*" && elm.all) ? elm.all :
elm.getElementsByTagName(tag),
				current,
				returnElements = [],
				match;
			for (var k = 0, kl = classes.length; k < kl; k += 1) {
				classesToCheck.push(new RegExp("(^|\\s)" + classes[k] +
"(\\s|$)"));
			}
			for (var l = 0, ll = elements.length; l < ll; l += 1) {
				current = elements[l];
				match = false;
				for (var m = 0, ml = classesToCheck.length; m < ml; m += 1) {
					match = classesToCheck[m].test(current.className);
					if (!match) {
						break;
					}
				}
				if (match) {
					returnElements.push(current);
				}
			}
			return returnElements;
		};
	}
	return getElementsByClassName(className, tag, elm);
};

// Legacy functions
function rst_get_xml_http_object() {
	return RSTicketsPro.getHttp();
}

function rst_flag_ticket(url, button, ticket_id) {
	RSTicketsPro.flagTicket(url, button, ticket_id);
}

function rst_feedback(url, value, ticket_id) {
	if (window.rsticketspro_rating.options.disabled)
		return false;

	rst_feedback_message();

	var xmlHttp = new XMLHttpRequest();

	var params = 'option=com_rsticketspro';
	params += '&controller=ticket';
	params += '&task=feedback';
	params += '&cid=' + ticket_id;
	params += '&feedback=' + value;
	xmlHttp.open("POST", url, true);

	//Send the proper header information along with the request
	xmlHttp.setRequestHeader("Content-type",
"application/x-www-form-urlencoded");

	xmlHttp.send(params);

	window.rsticketspro_rating.options.disabled = true;
}

var rst_buffer;

function rst_search(value) {
	if (value.length == 0) {
		rst_close_search();
		return;
	}

	if (rst_buffer)
		clearTimeout(rst_buffer);
	rst_buffer = setTimeout(function () {
		rst_search_ajax(value);
	}, 300);
}

function rst_search_ajax(value) {
	var xmlHttp = new XMLHttpRequest();

	var url =
'index.php?option=com_rsticketspro&task=kbsearch';
	url += '&filter=' + value;
	url += '&sid=' + Math.random();
	xmlHttp.onreadystatechange = function () {
		if (xmlHttp.readyState == 4) {
			document.getElementById('rst_livesearch').innerHTML =
xmlHttp.responseText;
			document.getElementById('rst_livesearch').style.border =
'1px solid #A5ACB2';
			document.getElementById('rst_livesearch').style.display =
'';
		}
	}
	xmlHttp.open("GET", url, true);
	xmlHttp.send(null);
}

function rst_close_search() {
	document.getElementById('rst_search_value').value =
'';
	document.getElementById('rst_livesearch').style.display =
'none';
	document.getElementById('rst_livesearch').innerHTML =
'';
	document.getElementById('rst_livesearch').style.border =
'0px';

	return false;
}

function rst_disable_staff() {

}

RSTicketsPro.removeData = function(button) {
    jQuery(button).fadeOut({
        complete: function() {
           
jQuery('#rsticketspro_remove_data_and_close_account').fadeIn();
        }
    });
};

RSTicketsPro.requestRemoveData = function(button) {
    jQuery(button).prop('disabled',
true).addClass('disabled');
    var container =
jQuery('#rsticketspro_remove_data_and_close_account');

    var url = Joomla.getOptions('system.paths').root +
'/index.php';
    var token = Joomla.getOptions('csrf.token');
    var data = {
        'option': 'com_rsticketspro',
        'task': 'removedata.request'
    };
    data[token] = 1;
    jQuery.post(url, data, function(response){
        container.fadeOut({
            complete: function() {
               
container.find('.alert-warning').removeClass('alert-warning').addClass('alert-info');
                container.find('.alert').text(response);
                container.fadeIn();
            }
        })
    });
};

RSTicketsPro.initRaty = function(params) {
	jQuery(document).ready(function($) {
		params.click = function(score, evt) {
			var url = Joomla.getOptions('system.paths').base;
			var ticketId = document.getElementsByName('id')[0].value;

			$(this).raty('readOnly', true);
			$('#com-rsticketspro-rated-message').hide().html(Joomla.JText._('RST_TICKET_FEEDBACK_SENT')).fadeIn();
			RSTicketsPro.sendRating(url +
'/index.php?option=com_rsticketspro', score, ticketId);
		};

		$('#star').raty(params);
	});
};js/tickets.js000064400000001004151163531650007165
0ustar00window.addEventListener('DOMContentLoaded', function() {
    var toggleBulk = function() {
        document.getElementById('bulk_actions').style.display =
document.getElementsByName('boxchecked')[0].value ===
'0' ? 'none' : 'block';
    }

   
document.getElementsByName('checkall-toggle')[0].addEventListener('click',
toggleBulk);

    var elements = document.getElementsByName('cid[]');
    for (var i = 0; i < elements.length; i++) {
        elements[i].addEventListener('click', toggleBulk);
    }
});js/typeahead.js000064400000021067151163531650007476 0ustar00/*
=============================================================
 * bootstrap-typeahead.js v2.3.2
 * http://getbootstrap.com/2.3.2/javascript.html#typeahead
 * =============================================================
 * Copyright 2013 Twitter, Inc.
 *
 * Licensed under the Apache License, Version 2.0 (the
"License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS"
BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============================================================ */


!function($){

  "use strict"; // jshint ;_;


 /* TYPEAHEAD PUBLIC CLASS DEFINITION
  * ================================= */

  var Typeahead = function (element, options) {
    this.$element = $(element)
    this.options = $.extend({}, $.fn.typeahead.defaults, options)
    this.matcher = this.options.matcher || this.matcher
    this.sorter = this.options.sorter || this.sorter
    this.highlighter = this.options.highlighter || this.highlighter
    this.updater = this.options.updater || this.updater
    this.source = this.options.source
    this.$menu = $(this.options.menu)
    this.shown = false
    this.listen()
  }

  Typeahead.prototype = {

    constructor: Typeahead

  , select: function () {
      var val =
this.$menu.find('.typeahead-active').attr('data-value')
      this.$element
        .val(this.updater(val))
        .change()
      return this.hide()
    }

  , updater: function (item) {
      return item
    }

  , show: function () {
      var pos = $.extend({}, this.$element.position(), {
        height: this.$element[0].offsetHeight
      })

      this.$menu
        .insertAfter(this.$element)
        .css({
          top: pos.top + pos.height
        , left: pos.left
        })
        .show()

      this.shown = true
      return this
    }

  , hide: function () {
      this.$menu.hide()
      this.shown = false
      return this
    }

  , lookup: function (event) {
      var items

      this.query = this.$element.val()

      if (!this.query || this.query.length < this.options.minLength) {
        return this.shown ? this.hide() : this
      }

      items = $.isFunction(this.source) ? this.source(this.query,
$.proxy(this.process, this)) : this.source

      return items ? this.process(items) : this
    }

  , process: function (items) {
      var that = this

      items = $.grep(items, function (item) {
        return that.matcher(item)
      })

      items = this.sorter(items)

      if (!items.length) {
        return this.shown ? this.hide() : this
      }

      return this.render(items.slice(0, this.options.items)).show()
    }

  , matcher: function (item) {
      return ~item.toLowerCase().indexOf(this.query.toLowerCase())
    }

  , sorter: function (items) {
      var beginswith = []
        , caseSensitive = []
        , caseInsensitive = []
        , item

      while (item = items.shift()) {
        if (!item.toLowerCase().indexOf(this.query.toLowerCase()))
beginswith.push(item)
        else if (~item.indexOf(this.query)) caseSensitive.push(item)
        else caseInsensitive.push(item)
      }

      return beginswith.concat(caseSensitive, caseInsensitive)
    }

  , highlighter: function (item) {
      var query = this.query.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,
'\\$&')
      return item.replace(new RegExp('(' + query + ')',
'ig'), function ($1, match) {
        return '<strong>' + match +
'</strong>'
      })
    }

  , render: function (items) {
      var that = this

      items = $(items).map(function (i, item) {
        i = $(that.options.item).attr('data-value', item)
        i.find('a').html(that.highlighter(item))
        return i[0]
      })

      items.first().addClass('typeahead-active')
      this.$menu.html(items)
      return this
    }

  , next: function (event) {
      var active =
this.$menu.find('.typeahead-active').removeClass('typeahead-active')
        , next = active.next()

      if (!next.length) {
        next = $(this.$menu.find('li')[0])
      }

      next.addClass('typeahead-active')
    }

  , prev: function (event) {
      var active =
this.$menu.find('.typeahead-active').removeClass('typeahead-active')
        , prev = active.prev()

      if (!prev.length) {
        prev = this.$menu.find('li').last()
      }

      prev.addClass('typeahead-active')
    }

  , listen: function () {
      this.$element
        .on('focus',    $.proxy(this.focus, this))
        .on('blur',     $.proxy(this.blur, this))
        .on('keypress', $.proxy(this.keypress, this))
        .on('keyup',    $.proxy(this.keyup, this))

      if (this.eventSupported('keydown')) {
        this.$element.on('keydown', $.proxy(this.keydown, this))
      }

      this.$menu
        .on('click', $.proxy(this.click, this))
        .on('mouseenter', 'li',
$.proxy(this.mouseenter, this))
        .on('mouseleave', 'li',
$.proxy(this.mouseleave, this))
    }

  , eventSupported: function(eventName) {
      var isSupported = eventName in this.$element
      if (!isSupported) {
        this.$element.setAttribute(eventName, 'return;')
        isSupported = typeof this.$element[eventName] ===
'function'
      }
      return isSupported
    }

  , move: function (e) {
      if (!this.shown) return

      switch(e.keyCode) {
        case 9: // tab
        case 13: // enter
        case 27: // escape
          e.preventDefault()
          break

        case 38: // up arrow
          e.preventDefault()
          this.prev()
          break

        case 40: // down arrow
          e.preventDefault()
          this.next()
          break
      }

      e.stopPropagation()
    }

  , keydown: function (e) {
      this.suppressKeyPressRepeat = ~$.inArray(e.keyCode, [40,38,9,13,27])
      this.move(e)
    }

  , keypress: function (e) {
      if (this.suppressKeyPressRepeat) return
      this.move(e)
    }

  , keyup: function (e) {
      switch(e.keyCode) {
        case 40: // down arrow
        case 38: // up arrow
        case 16: // shift
        case 17: // ctrl
        case 18: // alt
          break

        case 9: // tab
        case 13: // enter
          if (!this.shown) return
          this.select()
          break

        case 27: // escape
          if (!this.shown) return
          this.hide()
          break

        default:
          this.lookup()
      }

      e.stopPropagation()
      e.preventDefault()
  }

  , focus: function (e) {
      this.focused = true
    }

  , blur: function (e) {
      this.focused = false
      if (!this.mousedover && this.shown) this.hide()
    }

  , click: function (e) {
      e.stopPropagation()
      e.preventDefault()
      this.select()
      this.$element.focus()
    }

  , mouseenter: function (e) {
      this.mousedover = true
     
this.$menu.find('.typeahead-active').removeClass('typeahead-active')
      $(e.currentTarget).addClass('typeahead-active')
    }

  , mouseleave: function (e) {
      this.mousedover = false
      if (!this.focused && this.shown) this.hide()
    }

  }


  /* TYPEAHEAD PLUGIN DEFINITION
   * =========================== */

  var old = $.fn.typeahead

  $.fn.typeahead = function (option) {
    return this.each(function () {
      var $this = $(this)
        , data = $this.data('typeahead')
        , options = typeof option == 'object' && option
      if (!data) $this.data('typeahead', (data = new
Typeahead(this, options)))
      if (typeof option == 'string') data[option]()
    })
  }

  $.fn.typeahead.defaults = {
    source: []
  , items: 8
  , menu: '<ul class="typeahead
dropdown-menu"></ul>'
  , item: '<li><a
href="#"></a></li>'
  , minLength: 1
  }

  $.fn.typeahead.Constructor = Typeahead


 /* TYPEAHEAD NO CONFLICT
  * =================== */

  $.fn.typeahead.noConflict = function () {
    $.fn.typeahead = old
    return this
  }


 /* TYPEAHEAD DATA-API
  * ================== */

  $(document).on('focus.typeahead.data-api',
'[data-provide="typeahead"]', function (e) {
    var $this = $(this)
    if ($this.data('typeahead')) return
    $this.typeahead($this.data())
  })

}(window.jQuery);
js/users.js000064400000002220151163531650006661 0ustar00function
RSTicketsProSelectUser(self) {
    if (window.parent) {
        var func = 'jSelectUser_' +
document.getElementsByName('field')[0].value;
        var alt_email;
        if (typeof window.parent[func] == 'function') {
            var id = self.getAttribute('data-user-value');
            var name = self.getAttribute('data-user-name');
            alt_email =  self.getAttribute('data-alt-email');
            window.parent[func](id, name);
        }
        if (typeof window.parent.jSelectUser == 'function') {
            alt_email = self.getAttribute('data-alt-email');
            window.parent.jSelectUser(self);
        }

        if (typeof alt_email !== 'undefined') {
            var alt_email_field =
window.parent.document.getElementById('jform_alternative_email');
            if (alt_email_field != null) {
                alt_email_field.value = alt_email;
            }
            var alt_email_field_ticket =
window.parent.document.getElementById('ticket_alternative_email');
            if (alt_email_field_ticket != null) {
                alt_email_field_ticket.value = alt_email;
            }
        }
    }
}