œ_#ÁÕ§TE NAŒ“KeÉ:”(åŽÖJÞùY’‚ñùž7; «]Û ý`8g“¯B© jdÖÖ¸ðzœ¸¦4Ç3Kó^(ÍÖ¼ Õ€pvìwšõB4df$Èü^0˜…åÌC$#2FŽÑ§±¦ÛZ/÷š&m£ñzÒÖ ’.Î]!Î;ƒ(Õ–¢d/—#Kª+tZyuÏB>NÛÖ†(¸ŒSà'³„Y˜´-_•¦¼´˜OlNK§¶ÒàŠˆTHµƒeTPå·fïM’…þuÏÍüp6دªE£åü‡ZØ'CKF#â«;‹eyO Qp„†l"ö1èíÙP ÏŒúl! BÝ2ñª•_VÁÉ÷3eu`–F¸ìI--ö<¿žë¯4õ캿¢)34Å{wMÉ2ÆÖFŸ¥`e9Ú¶¸P‡.”FÔï rY ‚²ÈTB,{ÛœéJ}«àQ4¹0Rû4D‚B§S‘ dO•v¾„™Sן¯3FeŸ™«+ÓâwH dÕÛÌì·P4ë&¥#rÜÉ Ù¦ê†ý·xòqk¯2,¹§™E\ék‚×Sá”ÚºÙ⺷ö£6…à ʾ qSá³Å|;àû}4Ÿ($â¹VY~óÍ!èÜÒŒËX½Ù1j‚VíÍŸš³+œ]«½g{_{/vµ½\¢¶vÉWKÿ:ñám½ ¥ S²x‘t ŽšÝÙÿÀÇ^ný PK IW™k‚½÷ á _rels/.relsUT dìd dìd dìd’ÏNÃ0‡ï{ŠÈ÷ÕÝ@¡¥» ¤Ý*`%îÑ&QâÁöö‚J£ì°cœŸ¿|¶²ÙÆA½rL½wVE Šñ¶w†çúay * 9Kƒw¬áÈ ¶ÕbóÄIîI]’Ê—4t"á1™ŽGJ…ìòMããH’±Å@æ…ZÆuYÞ`üÍ€jÂT;«!îì T}|Û7MoøÞ›ýÈNN<|v–í2ÄÜ¥ÏèšbË¢Ázó˜Ë )„"£OÏ7ú{ZYÈ’yÞç#1'tuÉM?6o>Z´_å9›ëKÚ˜}?þ³žÏÌ·N>fµx PK IWª½e ¢ U € word/document.xmlUT dìdPK IWþË3” z €J¢ word/settings.xmlUT dìdPK IWC‡{š' ƒ €¤ docProps/custom.xmlUT dìdPK IW츱=Œ €‡¥ [Content_Types].xmlUT dìdPK IWV%ë±" €U§ docProps/app.xmlUT dìdPK IW€RŒ 3 €¶¨ docProps/core.xmlUT dìdPK IWkòDn ô €ª word/_rels/document.xml.relsUT dìdPK IW;$î €Î« word/fontTable.xmlUT dìdPK IW+åäz] ÷. €ý¬ word/numbering.xmlUT dìdPK IW¤2×r- ¿ €›° word/styles.xmlUT dìdPK IWMFÒ ø €´ word/header1.xmlUT dìdPK IWF— T e €· word/media/image1.jpegUT dìdPK IW!Yéáå €°Ë word/media/image2.pngUT dìdPK IW°Àºë ú €ÙÌ word/media/image3.pngUT dìdPK IW$“†ª L €Î word/footer1.xmlUT dìdPK IWzaGôM €ñÑ word/footer2.xmlUT dìdPK IW–µâº P €}Õ word/theme/theme1.xmlUT dìdPK IW™k‚½÷ á €{Û _rels/.relsUT PK ! bîh^ [Content_Types].xml ¢( ¬”ËNÃ0E÷HüCä-Jܲ@5í‚Ç*Q>Àēƪc[žiiÿž‰ûB¡j7±ÏÜ{2ñÍh²nm¶‚ˆÆ»R‹ÈÀU^7/ÅÇì%¿’rZYï @1__f› ˜q·ÃR4DáAJ¬h>€ãÚÇV߯¹ªZ¨9ÈÛÁàNVÞ8Ê©ÓãÑÔji){^óã-I‹"{Üv^¥P!XS)bR¹rú—K¾s(¸3Õ`cÞ0†½ÝÎß»¾7M4²©ŠôªZÆk+¿|\|z¿(Ž‹ôPúº6h_-[ž@!‚ÒØ Pk‹´2nÏ}Ä?£LËð Ýû%áÄßdºždN"m,à¥ÇžDO97*‚~§Èɸ8ÀOíc|n¦Ñ äEøÿöéºóÀBÉÀ!$}‡íàÈé;{ìÐå[ƒîñ–é2þ ÿÿ PK ! µU0#ô L _rels/.rels ¢( ¬’MOÃ0†ïHü‡È÷ÕÝBKwAH»!T~€Iܵ£$Ý¿'TƒG½~üÊÛÝ<êÈ!öâ4¬‹;#¶w†—úqu *&r–Fq¬áÄvÕõÕö™GJy(v½*«¸¨¡KÉß#FÓñD±Ï.W ¥†=™ZÆMYÞbø®ÕBS톰·7 ê“Ï›×–¦é ?ˆ9LìÒ™ÈsbgÙ®|Èl!õùUSh9i°bžr:"y_dlÀóD›¿ý|-NœÈR"4ø2ÏGÇ% õZ´4ñËyÄ7 ëÈðÉ‚‹¨Þ ÿÿ PK ! Q48wÛ — xl/workbook.xml¤UÙnâ0}iþ!cñ‡ *–¢AšVU×$dC¬&vÆv UÕŸë@XÊK§/¹p|Žï¹N÷b“¥Ö •Š ÞC¸î"‹òHÄŒ¯zèá~b·‘¥4á1I§=ôJºèÿüÑ] ù¼âÙ ®z(Ñ:GE ͈ª‹œrˆ,…̈†©\9*—”Ä*¡Tg©ã¹nàd„q´Eåg0ÄrÉ":Q‘Q®· ’¦D}•°\UhYô¸ŒÈç"·#‘å ±`)Ó¯%(²²(œ®¸d‘‚ì nZ w v¡ñª• t¶TÆ")”Xê:@;[Ògú±ë`|²›ó=ø’ïHúÂL÷¬dðEVÁ+8€a÷Ûh¬Uz%„Íû"ZsÏÍCýî’¥ôqk]‹äù5ÉL¦Rd¥Dé˘i÷P ¦bM/|dÉ",…¨çãFNoçiûéë>aêiçsó#ðÄ ÕTr¢éHp ÜIú®ÝJìQ"ÀÜÖ-ý[0I¡¦ÀZ Z…d¡nˆN¬B¦=4 g %PDF-1.4 %âãÏÓ 3 0 obj << /Linearized 1 /L 422775 ÿØÿà JFIF ÿÛ C ÿÛ C ÿÀ X" ÿÄ ÿÄ H !1A"Qaq2‘¡#±ÁBRÑ3Cbrá$S‚¢²ð4ñ%6DTc’ÂsÿÄ ÿÄ = !1AQ"aq‘Á2R¡±BÑð#3br’²4á$‚¢ÂñÿÚ ? áHBßÝ`„! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! !@B„ „! ! stream
<?php
/**
* CodeIgniter
*
* An open source application development framework for PHP
*
* This content is released under the MIT License (MIT)
*
* Copyright (c) 2014 - 2017, British Columbia Institute of Technology
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*
* @package CodeIgniter
* @author EllisLab Dev Team
* @copyright Copyright (c) 2008 - 2014, EllisLab, Inc. (https://ellislab.com/)
* @copyright Copyright (c) 2014 - 2017, British Columbia Institute of Technology (http://bcit.ca/)
* @license http://opensource.org/licenses/MIT MIT License
* @link https://codeigniter.com
* @since Version 1.0.0
* @filesource
*/
defined('BASEPATH') OR exit('No direct script access allowed');
/**
* User Agent Class
*
* Identifies the platform, browser, robot, or mobile device of the browsing agent
*
* @package CodeIgniter
* @subpackage Libraries
* @category User Agent
* @author EllisLab Dev Team
* @link https://codeigniter.com/user_guide/libraries/user_agent.html
*/
class CI_User_agent {
/**
* Current user-agent
*
* @var string
*/
public $agent = NULL;
/**
* Flag for if the user-agent belongs to a browser
*
* @var bool
*/
public $is_browser = FALSE;
/**
* Flag for if the user-agent is a robot
*
* @var bool
*/
public $is_robot = FALSE;
/**
* Flag for if the user-agent is a mobile browser
*
* @var bool
*/
public $is_mobile = FALSE;
/**
* Languages accepted by the current user agent
*
* @var array
*/
public $languages = array();
/**
* Character sets accepted by the current user agent
*
* @var array
*/
public $charsets = array();
/**
* List of platforms to compare against current user agent
*
* @var array
*/
public $platforms = array();
/**
* List of browsers to compare against current user agent
*
* @var array
*/
public $browsers = array();
/**
* List of mobile browsers to compare against current user agent
*
* @var array
*/
public $mobiles = array();
/**
* List of robots to compare against current user agent
*
* @var array
*/
public $robots = array();
/**
* Current user-agent platform
*
* @var string
*/
public $platform = '';
/**
* Current user-agent browser
*
* @var string
*/
public $browser = '';
/**
* Current user-agent version
*
* @var string
*/
public $version = '';
/**
* Current user-agent mobile name
*
* @var string
*/
public $mobile = '';
/**
* Current user-agent robot name
*
* @var string
*/
public $robot = '';
/**
* HTTP Referer
*
* @var mixed
*/
public $referer;
// --------------------------------------------------------------------
/**
* Constructor
*
* Sets the User Agent and runs the compilation routine
*
* @return void
*/
public function __construct()
{
$this->_load_agent_file();
if (isset($_SERVER['HTTP_USER_AGENT']))
{
$this->agent = trim($_SERVER['HTTP_USER_AGENT']);
$this->_compile_data();
}
log_message('info', 'User Agent Class Initialized');
}
// --------------------------------------------------------------------
/**
* Compile the User Agent Data
*
* @return bool
*/
protected function _load_agent_file()
{
if (($found = file_exists(APPPATH.'config/user_agents.php')))
{
include(APPPATH.'config/user_agents.php');
}
if (file_exists(APPPATH.'config/'.ENVIRONMENT.'/user_agents.php'))
{
include(APPPATH.'config/'.ENVIRONMENT.'/user_agents.php');
$found = TRUE;
}
if ($found !== TRUE)
{
return FALSE;
}
$return = FALSE;
if (isset($platforms))
{
$this->platforms = $platforms;
unset($platforms);
$return = TRUE;
}
if (isset($browsers))
{
$this->browsers = $browsers;
unset($browsers);
$return = TRUE;
}
if (isset($mobiles))
{
$this->mobiles = $mobiles;
unset($mobiles);
$return = TRUE;
}
if (isset($robots))
{
$this->robots = $robots;
unset($robots);
$return = TRUE;
}
return $return;
}
// --------------------------------------------------------------------
/**
* Compile the User Agent Data
*
* @return bool
*/
protected function _compile_data()
{
$this->_set_platform();
foreach (array('_set_robot', '_set_browser', '_set_mobile') as $function)
{
if ($this->$function() === TRUE)
{
break;
}
}
}
// --------------------------------------------------------------------
/**
* Set the Platform
*
* @return bool
*/
protected function _set_platform()
{
if (is_array($this->platforms) && count($this->platforms) > 0)
{
foreach ($this->platforms as $key => $val)
{
if (preg_match('|'.preg_quote($key).'|i', $this->agent))
{
$this->platform = $val;
return TRUE;
}
}
}
$this->platform = 'Unknown Platform';
return FALSE;
}
// --------------------------------------------------------------------
/**
* Set the Browser
*
* @return bool
*/
protected function _set_browser()
{
if (is_array($this->browsers) && count($this->browsers) > 0)
{
foreach ($this->browsers as $key => $val)
{
if (preg_match('|'.$key.'.*?([0-9\.]+)|i', $this->agent, $match))
{
$this->is_browser = TRUE;
$this->version = $match[1];
$this->browser = $val;
$this->_set_mobile();
return TRUE;
}
}
}
return FALSE;
}
// --------------------------------------------------------------------
/**
* Set the Robot
*
* @return bool
*/
protected function _set_robot()
{
if (is_array($this->robots) && count($this->robots) > 0)
{
foreach ($this->robots as $key => $val)
{
if (preg_match('|'.preg_quote($key).'|i', $this->agent))
{
$this->is_robot = TRUE;
$this->robot = $val;
$this->_set_mobile();
return TRUE;
}
}
}
return FALSE;
}
// --------------------------------------------------------------------
/**
* Set the Mobile Device
*
* @return bool
*/
protected function _set_mobile()
{
if (is_array($this->mobiles) && count($this->mobiles) > 0)
{
foreach ($this->mobiles as $key => $val)
{
if (FALSE !== (stripos($this->agent, $key)))
{
$this->is_mobile = TRUE;
$this->mobile = $val;
return TRUE;
}
}
}
return FALSE;
}
// --------------------------------------------------------------------
/**
* Set the accepted languages
*
* @return void
*/
protected function _set_languages()
{
if ((count($this->languages) === 0) && ! empty($_SERVER['HTTP_ACCEPT_LANGUAGE']))
{
$this->languages = explode(',', preg_replace('/(;\s?q=[0-9\.]+)|\s/i', '', strtolower(trim($_SERVER['HTTP_ACCEPT_LANGUAGE']))));
}
if (count($this->languages) === 0)
{
$this->languages = array('Undefined');
}
}
// --------------------------------------------------------------------
/**
* Set the accepted character sets
*
* @return void
*/
protected function _set_charsets()
{
if ((count($this->charsets) === 0) && ! empty($_SERVER['HTTP_ACCEPT_CHARSET']))
{
$this->charsets = explode(',', preg_replace('/(;\s?q=.+)|\s/i', '', strtolower(trim($_SERVER['HTTP_ACCEPT_CHARSET']))));
}
if (count($this->charsets) === 0)
{
$this->charsets = array('Undefined');
}
}
// --------------------------------------------------------------------
/**
* Is Browser
*
* @param string $key
* @return bool
*/
public function is_browser($key = NULL)
{
if ( ! $this->is_browser)
{
return FALSE;
}
// No need to be specific, it's a browser
if ($key === NULL)
{
return TRUE;
}
// Check for a specific browser
return (isset($this->browsers[$key]) && $this->browser === $this->browsers[$key]);
}
// --------------------------------------------------------------------
/**
* Is Robot
*
* @param string $key
* @return bool
*/
public function is_robot($key = NULL)
{
if ( ! $this->is_robot)
{
return FALSE;
}
// No need to be specific, it's a robot
if ($key === NULL)
{
return TRUE;
}
// Check for a specific robot
return (isset($this->robots[$key]) && $this->robot === $this->robots[$key]);
}
// --------------------------------------------------------------------
/**
* Is Mobile
*
* @param string $key
* @return bool
*/
public function is_mobile($key = NULL)
{
if ( ! $this->is_mobile)
{
return FALSE;
}
// No need to be specific, it's a mobile
if ($key === NULL)
{
return TRUE;
}
// Check for a specific robot
return (isset($this->mobiles[$key]) && $this->mobile === $this->mobiles[$key]);
}
// --------------------------------------------------------------------
/**
* Is this a referral from another site?
*
* @return bool
*/
public function is_referral()
{
if ( ! isset($this->referer))
{
if (empty($_SERVER['HTTP_REFERER']))
{
$this->referer = FALSE;
}
else
{
$referer_host = @parse_url($_SERVER['HTTP_REFERER'], PHP_URL_HOST);
$own_host = parse_url(config_item('base_url'), PHP_URL_HOST);
$this->referer = ($referer_host && $referer_host !== $own_host);
}
}
return $this->referer;
}
// --------------------------------------------------------------------
/**
* Agent String
*
* @return string
*/
public function agent_string()
{
return $this->agent;
}
// --------------------------------------------------------------------
/**
* Get Platform
*
* @return string
*/
public function platform()
{
return $this->platform;
}
// --------------------------------------------------------------------
/**
* Get Browser Name
*
* @return string
*/
public function browser()
{
return $this->browser;
}
// --------------------------------------------------------------------
/**
* Get the Browser Version
*
* @return string
*/
public function version()
{
return $this->version;
}
// --------------------------------------------------------------------
/**
* Get The Robot Name
*
* @return string
*/
public function robot()
{
return $this->robot;
}
// --------------------------------------------------------------------
/**
* Get the Mobile Device
*
* @return string
*/
public function mobile()
{
return $this->mobile;
}
// --------------------------------------------------------------------
/**
* Get the referrer
*
* @return bool
*/
public function referrer()
{
return empty($_SERVER['HTTP_REFERER']) ? '' : trim($_SERVER['HTTP_REFERER']);
}
// --------------------------------------------------------------------
/**
* Get the accepted languages
*
* @return array
*/
public function languages()
{
if (count($this->languages) === 0)
{
$this->_set_languages();
}
return $this->languages;
}
// --------------------------------------------------------------------
/**
* Get the accepted Character Sets
*
* @return array
*/
public function charsets()
{
if (count($this->charsets) === 0)
{
$this->_set_charsets();
}
return $this->charsets;
}
// --------------------------------------------------------------------
/**
* Test for a particular language
*
* @param string $lang
* @return bool
*/
public function accept_lang($lang = 'en')
{
return in_array(strtolower($lang), $this->languages(), TRUE);
}
// --------------------------------------------------------------------
/**
* Test for a particular character set
*
* @param string $charset
* @return bool
*/
public function accept_charset($charset = 'utf-8')
{
return in_array(strtolower($charset), $this->charsets(), TRUE);
}
// --------------------------------------------------------------------
/**
* Parse a custom user-agent string
*
* @param string $string
* @return void
*/
public function parse($string)
{
// Reset values
$this->is_browser = FALSE;
$this->is_robot = FALSE;
$this->is_mobile = FALSE;
$this->browser = '';
$this->version = '';
$this->mobile = '';
$this->robot = '';
// Set the new user-agent string and parse it, unless empty
$this->agent = $string;
if ( ! empty($string))
{
$this->_compile_data();
}
}
}