make network, authkey menu; begining to work in bhyve, sources and bases
							
								
								
									
										858
									
								
								php/clonos.php
									
									
									
									
									
								
							
							
						
						| @@ -6,8 +6,18 @@ class ClonOS | |||||||
| 	public $workdir=''; | 	public $workdir=''; | ||||||
| 	public $realpath_php=''; | 	public $realpath_php=''; | ||||||
| 	public $realpath_public=''; | 	public $realpath_public=''; | ||||||
|  | 	public $realpath_page=''; | ||||||
|  | 	public $json_name=''; | ||||||
|  | 	public $language='en'; | ||||||
|  | 	public $language_file_loaded=false; | ||||||
|  | 	public $translate_arr=array(); | ||||||
|  | 	public $table_templates=array(); | ||||||
|  | 	 | ||||||
| 	private $_post=false; | 	private $_post=false; | ||||||
| 	private $_db=null; | 	private $_db=null; | ||||||
|  | 	private $_client_ip=''; | ||||||
|  | 	private $_dialogs=array(); | ||||||
|  | 	private $_cmd_array=array('jcreate','jstart','jstop','jrestart','jedit','jremove','jexport','jimport','jclone','madd','sstart','sstop','projremove','bcreate','bstart','bstop','brestart','bremove','vm_obtain','removesrc'); | ||||||
| 	 | 	 | ||||||
| /* | /* | ||||||
| 	public $projectId=0; | 	public $projectId=0; | ||||||
| @@ -31,9 +41,11 @@ class ClonOS | |||||||
| 			1 => array('pipe','w'), | 			1 => array('pipe','w'), | ||||||
| 			2 => array('pipe','r') | 			2 => array('pipe','r') | ||||||
| 		); | 		); | ||||||
| //echo self::CBSD_CMD.$cmd;exit; | 		 | ||||||
| 		$process = proc_open(self::CBSD_CMD.trim($cmd),$descriptorspec,$pipes,null,null); | 		$process = proc_open(self::CBSD_CMD.trim($cmd),$descriptorspec,$pipes,null,null); | ||||||
| 		 | 		 | ||||||
|  | 		$full_cmd=self::CBSD_CMD.trim($cmd); | ||||||
|  | 		 | ||||||
| 		$error=false; | 		$error=false; | ||||||
| 		$error_message=''; | 		$error_message=''; | ||||||
| 		$message=''; | 		$message=''; | ||||||
| @@ -52,37 +64,115 @@ class ClonOS | |||||||
| 			{ | 			{ | ||||||
| 				$error=true; | 				$error=true; | ||||||
| 				$error_message=$buf; | 				$error_message=$buf; | ||||||
| 				//$log_file='/tmp'; |  | ||||||
| 				//if(file_exists()) |  | ||||||
| 			}else{ | 			}else{ | ||||||
| 				$message=trim($buf); | 				$message=trim($buf); | ||||||
| 			} | 			} | ||||||
| 			//echo self::CBSD_CMD.$cmd; | 			 | ||||||
| 			return array('cmd'=>$cmd,'retval'=>$return_value, 'message'=>$message, 'error'=>$error,'error_message'=>$error_message); | 			return array('cmd'=>$cmd,'full_cmd'=>$full_cmd,'retval'=>$return_value, 'message'=>$message, 'error'=>$error,'error_message'=>$error_message); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	function __construct($_REALPATH)	# /usr/home/web/cp/clonos | 	function __construct($_REALPATH)	# /usr/home/web/cp/clonos | ||||||
| 	{ | 	{ | ||||||
|  | 		$this->_post=($_SERVER['REQUEST_METHOD']=='POST'); | ||||||
|  | 		$this->_vars=$_POST; | ||||||
|  | 		if(isset($_COOKIE['lang'])) $this->language=$_COOKIE['lang']; | ||||||
|  |  | ||||||
| 		$this->workdir=getenv('WORKDIR'); | 		$this->workdir=getenv('WORKDIR'); | ||||||
| 			# // /usr/jails | 			# // /usr/jails | ||||||
| 			 | 			 | ||||||
| 		$this->realpath_php=$_REALPATH.'/php/'; | 		$this->realpath_php=$_REALPATH.'/php/'; | ||||||
| 			# /usr/home/web/cp/clonos/php/ | 			# /usr/home/web/cp/clonos/php/ | ||||||
| 			 | 			 | ||||||
| 		$this->realpath_php=$_REALPATH.'/public/'; | 		$this->realpath_public=$_REALPATH.'/public/'; | ||||||
| 			# /usr/home/web/cp/clonos/public/ | 			# /usr/home/web/cp/clonos/public/ | ||||||
| 		 | 		 | ||||||
|  | 		$translate_filename=$this->realpath_public.'/lang/'.$this->language.'.php'; | ||||||
|  | 		$translate_filename_alt=$this->realpath_public.'/lang/en.php'; | ||||||
|  | 		if(file_exists($translate_filename)) $t_filename=$translate_filename; else $t_filename=$translate_filename; | ||||||
|  | 		include($t_filename); | ||||||
|  | 		$this->translate_arr=$lang; | ||||||
|  | 		unset($lang); | ||||||
|  | 		unset($t_filename); | ||||||
|  | 		 | ||||||
|  | 		$this->_client_ip=$_SERVER['REMOTE_ADDR']; | ||||||
|  | 		 | ||||||
|  | 		if(isset($this->_vars['path'])) | ||||||
|  | 		{ | ||||||
|  | 			$this->realpath_page=$this->realpath_public.'pages/'.trim($this->_vars['path'],'/').'/'; | ||||||
|  | 			$this->json_name=$this->realpath_page.'a.json.php'; | ||||||
|  | 		} | ||||||
|  | //		$this->json_name=$this->realpath_php.'pages' | ||||||
|  | //		$clonos->json_name=$file_path.'a.json.php'; | ||||||
|  | 		 | ||||||
| 		include('config.php'); | 		include('config.php'); | ||||||
| 		include('db.php'); | 		include('db.php'); | ||||||
| 		include('menu.php'); | 		include('menu.php'); | ||||||
| 		 | 		 | ||||||
|  | 		$this->_db_tasks=new Db('base','cbsdtaskd'); | ||||||
|  | 		$this->_db_local=new Db('base','local'); | ||||||
|  | 		 | ||||||
| 		$this->config=new Config(); | 		$this->config=new Config(); | ||||||
| 		$this->menu=new Menu($this->config->menu); | 		$this->menu=new Menu($this->config->menu,$this); | ||||||
| 		 | 		 | ||||||
|  | 		if(isset($this->_vars['mode'])) $this->mode=$this->_vars['mode']; | ||||||
|  | 		if(isset($this->_vars['form_data'])) $this->form=$this->_vars['form_data']; | ||||||
| 		 | 		 | ||||||
|  | 		if($this->_post && isset($this->mode)) | ||||||
|  | 		{ | ||||||
|  | 			unset($_POST); | ||||||
|  | 			switch($this->mode) | ||||||
|  | 			{ | ||||||
|  | 				case 'getTasksStatus': | ||||||
|  | 					echo json_encode($this->_getTasksStatus($this->form['jsonObj'])); | ||||||
|  | 					return;break; | ||||||
|  | 				case 'getJsonPage': | ||||||
|  | 					if(file_exists($this->json_name)) include($this->json_name); else echo '{}'; | ||||||
|  | 					return;break; | ||||||
|  | 				case 'freejname': | ||||||
|  | 					echo json_encode($this->getFreeJname()); | ||||||
|  | 					break; | ||||||
|  |  | ||||||
|  | 				case 'jailAdd': | ||||||
|  | 					echo json_encode($this->jailAdd()); | ||||||
|  | 					return;break; | ||||||
|  | 				case 'bhyveAdd': | ||||||
|  | 					echo json_encode($this->bhyveAdd()); | ||||||
|  | 					return;break; | ||||||
|  | 				case 'bhyveObtain': | ||||||
|  | 					echo json_encode($this->bhyveObtain()); | ||||||
|  | 					return;break; | ||||||
| 				 | 				 | ||||||
|  | 				case 'authkeyAdd': | ||||||
|  | 					echo json_encode($this->authkeyAdd()); | ||||||
|  | 					return;break; | ||||||
|  | 				case 'authkeyRemove': | ||||||
|  | 					echo json_encode($this->authkeyRemove()); | ||||||
|  | 					return;break; | ||||||
|  | 					 | ||||||
|  | 				case 'vpnetAdd': | ||||||
|  | 					echo json_encode($this->vpnetAdd()); | ||||||
|  | 					return;break; | ||||||
|  | 				case 'vpnetRemove': | ||||||
|  | 					echo json_encode($this->vpnetRemove()); | ||||||
|  | 					return;break; | ||||||
|  | 					 | ||||||
|  | 				case 'mediaAdd': | ||||||
|  | 					//echo json_encode($this->mediaAdd()); | ||||||
|  | 					return;break; | ||||||
|  | 				case 'mediaRemove': | ||||||
|  | 					echo json_encode($this->mediaRemove()); | ||||||
|  | 					return;break; | ||||||
|  | 					 | ||||||
|  | 				case 'srcRemove': | ||||||
|  | 					echo json_encode($this->srcRemove()); | ||||||
|  | 					return;break; | ||||||
|  |  | ||||||
|  | 				case 'logLoad': | ||||||
|  | 					echo json_encode($this->logLoad()); | ||||||
|  | 					return;break; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
| 		 | 		 | ||||||
| 		 | 		 | ||||||
| 		 | 		 | ||||||
| @@ -253,6 +343,33 @@ class ClonOS | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | 	function getLang() | ||||||
|  | 	{ | ||||||
|  | 		return $this->language; | ||||||
|  | 	} | ||||||
|  | 	function translate($phrase) | ||||||
|  | 	{ | ||||||
|  | 		if(isset($this->translate_arr[$phrase])) | ||||||
|  | 			return $this->translate_arr[$phrase]; | ||||||
|  | 		else | ||||||
|  | 			return $phrase; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function getTableChunk($table_name='',$tag) | ||||||
|  | 	{ | ||||||
|  | 		if(empty($table_name)) return false; | ||||||
|  | 		if(isset($this->table_templates[$table_name][$tag])) return $this->table_templates[$table_name][$tag]; | ||||||
|  | 		 | ||||||
|  | 		$file_name=$this->realpath_page.$table_name.'.table'; | ||||||
|  | 		if(!file_exists($file_name)) return false; | ||||||
|  | 		$file=file_get_contents($file_name); | ||||||
|  | 		$pat='#[\s]*?<'.$tag.'[^>]*>(.*)<\/'.$tag.'>#iUs'; | ||||||
|  |  		if(preg_match($pat,$file,$res)) | ||||||
|  | 		{ | ||||||
|  | 			$this->table_templates[$table_name][$tag]=$res; | ||||||
|  | 			return $res; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	function check_locktime($nodeip) | 	function check_locktime($nodeip) | ||||||
| 	{ | 	{ | ||||||
| @@ -266,13 +383,32 @@ class ClonOS | |||||||
| 		 | 		 | ||||||
| 		$difftime=(( $cur_time - $st_time ) / 60 ); | 		$difftime=(( $cur_time - $st_time ) / 60 ); | ||||||
| 		if ( $difftime > 1 ) { | 		if ( $difftime > 1 ) { | ||||||
| 			return round($difftime);; | 			return round($difftime); | ||||||
| 		} else { | 		} else { | ||||||
| 			return 0; //lock exist but too fresh | 			return 0; //lock exist but too fresh | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	function get_node_info($nodename,$value) | 	function check_vmonline($vm) | ||||||
|  | 	{ | ||||||
|  | 		$vmmdir="/dev/vmm"; | ||||||
|  | 		 | ||||||
|  | 		if(!file_exists($vmmdir)) return 0; | ||||||
|  | 		 | ||||||
|  | 		if($handle=opendir($vmmdir)) | ||||||
|  | 		{ | ||||||
|  | 			while(false!==($entry=readdir($handle))) | ||||||
|  | 			{ | ||||||
|  | 				if($entry[0]==".") continue; | ||||||
|  | 				if($vm==$entry) return 1; | ||||||
|  | 			} | ||||||
|  | 			closedir($handle); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return 0; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | /* 	function get_node_info($nodename,$value) | ||||||
| 	{ | 	{ | ||||||
| 		$db = new SQLite3($this->realpath."/var/db/nodes.sqlite"); $db->busyTimeout(5000); | 		$db = new SQLite3($this->realpath."/var/db/nodes.sqlite"); $db->busyTimeout(5000); | ||||||
| 		if (!$db) return; | 		if (!$db) return; | ||||||
| @@ -285,6 +421,54 @@ class ClonOS | |||||||
| 			if(!isset($res["$value"])) return; | 			if(!isset($res["$value"])) return; | ||||||
| 			return $res["$value"]; | 			return $res["$value"]; | ||||||
| 		} | 		} | ||||||
|  | 	} */ | ||||||
|  | 	 | ||||||
|  | 	function getRunningTasks($ids=array()) | ||||||
|  | 	{ | ||||||
|  | 		$check_arr=array( | ||||||
|  | 			'jcreate'=>'Creating', | ||||||
|  | 			'jstart'=>'Starting', | ||||||
|  | 			'jstop'=>'Stopping', | ||||||
|  | 			'jrestart'=>'Restarting', | ||||||
|  | 			'jremove'=>'Removing', | ||||||
|  | 			'jexport'=>'Exporting', | ||||||
|  | 			'jclone'=>'Cloning', | ||||||
|  | 			'bcreate'=>'Creating', | ||||||
|  | 			'bstart'=>'Starting', | ||||||
|  | 			'bstop'=>'Stopping', | ||||||
|  | 			'brestart'=>'Restarting', | ||||||
|  | 			'bremove'=>'Removing', | ||||||
|  | 			'vm_obtain'=>'Creating', | ||||||
|  | 			'removesrc'=>'Removing', | ||||||
|  | 		); | ||||||
|  | 		 | ||||||
|  | 		$res=array(); | ||||||
|  | 		if(!empty($ids)) | ||||||
|  | 		{ | ||||||
|  | 			$tid=join("','",$ids); | ||||||
|  | 			$query="select id,cmd,status,jname from taskd where status<2 and jname in ('{$tid}')"; | ||||||
|  | 			//echo $query; | ||||||
|  | 			$tasks=$this->_db_tasks->select($query); | ||||||
|  | 			if(!empty($tasks)) foreach($tasks as $task) | ||||||
|  | 			{ | ||||||
|  | 				$rid=preg_replace('/^#/','',$task['jname']); | ||||||
|  | 				foreach($check_arr as $key=>$val) | ||||||
|  | 				{ | ||||||
|  | 					if(strpos($task['cmd'],$key)!==false) | ||||||
|  | 					{ | ||||||
|  | 						$cmd=$key; | ||||||
|  | 						$txt_status=$val; | ||||||
|  | 						break; | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 				$res[$rid]['status']=$task['status']; | ||||||
|  | 				$res[$rid]['task_cmd']=$cmd; | ||||||
|  | 				$res[$rid]['txt_status']=$txt_status; | ||||||
|  | 				$res[$rid]['task_id']=$task['id']; | ||||||
|  | 			} | ||||||
|  | 			return $res; | ||||||
|  | 		} | ||||||
|  | 		return null; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| /* | /* | ||||||
| @@ -315,22 +499,36 @@ class ClonOS | |||||||
| 		if(isset($obj['proj_ops'])) return $this->GetProjectTasksStatus($obj); | 		if(isset($obj['proj_ops'])) return $this->GetProjectTasksStatus($obj); | ||||||
| 		if(isset($obj['mod_ops'])) return $this->GetModulesTasksStatus($obj); | 		if(isset($obj['mod_ops'])) return $this->GetModulesTasksStatus($obj); | ||||||
| 		 | 		 | ||||||
| 		$ops_array=array('jcreate','jstart','jstop','jedit','jremove','jexport','jimport','jclone','madd','sstart','sstop','projremove');	//,'mremove' | 		$ops_array=$this->_cmd_array; | ||||||
|  | 		/*	array('jcreate','jstart','jstop','jrestart','jedit','jremove','jexport','jimport','jclone','madd','sstart','sstop','projremove', | ||||||
|  | 		'bcreate','bstart','bstop','brestart','bremove', | ||||||
|  | 		'vm_obtain');	//,'mremove' | ||||||
|  | 		*/ | ||||||
| 		$stat_array=array( | 		$stat_array=array( | ||||||
| 			'jcreate'=>array(get_translate('Creating'),get_translate('Not running')), | 			'jcreate'=>array($this->translate('Creating'),$this->translate('Created')), | ||||||
| 			'jstart'=>array(get_translate('Starting'),get_translate('Launched')), | 			'jstart'=>array($this->translate('Starting'),$this->translate('Launched')), | ||||||
| 			'jstop'=>array(get_translate('Stopping'),get_translate('Stopped')), | 			'jstop'=>array($this->translate('Stopping'),$this->translate('Stopped')), | ||||||
| 			'jedit'=>array(get_translate('Saving'),get_translate('Saved')), | 			'jrestart'=>array($this->translate('Restarting'),$this->translate('Restarted')), | ||||||
| 			'jremove'=>array(get_translate('Removing'),get_translate('Removed')), | 			'jedit'=>array($this->translate('Saving'),$this->translate('Saved')), | ||||||
| 			'jexport'=>array(get_translate('Exporting'),get_translate('Exported')), | 			'jremove'=>array($this->translate('Removing'),$this->translate('Removed')), | ||||||
| 			'jimport'=>array(get_translate('Importing'),get_translate('Imported')), | 			'jexport'=>array($this->translate('Exporting'),$this->translate('Exported')), | ||||||
| 			'jclone'=>array(get_translate('Cloning'),get_translate('Cloned')), | 			'jimport'=>array($this->translate('Importing'),$this->translate('Imported')), | ||||||
| 			'madd'=>array(get_translate('Installing'),get_translate('Installed')), | 			'jclone'=>array($this->translate('Cloning'),$this->translate('Cloned')), | ||||||
|  | 			'madd'=>array($this->translate('Installing'),$this->translate('Installed')), | ||||||
| 			//'mremove'=>array('Removing','Removed'), | 			//'mremove'=>array('Removing','Removed'), | ||||||
| 			'sstart'=>array(get_translate('Starting'),get_translate('Started')), | 			'sstart'=>array($this->translate('Starting'),$this->translate('Started')), | ||||||
| 			'sstop'=>array(get_translate('Stopping'),get_translate('Stopped')), | 			'sstop'=>array($this->translate('Stopping'),$this->translate('Stopped')), | ||||||
|  | 			'vm_obtain'=>array($this->translate('Creating'),$this->translate('Created')), | ||||||
| 			//'projremove'=>array('Removing','Removed'), | 			//'projremove'=>array('Removing','Removed'), | ||||||
| 		); | 		); | ||||||
|  | 		$stat_array['bcreate']=&$stat_array['jcreate']; | ||||||
|  | 		$stat_array['bstart']=&$stat_array['jstart']; | ||||||
|  | 		$stat_array['bstop']=&$stat_array['jstop']; | ||||||
|  | 		$stat_array['brestart']=&$stat_array['jrestart']; | ||||||
|  | 		$stat_array['bremove']=&$stat_array['jremove']; | ||||||
|  | 		$stat_array['removesrc']=&$stat_array['jremove']; | ||||||
|  | 		 | ||||||
|  | 		 | ||||||
| 		if(!empty($obj)) foreach($obj as $key=>$task) | 		if(!empty($obj)) foreach($obj as $key=>$task) | ||||||
| 		{ | 		{ | ||||||
| 			$op=$task['operation']; | 			$op=$task['operation']; | ||||||
| @@ -342,18 +540,26 @@ class ClonOS | |||||||
| 				{ | 				{ | ||||||
| 					switch($op) | 					switch($op) | ||||||
| 					{ | 					{ | ||||||
| 						case 'jstart':	$res=$this->jailStart('jail'.$key,$key);break; | 						case 'jstart':	$res=$this->jailStart($key);break; | ||||||
| 						case 'jstop':	$res=$this->jailStop('jail'.$key,$key);break; | 						case 'jstop':	$res=$this->jailStop($key);break; | ||||||
| 						case 'jedit':	$res=$this->jailEdit('jail'.$key);break; | 						case 'jrestart':$res=$this->jailRestart($key);break; | ||||||
| 						case 'jremove':	$res=$this->jailRemove('jail'.$key,$key);break; | 						//case 'jedit':	$res=$this->jailEdit('jail'.$key);break; | ||||||
| 						case 'jexport':	$res=$this->jailExport('jail'.$key,$task['jname'],$key);break; | 						case 'jremove':	$res=$this->jailRemove($key);break; | ||||||
| 						case 'jimport':	$res=$this->jailImport('jail'.$key,$task['jname'],$key);break; | 						 | ||||||
| 						case 'jclone':	$res=$this->jailClone('jail'.$key,$key,$obj[$key]);break; | 						case 'bstart':	$res=$this->bhyveStart($key);break; | ||||||
| 						case 'madd':	$res=$this->moduleAdd('jail'.$key,$task['jname'],$key);break; | 						case 'bstop':	$res=$this->bhyveStop($key);break; | ||||||
| 						//case 'mremove':	$res=$this->moduleRemove('jail'.$key,$task['jname'],$key);break; | 						case 'brestart':$res=$this->bhyveRestart($key);break; | ||||||
| 						case 'sstart':	$res=$this->serviceStart($task);break; | 						case 'bremove':	$res=$this->bhyveRemove($key);break; | ||||||
| 						case 'sstop':	$res=$this->serviceStop($task);break; | 						case 'removesrc':	$res=$this->srcRemove($key);break; | ||||||
| 						//case 'projremove':	$res=$this->projectRemove($key,$task);break; | 						 | ||||||
|  | 						//case 'jexport':	$res=$this->jailExport('jail'.$key,$task['jname'],$key);break; | ||||||
|  | 						//case 'jimport':	$res=$this->jailImport('jail'.$key,$task['jname'],$key);break; | ||||||
|  | 						//case 'jclone':	$res=$this->jailClone('jail'.$key,$key,$obj[$key]);break; | ||||||
|  | 						//case 'madd':	$res=$this->moduleAdd('jail'.$key,$task['jname'],$key);break; | ||||||
|  | 						////case 'mremove':	$res=$this->moduleRemove('jail'.$key,$task['jname'],$key);break; | ||||||
|  | 						//case 'sstart':	$res=$this->serviceStart($task);break; | ||||||
|  | 						//case 'sstop':	$res=$this->serviceStop($task);break; | ||||||
|  | 						////case 'projremove':	$res=$this->projectRemove($key,$task);break; | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				 | 				 | ||||||
| @@ -398,20 +604,8 @@ class ClonOS | |||||||
| 						if($stat['errcode']>0) | 						if($stat['errcode']>0) | ||||||
| 						{ | 						{ | ||||||
| 							$obj[$key]['errmsg']=file_get_contents($stat['logfile']); | 							$obj[$key]['errmsg']=file_get_contents($stat['logfile']); | ||||||
| 							$obj[$key]['txt_status']=get_translate('Error'); | 							$obj[$key]['txt_status']=$this->translate('Error'); | ||||||
| 						} | 						} | ||||||
| 					#	Удаляем джейл |  | ||||||
| 						if($stat['status']==2 && $task['operation']=='jremove') |  | ||||||
| 						{ |  | ||||||
| 							$this->jailRemoveFromDb($stat['errcode'],$task); |  | ||||||
| 						} |  | ||||||
| 					#	Удаляем модуль |  | ||||||
| 					/* |  | ||||||
| 						if($stat['status']==2 && $task['operation']=='mremove') |  | ||||||
| 						{ |  | ||||||
| 							$this->moduleRemoveFromDb($stat['errcode'],$task); |  | ||||||
| 						} |  | ||||||
| 					*/ |  | ||||||
| 					#	Возвращаем IP клонированному джейлу, если он был присвоен по DHCP | 					#	Возвращаем IP клонированному джейлу, если он был присвоен по DHCP | ||||||
| 						if($stat['status']==2 && $task['operation']=='jclone') | 						if($stat['status']==2 && $task['operation']=='jclone') | ||||||
| 						{ | 						{ | ||||||
| @@ -422,14 +616,478 @@ class ClonOS | |||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| 		if(isset($res['cloned']) && $res['cloned']) |  | ||||||
| 		{ |  | ||||||
| 			$obj[-1]['jails']=$this->getJailsList(); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		return $obj; | 		return $obj; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | 	function jailAdd() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		$err=array(); | ||||||
|  | 		$arr=array( | ||||||
|  | 			'workdir'=>$this->workdir, | ||||||
|  | 			'mount_devfs'=>1, | ||||||
|  | 			'arch'=>'native', | ||||||
|  | 			'mkhostfile'=>1, | ||||||
|  | 			'devfs_ruleset'=>4, | ||||||
|  | 			'ver'=>'native', | ||||||
|  | 			'mount_src'=>0, | ||||||
|  | 			'mount_obj'=>0, | ||||||
|  | 			'mount_kernel'=>0, | ||||||
|  | 			'applytpl'=>1, | ||||||
|  | 			'floatresolv'=>1, | ||||||
|  | 			'allow_mount'=>1, | ||||||
|  | 			'allow_devfs'=>1, | ||||||
|  | 			'allow_nullfs'=>1, | ||||||
|  | 			'mkhostsfile'=>1, | ||||||
|  | 			'pkg_bootstrap'=>0, | ||||||
|  | 			'mdsize'=>0, | ||||||
|  | 			'runasap'=>0, | ||||||
|  | 			'with_img_helpers'=>'', | ||||||
|  | 		); | ||||||
|  | 		 | ||||||
|  | 		$arr_copy=array('jname','host_hostname','ip4_addr','user_pw_root','interface'); | ||||||
|  | 		foreach($arr_copy as $a) if(isset($form[$a])) $arr[$a]=$form[$a]; | ||||||
|  | 		 | ||||||
|  | 		$arr_copy=array('baserw','mount_ports','astart','vnet'); | ||||||
|  | 		foreach($arr_copy as $a) if(isset($form[$a]) && $form[$a]=='on') $arr[$a]=1; else $arr[$a]=0; | ||||||
|  | 		 | ||||||
|  | 		$sysrc=array(); | ||||||
|  | 		if(isset($form['serv-ftpd'])) $sysrc[]=$form['serv-ftpd']; | ||||||
|  | 		if(isset($form['serv-sshd'])) $sysrc[]=$form['serv-sshd']; | ||||||
|  | 		$arr['sysrc_enable']=join($sysrc,' '); | ||||||
|  | 		 | ||||||
|  | 		/* create jail */ | ||||||
|  | 		$file_name='/tmp/'.$arr['jname'].'.conf'; | ||||||
|  | 		 | ||||||
|  | 		$file=file_get_contents($this->realpath_public.'templates/jail.tpl'); | ||||||
|  | 		if(!empty($file)) | ||||||
|  | 		{ | ||||||
|  | 			foreach($arr as $var=>$val) | ||||||
|  | 			{ | ||||||
|  | 				$file=str_replace('#'.$var.'#',$val,$file); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_put_contents($file_name,$file); | ||||||
|  | 		 | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jcreate inter=0 jconf='.$file_name); | ||||||
|  |  | ||||||
|  | 		$err='Jail is not create!'; | ||||||
|  | 		$taskId=-1; | ||||||
|  | 		if($res['retval']==0) | ||||||
|  | 		{ | ||||||
|  | 			$err='Jail was created!'; | ||||||
|  | 			$taskId=$res['message']; | ||||||
|  | 		} | ||||||
|  | 		// local - поменять на реальный сервер, на котором создаётся клетка! | ||||||
|  | 		$jid=$arr['jname']; | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		$hres=$this->getTableChunk('jailslist','tbody'); | ||||||
|  | 		if($hres!==false) | ||||||
|  | 		{ | ||||||
|  | 			$html_tpl=$hres[1]; | ||||||
|  | 			$vars=array( | ||||||
|  | 				'nth-num'=>'nth0',				// исправить на актуальные данные! | ||||||
|  | 				'node'=>'local',				// исправить на актуальные данные! | ||||||
|  | 				'ip4_addr'=>str_replace(',',',<wbr />',$form['ip4_addr']), | ||||||
|  | 				'jname'=>$arr['jname'], | ||||||
|  | 				'jstatus'=>$this->translate('Creating'), | ||||||
|  | 				'icon'=>'spin6 animate-spin', | ||||||
|  | 				'desktop'=>'s-on', | ||||||
|  | 				'maintenance'=>' maintenance', | ||||||
|  | 				'protected'=>'icon-cancel', | ||||||
|  | 				'protitle'=>$this->translate('Delete'), | ||||||
|  | 				'vnc_title'=>$this->translate('Open VNC'), | ||||||
|  | 				'reboot_title'=>$this->translate('Restart jail'), | ||||||
|  | 			); | ||||||
|  | 			 | ||||||
|  | 			foreach($vars as $var=>$val) | ||||||
|  | 				$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl); | ||||||
|  | 			 | ||||||
|  | 			$html=$html_tpl; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		/* | ||||||
|  | 		$html= | ||||||
|  | <<<EOT | ||||||
|  | 		<tr class="nth0 s-on busy maintenance" id="{$jid}"><td>local</td><td class="txtleft">{$jid}</td><td class="txtleft jname">{$arr['ip4_addr']}</td><td class="jstatus">{$this->translate('Creating')}</td><td class="ops" width="5"><span class="icon-cnt"><span class="icon-spin6 animate-spin"></span></span></td><td width="5" class="op-settings"><span class="icon-cog"></span></td><td class="op-reboot" title="{$this->translate('Restart jail')}" width="5"><span class="icon-arrows-cw"></span></td><td class="op-del" title="{$this->translate('Delete')}" width="5"><span class="icon-cancel"></span></td><td class="op-vnc" width="5"><span class="icon-desktop" title="{$this->translate('Open VNC')}"></span></td></tr> | ||||||
|  | EOT; | ||||||
|  | 		*/ | ||||||
|  | 		 | ||||||
|  | 		return array('errorMessage'=>$err,'jail_id'=>$jid,'taskId'=>$taskId,'html'=>$html,'mode'=>$this->mode); | ||||||
|  | 	} | ||||||
|  | 	/* | ||||||
|  | 	function jailCreate($name,$hostname,$ip,$jprofile) | ||||||
|  | 	{ | ||||||
|  | 		$tpl=$this->getJailTemplate();	//$name,$hostname,1,$ip,$jprofile); | ||||||
|  | 		$file_name='/tmp/'.$name.'.conf'; | ||||||
|  | 		file_put_contents($file_name,$tpl); | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jcreate inter=0 jconf='.$file_name); | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function getJailTemplate()	//$jailname,$hostname,$astart="1",$ipv4='DHCP',$jprofile) | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		$replaces=array( | ||||||
|  | 			'workdir'=>$this->workdir, | ||||||
|  | 			'jname'=>$form['jailname'], | ||||||
|  | 			'host_hostname'=>$form['hostname'], | ||||||
|  | 			'ip4_addr'=>$form['ipv4'], | ||||||
|  | 			'mount_devfs'=>$form[''], | ||||||
|  | 			'allow_mount'=>$form[''], | ||||||
|  | 			'allow_devfs'=>$form[''], | ||||||
|  | 			'allow_nullfs'=>$form[''], | ||||||
|  | 			'mkhostsfile'=>$form[''], | ||||||
|  | 			'devfs_ruleset'=>$form[''], | ||||||
|  | 			'ver'=>$form[''], | ||||||
|  | 			'baserw'=>$form[''], | ||||||
|  | 			'mount_src'=>$form[''], | ||||||
|  | 			'mount_obj'=>$form[''], | ||||||
|  | 			'mount_kernel'=>$form[''], | ||||||
|  | 			'mount_ports'=>$form[''], | ||||||
|  | 			'astart'=>$form['astart'], | ||||||
|  | 			'vnet'=>$form[''], | ||||||
|  | 			'applytpl'=>$form[''], | ||||||
|  | 			'mdsize'=>$form[''], | ||||||
|  | 			'floatresolv'=>$form[''], | ||||||
|  | 			'pkg_bootstrap'=>$form[''], | ||||||
|  | 			'user_pw_root'=>$form[''], | ||||||
|  | 			'interface'=>$form[''], | ||||||
|  | 			'sysrc_enable'=>$form[''], | ||||||
|  | 			'with_img_helpers'=>$form[''], | ||||||
|  | 			'runasap'=>$form[''], | ||||||
|  | 		); | ||||||
|  | 		$file=file_get_contents($this->realpath_public.'templates/jail.tpl'); | ||||||
|  | 		if(!empty($file)) | ||||||
|  | 		{ | ||||||
|  | 			foreach($replaces as $var=>$val) | ||||||
|  | 			{ | ||||||
|  | 				$file=str_replace('#'.$var.'#',$val,$file); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		return $file; | ||||||
|  | 	} | ||||||
|  | 	*/ | ||||||
|  |  | ||||||
|  | 	function jailStart($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jstart inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function jailStop($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jstop inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function jailRestart($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jrestart inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function jailRemove($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd jremove inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function bhyveAdd() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		 | ||||||
|  | 		$os_types=$this->config->os_types; | ||||||
|  | 		$sel_os=$form['vm_os_profile']; | ||||||
|  | 		list($os_num,$item_num)=explode('.',$sel_os); | ||||||
|  | 		if(!isset($os_types[$os_num])) return array('error'=>true,'errorMessage'=>'Error in list of OS types!'); | ||||||
|  | 		$os_name=$os_types[$os_num]['os']; | ||||||
|  | 		$os_items=$os_types[$os_num]['items'][$item_num]; | ||||||
|  | 		 | ||||||
|  | 		$err=array(); | ||||||
|  | 		$arr=array( | ||||||
|  | 			'workdir'=>$this->workdir, | ||||||
|  | 			'jname'=>$form['vm_name'], | ||||||
|  | 			'host_hostname'=>'', | ||||||
|  | 			'ip4_addr'=>'', | ||||||
|  | 			'arch'=>'native', | ||||||
|  | 			'ver'=>'native', | ||||||
|  | 			'astart'=>0, | ||||||
|  | 			'interface'=>$form['interface'], | ||||||
|  | 			'vm_size'=>$form['vm_size'], | ||||||
|  | 			'vm_cpus'=>$form['vm_cpus'], | ||||||
|  | 			'vm_ram'=>$form['vm_ram'], | ||||||
|  | 			'vm_os_type'=>$os_items['type'], | ||||||
|  | 			'vm_efi'=>'uefi', | ||||||
|  | 			'vm_os_profile'=>$os_items['profile'], | ||||||
|  | 			'vm_guestfs'=>'', | ||||||
|  | 		); | ||||||
|  | 		 | ||||||
|  | 		/* create vm */ | ||||||
|  | 		$file_name='/tmp/'.$arr['jname'].'.conf'; | ||||||
|  | 		 | ||||||
|  | 		$file=file_get_contents($this->realpath_public.'templates/vm.tpl'); | ||||||
|  | 		if(!empty($file)) | ||||||
|  | 		{ | ||||||
|  | 			foreach($arr as $var=>$val) | ||||||
|  | 			{ | ||||||
|  | 				$file=str_replace('#'.$var.'#',$val,$file); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		file_put_contents($file_name,$file); | ||||||
|  | 		 | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd bcreate inter=0 jconf='.$file_name); | ||||||
|  |  | ||||||
|  | 		$err='Virtual Machine is not create!'; | ||||||
|  | 		$taskId=-1; | ||||||
|  | 		if($res['retval']==0) | ||||||
|  | 		{ | ||||||
|  | 			$err='Virtual Machine was created!'; | ||||||
|  | 			$taskId=$res['message']; | ||||||
|  | 		} | ||||||
|  | 		// local - поменять на реальный сервер, на котором создаётся клетка! | ||||||
|  | 		$jid=$arr['jname']; | ||||||
|  | 		 | ||||||
|  | 		$vm_ram=str_replace('g',' GB',$form['vm_ram']); | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		$hres=$this->getTableChunk('bhyveslist','tbody'); | ||||||
|  | 		if($hres!==false) | ||||||
|  | 		{ | ||||||
|  | 			$html_tpl=$hres[1]; | ||||||
|  | 			$vars=array( | ||||||
|  | 				'nth-num'=>'nth0',				// исправить на актуальные данные! | ||||||
|  | 				'node'=>'local',				// исправить на актуальные данные! | ||||||
|  | 				'jname'=>$arr['jname'], | ||||||
|  | 				'vm_status'=>$this->translate('Creating'), | ||||||
|  | 				'vm_cpus'=>$form['vm_cpus'], | ||||||
|  | 				'vm_ram'=>$vm_ram, | ||||||
|  | 				'vm_os_type'=>$os_items['type'],	//$os_name, | ||||||
|  | 				'icon'=>'spin6 animate-spin', | ||||||
|  | 				'desktop'=>' s-off', | ||||||
|  | 				'maintenance'=>' maintenance', | ||||||
|  | 				'protected'=>'icon-cancel', | ||||||
|  | 				'protitle'=>$this->translate('Delete'), | ||||||
|  | 				'vnc_title'=>$this->translate('Open VNC'), | ||||||
|  | 				'reboot_title'=>$this->translate('Restart VM'), | ||||||
|  | 			); | ||||||
|  | 			 | ||||||
|  | 			foreach($vars as $var=>$val) | ||||||
|  | 				$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl); | ||||||
|  | 			 | ||||||
|  | 			$html=$html_tpl; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return array('errorMessage'=>$err,'jail_id'=>$jid,'taskId'=>$taskId,'html'=>$html,'mode'=>$this->mode); | ||||||
|  | 	} | ||||||
|  | 	function bhyveObtain() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		 | ||||||
|  | 		$os_types=$this->config->os_types; | ||||||
|  | 		$sel_os=$form['vm_os_profile']; | ||||||
|  | 		list($os_num,$item_num)=explode('.',$sel_os); | ||||||
|  | 		if(!isset($os_types[$os_num])) return array('error'=>true,'errorMessage'=>'Error in list of OS types!'); | ||||||
|  | 		//$os_name=$os_types[$os_num]['os']; | ||||||
|  | 		$os_items=$os_types[$os_num]['items'][$item_num]; | ||||||
|  | 		$os_type=$os_items['type']; | ||||||
|  | 		 | ||||||
|  | 		$key_name='/usr/home/olevole/.ssh/authorized_keys'; | ||||||
|  | 		$key_id=$form['vm_authkey']; | ||||||
|  | 		$db=new Db('base','authkey'); | ||||||
|  | 		$nres=$db->selectAssoc('select name from authkey where idx='.$key_id); | ||||||
|  | 		if($nres['name']!==false) | ||||||
|  | 		{ | ||||||
|  | 			$key_name=$nres['name']; | ||||||
|  | 		} | ||||||
|  | 		$cmd="task owner=cbsdweb mode=new /usr/local/bin/cbsd vm_obtain jname={$form['vm_name']} vm_size={$form['vm_size']} vm_cpus={$form['vm_cpus']} vm_ram={$form['vm_ram']} vm_os_type={$os_type} mask={$form['mask']} ip4_addr={$form['ip4_addr']} gw={$form['gateway']} authkey={$key_name} pw={$form['vm_password']}"; | ||||||
|  | 		 | ||||||
|  | 		$res=$this->cbsd_cmd($cmd); | ||||||
|  | 		$err='Virtual Machine is not create!'; | ||||||
|  | 		$taskId=-1; | ||||||
|  | 		if($res['retval']==0) | ||||||
|  | 		{ | ||||||
|  | 			$err='Virtual Machine was created!'; | ||||||
|  | 			$taskId=$res['message']; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$vm_ram=str_replace('g',' GB',$form['vm_ram']); | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		$hres=$this->getTableChunk('bhyveslist','tbody'); | ||||||
|  | 		if($hres!==false) | ||||||
|  | 		{ | ||||||
|  | 			$html_tpl=$hres[1]; | ||||||
|  | 			$vars=array( | ||||||
|  | 				'nth-num'=>'nth0',				// исправить на актуальные данные! | ||||||
|  | 				'node'=>'local',				// исправить на актуальные данные! | ||||||
|  | 				'jname'=>$form['vm_name'], | ||||||
|  | 				'vm_status'=>$this->translate('Creating'), | ||||||
|  | 				'vm_cpus'=>$form['vm_cpus'], | ||||||
|  | 				'vm_ram'=>$vm_ram, | ||||||
|  | 				'vm_os_type'=>$os_type, | ||||||
|  | 				'icon'=>'spin6 animate-spin', | ||||||
|  | 				'desktop'=>' s-off', | ||||||
|  | 				'maintenance'=>' maintenance', | ||||||
|  | 				'protected'=>'icon-cancel', | ||||||
|  | 				'protitle'=>$this->translate('Delete'), | ||||||
|  | 				'vnc_title'=>$this->translate('Open VNC'), | ||||||
|  | 				'reboot_title'=>$this->translate('Restart VM'), | ||||||
|  | 			); | ||||||
|  | 			 | ||||||
|  | 			foreach($vars as $var=>$val) | ||||||
|  | 				$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl); | ||||||
|  | 			 | ||||||
|  | 			$html=$html_tpl; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return array('errorMessage'=>$err,'jail_id'=>$form['vm_name'],'taskId'=>$taskId,'html'=>$html,'mode'=>$this->mode); | ||||||
|  | 	} | ||||||
|  | 	function bhyveStart($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd bstart inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function bhyveStop($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd bstop inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function bhyveRestart($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd brestart inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	function bhyveRemove($name) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd bremove inter=0 jname='.$name);	// autoflush=2 | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function authkeyAdd() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		 | ||||||
|  | 		$query="insert into authkey (name,authkey) values ('{$form['keyname']}','{$form['keysrc']}')"; | ||||||
|  | 		 | ||||||
|  | 		$db=new Db('base','authkey'); | ||||||
|  | 		//$res=array('error'=>false,'lastId'=>2); | ||||||
|  | 		$res=$db->insert($query); | ||||||
|  | 		if($res['error']) | ||||||
|  | 		{ | ||||||
|  | 			return array('error'=>$res); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		$hres=$this->getTableChunk('authkeyslist','tbody'); | ||||||
|  | 		if($hres!==false) | ||||||
|  | 		{ | ||||||
|  | 			$html_tpl=$hres[1]; | ||||||
|  | 			$vars=array( | ||||||
|  | 				'keyid'=>$res['lastID'], | ||||||
|  | 				'keyname'=>$form['keyname'], | ||||||
|  | 				'keysrc'=>$form['keysrc'], | ||||||
|  | 				'deltitle'=>$this->translate('Delete'), | ||||||
|  | 			); | ||||||
|  | 			 | ||||||
|  | 			foreach($vars as $var=>$val) | ||||||
|  | 				$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl); | ||||||
|  | 			 | ||||||
|  | 			$html=$html_tpl; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return array('keyname'=>$form['keyname'],'html'=>$html); | ||||||
|  | 	} | ||||||
|  | 	function authkeyRemove() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		 | ||||||
|  | 		$db=new Db('base','authkey'); | ||||||
|  | 		$res=$db->update('delete from authkey where idx='.$form['auth_id']); | ||||||
|  | 		if($res===false) return array('error'=>true,'res'=>print_r($res,true)); | ||||||
|  | 		 | ||||||
|  | 		return array('error'=>false,'auth_id'=>$form['auth_id']); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	function vpnetAdd() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		 | ||||||
|  | 		$query="insert into vpnet (name,vpnet) values ('{$form['netname']}','{$form['network']}')"; | ||||||
|  | 		 | ||||||
|  | 		$db=new Db('base','vpnet'); | ||||||
|  | 		 | ||||||
|  | 		$res=$db->insert($query); | ||||||
|  | 		if($res['error']) | ||||||
|  | 		{ | ||||||
|  | 			return array('error'=>$res); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		$hres=$this->getTableChunk('vpnetslist','tbody'); | ||||||
|  | 		if($hres!==false) | ||||||
|  | 		{ | ||||||
|  | 			$html_tpl=$hres[1]; | ||||||
|  | 			$vars=array( | ||||||
|  | 				'netid'=>$res['lastID'], | ||||||
|  | 				'netname'=>$form['netname'], | ||||||
|  | 				'network'=>$form['network'], | ||||||
|  | 				'deltitle'=>$this->translate('Delete'), | ||||||
|  | 			); | ||||||
|  | 			 | ||||||
|  | 			foreach($vars as $var=>$val) | ||||||
|  | 				$html_tpl=str_replace('#'.$var.'#',$val,$html_tpl); | ||||||
|  | 			 | ||||||
|  | 			$html=$html_tpl; | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return array('netname'=>$form['netname'],'html'=>$html); | ||||||
|  | 	} | ||||||
|  | 	function vpnetRemove() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		 | ||||||
|  | 		$db=new Db('base','vpnet'); | ||||||
|  | 		$res=$db->update('delete from vpnet where idx='.$form['vpnet_id']); | ||||||
|  | 		if($res===false) return array('error'=>true,'res'=>print_r($res,true)); | ||||||
|  | 		 | ||||||
|  | 		return array('error'=>false,'vpnet_id'=>$form['vpnet_id']); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	function mediaRemove() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		/* | ||||||
|  | 		$db=new Db('base','storage_media'); | ||||||
|  | 		$res=$db->update('delete from media where idx='.$form['media_id']); | ||||||
|  | 		if($res===false) return array('error'=>true,'res'=>print_r($res,true)); | ||||||
|  | 		*/ | ||||||
|  | 		return array('error'=>false,'media_id'=>$form['media_id']); | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	function srcRemove($ver) | ||||||
|  | 	{ | ||||||
|  | 		$ver=str_replace('src','',$ver); | ||||||
|  | 		if(empty($ver)) return array('error'=>true,'errorMessage'=>'Version of sources is emtpy!'); | ||||||
|  | 		$res=$this->cbsd_cmd('task owner=cbsdwebsys mode=new /usr/local/bin/cbsd removesrc inter=0 ver='.$ver.' jname=#src'.$ver); | ||||||
|  | 		return $res; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	function logLoad() | ||||||
|  | 	{ | ||||||
|  | 		$form=$this->_vars['form_data']; | ||||||
|  | 		$log_id=$form['log_id']; | ||||||
|  | 		if(!is_numeric($log_id)) return array('error'=>'Log ID must be a number'); | ||||||
|  | 		 | ||||||
|  | 		$log_file='/tmp/taskd.'.$log_id.'.log'; | ||||||
|  | 		if(file_exists($log_file)) | ||||||
|  | 		{ | ||||||
|  | 			$html=file_get_contents($log_file); | ||||||
|  | 			$html=str_replace("\n",'<br />',$html); | ||||||
|  | 			return array('html'=>'<div style="font-weight:bold;">Log ID: '.$log_id.'</div><br />'.$html); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		return array('error'=>'Log file is not exists!'); | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| @@ -439,6 +1097,25 @@ class ClonOS | |||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
|  | 	function useDialogs($arr=array()) | ||||||
|  | 	{ | ||||||
|  | 		//print_r($arr); | ||||||
|  | 		$this->_dialogs=$arr; | ||||||
|  | 	} | ||||||
|  | 	function placeDialogs() | ||||||
|  | 	{ | ||||||
|  | 		if(empty($this->_dialogs)) return; | ||||||
|  | 		echo PHP_EOL; | ||||||
|  | 		foreach($this->_dialogs as $dialog_name) | ||||||
|  | 		{ | ||||||
|  | 			$file_name=$this->realpath_public.'dialogs/'.$dialog_name.'.php'; | ||||||
|  | 			if(file_exists($file_name)) | ||||||
|  | 			{ | ||||||
|  | 				include($file_name); | ||||||
|  | 				echo PHP_EOL,PHP_EOL; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| @@ -448,16 +1125,30 @@ class ClonOS | |||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
|  | 	function runVNC($jname) | ||||||
|  | 	{ | ||||||
|  | 		$res=$this->cbsd_cmd("vm_vncwss jname={$jname} permit={$this->_client_ip}"); | ||||||
|  | 		$res=$this->_db_local->selectAssoc('select nodeip from local'); | ||||||
|  | 		$nodeip=$res['nodeip']; | ||||||
|  | 		if(strlen($nodeip)<10) $nodeip='127.0.0.1'; | ||||||
|  | 		header('Location: http://'.$nodeip.':6080/vnc_auto.html?host='.$nodeip.'&port=6080'); | ||||||
|  | 		exit; | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	 | 	function getFreeJname() | ||||||
| 	 | 	{ | ||||||
| 	 | 		$arr=array(); | ||||||
| 	 | 		$res=$this->cbsd_cmd("freejname"); | ||||||
| 	 | 		if($res['error']) | ||||||
| 	 | 		{ | ||||||
| 	 | 			$arr['error']=true; | ||||||
| 	 | 			$arr['error_message']=$err['error_message']; | ||||||
| 	 | 		}else{ | ||||||
|  | 			$arr['error']=false; | ||||||
|  | 			$arr['freejname']=$res['message']; | ||||||
|  | 		} | ||||||
|  | 		return $arr; | ||||||
|  | 	} | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| 	 | 	 | ||||||
| @@ -469,7 +1160,7 @@ class ClonOS | |||||||
| 		return round($Hz/$h,2).' '.$l; | 		return round($Hz/$h,2).' '.$l; | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	function fileSizeConvert($bytes, $bytes_in_mb=1024) | 	function fileSizeConvert($bytes,$bytes_in_mb=1024,$round=false) | ||||||
| 	{ | 	{ | ||||||
| 		$bytes = floatval($bytes); | 		$bytes = floatval($bytes); | ||||||
| 		$arBytes = array( | 		$arBytes = array( | ||||||
| @@ -501,49 +1192,24 @@ class ClonOS | |||||||
| 			if($bytes >= $arItem["VALUE"]) | 			if($bytes >= $arItem["VALUE"]) | ||||||
| 			{ | 			{ | ||||||
| 				$result = $bytes / $arItem["VALUE"]; | 				$result = $bytes / $arItem["VALUE"]; | ||||||
|  | 				if($round) $result=round($result); | ||||||
| 				$result = str_replace(".", "," , strval(round($result, 2)))." ".$arItem["UNIT"]; | 				$result = str_replace(".", "," , strval(round($result, 2)))." ".$arItem["UNIT"]; | ||||||
| 				break; | 				break; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		return $result; | 		return $result; | ||||||
| 	} | 	} | ||||||
|  | 	 | ||||||
|  | 	function colorizeCmd($cmd_string) | ||||||
|  | 	{ | ||||||
|  | 		$arr=$this->_cmd_array; | ||||||
|  | 		foreach($arr as $item) | ||||||
|  | 		{ | ||||||
|  | 			$cmd_string=str_replace($item,'<span class="cbsd-cmd">'.$item.'</span>',$cmd_string); | ||||||
| 		} | 		} | ||||||
| 		 | 		 | ||||||
| function translate($phrase) | 		$cmd_string=preg_replace('#(\/.+/cbsd)#','<span class="cbsd-lnch">$1</span>',$cmd_string); | ||||||
| { |  | ||||||
| 	$lang=getLang(); |  | ||||||
| 	$file=getLangFilePath($lang); |  | ||||||
| 	if(!file_exists($file)) $file=getLangFilePath('en'); |  | ||||||
| 	if(!file_exists($file)) return; |  | ||||||
| 	require($file); |  | ||||||
| 		 | 		 | ||||||
| 	if(isset($lang[$phrase])) | 		return '<span class="cbsd-str">'.$cmd_string.'</span>'; | ||||||
| 		echo $lang[$phrase]; |  | ||||||
| 	else |  | ||||||
| 		echo $phrase; |  | ||||||
| 	} | 	} | ||||||
| function get_translate($phrase) |  | ||||||
| { |  | ||||||
| 	$lang=getLang(); |  | ||||||
| 	$file=getLangFilePath($lang); |  | ||||||
| 	if(!file_exists($file)) $file=getLangFilePath('en'); |  | ||||||
| 	require($file); |  | ||||||
| 	 |  | ||||||
| 	if(isset($lang[$phrase])) |  | ||||||
| 		return $lang[$phrase]; |  | ||||||
| 	else |  | ||||||
| 		return $phrase; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| function getLang() |  | ||||||
| { |  | ||||||
| 	if(isset($_COOKIE['lang'])) |  | ||||||
| 		$lang=$_COOKIE['lang']; |  | ||||||
| 	if(empty($lang)) $lang='en'; |  | ||||||
| 	return $lang; |  | ||||||
| } |  | ||||||
| function getLangFilePath($lang) |  | ||||||
| { |  | ||||||
| 	global $_REALPATH; |  | ||||||
| 	return $_REALPATH.'/public/lang/'.$lang.'.php'; |  | ||||||
| } | } | ||||||
| @@ -5,7 +5,6 @@ class Config | |||||||
| 	public $languages=array( | 	public $languages=array( | ||||||
| 		'en'=>'English', | 		'en'=>'English', | ||||||
| 		'ru'=>'Russian', | 		'ru'=>'Russian', | ||||||
| 		'de'=>'Deutch', |  | ||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	/* Меню проекта */ | 	/* Меню проекта */ | ||||||
| @@ -14,76 +13,165 @@ class Config | |||||||
| 		'overview'=>array( | 		'overview'=>array( | ||||||
| 			'name'=>'Overview', | 			'name'=>'Overview', | ||||||
| 			'title'=>'Summary Overview',	// заголовки лучше делать более полными, чем просто повторение пункта меню | 			'title'=>'Summary Overview',	// заголовки лучше делать более полными, чем просто повторение пункта меню | ||||||
|  | 			'icon'=>'icon-chart-bar', | ||||||
| 		), | 		), | ||||||
| 		'jailscontainers'=>array( | 		'jailscontainers'=>array( | ||||||
| 			'name'=>'Jails containers', | 			'name'=>'Jails containers', | ||||||
| 			'title'=>'Jails containers control panel', | 			'title'=>'Jails containers control panel', | ||||||
|  | 			'icon'=>'icon-server', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'instance_jail'=>array( | 		'instance_jail'=>array( | ||||||
| 			'name'=>'Template for jail', | 			'name'=>'Template for jail', | ||||||
| 			'title'=>'Helpers and wizard for containers', | 			'title'=>'Helpers and wizard for containers', | ||||||
|  | 			'icon'=>'icon-cubes', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'bhyvevms'=>array( | 		'bhyvevms'=>array( | ||||||
| 			'name'=>'Bhyve VMs', | 			'name'=>'Bhyve VMs', | ||||||
| 			'title'=>'Virtual machine control panel', | 			'title'=>'Virtual machine control panel', | ||||||
|  | 			'icon'=>'icon-th-list', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'nodes'=>array( | 		'nodes'=>array( | ||||||
| 			'name'=>'Nodes', | 			'name'=>'Nodes', | ||||||
| 			'title'=>'Nodes control panel', | 			'title'=>'Nodes control panel', | ||||||
|  | 			'icon'=>'icon-buffer', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'vpnet'=>array( | 		'vpnet'=>array( | ||||||
| 			'name'=>'Virtual Private Network', | 			'name'=>'Virtual Private Network', | ||||||
| 			'title'=>'Manage for virtual private networks', | 			'title'=>'Manage for virtual private networks', | ||||||
|  | 			'icon'=>'icon-plug', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'authkey'=>array( | 		'authkey'=>array( | ||||||
| 			'name'=>'Authkey', | 			'name'=>'Authkeys', | ||||||
| 			'title'=>'Manage for SSH auth key', | 			'title'=>'Manage for SSH auth key', | ||||||
|  | 			'icon'=>'icon-key', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'media'=>array( | 		'media'=>array( | ||||||
| 			'name'=>'Storage Media', | 			'name'=>'Storage Media', | ||||||
| 			'title'=>'Virtual Media Manager', | 			'title'=>'Virtual Media Manager', | ||||||
|  | 			'icon'=>'icon-inbox', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'repo'=>array( | 		'repo'=>array( | ||||||
| 			'name'=>'Repository', | 			'name'=>'Repository', | ||||||
| 			'title'=>'Remote repository', | 			'title'=>'Remote repository', | ||||||
|  | 			'icon'=>'icon-globe', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'bases'=>array( | 		'bases'=>array( | ||||||
| 			'name'=>'FreeBSD Bases', | 			'name'=>'FreeBSD Bases', | ||||||
| 			'title'=>'FreeBSD bases manager', | 			'title'=>'FreeBSD bases manager', | ||||||
|  | 			'icon'=>'icon-database', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'sources'=>array( | 		'sources'=>array( | ||||||
| 			'name'=>'FreeBSD Sources', | 			'name'=>'FreeBSD Sources', | ||||||
| 			'title'=>'FreeBSD sources manager', | 			'title'=>'FreeBSD sources manager', | ||||||
|  | 			'icon'=>'icon-edit', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'jail_marketplace'=>array( | 		'jail_marketplace'=>array( | ||||||
| 			'name'=>'Jail Marketplace', | 			'name'=>'Jail Marketplace', | ||||||
| 			'title'=>'Public remote containers marketplace', | 			'title'=>'Public remote containers marketplace', | ||||||
|  | 			'icon'=>'icon-flag', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'bhyve_marketplace'=>array( | 		'bhyve_marketplace'=>array( | ||||||
| 			'name'=>'Bhyve Marketplace', | 			'name'=>'Bhyve Marketplace', | ||||||
| 			'title'=>'Public remote virtual machine marketplace', | 			'title'=>'Public remote virtual machine marketplace', | ||||||
|  | 			'icon'=>'icon-flag-checkered', | ||||||
| 		), | 		), | ||||||
| 		 | 		 | ||||||
| 		'tasklog'=>array( | 		'tasklog'=>array( | ||||||
| 			'name'=>'TaskLog', | 			'name'=>'TaskLog', | ||||||
| 			'title'=>'System task log', | 			'title'=>'System task log', | ||||||
|  | 			'icon'=>'icon-list-alt', | ||||||
| 		), | 		), | ||||||
|  |  | ||||||
| 		'sqlite'=>array( | 		'sqlite'=>array( | ||||||
| 			'name'=>'SQLite admin', | 			'name'=>'SQLite admin', | ||||||
| 			'title'=>'SQLite admin interface', | 			'title'=>'SQLite admin interface', | ||||||
|  | 			'icon'=>'icon-wpforms', | ||||||
| 		), | 		), | ||||||
|  |  | ||||||
| 	); | 	); | ||||||
|  | 	 | ||||||
|  | 	public $os_types=array( | ||||||
|  | 		array( | ||||||
|  | 			'os'=>'FreeBSD', | ||||||
|  | 			'items'=>array( | ||||||
|  | 				array('name'=>'FreeBSD 11.0-RELEASE','type'=>'freebsd', | ||||||
|  | 						'profile'=>'FreeBSD-x64-11.0','obtain'=>true), | ||||||
|  | 				array('name'=>'FreeBSD pfSense 2.4.0-DEVELOP','type'=>'freebsd', | ||||||
|  | 						'profile'=>'pfSense-2-LATEST-amd64','obtain'=>false), | ||||||
|  | 				array('name'=>'FreeBSD OPNsense-16.7','type'=>'freebsd', | ||||||
|  | 						'profile'=>'OPNsense-16-RELEASE-amd64','obtain'=>false), | ||||||
|  | 			), | ||||||
|  | 		), | ||||||
|  | 		array( | ||||||
|  | 			'os'=>'Linux', | ||||||
|  | 			'items'=>array( | ||||||
|  | 				array('name'=>'Linux Arch 2016','type'=>'linux', | ||||||
|  | 						'profile'=>'ArchLinux-x86-2016','obtain'=>false), | ||||||
|  | 				array('name'=>'Linux CentOS 7','type'=>'linux', | ||||||
|  | 						'profile'=>'CentOS-7-x86_64','obtain'=>false), | ||||||
|  | 				array('name'=>'Linux Debian 7','type'=>'linux', | ||||||
|  | 						'profile'=>'Debian-x86-7','obtain'=>false), | ||||||
|  | 				array('name'=>'Linux Debian 8','type'=>'linux', | ||||||
|  | 						'profile'=>'Debian-x86-8','obtain'=>false), | ||||||
|  | 				array('name'=>'Linux Open Suse 42','type'=>'linux', | ||||||
|  | 						'profile'=>'opensuse-x86-42','obtain'=>false), | ||||||
|  | 				array('name'=>'Linux Ubuntu 16.04','type'=>'linux', | ||||||
|  | 						'profile'=>'ubuntuserver-x86-16.04','obtain'=>true), | ||||||
|  | 			), | ||||||
|  | 		), | ||||||
|  | 		array( | ||||||
|  | 			'os'=>'Windows', | ||||||
|  | 			'items'=>array( | ||||||
|  | 				array('name'=>'Windows 10','type'=>'windows', | ||||||
|  | 						'profile'=>'10_86x_64x','obtain'=>false), | ||||||
|  | 			), | ||||||
|  | 		) | ||||||
|  | 	); | ||||||
|  | 	function os_types_create($obtain='new') | ||||||
|  | 	{ | ||||||
|  | 		$obtain=($obtain=='obtain'); | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		foreach($this->os_types as $num1=>$os) | ||||||
|  | 		{ | ||||||
|  | 			$obtain_count=0; | ||||||
|  | 			$html_tmp='					<optgroup label="'.$os['os'].'">'.PHP_EOL; | ||||||
|  | 			$items=$os['items']; | ||||||
|  | 			foreach($items as $num2=>$item) | ||||||
|  | 			{ | ||||||
|  | 				if(!$obtain || $item['obtain']) | ||||||
|  | 					$html_tmp.='						<option value="'.$num1.'.'.$num2.'">'.$item['name'].'</option>'.PHP_EOL; | ||||||
|  | 				if($item['obtain']) $obtain_count++; | ||||||
|  | 			} | ||||||
|  | 			$html_tmp.='					</optgroup>'.PHP_EOL; | ||||||
|  | 			 | ||||||
|  | 			if(!$obtain || $obtain_count>0) $html.=$html_tmp; | ||||||
|  | 		} | ||||||
|  | 		return $html; | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	 | ||||||
|  | 	function authkeys_list() | ||||||
|  | 	{ | ||||||
|  | 		$db=new Db('base','authkey'); | ||||||
|  | 		$res=$db->select('SELECT idx,name FROM authkey;'); | ||||||
|  | 		 | ||||||
|  | 		$html=''; | ||||||
|  | 		if(!empty($res))foreach($res as $item) | ||||||
|  | 		{ | ||||||
|  | 			$html.='					<option value="'.$item['idx'].'">'.$item['name'].'</option>'.PHP_EOL; | ||||||
|  | 		} | ||||||
|  | 		return $html; | ||||||
|  | 	} | ||||||
| } | } | ||||||
							
								
								
									
										16
									
								
								php/menu.php
									
									
									
									
									
								
							
							
						
						| @@ -33,7 +33,7 @@ class Menu | |||||||
| 	public $path=''; | 	public $path=''; | ||||||
| 	public $first_key=array(); | 	public $first_key=array(); | ||||||
| 	 | 	 | ||||||
| 	function __construct($menu_config=array()) | 	function __construct($menu_config=array(),$parent) | ||||||
| 	{ | 	{ | ||||||
| 		if(!empty($menu_config)) | 		if(!empty($menu_config)) | ||||||
| 		{ | 		{ | ||||||
| @@ -47,8 +47,8 @@ class Menu | |||||||
| 		$this->path=$qstr;	//$_MENU_PATH | 		$this->path=$qstr;	//$_MENU_PATH | ||||||
| 		if(!empty($menu_config))foreach($menu_config as $key=>$val) | 		if(!empty($menu_config))foreach($menu_config as $key=>$val) | ||||||
| 		{ | 		{ | ||||||
| 			$mname=get_translate($val['name']); | 			$mname=$parent->translate($val['name']); | ||||||
| 			$mtitle=get_translate($val['title']); | 			$mtitle=$parent->translate($val['title']); | ||||||
| 			 | 			 | ||||||
| 			$link=$key; | 			$link=$key; | ||||||
| 			$sel=''; | 			$sel=''; | ||||||
| @@ -57,14 +57,18 @@ class Menu | |||||||
| 				$this->title=$mtitle;	//$_TITLE | 				$this->title=$mtitle;	//$_TITLE | ||||||
| 				$this->name=$mname;		//$_MENU_NAME | 				$this->name=$mname;		//$_MENU_NAME | ||||||
| 			} | 			} | ||||||
| 			$this->html.='	<li><a href="/'.$link.'/" title="'.$mtitle.'"'.$sel.'>'.$mname.'</a>'; | 			 | ||||||
|  | 			$icon='empty'; | ||||||
|  | 			if(isset($val['icon']) && !empty($val['icon'])) $icon=$val['icon']; | ||||||
|  | 			$span='<span class="'.$icon.'"></span>'; | ||||||
|  | 			$this->html.='	<li><a href="/'.$link.'/" title="'.$mtitle.'"'.$sel.'>'.$span.'<span class="mtxt">'.$mname.'</span></a>'; | ||||||
| 			if(!empty($val['submenu'])) | 			if(!empty($val['submenu'])) | ||||||
| 			{ | 			{ | ||||||
| 				$this->html.= PHP_EOL.'		<ul class="submenu">'.PHP_EOL; | 				$this->html.= PHP_EOL.'		<ul class="submenu">'.PHP_EOL; | ||||||
| 				foreach($val['submenu'] as $k=>$s) | 				foreach($val['submenu'] as $k=>$s) | ||||||
| 				{ | 				{ | ||||||
| 					$sname=get_translate($s['name']); | 					$sname=$parent->translate($s['name']); | ||||||
| 					$stitle=get_translate($s['title']); | 					$stitle=$parent->translate($s['title']); | ||||||
| 					 | 					 | ||||||
| 					$slink=$link.'/'.$k; | 					$slink=$link.'/'.$k; | ||||||
| 					$sl=$link.'_'.$k; | 					$sl=$link.'_'.$k; | ||||||
|   | |||||||
							
								
								
									
										680
									
								
								public/css/styles-old.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,680 @@ | |||||||
|  | html { | ||||||
|  | 	background:#ddd; | ||||||
|  | 	margin:0; | ||||||
|  | 	height:100%; | ||||||
|  | 	width:100%; | ||||||
|  | 	overflow:hidden; | ||||||
|  | } | ||||||
|  | body { | ||||||
|  | 	border:1px solid #222; | ||||||
|  | 	border-width:0 1px; | ||||||
|  | 	background:white; | ||||||
|  | 	margin:0 20px; | ||||||
|  | 	height:100%; | ||||||
|  | 	-webkit-box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | ||||||
|  | 	-moz-box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | ||||||
|  | 	box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | ||||||
|  | 	/*overflow:hidden;*/ | ||||||
|  | } | ||||||
|  |  | ||||||
|  | main { | ||||||
|  | 	box-sizing:border-box; | ||||||
|  | 	padding:100px 0 0 0; | ||||||
|  | } | ||||||
|  | #content { | ||||||
|  | 	padding:10px 20px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ul {margin:0;padding:0;} | ||||||
|  | #nav { | ||||||
|  | 	background-image: url(/images/main-menu-bg.png); | ||||||
|  | 	background-repeat: repeat-x; | ||||||
|  | 	height: 52px; | ||||||
|  | 	border-bottom: 5px solid #0F83A0; | ||||||
|  | 	padding-left: 10px; | ||||||
|  | } | ||||||
|  | #nav ul { | ||||||
|  | 	height: 52px; | ||||||
|  | 	margin: 0; | ||||||
|  | 	padding: 0; | ||||||
|  | 	font-style: normal; | ||||||
|  | 	font-weight: normal; | ||||||
|  | 	font-size: 11px; | ||||||
|  | 	line-height: normal; | ||||||
|  | 	font-family: Verdana, Geneva, sans-serif; | ||||||
|  | 	overflow:hidden; | ||||||
|  | } | ||||||
|  | #nav li { | ||||||
|  | 	position: relative; | ||||||
|  | 	display: inline-block; | ||||||
|  | 	float: left; | ||||||
|  | 	border: 1px solid #222; | ||||||
|  | 	border-width: 0 0 0 1px; | ||||||
|  | 	height: 47px; | ||||||
|  | 	margin-top: 5px; | ||||||
|  | } | ||||||
|  | #nav li.mhome { | ||||||
|  | 	border: 0; | ||||||
|  | 	margin-top: 0; | ||||||
|  | 	height: 52px; | ||||||
|  | 	width: 55px; | ||||||
|  | } | ||||||
|  | #nav li.mhome a { | ||||||
|  | 	height: 52px; | ||||||
|  | 	border-left: 0 none; | ||||||
|  | 	text-indent: -9999px; | ||||||
|  | 	background-color: #0F83A0; | ||||||
|  | 	background-image: url(/images/home.png); | ||||||
|  | 	background-repeat: no-repeat; | ||||||
|  | 	background-position: 50% 9px; | ||||||
|  | } | ||||||
|  | #nav li a { | ||||||
|  | 	display: block; | ||||||
|  | 	line-height: 45px; | ||||||
|  | 	height: 45px; | ||||||
|  | 	text-decoration: none; | ||||||
|  | 	color: #D5D5D5; | ||||||
|  | 	padding: 0 15px; | ||||||
|  | 	text-shadow: 0 1px 1px black; | ||||||
|  | 	border-left: 1px solid #383838; | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | } | ||||||
|  | #nav #title { | ||||||
|  | 	float:right; | ||||||
|  | 	color:white; | ||||||
|  | 	margin:18px 18px 0 0; | ||||||
|  | 	font-size:120%; | ||||||
|  | 	font-style:italic; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | ul.menu { | ||||||
|  | 	list-style-type:none; | ||||||
|  | 	margin:10px; | ||||||
|  | 	font-family:"Helvetica Neue",Helvetica,Arial,sans-serif; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  | ul.menu li { | ||||||
|  | 	padding:5px 10px; | ||||||
|  | } | ||||||
|  | ul.menu a { | ||||||
|  | 	color: #337ab7; | ||||||
|  |     text-decoration: none; | ||||||
|  | } | ||||||
|  | ul.menu a.sel { | ||||||
|  | 	color:black; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #content a { | ||||||
|  | 	color:#337ab7; | ||||||
|  |     text-decoration:underline; | ||||||
|  | } | ||||||
|  | #content a:hover { | ||||||
|  | 	text-decoration:none; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | div#menu { | ||||||
|  | 	position:relative; | ||||||
|  | 	top: 0; | ||||||
|  | 	bottom: 0;  | ||||||
|  | 	left: 0; | ||||||
|  | 	width: 250px; /* Width of navigation frame */ | ||||||
|  | 	height: 100%; | ||||||
|  | 	overflow: hidden; /* Disables scrollbars on the navigation frame. To enable scrollbars, change "hidden" to "scroll" */ | ||||||
|  | 	background: #eee; | ||||||
|  | 	margin-bottom:-100px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | div#content { | ||||||
|  | 	position: absolute; | ||||||
|  | 	top: 74px; | ||||||
|  | 	left: 270px; /* Set this to the width of the navigation frame */ | ||||||
|  | 	right: 23px; | ||||||
|  | 	bottom: 0; | ||||||
|  | 	overflow: auto;  | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | .log { | ||||||
|  | 	position:absolute; | ||||||
|  | 	left:102%; | ||||||
|  | 	top:10%; | ||||||
|  | 	width:20%; | ||||||
|  | 	height:500px; | ||||||
|  | 	background:rgba(200,200,200,.8); | ||||||
|  | 	font-size:x-small; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* Таблицы: http://html5book.ru/examples/demo-tables.html */ | ||||||
|  |  | ||||||
|  | table { | ||||||
|  | 	font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif; | ||||||
|  | 	font-size: 14px; | ||||||
|  | 	border-collapse: collapse; | ||||||
|  | 	text-align: center; | ||||||
|  | 	margin:4px 0; | ||||||
|  | } | ||||||
|  | table.error tbody { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | table.error tbody.error { | ||||||
|  | 	display:table-row-group !important; | ||||||
|  | } | ||||||
|  | table.error tbody.error td { | ||||||
|  | 	color:black; | ||||||
|  | 	background-color:#ffe9e9 !important; | ||||||
|  | 	text-align:center; | ||||||
|  | } | ||||||
|  | table tbody.error { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | .tfill thead td, .tfill td:first-child { | ||||||
|  | 	background:#337ab7; | ||||||
|  | 	color:white; | ||||||
|  | 	padding:10px 20px; | ||||||
|  | } | ||||||
|  | thead td { | ||||||
|  | 	font-weight:bold; | ||||||
|  | } | ||||||
|  | .tfill thead td, td { | ||||||
|  | 	border-style: solid; | ||||||
|  | 	border-width: 0 1px 1px 0; | ||||||
|  | 	border-color: white; | ||||||
|  | } | ||||||
|  | .tfill td { | ||||||
|  | 	background: #D8E6F3; | ||||||
|  | } | ||||||
|  | thead td:first-child, td:first-child { | ||||||
|  | 	text-align: left; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tsimple { | ||||||
|  | 	table-layout:fixed; | ||||||
|  |   border-collapse:collapse; | ||||||
|  |   width:100%; | ||||||
|  | } | ||||||
|  | .tsimple thead th, | ||||||
|  | .tsimple thead td { | ||||||
|  | 	border-bottom:3px solid #337ab7; | ||||||
|  | 	padding:10px; | ||||||
|  | 	text-align:left; | ||||||
|  | } | ||||||
|  | .tsimple tbody td { | ||||||
|  | 	padding:10px; | ||||||
|  | 	border-bottom:1px solid #f0f0f0; | ||||||
|  | 	overflow:hidden; | ||||||
|  | 	text-overflow:ellipsis; | ||||||
|  | } | ||||||
|  | .tsimple tbody tr:nth-child(2n){ | ||||||
|  | 	background-color: #fafafa; | ||||||
|  | } | ||||||
|  | .tsimple td.txtleft { | ||||||
|  | 	text-align:left; | ||||||
|  | } | ||||||
|  | .tsimple td.txtright { | ||||||
|  | 	text-align:right; | ||||||
|  | } | ||||||
|  | .tsimple .nth0 + .nth1 td, .tsimple .nth1 + .nth0 td { | ||||||
|  | 	border-top:2px solid #d1e7f3;	/* #aad1e8; */	/* #79b8cf; */ | ||||||
|  | } | ||||||
|  | .tsimple tr.sel td { | ||||||
|  | 	background-color:#fefec0; | ||||||
|  | } | ||||||
|  | .wordwreck { | ||||||
|  | 	word-wrap:break-word; | ||||||
|  | } | ||||||
|  | .wdt-30 { | ||||||
|  | 	width:30px; | ||||||
|  | } | ||||||
|  | .wdt-40 { | ||||||
|  | 	width:40px; | ||||||
|  | } | ||||||
|  | .wdt-80 { | ||||||
|  | 	width:80px; | ||||||
|  | } | ||||||
|  | .wdt-100 { | ||||||
|  | 	width:100px; | ||||||
|  | } | ||||||
|  | .wdt-120 { | ||||||
|  | 	width:120px; | ||||||
|  | } | ||||||
|  | .wdt-200 { | ||||||
|  | 	width:200px; | ||||||
|  | } | ||||||
|  | .wdt-200.elastic | ||||||
|  | { | ||||||
|  | 	min-width:200px; | ||||||
|  | 	width:20%; | ||||||
|  | } | ||||||
|  | .wdt-250 { | ||||||
|  | 	width:250px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* .tsimple [class^="icon-"] */ | ||||||
|  | td.ops span.icon-cnt, | ||||||
|  | .icon-cancel, | ||||||
|  | .icon-cog, | ||||||
|  | .icon-arrows-cw { | ||||||
|  | 	color:gray; | ||||||
|  | 	position:relative; | ||||||
|  | 	text-align:center; | ||||||
|  | 	text-shadow:2px 2px 2px rgba(0,0,0,0.2); | ||||||
|  | } | ||||||
|  | .wdt5 { | ||||||
|  | 	width:50px; | ||||||
|  | } | ||||||
|  | span.icon-cnt:hover .icon-play, | ||||||
|  | span.icon-cnt:hover .icon-stop, | ||||||
|  | .icon-cancel:hover, | ||||||
|  | .icon-cog:hover, | ||||||
|  | .icon-arrows-cw:hover { | ||||||
|  | 	color:black; | ||||||
|  | 	cursor:pointer; | ||||||
|  | } | ||||||
|  | span.icon-desktop { | ||||||
|  | 	color:gray; | ||||||
|  | 	text-shadow:2px 2px 2px rgba(0,0,0,0.2); | ||||||
|  | } | ||||||
|  | span.icon-desktop:hover { | ||||||
|  | 	color:black; | ||||||
|  | 	cursor:pointer; | ||||||
|  | } | ||||||
|  | span.icon-spin6 { | ||||||
|  | 	margin:-1px 0 0 -1px; | ||||||
|  | 	text-shadow:none; | ||||||
|  | 	color:black; | ||||||
|  | } | ||||||
|  | tr.busy .op-settings span,	/*.icon-cog*/ | ||||||
|  | tr.busy .op-reboot span,	/*.icon-cancel,*/ | ||||||
|  | tr.busy .op-del span,	/*.icon-desktop,*/ | ||||||
|  | tr.busy .op-vnc span {	/*.icon-arrows-cw {*/ | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | td.jstatus { | ||||||
|  | 	font-size:small; | ||||||
|  | } | ||||||
|  | tr.busy .jstatus { | ||||||
|  | 	background-color:Lavender !important; | ||||||
|  | } | ||||||
|  | tr.s-off span.icon-desktop, | ||||||
|  | tr.s-off span.icon-arrows-cw { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | tr.s-on td.jstatus { | ||||||
|  | 	background-color:Honeydew; | ||||||
|  | } | ||||||
|  | tr.s-off td.jstatus { | ||||||
|  | 	background-color:Seashell; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tr.maintenance .ops span, | ||||||
|  | tr.maintenance .op-settings span, | ||||||
|  | tr.maintenance .op-reboot span, | ||||||
|  | tr.maintenance .op-vnc span { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | tr.maintenance td { | ||||||
|  | 	color:gray; | ||||||
|  | } | ||||||
|  | tr.maintenance td.jstatus { | ||||||
|  | 	background-color:#f0f0f0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tr.busy.maintenance .ops span { | ||||||
|  | 	display:inline-block !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tsimple .icon-lock { | ||||||
|  | 	color:silver; | ||||||
|  | 	cursor:default; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* td.ops span.icon-play:before { | ||||||
|  | 	margin-left:.2em; | ||||||
|  | } | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | #content p { | ||||||
|  | 	margin:16px 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #content ul { | ||||||
|  | 	margin:10px 0 10px 20px; | ||||||
|  | 	list-style-type:disc; | ||||||
|  | } | ||||||
|  | #content ul li { | ||||||
|  | 	padding:4px 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #content h1 { | ||||||
|  | 	font-size:120%; | ||||||
|  | 	color:#337ab7; | ||||||
|  | 	margin:10px 0 20px 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | dialog { | ||||||
|  | 	display:none; | ||||||
|  | /* | ||||||
|  | 	width:800px; | ||||||
|  | 	height:630px; | ||||||
|  | */ | ||||||
|  | 	padding:0; | ||||||
|  | 	border:1px solid rgba(0,0,0,.3); | ||||||
|  | 	border-radius:2px; | ||||||
|  | 	box-shadow:0 5px 20px black; | ||||||
|  | 	/*top:20%;*/ | ||||||
|  | 	background-color:#f0f0f0; | ||||||
|  | } | ||||||
|  | dialog::backdrop, | ||||||
|  | #backdrop { | ||||||
|  | 	position:fixed; | ||||||
|  | 	top:0; | ||||||
|  | 	left:0; | ||||||
|  | 	right:0; | ||||||
|  | 	bottom:0; | ||||||
|  | 	width:100%; | ||||||
|  | 	height:100%; | ||||||
|  | 	background: rgba(0,0,0,.5); | ||||||
|  | 	-webkit-backdrop-filter:blur(5px); | ||||||
|  | } | ||||||
|  | dialog { | ||||||
|  | 	/*text-align:center;*/ | ||||||
|  | 	font-family: 'trebuchet ms', 'lucida grande', 'lucida sans unicode', arial, helvetica, sans-serif; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  | .dialog-close:before { | ||||||
|  | 	font-family:"clonos"; | ||||||
|  | 	content:'\e820'; | ||||||
|  | 	speak: none; | ||||||
|  | 	display: inline-block; | ||||||
|  | 	width: 1em; | ||||||
|  | 	line-height: 1em; | ||||||
|  | 	font-variant: normal; | ||||||
|  | 	text-transform: none; | ||||||
|  | 	margin:2px 6px; | ||||||
|  | } | ||||||
|  | dialog .panel { | ||||||
|  | 	background-color:white; | ||||||
|  | } | ||||||
|  | dialog:not(input), | ||||||
|  | dialog:not(textarea) { | ||||||
|  | 	user-select:none; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .window-box { | ||||||
|  | 	/*padding:0 30px 30px 30px;*/ | ||||||
|  | 	border:1px solid #337ab7; | ||||||
|  | 	border-width:1px 1px 1px 6px; | ||||||
|  | } | ||||||
|  | .window-box .close-but { | ||||||
|  | 	position:absolute; | ||||||
|  | 	left:100%; | ||||||
|  | 	height:30px; | ||||||
|  | 	width:32px; | ||||||
|  | 	margin-left:-32px; | ||||||
|  | 	font-size:30px; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	cursor:pointer; | ||||||
|  | 	background-color:#f3f3f3; | ||||||
|  | 	text-align:center; | ||||||
|  | 	line-height:30px; | ||||||
|  | } | ||||||
|  | .window-box .window-content { | ||||||
|  | 	min-height:300px; | ||||||
|  | 	max-height:600px; | ||||||
|  | 	padding:10px 30px; | ||||||
|  | } | ||||||
|  | .window-box .window-content p { | ||||||
|  | 	margin-bottom:10px; | ||||||
|  | } | ||||||
|  | .window-box .buttons { | ||||||
|  | 	background-color:#e0e0e0; | ||||||
|  | 	border-top:1px solid silver; | ||||||
|  | 	margin-top:4px; | ||||||
|  | 	height:60px; | ||||||
|  | 	padding:0 10px; | ||||||
|  | 	text-align:center; | ||||||
|  | } | ||||||
|  | .buttons .button { | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	padding:10px 18px; | ||||||
|  | 	color:white; | ||||||
|  | 	background-color:#337ab7; | ||||||
|  | 	border:0; | ||||||
|  | 	margin-left:10px; | ||||||
|  | 	margin-top:10px; | ||||||
|  | 	text-shadow:1px 1px 2px black; | ||||||
|  | 	cursor:pointer; | ||||||
|  | 	box-shadow:0 4px 8px rgba(0,0,0,.3); | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | 	font-family:Helvetica,Impact,fantasy; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  | .buttons .button:hover { | ||||||
|  | 	opacity:.9; | ||||||
|  | } | ||||||
|  | .buttons .button.red { | ||||||
|  | 	background-color:coral; | ||||||
|  | 	text-shadow:1px 1px 2px black; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .window-box h1 { | ||||||
|  | 	color:gray; | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | 	font-size:90%; | ||||||
|  | 	padding:0 30px; | ||||||
|  | 	margin: 10px 0 0 0; | ||||||
|  | 	font-family: serif; | ||||||
|  | } | ||||||
|  | .window-box h2 { | ||||||
|  | 	color:gray; | ||||||
|  | 	padding:0 30px; | ||||||
|  | 	margin:0; | ||||||
|  | 	font-size:220%; | ||||||
|  | 	font-weight:normal; | ||||||
|  | } | ||||||
|  | .window-box h3 { | ||||||
|  | 	border-bottom:3px solid #387db6; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	font-size:120%; | ||||||
|  | 	margin:10px 0; | ||||||
|  | } | ||||||
|  | .window-box h3 small { | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:80%; | ||||||
|  | } | ||||||
|  | .window-box .mrow { | ||||||
|  | 	margin:2px 0 2px 10px; | ||||||
|  | 	border-bottom:1px dotted silver; | ||||||
|  | } | ||||||
|  | .window-box .mrow small { | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:80%; | ||||||
|  | } | ||||||
|  | .window-box .mrow .size { | ||||||
|  | 	float:right; | ||||||
|  | 	font-size:80%; | ||||||
|  | } | ||||||
|  | .window-box .scrolled { | ||||||
|  | 	overflow-y:auto; | ||||||
|  | 	max-height:500px; | ||||||
|  | } | ||||||
|  | .window-box .mrow.installed, | ||||||
|  | .window-box .mrow.installed small { | ||||||
|  | 	color:silver; | ||||||
|  | } | ||||||
|  | form.win .field-name { | ||||||
|  | 	display:block; | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:90%; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	margin-bottom:2px; | ||||||
|  | } | ||||||
|  | form.win input[type='text'], | ||||||
|  | form.win textarea, | ||||||
|  | form.win select { | ||||||
|  | 	width:400px; | ||||||
|  | } | ||||||
|  | form.win fieldset { | ||||||
|  | 	border: 1px solid gray; | ||||||
|  |     padding: 10px; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  | } | ||||||
|  | form.win legend { | ||||||
|  | 	padding:0 10px; | ||||||
|  | } | ||||||
|  | form.win input[type="text"]:required, | ||||||
|  | form.win input[type="password"]:required { | ||||||
|  | 	background-color:#fef7f7; | ||||||
|  | 	border:1px solid #d7a0a0; | ||||||
|  | } | ||||||
|  | form.win input[type="text"]:valid, | ||||||
|  | form.win input[type="password"]:valid { | ||||||
|  | 	border:1px solid green; | ||||||
|  | 	background-color:Honeydew; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | input[type=checkbox]:checked + label, | ||||||
|  | input[type=radio]:checked + label { | ||||||
|  | 	color:#337ab7; | ||||||
|  | } | ||||||
|  | input.inline + label { | ||||||
|  | 	margin-right:30px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | input[type=checkbox] { | ||||||
|  |   display: none; | ||||||
|  | } | ||||||
|  | .checkbox label:before { | ||||||
|  |   border-radius: 3px; | ||||||
|  | } | ||||||
|  | input[type=checkbox]:checked + label:before { | ||||||
|  |   content: "\2713"; | ||||||
|  |   text-shadow: 1px 1px 1px rgba(0, 0, 0, .2); | ||||||
|  |   font-size: 15px; | ||||||
|  |   color: #f3f3f3; | ||||||
|  |   text-align: center; | ||||||
|  |     line-height: 15px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | label { | ||||||
|  | 	display: inline-block; | ||||||
|  | 	cursor: pointer; | ||||||
|  | 	position: relative; | ||||||
|  | 	padding-left: 25px; | ||||||
|  | 	margin-right: 15px; | ||||||
|  | 	line-height:normal; | ||||||
|  | } | ||||||
|  | input[type=radio] { | ||||||
|  | 	display: none; | ||||||
|  | } | ||||||
|  | label:before { | ||||||
|  | 	content: ""; | ||||||
|  | 	display: inline-block; | ||||||
|  |  | ||||||
|  | 	width: 18px; | ||||||
|  | 	height: 18px; | ||||||
|  |  | ||||||
|  | 	margin-right: 10px; | ||||||
|  | 	position: absolute; | ||||||
|  | 	left: 0; | ||||||
|  | 	bottom: 1px; | ||||||
|  | 	background-color:#e0e0e0; | ||||||
|  | 	box-shadow: inset 0px 2px 2px 0px rgba(0, 0, 0, .3), 0px 1px 0px 0px rgba(255, 255, 255, .8); | ||||||
|  | } | ||||||
|  | .radio label:before { | ||||||
|  | 	border-radius: 8px; | ||||||
|  | } | ||||||
|  | input[type=radio]:checked + label:before { | ||||||
|  | 	content: "\2022"; | ||||||
|  | 	color: #f3f3f3; | ||||||
|  | 	font-size: 30px; | ||||||
|  | 	text-align: center; | ||||||
|  | 	line-height: 18px; | ||||||
|  | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | good radio button and checkbox | ||||||
|  | http://dimox.name/custom-checkboxes-and-radio-buttons-using-css-only/ | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | #config-menu { | ||||||
|  | 	position:absolute; | ||||||
|  | 	display:inline-block; | ||||||
|  | } | ||||||
|  | #config-menu ul | ||||||
|  | { | ||||||
|  | 	list-style-type:none !important; | ||||||
|  | 	margin:0; | ||||||
|  | 	padding:0; | ||||||
|  | 	border:1px solid gray; | ||||||
|  | 	box-shadow:2px 2px 5px rgba(0,0,0,.4); | ||||||
|  | 	border-radius:0 4px 4px 4px; | ||||||
|  | 	overflow:hidden; | ||||||
|  | 	/* width:80px; */ | ||||||
|  | 	z-index:99; | ||||||
|  | 	border-left-width:3px; | ||||||
|  | 	background-color:white; | ||||||
|  | } | ||||||
|  | #config-menu li { | ||||||
|  | 	padding:6px !important; | ||||||
|  | 	line-height:110%; | ||||||
|  | } | ||||||
|  | #config-menu li:hover { | ||||||
|  | 	background:#f0f0f0; | ||||||
|  | 	cursor:pointer; | ||||||
|  | } | ||||||
|  | #config-menu .menu-cog { | ||||||
|  | 	display:inline-block; | ||||||
|  | 	color:#337ab7; | ||||||
|  | 	padding:4px; | ||||||
|  | 	border:1px solid gray; | ||||||
|  | 	border-left-width:3px; | ||||||
|  | 	border-bottom:none; | ||||||
|  | 	margin-bottom:-1px; | ||||||
|  | 	z-index:100; | ||||||
|  | 	background-color:white; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | span.top-button { | ||||||
|  | 	font-weight: bold; | ||||||
|  | 	padding: 10px 18px; | ||||||
|  | 	color: white; | ||||||
|  | 	background-color: #337ab7; | ||||||
|  | 	border: 0; | ||||||
|  | 	text-shadow: 1px 1px 2px black; | ||||||
|  | 	cursor: pointer; | ||||||
|  | 	box-shadow: 0 4px 8px rgba(0,0,0,.3); | ||||||
|  | 	text-transform: uppercase; | ||||||
|  | 	font-family: Helvetica,Impact,fantasy; | ||||||
|  | 	font-size: 70%; | ||||||
|  | 	margin-right: 12px; | ||||||
|  | } | ||||||
|  | span.top-button:hover { | ||||||
|  | 	opacity:.9; | ||||||
|  | } | ||||||
|  | span.top-button::before { | ||||||
|  | 	font-size:180%; | ||||||
|  |     display:inline-block; | ||||||
|  |     top:3px; | ||||||
|  |     position:relative; | ||||||
|  |     left:-8px; | ||||||
|  |     padding:0; | ||||||
|  |     margin:0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .noty_bar { | ||||||
|  | 	box-shadow:3px 3px 3px rgba(0,0,0,.5); | ||||||
|  | } | ||||||
| @@ -1,10 +1,207 @@ | |||||||
| /* http://www.drivermarket.net/2015/12/nokia-lumia-640-lte-usb-driver-for.html */ |  | ||||||
| html { | html { | ||||||
| 	background:#ddd; | 	background:#ddd; | ||||||
| 	margin:0; | 	margin:0; | ||||||
| 	height:100%; | 	height:100%; | ||||||
|  | 	width:100%; | ||||||
| 	overflow:hidden; | 	overflow:hidden; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | div.menu { | ||||||
|  | 	box-sizing:border-box; | ||||||
|  | 	top:0; | ||||||
|  | 	left:20px; | ||||||
|  | 	width:250px; | ||||||
|  | 	height:100%; | ||||||
|  | 	padding:72px 0 0 0; | ||||||
|  | 	position:fixed; | ||||||
|  | 	box-shadow:-7px 0px 10px 1px rgba(0,0,0,0.65); | ||||||
|  | 	border-left:1px solid #222; | ||||||
|  | 	background-color:#eee; | ||||||
|  | 	font-family: "Helvetica Neue",Helvetica,Arial,sans-serif; | ||||||
|  | 	font-size: 90%; | ||||||
|  | } | ||||||
|  | div.menu li { | ||||||
|  | 	padding:10px 0 10px 5px;	/* 5px 0 5px 10px; */ | ||||||
|  | } | ||||||
|  | ul.menu li a { | ||||||
|  | 	color:#337ab7; | ||||||
|  | 	text-decoration:none; | ||||||
|  | 	display:inline-block; | ||||||
|  | 	margin-left:10px; | ||||||
|  | } | ||||||
|  | ul.menu li a:hover span { | ||||||
|  | 	color:gray; | ||||||
|  | } | ||||||
|  | ul.menu a.sel span { | ||||||
|  | 	color:black; | ||||||
|  | } | ||||||
|  | ul.menu a:active span { | ||||||
|  | 	color:red !important; | ||||||
|  | 	/*transition: width 2s, height 2s, color 2s, transform 2s;*/ | ||||||
|  | } | ||||||
|  | ul.menu li span[class*="icon-"] { | ||||||
|  | 	display:inline-block; | ||||||
|  | 	font-size:120%; | ||||||
|  | 	margin-left:-10px; | ||||||
|  | 	vertical-align:middle; | ||||||
|  | } | ||||||
|  | ul.menu li span.empty:before { | ||||||
|  | 	content:' '; | ||||||
|  | 	font-size:120%; | ||||||
|  | } | ||||||
|  | ul.menu li span.empty { | ||||||
|  | 	display:inline-block; | ||||||
|  | 	margin-right:14px; | ||||||
|  | } | ||||||
|  | ul.menu li span.mtxt { | ||||||
|  | 	margin-left:15px; | ||||||
|  | 	display:inline-block; | ||||||
|  | 	width:150px; | ||||||
|  | 	vertical-align: middle; | ||||||
|  | } | ||||||
|  | #menu { | ||||||
|  | 	height:100%; | ||||||
|  | 	overflow-y:auto; | ||||||
|  | } | ||||||
|  | main { | ||||||
|  | 	box-sizing:border-box; | ||||||
|  | 	top:0; | ||||||
|  | 	right:20px; | ||||||
|  | 	left:10px; | ||||||
|  | 	height:100%; | ||||||
|  | 	padding:72px 0 0 0; | ||||||
|  | 	margin-left:270px; | ||||||
|  | 	position:absolute; | ||||||
|  | 	background-color:white; | ||||||
|  | 	box-shadow:7px 0px 10px 1px rgba(0,0,0,0.65); | ||||||
|  | 	border-right:1px solid #222; | ||||||
|  | } | ||||||
|  | .closer { | ||||||
|  | 	height:100%; | ||||||
|  | 	position:absolute; | ||||||
|  | 	width:10px; | ||||||
|  | 	right:-11px; | ||||||
|  | 	top:0; | ||||||
|  | 	line-height:100%; | ||||||
|  | 	text-align:center; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	border:1px solid silver; | ||||||
|  | 	border-width:0 1px; | ||||||
|  | 	background:#eaeaea url(data:image/gif;base64,R0lGODlhFAAJAJEAAAAAAP///////wAAACH5BAEAAAIALAAAAAAUAAkAAAIdlC+Ain3ADHQNxjQpztJSy23h45HjEpYahq7L6xQAOw==) no-repeat -1px 50%; | ||||||
|  | 	cursor:pointer; | ||||||
|  | 	z-index:1000; | ||||||
|  | } | ||||||
|  | header { | ||||||
|  | 	position:absolute; | ||||||
|  | 	width:100%; | ||||||
|  | 	top:0; | ||||||
|  | 	height:72px; | ||||||
|  | 	overflow:hidden; | ||||||
|  | } | ||||||
|  | .header { | ||||||
|  | 	border-bottom: 5px solid #0F83A0; | ||||||
|  | 	background-color:white; | ||||||
|  | 	margin:0 21px 0; | ||||||
|  | 	padding-top: 15px; | ||||||
|  | 	height:52px; | ||||||
|  | 	background-image: url(/images/main-menu-bg.png); | ||||||
|  | 	background-repeat: repeat-x; | ||||||
|  | 	background-position-y: 15px; | ||||||
|  | } | ||||||
|  | .header ul { | ||||||
|  | 	height: 52px; | ||||||
|  | 	margin: 0; | ||||||
|  | 	padding: 0; | ||||||
|  | 	font-style: normal; | ||||||
|  | 	font-weight: normal; | ||||||
|  | 	font-size: 11px; | ||||||
|  | 	line-height: normal; | ||||||
|  | 	font-family: Verdana, Geneva, sans-serif; | ||||||
|  | 	overflow: hidden; | ||||||
|  | } | ||||||
|  | .header li { | ||||||
|  | 	position: relative; | ||||||
|  | 	display: inline-block; | ||||||
|  | 	float: left; | ||||||
|  | 	border-right:1px solid #222; | ||||||
|  | 	height: 47px; | ||||||
|  | 	margin-top:5px; | ||||||
|  | } | ||||||
|  | .header li.mhome { | ||||||
|  | 	border: 0; | ||||||
|  | 	margin-top: 0; | ||||||
|  | 	height: 52px; | ||||||
|  | 	width: 55px; | ||||||
|  | } | ||||||
|  | .header li.mhome a { | ||||||
|  | 	height: 52px; | ||||||
|  | 	border-left: 0 none; | ||||||
|  | 	text-indent: -9999px; | ||||||
|  | 	background-color: #0F83A0; | ||||||
|  | 	background-image: url(/images/home.png); | ||||||
|  | 	background-repeat: no-repeat; | ||||||
|  | 	background-position: 50% 9px; | ||||||
|  | 	margin-top:0 !important; | ||||||
|  | 	margin-left:10px; | ||||||
|  | } | ||||||
|  | .header li a { | ||||||
|  | 	display: block; | ||||||
|  | 	line-height: 45px; | ||||||
|  | 	height: 45px; | ||||||
|  | 	text-decoration: none; | ||||||
|  | 	color: #D5D5D5; | ||||||
|  | 	padding: 0 15px; | ||||||
|  | 	text-shadow: 0 1px 1px black; | ||||||
|  | 	border-left: 1px solid #383838; | ||||||
|  | 	text-transform: uppercase; | ||||||
|  | } | ||||||
|  | .header #title { | ||||||
|  | 	right:10px; | ||||||
|  | 	position:absolute; | ||||||
|  | 	color: white; | ||||||
|  | 	margin: 18px 18px 0 0; | ||||||
|  | 	font-size: 120%; | ||||||
|  | 	font-style: italic; | ||||||
|  | } | ||||||
|  | .header li:last-child { | ||||||
|  | 	border-right:none; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .main { | ||||||
|  | 	height:100%; | ||||||
|  | 	overflow:auto; | ||||||
|  | } | ||||||
|  | #content { | ||||||
|  | 	padding:20px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .gadget .menu { | ||||||
|  | 	width:82px;	/* 12px; */ | ||||||
|  | } | ||||||
|  | .gadget .menu ul { | ||||||
|  | 	/*display:none;*/ | ||||||
|  | } | ||||||
|  | .gadget main { | ||||||
|  | 	margin-left:92px; | ||||||
|  | } | ||||||
|  | .gadget .closer { | ||||||
|  | 	/* border-left:1px solid #222; */ | ||||||
|  | 	right:0; | ||||||
|  | 	background-position:-9px 50%; | ||||||
|  | } | ||||||
|  | .gadget ul.menu span.mtxt { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | .gadget #menu { | ||||||
|  | 	width:70px; | ||||||
|  | 	overflow-x:hidden; | ||||||
|  | } | ||||||
|  | #menu ul { | ||||||
|  | 	padding:10px; | ||||||
|  | 	margin-right:10px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* | ||||||
| body { | body { | ||||||
| 	border:1px solid #222; | 	border:1px solid #222; | ||||||
| 	border-width:0 1px; | 	border-width:0 1px; | ||||||
| @@ -14,13 +211,20 @@ body { | |||||||
| 	-webkit-box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | 	-webkit-box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | ||||||
| 	-moz-box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | 	-moz-box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | ||||||
| 	box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | 	box-shadow: 0px 0px 20px 5px rgba(0,0,0,0.65); | ||||||
|  |  | ||||||
| } | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | main { | ||||||
|  | 	box-sizing:border-box; | ||||||
|  | 	padding:100px 0 0 0; | ||||||
|  | } | ||||||
| #content { | #content { | ||||||
| 	padding:10px 20px; | 	padding:10px 20px; | ||||||
| } | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* | ||||||
| ul {margin:0;padding:0;} | ul {margin:0;padding:0;} | ||||||
| #nav { | #nav { | ||||||
| 	background-image: url(/images/main-menu-bg.png); | 	background-image: url(/images/main-menu-bg.png); | ||||||
| @@ -38,6 +242,7 @@ ul {margin:0;padding:0;} | |||||||
| 	font-size: 11px; | 	font-size: 11px; | ||||||
| 	line-height: normal; | 	line-height: normal; | ||||||
| 	font-family: Verdana, Geneva, sans-serif; | 	font-family: Verdana, Geneva, sans-serif; | ||||||
|  | 	overflow:hidden; | ||||||
| } | } | ||||||
| #nav li { | #nav li { | ||||||
| 	position: relative; | 	position: relative; | ||||||
| @@ -98,7 +303,9 @@ ul.menu a { | |||||||
| ul.menu a.sel { | ul.menu a.sel { | ||||||
| 	color:black; | 	color:black; | ||||||
| } | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* | ||||||
| #content a { | #content a { | ||||||
| 	color:#337ab7; | 	color:#337ab7; | ||||||
|     text-decoration:underline; |     text-decoration:underline; | ||||||
| @@ -112,9 +319,9 @@ div#menu { | |||||||
| 	top: 0; | 	top: 0; | ||||||
| 	bottom: 0;  | 	bottom: 0;  | ||||||
| 	left: 0; | 	left: 0; | ||||||
| 	width: 250px; /* Width of navigation frame */ | 	width: 250px; | ||||||
| 	height: 100%; | 	height: 100%; | ||||||
| 	overflow: hidden; /* Disables scrollbars on the navigation frame. To enable scrollbars, change "hidden" to "scroll" */ | 	overflow: hidden; | ||||||
| 	background: #eee; | 	background: #eee; | ||||||
| 	margin-bottom:-100px; | 	margin-bottom:-100px; | ||||||
| } | } | ||||||
| @@ -122,12 +329,12 @@ div#menu { | |||||||
| div#content { | div#content { | ||||||
| 	position: absolute; | 	position: absolute; | ||||||
| 	top: 74px; | 	top: 74px; | ||||||
| 	left: 270px; /* Set this to the width of the navigation frame */ | 	left: 270px; | ||||||
| 	right: 23px; | 	right: 23px; | ||||||
| 	bottom: 0; | 	bottom: 0; | ||||||
| 	overflow: auto;  | 	overflow: auto;  | ||||||
| } | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  |  | ||||||
| .log { | .log { | ||||||
| @@ -170,7 +377,7 @@ table tbody.error { | |||||||
| 	color:white; | 	color:white; | ||||||
| 	padding:10px 20px; | 	padding:10px 20px; | ||||||
| } | } | ||||||
| thead td { | thead td, thead th { | ||||||
| 	font-weight:bold; | 	font-weight:bold; | ||||||
| } | } | ||||||
| .tfill thead td, td { | .tfill thead td, td { | ||||||
| @@ -185,13 +392,22 @@ thead td:first-child, td:first-child { | |||||||
| 	text-align: left; | 	text-align: left; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | .tsimple { | ||||||
|  | 	table-layout:fixed; | ||||||
|  |   border-collapse:collapse; | ||||||
|  |   width:100%; | ||||||
|  | } | ||||||
|  | .tsimple thead th, | ||||||
| .tsimple thead td { | .tsimple thead td { | ||||||
| 	border-bottom:3px solid #337ab7; | 	border-bottom:3px solid #337ab7; | ||||||
| 	padding:10px 20px; | 	padding:10px; | ||||||
|  | 	text-align:left; | ||||||
| } | } | ||||||
| .tsimple tbody td { | .tsimple tbody td { | ||||||
| 	padding:10px 20px; | 	padding:10px; | ||||||
| 	border-bottom:1px solid #f0f0f0; | 	border-bottom:1px solid #f0f0f0; | ||||||
|  | 	overflow:hidden; | ||||||
|  | 	text-overflow:ellipsis; | ||||||
| } | } | ||||||
| .tsimple tbody tr:nth-child(2n){ | .tsimple tbody tr:nth-child(2n){ | ||||||
| 	background-color: #fafafa; | 	background-color: #fafafa; | ||||||
| @@ -202,30 +418,147 @@ thead td:first-child, td:first-child { | |||||||
| .tsimple td.txtright { | .tsimple td.txtright { | ||||||
| 	text-align:right; | 	text-align:right; | ||||||
| } | } | ||||||
|  | .tsimple td input[type="button"] { | ||||||
|  | 	font-size:86%; | ||||||
|  | 	padding:2px 4px; | ||||||
|  | } | ||||||
| .tsimple .nth0 + .nth1 td, .tsimple .nth1 + .nth0 td { | .tsimple .nth0 + .nth1 td, .tsimple .nth1 + .nth0 td { | ||||||
| 	border-top:2px solid #e0e0e0; | 	border-top:2px solid #d1e7f3;	/* #aad1e8; */	/* #79b8cf; */ | ||||||
|  | } | ||||||
|  | .tsimple tr.sel td { | ||||||
|  | 	background-color:#fefec0; | ||||||
|  | } | ||||||
|  | .wordwreck { | ||||||
|  | 	word-wrap:break-word; | ||||||
|  | } | ||||||
|  | .wdt-30 { | ||||||
|  | 	width:30px; | ||||||
|  | } | ||||||
|  | .wdt-40 { | ||||||
|  | 	width:40px; | ||||||
|  | } | ||||||
|  | .wdt-50 { | ||||||
|  | 	width:50px; | ||||||
|  | } | ||||||
|  | .wdt-70 { | ||||||
|  | 	width:70px; | ||||||
|  | } | ||||||
|  | .wdt-80 { | ||||||
|  | 	width:80px; | ||||||
|  | } | ||||||
|  | .wdt-100 { | ||||||
|  | 	width:100px; | ||||||
|  | } | ||||||
|  | .wdt-120 { | ||||||
|  | 	width:120px; | ||||||
|  | } | ||||||
|  | .wdt-130 { | ||||||
|  | 	width:130px; | ||||||
|  | } | ||||||
|  | .wdt-140 { | ||||||
|  | 	width:140px; | ||||||
|  | } | ||||||
|  | .wdt-150 { | ||||||
|  | 	width:150px; | ||||||
|  | } | ||||||
|  | .wdt-200 { | ||||||
|  | 	width:200px; | ||||||
|  | } | ||||||
|  | .wdt-200.elastic | ||||||
|  | { | ||||||
|  | 	min-width:200px; | ||||||
|  | 	width:20%; | ||||||
|  | } | ||||||
|  | .wdt-250 { | ||||||
|  | 	width:250px; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /* .tsimple [class^="icon-"] */ | ||||||
| td.ops span.icon-cnt { | td.ops span.icon-cnt, | ||||||
|  | .icon-cancel, | ||||||
|  | .icon-cog, | ||||||
|  | .icon-arrows-cw, | ||||||
|  | .icon-download { | ||||||
| 	color:gray; | 	color:gray; | ||||||
| 	position:relative; | 	position:relative; | ||||||
| 	text-align:center; | 	text-align:center; | ||||||
| 	text-shadow:2px 2px 2px rgba(0,0,0,0.2); | 	text-shadow:2px 2px 2px rgba(0,0,0,0.2); | ||||||
|  | } | ||||||
| /* 	display:inline-block; | .wdt5 { | ||||||
| 	background-color:#f7f7f7; | 	width:50px; | ||||||
| 	background-image:linear-gradient(top, #f7f7f7, #e7e7e7); | } | ||||||
| 	width:32px; | span.icon-cnt:hover .icon-play, | ||||||
| 	height:32px; | span.icon-cnt:hover .icon-stop, | ||||||
| 	line-height:32px; | .icon-cancel:hover, | ||||||
| 	border-radius:50%; | .icon-cog:hover, | ||||||
| 	box-shadow:0px 3px 8px #aaa, inset 0px 2px 3px #fff; | .icon-arrows-cw:hover, | ||||||
|  */} | .icon-download:hover { | ||||||
| td.ops span.icon-cnt:hover .icon-play { |  | ||||||
| 	color:black; | 	color:black; | ||||||
| 	cursor:pointer; | 	cursor:pointer; | ||||||
| } | } | ||||||
|  | span.icon-desktop { | ||||||
|  | 	color:gray; | ||||||
|  | 	text-shadow:2px 2px 2px rgba(0,0,0,0.2); | ||||||
|  | } | ||||||
|  | span.icon-desktop:hover { | ||||||
|  | 	color:black; | ||||||
|  | 	cursor:pointer; | ||||||
|  | } | ||||||
|  | span.icon-spin6 { | ||||||
|  | 	margin:-1px 0 0 -1px; | ||||||
|  | 	text-shadow:none; | ||||||
|  | 	color:black; | ||||||
|  | } | ||||||
|  | tr.busy .op-settings span,	/*.icon-cog*/ | ||||||
|  | tr.busy .op-reboot span,	/*.icon-cancel,*/ | ||||||
|  | tr.busy .op-del span,	/*.icon-desktop,*/ | ||||||
|  | tr.busy .op-update span,	/*.icon-desktop,*/ | ||||||
|  | tr.busy .op-vnc span {	/*.icon-arrows-cw {*/ | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | td.jstatus, | ||||||
|  | td.small { | ||||||
|  | 	font-size:small; | ||||||
|  | } | ||||||
|  | tr.busy .jstatus { | ||||||
|  | 	background-color:Lavender !important; | ||||||
|  | } | ||||||
|  | tr.s-off span.icon-desktop, | ||||||
|  | tr.s-off span.icon-arrows-cw { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | tr.s-on td.jstatus { | ||||||
|  | 	background-color:Honeydew; | ||||||
|  | } | ||||||
|  | tr.s-off td.jstatus { | ||||||
|  | 	background-color:Seashell; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tr.maintenance .ops span, | ||||||
|  | tr.maintenance .op-settings span, | ||||||
|  | tr.maintenance .op-reboot span, | ||||||
|  | tr.maintenance .op-vnc span { | ||||||
|  | 	display:none; | ||||||
|  | } | ||||||
|  | tr.maintenance td { | ||||||
|  | 	color:gray; | ||||||
|  | } | ||||||
|  | tr.maintenance td.jstatus { | ||||||
|  | 	background-color:#f0f0f0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | tr.busy.maintenance .ops span { | ||||||
|  | 	display:inline-block !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tsimple .icon-lock { | ||||||
|  | 	color:silver; | ||||||
|  | 	cursor:default; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .nowrap { | ||||||
|  | 	white-space:nowrap; | ||||||
|  | } | ||||||
|  |  | ||||||
| /* td.ops span.icon-play:before { | /* td.ops span.icon-play:before { | ||||||
| 	margin-left:.2em; | 	margin-left:.2em; | ||||||
| @@ -233,7 +566,7 @@ td.ops span.icon-cnt:hover .icon-play { | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| #content p { | #content p { | ||||||
| 	margin:20px 0; | 	margin:16px 0; | ||||||
| } | } | ||||||
|  |  | ||||||
| #content ul { | #content ul { | ||||||
| @@ -249,3 +582,370 @@ td.ops span.icon-cnt:hover .icon-play { | |||||||
| 	color:#337ab7; | 	color:#337ab7; | ||||||
| 	margin:10px 0 20px 0; | 	margin:10px 0 20px 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | dialog { | ||||||
|  | 	display:none; | ||||||
|  | /* | ||||||
|  | 	width:800px; | ||||||
|  | 	height:630px; | ||||||
|  | */ | ||||||
|  | 	padding:0; | ||||||
|  | 	border:1px solid rgba(0,0,0,.3); | ||||||
|  | 	border-radius:2px; | ||||||
|  | 	box-shadow:0 5px 20px black; | ||||||
|  | 	/*top:20%;*/ | ||||||
|  | 	background-color:#f0f0f0; | ||||||
|  | } | ||||||
|  | dialog::backdrop, | ||||||
|  | #backdrop { | ||||||
|  | 	position:fixed; | ||||||
|  | 	top:0; | ||||||
|  | 	left:0; | ||||||
|  | 	right:0; | ||||||
|  | 	bottom:0; | ||||||
|  | 	width:100%; | ||||||
|  | 	height:100%; | ||||||
|  | 	background: rgba(0,0,0,.5); | ||||||
|  | 	-webkit-backdrop-filter:blur(5px); | ||||||
|  | 	z-index:1000; | ||||||
|  | } | ||||||
|  | dialog { | ||||||
|  | 	/*text-align:center;*/ | ||||||
|  | 	font-family: 'trebuchet ms', 'lucida grande', 'lucida sans unicode', arial, helvetica, sans-serif; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  | .dialog-close:before { | ||||||
|  | 	font-family:"clonos"; | ||||||
|  | 	content:'\e820'; | ||||||
|  | 	speak: none; | ||||||
|  | 	display: inline-block; | ||||||
|  | 	width: 1em; | ||||||
|  | 	line-height: 1em; | ||||||
|  | 	font-variant: normal; | ||||||
|  | 	text-transform: none; | ||||||
|  | 	margin:2px 6px; | ||||||
|  | } | ||||||
|  | dialog .panel { | ||||||
|  | 	background-color:white; | ||||||
|  | } | ||||||
|  | dialog:not(input), | ||||||
|  | dialog:not(textarea) { | ||||||
|  | 	user-select:none; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .window-box { | ||||||
|  | 	/*padding:0 30px 30px 30px;*/ | ||||||
|  | 	border:1px solid #337ab7; | ||||||
|  | 	border-width:1px 1px 1px 6px; | ||||||
|  | } | ||||||
|  | .window-box .close-but { | ||||||
|  | 	position:absolute; | ||||||
|  | 	left:100%; | ||||||
|  | 	height:30px; | ||||||
|  | 	width:32px; | ||||||
|  | 	margin-left:-32px; | ||||||
|  | 	font-size:30px; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	cursor:pointer; | ||||||
|  | 	background-color:#f3f3f3; | ||||||
|  | 	text-align:center; | ||||||
|  | 	line-height:30px; | ||||||
|  | } | ||||||
|  | .window-box .window-content { | ||||||
|  | 	min-height:300px; | ||||||
|  | 	max-height:600px; | ||||||
|  | 	padding:10px 30px; | ||||||
|  | } | ||||||
|  | .window-box .window-content p { | ||||||
|  | 	margin-bottom:10px; | ||||||
|  | } | ||||||
|  | .window-box .buttons { | ||||||
|  | 	background-color:#e0e0e0; | ||||||
|  | 	border-top:1px solid silver; | ||||||
|  | 	margin-top:4px; | ||||||
|  | 	height:60px; | ||||||
|  | 	padding:0 10px; | ||||||
|  | 	text-align:center; | ||||||
|  | } | ||||||
|  | .buttons .button { | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	padding:10px 18px; | ||||||
|  | 	color:white; | ||||||
|  | 	background-color:#337ab7; | ||||||
|  | 	border:0; | ||||||
|  | 	margin-left:10px; | ||||||
|  | 	margin-top:10px; | ||||||
|  | 	text-shadow:1px 1px 2px black; | ||||||
|  | 	cursor:pointer; | ||||||
|  | 	box-shadow:0 4px 8px rgba(0,0,0,.3); | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | 	font-family:Helvetica,Impact,fantasy; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  | .buttons .button:hover { | ||||||
|  | 	opacity:.9; | ||||||
|  | } | ||||||
|  | .buttons .button.red { | ||||||
|  | 	background-color:coral; | ||||||
|  | 	text-shadow:1px 1px 2px black; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .window-box h1 { | ||||||
|  | 	color:gray; | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | 	font-size:90%; | ||||||
|  | 	padding:0 30px; | ||||||
|  | 	margin: 10px 0 0 0; | ||||||
|  | 	font-family: serif; | ||||||
|  | } | ||||||
|  | .window-box h2 { | ||||||
|  | 	color:gray; | ||||||
|  | 	padding:0 30px; | ||||||
|  | 	margin:0; | ||||||
|  | 	font-size:220%; | ||||||
|  | 	font-weight:normal; | ||||||
|  | } | ||||||
|  | .window-box h3 { | ||||||
|  | 	border-bottom:3px solid #387db6; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	font-size:120%; | ||||||
|  | 	margin:10px 0; | ||||||
|  | } | ||||||
|  | .window-box h3 small { | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:80%; | ||||||
|  | } | ||||||
|  | .window-box .mrow { | ||||||
|  | 	margin:2px 0 2px 10px; | ||||||
|  | 	border-bottom:1px dotted silver; | ||||||
|  | } | ||||||
|  | .window-box .mrow small { | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:80%; | ||||||
|  | } | ||||||
|  | .window-box .mrow .size { | ||||||
|  | 	float:right; | ||||||
|  | 	font-size:80%; | ||||||
|  | } | ||||||
|  | .window-box .scrolled { | ||||||
|  | 	overflow-y:auto; | ||||||
|  | 	max-height:500px; | ||||||
|  | } | ||||||
|  | .window-box .mrow.installed, | ||||||
|  | .window-box .mrow.installed small { | ||||||
|  | 	color:silver; | ||||||
|  | } | ||||||
|  | form.win .field-name { | ||||||
|  | 	display:block; | ||||||
|  | 	text-transform:uppercase; | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:90%; | ||||||
|  | 	font-weight:bold; | ||||||
|  | 	margin-bottom:2px; | ||||||
|  | } | ||||||
|  | form.win input[type='text'], | ||||||
|  | form.win textarea, | ||||||
|  | form.win select { | ||||||
|  | 	width:400px; | ||||||
|  | } | ||||||
|  | form.win fieldset { | ||||||
|  | 	border: 1px solid gray; | ||||||
|  |     padding: 10px; | ||||||
|  |     margin-bottom: 20px; | ||||||
|  | } | ||||||
|  | form.win legend { | ||||||
|  | 	padding:0 10px; | ||||||
|  | } | ||||||
|  | form.win input[type="text"]:required, | ||||||
|  | form.win input[type="password"]:required { | ||||||
|  | 	background-color:#fef7f7; | ||||||
|  | 	border:1px solid #d7a0a0; | ||||||
|  | } | ||||||
|  | form.win input[type="text"]:valid, | ||||||
|  | form.win input[type="password"]:valid { | ||||||
|  | 	border:1px solid green; | ||||||
|  | 	background-color:Honeydew; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | input[type=checkbox]:checked + label, | ||||||
|  | input[type=radio]:checked + label { | ||||||
|  | 	color:#337ab7; | ||||||
|  | } | ||||||
|  | input.inline + label { | ||||||
|  | 	margin-right:30px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | .cbsd-str { | ||||||
|  | 	color:gray; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  | .cbsd-cmd { | ||||||
|  | 	color:darkred; | ||||||
|  | 	font-size:120%; | ||||||
|  | } | ||||||
|  | .cbsd-lnch { | ||||||
|  | 	color:#337ab7; | ||||||
|  | 	font-size:90%; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .link { | ||||||
|  | 	color:#337ab7; | ||||||
|  | 	text-decoration:underline; | ||||||
|  | } | ||||||
|  | .link:hover { | ||||||
|  | 	text-decoration:none; | ||||||
|  | 	cursor:pointer; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | td.progress { | ||||||
|  | 	background-color:LemonChiffon; | ||||||
|  | } | ||||||
|  | td.ok { | ||||||
|  | 	background-color:Honeydew; | ||||||
|  | } | ||||||
|  | td.error { | ||||||
|  | 	background-color:Seashell; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .tasklog { | ||||||
|  | 	width:60%; | ||||||
|  | 	max-width:60%; | ||||||
|  | 	margin-left:-30% !important; | ||||||
|  | 	left:50%; | ||||||
|  | } | ||||||
|  | .tasklog .window-content { | ||||||
|  | 	user-select:auto; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | input[type=checkbox] { | ||||||
|  |   display: none; | ||||||
|  | } | ||||||
|  | .checkbox label:before { | ||||||
|  |   border-radius: 3px; | ||||||
|  | } | ||||||
|  | input[type=checkbox]:checked + label:before { | ||||||
|  |   content: "\2713"; | ||||||
|  |   text-shadow: 1px 1px 1px rgba(0, 0, 0, .2); | ||||||
|  |   font-size: 15px; | ||||||
|  |   color: #f3f3f3; | ||||||
|  |   text-align: center; | ||||||
|  |     line-height: 15px; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | label { | ||||||
|  | 	display: inline-block; | ||||||
|  | 	cursor: pointer; | ||||||
|  | 	position: relative; | ||||||
|  | 	padding-left: 25px; | ||||||
|  | 	margin-right: 15px; | ||||||
|  | 	line-height:normal; | ||||||
|  | } | ||||||
|  | input[type=radio] { | ||||||
|  | 	display: none; | ||||||
|  | } | ||||||
|  | label:before { | ||||||
|  | 	content: ""; | ||||||
|  | 	display: inline-block; | ||||||
|  |  | ||||||
|  | 	width: 18px; | ||||||
|  | 	height: 18px; | ||||||
|  |  | ||||||
|  | 	margin-right: 10px; | ||||||
|  | 	position: absolute; | ||||||
|  | 	left: 0; | ||||||
|  | 	bottom: 1px; | ||||||
|  | 	background-color:#e0e0e0; | ||||||
|  | 	box-shadow: inset 0px 2px 2px 0px rgba(0, 0, 0, .3), 0px 1px 0px 0px rgba(255, 255, 255, .8); | ||||||
|  | } | ||||||
|  | .radio label:before { | ||||||
|  | 	border-radius: 8px; | ||||||
|  | } | ||||||
|  | input[type=radio]:checked + label:before { | ||||||
|  | 	content: "\2022"; | ||||||
|  | 	color: #f3f3f3; | ||||||
|  | 	font-size: 30px; | ||||||
|  | 	text-align: center; | ||||||
|  | 	line-height: 18px; | ||||||
|  | } | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | good radio button and checkbox | ||||||
|  | http://dimox.name/custom-checkboxes-and-radio-buttons-using-css-only/ | ||||||
|  | */ | ||||||
|  |  | ||||||
|  | #config-menu { | ||||||
|  | 	position:absolute; | ||||||
|  | 	display:inline-block; | ||||||
|  | } | ||||||
|  | #config-menu ul | ||||||
|  | { | ||||||
|  | 	list-style-type:none !important; | ||||||
|  | 	margin:0; | ||||||
|  | 	padding:0; | ||||||
|  | 	border:1px solid gray; | ||||||
|  | 	box-shadow:2px 2px 5px rgba(0,0,0,.4); | ||||||
|  | 	border-radius:0 4px 4px 4px; | ||||||
|  | 	overflow:hidden; | ||||||
|  | 	/* width:80px; */ | ||||||
|  | 	z-index:99; | ||||||
|  | 	border-left-width:3px; | ||||||
|  | 	background-color:white; | ||||||
|  | } | ||||||
|  | #config-menu li { | ||||||
|  | 	padding:6px !important; | ||||||
|  | 	line-height:110%; | ||||||
|  | } | ||||||
|  | #config-menu li:hover { | ||||||
|  | 	background:#f0f0f0; | ||||||
|  | 	cursor:pointer; | ||||||
|  | } | ||||||
|  | #config-menu .menu-cog { | ||||||
|  | 	display:inline-block; | ||||||
|  | 	color:#337ab7; | ||||||
|  | 	padding:4px; | ||||||
|  | 	border:1px solid gray; | ||||||
|  | 	border-left-width:3px; | ||||||
|  | 	border-bottom:none; | ||||||
|  | 	margin-bottom:-1px; | ||||||
|  | 	z-index:100; | ||||||
|  | 	background-color:white; | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  | span.top-button { | ||||||
|  | 	font-weight: bold; | ||||||
|  | 	padding: 10px 18px; | ||||||
|  | 	color: white; | ||||||
|  | 	background-color: #337ab7; | ||||||
|  | 	border: 0; | ||||||
|  | 	text-shadow: 1px 1px 2px black; | ||||||
|  | 	cursor: pointer; | ||||||
|  | 	box-shadow: 0 4px 8px rgba(0,0,0,.3); | ||||||
|  | 	text-transform: uppercase; | ||||||
|  | 	font-family: Helvetica,Impact,fantasy; | ||||||
|  | 	font-size: 70%; | ||||||
|  | 	margin-right: 12px; | ||||||
|  | } | ||||||
|  | span.top-button:hover { | ||||||
|  | 	opacity:.9; | ||||||
|  | } | ||||||
|  | span.top-button::before { | ||||||
|  | 	font-size:180%; | ||||||
|  |     display:inline-block; | ||||||
|  |     top:3px; | ||||||
|  |     position:relative; | ||||||
|  |     left:-8px; | ||||||
|  |     padding:0; | ||||||
|  |     margin:0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | .noty_bar { | ||||||
|  | 	box-shadow:3px 3px 3px rgba(0,0,0,.5); | ||||||
|  | } | ||||||
							
								
								
									
										25
									
								
								public/dialogs/authkey.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,25 @@ | |||||||
|  | <script type="text/javascript"> | ||||||
|  | err_messages={ | ||||||
|  | 	'keyname':'<?php echo $this->translate("Can not be empty. Name must begin with a letter / a-z / and not have any special symbols: -,.=%");?>', | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <dialog id="authkey" class="window-box"> | ||||||
|  | 	<h1><?php echo $this->translate('Create Authkey');?></h1> | ||||||
|  | 	<h2><?php echo $this->translate('Settings');?></h2> | ||||||
|  | 	<form class="win" method="post" id="authkeySettings"> | ||||||
|  | 		<div class="window-content"> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Authkey name');?>:</span> | ||||||
|  | 				<input type="text" name="keyname" value="" pattern="[\x20-\x21\x23-\x26\x28-\x7F]+" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Authkey');?>:</span> | ||||||
|  | 				<textarea name="keysrc" rows="10"></textarea> | ||||||
|  | 			</p> | ||||||
|  | 		</div> | ||||||
|  | 	</form> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" /> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
							
								
								
									
										57
									
								
								public/dialogs/bhyve-new.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,57 @@ | |||||||
|  | <script type="text/javascript"> | ||||||
|  | err_messages={ | ||||||
|  | 	'vm_name':'<?php echo $this->translate("Can not be empty. Name must begin with a letter / a-z / and not have any special symbols: -,.=%");?>', | ||||||
|  | 	'vm_size':'You need type «g» char after numbers', | ||||||
|  | 	'vm_ram':'You need type «g» char after numbers', | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <dialog id="bhyve-new" class="window-box"> | ||||||
|  | 	<h1><?php echo $this->translate('Create Virtual Machine');?></h1> | ||||||
|  | 	<h2><?php echo $this->translate('Virtual Machine Settings');?></h2> | ||||||
|  | 	<form class="win" method="post" id="bhyveSettings"> | ||||||
|  | 		<div class="window-content"> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM OS profile');?>:</span> | ||||||
|  | 				<select name="vm_os_profile"> | ||||||
|  | <?php echo $this->config->os_types_create(); ?> | ||||||
|  | 				</select> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Virtual Machine name');?>:</span> | ||||||
|  | 				<input type="text" name="vm_name" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{1,}" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM Image size');?>:</span> | ||||||
|  | 				<input type="text" name="vm_size" value="" pattern="^[0-9]+g$" placeholder="10g" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM CPUs');?>:</span> | ||||||
|  | 				<input type="text" name="vm_cpus" value="" pattern="[0-9]+" placeholder="1" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM RAM');?>:</span> | ||||||
|  | 				<input type="text" name="vm_ram" value="" pattern="^[0-9]+g$" placeholder="1g" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VNC PORT');?>:</span> | ||||||
|  | 				<input type="text" name="vnc_port" value="" placeholder="0" /> | ||||||
|  | 			</p> | ||||||
|  | <!--			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('CD-ROM ISO');?>:</span> | ||||||
|  | 				<select name="cd-rom"> | ||||||
|  | 					<option value="profile">profile</option> | ||||||
|  | 				</select> | ||||||
|  | 			</p> | ||||||
|  | -->			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Net Interface');?>:</span> | ||||||
|  | 				<input type="radio" name="interface" value="auto" id="rint0" checked="checked" class="inline"><label for="rint0">auto</label></radio> | ||||||
|  | 				<input type="radio" name="interface" value="lo0" id="rint2" class="inline"><label for="rint2">lo0</label></radio> | ||||||
|  | 			</p> | ||||||
|  | 		</div> | ||||||
|  | 	</form> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" /> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
|  | <?php | ||||||
							
								
								
									
										57
									
								
								public/dialogs/bhyve-obtain.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,57 @@ | |||||||
|  | <dialog id="bhyve-obtain" class="window-box"> | ||||||
|  | 	<h1><?php echo $this->translate('Create Virtual Machine from Library');?></h1> | ||||||
|  | 	<h2><?php echo $this->translate('Virtual Machine Settings');?></h2> | ||||||
|  | 	<form class="win" method="post" id="bhyveObtSettings"> | ||||||
|  | 		<div class="window-content"> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM OS profile');?>:</span> | ||||||
|  | 				<select name="vm_os_profile"> | ||||||
|  | <?php echo $this->config->os_types_create('obtain'); ?> | ||||||
|  | 				</select> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Virtual Machine name');?>:</span> | ||||||
|  | 				<input type="text" name="vm_name" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{1,}" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM Image size');?>:</span> | ||||||
|  | 				<input type="text" name="vm_size" value="" pattern="^[0-9]+g$" placeholder="10g" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM CPUs');?>:</span> | ||||||
|  | 				<input type="text" name="vm_cpus" value="" pattern="[0-9]+" placeholder="1" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM RAM');?>:</span> | ||||||
|  | 				<input type="text" name="vm_ram" value="" pattern="^[0-9]+g$" placeholder="1g" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('IP address');?>:</span> | ||||||
|  | 				<input type="text" name="ip4_addr" value="DHCP" pattern="^DHCP$|^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/[\d]{1,3})?$" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Gateway');?>:</span> | ||||||
|  | 				<input type="text" name="gateway" value="10.0.0.1" pattern="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/[\d]{1,3})?$" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Mask');?>:</span> | ||||||
|  | 				<input type="text" name="mask" value="255.255.255.0" pattern="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/[\d]{1,3})?$" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('VM Password');?>:</span> | ||||||
|  | 				<input type="password" name="vm_password" value="cbsd" placeholder="3-20 symbols" pattern=".{3,20}" maxlength="20"></input> <small>— <?php echo $this->translate('default is');?>: «cbsd»</small> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Authkey');?>:</span> | ||||||
|  | 				<select name="vm_authkey"> | ||||||
|  | <?php echo $this->config->authkeys_list(); ?> | ||||||
|  | 				</select> | ||||||
|  | 			</p> | ||||||
|  | 		</div> | ||||||
|  | 	</form> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" /> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
|  | <?php | ||||||
							
								
								
									
										9
									
								
								public/dialogs/jail-settings-config-menu.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,9 @@ | |||||||
|  | <div id="config-menu" style="display:none;"> | ||||||
|  | 	<span class="icon-cog menu-cog"></span> | ||||||
|  | 	<ul> | ||||||
|  | 		<li class="icon-pencil" id="jddm-edit"> <?php echo $this->translate('edit');?></li> | ||||||
|  | 		<li class="icon-docs" id="jddm-clone"> <?php echo $this->translate('clone');?></li> | ||||||
|  | 		<li class="icon-gift" id="jddm-export"> <?php echo $this->translate('export');?></li> | ||||||
|  | 		<li class="icon-cubes" id="jddm-helpers"> <?php echo $this->translate('helpers');?></li> | ||||||
|  | 	</ul> | ||||||
|  | </div> | ||||||
							
								
								
									
										71
									
								
								public/dialogs/jail-settings.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,71 @@ | |||||||
|  | <script type="text/javascript"> | ||||||
|  | err_messages={ | ||||||
|  | 	'jname':'<?php echo $this->translate("Can not be empty. Name must begin with a letter / a-z / and not have any special symbols: -,.=%");?>', | ||||||
|  | 	'hostname':'<?php echo $this->translate("This field can not be empty");?>', | ||||||
|  | 	'ip':'<?php echo $this->translate("Write correct ip address, e.g: 10.0.0.2");?>', | ||||||
|  | 	'rootpass':'<?php echo $this->translate("Password can not be less than 3 symbols");?>', | ||||||
|  | 	'rootpass1':'<?php echo $this->translate("Please retype password correctly");?>', | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <dialog id="jail-settings" class="window-box"> | ||||||
|  | 	<h1><?php echo $this->translate('Create jail');?></h1> | ||||||
|  | 	<h2><?php echo $this->translate('Jail Settings');?></h2> | ||||||
|  | 	<form class="win" method="post" id="jailSettings"> | ||||||
|  | 		<div class="window-content"> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Jail name');?>:</span> | ||||||
|  | 				<input type="text" name="jname" value="" pattern="[^0-9]{1}[a-zA-Z0-9]{2,}" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Hostname');?> (FQDN):</span> | ||||||
|  | 				<input type="text" name="host_hostname" value="" required="required" /> | ||||||
|  | <!-- | ||||||
|  | 				<small class="astart-warn">— <?php echo $this->translate('available on the jail is not running');?></small> | ||||||
|  | --> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('IP address');?>:</span> | ||||||
|  | 				<input type="text" name="ip4_addr" value="DHCP" pattern="^DHCP$|^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/[\d]{1,3})?$" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Root password');?>:</span> | ||||||
|  | 				<input type="password" name="user_pw_root" value="" placeholder="3-20 symbols" pattern=".{3,20}" maxlength="20"></input> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Root password (again)');?>:</span> | ||||||
|  | 				<input type="password" name="user_pw_root_1" value="" placeholder="3-20 symbols" pattern=".{3,20}" maxlength="20"></input> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Net Interface');?>:</span> | ||||||
|  | 				<input type="radio" name="interface" value="auto" id="rint0" checked="checked" class="inline"><label for="rint0">auto</label></radio> | ||||||
|  | 				<input type="radio" name="interface" value="lo0" id="rint2" class="inline"><label for="rint2">lo0</label></radio> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Parameters');?>:</span> | ||||||
|  | 				<input type="checkbox" name="baserw" id="bwritable-id" /><label for="bwritable-id"> <?php echo $this->translate('Base writable');?>?</label> | ||||||
|  | 				<br /> | ||||||
|  | 				<input type="checkbox" name="mount_ports" id="mount-id" /><label for="mount-id"> <?php echo $this->translate('Mount');?> /usr/ports?</label> | ||||||
|  | 				<br /> | ||||||
|  | 				<input type="checkbox" name="astart" id="astart-id" /><label for="astart-id"> <?php echo $this->translate('Autostart jail at system startup');?></label> | ||||||
|  | 				<br /> | ||||||
|  | 				<input type="checkbox" name="vnet" id="vnet-id" /><label for="vnet-id"> <?php echo $this->translate('Virtual network stack (VIMAGE)');?></label> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Enabled services');?>:</span> | ||||||
|  | 				<input type="checkbox" name="serv-ftpd" value="ftpd" id="esrv0" class="inline"><label for="esrv0">ftpd</label></checkbox> | ||||||
|  | 				<input type="checkbox" name="serv-sshd" value="sshd" id="esrv1" class="inline"><label for="esrv1">sshd</label></checkbox> | ||||||
|  | 			</p> | ||||||
|  |  | ||||||
|  | 		</div> | ||||||
|  | 	</form> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" /> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
|  | <?php | ||||||
|  |  | ||||||
|  | /* | ||||||
|  | сложное правило для пароля: цифры, буквы маленькие и заглавные, плюс спецсимволы | ||||||
|  | ^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[^\w\s]).{8,20}$ | ||||||
|  | */ | ||||||
							
								
								
									
										26
									
								
								public/dialogs/media.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | |||||||
|  | <script type="text/javascript"> | ||||||
|  | err_messages={ | ||||||
|  | 	'netname':'<?php echo $this->translate("Can not be empty. Name must begin with a letter / a-z / and not have any special symbols: -,.=%");?>', | ||||||
|  | 	'network':'<?php echo $this->translate("Write something");?>', | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <dialog id="media" class="window-box"> | ||||||
|  | 	<h1><?php echo $this->translate('Add Storage Media');?></h1> | ||||||
|  | 	<h2><?php echo $this->translate('Settings');?></h2> | ||||||
|  | 	<form class="win" method="post" id="mediaSettings"> | ||||||
|  | 		<div class="window-content"> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Media name');?>:</span> | ||||||
|  | 				<input type="text" name="medianame" value="" pattern="[\x20-\x21\x23-\x26\x28-\x7F]+" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Path');?>:</span> | ||||||
|  | 				<input type="text" name="mediapath" value="" pattern=".+" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 		</div> | ||||||
|  | 	</form> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" /> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
							
								
								
									
										9
									
								
								public/dialogs/tasklog.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,9 @@ | |||||||
|  | <dialog id="tasklog" class="window-box tasklog"> | ||||||
|  | 	<h1><?php echo $this->translate('Task log');?></h1> | ||||||
|  | 	<div class="window-content"> | ||||||
|  | 		Task log here… | ||||||
|  | 	</div> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Close');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
							
								
								
									
										8
									
								
								public/dialogs/vnc-bhyve.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | <dialog id="vnc"> | ||||||
|  | 	<div class="panel" style="text-align:right;"> | ||||||
|  | 		<span onclick="clonos.dialogClose();" style="font-size:150%;font-weight:bold;cursor:pointer;"> | ||||||
|  | 			<span class="dialog-close"></span> | ||||||
|  | 		</span> | ||||||
|  | 	</div> | ||||||
|  | 	<iframe src="about:blank" id="vnc-iframe" border="0" width="1024" height="800"></iframe> | ||||||
|  | </dialog> | ||||||
							
								
								
									
										8
									
								
								public/dialogs/vnc.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,8 @@ | |||||||
|  | <dialog id="vnc"> | ||||||
|  | 	<div class="panel" style="text-align:right;"> | ||||||
|  | 		<span onclick="clonos.dialogClose();" style="font-size:150%;font-weight:bold;cursor:pointer;"> | ||||||
|  | 			<span class="dialog-close"></span> | ||||||
|  | 		</span> | ||||||
|  | 	</div> | ||||||
|  | 	<iframe src="about:blank" id="vnc-iframe" border="0" width="800" height="600"></iframe> <!-- 760 436 --> | ||||||
|  | </dialog> | ||||||
							
								
								
									
										26
									
								
								public/dialogs/vpnet.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | |||||||
|  | <script type="text/javascript"> | ||||||
|  | err_messages={ | ||||||
|  | 	'netname':'<?php echo $this->translate("Can not be empty. Name must begin with a letter / a-z / and not have any special symbols: -,.=%");?>', | ||||||
|  | 	'network':'<?php echo $this->translate("Write correct ip address, e.g: 10.0.0.2");?>', | ||||||
|  | }; | ||||||
|  | </script> | ||||||
|  | <dialog id="vpnet" class="window-box"> | ||||||
|  | 	<h1><?php echo $this->translate('Create Network');?></h1> | ||||||
|  | 	<h2><?php echo $this->translate('Settings');?></h2> | ||||||
|  | 	<form class="win" method="post" id="vpnetSettings"> | ||||||
|  | 		<div class="window-content"> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Network name');?>:</span> | ||||||
|  | 				<input type="text" name="netname" value="" pattern="[\x20-\x21\x23-\x26\x28-\x7F]+" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 			<p> | ||||||
|  | 				<span class="field-name"><?php echo $this->translate('Network');?>:</span> | ||||||
|  | 				<input type="text" name="network" value="" pattern="^(?:[0-9]{1,3}\.){3}[0-9]{1,3}(\/[\d]{1,3})?$" required="required" /> | ||||||
|  | 			</p> | ||||||
|  | 		</div> | ||||||
|  | 	</form> | ||||||
|  | 	<div class="buttons"> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Create');?>" class="button ok-but" /> | ||||||
|  | 		<input type="button" value="<?php echo $this->translate('Cancel');?>" class="button red cancel-but" /> | ||||||
|  | 	</div> | ||||||
|  | </dialog> | ||||||
							
								
								
									
										85
									
								
								public/font-old/animation.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,85 @@ | |||||||
|  | /* | ||||||
|  |    Animation example, for spinners | ||||||
|  | */ | ||||||
|  | .animate-spin { | ||||||
|  |   -moz-animation: spin 2s infinite linear; | ||||||
|  |   -o-animation: spin 2s infinite linear; | ||||||
|  |   -webkit-animation: spin 2s infinite linear; | ||||||
|  |   animation: spin 2s infinite linear; | ||||||
|  |   display: inline-block; | ||||||
|  | } | ||||||
|  | @-moz-keyframes spin { | ||||||
|  |   0% { | ||||||
|  |     -moz-transform: rotate(0deg); | ||||||
|  |     -o-transform: rotate(0deg); | ||||||
|  |     -webkit-transform: rotate(0deg); | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   100% { | ||||||
|  |     -moz-transform: rotate(359deg); | ||||||
|  |     -o-transform: rotate(359deg); | ||||||
|  |     -webkit-transform: rotate(359deg); | ||||||
|  |     transform: rotate(359deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @-webkit-keyframes spin { | ||||||
|  |   0% { | ||||||
|  |     -moz-transform: rotate(0deg); | ||||||
|  |     -o-transform: rotate(0deg); | ||||||
|  |     -webkit-transform: rotate(0deg); | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   100% { | ||||||
|  |     -moz-transform: rotate(359deg); | ||||||
|  |     -o-transform: rotate(359deg); | ||||||
|  |     -webkit-transform: rotate(359deg); | ||||||
|  |     transform: rotate(359deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @-o-keyframes spin { | ||||||
|  |   0% { | ||||||
|  |     -moz-transform: rotate(0deg); | ||||||
|  |     -o-transform: rotate(0deg); | ||||||
|  |     -webkit-transform: rotate(0deg); | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   100% { | ||||||
|  |     -moz-transform: rotate(359deg); | ||||||
|  |     -o-transform: rotate(359deg); | ||||||
|  |     -webkit-transform: rotate(359deg); | ||||||
|  |     transform: rotate(359deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @-ms-keyframes spin { | ||||||
|  |   0% { | ||||||
|  |     -moz-transform: rotate(0deg); | ||||||
|  |     -o-transform: rotate(0deg); | ||||||
|  |     -webkit-transform: rotate(0deg); | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   100% { | ||||||
|  |     -moz-transform: rotate(359deg); | ||||||
|  |     -o-transform: rotate(359deg); | ||||||
|  |     -webkit-transform: rotate(359deg); | ||||||
|  |     transform: rotate(359deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | @keyframes spin { | ||||||
|  |   0% { | ||||||
|  |     -moz-transform: rotate(0deg); | ||||||
|  |     -o-transform: rotate(0deg); | ||||||
|  |     -webkit-transform: rotate(0deg); | ||||||
|  |     transform: rotate(0deg); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   100% { | ||||||
|  |     -moz-transform: rotate(359deg); | ||||||
|  |     -o-transform: rotate(359deg); | ||||||
|  |     -webkit-transform: rotate(359deg); | ||||||
|  |     transform: rotate(359deg); | ||||||
|  |   } | ||||||
|  | } | ||||||
							
								
								
									
										59
									
								
								public/font-old/clonos-codes.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,59 @@ | |||||||
|  |  | ||||||
|  | .icon-plus:before { content: '\e800'; } /* '' */ | ||||||
|  | .icon-help-circled:before { content: '\e801'; } /* '' */ | ||||||
|  | .icon-info-circled:before { content: '\e802'; } /* '' */ | ||||||
|  | .icon-lock:before { content: '\e803'; } /* '' */ | ||||||
|  | .icon-lock-open:before { content: '\e804'; } /* '' */ | ||||||
|  | .icon-ok:before { content: '\e805'; } /* '' */ | ||||||
|  | .icon-forward:before { content: '\e806'; } /* '' */ | ||||||
|  | .icon-download:before { content: '\e807'; } /* '' */ | ||||||
|  | .icon-upload:before { content: '\e808'; } /* '' */ | ||||||
|  | .icon-comment:before { content: '\e809'; } /* '' */ | ||||||
|  | .icon-chat:before { content: '\e80a'; } /* '' */ | ||||||
|  | .icon-attention:before { content: '\e80b'; } /* '' */ | ||||||
|  | .icon-attention-circled:before { content: '\e80c'; } /* '' */ | ||||||
|  | .icon-location:before { content: '\e80d'; } /* '' */ | ||||||
|  | .icon-cog:before { content: '\e80e'; } /* '' */ | ||||||
|  | .icon-emo-cry:before { content: '\e80f'; } /* '' */ | ||||||
|  | .icon-cog-alt:before { content: '\e810'; } /* '' */ | ||||||
|  | .icon-wrench:before { content: '\e811'; } /* '' */ | ||||||
|  | .icon-play:before { content: '\e812'; } /* '' */ | ||||||
|  | .icon-pause:before { content: '\e813'; } /* '' */ | ||||||
|  | .icon-stop:before { content: '\e814'; } /* '' */ | ||||||
|  | .icon-home:before { content: '\e815'; } /* '' */ | ||||||
|  | .icon-off:before { content: '\e816'; } /* '' */ | ||||||
|  | .icon-user:before { content: '\e817'; } /* '' */ | ||||||
|  | .icon-users:before { content: '\e818'; } /* '' */ | ||||||
|  | .icon-pencil:before { content: '\e819'; } /* '' */ | ||||||
|  | .icon-floppy:before { content: '\e81a'; } /* '' */ | ||||||
|  | .icon-arrows-cw:before { content: '\e81b'; } /* '' */ | ||||||
|  | .icon-camera-alt:before { content: '\e81c'; } /* '' */ | ||||||
|  | .icon-gift:before { content: '\e81d'; } /* '' */ | ||||||
|  | .icon-retweet:before { content: '\e81e'; } /* '' */ | ||||||
|  | .icon-edit:before { content: '\e81f'; } /* '' */ | ||||||
|  | .icon-cancel:before { content: '\e820'; } /* '' */ | ||||||
|  | .icon-minus:before { content: '\e821'; } /* '' */ | ||||||
|  | .icon-export:before { content: '\e822'; } /* '' */ | ||||||
|  | .icon-spin4:before { content: '\e834'; } /* '' */ | ||||||
|  | .icon-spin6:before { content: '\e839'; } /* '' */ | ||||||
|  | .icon-docs:before { content: '\f0c5'; } /* '' */ | ||||||
|  | .icon-download-cloud:before { content: '\f0ed'; } /* '' */ | ||||||
|  | .icon-upload-cloud:before { content: '\f0ee'; } /* '' */ | ||||||
|  | .icon-desktop:before { content: '\f108'; } /* '' */ | ||||||
|  | .icon-spinner:before { content: '\f110'; } /* '' */ | ||||||
|  | .icon-reply:before { content: '\f112'; } /* '' */ | ||||||
|  | .icon-reply-all:before { content: '\f122'; } /* '' */ | ||||||
|  | .icon-info:before { content: '\f129'; } /* '' */ | ||||||
|  | .icon-pencil-squared:before { content: '\f14b'; } /* '' */ | ||||||
|  | .icon-export-alt:before { content: '\f14d'; } /* '' */ | ||||||
|  | .icon-youtube:before { content: '\f167'; } /* '' */ | ||||||
|  | .icon-dropbox:before { content: '\f16b'; } /* '' */ | ||||||
|  | .icon-cubes:before { content: '\f1b3'; } /* '' */ | ||||||
|  | .icon-database:before { content: '\f1c0'; } /* '' */ | ||||||
|  | .icon-trash:before { content: '\f1f8'; } /* '' */ | ||||||
|  | .icon-user-plus:before { content: '\f234'; } /* '' */ | ||||||
|  | .icon-user-times:before { content: '\f235'; } /* '' */ | ||||||
|  | .icon-expeditedssl:before { content: '\f23e'; } /* '' */ | ||||||
|  | .icon-shopping-basket:before { content: '\f291'; } /* '' */ | ||||||
|  | .icon-user-circle-o:before { content: '\f2be'; } /* '' */ | ||||||
|  | .icon-id-card-o:before { content: '\f2c3'; } /* '' */ | ||||||
							
								
								
									
										112
									
								
								public/font-old/clonos-embedded.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										59
									
								
								public/font-old/clonos-ie7-codes.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,59 @@ | |||||||
|  |  | ||||||
|  | .icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-help-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-info-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-lock-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-attention { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-attention-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-emo-cry { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-pause { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-stop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-users { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-floppy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-camera-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-gift { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-retweet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-export { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-spin6 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-docs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-expeditedssl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-id-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
							
								
								
									
										70
									
								
								public/font-old/clonos-ie7.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,70 @@ | |||||||
|  | [class^="icon-"], [class*=" icon-"] { | ||||||
|  |   font-family: 'clonos'; | ||||||
|  |   font-style: normal; | ||||||
|  |   font-weight: normal; | ||||||
|  |   | ||||||
|  |   /* fix buttons height */ | ||||||
|  |   line-height: 1em; | ||||||
|  |   | ||||||
|  |   /* you can be more comfortable with increased icons size */ | ||||||
|  |   /* font-size: 120%; */ | ||||||
|  | } | ||||||
|  |   | ||||||
|  | .icon-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-help-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-info-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-lock { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-lock-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-ok { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-forward { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-upload { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-comment { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chat { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-attention { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-attention-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-location { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cog { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-emo-cry { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cog-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-wrench { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-play { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-pause { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-stop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-home { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-users { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-pencil { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-floppy { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-arrows-cw { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-camera-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-gift { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-retweet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-edit { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-export { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-spin6 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-docs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-expeditedssl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-id-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
							
								
								
									
										115
									
								
								public/font-old/clonos.css
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,115 @@ | |||||||
|  | @font-face { | ||||||
|  |   font-family: 'clonos'; | ||||||
|  |   src: url('../font/clonos.eot?6865181'); | ||||||
|  |   src: url('../font/clonos.eot?6865181#iefix') format('embedded-opentype'), | ||||||
|  |        url('../font/clonos.woff2?6865181') format('woff2'), | ||||||
|  |        url('../font/clonos.woff?6865181') format('woff'), | ||||||
|  |        url('../font/clonos.ttf?6865181') format('truetype'), | ||||||
|  |        url('../font/clonos.svg?6865181#clonos') format('svg'); | ||||||
|  |   font-weight: normal; | ||||||
|  |   font-style: normal; | ||||||
|  | } | ||||||
|  | /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ | ||||||
|  | /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ | ||||||
|  | /* | ||||||
|  | @media screen and (-webkit-min-device-pixel-ratio:0) { | ||||||
|  |   @font-face { | ||||||
|  |     font-family: 'clonos'; | ||||||
|  |     src: url('../font/clonos.svg?6865181#clonos') format('svg'); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | */ | ||||||
|  |   | ||||||
|  |  [class^="icon-"]:before, [class*=" icon-"]:before { | ||||||
|  |   font-family: "clonos"; | ||||||
|  |   font-style: normal; | ||||||
|  |   font-weight: normal; | ||||||
|  |   speak: none; | ||||||
|  |   | ||||||
|  |   display: inline-block; | ||||||
|  |   text-decoration: inherit; | ||||||
|  |   width: 1em; | ||||||
|  |   margin-right: .2em; | ||||||
|  |   text-align: center; | ||||||
|  |   /* opacity: .8; */ | ||||||
|  |   | ||||||
|  |   /* For safety - reset parent styles, that can break glyph codes*/ | ||||||
|  |   font-variant: normal; | ||||||
|  |   text-transform: none; | ||||||
|  |   | ||||||
|  |   /* fix buttons height, for twitter bootstrap */ | ||||||
|  |   line-height: 1em; | ||||||
|  |   | ||||||
|  |   /* Animation center compensation - margins should be symmetric */ | ||||||
|  |   /* remove if not needed */ | ||||||
|  |   margin-left: .2em; | ||||||
|  |   | ||||||
|  |   /* you can be more comfortable with increased icons size */ | ||||||
|  |   /* font-size: 120%; */ | ||||||
|  |   | ||||||
|  |   /* Font smoothing. That was taken from TWBS */ | ||||||
|  |   -webkit-font-smoothing: antialiased; | ||||||
|  |   -moz-osx-font-smoothing: grayscale; | ||||||
|  |   | ||||||
|  |   /* Uncomment for 3D effect */ | ||||||
|  |   /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ | ||||||
|  | } | ||||||
|  |   | ||||||
|  | .icon-plus:before { content: '\e800'; } /* '' */ | ||||||
|  | .icon-help-circled:before { content: '\e801'; } /* '' */ | ||||||
|  | .icon-info-circled:before { content: '\e802'; } /* '' */ | ||||||
|  | .icon-lock:before { content: '\e803'; } /* '' */ | ||||||
|  | .icon-lock-open:before { content: '\e804'; } /* '' */ | ||||||
|  | .icon-ok:before { content: '\e805'; } /* '' */ | ||||||
|  | .icon-forward:before { content: '\e806'; } /* '' */ | ||||||
|  | .icon-download:before { content: '\e807'; } /* '' */ | ||||||
|  | .icon-upload:before { content: '\e808'; } /* '' */ | ||||||
|  | .icon-comment:before { content: '\e809'; } /* '' */ | ||||||
|  | .icon-chat:before { content: '\e80a'; } /* '' */ | ||||||
|  | .icon-attention:before { content: '\e80b'; } /* '' */ | ||||||
|  | .icon-attention-circled:before { content: '\e80c'; } /* '' */ | ||||||
|  | .icon-location:before { content: '\e80d'; } /* '' */ | ||||||
|  | .icon-cog:before { content: '\e80e'; } /* '' */ | ||||||
|  | .icon-emo-cry:before { content: '\e80f'; } /* '' */ | ||||||
|  | .icon-cog-alt:before { content: '\e810'; } /* '' */ | ||||||
|  | .icon-wrench:before { content: '\e811'; } /* '' */ | ||||||
|  | .icon-play:before { content: '\e812'; } /* '' */ | ||||||
|  | .icon-pause:before { content: '\e813'; } /* '' */ | ||||||
|  | .icon-stop:before { content: '\e814'; } /* '' */ | ||||||
|  | .icon-home:before { content: '\e815'; } /* '' */ | ||||||
|  | .icon-off:before { content: '\e816'; } /* '' */ | ||||||
|  | .icon-user:before { content: '\e817'; } /* '' */ | ||||||
|  | .icon-users:before { content: '\e818'; } /* '' */ | ||||||
|  | .icon-pencil:before { content: '\e819'; } /* '' */ | ||||||
|  | .icon-floppy:before { content: '\e81a'; } /* '' */ | ||||||
|  | .icon-arrows-cw:before { content: '\e81b'; } /* '' */ | ||||||
|  | .icon-camera-alt:before { content: '\e81c'; } /* '' */ | ||||||
|  | .icon-gift:before { content: '\e81d'; } /* '' */ | ||||||
|  | .icon-retweet:before { content: '\e81e'; } /* '' */ | ||||||
|  | .icon-edit:before { content: '\e81f'; } /* '' */ | ||||||
|  | .icon-cancel:before { content: '\e820'; } /* '' */ | ||||||
|  | .icon-minus:before { content: '\e821'; } /* '' */ | ||||||
|  | .icon-export:before { content: '\e822'; } /* '' */ | ||||||
|  | .icon-spin4:before { content: '\e834'; } /* '' */ | ||||||
|  | .icon-spin6:before { content: '\e839'; } /* '' */ | ||||||
|  | .icon-docs:before { content: '\f0c5'; } /* '' */ | ||||||
|  | .icon-download-cloud:before { content: '\f0ed'; } /* '' */ | ||||||
|  | .icon-upload-cloud:before { content: '\f0ee'; } /* '' */ | ||||||
|  | .icon-desktop:before { content: '\f108'; } /* '' */ | ||||||
|  | .icon-spinner:before { content: '\f110'; } /* '' */ | ||||||
|  | .icon-reply:before { content: '\f112'; } /* '' */ | ||||||
|  | .icon-reply-all:before { content: '\f122'; } /* '' */ | ||||||
|  | .icon-info:before { content: '\f129'; } /* '' */ | ||||||
|  | .icon-pencil-squared:before { content: '\f14b'; } /* '' */ | ||||||
|  | .icon-export-alt:before { content: '\f14d'; } /* '' */ | ||||||
|  | .icon-youtube:before { content: '\f167'; } /* '' */ | ||||||
|  | .icon-dropbox:before { content: '\f16b'; } /* '' */ | ||||||
|  | .icon-cubes:before { content: '\f1b3'; } /* '' */ | ||||||
|  | .icon-database:before { content: '\f1c0'; } /* '' */ | ||||||
|  | .icon-trash:before { content: '\f1f8'; } /* '' */ | ||||||
|  | .icon-user-plus:before { content: '\f234'; } /* '' */ | ||||||
|  | .icon-user-times:before { content: '\f235'; } /* '' */ | ||||||
|  | .icon-expeditedssl:before { content: '\f23e'; } /* '' */ | ||||||
|  | .icon-shopping-basket:before { content: '\f291'; } /* '' */ | ||||||
|  | .icon-user-circle-o:before { content: '\f2be'; } /* '' */ | ||||||
|  | .icon-id-card-o:before { content: '\f2c3'; } /* '' */ | ||||||
							
								
								
									
										
											BIN
										
									
								
								public/font-old/clonos.eot
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										126
									
								
								public/font-old/clonos.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,126 @@ | |||||||
|  | <?xml version="1.0" standalone="no"?> | ||||||
|  | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||||
|  | <svg xmlns="http://www.w3.org/2000/svg"> | ||||||
|  | <metadata>Copyright (C) 2016 by original authors @ fontello.com</metadata> | ||||||
|  | <defs> | ||||||
|  | <font id="clonos" horiz-adv-x="1000" > | ||||||
|  | <font-face font-family="clonos" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> | ||||||
|  | <missing-glyph horiz-adv-x="1000" /> | ||||||
|  | <glyph glyph-name="plus" unicode="" d="M786 439v-107q0-22-16-38t-38-15h-232v-233q0-22-16-37t-38-16h-107q-22 0-38 16t-15 37v233h-232q-23 0-38 15t-16 38v107q0 23 16 38t38 16h232v232q0 22 15 38t38 16h107q23 0 38-16t16-38v-232h232q23 0 38-16t16-38z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="help-circled" unicode="" d="M500 82v107q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-107q0-8 5-13t13-5h107q8 0 13 5t5 13z m143 375q0 49-31 91t-77 65-95 23q-136 0-207-119-9-13 4-24l74-55q4-4 10-4 9 0 14 7 30 38 48 51 19 14 48 14 27 0 48-15t21-33q0-21-11-34t-38-25q-35-15-65-48t-29-70v-20q0-8 5-13t13-5h107q8 0 13 5t5 13q0 10 12 27t30 28q18 10 28 16t25 19 25 27 16 34 7 45z m214-107q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="info-circled" unicode="" d="M571 82v89q0 8-5 13t-12 5h-54v286q0 8-5 13t-13 5h-178q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h53v-179h-53q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h250q7 0 12 5t5 13z m-71 500v89q0 8-5 13t-13 5h-107q-8 0-13-5t-5-13v-89q0-8 5-13t13-5h107q8 0 13 5t5 13z m357-232q0-117-57-215t-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58 215-58 156-156 57-215z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="lock" unicode="" d="M179 421h285v108q0 59-42 101t-101 41-101-41-41-101v-108z m464-53v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h17v108q0 102 74 176t176 74 177-74 73-176v-108h18q23 0 38-15t16-38z" horiz-adv-x="642.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="lock-open" unicode="" d="M929 529v-143q0-15-11-25t-25-11h-36q-14 0-25 11t-11 25v143q0 59-41 101t-101 41-101-41-42-101v-108h53q23 0 38-15t16-38v-322q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v322q0 22 16 38t38 15h375v108q0 103 73 176t177 74 176-74 74-176z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="ok" unicode="" d="M933 534q0-22-16-38l-404-404-76-76q-16-15-38-15t-38 15l-76 76-202 202q-15 16-15 38t15 38l76 76q16 16 38 16t38-16l164-165 366 367q16 16 38 16t38-16l76-76q16-15 16-38z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="forward" unicode="" d="M1000 493q0-15-11-25l-285-286q-11-11-25-11t-25 11-11 25v143h-125q-55 0-98-3t-86-12-74-24-59-39-45-56-27-77-10-101q0-31 3-69 0-4 2-13t1-15q0-8-5-14t-13-6q-9 0-15 10-4 5-8 12t-7 17-6 13q-71 159-71 252 0 111 30 186 90 225 488 225h125v143q0 14 11 25t25 10 25-10l285-286q11-11 11-25z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="download" unicode="" d="M714 100q0 15-10 25t-25 11-25-11-11-25 11-25 25-11 25 11 10 25z m143 0q0 15-10 25t-26 11-25-11-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-37t-38-16h-821q-23 0-38 16t-16 37v179q0 22 16 38t38 16h259l75-76q33-32 76-32t76 32l76 76h259q22 0 38-16t16-38z m-182 318q10-23-8-39l-250-250q-10-11-25-11t-25 11l-250 250q-17 16-8 39 10 21 33 21h143v250q0 15 11 25t25 11h143q14 0 25-11t10-25v-250h143q24 0 33-21z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="upload" unicode="" d="M714 29q0 14-10 25t-25 10-25-10-11-25 11-25 25-11 25 11 10 25z m143 0q0 14-10 25t-26 10-25-10-10-25 10-25 25-11 26 11 10 25z m72 125v-179q0-22-16-38t-38-16h-821q-23 0-38 16t-16 38v179q0 22 16 38t38 15h238q12-31 39-51t62-20h143q34 0 61 20t40 51h238q22 0 38-15t16-38z m-182 361q-9-22-33-22h-143v-250q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v250h-143q-23 0-33 22-9 22 8 39l250 250q10 10 25 10t25-10l250-250q18-17 8-39z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="comment" unicode="" d="M1000 350q0-97-67-179t-182-130-251-48q-39 0-81 4-110-97-257-135-27-8-63-12-10-1-17 5t-10 16v1q-2 2 0 6t1 6 2 5l4 5t4 5 4 5q4 5 17 19t20 22 17 22 18 28 15 33 15 42q-88 50-138 123t-51 157q0 73 40 139t106 114 160 76 194 28q136 0 251-48t182-130 67-179z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="chat" unicode="" d="M786 421q0-77-53-143t-143-104-197-38q-48 0-98 9-70-49-155-72-21-5-48-9h-2q-6 0-12 5t-6 12q-1 1-1 3t1 4 1 3l1 3t2 3 2 3 3 3 2 2q3 3 13 14t15 16 12 17 14 21 11 25q-69 40-108 98t-40 125q0 78 53 144t143 104 197 38 197-38 143-104 53-144z m214-142q0-67-40-126t-108-98q5-14 11-25t14-21 13-16 14-17 13-14q0 0 2-2t3-3 2-3 2-3l1-3t1-3 1-4-1-3q-2-8-7-13t-12-4q-28 4-48 9-86 23-156 72-50-9-98-9-151 0-263 74 32-3 49-3 90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85 72-39 114-99t42-128z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="attention" unicode="" d="M571 83v106q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-106q0-8 5-13t12-6h108q7 0 12 6t5 13z m-1 208l10 257q0 6-5 10-7 6-14 6h-122q-6 0-14-6-5-4-5-12l9-255q0-5 6-9t13-3h103q8 0 14 3t5 9z m-7 522l428-786q20-35-1-70-9-17-26-26t-35-10h-858q-18 0-35 10t-26 26q-21 35-1 70l429 786q9 17 26 27t36 10 36-10 27-27z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="attention-circled" unicode="" d="M429 779q116 0 215-58t156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58z m71-696v106q0 8-5 13t-12 5h-107q-8 0-13-5t-6-13v-106q0-8 6-13t13-6h107q7 0 12 6t5 13z m-1 192l10 346q0 7-6 10-5 5-13 5h-123q-8 0-13-5-6-3-6-10l10-346q0-6 5-10t14-4h103q8 0 13 4t6 10z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="location" unicode="" d="M429 493q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m142 0q0-61-18-100l-203-432q-9-18-27-29t-37-11-38 11-26 29l-204 432q-18 39-18 100 0 118 84 202t202 84 202-84 83-202z" horiz-adv-x="571.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cog" unicode="" d="M571 350q0 59-41 101t-101 42-101-42-42-101 42-101 101-42 101 42 41 101z m286 61v-124q0-7-4-13t-11-7l-104-16q-10-30-21-51 19-27 59-77 6-6 6-13t-5-13q-15-21-55-61t-53-39q-7 0-14 5l-77 60q-25-13-51-21-9-76-16-104-4-16-20-16h-124q-8 0-14 5t-6 12l-16 103q-27 9-50 21l-79-60q-6-5-14-5-8 0-14 6-70 64-92 94-4 5-4 13 0 6 5 12 8 12 28 37t30 40q-15 28-23 55l-102 15q-7 1-11 7t-5 13v124q0 7 5 13t10 7l104 16q8 25 22 51-23 32-60 77-6 7-6 14 0 5 5 12 15 20 55 60t53 40q7 0 15-5l77-60q24 13 50 21 9 76 17 104 3 16 20 16h124q7 0 13-5t7-12l15-103q28-9 51-20l79 59q5 5 13 5 7 0 14-5 72-67 92-95 4-5 4-12 0-7-4-13-9-12-29-37t-30-40q15-28 23-54l102-16q7-1 12-7t4-13z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="emo-cry" unicode="" d="M278 787c-7 0-15-2-23-5l-128-62-80-38c-2-1-4-2-6-3-1-5-1-11-1-16l0 0 0-1 0 0c0-69 40-162 122-162l0 0 0 0 0 0c34 0 65 18 87 49 26 35 37 82 34 128l18 9c27 12 38 44 25 71-9 19-28 30-48 30z m212 0c-20 0-39-11-48-30-13-27-1-59 25-71l18-9c-3-46 9-93 34-128 22-31 53-49 87-49l0 0 1 0 0 0c82 0 121 93 122 162l0 0 0 1 0 0c0 5-1 11-1 16-2 1-5 2-7 3l-80 38-128 62c-7 3-15 5-23 5z m279-302c-7 0-15-5-21-16-42-72-96-259 27-259 123 1 73 182 16 261-6 8-14 13-22 14z m-512-138c-57 0-112-9-166-26-10-4-20-7-30-11-11-5-21-9-30-13l0 0-1-1 0 0c-26-12-37-44-25-70 13-26 44-38 70-25l0-1c9 5 17 8 24 11 9 3 17 6 25 9 43 14 88 21 133 21 51 0 101-9 148-27 19-7 37-15 55-24 91-49 163-130 200-232 10-27 40-41 68-31 27 10 42 40 32 67-46 127-137 228-250 289-22 12-45 22-69 31-57 21-120 33-184 33z" horiz-adv-x="851" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cog-alt" unicode="" d="M500 350q0 59-42 101t-101 42-101-42-42-101 42-101 101-42 101 42 42 101z m429-286q0 29-22 51t-50 21-50-21-21-51q0-29 21-50t50-21 51 21 21 50z m0 572q0 29-22 50t-50 21-50-21-21-50q0-30 21-51t50-21 51 21 21 51z m-215-235v-103q0-6-4-11t-8-6l-87-14q-6-19-18-42 19-27 50-64 4-6 4-11 0-7-4-11-12-17-46-50t-43-33q-7 0-12 4l-64 50q-21-11-43-17-6-60-13-87-4-13-17-13h-104q-6 0-11 4t-5 10l-13 85q-19 6-42 18l-66-50q-4-4-11-4-6 0-12 4-80 75-80 90 0 5 4 10 5 8 23 30t26 34q-13 24-20 46l-85 13q-5 1-9 5t-4 11v104q0 5 4 10t9 6l86 14q7 19 18 42-19 27-50 64-4 6-4 11 0 7 4 12 12 16 46 49t44 33q6 0 12-4l64-50q19 10 43 18 6 60 13 86 3 13 16 13h104q6 0 11-4t6-10l13-85q19-6 42-17l65 49q5 4 12 4 6 0 11-4 81-75 81-90 0-4-4-10-7-9-24-30t-25-34q13-27 19-46l85-12q6-2 9-6t4-11z m357-298v-78q0-9-83-17-6-15-16-29 28-63 28-77 0-2-2-4-68-40-69-40-5 0-26 27t-29 37q-11-1-17-1t-17 1q-7-11-29-37t-25-27q-1 0-69 40-3 2-3 4 0 14 29 77-10 14-17 29-83 8-83 17v78q0 9 83 18 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-38q12 1 17 1t17-1q28 40 51 63l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-9 83-18z m0 572v-78q0-9-83-18-6-15-16-29 28-63 28-77 0-2-2-4-68-39-69-39-5 0-26 26t-29 38q-11-1-17-1t-17 1q-7-12-29-38t-25-26q-1 0-69 39-3 2-3 4 0 14 29 77-10 14-17 29-83 9-83 18v78q0 9 83 17 7 16 17 29-29 63-29 77 0 2 3 4 2 1 19 11t33 19 17 9q4 0 25-26t29-37q12 1 17 1t17-1q28 39 51 62l4 1q2 0 69-39 2-2 2-4 0-14-28-77 9-13 16-29 83-8 83-17z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="wrench" unicode="" d="M214 29q0 14-10 25t-25 10-25-10-11-25 11-25 25-11 25 11 10 25z m360 234l-381-381q-21-20-50-20-29 0-51 20l-59 61q-21 20-21 50 0 29 21 51l380 380q22-55 64-97t97-64z m354 243q0-22-13-59-27-75-92-122t-144-46q-104 0-177 73t-73 177 73 176 177 74q32 0 67-10t60-26q9-6 9-15t-9-16l-163-94v-125l108-60q2 2 44 27t75 45 40 20q8 0 13-5t5-14z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="play" unicode="" d="M772 333l-741-412q-13-7-22-2t-9 20v822q0 14 9 20t22-2l741-412q13-7 13-17t-13-17z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="pause" unicode="" d="M857 743v-786q0-14-10-25t-26-11h-285q-15 0-25 11t-11 25v786q0 14 11 25t25 11h285q15 0 26-11t10-25z m-500 0v-786q0-14-10-25t-26-11h-285q-15 0-25 11t-11 25v786q0 14 11 25t25 11h285q15 0 26-11t10-25z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="stop" unicode="" d="M857 743v-786q0-14-10-25t-26-11h-785q-15 0-25 11t-11 25v786q0 14 11 25t25 11h785q15 0 26-11t10-25z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="home" unicode="" d="M786 296v-267q0-15-11-25t-25-11h-214v214h-143v-214h-214q-15 0-25 11t-11 25v267q0 1 0 2t0 2l321 264 321-264q1-1 1-4z m124 39l-34-41q-5-5-12-6h-2q-7 0-12 3l-386 322-386-322q-7-4-13-3-7 1-12 6l-35 41q-4 6-3 13t6 12l401 334q18 15 42 15t43-15l136-113v108q0 8 5 13t13 5h107q8 0 13-5t5-13v-227l122-102q6-4 6-12t-4-13z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="off" unicode="" d="M857 350q0-87-34-166t-91-137-137-92-166-34-167 34-136 92-92 137-34 166q0 102 45 191t126 151q24 18 54 14t46-28q18-23 14-53t-28-47q-54-41-84-101t-30-127q0-58 23-111t61-91 91-61 111-23 110 23 92 61 61 91 22 111q0 68-30 127t-84 101q-23 18-28 47t14 53q17 24 47 28t53-14q81-61 126-151t45-191z m-357 429v-358q0-29-21-50t-50-21-51 21-21 50v358q0 29 21 50t51 21 50-21 21-50z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="user" unicode="" d="M714 69q0-60-35-104t-84-44h-476q-49 0-84 44t-35 104q0 48 5 90t17 85 33 73 52 50 76 19q73-72 174-72t175 72q42 0 75-19t52-50 33-73 18-85 4-90z m-143 495q0-88-62-151t-152-63-151 63-63 151 63 152 151 63 152-63 62-152z" horiz-adv-x="714.3" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="users" unicode="" d="M331 350q-90-3-148-71h-75q-45 0-77 22t-31 66q0 197 69 197 4 0 25-11t54-24 66-12q38 0 75 13-3-21-3-37 0-78 45-143z m598-356q0-66-41-105t-108-39h-488q-68 0-108 39t-41 105q0 30 2 58t8 61 14 61 24 54 35 45 48 30 62 11q6 0 24-12t41-26 59-27 76-12 75 12 60 27 41 26 24 12q34 0 62-11t47-30 35-45 24-54 15-61 8-61 2-58z m-572 713q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m393-214q0-89-63-152t-151-62-152 62-63 152 63 151 152 63 151-63 63-151z m321-126q0-43-31-66t-77-22h-75q-57 68-147 71 45 65 45 143 0 16-3 37 37-13 74-13 33 0 67 12t54 24 24 11q69 0 69-197z m-71 340q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="pencil" unicode="" d="M203-7l50 51-131 131-51-51v-60h72v-71h60z m291 518q0 12-12 12-5 0-9-4l-303-302q-4-4-4-10 0-12 13-12 5 0 9 4l303 302q3 4 3 10z m-30 107l232-232-464-465h-232v233z m381-54q0-29-20-50l-93-93-232 233 93 92q20 21 50 21 29 0 51-21l131-131q20-22 20-51z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="floppy" unicode="" d="M214-7h429v214h-429v-214z m500 0h72v500q0 8-6 21t-11 20l-157 156q-5 6-19 12t-22 5v-232q0-22-15-38t-38-16h-322q-22 0-37 16t-16 38v232h-72v-714h72v232q0 22 16 38t37 16h465q22 0 38-16t15-38v-232z m-214 518v178q0 8-5 13t-13 5h-107q-7 0-13-5t-5-13v-178q0-7 5-13t13-5h107q7 0 13 5t5 13z m357-18v-518q0-22-15-38t-38-16h-750q-23 0-38 16t-16 38v750q0 22 16 38t38 16h517q23 0 50-12t42-26l156-157q16-15 27-42t11-49z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="arrows-cw" unicode="" d="M843 261q0-3 0-4-36-150-150-243t-267-93q-81 0-157 31t-136 88l-72-72q-11-11-25-11t-25 11-11 25v250q0 14 11 25t25 11h250q14 0 25-11t10-25-10-25l-77-77q40-36 90-57t105-20q74 0 139 37t104 99q6 10 30 66 4 13 16 13h107q8 0 13-6t5-12z m14 446v-250q0-14-10-25t-26-11h-250q-14 0-25 11t-10 25 10 25l77 77q-82 77-194 77-75 0-140-37t-104-99q-6-10-29-66-5-13-17-13h-111q-7 0-13 6t-5 12v4q36 150 151 243t268 93q81 0 158-31t137-88l72 72q11 11 25 11t26-11 10-25z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="camera-alt" unicode="" d="M518 386q0 8-5 13t-13 5q-37 0-63-27t-26-63q0-7 5-12t13-6 12 6 5 12q0 23 16 38t38 16q8 0 13 5t5 13z m125-73q0-59-42-101t-101-42-101 42-42 101 42 101 101 42 101-42 42-101z m-572-320h858v71h-858v-71z m643 320q0 89-62 152t-152 63-151-63-63-152 63-151 151-63 152 63 62 151z m-571 358h214v72h-214v-72z m-72-107h858v143h-462l-36-71h-360v-72z m929 143v-714q0-30-21-51t-50-21h-858q-29 0-50 21t-21 51v714q0 30 21 51t50 21h858q29 0 50-21t21-51z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="gift" unicode="" d="M518 93v400h-179v-400q0-14 10-21t26-8h107q16 0 26 8t10 21z m-255 471h109l-70 90q-15 17-39 17-22 0-38-15t-15-38 15-38 38-16z m384 54q0 22-15 38t-38 15q-24 0-39-17l-69-90h108q22 0 38 16t15 38z m210-143v-179q0-7-5-12t-13-5h-53v-233q0-22-16-37t-38-16h-607q-22 0-38 16t-16 37v233h-53q-8 0-13 5t-5 12v179q0 8 5 13t13 5h245q-51 0-88 36t-37 89 37 88 88 37q60 0 94-43l72-92 71 92q34 43 94 43 52 0 88-37t37-88-37-89-88-36h245q8 0 13-5t5-13z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="retweet" unicode="" d="M714 11q0-7-5-13t-13-5h-535q-5 0-8 1t-5 4-3 4-2 7 0 6v335h-107q-15 0-25 11t-11 25q0 13 8 23l179 214q11 12 27 12t28-12l178-214q9-10 9-23 0-15-11-25t-25-11h-107v-214h321q9 0 14-6l89-108q4-5 4-11z m357 232q0-13-8-23l-178-214q-12-13-28-13t-27 13l-179 214q-8 10-8 23 0 14 11 25t25 11h107v214h-322q-9 0-14 7l-89 107q-4 5-4 11 0 7 5 12t13 6h536q4 0 7-1t5-4 3-5 2-6 1-7v-334h107q14 0 25-11t10-25z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="edit" unicode="" d="M496 189l64 65-85 85-64-65v-31h53v-54h32z m245 402q-9 9-18 0l-196-196q-9-9 0-18t18 0l196 196q9 9 0 18z m45-331v-106q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h464q35 0 65-14 9-4 10-13 2-10-5-16l-27-28q-8-8-18-4-13 3-25 3h-464q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v70q0 7 5 12l36 36q8 8 20 4t11-16z m-54 411l161-160-375-375h-161v160z m248-73l-51-52-161 161 51 52q16 15 38 15t38-15l85-85q16-16 16-38t-16-38z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cancel" unicode="" d="M724 112q0-22-15-38l-76-76q-16-15-38-15t-38 15l-164 165-164-165q-16-15-38-15t-38 15l-76 76q-16 16-16 38t16 38l164 164-164 164q-16 16-16 38t16 38l76 76q16 16 38 16t38-16l164-164 164 164q16 16 38 16t38-16l76-76q15-15 15-38t-15-38l-164-164 164-164q15-15 15-38z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="minus" unicode="" d="M786 439v-107q0-22-16-38t-38-15h-678q-23 0-38 15t-16 38v107q0 23 16 38t38 16h678q23 0 38-16t16-38z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="export" unicode="" d="M786 298v-144q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h142q7 0 13-6t5-12q0-15-15-18-43-15-74-34-5-2-9-2h-62q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v119q0 11 10 16 16 7 31 21 8 9 19 4 12-5 12-16z m132 277l-214-214q-10-11-25-11-7 0-14 3-22 9-22 33v107h-89q-181 0-245-73-66-77-41-264 2-13-11-19-5-1-7-1-9 0-14 7-6 8-12 17t-22 39-28 55-21 64-10 68q0 27 2 51t8 50 15 49 27 45 38 42 52 34 70 27 89 17 110 6h89v107q0 24 22 33 7 3 14 3 14 0 25-11l214-214q11-10 11-25t-11-25z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="spin4" unicode="" d="M498 850c-114 0-228-39-320-116l0 0c173 140 428 130 588-31 134-134 164-332 89-495-10-29-5-50 12-68 21-20 61-23 84 0 3 3 12 15 15 24 71 180 33 393-112 539-99 98-228 147-356 147z m-409-274c-14 0-29-5-39-16-3-3-13-15-15-24-71-180-34-393 112-539 185-185 479-195 676-31l0 0c-173-140-428-130-589 31-134 134-163 333-89 495 11 29 6 50-12 68-11 11-27 17-44 16z" horiz-adv-x="1001" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="spin6" unicode="" d="M855 9c-189-190-520-172-705 13-190 190-200 494-28 695 11 13 21 26 35 34 36 23 85 18 117-13 30-31 35-76 16-112-5-9-9-15-16-22-140-151-145-379-8-516 153-153 407-121 542 34 106 122 142 297 77 451-83 198-305 291-510 222l0 1c236 82 492-24 588-252 71-167 37-355-72-493-11-15-23-29-36-42z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="docs" unicode="" d="M946 636q23 0 38-16t16-38v-678q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v160h-303q-23 0-38 16t-16 38v375q0 22 11 49t27 42l228 228q15 16 42 27t49 11h232q23 0 38-16t16-38v-183q38 23 71 23h232z m-303-119l-167-167h167v167z m-357 214l-167-167h167v167z m109-361l176 176v233h-214v-233q0-22-15-37t-38-16h-233v-357h286v143q0 22 11 49t27 42z m534-449v643h-215v-232q0-22-15-38t-38-15h-232v-358h500z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="download-cloud" unicode="" d="M714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="upload-cloud" unicode="" d="M714 368q0 8-5 13l-196 196q-5 5-13 5t-13-5l-196-196q-5-6-5-13 0-8 5-13t13-5h125v-196q0-8 5-13t12-5h108q7 0 12 5t5 13v196h125q8 0 13 5t5 13z m357-161q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="desktop" unicode="" d="M1000 296v465q0 7-5 12t-13 6h-893q-7 0-12-6t-6-12v-465q0-7 6-12t12-5h893q7 0 13 5t5 12z m71 465v-607q0-37-26-63t-63-27h-303q0-20 9-43t17-40 9-24q0-14-10-25t-25-11h-286q-15 0-25 11t-11 25q0 8 9 25t18 39 9 43h-304q-36 0-63 27t-26 63v607q0 37 26 63t63 26h893q37 0 63-26t26-63z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="spinner" unicode="" d="M294 72q0-29-21-50t-51-21q-29 0-50 21t-21 50q0 30 21 51t50 21 51-21 21-51z m277-115q0-29-20-50t-51-21-50 21-21 50 21 51 50 21 51-21 20-51z m-392 393q0-30-21-50t-51-21-50 21-21 50 21 51 50 20 51-20 21-51z m670-278q0-29-21-50t-50-21q-30 0-51 21t-20 50 20 51 51 21 50-21 21-51z m-538 556q0-37-26-63t-63-26-63 26-26 63 26 63 63 26 63-26 26-63z m653-278q0-30-21-50t-50-21-51 21-21 50 21 51 51 20 50-20 21-51z m-357 393q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m296-115q0-52-37-88t-88-37q-52 0-88 37t-37 88q0 51 37 88t88 37q51 0 88-37t37-88z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="reply" unicode="" d="M1000 225q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="reply-all" unicode="" d="M357 246v-39q0-23-22-33-7-3-14-3-15 0-25 11l-285 286q-11 10-11 25t11 25l285 286q17 17 39 8 22-10 22-33v-39l-221-222q-11-11-11-25t11-25z m643-21q0-32-9-74t-22-77-27-70-22-51l-11-22q-5-10-16-10-3 0-5 1-14 4-13 19 24 223-59 315-36 40-95 62t-150 29v-140q0-23-21-33-8-3-14-3-15 0-25 11l-286 286q-11 10-11 25t11 25l286 286q16 17 39 8 21-10 21-33v-147q230-15 335-123 94-96 94-284z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="info" unicode="" d="M357 100v-71q0-15-10-25t-26-11h-285q-15 0-25 11t-11 25v71q0 15 11 25t25 11h35v214h-35q-15 0-25 11t-11 25v71q0 15 11 25t25 11h214q15 0 25-11t11-25v-321h35q15 0 26-11t10-25z m-71 643v-107q0-15-11-25t-25-11h-143q-14 0-25 11t-11 25v107q0 14 11 25t25 11h143q15 0 25-11t11-25z" horiz-adv-x="357.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="pencil-squared" unicode="" d="M225 232l85-85-29-29h-31v53h-54v32z m232 217q7-7-2-16l-163-163q-9-9-16-1-8 7 1 16l163 163q9 9 17 1z m-153-385l303 304-161 161-303-304v-161h161z m339 340l51 51q16 16 16 38t-16 38l-85 85q-15 15-38 15t-37-15l-52-52z m214 214v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="export-alt" unicode="" d="M561 236l196 196q11 11 11 25t-11 25l-196 197q-17 17-39 8-22-10-22-33v-90q-66 0-120-11t-91-28-64-44-42-53-25-61-12-62-3-62q0-101 93-226 6-6 14-6 4 0 7 1 13 5 11 19-25 197 35 264 25 29 72 42t125 13v-89q0-24 22-33 7-3 14-3 14 0 25 11z m296 382v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="youtube" unicode="" d="M542 156v-118q0-37-22-37-13 0-25 12v168q12 12 25 12 22 0 22-37z m189-1v-25h-51v25q0 38 25 38t26-38z m-540 122h60v52h-174v-52h59v-318h55v318z m161-318h50v276h-50v-211q-17-23-32-23-10 0-11 11-1 2-1 20v203h-50v-218q0-28 5-41 7-21 32-21 27 0 57 34v-30z m240 83v110q0 41-5 55-10 31-40 31-28 0-52-30v121h-50v-370h50v27q25-31 52-31 30 0 40 31 5 15 5 56z m188 6v7h-51q0-29-1-34-4-20-22-20-26 0-26 38v49h100v57q0 44-15 65-22 28-59 28-38 0-60-28-15-21-15-65v-96q0-44 16-65 22-29 60-29 40 0 60 30 10 15 12 30 1 5 1 33z m-339 509v117q0 39-24 39t-24-39v-117q0-39 24-39t24 39z m401-419q0-131-14-195-8-33-33-56t-57-25q-102-12-309-12t-310 12q-32 3-57 25t-32 56q-15 62-15 195 0 131 15 195 7 33 32 56t57 26q103 11 310 11t309-11q33-4 58-26t32-56q14-62 14-195z m-557 712h57l-67-223v-151h-56v151q-8 42-34 119-21 57-37 104h60l39-147z m207-186v-97q0-46-16-66-21-29-59-29-37 0-59 29-15 21-15 66v97q0 45 15 66 22 28 59 28 38 0 59-28 16-21 16-66z m187 91v-279h-51v31q-30-35-58-35-25 0-33 21-4 13-4 42v220h51v-205q0-19 0-20 2-12 12-12 15 0 32 24v213h51z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="dropbox" unicode="" d="M224 456l276-171-191-159-273 178z m551-310v-60l-274-164v-1l0 1-1-1v1l-273 164v60l82-54 191 159v1l1-1 0 1v-1l192-159z m-466 638l191-159-276-169-188 150z m467-328l188-152-273-178-191 159z m-85 328l273-178-188-150-276 169z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cubes" unicode="" d="M357-61l214 107v176l-214-92v-191z m-36 254l226 96-226 97-225-97z m608-254l214 107v176l-214-92v-191z m-36 254l225 96-225 97-226-97z m-250 163l214 92v149l-214-92v-149z m-36 212l246 105-246 106-246-106z m607-289v-233q0-20-10-37t-29-26l-250-125q-14-8-32-8t-32 8l-250 125q-2 1-4 2-1-1-4-2l-250-125q-14-8-32-8t-31 8l-250 125q-19 9-29 26t-11 37v233q0 21 12 39t32 26l242 104v223q0 22 12 40t31 26l250 107q13 6 28 6t28-6l250-107q20-9 32-26t12-40v-223l242-104q20-8 32-26t11-39z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="database" unicode="" d="M429 421q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-19-215 19-156 52-58 71v95q66-47 181-71t248-24z m0-428q132 0 247 24t181 71v-95q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v95q66-47 181-71t248-24z m0 214q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-20-215 20-156 52-58 71v95q66-47 181-71t248-24z m0 643q116 0 214-19t157-52 57-72v-71q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v71q0 39 58 72t156 52 215 19z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="trash" unicode="" d="M286 82v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m143 0v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m142 0v393q0 8-5 13t-12 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q7 0 12 5t5 13z m-303 554h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="user-plus" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="user-times" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m601-179l139-138q5-5 5-13 0-8-5-13l-76-76q-5-5-12-5-8 0-13 5l-139 139-139-139q-5-5-13-5-7 0-12 5l-76 76q-5 5-5 13 0 8 5 13l139 138-139 139q-5 5-5 13 0 8 5 13l76 75q5 5 12 5 8 0 13-5l139-139 139 139q5 5 13 5 7 0 12-5l76-75q5-5 5-13 0-8-5-13z m-278 0l-101-101q-21-20-21-50 0-30 21-51l46-46q-11-2-24-2h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 86-68 178-68t178 68q11 10 22 10 15 0 31-4-15-15-22-27t-8-32q0-30 21-51z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="expeditedssl" unicode="" d="M500 814q-94 0-180-36t-148-100-99-148-37-180 37-180 99-148 148-100 180-36 180 36 148 100 100 148 36 180-36 180-100 148-148 100-180 36z m0 36q102 0 194-40t160-106 106-160 40-194-40-194-106-160-160-106-194-40-194 40-160 106-106 160-40 194 40 194 106 160 160 106 194 40z m-223-464q9 0 9-9v-268q0-9-9-9h-18q-9 0-9 9v268q0 9 9 9h18z m223-36q30 0 51-21t20-50q0-20-9-36t-26-26v-63q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v63q-16 10-26 26t-9 36q0 29 21 50t50 21z m0 429q117 0 215-58t156-156 58-215-58-215-156-156-215-58-215 58-156 156-58 215 58 215 156 156 215 58z m-196-268v-54q0-8 5-13t12-5h36q8 0 13 5t5 13v54q0 52 37 88t88 37 88-37 37-88v-54q0-8 5-13t13-5h36q7 0 12 5t5 13v54q0 81-57 139t-139 57-139-57-57-139z m482-411v286q0 14-11 25t-25 10h-500q-14 0-25-10t-11-25v-286q0-14 11-25t25-11h500q15 0 25 11t11 25z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="shopping-basket" unicode="" d="M1071 421q30 0 51-20t21-51-21-50-51-21h-8l-64-370q-5-26-25-42t-45-17h-715q-25 0-45 17t-25 42l-64 370h-9q-29 0-50 21t-21 50 21 51 50 20h1000z m-800-446q14 1 24 13t9 26l-18 232q-1 14-13 24t-26 9-24-13-9-26l18-232q1-14 12-24t24-9h3z m229 36v232q0 14-11 25t-25 11-25-11-10-25v-232q0-15 10-25t25-11 25 11 11 25z m214 0v232q0 14-10 25t-25 11-25-11-11-25v-232q0-15 11-25t25-11 25 11 10 25z m197-3l18 232q1 15-9 26t-24 13-26-9-13-24l-18-232q-1-15 9-26t24-13h3q14 0 24 9t12 24z m-645 679l-52-230h-74l56 246q11 49 50 80t89 31h94q0 15 10 25t25 11h215q14 0 25-11t10-25h94q50 0 89-31t49-80l57-246h-74l-52 230q-6 25-25 40t-44 16h-94q0-15-10-25t-25-11h-215q-14 0-25 11t-10 25h-94q-25 0-44-16t-25-40z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="user-circle-o" unicode="" d="M500 850q102 0 194-40t160-106 106-160 40-194q0-101-39-194t-107-159-159-107-195-40-195 40-159 106-106 160-40 194 40 194 106 160 160 106 194 40z m345-754q84 115 84 254 0 87-34 166t-92 137-137 92-166 34-166-34-137-92-91-137-35-166q0-139 84-254 36 183 170 183 73-72 175-72t175 72q134 0 170-183z m-131 361q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="id-card-o" unicode="" d="M500 174q0-31-18-52t-42-22h-237q-25 0-43 22t-17 52q0 30 4 56t14 50 28 38 45 14q36-36 87-36t88 36q26 0 45-14t28-38 14-50 4-56z m-71 247q0-44-32-75t-76-32-75 32-32 75 32 76 75 32 76-32 32-76z m571-232v-35q0-8-5-13t-13-5h-393q-7 0-12 5t-6 13v35q0 8 6 13t12 5h393q8 0 13-5t5-13z m-214 143v-36q0-7-5-12t-13-5h-179q-7 0-12 5t-6 12v36q0 8 6 13t12 5h179q8 0 13-5t5-13z m214 0v-36q0-7-5-12t-13-5h-107q-8 0-13 5t-5 12v36q0 8 5 13t13 5h107q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-6h-393q-7 0-12 6t-6 12v36q0 8 6 13t12 5h393q8 0 13-5t5-13z m71-464v625h-1000v-625q0-7 6-13t12-5h965q7 0 12 5t5 13z m72 678v-678q0-37-26-63t-63-27h-965q-36 0-63 27t-26 63v678q0 37 26 63t63 27h965q36 0 63-27t26-63z" horiz-adv-x="1142.9" /> | ||||||
|  | </font> | ||||||
|  | </defs> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 27 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/font-old/clonos.ttf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								public/font-old/clonos.woff
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								public/font-old/clonos.woff2
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -34,25 +34,126 @@ | |||||||
| .icon-cancel:before { content: '\e820'; } /* '' */ | .icon-cancel:before { content: '\e820'; } /* '' */ | ||||||
| .icon-minus:before { content: '\e821'; } /* '' */ | .icon-minus:before { content: '\e821'; } /* '' */ | ||||||
| .icon-export:before { content: '\e822'; } /* '' */ | .icon-export:before { content: '\e822'; } /* '' */ | ||||||
|  | .icon-heart:before { content: '\e823'; } /* '' */ | ||||||
|  | .icon-star:before { content: '\e824'; } /* '' */ | ||||||
|  | .icon-th-list:before { content: '\e825'; } /* '' */ | ||||||
|  | .icon-th-large:before { content: '\e826'; } /* '' */ | ||||||
|  | .icon-th:before { content: '\e827'; } /* '' */ | ||||||
|  | .icon-mail:before { content: '\e828'; } /* '' */ | ||||||
|  | .icon-picture:before { content: '\e829'; } /* '' */ | ||||||
|  | .icon-link:before { content: '\e82a'; } /* '' */ | ||||||
|  | .icon-attach:before { content: '\e82b'; } /* '' */ | ||||||
|  | .icon-eye:before { content: '\e82c'; } /* '' */ | ||||||
|  | .icon-eye-off:before { content: '\e82d'; } /* '' */ | ||||||
|  | .icon-tag:before { content: '\e82e'; } /* '' */ | ||||||
|  | .icon-tags:before { content: '\e82f'; } /* '' */ | ||||||
|  | .icon-flag:before { content: '\e830'; } /* '' */ | ||||||
|  | .icon-thumbs-up:before { content: '\e831'; } /* '' */ | ||||||
|  | .icon-thumbs-down:before { content: '\e832'; } /* '' */ | ||||||
|  | .icon-print:before { content: '\e833'; } /* '' */ | ||||||
| .icon-spin4:before { content: '\e834'; } /* '' */ | .icon-spin4:before { content: '\e834'; } /* '' */ | ||||||
|  | .icon-trash-empty:before { content: '\e835'; } /* '' */ | ||||||
|  | .icon-doc:before { content: '\e836'; } /* '' */ | ||||||
|  | .icon-calendar:before { content: '\e837'; } /* '' */ | ||||||
|  | .icon-chart-bar:before { content: '\e838'; } /* '' */ | ||||||
| .icon-spin6:before { content: '\e839'; } /* '' */ | .icon-spin6:before { content: '\e839'; } /* '' */ | ||||||
|  | .icon-list-alt:before { content: '\e83a'; } /* '' */ | ||||||
|  | .icon-basket:before { content: '\e83b'; } /* '' */ | ||||||
|  | .icon-globe:before { content: '\e83c'; } /* '' */ | ||||||
|  | .icon-inbox:before { content: '\e83d'; } /* '' */ | ||||||
|  | .icon-cloud:before { content: '\e83e'; } /* '' */ | ||||||
|  | .icon-umbrella:before { content: '\e83f'; } /* '' */ | ||||||
|  | .icon-flash:before { content: '\e840'; } /* '' */ | ||||||
|  | .icon-briefcase:before { content: '\e841'; } /* '' */ | ||||||
|  | .icon-key:before { content: '\e842'; } /* '' */ | ||||||
|  | .icon-credit-card:before { content: '\e843'; } /* '' */ | ||||||
|  | .icon-road:before { content: '\e844'; } /* '' */ | ||||||
|  | .icon-calendar-1:before { content: '\e845'; } /* '' */ | ||||||
|  | .icon-database-1:before { content: '\e846'; } /* '' */ | ||||||
|  | .icon-clipboard:before { content: '\e847'; } /* '' */ | ||||||
|  | .icon-clipboard-1:before { content: '\e848'; } /* '' */ | ||||||
|  | .icon-buffer:before { content: '\e849'; } /* '' */ | ||||||
|  | .icon-link-ext:before { content: '\f08e'; } /* '' */ | ||||||
|  | .icon-hdd:before { content: '\f0a0'; } /* '' */ | ||||||
|  | .icon-tasks:before { content: '\f0ae'; } /* '' */ | ||||||
|  | .icon-resize-full-alt:before { content: '\f0b2'; } /* '' */ | ||||||
| .icon-docs:before { content: '\f0c5'; } /* '' */ | .icon-docs:before { content: '\f0c5'; } /* '' */ | ||||||
|  | .icon-money:before { content: '\f0d6'; } /* '' */ | ||||||
|  | .icon-mail-alt:before { content: '\f0e0'; } /* '' */ | ||||||
|  | .icon-gauge:before { content: '\f0e4'; } /* '' */ | ||||||
|  | .icon-chat-empty:before { content: '\f0e6'; } /* '' */ | ||||||
|  | .icon-sitemap:before { content: '\f0e8'; } /* '' */ | ||||||
|  | .icon-lightbulb:before { content: '\f0eb'; } /* '' */ | ||||||
| .icon-download-cloud:before { content: '\f0ed'; } /* '' */ | .icon-download-cloud:before { content: '\f0ed'; } /* '' */ | ||||||
| .icon-upload-cloud:before { content: '\f0ee'; } /* '' */ | .icon-upload-cloud:before { content: '\f0ee'; } /* '' */ | ||||||
|  | .icon-user-md:before { content: '\f0f0'; } /* '' */ | ||||||
|  | .icon-doc-text:before { content: '\f0f6'; } /* '' */ | ||||||
|  | .icon-building:before { content: '\f0f7'; } /* '' */ | ||||||
|  | .icon-desktop:before { content: '\f108'; } /* '' */ | ||||||
|  | .icon-laptop:before { content: '\f109'; } /* '' */ | ||||||
|  | .icon-tablet:before { content: '\f10a'; } /* '' */ | ||||||
|  | .icon-mobile:before { content: '\f10b'; } /* '' */ | ||||||
| .icon-spinner:before { content: '\f110'; } /* '' */ | .icon-spinner:before { content: '\f110'; } /* '' */ | ||||||
| .icon-reply:before { content: '\f112'; } /* '' */ | .icon-reply:before { content: '\f112'; } /* '' */ | ||||||
|  | .icon-folder-empty:before { content: '\f114'; } /* '' */ | ||||||
|  | .icon-folder-open-empty:before { content: '\f115'; } /* '' */ | ||||||
|  | .icon-flag-checkered:before { content: '\f11e'; } /* '' */ | ||||||
| .icon-reply-all:before { content: '\f122'; } /* '' */ | .icon-reply-all:before { content: '\f122'; } /* '' */ | ||||||
|  | .icon-fork:before { content: '\f126'; } /* '' */ | ||||||
|  | .icon-unlink:before { content: '\f127'; } /* '' */ | ||||||
| .icon-info:before { content: '\f129'; } /* '' */ | .icon-info:before { content: '\f129'; } /* '' */ | ||||||
|  | .icon-puzzle:before { content: '\f12e'; } /* '' */ | ||||||
|  | .icon-calendar-empty:before { content: '\f133'; } /* '' */ | ||||||
|  | .icon-anchor:before { content: '\f13d'; } /* '' */ | ||||||
|  | .icon-ok-squared:before { content: '\f14a'; } /* '' */ | ||||||
| .icon-pencil-squared:before { content: '\f14b'; } /* '' */ | .icon-pencil-squared:before { content: '\f14b'; } /* '' */ | ||||||
| .icon-export-alt:before { content: '\f14d'; } /* '' */ | .icon-export-alt:before { content: '\f14d'; } /* '' */ | ||||||
|  | .icon-thumbs-up-alt:before { content: '\f164'; } /* '' */ | ||||||
|  | .icon-thumbs-down-alt:before { content: '\f165'; } /* '' */ | ||||||
| .icon-youtube:before { content: '\f167'; } /* '' */ | .icon-youtube:before { content: '\f167'; } /* '' */ | ||||||
| .icon-dropbox:before { content: '\f16b'; } /* '' */ | .icon-dropbox:before { content: '\f16b'; } /* '' */ | ||||||
|  | .icon-apple:before { content: '\f179'; } /* '' */ | ||||||
|  | .icon-android:before { content: '\f17b'; } /* '' */ | ||||||
|  | .icon-sun:before { content: '\f185'; } /* '' */ | ||||||
|  | .icon-box:before { content: '\f187'; } /* '' */ | ||||||
|  | .icon-fax:before { content: '\f1ac'; } /* '' */ | ||||||
|  | .icon-cube:before { content: '\f1b2'; } /* '' */ | ||||||
| .icon-cubes:before { content: '\f1b3'; } /* '' */ | .icon-cubes:before { content: '\f1b3'; } /* '' */ | ||||||
|  | .icon-recycle:before { content: '\f1b8'; } /* '' */ | ||||||
| .icon-database:before { content: '\f1c0'; } /* '' */ | .icon-database:before { content: '\f1c0'; } /* '' */ | ||||||
|  | .icon-codeopen:before { content: '\f1cb'; } /* '' */ | ||||||
|  | .icon-sliders:before { content: '\f1de'; } /* '' */ | ||||||
|  | .icon-bomb:before { content: '\f1e2'; } /* '' */ | ||||||
|  | .icon-plug:before { content: '\f1e6'; } /* '' */ | ||||||
|  | .icon-newspaper:before { content: '\f1ea'; } /* '' */ | ||||||
|  | .icon-cc-visa:before { content: '\f1f0'; } /* '' */ | ||||||
|  | .icon-cc-mastercard:before { content: '\f1f1'; } /* '' */ | ||||||
|  | .icon-cc-paypal:before { content: '\f1f4'; } /* '' */ | ||||||
| .icon-trash:before { content: '\f1f8'; } /* '' */ | .icon-trash:before { content: '\f1f8'; } /* '' */ | ||||||
|  | .icon-chart-area:before { content: '\f1fe'; } /* '' */ | ||||||
|  | .icon-chart-pie:before { content: '\f200'; } /* '' */ | ||||||
|  | .icon-chart-line:before { content: '\f201'; } /* '' */ | ||||||
|  | .icon-toggle-off:before { content: '\f204'; } /* '' */ | ||||||
|  | .icon-toggle-on:before { content: '\f205'; } /* '' */ | ||||||
|  | .icon-cc:before { content: '\f20a'; } /* '' */ | ||||||
|  | .icon-diamond:before { content: '\f219'; } /* '' */ | ||||||
|  | .icon-user-secret:before { content: '\f21b'; } /* '' */ | ||||||
|  | .icon-server:before { content: '\f233'; } /* '' */ | ||||||
| .icon-user-plus:before { content: '\f234'; } /* '' */ | .icon-user-plus:before { content: '\f234'; } /* '' */ | ||||||
| .icon-user-times:before { content: '\f235'; } /* '' */ | .icon-user-times:before { content: '\f235'; } /* '' */ | ||||||
| .icon-expeditedssl:before { content: '\f23e'; } /* '' */ | .icon-expeditedssl:before { content: '\f23e'; } /* '' */ | ||||||
|  | .icon-object-group:before { content: '\f247'; } /* '' */ | ||||||
|  | .icon-object-ungroup:before { content: '\f248'; } /* '' */ | ||||||
|  | .icon-sticky-note:before { content: '\f249'; } /* '' */ | ||||||
|  | .icon-clone:before { content: '\f24d'; } /* '' */ | ||||||
|  | .icon-television:before { content: '\f26c'; } /* '' */ | ||||||
|  | .icon-map-signs:before { content: '\f277'; } /* '' */ | ||||||
| .icon-shopping-basket:before { content: '\f291'; } /* '' */ | .icon-shopping-basket:before { content: '\f291'; } /* '' */ | ||||||
|  | .icon-wpforms:before { content: '\f298'; } /* '' */ | ||||||
|  | .icon-handshake-o:before { content: '\f2b5'; } /* '' */ | ||||||
|  | .icon-envelope-open:before { content: '\f2b6'; } /* '' */ | ||||||
|  | .icon-envelope-open-o:before { content: '\f2b7'; } /* '' */ | ||||||
|  | .icon-address-card-o:before { content: '\f2bc'; } /* '' */ | ||||||
| .icon-user-circle-o:before { content: '\f2be'; } /* '' */ | .icon-user-circle-o:before { content: '\f2be'; } /* '' */ | ||||||
|  | .icon-id-badge:before { content: '\f2c1'; } /* '' */ | ||||||
| .icon-id-card-o:before { content: '\f2c3'; } /* '' */ | .icon-id-card-o:before { content: '\f2c3'; } /* '' */ | ||||||
| @@ -34,25 +34,126 @@ | |||||||
| .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-export { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-export { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tags { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-flag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-print { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-trash-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-bar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-spin6 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-spin6 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-list-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-umbrella { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-briefcase { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-credit-card { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-road { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-calendar-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-database-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-clipboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-clipboard-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-buffer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-link-ext { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-hdd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-resize-full-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-docs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-docs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-gauge { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chat-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sitemap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-md { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-doc-text { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-building { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-laptop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tablet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-folder-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-folder-open-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-flag-checkered { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-fork { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-unlink { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-puzzle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-calendar-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-anchor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-ok-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-down-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-apple { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-android { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-box { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-fax { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-recycle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-codeopen { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sliders { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-bomb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-plug { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-newspaper { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc-visa { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc-mastercard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc-paypal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-area { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-pie { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-line { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-toggle-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-toggle-on { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-secret { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-server { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-expeditedssl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-expeditedssl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-object-group { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-object-ungroup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sticky-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-clone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-television { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-map-signs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-wpforms { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-handshake-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-envelope-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-envelope-open-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-address-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-id-badge { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-id-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-id-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| @@ -45,25 +45,126 @@ | |||||||
| .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-cancel { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-minus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-export { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-export { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-heart { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-star { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-th-list { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-th-large { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-th { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-picture { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-link { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-attach { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-eye { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-eye-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tags { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-flag { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-up { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-down { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-print { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-spin4 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-trash-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-doc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-calendar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-bar { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-spin6 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-spin6 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-list-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-globe { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-inbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-umbrella { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-flash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-briefcase { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-key { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-credit-card { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-road { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-calendar-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-database-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-clipboard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-clipboard-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-buffer { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-link-ext { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-hdd { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tasks { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-resize-full-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-docs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-docs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-money { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-mail-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-gauge { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chat-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sitemap { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-lightbulb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-download-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-upload-cloud { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-md { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-doc-text { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-building { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-desktop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-laptop { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-tablet { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-mobile { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-spinner { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-reply { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-folder-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-folder-open-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-flag-checkered { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-reply-all { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-fork { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-unlink { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-info { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-puzzle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-calendar-empty { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-anchor { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-ok-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-pencil-squared { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-export-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-up-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-thumbs-down-alt { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-youtube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-dropbox { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-apple { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-android { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sun { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-box { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-fax { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cube { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-cubes { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-recycle { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-database { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-codeopen { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sliders { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-bomb { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-plug { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-newspaper { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc-visa { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc-mastercard { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc-paypal { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-trash { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-area { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-pie { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-chart-line { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-toggle-off { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-toggle-on { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-cc { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-diamond { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-user-secret { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-server { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-user-plus { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-user-times { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-expeditedssl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-expeditedssl { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-object-group { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-object-ungroup { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-sticky-note { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-clone { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-television { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-map-signs { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-shopping-basket { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-wpforms { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-handshake-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-envelope-open { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-envelope-open-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-address-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-user-circle-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
|  | .icon-id-badge { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| .icon-id-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | .icon-id-card-o { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } | ||||||
| @@ -1,11 +1,11 @@ | |||||||
| @font-face { | @font-face { | ||||||
|   font-family: 'clonos'; |   font-family: 'clonos'; | ||||||
|   src: url('/font/clonos.eot?85054221'); |   src: url('../font/clonos.eot?73410056'); | ||||||
|   src: url('/font/clonos.eot?85054221#iefix') format('embedded-opentype'), |   src: url('../font/clonos.eot?73410056#iefix') format('embedded-opentype'), | ||||||
|        url('/font/clonos.woff2?85054221') format('woff2'), |        url('../font/clonos.woff2?73410056') format('woff2'), | ||||||
|        url('/font/clonos.woff?85054221') format('woff'), |        url('../font/clonos.woff?73410056') format('woff'), | ||||||
|        url('/font/clonos.ttf?85054221') format('truetype'), |        url('../font/clonos.ttf?73410056') format('truetype'), | ||||||
|        url('/font/clonos.svg?85054221#clonos') format('svg'); |        url('../font/clonos.svg?73410056#clonos') format('svg'); | ||||||
|   font-weight: normal; |   font-weight: normal; | ||||||
|   font-style: normal; |   font-style: normal; | ||||||
| } | } | ||||||
| @@ -15,7 +15,7 @@ | |||||||
| @media screen and (-webkit-min-device-pixel-ratio:0) { | @media screen and (-webkit-min-device-pixel-ratio:0) { | ||||||
|   @font-face { |   @font-face { | ||||||
|     font-family: 'clonos'; |     font-family: 'clonos'; | ||||||
|     src: url('../font/clonos.svg?85054221#clonos') format('svg'); |     src: url('../font/clonos.svg?73410056#clonos') format('svg'); | ||||||
|   } |   } | ||||||
| } | } | ||||||
| */ | */ | ||||||
| @@ -90,25 +90,126 @@ | |||||||
| .icon-cancel:before { content: '\e820'; } /* '' */ | .icon-cancel:before { content: '\e820'; } /* '' */ | ||||||
| .icon-minus:before { content: '\e821'; } /* '' */ | .icon-minus:before { content: '\e821'; } /* '' */ | ||||||
| .icon-export:before { content: '\e822'; } /* '' */ | .icon-export:before { content: '\e822'; } /* '' */ | ||||||
|  | .icon-heart:before { content: '\e823'; } /* '' */ | ||||||
|  | .icon-star:before { content: '\e824'; } /* '' */ | ||||||
|  | .icon-th-list:before { content: '\e825'; } /* '' */ | ||||||
|  | .icon-th-large:before { content: '\e826'; } /* '' */ | ||||||
|  | .icon-th:before { content: '\e827'; } /* '' */ | ||||||
|  | .icon-mail:before { content: '\e828'; } /* '' */ | ||||||
|  | .icon-picture:before { content: '\e829'; } /* '' */ | ||||||
|  | .icon-link:before { content: '\e82a'; } /* '' */ | ||||||
|  | .icon-attach:before { content: '\e82b'; } /* '' */ | ||||||
|  | .icon-eye:before { content: '\e82c'; } /* '' */ | ||||||
|  | .icon-eye-off:before { content: '\e82d'; } /* '' */ | ||||||
|  | .icon-tag:before { content: '\e82e'; } /* '' */ | ||||||
|  | .icon-tags:before { content: '\e82f'; } /* '' */ | ||||||
|  | .icon-flag:before { content: '\e830'; } /* '' */ | ||||||
|  | .icon-thumbs-up:before { content: '\e831'; } /* '' */ | ||||||
|  | .icon-thumbs-down:before { content: '\e832'; } /* '' */ | ||||||
|  | .icon-print:before { content: '\e833'; } /* '' */ | ||||||
| .icon-spin4:before { content: '\e834'; } /* '' */ | .icon-spin4:before { content: '\e834'; } /* '' */ | ||||||
|  | .icon-trash-empty:before { content: '\e835'; } /* '' */ | ||||||
|  | .icon-doc:before { content: '\e836'; } /* '' */ | ||||||
|  | .icon-calendar:before { content: '\e837'; } /* '' */ | ||||||
|  | .icon-chart-bar:before { content: '\e838'; } /* '' */ | ||||||
| .icon-spin6:before { content: '\e839'; } /* '' */ | .icon-spin6:before { content: '\e839'; } /* '' */ | ||||||
|  | .icon-list-alt:before { content: '\e83a'; } /* '' */ | ||||||
|  | .icon-basket:before { content: '\e83b'; } /* '' */ | ||||||
|  | .icon-globe:before { content: '\e83c'; } /* '' */ | ||||||
|  | .icon-inbox:before { content: '\e83d'; } /* '' */ | ||||||
|  | .icon-cloud:before { content: '\e83e'; } /* '' */ | ||||||
|  | .icon-umbrella:before { content: '\e83f'; } /* '' */ | ||||||
|  | .icon-flash:before { content: '\e840'; } /* '' */ | ||||||
|  | .icon-briefcase:before { content: '\e841'; } /* '' */ | ||||||
|  | .icon-key:before { content: '\e842'; } /* '' */ | ||||||
|  | .icon-credit-card:before { content: '\e843'; } /* '' */ | ||||||
|  | .icon-road:before { content: '\e844'; } /* '' */ | ||||||
|  | .icon-calendar-1:before { content: '\e845'; } /* '' */ | ||||||
|  | .icon-database-1:before { content: '\e846'; } /* '' */ | ||||||
|  | .icon-clipboard:before { content: '\e847'; } /* '' */ | ||||||
|  | .icon-clipboard-1:before { content: '\e848'; } /* '' */ | ||||||
|  | .icon-buffer:before { content: '\e849'; } /* '' */ | ||||||
|  | .icon-link-ext:before { content: '\f08e'; } /* '' */ | ||||||
|  | .icon-hdd:before { content: '\f0a0'; } /* '' */ | ||||||
|  | .icon-tasks:before { content: '\f0ae'; } /* '' */ | ||||||
|  | .icon-resize-full-alt:before { content: '\f0b2'; } /* '' */ | ||||||
| .icon-docs:before { content: '\f0c5'; } /* '' */ | .icon-docs:before { content: '\f0c5'; } /* '' */ | ||||||
|  | .icon-money:before { content: '\f0d6'; } /* '' */ | ||||||
|  | .icon-mail-alt:before { content: '\f0e0'; } /* '' */ | ||||||
|  | .icon-gauge:before { content: '\f0e4'; } /* '' */ | ||||||
|  | .icon-chat-empty:before { content: '\f0e6'; } /* '' */ | ||||||
|  | .icon-sitemap:before { content: '\f0e8'; } /* '' */ | ||||||
|  | .icon-lightbulb:before { content: '\f0eb'; } /* '' */ | ||||||
| .icon-download-cloud:before { content: '\f0ed'; } /* '' */ | .icon-download-cloud:before { content: '\f0ed'; } /* '' */ | ||||||
| .icon-upload-cloud:before { content: '\f0ee'; } /* '' */ | .icon-upload-cloud:before { content: '\f0ee'; } /* '' */ | ||||||
|  | .icon-user-md:before { content: '\f0f0'; } /* '' */ | ||||||
|  | .icon-doc-text:before { content: '\f0f6'; } /* '' */ | ||||||
|  | .icon-building:before { content: '\f0f7'; } /* '' */ | ||||||
|  | .icon-desktop:before { content: '\f108'; } /* '' */ | ||||||
|  | .icon-laptop:before { content: '\f109'; } /* '' */ | ||||||
|  | .icon-tablet:before { content: '\f10a'; } /* '' */ | ||||||
|  | .icon-mobile:before { content: '\f10b'; } /* '' */ | ||||||
| .icon-spinner:before { content: '\f110'; } /* '' */ | .icon-spinner:before { content: '\f110'; } /* '' */ | ||||||
| .icon-reply:before { content: '\f112'; } /* '' */ | .icon-reply:before { content: '\f112'; } /* '' */ | ||||||
|  | .icon-folder-empty:before { content: '\f114'; } /* '' */ | ||||||
|  | .icon-folder-open-empty:before { content: '\f115'; } /* '' */ | ||||||
|  | .icon-flag-checkered:before { content: '\f11e'; } /* '' */ | ||||||
| .icon-reply-all:before { content: '\f122'; } /* '' */ | .icon-reply-all:before { content: '\f122'; } /* '' */ | ||||||
|  | .icon-fork:before { content: '\f126'; } /* '' */ | ||||||
|  | .icon-unlink:before { content: '\f127'; } /* '' */ | ||||||
| .icon-info:before { content: '\f129'; } /* '' */ | .icon-info:before { content: '\f129'; } /* '' */ | ||||||
|  | .icon-puzzle:before { content: '\f12e'; } /* '' */ | ||||||
|  | .icon-calendar-empty:before { content: '\f133'; } /* '' */ | ||||||
|  | .icon-anchor:before { content: '\f13d'; } /* '' */ | ||||||
|  | .icon-ok-squared:before { content: '\f14a'; } /* '' */ | ||||||
| .icon-pencil-squared:before { content: '\f14b'; } /* '' */ | .icon-pencil-squared:before { content: '\f14b'; } /* '' */ | ||||||
| .icon-export-alt:before { content: '\f14d'; } /* '' */ | .icon-export-alt:before { content: '\f14d'; } /* '' */ | ||||||
|  | .icon-thumbs-up-alt:before { content: '\f164'; } /* '' */ | ||||||
|  | .icon-thumbs-down-alt:before { content: '\f165'; } /* '' */ | ||||||
| .icon-youtube:before { content: '\f167'; } /* '' */ | .icon-youtube:before { content: '\f167'; } /* '' */ | ||||||
| .icon-dropbox:before { content: '\f16b'; } /* '' */ | .icon-dropbox:before { content: '\f16b'; } /* '' */ | ||||||
|  | .icon-apple:before { content: '\f179'; } /* '' */ | ||||||
|  | .icon-android:before { content: '\f17b'; } /* '' */ | ||||||
|  | .icon-sun:before { content: '\f185'; } /* '' */ | ||||||
|  | .icon-box:before { content: '\f187'; } /* '' */ | ||||||
|  | .icon-fax:before { content: '\f1ac'; } /* '' */ | ||||||
|  | .icon-cube:before { content: '\f1b2'; } /* '' */ | ||||||
| .icon-cubes:before { content: '\f1b3'; } /* '' */ | .icon-cubes:before { content: '\f1b3'; } /* '' */ | ||||||
|  | .icon-recycle:before { content: '\f1b8'; } /* '' */ | ||||||
| .icon-database:before { content: '\f1c0'; } /* '' */ | .icon-database:before { content: '\f1c0'; } /* '' */ | ||||||
|  | .icon-codeopen:before { content: '\f1cb'; } /* '' */ | ||||||
|  | .icon-sliders:before { content: '\f1de'; } /* '' */ | ||||||
|  | .icon-bomb:before { content: '\f1e2'; } /* '' */ | ||||||
|  | .icon-plug:before { content: '\f1e6'; } /* '' */ | ||||||
|  | .icon-newspaper:before { content: '\f1ea'; } /* '' */ | ||||||
|  | .icon-cc-visa:before { content: '\f1f0'; } /* '' */ | ||||||
|  | .icon-cc-mastercard:before { content: '\f1f1'; } /* '' */ | ||||||
|  | .icon-cc-paypal:before { content: '\f1f4'; } /* '' */ | ||||||
| .icon-trash:before { content: '\f1f8'; } /* '' */ | .icon-trash:before { content: '\f1f8'; } /* '' */ | ||||||
|  | .icon-chart-area:before { content: '\f1fe'; } /* '' */ | ||||||
|  | .icon-chart-pie:before { content: '\f200'; } /* '' */ | ||||||
|  | .icon-chart-line:before { content: '\f201'; } /* '' */ | ||||||
|  | .icon-toggle-off:before { content: '\f204'; } /* '' */ | ||||||
|  | .icon-toggle-on:before { content: '\f205'; } /* '' */ | ||||||
|  | .icon-cc:before { content: '\f20a'; } /* '' */ | ||||||
|  | .icon-diamond:before { content: '\f219'; } /* '' */ | ||||||
|  | .icon-user-secret:before { content: '\f21b'; } /* '' */ | ||||||
|  | .icon-server:before { content: '\f233'; } /* '' */ | ||||||
| .icon-user-plus:before { content: '\f234'; } /* '' */ | .icon-user-plus:before { content: '\f234'; } /* '' */ | ||||||
| .icon-user-times:before { content: '\f235'; } /* '' */ | .icon-user-times:before { content: '\f235'; } /* '' */ | ||||||
| .icon-expeditedssl:before { content: '\f23e'; } /* '' */ | .icon-expeditedssl:before { content: '\f23e'; } /* '' */ | ||||||
|  | .icon-object-group:before { content: '\f247'; } /* '' */ | ||||||
|  | .icon-object-ungroup:before { content: '\f248'; } /* '' */ | ||||||
|  | .icon-sticky-note:before { content: '\f249'; } /* '' */ | ||||||
|  | .icon-clone:before { content: '\f24d'; } /* '' */ | ||||||
|  | .icon-television:before { content: '\f26c'; } /* '' */ | ||||||
|  | .icon-map-signs:before { content: '\f277'; } /* '' */ | ||||||
| .icon-shopping-basket:before { content: '\f291'; } /* '' */ | .icon-shopping-basket:before { content: '\f291'; } /* '' */ | ||||||
|  | .icon-wpforms:before { content: '\f298'; } /* '' */ | ||||||
|  | .icon-handshake-o:before { content: '\f2b5'; } /* '' */ | ||||||
|  | .icon-envelope-open:before { content: '\f2b6'; } /* '' */ | ||||||
|  | .icon-envelope-open-o:before { content: '\f2b7'; } /* '' */ | ||||||
|  | .icon-address-card-o:before { content: '\f2bc'; } /* '' */ | ||||||
| .icon-user-circle-o:before { content: '\f2be'; } /* '' */ | .icon-user-circle-o:before { content: '\f2be'; } /* '' */ | ||||||
|  | .icon-id-badge:before { content: '\f2c1'; } /* '' */ | ||||||
| .icon-id-card-o:before { content: '\f2c3'; } /* '' */ | .icon-id-card-o:before { content: '\f2c3'; } /* '' */ | ||||||
| @@ -1,7 +1,7 @@ | |||||||
| <?xml version="1.0" standalone="no"?> | <?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"> | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||||
| <svg xmlns="http://www.w3.org/2000/svg"> | <svg xmlns="http://www.w3.org/2000/svg"> | ||||||
| <metadata>Copyright (C) 2016 by original authors @ fontello.com</metadata> | <metadata>Copyright (C) 2017 by original authors @ fontello.com</metadata> | ||||||
| <defs> | <defs> | ||||||
| <font id="clonos" horiz-adv-x="1000" > | <font id="clonos" horiz-adv-x="1000" > | ||||||
| <font-face font-family="clonos" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> | <font-face font-family="clonos" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" /> | ||||||
| @@ -76,48 +76,250 @@ | |||||||
|  |  | ||||||
| <glyph glyph-name="export" unicode="" d="M786 298v-144q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h142q7 0 13-6t5-12q0-15-15-18-43-15-74-34-5-2-9-2h-62q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v119q0 11 10 16 16 7 31 21 8 9 19 4 12-5 12-16z m132 277l-214-214q-10-11-25-11-7 0-14 3-22 9-22 33v107h-89q-181 0-245-73-66-77-41-264 2-13-11-19-5-1-7-1-9 0-14 7-6 8-12 17t-22 39-28 55-21 64-10 68q0 27 2 51t8 50 15 49 27 45 38 42 52 34 70 27 89 17 110 6h89v107q0 24 22 33 7 3 14 3 14 0 25-11l214-214q11-10 11-25t-11-25z" horiz-adv-x="928.6" /> | <glyph glyph-name="export" unicode="" d="M786 298v-144q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h142q7 0 13-6t5-12q0-15-15-18-43-15-74-34-5-2-9-2h-62q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v119q0 11 10 16 16 7 31 21 8 9 19 4 12-5 12-16z m132 277l-214-214q-10-11-25-11-7 0-14 3-22 9-22 33v107h-89q-181 0-245-73-66-77-41-264 2-13-11-19-5-1-7-1-9 0-14 7-6 8-12 17t-22 39-28 55-21 64-10 68q0 27 2 51t8 50 15 49 27 45 38 42 52 34 70 27 89 17 110 6h89v107q0 24 22 33 7 3 14 3 14 0 25-11l214-214q11-10 11-25t-11-25z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="heart" unicode="" d="M500-79q-14 0-25 10l-348 336q-5 5-15 15t-31 37-38 54-30 67-13 77q0 123 71 192t196 70q34 0 70-12t67-33 54-38 42-38q20 20 42 38t54 38 67 33 70 12q125 0 196-70t71-192q0-123-128-251l-347-335q-10-10-25-10z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="star" unicode="" d="M929 489q0-12-15-27l-202-197 48-279q0-4 0-12 0-11-6-19t-17-9q-10 0-22 7l-251 132-250-132q-12-7-23-7-11 0-17 9t-6 19q0 4 1 12l48 279-203 197q-14 15-14 27 0 21 31 26l280 40 126 254q11 23 27 23t28-23l125-254 280-40q32-5 32-26z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="th-list" unicode="" d="M286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m714-285v-108q0-22-16-37t-38-16h-535q-23 0-38 16t-16 37v108q0 22 16 38t38 15h535q23 0 38-15t16-38z m-714 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m714-286v-107q0-22-16-38t-38-15h-535q-23 0-38 15t-16 38v107q0 23 16 38t38 16h535q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-535q-23 0-38 16t-16 38v107q0 22 16 38t38 16h535q23 0 38-16t16-38z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="th-large" unicode="" d="M429 279v-215q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v215q0 29 21 50t50 21h286q29 0 50-21t22-50z m0 428v-214q0-29-22-50t-50-22h-286q-29 0-50 22t-21 50v214q0 29 21 50t50 22h286q29 0 50-22t22-50z m500-428v-215q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v215q0 29 21 50t50 21h286q29 0 50-21t22-50z m0 428v-214q0-29-22-50t-50-22h-286q-29 0-50 22t-21 50v214q0 29 21 50t50 22h286q29 0 50-22t22-50z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="th" unicode="" d="M286 154v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m0 285v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-23 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-23 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m357-285v-108q0-22-16-37t-38-16h-178q-22 0-38 16t-16 37v108q0 22 16 38t38 15h178q23 0 38-15t16-38z m-357 571v-107q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z m357-286v-107q0-22-16-38t-38-15h-178q-22 0-38 15t-16 38v107q0 23 16 38t38 16h178q23 0 38-16t16-38z m0 286v-107q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v107q0 22 16 38t38 16h178q23 0 38-16t16-38z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="mail" unicode="" d="M929 11v428q-18-20-39-36-149-115-238-189-28-24-46-37t-48-28-57-13h-2q-26 0-57 13t-48 28-46 37q-88 74-238 189-21 16-39 36v-428q0-7 6-13t12-5h822q7 0 12 5t6 13z m0 586v14t-1 7-1 7-3 5-5 4-8 2h-822q-7 0-12-6t-6-12q0-94 83-159 107-84 223-176 4-3 20-17t25-21 25-17 28-16 24-5h2q11 0 24 5t28 16 25 17 25 21 20 17q116 92 224 176 30 24 56 65t26 73z m71 21v-607q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v607q0 37 26 63t63 26h822q37 0 63-26t26-63z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="picture" unicode="" d="M357 529q0-45-31-76t-76-32-76 32-31 76 31 76 76 31 76-31 31-76z m572-215v-250h-786v107l178 179 90-89 285 285z m53 393h-893q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h893q7 0 13 5t5 13v678q0 8-5 13t-13 5z m89-18v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="link" unicode="" d="M813 171q0 23-16 38l-116 116q-16 16-38 16-24 0-40-18 1-1 10-10t12-12 9-11 7-14 2-15q0-23-16-38t-38-16q-8 0-15 2t-14 7-11 9-12 12-10 10q-19-17-19-40 0-23 16-38l115-116q15-15 38-15 22 0 38 15l82 81q16 16 16 37z m-393 394q0 22-15 38l-115 115q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l116-116q15-15 38-15 23 0 40 17-2 2-11 11t-12 12-8 10-7 14-2 16q0 22 15 38t38 15q9 0 16-2t14-7 11-8 12-12 10-11q18 17 18 41z m500-394q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-115 115q-46 47-46 114 0 68 49 116l-49 49q-48-49-116-49-67 0-114 47l-116 116q-47 47-47 114t47 113l82 82q47 46 114 46 67 0 114-47l115-116q46-46 46-113 0-69-49-117l49-49q48 49 116 49 67 0 114-47l116-116q47-47 47-114z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="attach" unicode="" d="M784 77q0-65-45-109t-109-44q-75 0-131 55l-434 434q-63 64-63 151 0 89 62 150t150 62q88 0 152-63l338-338q5-5 5-12 0-9-17-26t-26-17q-7 0-12 5l-339 339q-44 43-101 43-59 0-100-42t-40-101q0-58 42-101l433-433q35-36 81-36 36 0 59 24t24 59q0 46-35 81l-325 324q-14 14-33 14-16 0-27-11t-11-27q0-18 14-33l229-228q6-6 6-13 0-9-18-26t-26-17q-6 0-12 5l-229 229q-35 34-35 83 0 46 32 78t77 32q49 0 84-35l324-325q56-54 56-131z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="eye" unicode="" d="M929 314q-85 132-213 197 34-58 34-125 0-103-73-177t-177-73-177 73-73 177q0 67 34 125-128-65-213-197 75-114 187-182t242-68 243 68 186 182z m-402 215q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m473-215q0-19-11-38-78-129-210-206t-279-77-279 77-210 206q-11 19-11 38t11 39q78 128 210 205t279 78 279-78 210-205q11-20 11-39z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="eye-off" unicode="" d="M310 105l43 79q-48 35-76 88t-27 114q0 67 34 125-128-65-213-197 94-144 239-209z m217 424q0 11-8 19t-19 7q-70 0-120-50t-50-119q0-11 8-19t19-8 19 8 8 19q0 48 34 82t82 34q11 0 19 8t8 19z m202 106q0-4 0-5-59-105-176-316t-176-316l-28-50q-5-9-15-9-7 0-75 39-9 6-9 16 0 7 25 49-80 36-147 96t-117 137q-11 17-11 38t11 39q86 131 212 207t277 76q50 0 100-10l31 54q5 9 15 9 3 0 10-3t18-9 18-10 18-10 10-7q9-5 9-15z m21-249q0-78-44-142t-117-91l157 280q4-25 4-47z m250-72q0-19-11-38-22-36-61-81-84-96-194-149t-234-53l41 74q119 10 219 76t169 171q-65 100-158 164l35 63q53-36 102-85t81-103q11-19 11-39z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="tag" unicode="" d="M250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="tags" unicode="" d="M250 600q0 30-21 51t-50 20-51-20-21-51 21-50 51-21 50 21 21 50z m595-321q0-30-20-51l-274-274q-22-21-51-21-30 0-50 21l-399 399q-21 21-36 57t-15 65v232q0 29 21 50t50 22h233q29 0 65-15t57-36l399-399q20-21 20-50z m215 0q0-30-21-51l-274-274q-22-21-51-21-20 0-33 8t-29 25l262 262q21 21 21 51 0 29-21 50l-399 399q-21 21-57 36t-65 15h125q29 0 65-15t57-36l399-399q21-21 21-50z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="flag" unicode="" d="M179 707q0-40-36-61v-707q0-7-5-12t-13-6h-36q-7 0-12 6t-6 12v707q-35 21-35 61 0 30 21 51t50 21 51-21 21-51z m821-36v-425q0-14-7-22t-22-15q-120-65-206-65-34 0-69 12t-60 27-65 27-79 12q-107 0-259-81-10-5-19-5-14 0-25 10t-10 25v415q0 17 17 30 12 8 44 24 132 67 235 67 60 0 112-16t122-49q21-11 49-11 30 0 65 12t62 26 49 26 30 12q15 0 25-10t11-26z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="thumbs-up" unicode="" d="M143 100q0 15-11 25t-25 11-25-11-11-25 11-25 25-11 25 11 11 25z m643 321q0 29-22 50t-50 22h-196q0 32 27 89t26 89q0 55-17 81t-72 27q-14-15-21-48t-17-70-33-61q-13-13-43-51-2-3-13-16t-18-23-19-24-22-25-22-19-22-15-20-6h-18v-357h18q7 0 18-1t18-4 21-6 20-7 20-6 16-6q118-41 191-41h67q107 0 107 93 0 15-2 31 16 9 26 30t10 41-10 38q29 28 29 67 0 14-5 31t-14 26q18 1 30 26t12 45z m71 1q0-50-27-91 5-18 5-38 0-43-21-81 1-12 1-24 0-56-33-99 0-78-48-123t-126-45h-72q-54 0-106 13t-121 36q-65 23-77 23h-161q-29 0-50 21t-21 50v357q0 30 21 51t50 21h153q20 13 77 86 32 42 60 72 13 14 19 48t17 70 35 60q22 21 50 21 47 0 84-18t57-57 20-104q0-51-27-107h98q58 0 101-42t42-100z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="thumbs-down" unicode="" d="M143 600q0 15-11 25t-25 11-25-11-11-25 11-25 25-11 25 11 11 25z m643-321q0 19-12 45t-30 26q8 10 14 27t5 31q0 38-29 66 10 17 10 38 0 21-10 41t-26 30q2 16 2 31 0 47-27 70t-76 23h-71q-73 0-191-41-3-1-16-5t-20-7-20-7-21-6-18-4-18-1h-18v-357h18q9 0 20-5t22-15 22-20 22-25 19-24 18-22 13-17q30-38 43-51 23-24 33-61t17-70 21-48q54 0 72 27t17 81q0 33-26 89t-27 89h196q28 0 50 22t22 50z m71-1q0-57-42-100t-101-42h-98q27-55 27-107 0-66-20-104-19-39-57-57t-84-18q-28 0-50 21-19 18-30 45t-14 51-10 47-17 36q-27 28-60 71-57 73-77 86h-153q-29 0-50 21t-21 51v357q0 29 21 50t50 21h161q12 0 77 23 72 24 125 36t111 13h63q78 0 126-44t48-121v-3q33-43 33-99 0-12-1-24 21-38 21-80 0-21-5-39 27-41 27-91z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="print" unicode="" d="M214-7h500v143h-500v-143z m0 357h500v214h-89q-22 0-38 16t-16 38v89h-357v-357z m643-36q0 15-10 25t-26 11-25-11-10-25 10-25 25-10 26 10 10 25z m72 0v-232q0-7-6-12t-12-6h-125v-89q0-22-16-38t-38-16h-536q-22 0-37 16t-16 38v89h-125q-7 0-13 6t-5 12v232q0 44 32 76t75 31h36v304q0 22 16 38t37 16h375q23 0 50-12t42-26l85-85q15-16 27-43t11-49v-143h35q45 0 76-31t32-76z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="spin4" unicode="" d="M498 850c-114 0-228-39-320-116l0 0c173 140 428 130 588-31 134-134 164-332 89-495-10-29-5-50 12-68 21-20 61-23 84 0 3 3 12 15 15 24 71 180 33 393-112 539-99 98-228 147-356 147z m-409-274c-14 0-29-5-39-16-3-3-13-15-15-24-71-180-34-393 112-539 185-185 479-195 676-31l0 0c-173-140-428-130-589 31-134 134-163 333-89 495 11 29 6 50-12 68-11 11-27 17-44 16z" horiz-adv-x="1001" /> | <glyph glyph-name="spin4" unicode="" d="M498 850c-114 0-228-39-320-116l0 0c173 140 428 130 588-31 134-134 164-332 89-495-10-29-5-50 12-68 21-20 61-23 84 0 3 3 12 15 15 24 71 180 33 393-112 539-99 98-228 147-356 147z m-409-274c-14 0-29-5-39-16-3-3-13-15-15-24-71-180-34-393 112-539 185-185 479-195 676-31l0 0c-173-140-428-130-589 31-134 134-163 333-89 495 11 29 6 50-12 68-11 11-27 17-44 16z" horiz-adv-x="1001" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="trash-empty" unicode="" d="M286 439v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m143 0v-321q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q8 0 13-5t5-13z m142 0v-321q0-8-5-13t-12-5h-36q-8 0-13 5t-5 13v321q0 8 5 13t13 5h36q7 0 12-5t5-13z m72-404v529h-500v-529q0-12 4-22t8-15 6-5h464q2 0 6 5t8 15 4 22z m-375 601h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="doc" unicode="" d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-429v-858h715z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="calendar" unicode="" d="M71-79h161v161h-161v-161z m197 0h178v161h-178v-161z m-197 197h161v178h-161v-178z m197 0h178v178h-178v-178z m-197 214h161v161h-161v-161z m411-411h179v161h-179v-161z m-214 411h178v161h-178v-161z m428-411h161v161h-161v-161z m-214 197h179v178h-179v-178z m-196 482v161q0 7-6 12t-12 6h-36q-7 0-12-6t-6-12v-161q0-7 6-13t12-5h36q7 0 12 5t6 13z m410-482h161v178h-161v-178z m-214 214h179v161h-179v-161z m214 0h161v161h-161v-161z m18 268v161q0 7-5 12t-13 6h-35q-7 0-13-6t-5-12v-161q0-7 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="chart-bar" unicode="" d="M357 350v-286h-143v286h143z m214 286v-572h-142v572h142z m572-643v-72h-1143v858h71v-786h1072z m-357 500v-429h-143v429h143z m214 214v-643h-143v643h143z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="spin6" unicode="" d="M855 9c-189-190-520-172-705 13-190 190-200 494-28 695 11 13 21 26 35 34 36 23 85 18 117-13 30-31 35-76 16-112-5-9-9-15-16-22-140-151-145-379-8-516 153-153 407-121 542 34 106 122 142 297 77 451-83 198-305 291-510 222l0 1c236 82 492-24 588-252 71-167 37-355-72-493-11-15-23-29-36-42z" horiz-adv-x="1000" /> | <glyph glyph-name="spin6" unicode="" d="M855 9c-189-190-520-172-705 13-190 190-200 494-28 695 11 13 21 26 35 34 36 23 85 18 117-13 30-31 35-76 16-112-5-9-9-15-16-22-140-151-145-379-8-516 153-153 407-121 542 34 106 122 142 297 77 451-83 198-305 291-510 222l0 1c236 82 492-24 588-252 71-167 37-355-72-493-11-15-23-29-36-42z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="list-alt" unicode="" d="M214 189v-35q0-8-5-13t-13-5h-35q-7 0-13 5t-5 13v35q0 8 5 13t13 5h35q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-5h-35q-7 0-13 5t-5 12v36q0 7 5 13t13 5h35q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-6h-35q-7 0-13 6t-5 12v36q0 7 5 13t13 5h35q8 0 13-5t5-13z m643-286v-35q0-8-5-13t-13-5h-535q-8 0-13 5t-5 13v35q0 8 5 13t13 5h535q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-5h-535q-8 0-13 5t-5 12v36q0 7 5 13t13 5h535q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-6h-535q-8 0-13 6t-5 12v36q0 7 5 13t13 5h535q8 0 13-5t5-13z m72-393v464q0 8-6 13t-12 5h-822q-7 0-12-5t-6-13v-464q0-7 6-12t12-6h822q7 0 12 6t6 12z m71 607v-607q0-37-26-63t-63-26h-822q-36 0-63 26t-26 63v607q0 37 26 63t63 27h822q37 0 63-27t26-63z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="basket" unicode="" d="M357-7q0-29-21-50t-50-22-50 22-22 50 22 50 50 21 50-21 21-50z m500 0q0-29-21-50t-50-22-50 22-22 50 22 50 50 21 50-21 21-50z m72 607v-286q0-13-10-23t-22-12l-583-68q7-34 7-40 0-8-13-35h513q15 0 26-11t10-25-10-25-26-11h-571q-14 0-25 11t-11 25q0 6 5 18t9 20 12 22 8 17l-98 459h-114q-15 0-25 10t-11 25 11 26 25 10h143q9 0 16-3t10-9 8-14 4-14 3-17 3-14h670q14 0 25-11t11-25z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="globe" unicode="" d="M429 779q116 0 215-58t156-156 57-215-57-215-156-156-215-58-216 58-155 156-58 215 58 215 155 156 216 58z m153-291q-2-1-6-5t-7-6q1 0 2 3t3 6 2 4q3 4 12 8 8 4 29 7 19 5 29-6-1 1 5 7t8 7q2 1 8 3t9 4l1 12q-7-1-10 4t-3 12q0-2-4-5 0 4-2 5t-7-1-5-1q-5 2-8 5t-5 9-2 8q-1 3-5 6t-5 6q-1 1-2 3t-1 4-3 3-3 1-4-3-4-5-2-3q-2 1-4 1t-2-1-3-1-3-2q-1-2-4-2t-5-1q8 3-1 6-5 2-9 2 6 2 5 6t-5 8h3q-1 2-5 5t-10 5-7 3q-5 3-19 5t-18 1q-3-4-3-6t2-8 2-7q1-3-3-7t-3-7q0-4 7-9t6-12q-2-4-9-9t-9-6q-3-5-1-11t6-9q1-1 1-2t-2-3-3-2-4-2l-1-1q-7-3-12 3t-7 15q-4 14-9 17-13 4-16-1-3 7-23 15-14 5-33 2 4 0 0 8-4 9-10 7 1 3 2 10t0 7q2 8 7 13 1 1 4 5t5 7 1 4q19-3 28 6 2 3 6 9t6 10q5 3 8 3t8-3 8-3q8-1 8 6t-4 11q7 0 2 10-2 4-5 5-6 2-15-3-4-2 2-4-1 0-6-6t-9-10-9 3q0 0-3 7t-5 8q-5 0-9-9 1 5-6 9t-14 4q11 7-4 15-4 3-12 3t-11-2q-2-4-3-7t3-4 6-3 6-2 5-2q8-6 5-8-1 0-5-2t-6-2-4-2q-1-3 0-8t-1-8q-3 3-5 10t-4 9q4-5-14-3l-5 0q-3 0-9-1t-12-1-7 5q-3 4 0 11 0 2 2 1-2 2-6 5t-6 5q-25-8-52-23 3 0 6 1 3 1 8 4t5 3q19 7 24 4l3 2q7-9 11-14-4 3-17 1-11-3-12-7 4-6 2-10-2 2-6 6t-8 6-8 3q-9 0-13-1-81-45-131-124 4-4 7-4 2-1 3-5t1-6 6 1q5-4 2-10 1 0 25-15 10-10 11-12 2-6-5-10-1 1-5 5t-5 2q-2-3 0-10t6-7q-4 0-5-9t-2-20 0-13l1-1q-2-6 3-19t12-11q-7-1 11-24 3-4 4-5 2-1 7-4t9-6 5-5q2-3 6-13t8-13q-2-3 5-11t6-13q-1 0-2-1t-1 0q2-4 9-8t8-7q1-2 1-6t2-6 4-1q2 11-13 35-8 13-9 16-2 2-4 8t-2 8q1 0 3 0t5-2 4-3 1-1q-1-4 1-10t7-10 10-11 6-7q4-4 8-11t0-8q5 0 11-5t10-11q3-5 4-15t3-13q1-4 5-8t7-5l9-5t7-3q3-2 10-6t12-7q6-2 9-2t8 1 8 2q8 1 16-8t12-12q20-10 30-6-1 0 1-4t4-9 5-8 3-5q3-3 10-8t10-8q4 2 4 5-1-5 4-11t10-6q8 2 8 18-17-8-27 10 0 0-2 3t-2 5-1 4 0 5 2 1q5 0 6 2t-1 7-2 8q-1 4-6 11t-7 8q-3-5-9-4t-9 5q0-1-1-3t-1-4q-7 0-8 0 1 2 1 10t2 13q1 2 3 6t5 9 2 7-3 5-9 1q-11 0-15-11-1-2-2-6t-2-6-5-4q-4-2-14-1t-13 3q-8 4-13 16t-5 20q0 6 1 15t2 14-3 14q2 1 5 5t5 6q2 1 3 1t3 0 2 1 1 3q0 1-2 2-1 1-2 1 4-1 16 1t15-1q9-6 12 1 0 1-1 6t0 7q3-15 16-5 2-1 9-3t9-2q2-1 4-3t3-3 3 0 5 4q5-8 7-13 6-23 10-25 4-2 6-1t3 5 0 8-1 7l-1 5v10l0 4q-8 2-10 7t0 10 9 10q0 1 4 2t9 4 7 4q12 11 8 20 4 0 6 5 0 0-2 2t-5 2-2 2q5 2 1 8 3 2 4 7t4 5q5-6 12-1 5 5 1 9 2 4 11 6t10 5q4-1 5 1t0 7 2 7q2 2 9 5t7 2l9 7q2 2 0 2 10-1 18 6 5 6-4 11 2 4-1 5t-9 4q2 0 7 0t5 1q9 5-3 9-10 2-24-7z m-91-490q115 21 195 106-1 2-7 2t-7 2q-10 4-13 5 1 4-1 7t-5 5-7 5-6 4q-1 1-4 3t-4 3-4 2-5 2-5-1l-2-1q-2 0-3-1t-3-2-2-1 0-2q-12 10-20 13-3 0-6 3t-6 4-6 0-6-3q-3-3-4-9t-1-7q-4 3 0 10t1 10q-1 3-6 2t-6-2-7-5-5-3-4-3-5-5q-2-2-4-6t-2-6q-1 2-7 3t-5 3q1-5 2-19t3-22q4-17-7-26-15-14-16-23-2-12 7-14 0-4-5-12t-4-12q0-3 2-9z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="inbox" unicode="" d="M571 314h176q0 2-1 5t-2 4l-118 277h-395l-118-277q-1-1-2-4t-1-5h176l53-107h179z m286-16v-269q0-15-10-25t-26-11h-785q-15 0-25 11t-11 25v269q0 34 14 68l133 308q5 14 20 24t29 9h465q14 0 29-9t20-24l133-308q14-34 14-68z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cloud" unicode="" d="M1071 207q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 74 40 135t104 91q-1 16-1 24 0 118 84 202t202 84q88 0 159-49t105-129q39 35 93 35 59 0 101-42t42-101q0-42-23-77 72-17 119-75t46-134z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="umbrella" unicode="" d="M500 388v-324q0-58-42-100t-101-43-100 43-43 100q0 15 11 25t25 11 25-11 11-25q0-28 22-49t49-22 50 22 22 49v324q18 6 35 6t36-6z m429-15q0-7-6-13t-12-5q-6 0-13 6-27 25-52 38t-57 13q-38 0-71-21t-58-54q-4-5-10-15t-8-14q-6-9-15-9-10 0-16 9-3 4-9 14t-9 15q-24 34-58 54t-71 21-71-21-57-54q-4-5-10-15t-8-14q-6-9-16-9-10 0-16 9-2 4-8 14t-10 15q-24 34-57 54t-71 21q-33 0-57-13t-52-38q-7-6-13-6-7 0-13 5t-5 13q0 3 1 4 25 102 96 178t166 114 201 38q78 0 154-22t137-63 109-105 64-140q1-1 1-4z m-429 406v-55q-23 1-36 1t-35-1v55q0 14 10 25t25 10 25-10 11-25z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="flash" unicode="" d="M494 534q10-11 4-24l-302-646q-7-14-23-14-2 0-8 1-9 3-14 11t-3 16l110 451-226-56q-2-1-7-1-10 0-17 7-10 8-7 21l112 461q2 8 9 13t15 5h183q11 0 18-7t7-17q0-4-2-10l-96-258 221 54q5 2 7 2 11 0 19-9z" horiz-adv-x="500" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="briefcase" unicode="" d="M357 707h286v72h-286v-72z m643-357v-268q0-37-26-63t-63-26h-822q-36 0-63 26t-26 63v268h375v-89q0-15 11-25t25-11h178q15 0 25 11t11 25v89h375z m-429 0v-71h-142v71h142z m429 268v-214h-1000v214q0 37 26 63t63 26h197v89q0 23 15 38t38 16h322q22 0 38-16t15-38v-89h197q37 0 63-26t26-63z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="key" unicode="" d="M464 564q0 45-31 76t-76 31-76-31-31-76q0-23 11-46-23 11-47 11-44 0-76-32t-31-76 31-75 76-32 76 32 31 75q0 24-10 47 23-11 46-11 45 0 76 31t31 76z m475-393q0-9-27-36t-37-28q-5 0-16 9t-20 19-22 22-13 14l-54-53 123-123q15-16 15-38 0-23-21-45t-46-22q-22 0-37 16l-375 374q-98-73-204-73-91 0-148 57t-57 149q0 89 53 174t138 139 175 53q91 0 148-58t57-148q0-105-73-203l198-199 54 54q-2 2-14 14t-23 21-18 21-9 15q0 10 27 37t37 28q7 0 13-6 3-3 26-25t45-44 49-48 40-44 16-23z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="credit-card" unicode="" d="M982 779q37 0 63-27t26-63v-678q0-37-26-63t-63-27h-893q-36 0-63 27t-26 63v678q0 37 26 63t63 27h893z m-893-72q-7 0-12-5t-6-13v-125h929v125q0 8-5 13t-13 5h-893z m893-714q7 0 13 5t5 13v339h-929v-339q0-7 6-13t12-5h893z m-839 71v72h143v-72h-143z m214 0v72h214v-72h-214z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="road" unicode="" d="M620 294v2l-13 179q-1 7-7 13t-12 5h-104q-7 0-13-5t-6-13l-13-179v-2q-1-6 4-11t12-4h136q7 0 12 4t4 11z m424-260q0-41-26-41h-393q7 0 12 5t5 13l-11 143q-1 7-7 12t-12 5h-152q-7 0-13-5t-6-12l-11-143q-1-7 4-13t12-5h-392q-26 0-26 41 0 30 14 64l233 583q5 11 15 18t21 8h189q-7 0-13-5t-6-13l-8-107q-1-8 4-13t12-5h93q7 0 12 5t5 13l-9 107q0 8-6 13t-13 5h190q11 0 21-8t14-18l233-583q15-34 15-64z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="calendar-1" unicode="" d="M0-150l0 649 893 0 0-649-893 0z m0 705l0 221 109 0 0-141 200 0 0 141 275 0 0-141 199 0 0 141 110 0 0-221-893 0z m168 139l0 156 82 0 0-156-82 0z m59-619q0-112 123-112 47 0 84 32 39 31 39 80 0 68-78 90 48 15 64 48 12 28-2 73-27 62-107 62-51 0-86-26t-37-77l72 0q0 45 49 46 43 0 45-52 0-49-84-47l0-57q48 0 68-8 23-11 23-46 0-57-54-61-43 0-47 55l-72 0z m281 146q49 14 88 47l0-297 70 0 0 371-64 0q-38-37-94-58l0-63z m135 473l0 156 82 0 0-156-82 0z" horiz-adv-x="893" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="database-1" unicode="" d="M0 53l0 594q0 98 131 150t307 53 306-53 131-150l0-594q0-98-131-150t-306-53-307 53-131 150z m63 0q0-59 109-100t266-41 265 41 109 100l0 117q-46-48-150-75t-224-26-225 26-150 75l0-117z m0 188q0-59 109-100t266-41 265 41 109 100l0 117q-46-49-150-75t-224-27-225 27-150 75l0-117z m0 187q0-58 109-99t266-41 265 41 109 99l0 108q-58-45-160-69t-214-23-215 23-160 69l0-108z m0 219q0-59 109-100t266-41 265 41 109 100-109 99-265 41-266-41-109-99z m625-609q0 13 8 22t23 9 22-9 9-22-9-23-22-9-23 9-8 23z m0 187q0 14 8 22t23 9 22-9 9-22-9-22-22-9-23 9-8 22z m0 188q0 13 8 22t23 9 22-9 9-22-9-23-22-9-23 9-8 23z" horiz-adv-x="875" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="clipboard" unicode="" d="M630 750q28 0 49-21t21-49l0-760q0-30-21-50t-49-20l-560 0q-28 0-49 20t-21 50l0 760q0 28 21 49t49 21l60-150 440 0z m-100-100l-360 0-44 100 108 0 36 100 160 0 36-100 110 0z" horiz-adv-x="700" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="clipboard-1" unicode="" d="M0-150l0 904 225 0 0-64-161 0 0-774 579 0 0 774-161 0 0 64 225 0 0-904-707 0z m129 129l0 31 31 0 0-31-31 0z m0 121l0 31 31 0 0-31-31 0z m0 121l0 31 31 0 0-31-31 0z m0 121l0 32 31 0 0-32-31 0z m0 121l0 32 31 0 0-32-31 0z m0 96l0 94 129 0 0 97q0 41 27 71t69 29 69-30 28-70q0-56-2-97l129 0 0-94-449 0z m96-582l0 33 353 0 0-33-353 0z m0 121l0 33 353 0 0-33-353 0z m0 121l0 33 353 0 0-33-353 0z m0 121l0 34 353 0 0-34-353 0z m0 121l0 34 353 0 0-34-353 0z m97 260q0-14 9-22t23-9 22 9 9 22-9 24-22 9-23-9-9-24z" horiz-adv-x="707" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="buffer" unicode="" d="M0 88q11 15 32 26t49 20 40 15q19 0 34-4t33-15 25-13q47-21 260-119 19-4 36 0t39 18 24 14q20 9 77 35t87 39q4 2 42 21t60 24q13 2 28-1t23-7 23-13 18-11 16-6 18-8 11-11q3-4 4-14-10-13-31-24t-51-22-40-16q-43-20-128-62t-129-61q-7-3-21-12t-23-13-26-11-27-7-30 2l-264 123q-6 3-32 14t-51 22-54 24-46 24-22 16q-4 4-4 13z m0 268q11 15 32 25t50 20 41 15q19 0 34-4t35-15 25-14q42-19 127-58t127-59q19-5 37 0t39 17 25 14q68 32 160 72 11 5 32 17t38 19 36 11q16 3 32-1t37-17 23-13q5-3 16-6t18-8 11-11q3-5 4-14-10-14-31-25t-53-23-41-16q-48-23-135-65t-123-59q-7-3-26-14t-29-15-32-10-36 0q-214 101-260 122-6 3-44 19t-69 30-62 30-34 22q-4 4-4 14z m0 267q10 15 32 27t52 22 41 16l348 162q30 0 54-7t56-26 40-22q39-18 117-54t117-55q4-2 37-15t54-24 27-20q3-4 4-13-9-13-26-22t-43-19-35-14q-47-22-140-66t-139-67q-6-3-20-11t-23-12-25-11-27-6-28 1q-245 114-256 119-4 2-63 28t-102 46-48 30q-4 4-4 13z" horiz-adv-x="979" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="link-ext" unicode="" d="M786 332v-178q0-67-47-114t-114-47h-464q-67 0-114 47t-47 114v464q0 66 47 113t114 48h393q7 0 12-5t5-13v-36q0-8-5-13t-12-5h-393q-37 0-63-26t-27-63v-464q0-37 27-63t63-27h464q37 0 63 27t26 63v178q0 8 5 13t13 5h36q8 0 13-5t5-13z m214 482v-285q0-15-11-25t-25-11-25 11l-98 98-364-364q-5-6-13-6t-12 6l-64 64q-6 5-6 12t6 13l364 364-98 98q-11 11-11 25t11 25 25 11h285q15 0 25-11t11-25z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="hdd" unicode="" d="M580 171q0-18-13-31t-31-13-32 13-13 31 13 32 32 13 31-13 13-32z m143 0q0-18-13-31t-31-13-32 13-13 31 13 32 32 13 31-13 13-32z m63-89v179q0 7-6 12t-12 6h-679q-7 0-12-6t-6-12v-179q0-7 6-12t12-6h679q7 0 12 6t6 12z m-687 268h659l-88 269q-2 7-9 12t-14 5h-437q-7 0-14-5t-9-12z m758-89v-179q0-37-26-63t-63-26h-679q-36 0-63 26t-26 63v179q0 14 9 42l110 338q9 29 35 48t56 18h437q31 0 56-18t35-48l110-338q9-28 9-42z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="tasks" unicode="" d="M571 64h358v72h-358v-72z m-214 286h572v71h-572v-71z m357 286h215v71h-215v-71z m286-465v-142q0-15-11-25t-25-11h-928q-15 0-25 11t-11 25v142q0 15 11 26t25 10h928q15 0 25-10t11-26z m0 286v-143q0-14-11-25t-25-10h-928q-15 0-25 10t-11 25v143q0 15 11 25t25 11h928q15 0 25-11t11-25z m0 286v-143q0-14-11-25t-25-11h-928q-15 0-25 11t-11 25v143q0 14 11 25t25 11h928q15 0 25-11t11-25z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="resize-full-alt" unicode="" d="M716 548l-198-198 198-198 80 80q17 18 39 8 22-9 22-33v-250q0-14-10-25t-26-11h-250q-23 0-32 23-10 21 7 38l81 81-198 198-198-198 80-81q17-17 8-38-10-23-33-23h-250q-15 0-25 11t-11 25v250q0 24 22 33 22 10 39-8l80-80 198 198-198 198-80-80q-11-11-25-11-7 0-14 3-22 9-22 33v250q0 14 11 25t25 11h250q23 0 33-23 9-21-8-38l-80-81 198-198 198 198-81 81q-17 17-7 38 9 23 32 23h250q15 0 26-11t10-25v-250q0-24-22-33-7-3-14-3-14 0-25 11z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="docs" unicode="" d="M946 636q23 0 38-16t16-38v-678q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v160h-303q-23 0-38 16t-16 38v375q0 22 11 49t27 42l228 228q15 16 42 27t49 11h232q23 0 38-16t16-38v-183q38 23 71 23h232z m-303-119l-167-167h167v167z m-357 214l-167-167h167v167z m109-361l176 176v233h-214v-233q0-22-15-37t-38-16h-233v-357h286v143q0 22 11 49t27 42z m534-449v643h-215v-232q0-22-15-38t-38-15h-232v-358h500z" horiz-adv-x="1000" /> | <glyph glyph-name="docs" unicode="" d="M946 636q23 0 38-16t16-38v-678q0-23-16-38t-38-16h-535q-23 0-38 16t-16 38v160h-303q-23 0-38 16t-16 38v375q0 22 11 49t27 42l228 228q15 16 42 27t49 11h232q23 0 38-16t16-38v-183q38 23 71 23h232z m-303-119l-167-167h167v167z m-357 214l-167-167h167v167z m109-361l176 176v233h-214v-233q0-22-15-37t-38-16h-233v-357h286v143q0 22 11 49t27 42z m534-449v643h-215v-232q0-22-15-38t-38-15h-232v-358h500z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="money" unicode="" d="M429 207h214v54h-72v250h-63l-83-77 43-44q24 20 31 31h1v-160h-71v-54z m285 143q0-39-11-79t-34-75-56-56-77-22-77 22-57 56-33 75-12 79 12 79 33 75 57 56 77 22 77-22 56-56 34-75 11-79z m286-143v286q-59 0-101 42t-42 101h-643q0-59-42-101t-101-42v-286q60 0 101-42t42-101h643q0 59 42 101t101 42z m71 464v-642q0-15-10-25t-25-11h-1000q-15 0-25 11t-11 25v642q0 15 11 26t25 10h1000q14 0 25-10t10-26z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="mail-alt" unicode="" d="M1000 454v-443q0-37-26-63t-63-27h-822q-36 0-63 27t-26 63v443q25-27 56-49 202-137 278-192 32-24 51-37t53-27 61-13h2q28 0 61 13t53 27 51 37q95 68 278 192 32 22 56 49z m0 164q0-44-27-84t-68-69q-210-146-262-181-5-4-23-17t-30-22-29-18-32-15-28-5h-2q-12 0-27 5t-32 15-30 18-30 22-23 17q-51 35-147 101t-114 80q-35 23-65 64t-31 77q0 43 23 72t66 29h822q36 0 63-26t26-63z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="gauge" unicode="" d="M214 207q0 30-21 51t-50 21-51-21-21-51 21-50 51-21 50 21 21 50z m107 250q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m239-268l57 213q3 14-5 27t-21 16-27-3-17-22l-56-213q-33-3-60-25t-35-55q-11-43 11-81t66-50 81 11 50 66q9 33-4 65t-40 51z m369 18q0 30-21 51t-51 21-50-21-21-51 21-50 50-21 51 21 21 50z m-358 357q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m250-107q0 30-20 51t-51 21-50-21-21-51 21-50 50-21 51 21 20 50z m179-250q0-145-79-269-10-17-30-17h-782q-20 0-30 17-79 123-79 269 0 102 40 194t106 160 160 107 194 39 194-39 160-107 106-160 40-194z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="chat-empty" unicode="" d="M393 636q-85 0-160-29t-118-79-44-107q0-45 30-88t83-73l54-32-19-46q19 11 34 21l25 18 30-6q43-8 85-8 85 0 160 29t118 79 43 106-43 107-118 79-160 29z m0 71q106 0 197-38t143-104 53-144-53-143-143-104-197-38q-48 0-98 9-70-49-155-72-21-5-48-9h-2q-6 0-12 5t-6 12q-1 1-1 3t1 4 1 3l1 3t2 3 2 3 3 3 2 2q3 3 13 14t15 16 12 17 14 21 11 25q-69 40-108 98t-40 125q0 78 53 144t143 104 197 38z m459-652q5-14 11-25t14-21 13-16 14-17 13-14q0 0 2-2t3-3 2-3 2-3l1-3t1-3 1-4-1-3q-2-8-7-13t-12-4q-28 4-48 9-86 23-156 72-50-9-98-9-151 0-263 74 32-3 49-3 90 0 172 25t148 72q69 52 107 119t37 141q0 43-13 85 72-39 114-99t42-128q0-67-40-126t-108-98z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="sitemap" unicode="" d="M1000 154v-179q0-22-16-38t-38-16h-178q-22 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q23 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107h-285v-107h53q23 0 38-15t16-38v-179q0-22-16-38t-38-16h-178q-23 0-38 16t-16 38v179q0 22 16 38t38 15h53v107q0 29 21 51t51 21h285v107h-53q-23 0-38 16t-16 37v179q0 22 16 38t38 16h178q23 0 38-16t16-38v-179q0-22-16-37t-38-16h-53v-107h285q29 0 51-21t21-51v-107h53q23 0 38-15t16-38z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="lightbulb" unicode="" d="M411 529q0-8-6-13t-12-5-13 5-5 13q0 25-30 39t-59 14q-7 0-13 5t-5 13 5 13 13 5q28 0 55-9t49-30 21-50z m89 0q0 40-19 74t-50 57-69 35-76 12-76-12-69-35-50-57-20-74q0-57 38-101 6-6 17-18t17-19q72-85 79-166h127q8 81 79 166 6 6 17 19t17 18q38 44 38 101z m71 0q0-87-57-150-25-27-42-48t-33-54-19-60q26-15 26-46 0-20-13-35 13-15 13-36 0-29-25-45 8-13 8-26 0-26-18-40t-43-14q-11-25-34-39t-48-15-49 15-33 39q-26 0-44 14t-17 40q0 13 7 26-25 16-25 45 0 21 14 36-14 15-14 35 0 31 26 46-2 28-19 60t-33 54-41 48q-58 63-58 150 0 55 25 103t65 79 92 49 104 19 104-19 91-49 66-79 24-103z" horiz-adv-x="571.4" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="download-cloud" unicode="" d="M714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" /> | <glyph glyph-name="download-cloud" unicode="" d="M714 332q0 8-5 13t-13 5h-125v196q0 8-5 13t-12 5h-108q-7 0-12-5t-5-13v-196h-125q-8 0-13-5t-5-13q0-8 5-13l196-196q5-5 13-5t13 5l196 196q5 6 5 13z m357-125q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="upload-cloud" unicode="" d="M714 368q0 8-5 13l-196 196q-5 5-13 5t-13-5l-196-196q-5-6-5-13 0-8 5-13t13-5h125v-196q0-8 5-13t12-5h108q7 0 12 5t5 13v196h125q8 0 13 5t5 13z m357-161q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" /> | <glyph glyph-name="upload-cloud" unicode="" d="M714 368q0 8-5 13l-196 196q-5 5-13 5t-13-5l-196-196q-5-6-5-13 0-8 5-13t13-5h125v-196q0-8 5-13t12-5h108q7 0 12 5t5 13v196h125q8 0 13 5t5 13z m357-161q0-89-62-151t-152-63h-607q-103 0-177 73t-73 177q0 72 39 134t105 92q-1 17-1 24 0 118 84 202t202 84q87 0 159-49t105-129q40 35 93 35 59 0 101-42t42-101q0-43-23-77 72-17 119-76t46-133z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="user-md" unicode="" d="M214 100q0-14-10-25t-25-11-25 11-11 25 11 25 25 11 25-11 10-25z m572-34q0-68-41-106t-108-39h-488q-67 0-108 39t-41 106q0 38 3 73t14 77 26 74 45 58 67 33q-12-29-12-67v-113q-32-11-52-39t-20-62q0-45 32-76t76-31 76 31 31 76q0 34-20 62t-52 39v113q0 35 14 52 74-58 165-58t165 58q13-17 13-52v-35q-59 0-101-42t-41-101v-50q-18-16-18-40 0-22 15-37t38-16 38 16 16 37q0 24-18 40v50q0 29 21 50t50 21 51-21 21-50v-50q-18-16-18-40 0-22 16-37t38-16 38 16 15 37q0 24-18 40v50q0 38-19 71t-52 52q0 6 0 24t0 27-1 23-4 26-7 22q38-8 67-33t45-58 26-74 14-77 3-73z m-179 498q0-88-63-151t-151-63-152 63-62 151 62 152 152 63 151-63 63-152z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="doc-text" unicode="" d="M819 638q16-16 27-42t11-50v-642q0-23-15-38t-38-16h-750q-23 0-38 16t-16 38v892q0 23 16 38t38 16h500q22 0 49-11t42-27z m-248 136v-210h210q-5 17-12 23l-175 175q-6 7-23 12z m215-853v572h-232q-23 0-38 16t-16 37v233h-429v-858h715z m-572 483q0 7 5 12t13 5h393q8 0 13-5t5-12v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36z m411-125q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z m0-143q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-393q-8 0-13 5t-5 13v36q0 8 5 13t13 5h393z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="building" unicode="" d="M214 118v-36q0-7-5-12t-13-6h-35q-7 0-13 6t-5 12v36q0 7 5 12t13 6h35q8 0 13-6t5-12z m0 143v-36q0-7-5-13t-13-5h-35q-7 0-13 5t-5 13v36q0 7 5 12t13 6h35q8 0 13-6t5-12z m143 0v-36q0-7-5-13t-13-5h-35q-8 0-13 5t-5 13v36q0 7 5 12t13 6h35q8 0 13-6t5-12z m-143 143v-36q0-7-5-13t-13-5h-35q-7 0-13 5t-5 13v36q0 7 5 12t13 5h35q8 0 13-5t5-12z m429-286v-36q0-7-5-12t-13-6h-36q-7 0-12 6t-6 12v36q0 7 6 12t12 6h36q7 0 13-6t5-12z m-143 143v-36q0-7-5-13t-13-5h-36q-7 0-12 5t-5 13v36q0 7 5 12t12 6h36q7 0 13-6t5-12z m-143 143v-36q0-7-5-13t-13-5h-35q-8 0-13 5t-5 13v36q0 7 5 12t13 5h35q8 0 13-5t5-12z m-143 142v-35q0-7-5-13t-13-5h-35q-7 0-13 5t-5 13v35q0 8 5 13t13 5h35q8 0 13-5t5-13z m429-285v-36q0-7-5-13t-13-5h-36q-7 0-12 5t-6 13v36q0 7 6 12t12 6h36q7 0 13-6t5-12z m-143 143v-36q0-7-5-13t-13-5h-36q-7 0-12 5t-5 13v36q0 7 5 12t12 5h36q7 0 13-5t5-12z m-143 142v-35q0-7-5-13t-13-5h-35q-8 0-13 5t-5 13v35q0 8 5 13t13 5h35q8 0 13-5t5-13z m-143 143v-35q0-8-5-13t-13-5h-35q-7 0-13 5t-5 13v35q0 8 5 13t13 5h35q8 0 13-5t5-13z m429-285v-36q0-7-5-13t-13-5h-36q-7 0-12 5t-6 13v36q0 7 6 12t12 5h36q7 0 13-5t5-12z m-143 142v-35q0-7-5-13t-13-5h-36q-7 0-12 5t-5 13v35q0 8 5 13t12 5h36q7 0 13-5t5-13z m-143 143v-35q0-8-5-13t-13-5h-35q-8 0-13 5t-5 13v35q0 8 5 13t13 5h35q8 0 13-5t5-13z m286-143v-35q0-7-5-13t-13-5h-36q-7 0-12 5t-6 13v35q0 8 6 13t12 5h36q7 0 13-5t5-13z m-143 143v-35q0-8-5-13t-13-5h-36q-7 0-12 5t-5 13v35q0 8 5 13t12 5h36q7 0 13-5t5-13z m143 0v-35q0-8-5-13t-13-5h-36q-7 0-12 5t-6 13v35q0 8 6 13t12 5h36q7 0 13-5t5-13z m-143-768h214v858h-643v-858h215v125q0 8 5 13t13 5h178q7 0 13-5t5-13v-125z m286 893v-928q0-15-11-25t-25-11h-714q-15 0-25 11t-11 25v928q0 15 11 25t25 11h714q15 0 25-11t11-25z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="desktop" unicode="" d="M1000 296v465q0 7-5 12t-13 6h-893q-7 0-12-6t-6-12v-465q0-7 6-12t12-5h893q7 0 13 5t5 12z m71 465v-607q0-37-26-63t-63-27h-303q0-20 9-43t17-40 9-24q0-14-10-25t-25-11h-286q-15 0-25 11t-11 25q0 8 9 25t18 39 9 43h-304q-36 0-63 27t-26 63v607q0 37 26 63t63 26h893q37 0 63-26t26-63z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="laptop" unicode="" d="M232 136q-37 0-63 26t-26 63v393q0 37 26 63t63 26h607q37 0 63-26t27-63v-393q0-37-27-63t-63-26h-607z m-18 482v-393q0-7 6-13t12-5h607q8 0 13 5t5 13v393q0 7-5 12t-13 6h-607q-7 0-12-6t-6-12z m768-518h89v-54q0-22-26-37t-63-16h-893q-36 0-63 16t-26 37v54h982z m-402-54q9 0 9 9t-9 9h-89q-9 0-9-9t9-9h89z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="tablet" unicode="" d="M357 64q0 15-10 25t-26 11-25-11-10-25 10-25 25-10 26 10 10 25z m214 90v535q0 8-5 13t-12 5h-465q-7 0-12-5t-6-13v-535q0-8 6-13t12-5h465q7 0 12 5t5 13z m72 535v-607q0-37-26-63t-63-26h-465q-36 0-63 26t-26 63v607q0 37 26 63t63 27h465q36 0 63-27t26-63z" horiz-adv-x="642.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="mobile" unicode="" d="M259 64q0 19-13 32t-32 13-31-13-13-32 13-31 31-13 32 13 13 31z m116 90v392q0 8-5 13t-13 5h-286q-7 0-12-5t-5-13v-392q0-8 5-13t12-5h286q7 0 13 5t5 13z m-107 473q0 9-9 9h-89q-9 0-9-9t9-9h89q9 0 9 9z m161 9v-572q0-29-22-50t-50-21h-286q-29 0-50 21t-21 50v572q0 29 21 50t50 21h286q29 0 50-21t22-50z" horiz-adv-x="428.6" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="spinner" unicode="" d="M294 72q0-29-21-50t-51-21q-29 0-50 21t-21 50q0 30 21 51t50 21 51-21 21-51z m277-115q0-29-20-50t-51-21-50 21-21 50 21 51 50 21 51-21 20-51z m-392 393q0-30-21-50t-51-21-50 21-21 50 21 51 50 20 51-20 21-51z m670-278q0-29-21-50t-50-21q-30 0-51 21t-20 50 20 51 51 21 50-21 21-51z m-538 556q0-37-26-63t-63-26-63 26-26 63 26 63 63 26 63-26 26-63z m653-278q0-30-21-50t-50-21-51 21-21 50 21 51 51 20 50-20 21-51z m-357 393q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m296-115q0-52-37-88t-88-37q-52 0-88 37t-37 88q0 51 37 88t88 37q51 0 88-37t37-88z" horiz-adv-x="1000" /> | <glyph glyph-name="spinner" unicode="" d="M294 72q0-29-21-50t-51-21q-29 0-50 21t-21 50q0 30 21 51t50 21 51-21 21-51z m277-115q0-29-20-50t-51-21-50 21-21 50 21 51 50 21 51-21 20-51z m-392 393q0-30-21-50t-51-21-50 21-21 50 21 51 50 20 51-20 21-51z m670-278q0-29-21-50t-50-21q-30 0-51 21t-20 50 20 51 51 21 50-21 21-51z m-538 556q0-37-26-63t-63-26-63 26-26 63 26 63 63 26 63-26 26-63z m653-278q0-30-21-50t-50-21-51 21-21 50 21 51 51 20 50-20 21-51z m-357 393q0-45-31-76t-76-31-76 31-31 76 31 76 76 31 76-31 31-76z m296-115q0-52-37-88t-88-37q-52 0-88 37t-37 88q0 51 37 88t88 37q51 0 88-37t37-88z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="reply" unicode="" d="M1000 225q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" /> | <glyph glyph-name="reply" unicode="" d="M1000 225q0-93-71-252-1-4-6-13t-7-17-7-12q-7-10-16-10-8 0-13 6t-5 14q0 5 1 15t2 13q3 38 3 69 0 56-10 101t-27 77-45 56-59 39-74 24-86 12-98 3h-125v-143q0-14-10-25t-26-11-25 11l-285 286q-11 10-11 25t11 25l285 286q11 10 25 10t26-10 10-25v-143h125q398 0 488-225 30-75 30-186z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="folder-empty" unicode="" d="M857 118v393q0 22-15 38t-38 15h-393q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-536q0-22 16-38t38-16h679q22 0 38 16t15 38z m72 393v-393q0-51-37-88t-88-37h-679q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h375q51 0 88-37t37-88z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="folder-open-empty" unicode="" d="M994 331q0 19-30 19h-607q-22 0-48-12t-39-29l-164-203q-11-13-11-22 0-20 30-20h607q23 0 48 13t40 29l164 203q10 12 10 22z m-637 90h429v90q0 22-16 38t-38 15h-321q-23 0-38 16t-16 38v36q0 22-15 38t-38 15h-179q-22 0-38-15t-16-38v-476l143 175q25 30 65 49t78 19z m708-90q0-35-25-67l-165-203q-24-30-65-49t-78-19h-607q-51 0-88 37t-37 88v536q0 51 37 88t88 37h179q51 0 88-37t37-88v-18h303q52 0 88-37t37-88v-90h107q30 0 56-13t37-40q8-17 8-37z" horiz-adv-x="1071.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="flag-checkered" unicode="" d="M464 292v107q-101-9-214-65v-103q114 53 214 61z m0 233v110q-96-4-214-70v-106q120 62 214 66z m465-258v103q-132-65-215-40v125q-11 3-21 8-3 2-19 10t-19 9-18 9-19 8-18 8-20 7-20 4-22 4-22 3-24 1q-13 0-28-2v-124h11q57 0 107-16t111-46q10-5 21-8v-105q24-9 51-9 67 0 164 51z m0 238v106q-95-51-171-51-25 0-44 4v-109q83-23 215 50z m-750 202q0-19-10-36t-26-25v-707q0-8-5-13t-13-5h-36q-7 0-12 5t-6 13v707q-16 9-25 25t-10 36q0 30 21 51t50 21 51-21 21-51z m821-36v-425q0-22-19-32-6-3-10-5-122-65-206-65-49 0-88 20l-16 7q-35 19-55 27t-51 16-63 8q-57 0-132-24t-127-57q-9-5-19-5-9 0-18 4-17 11-17 31v415q0 19 17 30 19 12 44 24t63 29 85 28 87 10q62 0 117-17t116-48q21-11 50-11 68 0 173 63 12 6 17 9 17 9 35-1 17-11 17-31z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="reply-all" unicode="" d="M357 246v-39q0-23-22-33-7-3-14-3-15 0-25 11l-285 286q-11 10-11 25t11 25l285 286q17 17 39 8 22-10 22-33v-39l-221-222q-11-11-11-25t11-25z m643-21q0-32-9-74t-22-77-27-70-22-51l-11-22q-5-10-16-10-3 0-5 1-14 4-13 19 24 223-59 315-36 40-95 62t-150 29v-140q0-23-21-33-8-3-14-3-15 0-25 11l-286 286q-11 10-11 25t11 25l286 286q16 17 39 8 21-10 21-33v-147q230-15 335-123 94-96 94-284z" horiz-adv-x="1000" /> | <glyph glyph-name="reply-all" unicode="" d="M357 246v-39q0-23-22-33-7-3-14-3-15 0-25 11l-285 286q-11 10-11 25t11 25l285 286q17 17 39 8 22-10 22-33v-39l-221-222q-11-11-11-25t11-25z m643-21q0-32-9-74t-22-77-27-70-22-51l-11-22q-5-10-16-10-3 0-5 1-14 4-13 19 24 223-59 315-36 40-95 62t-150 29v-140q0-23-21-33-8-3-14-3-15 0-25 11l-286 286q-11 10-11 25t11 25l286 286q16 17 39 8 21-10 21-33v-147q230-15 335-123 94-96 94-284z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="fork" unicode="" d="M161 29q0 22-16 38t-38 15-38-15-15-38 15-38 38-16 38 16 16 38z m0 642q0 23-16 38t-38 16-38-16-15-38 15-37 38-16 38 16 16 37z m357-71q0 22-16 38t-38 16-38-16-15-38 15-38 38-16 38 16 16 38z m53 0q0-29-14-54t-39-39q-1-160-126-231-38-21-113-45-72-22-95-39t-23-56v-15q24-14 39-39t14-53q0-45-31-76t-76-32-76 32-31 76q0 29 15 53t39 39v458q-25 14-39 39t-15 53q0 45 31 76t76 32 76-32 31-76q0-29-14-53t-39-39v-277q30 14 86 31 30 10 49 17t39 17 33 22 22 29 16 38 5 51q-25 14-39 39t-15 54q0 45 31 76t76 31 76-31 31-76z" horiz-adv-x="571.4" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="unlink" unicode="" d="M245 141l-143-143q-6-5-13-5t-12 5q-6 6-6 13t6 13l142 142q6 5 13 5t13-5q5-5 5-12t-5-13z m94-23v-179q0-8-5-13t-13-5-12 5-5 13v179q0 8 5 13t12 5 13-5 5-13z m-125 125q0-8-5-13t-13-5h-178q-8 0-13 5t-5 13 5 13 13 5h178q8 0 13-5t5-13z m706-72q0-66-48-113l-82-81q-46-47-113-47-68 0-114 48l-186 187q-12 12-24 31l134 10 152-153q15-15 38-15t38 15l82 81q16 16 16 37 0 23-16 38l-153 154 10 133q20-11 31-23l188-188q47-48 47-114z m-345 404l-133-10-152 153q-16 16-38 16-22 0-38-15l-82-82q-16-15-16-37 0-22 16-38l153-153-10-134q-20 12-32 24l-187 187q-47 48-47 114 0 67 47 113l82 82q47 46 114 46 67 0 114-47l186-187q12-12 23-32z m354-46q0-8-5-13t-13-5h-179q-8 0-13 5t-5 13 5 12 13 5h179q8 0 13-5t5-12z m-304 303v-178q0-8-5-13t-13-5-13 5-5 13v178q0 8 5 13t13 5 13-5 5-13z m227-84l-143-143q-6-5-13-5t-12 5q-5 6-5 13t5 13l143 143q5 5 12 5t13-5q5-6 5-13t-5-13z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="info" unicode="" d="M357 100v-71q0-15-10-25t-26-11h-285q-15 0-25 11t-11 25v71q0 15 11 25t25 11h35v214h-35q-15 0-25 11t-11 25v71q0 15 11 25t25 11h214q15 0 25-11t11-25v-321h35q15 0 26-11t10-25z m-71 643v-107q0-15-11-25t-25-11h-143q-14 0-25 11t-11 25v107q0 14 11 25t25 11h143q15 0 25-11t11-25z" horiz-adv-x="357.1" /> | <glyph glyph-name="info" unicode="" d="M357 100v-71q0-15-10-25t-26-11h-285q-15 0-25 11t-11 25v71q0 15 11 25t25 11h35v214h-35q-15 0-25 11t-11 25v71q0 15 11 25t25 11h214q15 0 25-11t11-25v-321h35q15 0 26-11t10-25z m-71 643v-107q0-15-11-25t-25-11h-143q-14 0-25 11t-11 25v107q0 14 11 25t25 11h143q15 0 25-11t11-25z" horiz-adv-x="357.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="puzzle" unicode="" d="M929 237q0-45-25-75t-69-30q-23 0-43 10t-33 21-32 21-39 10q-62 0-62-69 0-22 9-65t8-64v-3q-12 0-18 0-19-2-54-7t-65-7-54-3q-35 0-58 15t-23 47q0 20 9 39t22 32 21 33 10 43q0 44-31 69t-75 25q-47 0-80-26t-33-71q0-24 9-46t18-36 19-30 8-28q0-25-25-50-21-19-65-19-54 0-137 13-5 1-16 2t-15 3l-7 1q-1 0-2 0-1 0-1 1v571q1 0 10-2t19-2 12-2q83-14 137-14 44 0 65 20 25 24 25 49 0 13-8 29t-19 29-18 36-9 47q0 45 33 71t81 25q44 0 74-25t31-69q0-23-10-43t-21-33-22-31-9-40q0-32 23-47t58-14q35 0 100 8t91 9v-1q-1-1-2-9t-3-19-2-12q-13-84-13-137 0-45 19-65 25-26 50-26 12 0 28 8t30 19 36 19 46 8q46 0 71-33t26-80z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="calendar-empty" unicode="" d="M71-79h786v572h-786v-572z m215 679v161q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-161q0-8 5-13t13-5h36q8 0 13 5t5 13z m428 0v161q0 8-5 13t-13 5h-35q-8 0-13-5t-5-13v-161q0-8 5-13t13-5h35q8 0 13 5t5 13z m215 36v-715q0-29-22-50t-50-21h-786q-29 0-50 21t-21 50v715q0 29 21 50t50 21h72v54q0 37 26 63t63 26h36q37 0 63-26t26-63v-54h214v54q0 37 27 63t63 26h35q37 0 64-26t26-63v-54h71q29 0 50-21t22-50z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="anchor" unicode="" d="M536 707q0 15-11 25t-25 11-25-11-11-25 11-25 25-11 25 11 11 25z m464-518v-196q0-12-11-17-5-1-7-1-7 0-13 5l-52 52q-66-80-177-127t-240-46-240 46-177 127l-52-52q-5-5-13-5-2 0-7 1-11 5-11 17v196q0 8 5 13t13 5h196q13 0 17-11 5-11-4-19l-56-56q38-51 106-86t152-46v361h-108q-14 0-25 11t-10 25v71q0 15 10 25t25 11h108v91q-33 19-52 51t-20 72q0 59 42 101t101 42 101-42 42-101q0-39-20-72t-52-51v-91h108q14 0 25-11t10-25v-71q0-15-10-25t-25-11h-108v-361q84 11 152 46t106 86l-56 56q-8 8-4 19 4 11 17 11h196q8 0 13-5t5-13z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="ok-squared" unicode="" d="M382 125l343 343q11 10 11 25t-11 25l-57 57q-11 11-25 11t-25-11l-261-261-118 118q-10 11-25 11t-25-11l-57-57q-10-10-10-25t10-25l200-200q11-10 25-10t25 10z m475 493v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="pencil-squared" unicode="" d="M225 232l85-85-29-29h-31v53h-54v32z m232 217q7-7-2-16l-163-163q-9-9-16-1-8 7 1 16l163 163q9 9 17 1z m-153-385l303 304-161 161-303-304v-161h161z m339 340l51 51q16 16 16 38t-16 38l-85 85q-15 15-38 15t-37-15l-52-52z m214 214v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | <glyph glyph-name="pencil-squared" unicode="" d="M225 232l85-85-29-29h-31v53h-54v32z m232 217q7-7-2-16l-163-163q-9-9-16-1-8 7 1 16l163 163q9 9 17 1z m-153-385l303 304-161 161-303-304v-161h161z m339 340l51 51q16 16 16 38t-16 38l-85 85q-15 15-38 15t-37-15l-52-52z m214 214v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="export-alt" unicode="" d="M561 236l196 196q11 11 11 25t-11 25l-196 197q-17 17-39 8-22-10-22-33v-90q-66 0-120-11t-91-28-64-44-42-53-25-61-12-62-3-62q0-101 93-226 6-6 14-6 4 0 7 1 13 5 11 19-25 197 35 264 25 29 72 42t125 13v-89q0-24 22-33 7-3 14-3 14 0 25 11z m296 382v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | <glyph glyph-name="export-alt" unicode="" d="M561 236l196 196q11 11 11 25t-11 25l-196 197q-17 17-39 8-22-10-22-33v-90q-66 0-120-11t-91-28-64-44-42-53-25-61-12-62-3-62q0-101 93-226 6-6 14-6 4 0 7 1 13 5 11 19-25 197 35 264 25 29 72 42t125 13v-89q0-24 22-33 7-3 14-3 14 0 25 11z m296 382v-536q0-66-47-113t-114-48h-535q-67 0-114 48t-47 113v536q0 66 47 113t114 48h535q67 0 114-48t47-113z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="thumbs-up-alt" unicode="" d="M143 100q0 15-11 25t-25 11q-15 0-25-11t-11-25q0-15 11-25t25-11q15 0 25 11t11 25z m89 286v-357q0-15-10-25t-26-11h-160q-15 0-25 11t-11 25v357q0 14 11 25t25 10h160q15 0 26-10t10-25z m661 0q0-48-31-83 9-25 9-43 1-42-24-76 9-31 0-66-9-31-31-52 5-62-27-101-36-43-110-44h-72q-37 0-80 9t-68 16-67 22q-69 24-88 25-15 0-25 11t-11 25v357q0 14 10 25t24 11q13 1 42 33t57 67q38 49 56 67 10 10 17 27t10 27 8 34q4 22 7 34t11 29 19 28q10 11 25 11 25 0 46-6t33-15 22-22 14-25 7-28 2-25 1-22q0-21-6-43t-10-33-16-31q-1-4-5-10t-6-13-5-13h155q43 0 75-32t32-75z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="thumbs-down-alt" unicode="" d="M143 529q0-15-11-25t-25-11q-15 0-25 11t-11 25q0 15 11 25t25 10q15 0 25-10t11-25z m89-286v357q0 15-10 25t-26 11h-160q-15 0-25-11t-11-25v-357q0-15 11-25t25-11h160q15 0 26 11t10 25z m630 83q31-34 31-83-1-44-32-75t-75-32h-155q2-8 5-14t6-12 5-10q10-21 15-32t11-32 6-43q0-14-1-22t-2-25-7-28-14-25-22-23-33-14-46-6q-15 0-25 11-12 11-19 27t-11 29-7 35q-5 23-8 33t-10 27-17 27q-18 19-56 67-28 36-57 68t-42 33q-14 1-24 11t-10 24v358q0 15 11 25t25 11q19 0 88 24 43 15 67 22t68 17 80 8h72q74-1 110-43 32-39 27-101 22-21 31-53 9-34 0-65 25-34 24-77 0-17-9-42z" horiz-adv-x="928.6" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="youtube" unicode="" d="M542 156v-118q0-37-22-37-13 0-25 12v168q12 12 25 12 22 0 22-37z m189-1v-25h-51v25q0 38 25 38t26-38z m-540 122h60v52h-174v-52h59v-318h55v318z m161-318h50v276h-50v-211q-17-23-32-23-10 0-11 11-1 2-1 20v203h-50v-218q0-28 5-41 7-21 32-21 27 0 57 34v-30z m240 83v110q0 41-5 55-10 31-40 31-28 0-52-30v121h-50v-370h50v27q25-31 52-31 30 0 40 31 5 15 5 56z m188 6v7h-51q0-29-1-34-4-20-22-20-26 0-26 38v49h100v57q0 44-15 65-22 28-59 28-38 0-60-28-15-21-15-65v-96q0-44 16-65 22-29 60-29 40 0 60 30 10 15 12 30 1 5 1 33z m-339 509v117q0 39-24 39t-24-39v-117q0-39 24-39t24 39z m401-419q0-131-14-195-8-33-33-56t-57-25q-102-12-309-12t-310 12q-32 3-57 25t-32 56q-15 62-15 195 0 131 15 195 7 33 32 56t57 26q103 11 310 11t309-11q33-4 58-26t32-56q14-62 14-195z m-557 712h57l-67-223v-151h-56v151q-8 42-34 119-21 57-37 104h60l39-147z m207-186v-97q0-46-16-66-21-29-59-29-37 0-59 29-15 21-15 66v97q0 45 15 66 22 28 59 28 38 0 59-28 16-21 16-66z m187 91v-279h-51v31q-30-35-58-35-25 0-33 21-4 13-4 42v220h51v-205q0-19 0-20 2-12 12-12 15 0 32 24v213h51z" horiz-adv-x="857.1" /> | <glyph glyph-name="youtube" unicode="" d="M542 156v-118q0-37-22-37-13 0-25 12v168q12 12 25 12 22 0 22-37z m189-1v-25h-51v25q0 38 25 38t26-38z m-540 122h60v52h-174v-52h59v-318h55v318z m161-318h50v276h-50v-211q-17-23-32-23-10 0-11 11-1 2-1 20v203h-50v-218q0-28 5-41 7-21 32-21 27 0 57 34v-30z m240 83v110q0 41-5 55-10 31-40 31-28 0-52-30v121h-50v-370h50v27q25-31 52-31 30 0 40 31 5 15 5 56z m188 6v7h-51q0-29-1-34-4-20-22-20-26 0-26 38v49h100v57q0 44-15 65-22 28-59 28-38 0-60-28-15-21-15-65v-96q0-44 16-65 22-29 60-29 40 0 60 30 10 15 12 30 1 5 1 33z m-339 509v117q0 39-24 39t-24-39v-117q0-39 24-39t24 39z m401-419q0-131-14-195-8-33-33-56t-57-25q-102-12-309-12t-310 12q-32 3-57 25t-32 56q-15 62-15 195 0 131 15 195 7 33 32 56t57 26q103 11 310 11t309-11q33-4 58-26t32-56q14-62 14-195z m-557 712h57l-67-223v-151h-56v151q-8 42-34 119-21 57-37 104h60l39-147z m207-186v-97q0-46-16-66-21-29-59-29-37 0-59 29-15 21-15 66v97q0 45 15 66 22 28 59 28 38 0 59-28 16-21 16-66z m187 91v-279h-51v31q-30-35-58-35-25 0-33 21-4 13-4 42v220h51v-205q0-19 0-20 2-12 12-12 15 0 32 24v213h51z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="dropbox" unicode="" d="M224 456l276-171-191-159-273 178z m551-310v-60l-274-164v-1l0 1-1-1v1l-273 164v60l82-54 191 159v1l1-1 0 1v-1l192-159z m-466 638l191-159-276-169-188 150z m467-328l188-152-273-178-191 159z m-85 328l273-178-188-150-276 169z" horiz-adv-x="1000" /> | <glyph glyph-name="dropbox" unicode="" d="M224 456l276-171-191-159-273 178z m551-310v-60l-274-164v-1l0 1-1-1v1l-273 164v60l82-54 191 159v1l1-1 0 1v-1l192-159z m-466 638l191-159-276-169-188 150z m467-328l188-152-273-178-191 159z m-85 328l273-178-188-150-276 169z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="apple" unicode="" d="M777 172q-21-70-68-139-72-110-144-110-27 0-78 18-48 18-84 18-34 0-79-19-45-19-74-19-85 0-168 145-82 146-82 281 0 127 63 208 63 81 159 81 40 0 98-17 58-17 77-17 25 0 80 19 57 19 97 19 66 0 119-36 29-20 58-56-44-37-64-66-36-52-36-115 0-69 38-125t88-70z m-209 655q0-34-17-76-16-42-52-77-30-30-60-40-20-7-58-10 2 83 44 143 41 60 139 83 1-2 2-6t1-6q0-2 0-6t1-5z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="android" unicode="" d="M275 581q9 0 16 6t6 15-6 16-16 6-15-6-6-16 6-15 15-6z m236 0q9 0 15 6t6 15-6 16-15 6-16-6-6-16 6-15 16-6z m-453-103q23 0 40-17t16-40v-240q0-24-16-41t-40-17-41 17-17 41v240q0 23 17 40t41 17z m591-11v-371q0-26-18-44t-43-18h-42v-127q0-24-16-40t-41-17-41 17-17 40v127h-77v-127q0-24-16-40t-41-17q-24 0-40 17t-17 40l-1 127h-41q-26 0-43 18t-18 44v371h512z m-129 226q59-30 95-85t36-121h-516q0 66 35 121t96 85l-39 73q-4 8 2 12 8 3 12-4l40-74q53 24 112 24t112-24l40 74q4 7 11 4 7-4 3-12z m266-272v-240q0-24-17-41t-41-17q-23 0-40 17t-17 41v240q0 24 17 40t40 17q24 0 41-17t17-40z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="sun" unicode="" d="M821 350q0 65-25 125t-69 102-102 69-125 25-125-25-102-69-69-102-25-125 25-125 69-102 102-69 125-25 125 25 102 69 69 102 25 125z m154-155q-2-8-11-11l-163-53v-171q0-9-7-15-8-5-16-2l-163 53-100-139q-6-7-15-7t-14 7l-101 139-163-53q-8-3-16 2-7 6-7 15v171l-163 53q-9 3-11 11-3 10 2 17l100 138-100 138q-5 8-2 17 2 8 11 11l163 53v171q0 9 7 15 8 5 16 2l163-53 101 139q5 6 14 6t15-6l100-139 163 53q8 3 16-2 7-6 7-15v-171l163-53q9-3 11-11 3-9-2-17l-100-138 100-138q5-7 2-17z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="box" unicode="" d="M607 386q0 14-10 25t-26 10h-142q-15 0-25-10t-11-25 11-25 25-11h142q15 0 26 11t10 25z m322 107v-536q0-14-11-25t-25-11h-786q-14 0-25 11t-11 25v536q0 14 11 25t25 11h786q14 0 25-11t11-25z m35 250v-143q0-14-10-25t-25-11h-858q-14 0-25 11t-10 25v143q0 14 10 25t25 11h858q14 0 25-11t10-25z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="fax" unicode="" d="M161 636q37 0 63-26t26-64v-607q0-37-26-63t-63-26h-72q-36 0-63 26t-26 63v607q0 37 26 64t63 26h72z m768-91q32-19 52-52t19-72v-428q0-59-42-101t-101-42h-482q-37 0-63 26t-26 63v857q0 23 15 38t38 16h375q23 0 49-11t43-27l85-85q15-15 26-42t12-49v-91z m-411-552v71q0 8-5 13t-13 5h-71q-8 0-13-5t-5-13v-71q0-8 5-13t13-5h71q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-71q-8 0-13-5t-5-13v-71q0-8 5-13t13-5h71q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-71q-8 0-13-5t-5-13v-71q0-8 5-13t13-5h71q8 0 13 5t5 13z m143-286v71q0 8-5 13t-13 5h-72q-7 0-12-5t-5-13v-71q0-8 5-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-5-13v-71q0-8 5-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-5-13v-71q0-8 5-13t12-5h72q8 0 13 5t5 13z m143-286v71q0 8-5 13t-13 5h-72q-7 0-12-5t-6-13v-71q0-8 6-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-6-13v-71q0-8 6-13t12-5h72q8 0 13 5t5 13z m0 143v71q0 8-5 13t-13 5h-72q-7 0-12-5t-6-13v-71q0-8 6-13t12-5h72q8 0 13 5t5 13z m53 214v143h-89q-22 0-38 15t-16 38v90h-357v-286h500z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cube" unicode="" d="M500-59l357 195v355l-357-130v-420z m-36 483l390 141-390 142-389-142z m465 140v-428q0-20-10-37t-28-26l-393-214q-15-9-34-9t-34 9l-393 214q-17 10-27 26t-10 37v428q0 23 13 41t34 26l393 143q12 5 24 5t25-5l393-143q21-8 34-26t13-41z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="cubes" unicode="" d="M357-61l214 107v176l-214-92v-191z m-36 254l226 96-226 97-225-97z m608-254l214 107v176l-214-92v-191z m-36 254l225 96-225 97-226-97z m-250 163l214 92v149l-214-92v-149z m-36 212l246 105-246 106-246-106z m607-289v-233q0-20-10-37t-29-26l-250-125q-14-8-32-8t-32 8l-250 125q-2 1-4 2-1-1-4-2l-250-125q-14-8-32-8t-31 8l-250 125q-19 9-29 26t-11 37v233q0 21 12 39t32 26l242 104v223q0 22 12 40t31 26l250 107q13 6 28 6t28-6l250-107q20-9 32-26t12-40v-223l242-104q20-8 32-26t11-39z" horiz-adv-x="1285.7" /> | <glyph glyph-name="cubes" unicode="" d="M357-61l214 107v176l-214-92v-191z m-36 254l226 96-226 97-225-97z m608-254l214 107v176l-214-92v-191z m-36 254l225 96-225 97-226-97z m-250 163l214 92v149l-214-92v-149z m-36 212l246 105-246 106-246-106z m607-289v-233q0-20-10-37t-29-26l-250-125q-14-8-32-8t-32 8l-250 125q-2 1-4 2-1-1-4-2l-250-125q-14-8-32-8t-31 8l-250 125q-19 9-29 26t-11 37v233q0 21 12 39t32 26l242 104v223q0 22 12 40t31 26l250 107q13 6 28 6t28-6l250-107q20-9 32-26t12-40v-223l242-104q20-8 32-26t11-39z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="recycle" unicode="" d="M467 198l-9-206-1-12-234 16q-20 2-38 18t-26 36q-6 15-8 31t2 36 7 31 12 36 11 29q43-6 284-15z m-216 327l100-212-82 52q-35-41-62-81t-41-70-22-53-10-35l-2-11-106 199q-10 14-10 31t3 26l4 10q20 35 64 105l-78 48z m687-289l-105-200q-7-16-21-26t-24-12l-10-2q-40-4-122-7l4-91-128 205 118 202 4-97q94-9 157-2t95 18z m-439 516q-26-35-147-243l-177 104-11 7 126 199q11 17 33 25t45 5q13-1 27-6t23-12 23-18 21-20 20-22 17-19z m366-171l118-203q10-21 7-42t-15-42q-7-11-18-20t-22-16-27-12-26-9-29-8-25-7q-19 40-148 244l174 108z m-80 126l79 46-122-208-234 11 84 48q-19 50-42 93t-42 69-36 44-26 26l-10 7 226 0q18 1 33-6t22-16l6-8q21-34 62-106z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="database" unicode="" d="M429 421q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-19-215 19-156 52-58 71v95q66-47 181-71t248-24z m0-428q132 0 247 24t181 71v-95q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v95q66-47 181-71t248-24z m0 214q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-20-215 20-156 52-58 71v95q66-47 181-71t248-24z m0 643q116 0 214-19t157-52 57-72v-71q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v71q0 39 58 72t156 52 215 19z" horiz-adv-x="857.1" /> | <glyph glyph-name="database" unicode="" d="M429 421q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-19-215 19-156 52-58 71v95q66-47 181-71t248-24z m0-428q132 0 247 24t181 71v-95q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v95q66-47 181-71t248-24z m0 214q132 0 247 24t181 71v-95q0-38-57-71t-157-52-214-20-215 20-156 52-58 71v95q66-47 181-71t248-24z m0 643q116 0 214-19t157-52 57-72v-71q0-39-57-72t-157-52-214-19-215 19-156 52-58 72v71q0 39 58 72t156 52 215 19z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="codeopen" unicode="" d="M121 198l336-225v201l-186 124z m-35 80l108 72-108 72v-144z m457-305l337 225-151 100-186-124v-201z m-43 275l152 102-152 102-152-102z m-229 154l186 124v201l-336-225z m535-52l108-72v144z m-77 52l151 100-337 225v-201z m271 100v-304q0-23-19-36l-457-305q-12-7-24-7t-24 7l-457 305q-19 13-19 36v304q0 23 19 36l457 305q12 7 24 7t24-7l457-305q19-13 19-36z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="sliders" unicode="" d="M196 64v-71h-196v71h196z m197 72q14 0 25-11t11-25v-143q0-14-11-25t-25-11h-143q-14 0-25 11t-11 25v143q0 15 11 25t25 11h143z m89 214v-71h-482v71h482z m-357 286v-72h-125v72h125z m732-572v-71h-411v71h411z m-536 643q15 0 26-10t10-26v-142q0-15-10-25t-26-11h-142q-15 0-25 11t-11 25v142q0 15 11 26t25 10h142z m358-286q14 0 25-10t10-25v-143q0-15-10-25t-25-11h-143q-15 0-25 11t-11 25v143q0 14 11 25t25 10h143z m178-71v-71h-125v71h125z m0 286v-72h-482v72h482z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="bomb" unicode="" d="M319 521q-6 14-19 20t-28 0q-60-25-106-71t-71-107q-6-14 0-27t19-19q8-3 14-3 23 0 33 23 19 47 55 83t83 54q14 7 20 20t0 27z m525 199l26-26-136-135 38-38q10-11 10-26t-10-25l-36-36q50-90 50-191 0-80-31-153t-84-125-125-84-153-31-153 31-125 84-84 125-31 153 31 153 84 125 125 84 153 31q101 0 191-50l36 36q11 10 25 10t26-10l38-38z m5 31q-6-5-12-5-8 0-13 5l-51 51q-5 5-5 12t5 13q6 5 13 5t13-5l50-51q5-5 5-12t-5-13z m128-128q-6-5-13-5t-12 5l-51 51q-5 5-5 12t5 13q5 5 13 5t12-5l51-50q5-6 5-13t-5-13z m23 102q0-8-5-13t-13-5h-53q-8 0-13 5t-5 13 5 13 13 5h53q8 0 13-5t5-13z m-107 107v-53q0-8-5-13t-13-5-13 5-5 13v53q0 8 5 13t13 5 13-5 5-13z m84-30l-51-51q-5-5-12-5-7 0-13 5-5 5-5 13t5 12l51 51q5 5 12 5t13-5q5-5 5-13t-5-12z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="plug" unicode="" d="M979 597q21-21 21-50t-21-51l-223-223 83-84-89-89q-91-91-217-104t-230 56l-202-202h-101v101l202 202q-69 103-56 230t104 217l89 89 84-83 223 223q21 21 51 21t50-21 21-50-21-51l-223-223 131-131 223 223q22 21 51 21t50-21z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="newspaper" unicode="" d="M571 564h-214v-214h214v214z m72-357v-71h-357v71h357z m0 429v-357h-357v357h357z m357-429v-71h-286v71h286z m0 143v-71h-286v71h286z m0 143v-72h-286v72h286z m0 143v-72h-286v72h286z m-857-536v536h-72v-536q0-14 11-25t25-11 25 11 11 25z m928 0v607h-857v-607q0-18-6-36h828q14 0 25 11t10 25z m72 679v-679q0-45-31-76t-76-31h-929q-44 0-76 31t-31 76v607h143v72h1000z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cc-visa" unicode="" d="M1102 298h-77q8 20 37 99l2 6q2 5 5 14t5 15l7-31z m-806 36l-32 164q-6 31-42 31h-149l-2-8q174-44 225-187z m100 195l-90-245-10 50q-14 39-47 72t-73 50l75-285h98l145 358h-98z m78-359h92l58 359h-92z m428 350q-38 15-83 15-68 0-112-33t-44-86q-1-56 81-97 27-12 37-23t11-21q0-17-17-26t-38-9q-48 0-87 19l-13 6-13-81q42-19 104-19 72 0 116 33t45 90q0 59-78 97-27 14-40 23t-12 21q0 13 14 22t39 9q39 1 69-13l9-5z m238 9h-72q-36 0-48-31l-138-328h97l20 54h118q3-12 11-54h86z m146 178v-714q0-29-21-50t-51-22h-1143q-29 0-50 22t-21 50v714q0 29 21 50t50 22h1143q29 0 51-22t21-50z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cc-mastercard" unicode="" d="M624 660q-71 47-156 47-58 0-111-22t-90-61-61-90-22-110q0-58 22-111t61-90 90-61 111-22q85 0 156 47-73 60-99 148t0 177 99 148z m19-14q-70-55-96-139t0-168 96-139q71 56 96 139t0 168-96 139z m18 14q73-60 99-148t1-177-100-148q72-47 157-47 58 0 111 22t90 61 61 90 22 111q0 57-22 110t-61 90-91 61-110 22q-85 0-157-47z m414-403h4v2h-10v-2h4v-10h2v10z m16-10h2v12h-3l-3-8-3 8h-3v-12h2v9l3-8h2l3 8v-9z m-4-245v-1h-3v1h3v0z m0-5h1l-2 3h1l1 0q0 1 0 2t0 2l-1 0h-5v-7h2v3h0z m-705 38q0 10 6 17t17 7q10 0 16-7t7-17q0-11-7-18t-16-6q-10 0-17 6t-6 18z m264 24q17 0 20-18h-39q3 18 19 18z m199-24q0 10 6 17t16 7 17-7 6-17q0-11-6-18t-17-6q-10 0-16 6t-6 18z m152 0q0 10 6 17t17 7 16-7 6-17q0-11-6-18t-16-6-17 7-6 17z m88-41q-1 0-2 1-1 0-2 1t-1 2q-1 1-1 2 0 2 1 2 0 2 1 3l1 0q1 0 1 1 1 0 2 0 2 0 2 0l2-1 1-3v0q1-1 1-2l-1 0v-2t0-1l-1-1q-1-1-2-1 0-1-2-1z m-751 3h17v47q0 14-8 22t-22 8q-18 0-26-13-8 13-25 13-14 0-22-11v9h-17v-75h17v42q0 20 18 20 17 0 17-20v-42h16v42q0 20 19 20 16 0 16-20v-42z m93 0h16v75h-16v-9q-10 11-24 11-16 0-27-11t-10-28 10-29 27-11q16 0 24 11v-9z m99 23q0 19-26 22l-8 1q-13 2-13 8 0 8 14 8 13 0 24-6l7 14q-12 7-31 7-14 0-23-6t-8-18q0-19 26-22l8-1q13-2 13-8 0-9-17-9-14 0-25 7l-8-12q14-10 33-10 16 0 25 7t9 18z m73-19l-5 14q-7-4-14-4-11 0-11 12v34h27v15h-27v23h-16v-23h-16v-15h16v-34q0-28 26-28 11 0 20 6z m48 73q-16 0-27-11t-11-28q0-18 11-29t28-11q18 0 31 11l-8 12q-10-8-22-8-19 0-23 18h57v7q0 18-11 28t-25 11z m89 0q-13 0-20-11v9h-17v-75h17v42q0 20 16 20 6 0 10-2l5 15q-5 2-11 2z m16-39q0-18 11-29t29-11q17 0 27 9l-8 13q-10-7-19-6-10 0-17 6t-6 18 6 17 17 7q11 0 19-7l8 13q-11 9-27 9-18 0-29-11t-11-28z m137-38h17v75h-17v-9q-8 11-23 11-17 0-28-11t-10-28 10-29 28-11q15 0 23 11v-9z m74 77q-13 0-19-11v9h-16v-75h16v42q0 20 16 20 5 0 10-2l5 15q-5 2-12 2z m78-77h17v106h-17v-40q-8 11-24 11t-26-11-11-28 11-28 26-12q17 0 24 11v-9z m44 11l-1-1h-2q-1 0-2-1-2-1-2-2 0-2 0-4 0-2 0-3 0-1 2-2 1-1 2-2t3 0q2 0 3 0 0 1 1 1l1 1q1 1 2 2 1 1 1 3 0 2-1 4 0 0-2 2 0 0-1 1l-1 0q0 0-1 1t-2 0z m201 699v-714q0-29-21-50t-51-22h-1143q-29 0-50 22t-21 50v714q0 29 21 50t50 22h1143q29 0 51-22t21-50z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cc-paypal" unicode="" d="M416 344q0-20-14-34t-35-14q-17 0-26 9t-10 25q0 21 14 35t35 14q15 0 25-9t11-26z m438 84q0-24-12-32t-37-9l-18 0 9 60q1 6 8 6h10q12 0 19-1t14-7 7-17z m196-84q0-20-15-34t-34-14q-16 0-26 9t-10 25q0 21 14 35t34 14q16 0 26-9t11-26z m-764 96q0 33-21 48t-56 14h-90q-10 0-11-10l-37-228q0-3 2-6t6-3h42q11 0 12 11l10 61q1 5 4 7t9 4 9 1 11-1 8 0q48 0 75 27t27 75z m173-174l23 145q0 4-2 7t-6 2h-42q-8 0-10-18-15 22-53 22-40 0-68-30t-28-71q0-33 19-52t52-20q15 0 32 7t27 18q-2-7-2-12 0-9 7-9h38q11 0 13 11z m249 147q0 2-2 5t-5 2h-43q-6 0-10-5l-59-87-25 83q-3 9-12 9h-42q-3 0-5-2t-2-5q0-2 11-33t23-69 13-39q-45-63-45-67 0-7 7-7h43q6 0 10 5l142 206q1 1 1 4z m212 27q0 33-21 48t-56 14h-89q-11 0-12-10l-37-228q0-3 2-6t6-3h45q7 0 9 7l10 65q1 5 4 7t9 4 9 1 11-1 8 0q48 0 75 27t27 75z m173-174l23 145q0 4-2 7t-6 2h-42q-8 0-10-18-14 22-53 22-40 0-68-30t-28-71q0-33 19-52t52-20q16 0 33 7t26 18q0-1-1-5t-1-7q0-9 7-9h38q11 0 13 11z m121 228v1q0 7-7 7h-41q-6 0-7-6l-37-232 0-1q0-3 2-5t6-3h36q11 0 12 11z m-995-75q-3-19-15-25t-33-7l-19 0 10 60q1 6 7 6h11q22 0 32-7t7-27z m1067 288v-714q0-29-21-50t-51-22h-1143q-29 0-50 22t-21 50v714q0 29 21 50t50 22h1143q29 0 51-22t21-50z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="trash" unicode="" d="M286 82v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m143 0v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m142 0v393q0 8-5 13t-12 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q7 0 12 5t5 13z m-303 554h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> | <glyph glyph-name="trash" unicode="" d="M286 82v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m143 0v393q0 8-5 13t-13 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q8 0 13 5t5 13z m142 0v393q0 8-5 13t-12 5h-36q-8 0-13-5t-5-13v-393q0-8 5-13t13-5h36q7 0 12 5t5 13z m-303 554h250l-27 65q-4 5-9 6h-177q-6-1-10-6z m518-18v-36q0-8-5-13t-13-5h-54v-529q0-46-26-80t-63-34h-464q-37 0-63 33t-27 79v531h-53q-8 0-13 5t-5 13v36q0 8 5 13t13 5h172l39 93q9 21 31 35t44 15h178q23 0 44-15t30-35l39-93h173q8 0 13-5t5-13z" horiz-adv-x="785.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="chart-area" unicode="" d="M1143-7v-72h-1143v858h71v-786h1072z m-214 571l142-500h-928v322l250 321 321-321z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="chart-pie" unicode="" d="M429 353l304-304q-59-61-138-94t-166-34q-117 0-216 58t-155 156-58 215 58 215 155 156 216 58v-426z m104-3h431q0-88-33-167t-94-138z m396 71h-429v429q117 0 215-57t156-156 58-216z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="chart-line" unicode="" d="M1143-7v-72h-1143v858h71v-786h1072z m-72 696v-242q0-12-10-17t-20 4l-68 68-353-353q-6-6-13-6t-13 6l-130 130-232-233-107 108 327 326q5 6 12 6t13-6l130-130 259 259-67 68q-9 8-5 19t17 11h243q7 0 12-5t5-13z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="toggle-off" unicode="" d="M643 350q0 58-23 111t-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23 111 23 91 61 61 91 23 111z m428 0q0 58-22 111t-61 91-91 61-111 23h-216q67-50 106-125t38-161-38-161-106-125h216q58 0 111 23t91 61 61 91 22 111z m72 0q0-72-29-139t-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139 29 139 76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="toggle-on" unicode="" d="M0 350q0 73 29 139t76 114 114 76 138 28h429q72 0 138-28t114-76 76-114 29-139-29-139-76-113-114-77-138-28h-429q-72 0-138 28t-114 77-76 113-29 139z m786-286q58 0 111 23t91 61 61 91 22 111-22 111-61 91-91 61-111 23-111-23-91-61-61-91-23-111 23-111 61-91 91-61 111-23z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="cc" unicode="" d="M438 288h116q-8-89-55-139t-120-51q-90 0-142 65t-52 176q0 109 52 174t130 66q83 0 130-49t54-138h-113q-3 36-20 56t-46 19q-32 0-49-34t-18-99q0-26 3-46t10-39 22-29 37-10q53 0 61 78z m397 0h115q-7-89-54-139t-120-51q-90 0-142 65t-51 176q0 109 52 174t130 66q82 0 129-49t54-138h-114q-2 36-19 56t-45 19q-32 0-50-34t-17-99q0-26 2-46t10-39 22-29 37-10q27 0 43 21t18 57z m201 66q0 115-9 171t-34 90q-3 5-7 8t-12 8-9 6q-48 36-389 36-349 0-396-36-3-2-10-6t-12-8-8-8q-25-33-33-89t-9-172q0-116 9-172t33-89q4-5 9-9t11-7 10-7q24-18 133-27t263-9q340 0 389 36 3 2 9 6t12 8 7 9q26 33 34 89t9 172z m107 425v-858h-1143v858h1143z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="diamond" unicode="" d="M118 421l348-371-167 371h-181z m453-430l195 430h-389z m-271 502l114 214h-146l-161-214h193z m377-443l348 371h-181z m-296 443h381l-114 214h-153z m462 0h193l-161 214h-146z m78 271l215-286q7-10 7-23t-10-22l-535-572q-10-11-27-11t-26 11l-535 572q-9 9-10 22t7 23l215 286q10 15 28 15h643q18 0 28-15z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="user-secret" unicode="" d="M321-7l54 250-54 71-71 36z m143 0l72 357-72-36-53-71z m90 564q-1 2-3 3-5 4-53 4-39 0-93-10-4-1-12-1t-12 1q-54 10-93 10-48 0-54-4-1-1-2-3 1-11 2-16 2-1 5-3t4-6q1-2 4-11t4-12 4-9 5-10 5-8 7-7 7-6 10-4 12-2 13-1q20 0 33 7t18 16 8 20 7 16 10 7h6q6 0 10-7t6-16 9-20 18-16 33-7q7 0 13 1t12 2 9 4 8 6 7 7 5 8 5 10 4 9 4 12 4 11q1 4 4 6t4 3q2 5 3 16z m232-491q0-68-41-106t-108-39h-488q-67 0-108 39t-41 106q0 34 3 66t10 70 21 69 36 58 52 41l-51 123h120q-12 36-12 71 0 7 1 18-109 23-109 54 0 32 118 55 9 35 28 75t40 63q18 21 42 21 17 0 47-17t47-18 47 18 47 17q24 0 42-21 20-23 39-63t29-75q117-23 117-55 0-31-108-54 4-45-11-89h119l-45-126q35-18 60-54t36-80 16-84 5-83z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="server" unicode="" d="M71 64h572v72h-572v-72z m0 286h572v71h-572v-71z m875-250q0 22-15 38t-38 16-38-16-16-38 16-38 38-16 38 16 15 38z m-875 536h572v71h-572v-71z m875-250q0 22-15 38t-38 15-38-15-16-38 16-38 38-16 38 16 15 38z m0 285q0 23-15 38t-38 16-38-16-16-38 16-37 38-16 38 16 15 37z m54-464v-214h-1000v214h1000z m0 286v-214h-1000v214h1000z m0 286v-215h-1000v215h1000z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="user-plus" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" /> | <glyph glyph-name="user-plus" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m536-71h196q7 0 13-6t5-12v-107q0-8-5-13t-13-5h-196v-197q0-7-6-12t-12-6h-107q-8 0-13 6t-5 12v197h-197q-7 0-12 5t-6 13v107q0 7 6 12t12 6h197v196q0 7 5 13t13 5h107q7 0 12-5t6-13v-196z m-411-125q0-29 21-51t50-21h143v-133q-38-28-95-28h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 44-34 86-51t92-17 92 17 86 51q11 10 22 10 73 0 121-54h-125q-29 0-50-21t-21-50v-107z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="user-times" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m601-179l139-138q5-5 5-13 0-8-5-13l-76-76q-5-5-12-5-8 0-13 5l-139 139-139-139q-5-5-13-5-7 0-12 5l-76 76q-5 5-5 13 0 8 5 13l139 138-139 139q-5 5-5 13 0 8 5 13l76 75q5 5 12 5 8 0 13-5l139-139 139 139q5 5 13 5 7 0 12-5l76-75q5-5 5-13 0-8-5-13z m-278 0l-101-101q-21-20-21-50 0-30 21-51l46-46q-11-2-24-2h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 86-68 178-68t178 68q11 10 22 10 15 0 31-4-15-15-22-27t-8-32q0-30 21-51z" horiz-adv-x="1142.9" /> | <glyph glyph-name="user-times" unicode="" d="M393 350q-89 0-152 63t-62 151 62 152 152 63 151-63 63-152-63-151-151-63z m601-179l139-138q5-5 5-13 0-8-5-13l-76-76q-5-5-12-5-8 0-13 5l-139 139-139-139q-5-5-13-5-7 0-12 5l-76 76q-5 5-5 13 0 8 5 13l139 138-139 139q-5 5-5 13 0 8 5 13l76 75q5 5 12 5 8 0 13-5l139-139 139 139q5 5 13 5 7 0 12-5l76-75q5-5 5-13 0-8-5-13z m-278 0l-101-101q-21-20-21-50 0-30 21-51l46-46q-11-2-24-2h-488q-67 0-108 39t-41 106q0 30 2 58t8 61 15 60 24 55 34 45 48 30 62 11q11 0 22-10 86-68 178-68t178 68q11 10 22 10 15 0 31-4-15-15-22-27t-8-32q0-30 21-51z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="expeditedssl" unicode="" d="M500 814q-94 0-180-36t-148-100-99-148-37-180 37-180 99-148 148-100 180-36 180 36 148 100 100 148 36 180-36 180-100 148-148 100-180 36z m0 36q102 0 194-40t160-106 106-160 40-194-40-194-106-160-160-106-194-40-194 40-160 106-106 160-40 194 40 194 106 160 160 106 194 40z m-223-464q9 0 9-9v-268q0-9-9-9h-18q-9 0-9 9v268q0 9 9 9h18z m223-36q30 0 51-21t20-50q0-20-9-36t-26-26v-63q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v63q-16 10-26 26t-9 36q0 29 21 50t50 21z m0 429q117 0 215-58t156-156 58-215-58-215-156-156-215-58-215 58-156 156-58 215 58 215 156 156 215 58z m-196-268v-54q0-8 5-13t12-5h36q8 0 13 5t5 13v54q0 52 37 88t88 37 88-37 37-88v-54q0-8 5-13t13-5h36q7 0 12 5t5 13v54q0 81-57 139t-139 57-139-57-57-139z m482-411v286q0 14-11 25t-25 10h-500q-14 0-25-10t-11-25v-286q0-14 11-25t25-11h500q15 0 25 11t11 25z" horiz-adv-x="1000" /> | <glyph glyph-name="expeditedssl" unicode="" d="M500 814q-94 0-180-36t-148-100-99-148-37-180 37-180 99-148 148-100 180-36 180 36 148 100 100 148 36 180-36 180-100 148-148 100-180 36z m0 36q102 0 194-40t160-106 106-160 40-194-40-194-106-160-160-106-194-40-194 40-160 106-106 160-40 194 40 194 106 160 160 106 194 40z m-223-464q9 0 9-9v-268q0-9-9-9h-18q-9 0-9 9v268q0 9 9 9h18z m223-36q30 0 51-21t20-50q0-20-9-36t-26-26v-63q0-8-5-13t-13-5h-36q-8 0-13 5t-5 13v63q-16 10-26 26t-9 36q0 29 21 50t50 21z m0 429q117 0 215-58t156-156 58-215-58-215-156-156-215-58-215 58-156 156-58 215 58 215 156 156 215 58z m-196-268v-54q0-8 5-13t12-5h36q8 0 13 5t5 13v54q0 52 37 88t88 37 88-37 37-88v-54q0-8 5-13t13-5h36q7 0 12 5t5 13v54q0 81-57 139t-139 57-139-57-57-139z m482-411v286q0 14-11 25t-25 10h-500q-14 0-25-10t-11-25v-286q0-14 11-25t25-11h500q15 0 25 11t11 25z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="object-group" unicode="" d="M1143 636h-72v-572h72v-214h-214v71h-715v-71h-214v214h71v572h-71v214h214v-71h715v71h214v-214z m-143 143v-72h71v72h-71z m-929 0v-72h72v72h-72z m72-858v72h-72v-72h72z m786 72v71h71v572h-71v71h-715v-71h-71v-572h71v-71h715z m142-72v72h-71v-72h71z m-357 572h215v-429h-500v143h-215v429h500v-143z m-428-214h357v285h-357v-285z m571-143v285h-143v-214h-214v-71h357z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="object-ungroup" unicode="" d="M1286 421h-72v-357h72v-214h-215v71h-500v-71h-214v214h72v72h-215v-72h-214v215h71v357h-71v214h214v-71h500v71h215v-214h-72v-72h214v72h215v-215z m-143 143v-71h71v71h-71z m-357 215v-72h71v72h-71z m-715 0v-72h72v72h-72z m72-643v71h-72v-71h72z m714 71h-71v-71h71v71z m-643 0h500v72h72v357h-72v71h-500v-71h-71v-357h71v-72z m286-286v72h-71v-72h71z m714 0v72h-71v-72h71z m-71 143v357h-72v72h-214v-214h72v-215h-215v72h-214v-72h71v-71h500v71h72z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="sticky-note" unicode="" d="M571 154v-233h-517q-23 0-38 16t-16 38v750q0 22 16 38t38 16h750q22 0 38-16t15-38v-518h-232q-22 0-38-15t-16-38z m72-18h213q-9-46-37-74l-102-103q-28-28-74-36v213z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="clone" unicode="" d="M929-61v607q0 8-6 13t-12 5h-607q-8 0-13-5t-5-13v-607q0-7 5-12t13-6h607q7 0 12 6t6 12z m71 607v-607q0-37-26-63t-63-26h-607q-37 0-63 26t-27 63v607q0 37 27 64t63 26h607q37 0 63-26t26-64z m-214 215v-90h-72v90q0 7-5 12t-13 6h-607q-7 0-12-6t-6-12v-607q0-8 6-13t12-5h90v-72h-90q-36 0-63 27t-26 63v607q0 37 26 63t63 26h607q37 0 64-26t26-63z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="television" unicode="" d="M1000 154v535q0 8-5 13t-13 5h-893q-7 0-12-5t-6-13v-535q0-8 6-13t12-5h893q7 0 13 5t5 13z m71 535v-535q0-37-26-63t-63-27h-411v-71h197q8 0 13-5t5-13v-36q0-8-5-13t-13-5h-464q-8 0-13 5t-5 13v36q0 8 5 13t13 5h196v71h-411q-36 0-63 27t-26 63v535q0 37 26 63t63 27h893q37 0 63-27t26-63z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="map-signs" unicode="" d="M974 684q5-5 5-13t-5-12l-79-79q-15-16-38-16h-750q-14 0-25 11t-11 25v143q0 14 11 25t25 11h322v35q0 15 10 25t25 11h72q14 0 25-11t10-25v-35h286q23 0 38-16z m-545-513h142v-285q0-15-10-25t-25-11h-72q-14 0-25 11t-10 25v285z m464 250q14 0 25-10t11-25v-143q0-15-11-25t-25-11h-750q-22 0-38 16l-79 79q-5 5-5 12t5 13l79 79q16 15 38 15h286v108h142v-108h322z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="shopping-basket" unicode="" d="M1071 421q30 0 51-20t21-51-21-50-51-21h-8l-64-370q-5-26-25-42t-45-17h-715q-25 0-45 17t-25 42l-64 370h-9q-29 0-50 21t-21 50 21 51 50 20h1000z m-800-446q14 1 24 13t9 26l-18 232q-1 14-13 24t-26 9-24-13-9-26l18-232q1-14 12-24t24-9h3z m229 36v232q0 14-11 25t-25 11-25-11-10-25v-232q0-15 10-25t25-11 25 11 11 25z m214 0v232q0 14-10 25t-25 11-25-11-11-25v-232q0-15 11-25t25-11 25 11 10 25z m197-3l18 232q1 15-9 26t-24 13-26-9-13-24l-18-232q-1-15 9-26t24-13h3q14 0 24 9t12 24z m-645 679l-52-230h-74l56 246q11 49 50 80t89 31h94q0 15 10 25t25 11h215q14 0 25-11t10-25h94q50 0 89-31t49-80l57-246h-74l-52 230q-6 25-25 40t-44 16h-94q0-15-10-25t-25-11h-215q-14 0-25 11t-10 25h-94q-25 0-44-16t-25-40z" horiz-adv-x="1142.9" /> | <glyph glyph-name="shopping-basket" unicode="" d="M1071 421q30 0 51-20t21-51-21-50-51-21h-8l-64-370q-5-26-25-42t-45-17h-715q-25 0-45 17t-25 42l-64 370h-9q-29 0-50 21t-21 50 21 51 50 20h1000z m-800-446q14 1 24 13t9 26l-18 232q-1 14-13 24t-26 9-24-13-9-26l18-232q1-14 12-24t24-9h3z m229 36v232q0 14-11 25t-25 11-25-11-10-25v-232q0-15 10-25t25-11 25 11 11 25z m214 0v232q0 14-10 25t-25 11-25-11-11-25v-232q0-15 11-25t25-11 25 11 10 25z m197-3l18 232q1 15-9 26t-24 13-26-9-13-24l-18-232q-1-15 9-26t24-13h3q14 0 24 9t12 24z m-645 679l-52-230h-74l56 246q11 49 50 80t89 31h94q0 15 10 25t25 11h215q14 0 25-11t10-25h94q50 0 89-31t49-80l57-246h-74l-52 230q-6 25-25 40t-44 16h-94q0-15-10-25t-25-11h-215q-14 0-25 11t-10 25h-94q-25 0-44-16t-25-40z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="wpforms" unicode="" d="M287 342v-72h-140v72h140z m0 142v-71h-140v71h140z m423-285v-72h-190v72h190z m0 143v-72h-375v72h375z m0 142v-71h-375v71h375z m76-480v692q0 4-4 8t-7 3h-18l-211-143-117 96-118-96-211 143h-17q-5 0-8-3t-4-8v-692q0-4 4-8t8-3h692q4 0 7 3t4 8z m-477 619l103 84h-227z m240 0l123 84h-227z m308 73v-692q0-35-24-59t-58-24h-692q-35 0-59 24t-24 59v692q0 35 24 59t59 24h692q34 0 58-24t24-59z" horiz-adv-x="857.1" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="handshake-o" unicode="" d="M107 207q23 0 31 18t0 36-31 18-31-18 0-36 31-18z m822 33q-5 7-21 27t-23 31-22 27-23 30-23 26-25 27l-70-78q-46-52-116-51t-115 54q-32 39-31 88t32 88l99 115q-12 6-28 9t-27 4-31-1-28 0q-51 0-88-37l-88-88h-87v-304q3 0 12 0t12 0 11-1 12-2 9-5 11-7l165-163q65-62 127-62 44 0 70 26 32-11 63 4t40 48q41-4 71 24 11 10 20 26t8 28q5-6 24-6 24 0 43 12t28 30 6 40-17 41z m89-33h53v286h-51l-88 100q-37 43-94 43h-94q-49 0-81-38l-117-135q-15-19-15-42t15-42q24-28 61-29t62 27l108 122q14 13 30 12t26-15 5-32q9-10 31-35t33-38q17-20 46-59t36-47q29-37 34-78z m161 0q22 0 31 18t0 36-31 18-32-18 0-36 32-18z m107 322v-358q0-14-11-25t-25-10h-242q-15-37-46-60t-70-28q-18-27-45-46t-57-25q-23-30-58-46t-72-14q-33-19-70-22t-71 8-66 30-57 45l-160 158h-200q-15 0-25 10t-11 25v375q0 15 11 26t25 10h235q8 8 26 27t26 27 25 22 28 21 29 14 34 11 38 3h65q56 0 101-31 46 31 101 31h94q19 0 37-3t32-8 28-15 25-17 24-22 22-24 23-27 23-27h198q15 0 25-10t11-25z" horiz-adv-x="1285.7" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="envelope-open" unicode="" d="M1000 485v-546q0-37-26-63t-63-26h-822q-36 0-63 26t-26 63v546q0 8 6 13 5 4 22 20t23 20 26 21 39 31 53 40 80 60 108 79q2 2 29 22t40 29 36 20 38 10 39-10 36-20 39-29 29-22q62-45 108-79t80-60 54-40 39-31 25-21 23-20 22-20q6-5 6-13z m-315-326q147 106 193 140 6 5 7 12t-4 13l-21 29q-4 6-12 7t-13-4q-129-94-192-139-2-2-29-22t-39-29-36-20-39-10-38 10-36 20-40 29-29 22q-104 74-192 139-6 5-13 4t-12-7l-21-29q-5-6-4-13t7-12q46-34 193-140 5-5 28-22t36-26 36-22 43-19 42-6 42 6 44 20 36 22 37 26 26 21z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="envelope-open-o" unicode="" d="M823 341l21-29q5-6 4-13t-6-11q-24-19-71-55t-82-63-37-29q-22-18-34-27t-33-23-43-20-41-7h-2q-20 0-41 7t-42 20-34 23-34 27q-3 2-36 28t-80 62-68 53q-7 4-7 11t3 13l21 29q4 6 12 7t14-3q52-41 170-132 3-2 25-20t33-26 32-18 32-9h2q13 0 32 9t32 18 34 26 24 20q144 110 174 135 7 4 14 4t12-7z m106-402v518q-51 47-89 78-51 41-217 169-2 2-24 20t-34 27-31 18-33 10h-2q-13 0-32-10t-32-18-34-27-24-20q-120-92-176-137t-72-58-46-41q-8-7-12-11v-518q0-7 6-12t12-6h822q7 0 12 6t6 12z m71 518v-518q0-37-26-63t-63-26h-822q-36 0-63 26t-26 63v518q0 31 23 53 69 63 195 162t130 101q20 17 33 27t35 23 42 20 41 7h2q20 0 41-7t43-20 34-23 33-27q24-20 87-68t126-99 112-96q23-22 23-53z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="address-card-o" unicode="" d="M571 219q0-36-20-60t-51-23h-286q-30 0-50 23t-21 60 5 65 16 58 34 43 54 16q4-2 17-10t21-12 20-9 24-9 23-2 24 2 24 9 19 9 21 12 17 10q32 0 54-16t34-43 16-58 5-65z m-87 290q0-52-37-89t-90-38-89 38-37 89 37 90 89 37 90-37 37-90z m516-248v-36q0-8-5-13t-13-5h-321q-8 0-13 5t-5 13v36q0 8 5 13t13 5h321q8 0 13-5t5-13z m0 140v-31q0-8-6-14t-14-6h-317q-8 0-14 6t-6 14v31q0 9 6 15t14 5h317q8 0 14-5t6-15z m0 145v-35q0-8-5-13t-13-5h-321q-8 0-13 5t-5 13v35q0 8 5 13t13 5h321q8 0 13-5t5-13z m71-535v678q0 8-5 13t-12 5h-965q-7 0-12-5t-6-13v-678q0-7 6-13t12-5h197v53q0 8 5 13t13 5h35q8 0 13-5t5-13v-53h429v53q0 8 5 13t13 5h35q8 0 13-5t5-13v-53h197q7 0 12 5t5 13z m72 678v-678q0-37-26-63t-63-27h-965q-36 0-63 27t-26 63v678q0 37 26 63t63 27h965q36 0 63-27t26-63z" horiz-adv-x="1142.9" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="user-circle-o" unicode="" d="M500 850q102 0 194-40t160-106 106-160 40-194q0-101-39-194t-107-159-159-107-195-40-195 40-159 106-106 160-40 194 40 194 106 160 160 106 194 40z m345-754q84 115 84 254 0 87-34 166t-92 137-137 92-166 34-166-34-137-92-91-137-35-166q0-139 84-254 36 183 170 183 73-72 175-72t175 72q134 0 170-183z m-131 361q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z" horiz-adv-x="1000" /> | <glyph glyph-name="user-circle-o" unicode="" d="M500 850q102 0 194-40t160-106 106-160 40-194q0-101-39-194t-107-159-159-107-195-40-195 40-159 106-106 160-40 194 40 194 106 160 160 106 194 40z m345-754q84 115 84 254 0 87-34 166t-92 137-137 92-166 34-166-34-137-92-91-137-35-166q0-139 84-254 36 183 170 183 73-72 175-72t175 72q134 0 170-183z m-131 361q0 89-62 152t-152 62-151-62-63-152 63-151 151-63 152 63 62 151z" horiz-adv-x="1000" /> | ||||||
|  |  | ||||||
|  | <glyph glyph-name="id-badge" unicode="" d="M571 148q0-36-20-60t-51-24h-286q-30 0-50 24t-21 60 5 66 16 58 34 44 54 16q45-42 105-42t105 42q31 0 54-16t34-44 16-58 5-66z m-85 290q0-53-38-90t-91-37-90 37-38 90 38 89 90 37 91-37 38-89z m157-499v768h-572v-768q0-7 6-12t12-6h536q7 0 13 6t5 12z m71 822v-822q0-37-26-63t-63-26h-536q-36 0-63 26t-26 63v822q0 37 26 63t63 26h197v-54q0-7 5-12t13-5h107q8 0 13 5t5 12v54h196q37 0 63-26t26-63z" horiz-adv-x="714.3" /> | ||||||
|  |  | ||||||
| <glyph glyph-name="id-card-o" unicode="" d="M500 174q0-31-18-52t-42-22h-237q-25 0-43 22t-17 52q0 30 4 56t14 50 28 38 45 14q36-36 87-36t88 36q26 0 45-14t28-38 14-50 4-56z m-71 247q0-44-32-75t-76-32-75 32-32 75 32 76 75 32 76-32 32-76z m571-232v-35q0-8-5-13t-13-5h-393q-7 0-12 5t-6 13v35q0 8 6 13t12 5h393q8 0 13-5t5-13z m-214 143v-36q0-7-5-12t-13-5h-179q-7 0-12 5t-6 12v36q0 8 6 13t12 5h179q8 0 13-5t5-13z m214 0v-36q0-7-5-12t-13-5h-107q-8 0-13 5t-5 12v36q0 8 5 13t13 5h107q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-6h-393q-7 0-12 6t-6 12v36q0 8 6 13t12 5h393q8 0 13-5t5-13z m71-464v625h-1000v-625q0-7 6-13t12-5h965q7 0 12 5t5 13z m72 678v-678q0-37-26-63t-63-27h-965q-36 0-63 27t-26 63v678q0 37 26 63t63 27h965q36 0 63-27t26-63z" horiz-adv-x="1142.9" /> | <glyph glyph-name="id-card-o" unicode="" d="M500 174q0-31-18-52t-42-22h-237q-25 0-43 22t-17 52q0 30 4 56t14 50 28 38 45 14q36-36 87-36t88 36q26 0 45-14t28-38 14-50 4-56z m-71 247q0-44-32-75t-76-32-75 32-32 75 32 76 75 32 76-32 32-76z m571-232v-35q0-8-5-13t-13-5h-393q-7 0-12 5t-6 13v35q0 8 6 13t12 5h393q8 0 13-5t5-13z m-214 143v-36q0-7-5-12t-13-5h-179q-7 0-12 5t-6 12v36q0 8 6 13t12 5h179q8 0 13-5t5-13z m214 0v-36q0-7-5-12t-13-5h-107q-8 0-13 5t-5 12v36q0 8 5 13t13 5h107q8 0 13-5t5-13z m0 143v-36q0-7-5-12t-13-6h-393q-7 0-12 6t-6 12v36q0 8 6 13t12 5h393q8 0 13-5t5-13z m71-464v625h-1000v-625q0-7 6-13t12-5h965q7 0 12 5t5 13z m72 678v-678q0-37-26-63t-63-27h-965q-36 0-63 27t-26 63v678q0 37 26 63t63 27h965q36 0 63-27t26-63z" horiz-adv-x="1142.9" /> | ||||||
| </font> | </font> | ||||||
| </defs> | </defs> | ||||||
|   | |||||||
| Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 83 KiB | 
							
								
								
									
										93
									
								
								public/index-old.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,93 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <?php | ||||||
|  | $_REALPATH=realpath('../'); | ||||||
|  | include($_REALPATH.'/php/clonos.php'); | ||||||
|  | $clonos=new ClonOS($_REALPATH); | ||||||
|  |  | ||||||
|  | $lang=$clonos->getLang(); | ||||||
|  | $uri=trim($_SERVER['REQUEST_URI'],DIRECTORY_SEPARATOR); | ||||||
|  | $root=trim($_SERVER['DOCUMENT_ROOT'],DIRECTORY_SEPARATOR); | ||||||
|  | $_ds=DIRECTORY_SEPARATOR; | ||||||
|  | $file_path=$_ds.$root.$_ds.'pages'.$_ds.$uri.$_ds; | ||||||
|  | $file_name=$file_path.$lang.'.index.php'; | ||||||
|  | $json_name=$file_path.'a.json.php'; | ||||||
|  |  | ||||||
|  | if(empty($uri)) | ||||||
|  | { | ||||||
|  | 	$key=$clonos->menu->first_key; | ||||||
|  | 	header('Location: /'.$key.'/',true); | ||||||
|  | 	exit; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | error_reporting(E_ALL); | ||||||
|  | ?> | ||||||
|  | <head> | ||||||
|  | 	<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> | ||||||
|  | 	<title>ClonOS — <?php echo $clonos->menu->title; ?></title> | ||||||
|  | 	<link href="/images/favicon.ico?" rel="shortcut icon" type="image/x-icon" /> | ||||||
|  | 	<script src="/js/jquery.js" type="text/javascript"></script> | ||||||
|  | 	<script src="/js/clonos.js" type="text/javascript"></script> | ||||||
|  | 	<script src="/js/noty/packaged/jquery.noty.packaged.min.js" type="text/javascript"></script> | ||||||
|  | 	<link type="text/css" href="/css/reset.css" rel="stylesheet" /> | ||||||
|  | 	<link type="text/css" href="/css/styles-old.css" rel="stylesheet" /> | ||||||
|  | 	<link type="text/css" href="/font/clonos.css" rel="stylesheet" /> | ||||||
|  | 	<link type="text/css" href="/font/animation.css" rel="stylesheet" /> | ||||||
|  | 	<script src="/lang/<?php echo $lang; ?>.js" type="text/javascript"></script> | ||||||
|  | 	<style type="text/css">html{background-color:#aaa;} .hide{display:none;}</style> | ||||||
|  | 	<meta name="keywords" content="" /> | ||||||
|  | 	<meta name="description" content="" /> | ||||||
|  | </head> | ||||||
|  | <body> | ||||||
|  | <nav id="nav"> | ||||||
|  | 	<span id="title"><?php echo $clonos->menu->title; ?></span> | ||||||
|  | 	<ul> | ||||||
|  | 		<li class="mhome"><a href="/">Home</a></li> | ||||||
|  | 		<li><a href="/settings/"><?php echo $clonos->translate('Settings'); ?></a></li> | ||||||
|  | 		<li><a href="/profile/"><?php echo $clonos->translate('Profile'); ?></a></li> | ||||||
|  | 		<li><a href="/support/"><?php echo $clonos->translate('Support'); ?></a></li> | ||||||
|  | 		<li><a name=""> | ||||||
|  | 			<select id="lng-sel"> | ||||||
|  | <?php | ||||||
|  | $_languages=$clonos->config->languages; | ||||||
|  | if(isset($_languages))foreach($_languages as $lng=>$lngname) | ||||||
|  | { | ||||||
|  | 	if($lang==$lng) $sel=' selected="selected"'; else $sel=''; | ||||||
|  | 	echo '				<option value="'.$lng.'"'.$sel.'>'.$lngname.'</option>'.PHP_EOL; | ||||||
|  | } | ||||||
|  | ?> | ||||||
|  | 			</select> | ||||||
|  | 		</a></li> | ||||||
|  | <!--		<li><a href="">...</a></li>	--> | ||||||
|  | 	</ul> | ||||||
|  | </nav> | ||||||
|  |  | ||||||
|  | <div id="menu"> | ||||||
|  | <?php | ||||||
|  | echo $clonos->menu->html; | ||||||
|  | ?> | ||||||
|  | </div> | ||||||
|  |  | ||||||
|  | <main><div id="content"> | ||||||
|  | <?php | ||||||
|  | /* | ||||||
|  |     [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 | ||||||
|  |     [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36 | ||||||
|  |     [REMOTE_ADDR] => 79.173.124.136 | ||||||
|  |     [DOCUMENT_ROOT] => /usr/home/web/cp/clonos/public | ||||||
|  |     [DOCUMENT_URI] => /index.php | ||||||
|  |     [REQUEST_URI] => /overview/ | ||||||
|  |     [REQUEST_METHOD] => GET | ||||||
|  |     [SCRIPT_FILENAME] => /usr/home/web/cp/clonos/public/index.php | ||||||
|  |     [WORKDIR] => /usr/jails | ||||||
|  |     [APPLICATION_ENV] => production | ||||||
|  | */ | ||||||
|  | if(file_exists($file_name)) include($file_name); else | ||||||
|  | { | ||||||
|  | 	echo '<h1>'.$clonos->translate('File not found').'!</h1>'; | ||||||
|  | } | ||||||
|  | $clonos->placeDialogs(); | ||||||
|  | ?>	 | ||||||
|  | </div></main> | ||||||
|  |  | ||||||
|  | </body> | ||||||
|  | </html> | ||||||
| @@ -1,10 +1,10 @@ | |||||||
| <!DOCTYPE html> | <!DOCTYPE html> | ||||||
| <?php | <?php | ||||||
| $_REALPATH=realpath('../'); | $_REALPATH=realpath('../'); | ||||||
| include($_REALPATH.'/php/clonos.php'); | include($_REALPATH.'/php/clonos.php'); | ||||||
| $clonos=new ClonOS($_REALPATH); | $clonos=new ClonOS($_REALPATH); | ||||||
|  |  | ||||||
| $lang=getLang(); | $lang=$clonos->getLang(); | ||||||
| $uri=trim($_SERVER['REQUEST_URI'],DIRECTORY_SEPARATOR); | $uri=trim($_SERVER['REQUEST_URI'],DIRECTORY_SEPARATOR); | ||||||
| $root=trim($_SERVER['DOCUMENT_ROOT'],DIRECTORY_SEPARATOR); | $root=trim($_SERVER['DOCUMENT_ROOT'],DIRECTORY_SEPARATOR); | ||||||
| $_ds=DIRECTORY_SEPARATOR; | $_ds=DIRECTORY_SEPARATOR; | ||||||
| @@ -26,28 +26,43 @@ error_reporting(E_ALL); | |||||||
| 	<title>ClonOS — <?php echo $clonos->menu->title; ?></title> | 	<title>ClonOS — <?php echo $clonos->menu->title; ?></title> | ||||||
| 	<link href="/images/favicon.ico?" rel="shortcut icon" type="image/x-icon" /> | 	<link href="/images/favicon.ico?" rel="shortcut icon" type="image/x-icon" /> | ||||||
| 	<script src="/js/jquery.js" type="text/javascript"></script> | 	<script src="/js/jquery.js" type="text/javascript"></script> | ||||||
| 	<script src="/js/scripts.js" type="text/javascript"></script> | 	<script src="/js/clonos.js" type="text/javascript"></script> | ||||||
| <?php if(file_exists($json_name)) echo '	<script type="text/javascript">clonos.jsonLoad=true;</script>'; ?> | 	<script src="/js/noty/packaged/jquery.noty.packaged.min.js" type="text/javascript"></script> | ||||||
| 	 |  | ||||||
| 	<link type="text/css" href="/css/reset.css" rel="stylesheet" /> | 	<link type="text/css" href="/css/reset.css" rel="stylesheet" /> | ||||||
| 	<link type="text/css" href="/css/styles.css" rel="stylesheet" /> | 	<link type="text/css" href="/css/styles.css" rel="stylesheet" /> | ||||||
| 	<link type="text/css" href="/font/clonos.css" rel="stylesheet" /> | 	<link type="text/css" href="/font/clonos.css" rel="stylesheet" /> | ||||||
| 	<link type="text/css" href="/font/animation.css" rel="stylesheet" /> | 	<link type="text/css" href="/font/animation.css" rel="stylesheet" /> | ||||||
| <!-- | 	<script src="/lang/<?php echo $lang; ?>.js" type="text/javascript"></script> | ||||||
| 	<script src="/js/lang/ru.js" type="text/javascript"></script> |  | ||||||
| --> |  | ||||||
| 	<style type="text/css">html{background-color:#aaa;} .hide{display:none;}</style> | 	<style type="text/css">html{background-color:#aaa;} .hide{display:none;}</style> | ||||||
| 	<meta name="keywords" content="" /> | 	<meta name="keywords" content="" /> | ||||||
| 	<meta name="description" content="" /> | 	<meta name="description" content="" /> | ||||||
| </head> | </head> | ||||||
| <body> | <body class="gadget1"> | ||||||
| <nav id="nav"> |  | ||||||
|  | <main><div class="main"><div id="content"> | ||||||
|  | <?php | ||||||
|  | if(file_exists($file_name)) include($file_name); else | ||||||
|  | { | ||||||
|  | 	echo '<h1>'.$clonos->translate('File not found').'!</h1>'; | ||||||
|  | } | ||||||
|  | $clonos->placeDialogs(); | ||||||
|  | ?> | ||||||
|  | </div></div></main> | ||||||
|  |  | ||||||
|  | <div class="menu"><div id="menu"> | ||||||
|  | 	<div class="closer"></div> | ||||||
|  | <?php | ||||||
|  | echo $clonos->menu->html; | ||||||
|  | ?><div id="console"></div> | ||||||
|  | </div></div> | ||||||
|  |  | ||||||
|  | <header><div class="header"> | ||||||
| 	<span id="title"><?php echo $clonos->menu->title; ?></span> | 	<span id="title"><?php echo $clonos->menu->title; ?></span> | ||||||
| 	<ul> | 	<ul> | ||||||
| 		<li class="mhome"><a href="/">Home</a></li> | 		<li class="mhome"><a href="/">Home</a></li> | ||||||
| 		<li><a href="/settings/"><?php echo get_translate('Settings'); ?></a></li> | 		<li><a href="/settings/"><?php echo $clonos->translate('Settings'); ?></a></li> | ||||||
| 		<li><a href="/profile/"><?php echo get_translate('Profile'); ?></a></li> | 		<li><a href="/profile/"><?php echo $clonos->translate('Profile'); ?></a></li> | ||||||
| 		<li><a href="/support/"><?php echo get_translate('Support'); ?></a></li> | 		<li><a href="/support/"><?php echo $clonos->translate('Support'); ?></a></li> | ||||||
| 		<li><a name=""> | 		<li><a name=""> | ||||||
| 			<select id="lng-sel"> | 			<select id="lng-sel"> | ||||||
| <?php | <?php | ||||||
| @@ -60,36 +75,9 @@ if(isset($_languages))foreach($_languages as $lng=>$lngname) | |||||||
| ?> | ?> | ||||||
| 			</select> | 			</select> | ||||||
| 		</a></li> | 		</a></li> | ||||||
| <!--		<li><a href="">...</a></li>	--> |  | ||||||
| 	</ul> | 	</ul> | ||||||
| </nav> | </div></header> | ||||||
|  |  | ||||||
| <div id="menu"> |  | ||||||
| <?php |  | ||||||
| echo $clonos->menu->html; |  | ||||||
| ?> |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| <div id="content"> |  | ||||||
| <?php |  | ||||||
| /* |  | ||||||
|     [HTTP_ACCEPT_LANGUAGE] => ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 |  | ||||||
|     [HTTP_USER_AGENT] => Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36 |  | ||||||
|     [REMOTE_ADDR] => 79.173.124.136 |  | ||||||
|     [DOCUMENT_ROOT] => /usr/home/web/cp/clonos/public |  | ||||||
|     [DOCUMENT_URI] => /index.php |  | ||||||
|     [REQUEST_URI] => /overview/ |  | ||||||
|     [REQUEST_METHOD] => GET |  | ||||||
|     [SCRIPT_FILENAME] => /usr/home/web/cp/clonos/public/index.php |  | ||||||
|     [WORKDIR] => /usr/jails |  | ||||||
|     [APPLICATION_ENV] => production |  | ||||||
| */ |  | ||||||
| if(file_exists($file_name)) include($file_name); else |  | ||||||
| { |  | ||||||
| 	echo '<h1>'.get_translate('File not found').'!</h1>'; |  | ||||||
| } |  | ||||||
| ?>	 |  | ||||||
| </div> |  | ||||||
|  |  | ||||||
| </body> | </body> | ||||||
| </html> | </html> | ||||||
							
								
								
									
										1328
									
								
								public/js/clonos.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										3
									
								
								public/js/lang-delete/en.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,3 @@ | |||||||
|  | clonos.lang={ | ||||||
|  |  | ||||||
|  | } | ||||||
							
								
								
									
										26
									
								
								public/js/lang-delete/ru.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,26 @@ | |||||||
|  | clonos.lang={ | ||||||
|  | 	"Error": "Ошибка", | ||||||
|  | 	"No data, add something": "Нет данных, добавьте что-нибудь", | ||||||
|  | 	"available on the jail is not running": "доступно при остановленной клетке", | ||||||
|  | 	"Log is empty": "Лог пуст", | ||||||
|  | 	"Exported jails": "Экспортированные клетки", | ||||||
|  | 	"Download": "Скачать", | ||||||
|  | 	"Jail is created": "Клетка создана", | ||||||
|  | 	"Jail already launched": "Клетка уже запущена", | ||||||
|  | 	"Jail already stopped": "Клетка уже остановлена", | ||||||
|  | 	"Export not available on launched jail": "Экспорт невозможен на запущенной клетке", | ||||||
|  | 	"This field cannot be left blank": "Это поле должно быть заполнено", | ||||||
|  | 	"You need to select one or more jails for clone": "Вам необходимо выбрать одну или несколько клеток для клонирования", | ||||||
|  | 	"Not running":"Не запущено", | ||||||
|  | 	"Launched":"Запущено", | ||||||
|  | 	"Stopped":"Остановлено", | ||||||
|  | 	"Removed":"Удалено", | ||||||
|  | 	"Creating…":"Создаётся…", | ||||||
|  | 	"Starting":"Запускается", | ||||||
|  | 	"Stopping":"Останавливается", | ||||||
|  | 	"Removing":"Удаляется", | ||||||
|  | 	"Exporting":"Экспортируется", | ||||||
|  | 	"Cloning":"Клонируется", | ||||||
|  | 	 | ||||||
|  | 	"end":"конец" | ||||||
|  | } | ||||||
							
								
								
									
										623
									
								
								public/js/noty/jquery.noty.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,623 @@ | |||||||
|  | /*! | ||||||
|  |  @package noty - jQuery Notification Plugin | ||||||
|  |  @version version: 2.3.11 | ||||||
|  |  @contributors https://github.com/needim/noty/graphs/contributors | ||||||
|  |  | ||||||
|  |  @documentation Examples and Documentation - http://needim.github.com/noty/ | ||||||
|  |  | ||||||
|  |  @license Licensed under the MIT licenses: http://www.opensource.org/licenses/mit-license.php | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  | if (typeof Object.create !== 'function') { | ||||||
|  |   Object.create = function (o) { | ||||||
|  |     function F() { | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     F.prototype = o; | ||||||
|  |     return new F(); | ||||||
|  |   }; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | var NotyObject = { | ||||||
|  |  | ||||||
|  |   init: function (options) { | ||||||
|  |  | ||||||
|  |     // Mix in the passed in options with the default options | ||||||
|  |     this.options = $.extend({}, $.noty.defaults, options); | ||||||
|  |  | ||||||
|  |     this.options.layout = (this.options.custom) ? $.noty.layouts['inline'] : $.noty.layouts[this.options.layout]; | ||||||
|  |  | ||||||
|  |     if ($.noty.themes[this.options.theme]) { | ||||||
|  |       this.options.theme = $.noty.themes[this.options.theme]; | ||||||
|  |       if (this.options.theme.template) | ||||||
|  |         this.options.template = this.options.theme.template; | ||||||
|  |  | ||||||
|  |       if (this.options.theme.animation) | ||||||
|  |         this.options.animation = this.options.theme.animation; | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |       this.options.themeClassName = this.options.theme; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     this.options = $.extend({}, this.options, this.options.layout.options); | ||||||
|  |  | ||||||
|  |     if (this.options.id) { | ||||||
|  |       if ($.noty.store[this.options.id]) { | ||||||
|  |         return $.noty.store[this.options.id]; | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       this.options.id = 'noty_' + (new Date().getTime() * Math.floor(Math.random() * 1000000)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // Build the noty dom initial structure | ||||||
|  |     this._build(); | ||||||
|  |  | ||||||
|  |     // return this so we can chain/use the bridge with less code. | ||||||
|  |     return this; | ||||||
|  |   }, // end init | ||||||
|  |  | ||||||
|  |   _build: function () { | ||||||
|  |  | ||||||
|  |     // Generating noty bar | ||||||
|  |     var $bar = $('<div class="noty_bar noty_type_' + this.options.type + '"></div>').attr('id', this.options.id); | ||||||
|  |     $bar.append(this.options.template).find('.noty_text').html(this.options.text); | ||||||
|  |  | ||||||
|  |     this.$bar = (this.options.layout.parent.object !== null) ? $(this.options.layout.parent.object).css(this.options.layout.parent.css).append($bar) : $bar; | ||||||
|  |  | ||||||
|  |     if (this.options.themeClassName) | ||||||
|  |       this.$bar.addClass(this.options.themeClassName).addClass('noty_container_type_' + this.options.type); | ||||||
|  |  | ||||||
|  |     // Set buttons if available | ||||||
|  |     if (this.options.buttons) { | ||||||
|  |  | ||||||
|  |       var $buttons; | ||||||
|  |       // Try find container for buttons in presented template, and create it if not found | ||||||
|  |       if (this.$bar.find('.noty_buttons').length > 0) { | ||||||
|  |         $buttons = this.$bar.find('.noty_buttons'); | ||||||
|  |       } else { | ||||||
|  |         $buttons = $('<div/>').addClass('noty_buttons'); | ||||||
|  |         (this.options.layout.parent.object !== null) ? this.$bar.find('.noty_bar').append($buttons) : this.$bar.append($buttons); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       var self = this; | ||||||
|  |  | ||||||
|  |       $.each(this.options.buttons, function (i, button) { | ||||||
|  |         var $button = $('<button/>').addClass((button.addClass) ? button.addClass : 'gray').html(button.text).attr('id', button.id ? button.id : 'button-' + i) | ||||||
|  |             .attr('title', button.title) | ||||||
|  |             .appendTo($buttons) | ||||||
|  |             .on('click', function (event) { | ||||||
|  |               if ($.isFunction(button.onClick)) { | ||||||
|  |                 button.onClick.call($button, self, event); | ||||||
|  |               } | ||||||
|  |             }); | ||||||
|  |       }); | ||||||
|  |     } else { | ||||||
|  |       // If buttons is not available, then remove containers if exist | ||||||
|  |       this.$bar.find('.noty_buttons').remove(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // For easy access | ||||||
|  |     this.$message     = this.$bar.find('.noty_message'); | ||||||
|  |     this.$closeButton = this.$bar.find('.noty_close'); | ||||||
|  |     this.$buttons     = this.$bar.find('.noty_buttons'); | ||||||
|  |  | ||||||
|  |     $.noty.store[this.options.id] = this; // store noty for api | ||||||
|  |  | ||||||
|  |   }, // end _build | ||||||
|  |  | ||||||
|  |   show: function () { | ||||||
|  |  | ||||||
|  |     var self = this; | ||||||
|  |  | ||||||
|  |     (self.options.custom) ? self.options.custom.find(self.options.layout.container.selector).append(self.$bar) : $(self.options.layout.container.selector).append(self.$bar); | ||||||
|  |  | ||||||
|  |     if (self.options.theme && self.options.theme.style) | ||||||
|  |       self.options.theme.style.apply(self); | ||||||
|  |  | ||||||
|  |     ($.type(self.options.layout.css) === 'function') ? this.options.layout.css.apply(self.$bar) : self.$bar.css(this.options.layout.css || {}); | ||||||
|  |  | ||||||
|  |     self.$bar.addClass(self.options.layout.addClass); | ||||||
|  |  | ||||||
|  |     self.options.layout.container.style.apply($(self.options.layout.container.selector), [self.options.within]); | ||||||
|  |  | ||||||
|  |     self.showing = true; | ||||||
|  |  | ||||||
|  |     if (self.options.theme && self.options.theme.style) | ||||||
|  |       self.options.theme.callback.onShow.apply(this); | ||||||
|  |  | ||||||
|  |     if ($.inArray('click', self.options.closeWith) > -1) | ||||||
|  |       self.$bar.css('cursor', 'pointer').on('click', function (evt) { | ||||||
|  |         self.stopPropagation(evt); | ||||||
|  |         if (self.options.callback.onCloseClick) { | ||||||
|  |           self.options.callback.onCloseClick.apply(self); | ||||||
|  |         } | ||||||
|  |         self.close(); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     if ($.inArray('hover', self.options.closeWith) > -1) | ||||||
|  |       self.$bar.one('mouseenter', function () { | ||||||
|  |         self.close(); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     if ($.inArray('button', self.options.closeWith) > -1) | ||||||
|  |       self.$closeButton.one('click', function (evt) { | ||||||
|  |         self.stopPropagation(evt); | ||||||
|  |         self.close(); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     if ($.inArray('button', self.options.closeWith) == -1) | ||||||
|  |       self.$closeButton.remove(); | ||||||
|  |  | ||||||
|  |     if (self.options.callback.beforeShow) | ||||||
|  |       self.options.callback.beforeShow.apply(self); | ||||||
|  |  | ||||||
|  |     if (typeof self.options.animation.open == 'string') { | ||||||
|  |       self.animationTypeOpen = 'css'; | ||||||
|  |       self.$bar.css('min-height', self.$bar.innerHeight()); | ||||||
|  |       self.$bar.on('click', function (e) { | ||||||
|  |         self.wasClicked = true; | ||||||
|  |       }); | ||||||
|  |       self.$bar.show(); | ||||||
|  |  | ||||||
|  |       if (self.options.callback.onShow) | ||||||
|  |         self.options.callback.onShow.apply(self); | ||||||
|  |  | ||||||
|  |       self.$bar.addClass(self.options.animation.open).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () { | ||||||
|  |         if (self.options.callback.afterShow) self.options.callback.afterShow.apply(self); | ||||||
|  |         self.showing = false; | ||||||
|  |         self.shown   = true; | ||||||
|  |         if (self.hasOwnProperty('wasClicked')) { | ||||||
|  |           self.$bar.off('click', function (e) { | ||||||
|  |             self.wasClicked = true; | ||||||
|  |           }); | ||||||
|  |           self.close(); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     } else if (typeof self.options.animation.open == 'object' && self.options.animation.open == null) { | ||||||
|  |       self.animationTypeOpen = 'none'; | ||||||
|  |       self.showing           = false; | ||||||
|  |       self.shown             = true; | ||||||
|  |       self.$bar.show(); | ||||||
|  |  | ||||||
|  |       if (self.options.callback.onShow) | ||||||
|  |         self.options.callback.onShow.apply(self); | ||||||
|  |  | ||||||
|  |       self.$bar.queue(function () { | ||||||
|  |         if (self.options.callback.afterShow) | ||||||
|  |           self.options.callback.afterShow.apply(self); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     } else { | ||||||
|  |       self.animationTypeOpen = 'anim'; | ||||||
|  |  | ||||||
|  |       if (self.options.callback.onShow) | ||||||
|  |         self.options.callback.onShow.apply(self); | ||||||
|  |  | ||||||
|  |       self.$bar.animate( | ||||||
|  |           self.options.animation.open, | ||||||
|  |           self.options.animation.speed, | ||||||
|  |           self.options.animation.easing, | ||||||
|  |           function () { | ||||||
|  |             if (self.options.callback.afterShow) self.options.callback.afterShow.apply(self); | ||||||
|  |             self.showing = false; | ||||||
|  |             self.shown   = true; | ||||||
|  |           }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // If noty is have a timeout option | ||||||
|  |     if (self.options.timeout) { | ||||||
|  |       self.queueClose(self.options.timeout); | ||||||
|  |       self.$bar.on('mouseenter', self.dequeueClose.bind(self)); | ||||||
|  |       self.$bar.on('mouseleave', self.queueClose.bind(self, self.options.timeout)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     return this; | ||||||
|  |  | ||||||
|  |   }, // end show | ||||||
|  |  | ||||||
|  |   dequeueClose: function () { | ||||||
|  |     if (!this.closeTimer) return; | ||||||
|  |     clearTimeout(this.closeTimer); | ||||||
|  |     this.closeTimer = null; | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   queueClose: function (timeout) { | ||||||
|  |     if (this.closeTimer) return; | ||||||
|  |     var self        = this; | ||||||
|  |     self.closeTimer = window.setTimeout(function () { | ||||||
|  |       self.close(); | ||||||
|  |     }, timeout); | ||||||
|  |     return self.closeTimer | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   close: function () { | ||||||
|  |     if (this.closeTimer) this.dequeueClose(); | ||||||
|  |  | ||||||
|  |     if (this.closed) return; | ||||||
|  |     if (this.$bar && this.$bar.hasClass('i-am-closing-now')) return; | ||||||
|  |  | ||||||
|  |     var self = this; | ||||||
|  |  | ||||||
|  |     if (this.showing && (this.animationTypeOpen == 'anim' || this.animationTypeOpen == 'none')) { | ||||||
|  |       self.$bar.queue( | ||||||
|  |           function () { | ||||||
|  |             self.close.apply(self); | ||||||
|  |           } | ||||||
|  |       ); | ||||||
|  |       return; | ||||||
|  |     } else if (this.showing && this.animationTypeOpen == 'css') { | ||||||
|  |       self.$bar.on('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () { | ||||||
|  |         self.close(); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (!this.shown && !this.showing) { // If we are still waiting in the queue just delete from queue | ||||||
|  |       var queue = []; | ||||||
|  |       $.each($.noty.queue, function (i, n) { | ||||||
|  |         if (n.options.id != self.options.id) { | ||||||
|  |           queue.push(n); | ||||||
|  |         } | ||||||
|  |       }); | ||||||
|  |       $.noty.queue = queue; | ||||||
|  |       return; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     self.$bar.addClass('i-am-closing-now'); | ||||||
|  |  | ||||||
|  |     if (self.options.callback.onClose) { | ||||||
|  |       self.options.callback.onClose.apply(self); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (typeof self.options.animation.close == 'string') { | ||||||
|  |       self.$bar.removeClass(self.options.animation.open).addClass(self.options.animation.close).one('webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend', function () { | ||||||
|  |         if (self.options.callback.afterClose) self.options.callback.afterClose.apply(self); | ||||||
|  |         self.closeCleanUp(); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     } else if (typeof self.options.animation.close == 'object' && self.options.animation.close == null) { | ||||||
|  |       self.$bar.dequeue().hide(0, function() { | ||||||
|  |         if (self.options.callback.afterClose) self.options.callback.afterClose.apply(self); | ||||||
|  |         self.closeCleanUp(); | ||||||
|  |       }); | ||||||
|  |  | ||||||
|  |     } else { | ||||||
|  |       self.$bar.clearQueue().stop().animate( | ||||||
|  |           self.options.animation.close, | ||||||
|  |           self.options.animation.speed, | ||||||
|  |           self.options.animation.easing, | ||||||
|  |           function () { | ||||||
|  |             if (self.options.callback.afterClose) self.options.callback.afterClose.apply(self); | ||||||
|  |           }) | ||||||
|  |           .promise().done(function () { | ||||||
|  |         self.closeCleanUp(); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   }, // end close | ||||||
|  |  | ||||||
|  |   closeCleanUp: function () { | ||||||
|  |  | ||||||
|  |     var self = this; | ||||||
|  |  | ||||||
|  |     // Modal Cleaning | ||||||
|  |     if (self.options.modal) { | ||||||
|  |       $.notyRenderer.setModalCount(-1); | ||||||
|  |       if ($.notyRenderer.getModalCount() == 0 && !$.noty.queue.length) $('.noty_modal').fadeOut(self.options.animation.fadeSpeed, function () { | ||||||
|  |         $(this).remove(); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // Layout Cleaning | ||||||
|  |     $.notyRenderer.setLayoutCountFor(self, -1); | ||||||
|  |     if ($.notyRenderer.getLayoutCountFor(self) == 0) $(self.options.layout.container.selector).remove(); | ||||||
|  |  | ||||||
|  |     // Make sure self.$bar has not been removed before attempting to remove it | ||||||
|  |     if (typeof self.$bar !== 'undefined' && self.$bar !== null) { | ||||||
|  |  | ||||||
|  |       if (typeof self.options.animation.close == 'string') { | ||||||
|  |         self.$bar.css('transition', 'all 10ms ease').css('border', 0).css('margin', 0).height(0); | ||||||
|  |         self.$bar.one('transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd', function () { | ||||||
|  |           self.$bar.remove(); | ||||||
|  |           self.$bar   = null; | ||||||
|  |           self.closed = true; | ||||||
|  |  | ||||||
|  |           if (self.options.theme.callback && self.options.theme.callback.onClose) { | ||||||
|  |             self.options.theme.callback.onClose.apply(self); | ||||||
|  |           } | ||||||
|  |  | ||||||
|  |           self.handleNext(); | ||||||
|  |         }); | ||||||
|  |       } else { | ||||||
|  |         self.$bar.remove(); | ||||||
|  |         self.$bar   = null; | ||||||
|  |         self.closed = true; | ||||||
|  |  | ||||||
|  |         self.handleNext(); | ||||||
|  |       } | ||||||
|  |     } else { | ||||||
|  |       self.handleNext(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |   }, // end close clean up | ||||||
|  |  | ||||||
|  |   handleNext: function () { | ||||||
|  |     var self = this; | ||||||
|  |  | ||||||
|  |     delete $.noty.store[self.options.id]; // deleting noty from store | ||||||
|  |  | ||||||
|  |     if (self.options.theme.callback && self.options.theme.callback.onClose) { | ||||||
|  |       self.options.theme.callback.onClose.apply(self); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (!self.options.dismissQueue) { | ||||||
|  |       // Queue render | ||||||
|  |       $.noty.ontap = true; | ||||||
|  |  | ||||||
|  |       $.notyRenderer.render(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if (self.options.maxVisible > 0 && self.options.dismissQueue) { | ||||||
|  |       $.notyRenderer.render(); | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   setText: function (text) { | ||||||
|  |     if (!this.closed) { | ||||||
|  |       this.options.text = text; | ||||||
|  |       this.$bar.find('.noty_text').html(text); | ||||||
|  |     } | ||||||
|  |     return this; | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   setType: function (type) { | ||||||
|  |     if (!this.closed) { | ||||||
|  |       this.options.type = type; | ||||||
|  |       this.options.theme.style.apply(this); | ||||||
|  |       this.options.theme.callback.onShow.apply(this); | ||||||
|  |     } | ||||||
|  |     return this; | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   setTimeout: function (time) { | ||||||
|  |     if (!this.closed) { | ||||||
|  |       var self             = this; | ||||||
|  |       this.options.timeout = time; | ||||||
|  |       self.$bar.delay(self.options.timeout).promise().done(function () { | ||||||
|  |         self.close(); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |     return this; | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   stopPropagation: function (evt) { | ||||||
|  |     evt = evt || window.event; | ||||||
|  |     if (typeof evt.stopPropagation !== "undefined") { | ||||||
|  |       evt.stopPropagation(); | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |       evt.cancelBubble = true; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   closed : false, | ||||||
|  |   showing: false, | ||||||
|  |   shown  : false | ||||||
|  |  | ||||||
|  | }; // end NotyObject | ||||||
|  |  | ||||||
|  | $.notyRenderer = {}; | ||||||
|  |  | ||||||
|  | $.notyRenderer.init = function (options) { | ||||||
|  |  | ||||||
|  |   // Renderer creates a new noty | ||||||
|  |   var notification = Object.create(NotyObject).init(options); | ||||||
|  |  | ||||||
|  |   if (notification.options.killer) | ||||||
|  |     $.noty.closeAll(); | ||||||
|  |  | ||||||
|  |   (notification.options.force) ? $.noty.queue.unshift(notification) : $.noty.queue.push(notification); | ||||||
|  |  | ||||||
|  |   $.notyRenderer.render(); | ||||||
|  |  | ||||||
|  |   return ($.noty.returns == 'object') ? notification : notification.options.id; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.render = function () { | ||||||
|  |  | ||||||
|  |   var instance = $.noty.queue[0]; | ||||||
|  |  | ||||||
|  |   if ($.type(instance) === 'object') { | ||||||
|  |     if (instance.options.dismissQueue) { | ||||||
|  |       if (instance.options.maxVisible > 0) { | ||||||
|  |         if ($(instance.options.layout.container.selector + ' > li').length < instance.options.maxVisible) { | ||||||
|  |           $.notyRenderer.show($.noty.queue.shift()); | ||||||
|  |         } | ||||||
|  |         else { | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       else { | ||||||
|  |         $.notyRenderer.show($.noty.queue.shift()); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |       if ($.noty.ontap) { | ||||||
|  |         $.notyRenderer.show($.noty.queue.shift()); | ||||||
|  |         $.noty.ontap = false; | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   else { | ||||||
|  |     $.noty.ontap = true; // Queue is over | ||||||
|  |   } | ||||||
|  |  | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.show = function (notification) { | ||||||
|  |  | ||||||
|  |   if (notification.options.modal) { | ||||||
|  |     $.notyRenderer.createModalFor(notification); | ||||||
|  |     $.notyRenderer.setModalCount(+1); | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   // Where is the container? | ||||||
|  |   if (notification.options.custom) { | ||||||
|  |     if (notification.options.custom.find(notification.options.layout.container.selector).length == 0) { | ||||||
|  |       notification.options.custom.append($(notification.options.layout.container.object).addClass('i-am-new')); | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |       notification.options.custom.find(notification.options.layout.container.selector).removeClass('i-am-new'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |   else { | ||||||
|  |     if ($(notification.options.layout.container.selector).length == 0) { | ||||||
|  |       $('body').append($(notification.options.layout.container.object).addClass('i-am-new')); | ||||||
|  |     } | ||||||
|  |     else { | ||||||
|  |       $(notification.options.layout.container.selector).removeClass('i-am-new'); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  |  | ||||||
|  |   $.notyRenderer.setLayoutCountFor(notification, +1); | ||||||
|  |  | ||||||
|  |   notification.show(); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.createModalFor = function (notification) { | ||||||
|  |   if ($('.noty_modal').length == 0) { | ||||||
|  |     var modal = $('<div/>').addClass('noty_modal').addClass(notification.options.theme).data('noty_modal_count', 0); | ||||||
|  |  | ||||||
|  |     if (notification.options.theme.modal && notification.options.theme.modal.css) | ||||||
|  |       modal.css(notification.options.theme.modal.css); | ||||||
|  |  | ||||||
|  |     modal.prependTo($('body')).fadeIn(notification.options.animation.fadeSpeed); | ||||||
|  |  | ||||||
|  |     if ($.inArray('backdrop', notification.options.closeWith) > -1) | ||||||
|  |       modal.on('click', function () { | ||||||
|  |         $.noty.closeAll(); | ||||||
|  |       }); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.getLayoutCountFor = function (notification) { | ||||||
|  |   return $(notification.options.layout.container.selector).data('noty_layout_count') || 0; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.setLayoutCountFor = function (notification, arg) { | ||||||
|  |   return $(notification.options.layout.container.selector).data('noty_layout_count', $.notyRenderer.getLayoutCountFor(notification) + arg); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.getModalCount = function () { | ||||||
|  |   return $('.noty_modal').data('noty_modal_count') || 0; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.notyRenderer.setModalCount = function (arg) { | ||||||
|  |   return $('.noty_modal').data('noty_modal_count', $.notyRenderer.getModalCount() + arg); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | // This is for custom container | ||||||
|  | $.fn.noty = function (options) { | ||||||
|  |   options.custom = $(this); | ||||||
|  |   return $.notyRenderer.init(options); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty         = {}; | ||||||
|  | $.noty.queue   = []; | ||||||
|  | $.noty.ontap   = true; | ||||||
|  | $.noty.layouts = {}; | ||||||
|  | $.noty.themes  = {}; | ||||||
|  | $.noty.returns = 'object'; | ||||||
|  | $.noty.store   = {}; | ||||||
|  |  | ||||||
|  | $.noty.get = function (id) { | ||||||
|  |   return $.noty.store.hasOwnProperty(id) ? $.noty.store[id] : false; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.close = function (id) { | ||||||
|  |   return $.noty.get(id) ? $.noty.get(id).close() : false; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.setText = function (id, text) { | ||||||
|  |   return $.noty.get(id) ? $.noty.get(id).setText(text) : false; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.setType = function (id, type) { | ||||||
|  |   return $.noty.get(id) ? $.noty.get(id).setType(type) : false; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.clearQueue = function () { | ||||||
|  |   $.noty.queue = []; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.closeAll = function () { | ||||||
|  |   $.noty.clearQueue(); | ||||||
|  |   $.each($.noty.store, function (id, noty) { | ||||||
|  |     noty.close(); | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | var windowAlert = window.alert; | ||||||
|  |  | ||||||
|  | $.noty.consumeAlert = function (options) { | ||||||
|  |   window.alert = function (text) { | ||||||
|  |     if (options) | ||||||
|  |       options.text = text; | ||||||
|  |     else | ||||||
|  |       options = {text: text}; | ||||||
|  |  | ||||||
|  |     $.notyRenderer.init(options); | ||||||
|  |   }; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.stopConsumeAlert = function () { | ||||||
|  |   window.alert = windowAlert; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $.noty.defaults = { | ||||||
|  |   layout      : 'topRight', | ||||||
|  |   theme       : 'relax', | ||||||
|  |   type        : 'alert', | ||||||
|  |   text        : '', | ||||||
|  |   dismissQueue: true, | ||||||
|  |   template    : '<div class="noty_message"><span class="noty_text"></span><div class="noty_close"></div></div>', | ||||||
|  |   animation   : { | ||||||
|  |     open     : {height: 'toggle'}, | ||||||
|  |     close    : {height: 'toggle'}, | ||||||
|  |     easing   : 'swing', | ||||||
|  |     speed    : 500, | ||||||
|  |     fadeSpeed: 'fast' | ||||||
|  |   }, | ||||||
|  |   timeout     : false, | ||||||
|  |   force       : false, | ||||||
|  |   modal       : false, | ||||||
|  |   maxVisible  : 5, | ||||||
|  |   killer      : false, | ||||||
|  |   closeWith   : ['click'], | ||||||
|  |   callback    : { | ||||||
|  |     beforeShow  : function () { | ||||||
|  |     }, | ||||||
|  |     onShow      : function () { | ||||||
|  |     }, | ||||||
|  |     afterShow   : function () { | ||||||
|  |     }, | ||||||
|  |     onClose     : function () { | ||||||
|  |     }, | ||||||
|  |     afterClose  : function () { | ||||||
|  |     }, | ||||||
|  |     onCloseClick: function () { | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   buttons     : false | ||||||
|  | }; | ||||||
|  |  | ||||||
|  | $(window).on('resize', function () { | ||||||
|  |   $.each($.noty.layouts, function (index, layout) { | ||||||
|  |     layout.container.style.apply($(layout.container.selector)); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | // Helpers | ||||||
|  | window.noty = function noty(options) { | ||||||
|  |   return $.notyRenderer.init(options); | ||||||
|  | }; | ||||||
							
								
								
									
										30
									
								
								public/js/noty/layouts/bottom.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,30 @@ | |||||||
|  | $.noty.layouts.bottom = { | ||||||
|  |     name     : 'bottom', | ||||||
|  |     options  : {}, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_bottom_layout_container" />', | ||||||
|  |         selector: 'ul#noty_bottom_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 bottom       : 0, | ||||||
|  |                 left         : '5%', | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '90%', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 9999999 | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										38
									
								
								public/js/noty/layouts/bottomCenter.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,38 @@ | |||||||
|  | $.noty.layouts.bottomCenter = { | ||||||
|  |     name     : 'bottomCenter', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_bottomCenter_layout_container" />', | ||||||
|  |         selector: 'ul#noty_bottomCenter_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 bottom       : 20, | ||||||
|  |                 left         : 0, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             $(this).css({ | ||||||
|  |                 left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px' | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
|  |  | ||||||
							
								
								
									
										39
									
								
								public/js/noty/layouts/bottomLeft.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | |||||||
|  | $.noty.layouts.bottomLeft = { | ||||||
|  |     name     : 'bottomLeft', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_bottomLeft_layout_container" />', | ||||||
|  |         selector: 'ul#noty_bottomLeft_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 bottom       : 20, | ||||||
|  |                 left         : 20, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             if(window.innerWidth < 600) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     left: 5 | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										39
									
								
								public/js/noty/layouts/bottomRight.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | |||||||
|  | $.noty.layouts.bottomRight = { | ||||||
|  |     name     : 'bottomRight', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_bottomRight_layout_container" />', | ||||||
|  |         selector: 'ul#noty_bottomRight_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 bottom       : 20, | ||||||
|  |                 right        : 20, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             if(window.innerWidth < 600) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     right: 5 | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										53
									
								
								public/js/noty/layouts/center.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,53 @@ | |||||||
|  | $.noty.layouts.center = { | ||||||
|  |     name     : 'center', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_center_layout_container" />', | ||||||
|  |         selector: 'ul#noty_center_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             // getting hidden height | ||||||
|  |             var dupe = $(this).clone().css({visibility: "hidden", display: "block", position: "absolute", top: 0, left: 0}).attr('id', 'dupe'); | ||||||
|  |             $("body").append(dupe); | ||||||
|  |             dupe.find('.i-am-closing-now').remove(); | ||||||
|  |             dupe.find('li').css('display', 'block'); | ||||||
|  |             var actual_height = dupe.height(); | ||||||
|  |             dupe.remove(); | ||||||
|  |  | ||||||
|  |             if($(this).hasClass('i-am-new')) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px', | ||||||
|  |                     top : ($(window).height() - actual_height) / 2 + 'px' | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 $(this).animate({ | ||||||
|  |                     left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px', | ||||||
|  |                     top : ($(window).height() - actual_height) / 2 + 'px' | ||||||
|  |                 }, 500); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										58
									
								
								public/js/noty/layouts/centerLeft.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,58 @@ | |||||||
|  | $.noty.layouts.centerLeft = { | ||||||
|  |     name     : 'centerLeft', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_centerLeft_layout_container" />', | ||||||
|  |         selector: 'ul#noty_centerLeft_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 left         : 20, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             // getting hidden height | ||||||
|  |             var dupe = $(this).clone().css({visibility: "hidden", display: "block", position: "absolute", top: 0, left: 0}).attr('id', 'dupe'); | ||||||
|  |             $("body").append(dupe); | ||||||
|  |             dupe.find('.i-am-closing-now').remove(); | ||||||
|  |             dupe.find('li').css('display', 'block'); | ||||||
|  |             var actual_height = dupe.height(); | ||||||
|  |             dupe.remove(); | ||||||
|  |  | ||||||
|  |             if($(this).hasClass('i-am-new')) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     top: ($(window).height() - actual_height) / 2 + 'px' | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 $(this).animate({ | ||||||
|  |                     top: ($(window).height() - actual_height) / 2 + 'px' | ||||||
|  |                 }, 500); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             if(window.innerWidth < 600) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     left: 5 | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										58
									
								
								public/js/noty/layouts/centerRight.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,58 @@ | |||||||
|  | $.noty.layouts.centerRight = { | ||||||
|  |     name     : 'centerRight', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_centerRight_layout_container" />', | ||||||
|  |         selector: 'ul#noty_centerRight_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 right        : 20, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             // getting hidden height | ||||||
|  |             var dupe = $(this).clone().css({visibility: "hidden", display: "block", position: "absolute", top: 0, left: 0}).attr('id', 'dupe'); | ||||||
|  |             $("body").append(dupe); | ||||||
|  |             dupe.find('.i-am-closing-now').remove(); | ||||||
|  |             dupe.find('li').css('display', 'block'); | ||||||
|  |             var actual_height = dupe.height(); | ||||||
|  |             dupe.remove(); | ||||||
|  |  | ||||||
|  |             if($(this).hasClass('i-am-new')) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     top: ($(window).height() - actual_height) / 2 + 'px' | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |             else { | ||||||
|  |                 $(this).animate({ | ||||||
|  |                     top: ($(window).height() - actual_height) / 2 + 'px' | ||||||
|  |                 }, 500); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             if(window.innerWidth < 600) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     right: 5 | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										27
									
								
								public/js/noty/layouts/inline.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | |||||||
|  | $.noty.layouts.inline = { | ||||||
|  |     name     : 'inline', | ||||||
|  |     options  : {}, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul class="noty_inline_layout_container" />', | ||||||
|  |         selector: 'ul.noty_inline_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 width        : '100%', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 9999999 | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										30
									
								
								public/js/noty/layouts/top.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,30 @@ | |||||||
|  | $.noty.layouts.top = { | ||||||
|  |     name     : 'top', | ||||||
|  |     options  : {}, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_top_layout_container" />', | ||||||
|  |         selector: 'ul#noty_top_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 top          : 0, | ||||||
|  |                 left         : '5%', | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '90%', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 9999999 | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										37
									
								
								public/js/noty/layouts/topCenter.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,37 @@ | |||||||
|  | $.noty.layouts.topCenter = { | ||||||
|  |     name     : 'topCenter', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_topCenter_layout_container" />', | ||||||
|  |         selector: 'ul#noty_topCenter_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 top          : 20, | ||||||
|  |                 left         : 0, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             $(this).css({ | ||||||
|  |                 left: ($(window).width() - $(this).outerWidth(false)) / 2 + 'px' | ||||||
|  |             }); | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										39
									
								
								public/js/noty/layouts/topLeft.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | |||||||
|  | $.noty.layouts.topLeft = { | ||||||
|  |     name     : 'topLeft', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_topLeft_layout_container" />', | ||||||
|  |         selector: 'ul#noty_topLeft_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 top          : 20, | ||||||
|  |                 left         : 20, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             if(window.innerWidth < 600) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     left: 5 | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										39
									
								
								public/js/noty/layouts/topRight.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,39 @@ | |||||||
|  | $.noty.layouts.topRight = { | ||||||
|  |     name     : 'topRight', | ||||||
|  |     options  : { // overrides options | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     container: { | ||||||
|  |         object  : '<ul id="noty_topRight_layout_container" />', | ||||||
|  |         selector: 'ul#noty_topRight_layout_container', | ||||||
|  |         style   : function() { | ||||||
|  |             $(this).css({ | ||||||
|  |                 top          : 20, | ||||||
|  |                 right        : 20, | ||||||
|  |                 position     : 'fixed', | ||||||
|  |                 width        : '310px', | ||||||
|  |                 height       : 'auto', | ||||||
|  |                 margin       : 0, | ||||||
|  |                 padding      : 0, | ||||||
|  |                 listStyleType: 'none', | ||||||
|  |                 zIndex       : 10000000 | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             if(window.innerWidth < 600) { | ||||||
|  |                 $(this).css({ | ||||||
|  |                     right: 5 | ||||||
|  |                 }); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     parent   : { | ||||||
|  |         object  : '<li />', | ||||||
|  |         selector: 'li', | ||||||
|  |         css     : {} | ||||||
|  |     }, | ||||||
|  |     css      : { | ||||||
|  |         display: 'none', | ||||||
|  |         width  : '310px' | ||||||
|  |     }, | ||||||
|  |     addClass : '' | ||||||
|  | }; | ||||||
							
								
								
									
										1768
									
								
								public/js/noty/packaged/jquery.noty.packaged.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								public/js/noty/packaged/jquery.noty.packaged.min.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										432
									
								
								public/js/noty/promise.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,432 @@ | |||||||
|  | /*! | ||||||
|  |  * Noty Helpers Javascript From JQuery Javascript Library | ||||||
|  |  * | ||||||
|  |  * Ported by Maksim Pecherskiy.  Original Licensing: | ||||||
|  |  * | ||||||
|  |  * http://jquery.com/ | ||||||
|  |  * | ||||||
|  |  * Copyright 2011, John Resig | ||||||
|  |  * Dual licensed under the MIT or GPL Version 2 licenses. | ||||||
|  |  * http://jquery.org/license | ||||||
|  |  * | ||||||
|  |  * Includes Sizzle.js | ||||||
|  |  * http://sizzlejs.com/ | ||||||
|  |  * Copyright 2011, The Dojo Foundation | ||||||
|  |  * Released under the MIT, BSD, and GPL Licenses. | ||||||
|  |  * | ||||||
|  |  * Date: Mon Nov 21 21:11:03 2011 -0500 | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | (function(){ | ||||||
|  |  | ||||||
|  |   // String to Object flags format cache | ||||||
|  | var flagsCache = {}; | ||||||
|  |  | ||||||
|  | // Convert String-formatted flags into Object-formatted ones and store in cache | ||||||
|  | function createFlags( flags ) { | ||||||
|  |   var object = flagsCache[ flags ] = {}, | ||||||
|  |     i, length; | ||||||
|  |   flags = flags.split( /\s+/ ); | ||||||
|  |   for ( i = 0, length = flags.length; i < length; i++ ) { | ||||||
|  |     object[ flags[i] ] = true; | ||||||
|  |   } | ||||||
|  |   return object; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | jQuery.extend({ | ||||||
|  |  | ||||||
|  |   _mark: function( elem, type ) { | ||||||
|  |     if ( elem ) { | ||||||
|  |       type = (type || "fx") + "mark"; | ||||||
|  |       jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true ); | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   _unmark: function( force, elem, type ) { | ||||||
|  |     if ( force !== true ) { | ||||||
|  |       type = elem; | ||||||
|  |       elem = force; | ||||||
|  |       force = false; | ||||||
|  |     } | ||||||
|  |     if ( elem ) { | ||||||
|  |       type = type || "fx"; | ||||||
|  |       var key = type + "mark", | ||||||
|  |         count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 ); | ||||||
|  |       if ( count ) { | ||||||
|  |         jQuery.data( elem, key, count, true ); | ||||||
|  |       } else { | ||||||
|  |         jQuery.removeData( elem, key, true ); | ||||||
|  |         handleQueueMarkDefer( elem, type, "mark" ); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   queue: function( elem, type, data ) { | ||||||
|  |     if ( elem ) { | ||||||
|  |       type = (type || "fx") + "queue"; | ||||||
|  |       var q = jQuery.data( elem, type, undefined, true ); | ||||||
|  |       // Speed up dequeue by getting out quickly if this is just a lookup | ||||||
|  |       if ( data ) { | ||||||
|  |         if ( !q || jQuery.isArray(data) ) { | ||||||
|  |           q = jQuery.data( elem, type, jQuery.makeArray(data), true ); | ||||||
|  |         } else { | ||||||
|  |           q.push( data ); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       return q || []; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   dequeue: function( elem, type ) { | ||||||
|  |     type = type || "fx"; | ||||||
|  |  | ||||||
|  |     var queue = jQuery.queue( elem, type ), | ||||||
|  |       fn = queue.shift(), | ||||||
|  |       defer; | ||||||
|  |  | ||||||
|  |     // If the fx queue is dequeued, always remove the progress sentinel | ||||||
|  |     if ( fn === "inprogress" ) { | ||||||
|  |       fn = queue.shift(); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if ( fn ) { | ||||||
|  |       // Add a progress sentinel to prevent the fx queue from being | ||||||
|  |       // automatically dequeued | ||||||
|  |       if ( type === "fx" ) { | ||||||
|  |         queue.unshift("inprogress"); | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       fn.call(elem, function() { | ||||||
|  |         jQuery.dequeue(elem, type); | ||||||
|  |       }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if ( !queue.length ) { | ||||||
|  |       jQuery.removeData( elem, type + "queue", true ); | ||||||
|  |       handleQueueMarkDefer( elem, type, "queue" ); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | jQuery.fn.extend({ | ||||||
|  |   queue: function( type, data ) { | ||||||
|  |     if ( typeof type !== "string" ) { | ||||||
|  |       data = type; | ||||||
|  |       type = "fx"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     if ( data === undefined ) { | ||||||
|  |       return jQuery.queue( this[0], type ); | ||||||
|  |     } | ||||||
|  |     return this.each(function() { | ||||||
|  |       var queue = jQuery.queue( this, type, data ); | ||||||
|  |  | ||||||
|  |       if ( type === "fx" && queue[0] !== "inprogress" ) { | ||||||
|  |         jQuery.dequeue( this, type ); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  |   dequeue: function( type ) { | ||||||
|  |     return this.each(function() { | ||||||
|  |       jQuery.dequeue( this, type ); | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  |   // Based off of the plugin by Clint Helfers, with permission. | ||||||
|  |   // http://blindsignals.com/index.php/2009/07/jquery-delay/ | ||||||
|  |   delay: function( time, type ) { | ||||||
|  |     time = jQuery.fx ? jQuery.fx.speeds[time] || time : time; | ||||||
|  |     type = type || "fx"; | ||||||
|  |  | ||||||
|  |     return this.queue( type, function() { | ||||||
|  |       var elem = this; | ||||||
|  |       setTimeout(function() { | ||||||
|  |         jQuery.dequeue( elem, type ); | ||||||
|  |       }, time ); | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  |   clearQueue: function( type ) { | ||||||
|  |     return this.queue( type || "fx", [] ); | ||||||
|  |   }, | ||||||
|  |   // Get a promise resolved when queues of a certain type | ||||||
|  |   // are emptied (fx is the type by default) | ||||||
|  |   promise: function( type, object ) { | ||||||
|  |     if ( typeof type !== "string" ) { | ||||||
|  |       object = type; | ||||||
|  |       type = undefined; | ||||||
|  |     } | ||||||
|  |     type = type || "fx"; | ||||||
|  |     var defer = jQuery.Deferred(), | ||||||
|  |       elements = this, | ||||||
|  |       i = elements.length, | ||||||
|  |       count = 1, | ||||||
|  |       deferDataKey = type + "defer", | ||||||
|  |       queueDataKey = type + "queue", | ||||||
|  |       markDataKey = type + "mark", | ||||||
|  |       tmp; | ||||||
|  |     function resolve() { | ||||||
|  |       if ( !( --count ) ) { | ||||||
|  |         defer.resolveWith( elements, [ elements ] ); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     while( i-- ) { | ||||||
|  |       if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || | ||||||
|  |           ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || | ||||||
|  |             jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && | ||||||
|  |           jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) { | ||||||
|  |         count++; | ||||||
|  |         tmp.done( resolve ); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     resolve(); | ||||||
|  |     return defer.promise(); | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  |  | ||||||
|  | function handleQueueMarkDefer( elem, type, src ) { | ||||||
|  |   var deferDataKey = type + "defer", | ||||||
|  |     queueDataKey = type + "queue", | ||||||
|  |     markDataKey = type + "mark", | ||||||
|  |     defer = jQuery._data( elem, deferDataKey ); | ||||||
|  |   if ( defer && | ||||||
|  |     ( src === "queue" || !jQuery._data(elem, queueDataKey) ) && | ||||||
|  |     ( src === "mark" || !jQuery._data(elem, markDataKey) ) ) { | ||||||
|  |     // Give room for hard-coded callbacks to fire first | ||||||
|  |     // and eventually mark/queue something else on the element | ||||||
|  |     setTimeout( function() { | ||||||
|  |       if ( !jQuery._data( elem, queueDataKey ) && | ||||||
|  |         !jQuery._data( elem, markDataKey ) ) { | ||||||
|  |         jQuery.removeData( elem, deferDataKey, true ); | ||||||
|  |         defer.fire(); | ||||||
|  |       } | ||||||
|  |     }, 0 ); | ||||||
|  |   } | ||||||
|  | } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | jQuery.Callbacks = function( flags ) { | ||||||
|  |  | ||||||
|  |   // Convert flags from String-formatted to Object-formatted | ||||||
|  |   // (we check in cache first) | ||||||
|  |   flags = flags ? ( /*flagsCache[ flags ] || */createFlags( flags ) ) : {}; | ||||||
|  |  | ||||||
|  |   var // Actual callback list | ||||||
|  |     list = [], | ||||||
|  |     // Stack of fire calls for repeatable lists | ||||||
|  |     stack = [], | ||||||
|  |     // Last fire value (for non-forgettable lists) | ||||||
|  |     memory, | ||||||
|  |     // Flag to know if list is currently firing | ||||||
|  |     firing, | ||||||
|  |     // First callback to fire (used internally by add and fireWith) | ||||||
|  |     firingStart, | ||||||
|  |     // End of the loop when firing | ||||||
|  |     firingLength, | ||||||
|  |     // Index of currently firing callback (modified by remove if needed) | ||||||
|  |     firingIndex, | ||||||
|  |     // Add one or several callbacks to the list | ||||||
|  |     add = function( args ) { | ||||||
|  |       var i, | ||||||
|  |         length, | ||||||
|  |         elem, | ||||||
|  |         type, | ||||||
|  |         actual; | ||||||
|  |       for ( i = 0, length = args.length; i < length; i++ ) { | ||||||
|  |         elem = args[ i ]; | ||||||
|  |         type = jQuery.type( elem ); | ||||||
|  |         if ( type === "array" ) { | ||||||
|  |           // Inspect recursively | ||||||
|  |           add( elem ); | ||||||
|  |         } else if ( type === "function" ) { | ||||||
|  |           // Add if not in unique mode and callback is not in | ||||||
|  |           if ( !flags.unique || !self.has( elem ) ) { | ||||||
|  |             list.push( elem ); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     // Fire callbacks | ||||||
|  |     fire = function( context, args ) { | ||||||
|  |       args = args || []; | ||||||
|  |       memory = !flags.memory || [ context, args ]; | ||||||
|  |       firing = true; | ||||||
|  |       firingIndex = firingStart || 0; | ||||||
|  |       firingStart = 0; | ||||||
|  |       firingLength = list.length; | ||||||
|  |       for ( ; list && firingIndex < firingLength; firingIndex++ ) { | ||||||
|  |         if ( list[ firingIndex ].apply( context, args ) === false && flags.stopOnFalse ) { | ||||||
|  |           memory = true; // Mark as halted | ||||||
|  |           break; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |       firing = false; | ||||||
|  |       if ( list ) { | ||||||
|  |         if ( !flags.once ) { | ||||||
|  |           if ( stack && stack.length ) { | ||||||
|  |             memory = stack.shift(); | ||||||
|  |             self.fireWith( memory[ 0 ], memory[ 1 ] ); | ||||||
|  |           } | ||||||
|  |         } else if ( memory === true ) { | ||||||
|  |           self.disable(); | ||||||
|  |         } else { | ||||||
|  |           list = []; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|  |     // Actual Callbacks object | ||||||
|  |     self = { | ||||||
|  |       // Add a callback or a collection of callbacks to the list | ||||||
|  |       add: function() { | ||||||
|  |         if ( list ) { | ||||||
|  |           var length = list.length; | ||||||
|  |           add( arguments ); | ||||||
|  |           // Do we need to add the callbacks to the | ||||||
|  |           // current firing batch? | ||||||
|  |           if ( firing ) { | ||||||
|  |             firingLength = list.length; | ||||||
|  |           // With memory, if we're not firing then | ||||||
|  |           // we should call right away, unless previous | ||||||
|  |           // firing was halted (stopOnFalse) | ||||||
|  |           } else if ( memory && memory !== true ) { | ||||||
|  |             firingStart = length; | ||||||
|  |             fire( memory[ 0 ], memory[ 1 ] ); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // Remove a callback from the list | ||||||
|  |       remove: function() { | ||||||
|  |         if ( list ) { | ||||||
|  |           var args = arguments, | ||||||
|  |             argIndex = 0, | ||||||
|  |             argLength = args.length; | ||||||
|  |           for ( ; argIndex < argLength ; argIndex++ ) { | ||||||
|  |             for ( var i = 0; i < list.length; i++ ) { | ||||||
|  |               if ( args[ argIndex ] === list[ i ] ) { | ||||||
|  |                 // Handle firingIndex and firingLength | ||||||
|  |                 if ( firing ) { | ||||||
|  |                   if ( i <= firingLength ) { | ||||||
|  |                     firingLength--; | ||||||
|  |                     if ( i <= firingIndex ) { | ||||||
|  |                       firingIndex--; | ||||||
|  |                     } | ||||||
|  |                   } | ||||||
|  |                 } | ||||||
|  |                 // Remove the element | ||||||
|  |                 list.splice( i--, 1 ); | ||||||
|  |                 // If we have some unicity property then | ||||||
|  |                 // we only need to do this once | ||||||
|  |                 if ( flags.unique ) { | ||||||
|  |                   break; | ||||||
|  |                 } | ||||||
|  |               } | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // Control if a given callback is in the list | ||||||
|  |       has: function( fn ) { | ||||||
|  |         if ( list ) { | ||||||
|  |           var i = 0, | ||||||
|  |             length = list.length; | ||||||
|  |           for ( ; i < length; i++ ) { | ||||||
|  |             if ( fn === list[ i ] ) { | ||||||
|  |               return true; | ||||||
|  |             } | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         return false; | ||||||
|  |       }, | ||||||
|  |       // Remove all callbacks from the list | ||||||
|  |       empty: function() { | ||||||
|  |         list = []; | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // Have the list do nothing anymore | ||||||
|  |       disable: function() { | ||||||
|  |         list = stack = memory = undefined; | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // Is it disabled? | ||||||
|  |       disabled: function() { | ||||||
|  |         return !list; | ||||||
|  |       }, | ||||||
|  |       // Lock the list in its current state | ||||||
|  |       lock: function() { | ||||||
|  |         stack = undefined; | ||||||
|  |         if ( !memory || memory === true ) { | ||||||
|  |           self.disable(); | ||||||
|  |         } | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // Is it locked? | ||||||
|  |       locked: function() { | ||||||
|  |         return !stack; | ||||||
|  |       }, | ||||||
|  |       // Call all callbacks with the given context and arguments | ||||||
|  |       fireWith: function( context, args ) { | ||||||
|  |         if ( stack ) { | ||||||
|  |           if ( firing ) { | ||||||
|  |             if ( !flags.once ) { | ||||||
|  |               stack.push( [ context, args ] ); | ||||||
|  |             } | ||||||
|  |           } else if ( !( flags.once && memory ) ) { | ||||||
|  |             fire( context, args ); | ||||||
|  |           } | ||||||
|  |         } | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // Call all the callbacks with the given arguments | ||||||
|  |       fire: function() { | ||||||
|  |         self.fireWith( this, arguments ); | ||||||
|  |         return this; | ||||||
|  |       }, | ||||||
|  |       // To know if the callbacks have already been called at least once | ||||||
|  |       fired: function() { | ||||||
|  |         return !!memory; | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |   return self; | ||||||
|  | }; | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | jQuery.fn.extend({ | ||||||
|  |   // Get a promise resolved when queues of a certain type | ||||||
|  |   // are emptied (fx is the type by default) | ||||||
|  |   promise: function( type, object ) { | ||||||
|  |     if ( typeof type !== "string" ) { | ||||||
|  |       object = type; | ||||||
|  |       type = undefined; | ||||||
|  |     } | ||||||
|  |     type = type || "fx"; | ||||||
|  |     var defer = jQuery.Deferred(), | ||||||
|  |       elements = this, | ||||||
|  |       i = elements.length, | ||||||
|  |       count = 1, | ||||||
|  |       deferDataKey = type + "defer", | ||||||
|  |       queueDataKey = type + "queue", | ||||||
|  |       markDataKey = type + "mark", | ||||||
|  |       tmp; | ||||||
|  |     function resolve() { | ||||||
|  |       if ( !( --count ) ) { | ||||||
|  |         defer.resolveWith( elements, [ elements ] ); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     while( i-- ) { | ||||||
|  |       if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) || | ||||||
|  |           ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) || | ||||||
|  |             jQuery.data( elements[ i ], markDataKey, undefined, true ) ) && | ||||||
|  |           jQuery.data( elements[ i ], deferDataKey, jQuery.Callbacks( "once memory" ), true ) )) { | ||||||
|  |         count++; | ||||||
|  |         tmp.add( resolve ); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |     resolve(); | ||||||
|  |     return defer.promise(); | ||||||
|  |   } | ||||||
|  | }); | ||||||
|  | })(); | ||||||
							
								
								
									
										58
									
								
								public/js/noty/themes/bootstrap.js
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,58 @@ | |||||||
|  | $.noty.themes.bootstrapTheme = { | ||||||
|  |   name    : 'bootstrapTheme', | ||||||
|  |   modal   : { | ||||||
|  |     css: { | ||||||
|  |       position       : 'fixed', | ||||||
|  |       width          : '100%', | ||||||
|  |       height         : '100%', | ||||||
|  |       backgroundColor: '#000', | ||||||
|  |       zIndex         : 10000, | ||||||
|  |       opacity        : 0.6, | ||||||
|  |       display        : 'none', | ||||||
|  |       left           : 0, | ||||||
|  |       top            : 0, | ||||||
|  |       wordBreak      : 'break-all' | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   style   : function () { | ||||||
|  |  | ||||||
|  |     var containerSelector = this.options.layout.container.selector; | ||||||
|  |     $(containerSelector).addClass('list-group'); | ||||||
|  |  | ||||||
|  |     this.$closeButton.append('<span aria-hidden="true">×</span><span class="sr-only">Close</span>'); | ||||||
|  |     this.$closeButton.addClass('close'); | ||||||
|  |  | ||||||
|  |     this.$bar.addClass("list-group-item").css('padding', '0px'); | ||||||
|  |  | ||||||
|  |     switch (this.options.type) { | ||||||
|  |       case 'alert': | ||||||
|  |       case 'notification': | ||||||
|  |         this.$bar.addClass("list-group-item-info"); | ||||||
|  |         break; | ||||||
|  |       case 'warning': | ||||||
|  |         this.$bar.addClass("list-group-item-warning"); | ||||||
|  |         break; | ||||||
|  |       case 'error': | ||||||
|  |         this.$bar.addClass("list-group-item-danger"); | ||||||
|  |         break; | ||||||
|  |       case 'information': | ||||||
|  |         this.$bar.addClass("list-group-item-info"); | ||||||
|  |         break; | ||||||
|  |       case 'success': | ||||||
|  |         this.$bar.addClass("list-group-item-success"); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     this.$message.css({ | ||||||
|  |       textAlign: 'center', | ||||||
|  |       padding  : '8px 10px 9px', | ||||||
|  |       width    : 'auto', | ||||||
|  |       position : 'relative' | ||||||
|  |     }); | ||||||
|  |   }, | ||||||
|  |   callback: { | ||||||
|  |     onShow : function () { }, | ||||||
|  |     onClose: function () { } | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  |  | ||||||
							
								
								
									
										182
									
								
								public/js/noty/themes/default.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,182 @@ | |||||||
|  | $.noty.themes.defaultTheme = { | ||||||
|  |   name    : 'defaultTheme', | ||||||
|  |   helpers : { | ||||||
|  |     borderFix: function () { | ||||||
|  |       if (this.options.dismissQueue) { | ||||||
|  |         var selector = this.options.layout.container.selector + ' ' + this.options.layout.parent.selector; | ||||||
|  |         switch (this.options.layout.name) { | ||||||
|  |           case 'top': | ||||||
|  |             $(selector).css({borderRadius: '0px 0px 0px 0px'}); | ||||||
|  |             $(selector).last().css({borderRadius: '0px 0px 5px 5px'}); | ||||||
|  |             break; | ||||||
|  |           case 'topCenter': | ||||||
|  |           case 'topLeft': | ||||||
|  |           case 'topRight': | ||||||
|  |           case 'bottomCenter': | ||||||
|  |           case 'bottomLeft': | ||||||
|  |           case 'bottomRight': | ||||||
|  |           case 'center': | ||||||
|  |           case 'centerLeft': | ||||||
|  |           case 'centerRight': | ||||||
|  |           case 'inline': | ||||||
|  |             $(selector).css({borderRadius: '0px 0px 0px 0px'}); | ||||||
|  |             $(selector).first().css({'border-top-left-radius': '5px', 'border-top-right-radius': '5px'}); | ||||||
|  |             $(selector).last().css({'border-bottom-left-radius': '5px', 'border-bottom-right-radius': '5px'}); | ||||||
|  |             break; | ||||||
|  |           case 'bottom': | ||||||
|  |             $(selector).css({borderRadius: '0px 0px 0px 0px'}); | ||||||
|  |             $(selector).first().css({borderRadius: '5px 5px 0px 0px'}); | ||||||
|  |             break; | ||||||
|  |           default: | ||||||
|  |             break; | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   modal   : { | ||||||
|  |     css: { | ||||||
|  |       position       : 'fixed', | ||||||
|  |       width          : '100%', | ||||||
|  |       height         : '100%', | ||||||
|  |       backgroundColor: '#000', | ||||||
|  |       zIndex         : 10000, | ||||||
|  |       opacity        : 0.6, | ||||||
|  |       display        : 'none', | ||||||
|  |       left           : 0, | ||||||
|  |       top            : 0 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   style   : function () { | ||||||
|  |  | ||||||
|  |     this.$bar.css({ | ||||||
|  |       overflow  : 'hidden', | ||||||
|  |       background: "url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABsAAAAoCAQAAAClM0ndAAAAhklEQVR4AdXO0QrCMBBE0bttkk38/w8WRERpdyjzVOc+HxhIHqJGMQcFFkpYRQotLLSw0IJ5aBdovruMYDA/kT8plF9ZKLFQcgF18hDj1SbQOMlCA4kao0iiXmah7qBWPdxpohsgVZyj7e5I9KcID+EhiDI5gxBYKLBQYKHAQoGFAoEks/YEGHYKB7hFxf0AAAAASUVORK5CYII=') repeat-x scroll left top #fff" | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$message.css({ | ||||||
|  |       textAlign : 'center', | ||||||
|  |       padding   : '8px 10px 9px', | ||||||
|  |       width     : 'auto', | ||||||
|  |       position  : 'relative' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$closeButton.css({ | ||||||
|  |       position  : 'absolute', | ||||||
|  |       top       : 4, right: 4, | ||||||
|  |       width     : 10, height: 10, | ||||||
|  |       background: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAxUlEQVR4AR3MPUoDURSA0e++uSkkOxC3IAOWNtaCIDaChfgXBMEZbQRByxCwk+BasgQRZLSYoLgDQbARxry8nyumPcVRKDfd0Aa8AsgDv1zp6pYd5jWOwhvebRTbzNNEw5BSsIpsj/kurQBnmk7sIFcCF5yyZPDRG6trQhujXYosaFoc+2f1MJ89uc76IND6F9BvlXUdpb6xwD2+4q3me3bysiHvtLYrUJto7PD/ve7LNHxSg/woN2kSz4txasBdhyiz3ugPGetTjm3XRokAAAAASUVORK5CYII=)", | ||||||
|  |       display   : 'none', | ||||||
|  |       cursor    : 'pointer' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$buttons.css({ | ||||||
|  |       padding        : 5, | ||||||
|  |       textAlign      : 'right', | ||||||
|  |       borderTop      : '1px solid #ccc', | ||||||
|  |       backgroundColor: '#fff' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$buttons.find('button').css({ | ||||||
|  |       marginLeft: 5 | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$buttons.find('button:first').css({ | ||||||
|  |       marginLeft: 0 | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$bar.on({ | ||||||
|  |       mouseenter: function () { | ||||||
|  |         $(this).find('.noty_close').stop().fadeTo('normal', 1); | ||||||
|  |       }, | ||||||
|  |       mouseleave: function () { | ||||||
|  |         $(this).find('.noty_close').stop().fadeTo('normal', 0); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     switch (this.options.layout.name) { | ||||||
|  |       case 'top': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           borderRadius: '0px 0px 5px 5px', | ||||||
|  |           borderBottom: '2px solid #eee', | ||||||
|  |           borderLeft  : '2px solid #eee', | ||||||
|  |           borderRight : '2px solid #eee', | ||||||
|  |           boxShadow   : "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |         }); | ||||||
|  |         break; | ||||||
|  |       case 'topCenter': | ||||||
|  |       case 'center': | ||||||
|  |       case 'bottomCenter': | ||||||
|  |       case 'inline': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           borderRadius: '5px', | ||||||
|  |           border      : '1px solid #eee', | ||||||
|  |           boxShadow   : "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |         }); | ||||||
|  |         this.$message.css({textAlign: 'center'}); | ||||||
|  |         break; | ||||||
|  |       case 'topLeft': | ||||||
|  |       case 'topRight': | ||||||
|  |       case 'bottomLeft': | ||||||
|  |       case 'bottomRight': | ||||||
|  |       case 'centerLeft': | ||||||
|  |       case 'centerRight': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           borderRadius: '5px', | ||||||
|  |           border      : '1px solid #eee', | ||||||
|  |           boxShadow   : "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |         }); | ||||||
|  |         this.$message.css({textAlign: 'left'}); | ||||||
|  |         break; | ||||||
|  |       case 'bottom': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           borderRadius: '5px 5px 0px 0px', | ||||||
|  |           borderTop   : '2px solid #eee', | ||||||
|  |           borderLeft  : '2px solid #eee', | ||||||
|  |           borderRight : '2px solid #eee', | ||||||
|  |           boxShadow   : "0 -2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |         }); | ||||||
|  |         break; | ||||||
|  |       default: | ||||||
|  |         this.$bar.css({ | ||||||
|  |           border   : '2px solid #eee', | ||||||
|  |           boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |         }); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     switch (this.options.type) { | ||||||
|  |       case 'alert': | ||||||
|  |       case 'notification': | ||||||
|  |         this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); | ||||||
|  |         break; | ||||||
|  |       case 'warning': | ||||||
|  |         this.$bar.css({backgroundColor: '#FFEAA8', borderColor: '#FFC237', color: '#826200'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #FFC237'}); | ||||||
|  |         break; | ||||||
|  |       case 'error': | ||||||
|  |         this.$bar.css({backgroundColor: 'red', borderColor: 'darkred', color: '#FFF'}); | ||||||
|  |         this.$message.css({fontWeight: 'bold'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid darkred'}); | ||||||
|  |         break; | ||||||
|  |       case 'information': | ||||||
|  |         this.$bar.css({backgroundColor: '#57B7E2', borderColor: '#0B90C4', color: '#FFF'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #0B90C4'}); | ||||||
|  |         break; | ||||||
|  |       case 'success': | ||||||
|  |         this.$bar.css({backgroundColor: 'lightgreen', borderColor: '#50C24E', color: 'darkgreen'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #50C24E'}); | ||||||
|  |         break; | ||||||
|  |       default: | ||||||
|  |         this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   callback: { | ||||||
|  |     onShow : function () { | ||||||
|  |       $.noty.themes.defaultTheme.helpers.borderFix.apply(this); | ||||||
|  |     }, | ||||||
|  |     onClose: function () { | ||||||
|  |       $.noty.themes.defaultTheme.helpers.borderFix.apply(this); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }; | ||||||
							
								
								
									
										143
									
								
								public/js/noty/themes/metroui.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,143 @@ | |||||||
|  | $.noty.themes.metroui = { | ||||||
|  |   name    : 'metroui', | ||||||
|  |   helpers : {}, | ||||||
|  |   modal   : { | ||||||
|  |     css: { | ||||||
|  |       position       : 'fixed', | ||||||
|  |       width          : '100%', | ||||||
|  |       height         : '100%', | ||||||
|  |       backgroundColor: '#000', | ||||||
|  |       zIndex         : 10000, | ||||||
|  |       opacity        : 0.6, | ||||||
|  |       display        : 'none', | ||||||
|  |       left           : 0, | ||||||
|  |       top            : 0 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   style   : function () { | ||||||
|  |  | ||||||
|  |     this.$bar.css({ | ||||||
|  |       overflow    : 'hidden', | ||||||
|  |       margin      : '4px 0', | ||||||
|  |       borderRadius: '0' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$message.css({ | ||||||
|  |       textAlign: 'center', | ||||||
|  |       padding  : '1.25rem', | ||||||
|  |       width    : 'auto', | ||||||
|  |       position : 'relative' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$closeButton.css({ | ||||||
|  |       position  : 'absolute', | ||||||
|  |       top       : '.25rem', right: '.25rem', | ||||||
|  |       width     : 10, height: 10, | ||||||
|  |       background: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAxUlEQVR4AR3MPUoDURSA0e++uSkkOxC3IAOWNtaCIDaChfgXBMEZbQRByxCwk+BasgQRZLSYoLgDQbARxry8nyumPcVRKDfd0Aa8AsgDv1zp6pYd5jWOwhvebRTbzNNEw5BSsIpsj/kurQBnmk7sIFcCF5yyZPDRG6trQhujXYosaFoc+2f1MJ89uc76IND6F9BvlXUdpb6xwD2+4q3me3bysiHvtLYrUJto7PD/ve7LNHxSg/woN2kSz4txasBdhyiz3ugPGetTjm3XRokAAAAASUVORK5CYII=)", | ||||||
|  |       display   : 'none', | ||||||
|  |       cursor    : 'pointer' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$buttons.css({ | ||||||
|  |       padding        : 5, | ||||||
|  |       textAlign      : 'right', | ||||||
|  |       borderTop      : '1px solid #ccc', | ||||||
|  |       backgroundColor: '#fff' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$buttons.find('button').css({ | ||||||
|  |       marginLeft: 5 | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$buttons.find('button:first').css({ | ||||||
|  |       marginLeft: 0 | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     this.$bar.on({ | ||||||
|  |       mouseenter: function () { | ||||||
|  |         $(this).find('.noty_close').stop().fadeTo('normal', 1); | ||||||
|  |       }, | ||||||
|  |       mouseleave: function () { | ||||||
|  |         $(this).find('.noty_close').stop().fadeTo('normal', 0); | ||||||
|  |       } | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     switch (this.options.layout.name) { | ||||||
|  |       case 'top': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           border   : 'none', | ||||||
|  |           boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.3)" | ||||||
|  |         }); | ||||||
|  |         break; | ||||||
|  |       case 'topCenter': | ||||||
|  |       case 'center': | ||||||
|  |       case 'bottomCenter': | ||||||
|  |       case 'inline': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           border   : 'none', | ||||||
|  |           boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.3)" | ||||||
|  |         }); | ||||||
|  |         this.$message.css({textAlign: 'center'}); | ||||||
|  |         break; | ||||||
|  |       case 'topLeft': | ||||||
|  |       case 'topRight': | ||||||
|  |       case 'bottomLeft': | ||||||
|  |       case 'bottomRight': | ||||||
|  |       case 'centerLeft': | ||||||
|  |       case 'centerRight': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           border   : 'none', | ||||||
|  |           boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.3)" | ||||||
|  |         }); | ||||||
|  |         this.$message.css({textAlign: 'left'}); | ||||||
|  |         break; | ||||||
|  |       case 'bottom': | ||||||
|  |         this.$bar.css({ | ||||||
|  |           border   : 'none', | ||||||
|  |           boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.3)" | ||||||
|  |         }); | ||||||
|  |         break; | ||||||
|  |       default: | ||||||
|  |         this.$bar.css({ | ||||||
|  |           border   : 'none', | ||||||
|  |           boxShadow: "0 0 5px 0 rgba(0, 0, 0, 0.3)" | ||||||
|  |         }); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     switch (this.options.type) { | ||||||
|  |       case 'alert': | ||||||
|  |       case 'notification': | ||||||
|  |         this.$bar.css({backgroundColor: '#fff', border: 'none', color: '#1d1d1d'}); | ||||||
|  |         break; | ||||||
|  |       case 'warning': | ||||||
|  |         this.$bar.css({backgroundColor: '#FA6800', border: 'none', color: '#fff'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #FA6800'}); | ||||||
|  |         break; | ||||||
|  |       case 'error': | ||||||
|  |         this.$bar.css({backgroundColor: '#CE352C', border: 'none', color: '#fff'}); | ||||||
|  |         this.$message.css({fontWeight: 'bold'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #CE352C'}); | ||||||
|  |         break; | ||||||
|  |       case 'information': | ||||||
|  |         this.$bar.css({backgroundColor: '#1BA1E2', border: 'none', color: '#fff'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #1BA1E2'}); | ||||||
|  |         break; | ||||||
|  |       case 'success': | ||||||
|  |         this.$bar.css({backgroundColor: '#60A917', border: 'none', color: '#fff'}); | ||||||
|  |         this.$buttons.css({borderTop: '1px solid #50C24E'}); | ||||||
|  |         break; | ||||||
|  |       default: | ||||||
|  |         this.$bar.css({backgroundColor: '#fff', border: 'none', color: '#1d1d1d'}); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   callback: { | ||||||
|  |     onShow : function () { | ||||||
|  |  | ||||||
|  |     }, | ||||||
|  |     onClose: function () { | ||||||
|  |  | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }; | ||||||
							
								
								
									
										149
									
								
								public/js/noty/themes/relax.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,149 @@ | |||||||
|  | $.noty.themes.relax = { | ||||||
|  |     name    : 'relax', | ||||||
|  |     helpers : {}, | ||||||
|  |     modal   : { | ||||||
|  |         css: { | ||||||
|  |             position       : 'fixed', | ||||||
|  |             width          : '100%', | ||||||
|  |             height         : '100%', | ||||||
|  |             backgroundColor: '#000', | ||||||
|  |             zIndex         : 10000, | ||||||
|  |             opacity        : 0.6, | ||||||
|  |             display        : 'none', | ||||||
|  |             left           : 0, | ||||||
|  |             top            : 0 | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     style   : function() { | ||||||
|  |  | ||||||
|  |         this.$bar.css({ | ||||||
|  |             overflow    : 'hidden', | ||||||
|  |             margin      : '4px 0', | ||||||
|  |             borderRadius: '2px' | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         this.$message.css({ | ||||||
|  |             textAlign : 'center', | ||||||
|  |             padding   : '10px', | ||||||
|  |             width     : 'auto', | ||||||
|  |             position  : 'relative' | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         this.$closeButton.css({ | ||||||
|  |             position  : 'absolute', | ||||||
|  |             top       : 4, right: 4, | ||||||
|  |             width     : 10, height: 10, | ||||||
|  |             background: "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAQAAAAnOwc2AAAAxUlEQVR4AR3MPUoDURSA0e++uSkkOxC3IAOWNtaCIDaChfgXBMEZbQRByxCwk+BasgQRZLSYoLgDQbARxry8nyumPcVRKDfd0Aa8AsgDv1zp6pYd5jWOwhvebRTbzNNEw5BSsIpsj/kurQBnmk7sIFcCF5yyZPDRG6trQhujXYosaFoc+2f1MJ89uc76IND6F9BvlXUdpb6xwD2+4q3me3bysiHvtLYrUJto7PD/ve7LNHxSg/woN2kSz4txasBdhyiz3ugPGetTjm3XRokAAAAASUVORK5CYII=)", | ||||||
|  |             display   : 'none', | ||||||
|  |             cursor    : 'pointer' | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         this.$buttons.css({ | ||||||
|  |             padding        : 5, | ||||||
|  |             textAlign      : 'right', | ||||||
|  |             borderTop      : '1px solid #ccc', | ||||||
|  |             backgroundColor: '#fff' | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         this.$buttons.find('button').css({ | ||||||
|  |             marginLeft: 5 | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         this.$buttons.find('button:first').css({ | ||||||
|  |             marginLeft: 0 | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         this.$bar.on({ | ||||||
|  |             mouseenter: function() { | ||||||
|  |                 $(this).find('.noty_close').stop().fadeTo('normal', 1); | ||||||
|  |             }, | ||||||
|  |             mouseleave: function() { | ||||||
|  |                 $(this).find('.noty_close').stop().fadeTo('normal', 0); | ||||||
|  |             } | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         switch(this.options.layout.name) { | ||||||
|  |             case 'top': | ||||||
|  |                 this.$bar.css({ | ||||||
|  |                     borderBottom: '2px solid #eee', | ||||||
|  |                     borderLeft  : '2px solid #eee', | ||||||
|  |                     borderRight : '2px solid #eee', | ||||||
|  |                     borderTop   : '2px solid #eee', | ||||||
|  |                     boxShadow   : "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |                 }); | ||||||
|  |                 break; | ||||||
|  |             case 'topCenter': | ||||||
|  |             case 'center': | ||||||
|  |             case 'bottomCenter': | ||||||
|  |             case 'inline': | ||||||
|  |                 this.$bar.css({ | ||||||
|  |                     border   : '1px solid #eee', | ||||||
|  |                     boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |                 }); | ||||||
|  |                 this.$message.css({textAlign: 'center'}); | ||||||
|  |                 break; | ||||||
|  |             case 'topLeft': | ||||||
|  |             case 'topRight': | ||||||
|  |             case 'bottomLeft': | ||||||
|  |             case 'bottomRight': | ||||||
|  |             case 'centerLeft': | ||||||
|  |             case 'centerRight': | ||||||
|  |                 this.$bar.css({ | ||||||
|  |                     border   : '1px solid #eee', | ||||||
|  |                     boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |                 }); | ||||||
|  |                 this.$message.css({textAlign: 'left'}); | ||||||
|  |                 break; | ||||||
|  |             case 'bottom': | ||||||
|  |                 this.$bar.css({ | ||||||
|  |                     borderTop   : '2px solid #eee', | ||||||
|  |                     borderLeft  : '2px solid #eee', | ||||||
|  |                     borderRight : '2px solid #eee', | ||||||
|  |                     borderBottom: '2px solid #eee', | ||||||
|  |                     boxShadow   : "0 -2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |                 }); | ||||||
|  |                 break; | ||||||
|  |             default: | ||||||
|  |                 this.$bar.css({ | ||||||
|  |                     border   : '2px solid #eee', | ||||||
|  |                     boxShadow: "0 2px 4px rgba(0, 0, 0, 0.1)" | ||||||
|  |                 }); | ||||||
|  |                 break; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         switch(this.options.type) { | ||||||
|  |             case 'alert': | ||||||
|  |             case 'notification': | ||||||
|  |                 this.$bar.css({backgroundColor: '#FFF', borderColor: '#dedede', color: '#444'}); | ||||||
|  |                 break; | ||||||
|  |             case 'warning': | ||||||
|  |                 this.$bar.css({backgroundColor: '#FFEAA8', borderColor: '#FFC237', color: '#826200'}); | ||||||
|  |                 this.$buttons.css({borderTop: '1px solid #FFC237'}); | ||||||
|  |                 break; | ||||||
|  |             case 'error': | ||||||
|  |                 this.$bar.css({backgroundColor: '#FF8181', borderColor: '#e25353', color: '#FFF'}); | ||||||
|  |                 this.$message.css({fontWeight: 'bold'}); | ||||||
|  |                 this.$buttons.css({borderTop: '1px solid darkred'}); | ||||||
|  |                 break; | ||||||
|  |             case 'information': | ||||||
|  |                 this.$bar.css({backgroundColor: '#78C5E7', borderColor: '#3badd6', color: '#FFF'}); | ||||||
|  |                 this.$buttons.css({borderTop: '1px solid #0B90C4'}); | ||||||
|  |                 break; | ||||||
|  |             case 'success': | ||||||
|  |                 this.$bar.css({backgroundColor: '#BCF5BC', borderColor: '#7cdd77', color: 'darkgreen'}); | ||||||
|  |                 this.$buttons.css({borderTop: '1px solid #50C24E'}); | ||||||
|  |                 break; | ||||||
|  |             default: | ||||||
|  |                 this.$bar.css({backgroundColor: '#FFF', borderColor: '#CCC', color: '#444'}); | ||||||
|  |                 break; | ||||||
|  |         } | ||||||
|  |     }, | ||||||
|  |     callback: { | ||||||
|  |         onShow : function() { | ||||||
|  |  | ||||||
|  |         }, | ||||||
|  |         onClose: function() { | ||||||
|  |  | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | }; | ||||||
							
								
								
									
										103
									
								
								public/js/noty/themes/semanticUI.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,103 @@ | |||||||
|  | $.noty.themes.semanticUI = { | ||||||
|  |   name    : 'semanticUI', | ||||||
|  |  | ||||||
|  |   template : '<div class="ui message"><div class="content"><div class="header"></div></div></div>', | ||||||
|  |  | ||||||
|  |   animation: { | ||||||
|  |     open : { | ||||||
|  |       animation: 'fade', | ||||||
|  |       duration : '800ms' | ||||||
|  |     }, | ||||||
|  |     close: { | ||||||
|  |       animation: 'fade left', | ||||||
|  |       duration : '800ms' | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |  | ||||||
|  |   modal   : { | ||||||
|  |     css: { | ||||||
|  |       position       : 'fixed', | ||||||
|  |       width          : '100%', | ||||||
|  |       height         : '100%', | ||||||
|  |       backgroundColor: '#000', | ||||||
|  |       zIndex         : 10000, | ||||||
|  |       opacity        : 0.6, | ||||||
|  |       display        : 'none', | ||||||
|  |       left           : 0, | ||||||
|  |       top            : 0 | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   style   : function () { | ||||||
|  |     this.$message = this.$bar.find('.ui.message'); | ||||||
|  |  | ||||||
|  |     this.$message.find('.header').html(this.options.header); | ||||||
|  |     this.$message.find('.content').append(this.options.text); | ||||||
|  |  | ||||||
|  |     this.$bar.css({ | ||||||
|  |       margin: '0.5em' | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     if (this.options.icon) { | ||||||
|  |       this.$message.addClass('icon').prepend($('<i/>').addClass(this.options.icon)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     switch (this.options.size) { | ||||||
|  |       case 'mini': | ||||||
|  |         this.$message.addClass('mini'); | ||||||
|  |         break; | ||||||
|  |       case 'tiny': | ||||||
|  |         this.$message.addClass('tiny'); | ||||||
|  |         break; | ||||||
|  |       case 'small': | ||||||
|  |         this.$message.addClass('small'); | ||||||
|  |         break; | ||||||
|  |       case 'large': | ||||||
|  |         this.$message.addClass('large'); | ||||||
|  |         break; | ||||||
|  |       case 'big': | ||||||
|  |         this.$message.addClass('big'); | ||||||
|  |         break; | ||||||
|  |       case 'huge': | ||||||
|  |         this.$message.addClass('huge'); | ||||||
|  |         break; | ||||||
|  |       case 'massive': | ||||||
|  |         this.$message.addClass('massive'); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     switch (this.options.type) { | ||||||
|  |       case 'info': | ||||||
|  |         this.$message.addClass('info'); | ||||||
|  |         break; | ||||||
|  |       case 'warning': | ||||||
|  |         this.$message.addClass('warning'); | ||||||
|  |         break; | ||||||
|  |       case 'error': | ||||||
|  |         this.$message.addClass('error'); | ||||||
|  |         break; | ||||||
|  |       case 'negative': | ||||||
|  |         this.$message.addClass('negative'); | ||||||
|  |         break; | ||||||
|  |       case 'success': | ||||||
|  |         this.$message.addClass('success'); | ||||||
|  |         break; | ||||||
|  |       case 'positive': | ||||||
|  |         this.$message.addClass('positive'); | ||||||
|  |         break; | ||||||
|  |       case 'floating': | ||||||
|  |         this.$message.addClass('floating'); | ||||||
|  |         break; | ||||||
|  |     } | ||||||
|  |   }, | ||||||
|  |   callback: { | ||||||
|  |     onShow : function () { | ||||||
|  |       // Enable transition | ||||||
|  |       this.$bar.addClass('transition'); | ||||||
|  |       // Actual transition | ||||||
|  |       this.$bar.transition(this.options.animation.open); | ||||||
|  |     }, | ||||||
|  |     onClose: function () { | ||||||
|  |       this.$bar.transition(this.options.animation.close); | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }; | ||||||
| @@ -1,413 +0,0 @@ | |||||||
| var clonos={ |  | ||||||
| 	jsonLoad:false, |  | ||||||
| 	 |  | ||||||
| 	start:function() |  | ||||||
| 	{ |  | ||||||
| 		this.addEvents(); |  | ||||||
| 		 |  | ||||||
| 		var r, res, args=[]; |  | ||||||
| 		var hash=window.location.hash; |  | ||||||
| 		hash=hash.replace(new RegExp(/^#/),''); |  | ||||||
| 		var rx=new RegExp(/([^\/]+)/g); |  | ||||||
| 		if(res=hash.match(rx)) |  | ||||||
| 		{ |  | ||||||
| 			for(r in res) |  | ||||||
| 			{ |  | ||||||
| 				var r1=res[r].split('-'); |  | ||||||
| 				if(r1.length==2) args[args.length]={'var':r1[0],'val':r1[1]}; |  | ||||||
| 			} |  | ||||||
| 			this.route(args); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	addEvents:function() |  | ||||||
| 	{ |  | ||||||
| 		$('#lng-sel').bind('change',function(){document.cookie="lang="+$(this).val()+";path=/;";location.reload();}); |  | ||||||
| 		$('#content').bind('click',$.proxy(this.tableClick,this)); |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	translate:function(phrase) |  | ||||||
| 	{ |  | ||||||
| 		if(typeof this.lang!='undefined') |  | ||||||
| 		{ |  | ||||||
| 			if(typeof this.lang[phrase]!='undefined') |  | ||||||
| 				return this.lang[phrase]; |  | ||||||
| 		} |  | ||||||
| 		return phrase; |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	route:function(args) |  | ||||||
| 	{ |  | ||||||
| 		if(typeof args=='undefined') return; |  | ||||||
| 		//alert(args.length); |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	loadData:function() |  | ||||||
| 	{ |  | ||||||
| 		if(!this.jsonLoad) return; |  | ||||||
| 		var path=location.pathname; |  | ||||||
| 		var file='/json.php';	//'/pages'+path+'a.json.php'; |  | ||||||
| 		this.loadDataJson(file,$.proxy(this.onLoadData,this),{'path':path}); |  | ||||||
| 	}, |  | ||||||
| 	loadDataJson:function(file,return_func,arr)	//mode, |  | ||||||
| 	{ |  | ||||||
| 		var posts=arr; |  | ||||||
| /* |  | ||||||
| 		var posts={'mode':mode,'project':this.project,'jail':this.jail,'module':this.module}; |  | ||||||
| 		if(typeof arr=='object') |  | ||||||
| 		{ |  | ||||||
| 			posts['form_data']={}; |  | ||||||
| 			for(n=0,nl=arr.length;n<nl;n++) |  | ||||||
| 				posts['form_data'][arr[n]['name']]=arr[n]['value']; |  | ||||||
| 		} |  | ||||||
| */ |  | ||||||
| 		$.post(file,posts, |  | ||||||
| 			$.proxy(function(data){return_func(data);},this));	 |  | ||||||
| 	}, |  | ||||||
| 	onLoadData:function(data) |  | ||||||
| 	{ |  | ||||||
| 		try{ |  | ||||||
| 			var data=$.parseJSON(data); |  | ||||||
| 		}catch(e){alert(e.message);return;} |  | ||||||
| 		 |  | ||||||
| 		if(data.error) |  | ||||||
| 		{ |  | ||||||
| 			var t=$('tbody.error td.error_message'); |  | ||||||
| 			if(typeof(data.error_message)!='undefined' && data.error_message!='') t.html(data.error_message); |  | ||||||
| 			$(t).parents('table').addClass('error'); |  | ||||||
| 		}else{ |  | ||||||
| 			if(typeof data.func!='undefined') |  | ||||||
| 			{ |  | ||||||
| 				this[data.func](data); |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			for(id in data) $('#'+id).html(data[id]); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	fillTable:function(data) |  | ||||||
| 	{ |  | ||||||
| 		if(typeof data.id!='undefined') |  | ||||||
| 		{ |  | ||||||
| 			$('#'+data.id+' tbody').html(data.html); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	enableWait:function(id) |  | ||||||
| 	{ |  | ||||||
| 		var icon_cnt=$('tr.id-'+id).find('span.icon-cnt'); |  | ||||||
| 		var icon=$(icon_cnt).find('span'); |  | ||||||
| 		$(icon).removeClass('icon-play'); |  | ||||||
| 		$(icon).removeClass('icon-stop'); |  | ||||||
| 		$(icon).addClass('icon-spin6 animate-spin'); |  | ||||||
| 	}, |  | ||||||
| 	enablePlay:function(id) |  | ||||||
| 	{ |  | ||||||
| 		var icon_cnt=$('tr.id-'+id).find('span.icon-cnt'); |  | ||||||
| 		var icon=$(icon_cnt).find('span'); |  | ||||||
| 		if(icon[0]) icon[0].className='icon-play'; |  | ||||||
| 	}, |  | ||||||
| 	enableStop:function(id) |  | ||||||
| 	{ |  | ||||||
| 		var icon_cnt=$('tr.id-'+id).find('span.icon-cnt'); |  | ||||||
| 		var icon=$(icon_cnt).find('span'); |  | ||||||
| 		if(icon[0]) icon[0].className='icon-stop'; |  | ||||||
| 	}, |  | ||||||
| 	enableRip:function(id) |  | ||||||
| 	{ |  | ||||||
| 		var icon_cnt=$('tr.id-'+id).find('span.icon-cnt'); |  | ||||||
| 		if(typeof icon_cnt!='undefined') |  | ||||||
| 		{ |  | ||||||
| 			var icon=$(icon_cnt).find('span'); |  | ||||||
| 			if(typeof icon!='undefined') |  | ||||||
| 				icon[0].className='icon-emo-cry'; |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	jailStart:function(obj) |  | ||||||
| 	{ |  | ||||||
| 		if(!obj) return; |  | ||||||
| //		if(this.currentPage=='services') return this.serviceStart(obj); |  | ||||||
| //		var id=this.getJailId(obj); |  | ||||||
| //		if(id<0) return; |  | ||||||
| 		var icon_cnt=$(obj).find('span.icon-cnt'); |  | ||||||
| 		var icon=$(icon_cnt).find('span'); |  | ||||||
| 		op=''; |  | ||||||
| 		if($(icon).hasClass('icon-play')) op='jstart'; |  | ||||||
| 		if($(icon).hasClass('icon-stop')) op='jstop'; |  | ||||||
| 		this.enableWait(id); |  | ||||||
| 		 |  | ||||||
| 		var op_status=(op=='jstart'?1:0); |  | ||||||
| 		 |  | ||||||
| 		if(op!='') |  | ||||||
| 		{ |  | ||||||
| 			this.tasks.add({'operation':op,'jail_id':id}); |  | ||||||
| 			this.tasks.start(); |  | ||||||
| 		} |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	 |  | ||||||
| 	tasks: |  | ||||||
| 	{ |  | ||||||
| 		context:null, |  | ||||||
| 		tasks:{}, |  | ||||||
| 		interval:null, |  | ||||||
| 		checkTasks:false, |  | ||||||
| 		 |  | ||||||
| 		init:function(context) |  | ||||||
| 		{ |  | ||||||
| 			this.context=context; |  | ||||||
| 		}, |  | ||||||
| 		 |  | ||||||
| 		add:function(vars) |  | ||||||
| 		{ |  | ||||||
| 			if(typeof vars['status']=='undefined') vars['status']=-1; |  | ||||||
| 			if(typeof vars['jail_id']!='undefined') |  | ||||||
| 				this.tasks[vars['jail_id']]=vars; |  | ||||||
| 			if(typeof vars['modules_id']!='undefined') |  | ||||||
| 				this.tasks['mod_ops']=vars; |  | ||||||
| 			if(typeof vars['service_id']!='undefined') |  | ||||||
| 				this.tasks[vars['service_id']]=vars; |  | ||||||
| 			if(typeof vars['projects_id']!='undefined') |  | ||||||
| 			{ |  | ||||||
| 				this.tasks['proj_ops']='projDelete'; |  | ||||||
| 				this.tasks[vars['projects_id']]=vars; |  | ||||||
| 			} |  | ||||||
| 		}, |  | ||||||
| 		 |  | ||||||
| 		start:function() |  | ||||||
| 		{ |  | ||||||
| 			if(this.checkTasks) return; |  | ||||||
| 			this.checkTasks=true; |  | ||||||
| 			 |  | ||||||
| 			if($.isEmptyObject(this.tasks)) |  | ||||||
| 			{ |  | ||||||
| 				clearInterval(this.interval); |  | ||||||
| 				this.interval=null; |  | ||||||
| 				this.checkTasks=false; |  | ||||||
| 				return; |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			var vars=JSON.stringify(this.tasks); |  | ||||||
| 			this.context.loadData('getTasksStatus',$.proxy(this.update,this),[{'name':'jsonObj','value':vars}]); |  | ||||||
| 		}, |  | ||||||
| 		 |  | ||||||
| 		update:function(data) |  | ||||||
| 		{ |  | ||||||
| 			try{ |  | ||||||
| 				var data=$.parseJSON(data); |  | ||||||
| 			}catch(e){alert(e.message);return;} |  | ||||||
| 			 |  | ||||||
| 			if(typeof data['mod_ops']!='undefined') |  | ||||||
| 			{ |  | ||||||
| 				var key='mod_ops'; |  | ||||||
| 				this.tasks[key]=data[key]; |  | ||||||
| 				var d=data[key]; |  | ||||||
| 				 |  | ||||||
| 				if(d.status==2) |  | ||||||
| 				{ |  | ||||||
| 					//this.context.onTaskEnd(this.tasks[key],key); |  | ||||||
| 					this.context.modulesUpdate(data); |  | ||||||
| 					delete this.tasks[key]; |  | ||||||
| 					this.context.waitScreenHide(); |  | ||||||
| 				} |  | ||||||
| 				if(d.status<2) this.context.waitScreenShow(); |  | ||||||
| 				 |  | ||||||
| 				this.checkTasks=false; |  | ||||||
| 				if(this.interval===null) |  | ||||||
| 				{ |  | ||||||
| 					this.interval=setInterval($.proxy(this.start,this),1000); |  | ||||||
| 				} |  | ||||||
| 				return; |  | ||||||
| 				 |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			if(typeof data['proj_ops']!='undefined') |  | ||||||
| 			{ |  | ||||||
| 				if(data['proj_ops']=='projDelete') |  | ||||||
| 				{ |  | ||||||
| 					if(typeof data.projects!='undefined') |  | ||||||
| 						this.context.projectsList=data.projects; |  | ||||||
| 					this.context.showProjectsList(); |  | ||||||
| 					return; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			for(key in data) |  | ||||||
| 			{ |  | ||||||
| 				if(key>0) |  | ||||||
| 				{ |  | ||||||
| 					$('tr.id-'+key+' .jstatus').html(data[key].txt_status); |  | ||||||
| 					var errmsg=$('tr.id-'+key+' .errmsg'); |  | ||||||
| 					if(typeof data[key].errmsg!='undefined') |  | ||||||
| 					{ |  | ||||||
| 						$(errmsg).html('<span class="label">Error:</span>'+data[key].errmsg);	//'+this.translate('Error')+' |  | ||||||
| 						this.tasks[key].errmsg=data[key].errmsg; |  | ||||||
| 					} |  | ||||||
| 					this.tasks[key].operation=data[key].operation; |  | ||||||
| 					this.tasks[key].task_id=data[key].task_id; |  | ||||||
| 					this.tasks[key].status=data[key].status; |  | ||||||
| 					 |  | ||||||
| 					if(data[key].status==2) |  | ||||||
| 					{ |  | ||||||
| 						this.context.onTaskEnd(this.tasks[key],key); |  | ||||||
| 						delete this.tasks[key]; |  | ||||||
| 					} |  | ||||||
| 				}else{ |  | ||||||
| 					if(typeof data[-1].jails!='undefined') |  | ||||||
| 					{ |  | ||||||
| 						this.context.jailsList=data[-1].jails; |  | ||||||
| 						this.context.showJailsList(); |  | ||||||
| 					} |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			this.checkTasks=false; |  | ||||||
| 			 |  | ||||||
| 			if(this.interval===null) |  | ||||||
| 			{ |  | ||||||
| 				this.interval=setInterval($.proxy(this.start,this),1000); |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 		}, |  | ||||||
| 	}, |  | ||||||
| 	 |  | ||||||
| 	tableClick:function(event) |  | ||||||
| 	{ |  | ||||||
| 		debugger; |  | ||||||
| 		var target=event.target; |  | ||||||
| /*  		if(target.id=='main_chkbox') |  | ||||||
| 		{ |  | ||||||
| 			this.mainChkBoxClick(event); |  | ||||||
| 			return; |  | ||||||
| 		} */ |  | ||||||
| 		var td=$(target).closest('td'); |  | ||||||
| 		td=td[0]; |  | ||||||
| 		var tr=$(target).closest('tr'); |  | ||||||
| /* 		if(target.tagName=='SPAN') |  | ||||||
| 		{ |  | ||||||
| 			var cl=target.className; |  | ||||||
| 			if(cl && cl.indexOf('install')>=0) |  | ||||||
| 			{ |  | ||||||
| 				var res=cl.match(new RegExp(/helper-(\w+)/)); |  | ||||||
| 				if(res) |  | ||||||
| 				{ |  | ||||||
| 					this.installHelper(res[1]); |  | ||||||
| 					return; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 			 |  | ||||||
| 			if(cl && cl.indexOf('default')>=0) |  | ||||||
| 			{ |  | ||||||
| 				var res=cl.match(new RegExp(/val-(.*)/)); |  | ||||||
| 				if(res) |  | ||||||
| 				{ |  | ||||||
| 					this.fillHelperDefault(target,res[1]); |  | ||||||
| 					return; |  | ||||||
| 				} |  | ||||||
| 			} |  | ||||||
| 		} |  | ||||||
|  */ |  | ||||||
| /* 		if(target.tagName=='INPUT') |  | ||||||
| 		{ |  | ||||||
| 			var cl=target.className; |  | ||||||
| 			if(cl=='') return; |  | ||||||
| 			if(cl=='save-helper-values') this.saveHelperValues(); |  | ||||||
| 			if(cl=='clear-helper') this.clearHelperForm(target); |  | ||||||
| 			 |  | ||||||
| 			return; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		if(typeof td!='undefined') this.selItem(tr); |  | ||||||
| 		 |  | ||||||
| 		if(typeof tr[0]=='undefined') return; |  | ||||||
| 		var cl=tr[0].className; |  | ||||||
| 		if(!$(tr).hasClass('link')) return; |  | ||||||
| 		var rx=new RegExp(/id-(\d+)/); |  | ||||||
| 		if(res=cl.match(rx)) |  | ||||||
| 		{ |  | ||||||
| 			var id=res[1]; |  | ||||||
| 		} */ |  | ||||||
| 	//debugger; |  | ||||||
| 		if(!td || typeof td.className=='undefined') return false; |  | ||||||
| 		var tdc=td.className; |  | ||||||
| 		tdc=tdc.replace(' ','-'); |  | ||||||
| 		 |  | ||||||
| 		switch(tdc) |  | ||||||
| 		{ |  | ||||||
| 			case 'ops': |  | ||||||
| 				this.jailStart(tr); |  | ||||||
| 				return;break; |  | ||||||
| /* 			case 'sett-proj': |  | ||||||
| 				this.lastProjectId=id; |  | ||||||
| 				this.editMode='edit-proj'; |  | ||||||
| 				this.projSettings(id); |  | ||||||
| 				return;break; |  | ||||||
| 			case 'sett': |  | ||||||
| 				this.lastJailId=id; |  | ||||||
| 				this.editMode='edit'; |  | ||||||
| 				this.getJailSettings(tr); |  | ||||||
| 				return;break; |  | ||||||
| 			case 'jstatus': |  | ||||||
| 				return;break; |  | ||||||
| 			case 'info': |  | ||||||
| 				this.loadData('getForm',$.proxy(this.loadForm,this)); |  | ||||||
| 				return;break; |  | ||||||
| 			case 'mod-info': |  | ||||||
| 				alert('show info about module!'); |  | ||||||
| 				return;break; |  | ||||||
| 			case 'user-info': |  | ||||||
| 				this.editMode='user-edit'; |  | ||||||
| 				var n; |  | ||||||
| 				data=null; |  | ||||||
| 				for(n=0,nl=this.usersList.length;n<nl;n++) |  | ||||||
| 					if(this.usersList[n].id==id) {data=this.usersList[n];break;} |  | ||||||
| 				if(data==null) return; |  | ||||||
| 				var obj_cnt=this.settWinOpen('users'); |  | ||||||
| 				var form=$('form',obj_cnt); |  | ||||||
| 				$('#window-content h1').html(this.translate('User edit')); |  | ||||||
| 				$('input[name="login"]',form).val(data.login).attr('disabled','disabled'); |  | ||||||
| 				$('input[name="fullname"]',form).val(data.gecos); |  | ||||||
| 				return;break; |  | ||||||
|  */		} |  | ||||||
| 		 |  | ||||||
| /*		if($(td).hasClass('chbx')) |  | ||||||
| 		{ |  | ||||||
| 			// tr.link.hover.id-1 |  | ||||||
| 			if(this.currentPage=='project') |  | ||||||
| 				if(id>0) this.selectedProjects[id]=$(td).children('input[type="checkbox"]').prop('checked'); |  | ||||||
| 			if(this.currentPage=='jails') |  | ||||||
| 				if(id>0) this.selectedJails[id]=$(td).children('input[type="checkbox"]').prop('checked'); |  | ||||||
| 			if(this.currentPage=='modules') |  | ||||||
| 				if(id>0) this.selectedModules[id]=$(td).children('input[type="checkbox"]').prop('checked'); |  | ||||||
| 			return; |  | ||||||
| 		} |  | ||||||
| 		 |  | ||||||
| 		switch(this.currentPage) |  | ||||||
| 		{ |  | ||||||
| 			case 'project': |  | ||||||
| 				location.hash='#prj-'+id; |  | ||||||
| 				break; |  | ||||||
| 			case 'jails': |  | ||||||
| 				location.hash='#prj-'+this.project+'/jail-'+id; |  | ||||||
| 				break; |  | ||||||
| 			case 'modules': |  | ||||||
| 				location.hash='#prj-'+this.project+'/jail-'+this.jail+'/module-'+id; |  | ||||||
| 				break; |  | ||||||
| 			case 'log': |  | ||||||
| 				var hid=$('td.sp-id',tr).html(); |  | ||||||
| 				location.hash='#prj-'+this.project+'/jail-'+this.jail+'/log-'+hid; |  | ||||||
| 				break; |  | ||||||
| 			case 'helpers': |  | ||||||
| 				var hid=$('td .sp-id',tr).html(); |  | ||||||
| 				location.hash='#prj-'+this.project+'/jail-'+this.jail+'/helpers-'+hid; |  | ||||||
| 				break; |  | ||||||
| 		} |  | ||||||
| 		*/ |  | ||||||
| 	}, |  | ||||||
| } |  | ||||||
|  |  | ||||||
| $(window).load(function(){clonos.start();}); |  | ||||||
| $(window).unload(function(){});	/* эта функция заставляет FireFox запускать JS-функции при нажатии кнопки «Назад» |  | ||||||
| http://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run */ |  | ||||||
| $(document).ready(function(){clonos.loadData();}); |  | ||||||
| @@ -11,8 +11,8 @@ $_REALPATH=realpath('../'); | |||||||
| include($_REALPATH.'/php/clonos.php'); | include($_REALPATH.'/php/clonos.php'); | ||||||
| $clonos=new ClonOS($_REALPATH); | $clonos=new ClonOS($_REALPATH); | ||||||
|  |  | ||||||
| $file_path=$_REALPATH.$_ds.'public/pages'.$_ds.$path.$_ds; | //$file_path=$_REALPATH.$_ds.'public/pages'.$_ds.$path.$_ds; | ||||||
| $json_name=$file_path.'a.json.php'; | //$clonos->json_name=$file_path.'a.json.php'; | ||||||
|  |  | ||||||
| if(file_exists($json_name)) include($json_name); else echo '{}'; | //if(file_exists($json_name)) include($json_name); else echo '{}'; | ||||||
| exit; | exit; | ||||||
| @@ -1,6 +1,3 @@ | |||||||
| iface.lang={ | clonos.lang={ | ||||||
| 	"*Servers": "Servers", |  | ||||||
| 	"*Projects": "Projects", |  | ||||||
| 	"*Jails": "Jails", |  | ||||||
| 	"*Modules": "Modules", |  | ||||||
| } | } | ||||||
| @@ -1,3 +1,42 @@ | |||||||
| iface.lang={ | clonos.lang={ | ||||||
| 	"Error": "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", | 	"Error": "Ошибка", | ||||||
|  | 	"No data, add something": "Нет данных, добавьте что-нибудь", | ||||||
|  | 	"available on the jail is not running": "доступно при остановленной клетке", | ||||||
|  | 	"Log is empty": "Лог пуст", | ||||||
|  | 	"Exported jails": "Экспортированные клетки", | ||||||
|  | 	"Download": "Скачать", | ||||||
|  | 	"Jail is created": "Клетка создана", | ||||||
|  | 	"Jail already launched": "Клетка уже запущена", | ||||||
|  | 	"Jail already stopped": "Клетка уже остановлена", | ||||||
|  | 	"Export not available on launched jail": "Экспорт невозможен на запущенной клетке", | ||||||
|  | 	"This field cannot be left blank": "Это поле должно быть заполнено", | ||||||
|  | 	"You need to select one or more jails for clone": "Вам необходимо выбрать одну или несколько клеток для клонирования", | ||||||
|  | 	"You want to restart selected jail! Are you sure?":"Вы уверены, что хотите перезапустить выбранную клетку?", | ||||||
|  | 	"You want to restart selected virtual machine! Are you sure?":"Вы уверены, что хотите перезапустить выбранную виртуальную машину?", | ||||||
|  | 	"You want to delete selected jail! Are you sure?":"Вы уверены, что хотите удалить выбранную клетку?", | ||||||
|  | 	"You want to delete selected virtual machine! Are you sure?":"Вы уверены, что хотите удалить выбранную виртуальную машину?", | ||||||
|  | 	 | ||||||
|  | 	"You want to delete selected authkey! Are you sure?":"Вы уверены, что хотите удалить выбранный ключ авторизации?", | ||||||
|  |  | ||||||
|  | 	 | ||||||
|  | 	"Not running":"Не запущено", | ||||||
|  | 	"Not Launched":"Не запущено", | ||||||
|  | 	"Launched":"Запущено", | ||||||
|  | 	"Stopping":"Останавливается", | ||||||
|  | 	"Stopped":"Остановлено", | ||||||
|  | 	"Removing":"Удаляется", | ||||||
|  | 	"Removed":"Удалено", | ||||||
|  | 	"Creating":"Создаётся", | ||||||
|  | 	"Created":"Создано;", | ||||||
|  | 	"Starting":"Запускается", | ||||||
|  | 	"Exporting":"Экспортируется", | ||||||
|  | 	"Cloning":"Клонируется", | ||||||
|  | 	"Cloned":"Клонировано", | ||||||
|  | 	"Restarting":"Перезапускаем", | ||||||
|  | 	"Restarted":"Перезапущено", | ||||||
|  | 	 | ||||||
|  | 	"end":"конец", | ||||||
|  | 	 | ||||||
|  | 	"This name is already exists!":"Такое имя уже существует!", | ||||||
|  | 	"Passwords must match!":"Пароли должны совпадать!", | ||||||
| } | } | ||||||
| @@ -1,5 +1,4 @@ | |||||||
| <?php | <?php | ||||||
|  |  | ||||||
| $lang=array( | $lang=array( | ||||||
| 	'Settings'=>'Настройки', | 	'Settings'=>'Настройки', | ||||||
| 	'Profile'=>'Профиль', | 	'Profile'=>'Профиль', | ||||||
| @@ -19,7 +18,7 @@ $lang=array( | |||||||
| 		'Nodes control panel'=>'Панель управления нодами', | 		'Nodes control panel'=>'Панель управления нодами', | ||||||
| 	'Virtual Private Network'=>'Виртуальные сети', | 	'Virtual Private Network'=>'Виртуальные сети', | ||||||
| 		'Manage for virtual private networks'=>'Панель управления подсетями', | 		'Manage for virtual private networks'=>'Панель управления подсетями', | ||||||
| 	'Authkey'=>'Ключи авторизации', | 	'Authkeys'=>'Ключи авторизации', | ||||||
| 		'Manage for SSH auth key'=>'Панель управления авторизационными ключами', | 		'Manage for SSH auth key'=>'Панель управления авторизационными ключами', | ||||||
| 	'Storage Media'=>'Виртуальные носители', | 	'Storage Media'=>'Виртуальные носители', | ||||||
| 		'Virtual Media Manager'=>'Менеджер виртуальных носителей', | 		'Virtual Media Manager'=>'Менеджер виртуальных носителей', | ||||||
| @@ -29,7 +28,7 @@ $lang=array( | |||||||
| 		'FreeBSD bases manager'=>'Управление базами FreeBSD', | 		'FreeBSD bases manager'=>'Управление базами FreeBSD', | ||||||
| 	'FreeBSD Sources'=>'FreeBSD исходники', | 	'FreeBSD Sources'=>'FreeBSD исходники', | ||||||
| 		'FreeBSD sources manager'=>'Управление исходными кодами FreeBSD', | 		'FreeBSD sources manager'=>'Управление исходными кодами FreeBSD', | ||||||
| 	'Jail Marketplace'=>'Преднастроенные контейнера', | 	'Jail Marketplace'=>'Преднастроенные контейнеры', | ||||||
| 		'Public remote containers marketplace'=>'Репозиторий преднастроенных контейнеров', | 		'Public remote containers marketplace'=>'Репозиторий преднастроенных контейнеров', | ||||||
| 	'Bhyve Marketplace'=>'Преднастроенные виртуальные машины', | 	'Bhyve Marketplace'=>'Преднастроенные виртуальные машины', | ||||||
| 		'Public remote virtual machine marketplace'=>'Репозиторий преднастроенных виртуальных машин', | 		'Public remote virtual machine marketplace'=>'Репозиторий преднастроенных виртуальных машин', | ||||||
| @@ -39,4 +38,82 @@ $lang=array( | |||||||
| 	'File not found'=>'Файл не найден', | 	'File not found'=>'Файл не найден', | ||||||
| 	 | 	 | ||||||
| 	'Description'=>'Описание', | 	'Description'=>'Описание', | ||||||
|  | 	 | ||||||
|  | 	'Not Launched'=>'Не запущено', | ||||||
|  | 	'Starting'=>'Запускается', | ||||||
|  | 	'Launched'=>'Запущено', | ||||||
|  | 	'Creating'=>'Создаётся', | ||||||
|  | 	'Created'=>'Создано', | ||||||
|  | 	'Stopping'=>'Останавливается', | ||||||
|  | 	'Stopped'=>'Остановлено', | ||||||
|  | 	'Removing'=>'Удаляется', | ||||||
|  | 	'Exporting'=>'Экспортируется', | ||||||
|  | 	'Cloning'=>'Клонируется', | ||||||
|  | 	'Cloned'=>'Клонировано', | ||||||
|  | 	'Restarting'=>'Перезапускаем', | ||||||
|  | 	'Restarted'=>'Перезапущено', | ||||||
|  | 	'Maintenance'=>'На обслуживании', | ||||||
|  | 	 | ||||||
|  | 	'Create jail'=>'Создание клетки', | ||||||
|  | 	'Edit jail'=>'Редактирование клетки', | ||||||
|  | 	'Jail Settings'=>'Настройки клетки', | ||||||
|  | 	'Jail name'=>'Имя клетки', | ||||||
|  | 	'Hostname'=>'Имя хоста', | ||||||
|  | 	'available on the jail is not running'=>'доступно при остановленной клетке', | ||||||
|  | 	'IP address'=>'IP-адрес', | ||||||
|  | 	'Root password'=>'Пароль пользователя ROOT (опционально)', | ||||||
|  | 	'Root password (again)'=>'Пароль пользователя ROOT (повтор)', | ||||||
|  | 	'Description'=>'Описание', | ||||||
|  | 	'Net Interface'=>'Сетевой интерфейс', | ||||||
|  | 	'Parameters'=>'Параметры', | ||||||
|  | 	'Autostart'=>'Автозапуск', | ||||||
|  | 	'Autostart jail at system startup'=>'Автозапуск клетки при загрузке системы', | ||||||
|  | 	'Base writable'=>'R/W базовой системы', | ||||||
|  | 	'Virtual network stack (VIMAGE)'=>'Виртуальный сетевой стек (VIMAGE)', | ||||||
|  | 	'Mount'=>'Примонтировать', | ||||||
|  | 	'Enabled services'=>'Автозапуск сервисов', | ||||||
|  | 	'Create'=>'Создать', | ||||||
|  | 	'Cancel'=>'Отменить', | ||||||
|  | 	 | ||||||
|  | 	'Delete'=>'Удалить', | ||||||
|  | 	'Protected jail'=>'Запрет на удаление', | ||||||
|  | 	'Open VNC'=>'Консоль управления', | ||||||
|  | 	'Restart jail'=>'Перезапустить клетку', | ||||||
|  | 	'Restart bhyve'=>'Перезапустить виртуальную машину', | ||||||
|  |  | ||||||
|  | 	//err_messages | ||||||
|  | 	'Can not be empty. Name must begin with a letter / a-z / and not have any special symbols: -,.=%'=>'Не может быть пустым. Имя должно начинаться и содержать латинские буквы / a-z / и не должно иметь спец. символы: -,.=% и тд.', | ||||||
|  | 	'This field can not be empty'=>'Это поле не может быть пустым', | ||||||
|  | 	'Write correct ip address, e.g: 10.0.0.2'=>'Укажите корректный IP адрес, например: 10.0.0.2', | ||||||
|  | 	'Password can not be less than 3 symbols'=>'Пароль не должен быть меньше трех символов', | ||||||
|  | 	'Please retype password correctly'=>'Повторите пароль правильно', | ||||||
|  | 	 | ||||||
|  | 	'edit'=>'редактировать', | ||||||
|  | 	'clone'=>'клонировать', | ||||||
|  | 	'export'=>'экспортировать', | ||||||
|  | 	'helpers'=>'хэлперы', | ||||||
|  | 	 | ||||||
|  | 	'default is'=>'по-умолчанию', | ||||||
|  | 	 | ||||||
|  | 	'Create Virtual Machine'=>'Создание виртуальной машины', | ||||||
|  | 	'Create Virtual Machine from Library'=>'Создание из библиотеки', | ||||||
|  | 	'Virtual Machine Settings'=>'Настройки', | ||||||
|  | 	'Virtual Machine name'=>'Имя виртуальной машины', | ||||||
|  | 	'VM OS profile'=>'Профиль операционной системы', | ||||||
|  | 	'Authkey'=>'Ключ авторизации', | ||||||
|  | 	'VM CPUs'=>'Количество процессоров', | ||||||
|  | 	'VM RAM'=>'Объём памяти', | ||||||
|  | 	'VM Image size'=>'Объём виртуального диска', | ||||||
|  | 	'VNC PORT'=>'Порт подключения к терминалу', | ||||||
|  | 	'VM Password'=>'Пароль администратора', | ||||||
|  | 	 | ||||||
|  | 	'Create Authkey'=>'Создание ключа авторизации', | ||||||
|  | 	'Authkey name'=>'Имя ключа', | ||||||
|  | 	'Authkey'=>'Код ключа', | ||||||
|  | 	 | ||||||
|  | 	'Open'=>'Открыть', | ||||||
|  | 	'Close'=>'Закрыть', | ||||||
|  | 	'Update'=>'Обновить', | ||||||
|  | 	 | ||||||
|  | 	//''=>'', | ||||||
| ); | ); | ||||||
							
								
								
									
										6
									
								
								public/novnc/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,6 @@ | |||||||
|  | *.pyc | ||||||
|  | *.o | ||||||
|  | tests/data_*.js | ||||||
|  | utils/rebind.so | ||||||
|  | utils/websockify | ||||||
|  | node_modules | ||||||
							
								
								
									
										0
									
								
								public/novnc/.gitmodules
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										22
									
								
								public/novnc/.travis.yml
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,22 @@ | |||||||
|  | language: node_js | ||||||
|  | sudo: false | ||||||
|  | cache: | ||||||
|  |   directories: | ||||||
|  |   - node_modules | ||||||
|  | node_js: | ||||||
|  | - '0.11.13' | ||||||
|  | env: | ||||||
|  |   matrix: | ||||||
|  |   - TEST_BROWSER_NAME=PhantomJS | ||||||
|  |   - TEST_BROWSER_NAME=chrome TEST_BROWSER_OS='Windows 7,Linux' | ||||||
|  |   - TEST_BROWSER_NAME=firefox TEST_BROWSER_OS='Windows 7,Linux' TEST_BROWSER_VERSION='30,26' | ||||||
|  |   - TEST_BROWSER_NAME='internet explorer' TEST_BROWSER_OS='Windows 7' TEST_BROWSER_VERSION=10 | ||||||
|  |   - TEST_BROWSER_NAME='internet explorer' TEST_BROWSER_OS='Windows 8.1' TEST_BROWSER_VERSION=11 | ||||||
|  |   - TEST_BROWSER_NAME=safari TEST_BROWSER_OS='OS X 10.8' TEST_BROWSER_VERSION=6 | ||||||
|  |   - TEST_BROWSER_NAME=safari TEST_BROWSER_OS='OS X 10.9' TEST_BROWSER_VERSION=7 | ||||||
|  |   global: | ||||||
|  |   - secure: QE5GqGd2hrpQsIgd8dlv3oRUUHqZayomzzQjNXOB81VQi241uz/ru+3GtBZLB5WLZCq/Gj89vbLnR0LN4ixlmPaWv3/WJQGyDGuRD/vMnccVl+rBUP/Hh2zdYwiISIGcrywNAE+KLus/lyt/ahVgzbaRaDSzrM1HaZFT/rndGck= | ||||||
|  |   - secure: g75sdctEwj0hoLW0Y08Tdv8s5scNzplB6a9EtaJ2vJD9S/bK+AsPqbWesGv1UlrFPCWdbV7Vg61vkmoUjcmb5xhqFIjcM9TlYJoKWeOTsOmnQoSIkIq6gMF1k02+LmKInbPgIzrp3m3jluS1qaOs/EzFpDnJp9hWBiAfXa12Jxk= | ||||||
|  | before_script: npm install -g karma-cli | ||||||
|  | addons: | ||||||
|  |   sauce_connect: true | ||||||
							
								
								
									
										54
									
								
								public/novnc/CONTRIBUTING.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,54 @@ | |||||||
|  | How to contribute to noVNC | ||||||
|  | ========================== | ||||||
|  |  | ||||||
|  | We accept code via pull requests on GitHub.  There are several guidelines that | ||||||
|  | we expect contributors submitting code requests to follow.  If you have issues | ||||||
|  | following any of these guidelines, feel free to drop us a line by leaving a | ||||||
|  | comment in the code request or sending us an email. | ||||||
|  |  | ||||||
|  | Contributing Guidelines | ||||||
|  | ----------------------- | ||||||
|  |  | ||||||
|  | * While we don't have an official coding style guide, please try to follow | ||||||
|  |   the general coding style of the existing code. | ||||||
|  | ** Use four spaces instead of tabs  | ||||||
|  | ** prefix private variables and functions with an `_` | ||||||
|  |  | ||||||
|  | * Please try to include unit tests for your code.  For instance, if you | ||||||
|  |   introduce a new encoding, add a test to `tests/test.rfb.js` under the | ||||||
|  |   "Encoding Handlers" section (basically, input a small pattern in your | ||||||
|  |   encoding and make sure the pattern gets displayed correctly).  If you | ||||||
|  |   fix a bug, try to add a unit test that would have caught that bug | ||||||
|  |   (if possible -- some bugs, especially visual ones, are hard to test for). | ||||||
|  |  | ||||||
|  | * Squash your commits down in to a clean commit history.  For instance, there | ||||||
|  |   should not be "cleanup" commits where you fix issues in previous commits in | ||||||
|  |   the same pull request.  Before you go to commit, use `git rebase -i` to | ||||||
|  |   squash these changes into the relevant commits.  For instance, a good commit | ||||||
|  |   history might look like "Added support for FOO encoding, Added support for | ||||||
|  |   BAR message, Placed Button in UI to Trigger BAR" (where each comma denotes | ||||||
|  |   a separate commit). | ||||||
|  |  | ||||||
|  | * Add both a title and description to your commit, if possible.  Place more | ||||||
|  |   detail on what you did in the description. | ||||||
|  |  | ||||||
|  | Running the unit tests | ||||||
|  | ---------------------- | ||||||
|  |  | ||||||
|  | There are two ways to run the unit tests.  For both ways, you should first run | ||||||
|  | `npm install` (not as root). | ||||||
|  |  | ||||||
|  | The first way to run the tests is to run `npm test`.  This will run all the | ||||||
|  | tests in the headless PhantomJS browser (which uses WebKit). | ||||||
|  |  | ||||||
|  | The second way to run the tests is using the `tests/run_from_console.js` file. | ||||||
|  | This way is a bit more flexible, and can provide more information about what | ||||||
|  | went wrong.  To run all the tests, simply run `tests/run_from_console.js`. | ||||||
|  | To run a specific test file, you can use the `-t path/to/test/file.js` option. | ||||||
|  | If you wish to simply generate the HTML for the test, use the `-g` option, and | ||||||
|  | the path to the temporary HTML file will be written to standard out.  To open | ||||||
|  | this file in your default browser automatically, pass the `-o` option as well. | ||||||
|  | More information can be found by passing the `--help` or `-h` option. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Thanks, and happy coding! | ||||||
							
								
								
									
										85
									
								
								public/novnc/LICENSE.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,85 @@ | |||||||
|  | noVNC is Copyright (C) 2011 Joel Martin <github@martintribe.org> | ||||||
|  |  | ||||||
|  | The noVNC core library files are licensed under the MPL 2.0 (Mozilla | ||||||
|  | Public License 2.0). The noVNC core library is composed of the | ||||||
|  | Javascript code necessary for full noVNC operation. This includes (but | ||||||
|  | is not limited to): | ||||||
|  |  | ||||||
|  |     include/base64.js | ||||||
|  |     include/des.js | ||||||
|  |     include/display.js | ||||||
|  |     include/input.js | ||||||
|  |     include/keysym.js | ||||||
|  |     include/logo.js | ||||||
|  |     include/playback.js | ||||||
|  |     include/rfb.js | ||||||
|  |     include/ui.js | ||||||
|  |     include/util.js | ||||||
|  |     include/websock.js | ||||||
|  |     include/webutil.js | ||||||
|  |     include/xtscancodes.js | ||||||
|  |  | ||||||
|  | The HTML, CSS, font and images files that included with the noVNC | ||||||
|  | source distibution (or repository) are not considered part of the | ||||||
|  | noVNC core library and are licensed under more permissive licenses. | ||||||
|  | The intent is to allow easy integration of noVNC into existing web | ||||||
|  | sites and web applications. | ||||||
|  |  | ||||||
|  | The HTML, CSS, font and image files are licensed as follows: | ||||||
|  |  | ||||||
|  |     *.html                     : 2-Clause BSD license | ||||||
|  |  | ||||||
|  |     include/*.css              : 2-Clause BSD license | ||||||
|  |  | ||||||
|  |     include/Orbitron*          : SIL Open Font License 1.1 | ||||||
|  |                                  (Copyright 2009 Matt McInerney) | ||||||
|  |  | ||||||
|  |     images/                    : Creative Commons Attribution-ShareAlike | ||||||
|  |                                  http://creativecommons.org/licenses/by-sa/3.0/ | ||||||
|  |  | ||||||
|  | Some portions of noVNC are copyright to their individual authors. | ||||||
|  | Please refer to the individual source files and/or to the noVNC commit | ||||||
|  | history: https://github.com/kanaka/noVNC/commits/master | ||||||
|  |  | ||||||
|  | The are several files and projects that have been incorporated into | ||||||
|  | the noVNC core library. Here is a list of those files and the original | ||||||
|  | licenses (all MPL 2.0 compatible): | ||||||
|  |  | ||||||
|  |     include/base64.js          : MPL 2.0 | ||||||
|  |  | ||||||
|  |     include/des.js             : Various BSD style licenses | ||||||
|  |  | ||||||
|  |     include/chrome-app/tcp-stream.js | ||||||
|  |                                : Apache 2.0 license | ||||||
|  |  | ||||||
|  |     utils/websockify | ||||||
|  |     utils/websocket.py         : LGPL 3 | ||||||
|  |  | ||||||
|  |     utils/inflator.partial.js | ||||||
|  |     include/inflator.js        : MIT (for pako) | ||||||
|  |  | ||||||
|  | Any other files not mentioned above are typically marked with | ||||||
|  | a copyright/license header at the top of the file. The default noVNC | ||||||
|  | license is MPL-2.0. | ||||||
|  |  | ||||||
|  | The following license texts are included: | ||||||
|  |  | ||||||
|  |     docs/LICENSE.MPL-2.0 | ||||||
|  |     docs/LICENSE.LGPL-3 and | ||||||
|  |     docs/LICENSE.GPL-3 | ||||||
|  |     docs/LICENSE.OFL-1.1 | ||||||
|  |     docs/LICENSE.BSD-3-Clause (New BSD) | ||||||
|  |     docs/LICENSE.BSD-2-Clause (Simplified BSD / FreeBSD) | ||||||
|  |     docs/LICENSE.zlib | ||||||
|  |     docs/LICENSE.Apache-2.0 | ||||||
|  |     docs/LICENSE.pako | ||||||
|  |  | ||||||
|  | Or alternatively the license texts may be found here: | ||||||
|  |  | ||||||
|  |     http://www.mozilla.org/MPL/2.0/ | ||||||
|  |     http://www.gnu.org/licenses/lgpl.html and | ||||||
|  |     http://www.gnu.org/licenses/gpl.html | ||||||
|  |     http://scripts.sil.org/OFL | ||||||
|  |     http://en.wikipedia.org/wiki/BSD_licenses | ||||||
|  |     http://www.gzip.org/zlib/zlib_license.html | ||||||
|  |     http://www.apache.org/licenses/LICENSE-2.0.html | ||||||
							
								
								
									
										132
									
								
								public/novnc/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,132 @@ | |||||||
|  | ## noVNC: HTML5 VNC Client | ||||||
|  |  | ||||||
|  | [](https://travis-ci.org/kanaka/noVNC) | ||||||
|  |  | ||||||
|  | ### Description | ||||||
|  |  | ||||||
|  | noVNC is a HTML5 VNC client that runs well in any modern browser | ||||||
|  | including mobile browsers (iPhone/iPad and Android). | ||||||
|  |  | ||||||
|  | Many companies/projects have integrated noVNC including [Ganeti Web | ||||||
|  | Manager](http://code.osuosl.org/projects/ganeti-webmgr), | ||||||
|  | [OpenStack](http://www.openstack.org), | ||||||
|  | [OpenNebula](http://opennebula.org/), and | ||||||
|  | [LibVNCServer](http://libvncserver.sourceforge.net). See [the Projects | ||||||
|  | and Companies wiki | ||||||
|  | page](https://github.com/kanaka/noVNC/wiki/ProjectsCompanies-using-noVNC) | ||||||
|  | for a more complete list with additional info and links. | ||||||
|  |  | ||||||
|  | ### News/help/contact | ||||||
|  |  | ||||||
|  | Notable commits, announcements and news are posted to | ||||||
|  | <a href="http://www.twitter.com/noVNC">@noVNC</a> | ||||||
|  |  | ||||||
|  | If you are a noVNC developer/integrator/user (or want to be) please | ||||||
|  | join the <a | ||||||
|  | href="https://groups.google.com/forum/?fromgroups#!forum/novnc">noVNC | ||||||
|  | discussion group</a> | ||||||
|  |  | ||||||
|  | Bugs and feature requests can be submitted via [github | ||||||
|  | issues](https://github.com/kanaka/noVNC/issues). If you are looking | ||||||
|  | for a place to start contributing to noVNC, a good place to start | ||||||
|  | would be the issues that are marked as | ||||||
|  | ["patchwelcome"](https://github.com/kanaka/noVNC/issues?labels=patchwelcome). | ||||||
|  |  | ||||||
|  | If you want to show appreciation for noVNC you could donate to a great | ||||||
|  | non-profits such as: [Compassion | ||||||
|  | International](http://www.compassion.com/), [SIL](http://www.sil.org), | ||||||
|  | [Habitat for Humanity](http://www.habitat.org), [Electronic Frontier | ||||||
|  | Foundation](https://www.eff.org/), [Against Malaria | ||||||
|  | Foundation](http://www.againstmalaria.com/), [Nothing But | ||||||
|  | Nets](http://www.nothingbutnets.net/), etc. Please tweet <a | ||||||
|  | href="http://www.twitter.com/noVNC">@noVNC</a> if you do. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Features | ||||||
|  |  | ||||||
|  | * Supports all modern browsers including mobile (iOS, Android) | ||||||
|  | * Supported VNC encodings: raw, copyrect, rre, hextile, tight, tightPNG | ||||||
|  | * WebSocket SSL/TLS encryption (i.e. "wss://") support | ||||||
|  | * 24-bit true color and 8 bit colour mapped | ||||||
|  | * Supports desktop resize notification/pseudo-encoding | ||||||
|  | * Local or remote cursor | ||||||
|  | * Clipboard copy/paste | ||||||
|  | * Clipping or scolling modes for large remote screens | ||||||
|  | * Easy site integration and theming (3 example themes included) | ||||||
|  | * Licensed under the [MPL 2.0](http://www.mozilla.org/MPL/2.0/) | ||||||
|  |  | ||||||
|  | ### Screenshots | ||||||
|  |  | ||||||
|  | Running in Chrome before and after connecting: | ||||||
|  |  | ||||||
|  | <img src="http://kanaka.github.com/noVNC/img/noVNC-5.png" width=400> <img src="http://kanaka.github.com/noVNC/img/noVNC-7.jpg" width=400> | ||||||
|  |  | ||||||
|  | See more screenshots <a href="http://kanaka.github.com/noVNC/screenshots.html">here</a>. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Browser Requirements | ||||||
|  |  | ||||||
|  | * HTML5 Canvas (with createImageData): Chrome, Firefox 3.6+, iOS | ||||||
|  |   Safari, Opera 11+, Internet Explorer 9+, etc. | ||||||
|  |  | ||||||
|  | * HTML5 WebSockets and Typed Arrays | ||||||
|  |  | ||||||
|  | * Fast Javascript Engine: this is not strictly a requirement, but | ||||||
|  |   without a fast Javascript engine, noVNC might be painfully slow. | ||||||
|  |  | ||||||
|  | * See the more detailed [browser compatibility wiki page](https://github.com/kanaka/noVNC/wiki/Browser-support). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Server Requirements | ||||||
|  |  | ||||||
|  | Unless you are using a VNC server with support for WebSockets | ||||||
|  | connections (such as | ||||||
|  | [x11vnc/libvncserver](http://libvncserver.sourceforge.net/), | ||||||
|  | [QEMU](http://www.qemu.org/), or | ||||||
|  | [PocketVNC](http://www.pocketvnc.com/blog/?page_id=866)), you need to | ||||||
|  | use a WebSockets to TCP socket proxy. There is a python proxy included | ||||||
|  | ('websockify'). | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Quick Start | ||||||
|  |  | ||||||
|  | * Use the launch script to start a mini-webserver and the WebSockets | ||||||
|  |   proxy (websockify). The `--vnc` option is used to specify the location of | ||||||
|  |   a running VNC server: | ||||||
|  |  | ||||||
|  |     `./utils/launch.sh --vnc localhost:5901` | ||||||
|  |  | ||||||
|  | * Point your browser to the cut-and-paste URL that is output by the | ||||||
|  |   launch script. Enter a password if the VNC server has one | ||||||
|  |   configured. Hit the Connect button and enjoy! | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Other Pages | ||||||
|  |  | ||||||
|  | * [Encrypted Connections](https://github.com/kanaka/websockify/wiki/Encrypted-Connections). How to setup websockify so that you can use encrypted connections from noVNC. | ||||||
|  |  | ||||||
|  | * [Advanced Usage](https://github.com/kanaka/noVNC/wiki/Advanced-usage). Starting a VNC server, advanced websockify usage, etc. | ||||||
|  |  | ||||||
|  | * [Integrating noVNC](https://github.com/kanaka/noVNC/wiki/Integration) into existing projects. | ||||||
|  |  | ||||||
|  | * [Troubleshooting noVNC](https://github.com/kanaka/noVNC/wiki/Troubleshooting) problems. | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ### Authors/Contributors | ||||||
|  |  | ||||||
|  | * Core team: | ||||||
|  |     * [Joel Martin](https://github.com/kanaka) | ||||||
|  |     * [Samuel Mannehed](https://github.com/samhed) (Cendio) | ||||||
|  |     * [Peter Åstrand](https://github.com/astrand) (Cendio) | ||||||
|  |     * [Solly Ross](https://github.com/DirectXMan12) (Red Hat / OpenStack) | ||||||
|  |  | ||||||
|  | * Notable contributions: | ||||||
|  |     * UI and Icons : Chris Gordon | ||||||
|  |     * Original Logo : Michael Sersen | ||||||
|  |     * tight encoding : Michael Tinglof (Mercuri.ca) | ||||||
|  |  | ||||||
|  | * Included libraries: | ||||||
|  |     * as3crypto : Henri Torgemane (code.google.com/p/as3crypto) | ||||||
|  |     * base64 : Martijn Pieters (Digital Creations 2), Samuel Sieb (sieb.net) | ||||||
|  |     * DES : Dave Zimmerman (Widget Workshop), Jef Poskanzer (ACME Labs) | ||||||
|  |     * Pako : Vitaly Puzrin (https://github.com/nodeca/pako) | ||||||
							
								
								
									
										202
									
								
								public/novnc/docs/LICENSE.Apache-2.0
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,202 @@ | |||||||
|  |  | ||||||
|  |                                  Apache License | ||||||
|  |                            Version 2.0, January 2004 | ||||||
|  |                         http://www.apache.org/licenses/ | ||||||
|  |  | ||||||
|  |    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||||
|  |  | ||||||
|  |    1. Definitions. | ||||||
|  |  | ||||||
|  |       "License" shall mean the terms and conditions for use, reproduction, | ||||||
|  |       and distribution as defined by Sections 1 through 9 of this document. | ||||||
|  |  | ||||||
|  |       "Licensor" shall mean the copyright owner or entity authorized by | ||||||
|  |       the copyright owner that is granting the License. | ||||||
|  |  | ||||||
|  |       "Legal Entity" shall mean the union of the acting entity and all | ||||||
|  |       other entities that control, are controlled by, or are under common | ||||||
|  |       control with that entity. For the purposes of this definition, | ||||||
|  |       "control" means (i) the power, direct or indirect, to cause the | ||||||
|  |       direction or management of such entity, whether by contract or | ||||||
|  |       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||||
|  |       outstanding shares, or (iii) beneficial ownership of such entity. | ||||||
|  |  | ||||||
|  |       "You" (or "Your") shall mean an individual or Legal Entity | ||||||
|  |       exercising permissions granted by this License. | ||||||
|  |  | ||||||
|  |       "Source" form shall mean the preferred form for making modifications, | ||||||
|  |       including but not limited to software source code, documentation | ||||||
|  |       source, and configuration files. | ||||||
|  |  | ||||||
|  |       "Object" form shall mean any form resulting from mechanical | ||||||
|  |       transformation or translation of a Source form, including but | ||||||
|  |       not limited to compiled object code, generated documentation, | ||||||
|  |       and conversions to other media types. | ||||||
|  |  | ||||||
|  |       "Work" shall mean the work of authorship, whether in Source or | ||||||
|  |       Object form, made available under the License, as indicated by a | ||||||
|  |       copyright notice that is included in or attached to the work | ||||||
|  |       (an example is provided in the Appendix below). | ||||||
|  |  | ||||||
|  |       "Derivative Works" shall mean any work, whether in Source or Object | ||||||
|  |       form, that is based on (or derived from) the Work and for which the | ||||||
|  |       editorial revisions, annotations, elaborations, or other modifications | ||||||
|  |       represent, as a whole, an original work of authorship. For the purposes | ||||||
|  |       of this License, Derivative Works shall not include works that remain | ||||||
|  |       separable from, or merely link (or bind by name) to the interfaces of, | ||||||
|  |       the Work and Derivative Works thereof. | ||||||
|  |  | ||||||
|  |       "Contribution" shall mean any work of authorship, including | ||||||
|  |       the original version of the Work and any modifications or additions | ||||||
|  |       to that Work or Derivative Works thereof, that is intentionally | ||||||
|  |       submitted to Licensor for inclusion in the Work by the copyright owner | ||||||
|  |       or by an individual or Legal Entity authorized to submit on behalf of | ||||||
|  |       the copyright owner. For the purposes of this definition, "submitted" | ||||||
|  |       means any form of electronic, verbal, or written communication sent | ||||||
|  |       to the Licensor or its representatives, including but not limited to | ||||||
|  |       communication on electronic mailing lists, source code control systems, | ||||||
|  |       and issue tracking systems that are managed by, or on behalf of, the | ||||||
|  |       Licensor for the purpose of discussing and improving the Work, but | ||||||
|  |       excluding communication that is conspicuously marked or otherwise | ||||||
|  |       designated in writing by the copyright owner as "Not a Contribution." | ||||||
|  |  | ||||||
|  |       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||||
|  |       on behalf of whom a Contribution has been received by Licensor and | ||||||
|  |       subsequently incorporated within the Work. | ||||||
|  |  | ||||||
|  |    2. Grant of Copyright License. Subject to the terms and conditions of | ||||||
|  |       this License, each Contributor hereby grants to You a perpetual, | ||||||
|  |       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||||
|  |       copyright license to reproduce, prepare Derivative Works of, | ||||||
|  |       publicly display, publicly perform, sublicense, and distribute the | ||||||
|  |       Work and such Derivative Works in Source or Object form. | ||||||
|  |  | ||||||
|  |    3. Grant of Patent License. Subject to the terms and conditions of | ||||||
|  |       this License, each Contributor hereby grants to You a perpetual, | ||||||
|  |       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||||
|  |       (except as stated in this section) patent license to make, have made, | ||||||
|  |       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||||
|  |       where such license applies only to those patent claims licensable | ||||||
|  |       by such Contributor that are necessarily infringed by their | ||||||
|  |       Contribution(s) alone or by combination of their Contribution(s) | ||||||
|  |       with the Work to which such Contribution(s) was submitted. If You | ||||||
|  |       institute patent litigation against any entity (including a | ||||||
|  |       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||||
|  |       or a Contribution incorporated within the Work constitutes direct | ||||||
|  |       or contributory patent infringement, then any patent licenses | ||||||
|  |       granted to You under this License for that Work shall terminate | ||||||
|  |       as of the date such litigation is filed. | ||||||
|  |  | ||||||
|  |    4. Redistribution. You may reproduce and distribute copies of the | ||||||
|  |       Work or Derivative Works thereof in any medium, with or without | ||||||
|  |       modifications, and in Source or Object form, provided that You | ||||||
|  |       meet the following conditions: | ||||||
|  |  | ||||||
|  |       (a) You must give any other recipients of the Work or | ||||||
|  |           Derivative Works a copy of this License; and | ||||||
|  |  | ||||||
|  |       (b) You must cause any modified files to carry prominent notices | ||||||
|  |           stating that You changed the files; and | ||||||
|  |  | ||||||
|  |       (c) You must retain, in the Source form of any Derivative Works | ||||||
|  |           that You distribute, all copyright, patent, trademark, and | ||||||
|  |           attribution notices from the Source form of the Work, | ||||||
|  |           excluding those notices that do not pertain to any part of | ||||||
|  |           the Derivative Works; and | ||||||
|  |  | ||||||
|  |       (d) If the Work includes a "NOTICE" text file as part of its | ||||||
|  |           distribution, then any Derivative Works that You distribute must | ||||||
|  |           include a readable copy of the attribution notices contained | ||||||
|  |           within such NOTICE file, excluding those notices that do not | ||||||
|  |           pertain to any part of the Derivative Works, in at least one | ||||||
|  |           of the following places: within a NOTICE text file distributed | ||||||
|  |           as part of the Derivative Works; within the Source form or | ||||||
|  |           documentation, if provided along with the Derivative Works; or, | ||||||
|  |           within a display generated by the Derivative Works, if and | ||||||
|  |           wherever such third-party notices normally appear. The contents | ||||||
|  |           of the NOTICE file are for informational purposes only and | ||||||
|  |           do not modify the License. You may add Your own attribution | ||||||
|  |           notices within Derivative Works that You distribute, alongside | ||||||
|  |           or as an addendum to the NOTICE text from the Work, provided | ||||||
|  |           that such additional attribution notices cannot be construed | ||||||
|  |           as modifying the License. | ||||||
|  |  | ||||||
|  |       You may add Your own copyright statement to Your modifications and | ||||||
|  |       may provide additional or different license terms and conditions | ||||||
|  |       for use, reproduction, or distribution of Your modifications, or | ||||||
|  |       for any such Derivative Works as a whole, provided Your use, | ||||||
|  |       reproduction, and distribution of the Work otherwise complies with | ||||||
|  |       the conditions stated in this License. | ||||||
|  |  | ||||||
|  |    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||||
|  |       any Contribution intentionally submitted for inclusion in the Work | ||||||
|  |       by You to the Licensor shall be under the terms and conditions of | ||||||
|  |       this License, without any additional terms or conditions. | ||||||
|  |       Notwithstanding the above, nothing herein shall supersede or modify | ||||||
|  |       the terms of any separate license agreement you may have executed | ||||||
|  |       with Licensor regarding such Contributions. | ||||||
|  |  | ||||||
|  |    6. Trademarks. This License does not grant permission to use the trade | ||||||
|  |       names, trademarks, service marks, or product names of the Licensor, | ||||||
|  |       except as required for reasonable and customary use in describing the | ||||||
|  |       origin of the Work and reproducing the content of the NOTICE file. | ||||||
|  |  | ||||||
|  |    7. Disclaimer of Warranty. Unless required by applicable law or | ||||||
|  |       agreed to in writing, Licensor provides the Work (and each | ||||||
|  |       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||||
|  |       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||||
|  |       implied, including, without limitation, any warranties or conditions | ||||||
|  |       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||||
|  |       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||||
|  |       appropriateness of using or redistributing the Work and assume any | ||||||
|  |       risks associated with Your exercise of permissions under this License. | ||||||
|  |  | ||||||
|  |    8. Limitation of Liability. In no event and under no legal theory, | ||||||
|  |       whether in tort (including negligence), contract, or otherwise, | ||||||
|  |       unless required by applicable law (such as deliberate and grossly | ||||||
|  |       negligent acts) or agreed to in writing, shall any Contributor be | ||||||
|  |       liable to You for damages, including any direct, indirect, special, | ||||||
|  |       incidental, or consequential damages of any character arising as a | ||||||
|  |       result of this License or out of the use or inability to use the | ||||||
|  |       Work (including but not limited to damages for loss of goodwill, | ||||||
|  |       work stoppage, computer failure or malfunction, or any and all | ||||||
|  |       other commercial damages or losses), even if such Contributor | ||||||
|  |       has been advised of the possibility of such damages. | ||||||
|  |  | ||||||
|  |    9. Accepting Warranty or Additional Liability. While redistributing | ||||||
|  |       the Work or Derivative Works thereof, You may choose to offer, | ||||||
|  |       and charge a fee for, acceptance of support, warranty, indemnity, | ||||||
|  |       or other liability obligations and/or rights consistent with this | ||||||
|  |       License. However, in accepting such obligations, You may act only | ||||||
|  |       on Your own behalf and on Your sole responsibility, not on behalf | ||||||
|  |       of any other Contributor, and only if You agree to indemnify, | ||||||
|  |       defend, and hold each Contributor harmless for any liability | ||||||
|  |       incurred by, or claims asserted against, such Contributor by reason | ||||||
|  |       of your accepting any such warranty or additional liability. | ||||||
|  |  | ||||||
|  |    END OF TERMS AND CONDITIONS | ||||||
|  |  | ||||||
|  |    APPENDIX: How to apply the Apache License to your work. | ||||||
|  |  | ||||||
|  |       To apply the Apache License to your work, attach the following | ||||||
|  |       boilerplate notice, with the fields enclosed by brackets "[]" | ||||||
|  |       replaced with your own identifying information. (Don't include | ||||||
|  |       the brackets!)  The text should be enclosed in the appropriate | ||||||
|  |       comment syntax for the file format. We also recommend that a | ||||||
|  |       file or class name and description of purpose be included on the | ||||||
|  |       same "printed page" as the copyright notice for easier | ||||||
|  |       identification within third-party archives. | ||||||
|  |  | ||||||
|  |    Copyright [yyyy] [name of copyright owner] | ||||||
|  |  | ||||||
|  |    Licensed under the Apache License, Version 2.0 (the "License"); | ||||||
|  |    you may not use this file except in compliance with the License. | ||||||
|  |    You may obtain a copy of the License at | ||||||
|  |  | ||||||
|  |        http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  |  | ||||||
|  |    Unless required by applicable law or agreed to in writing, software | ||||||
|  |    distributed under the License is distributed on an "AS IS" BASIS, | ||||||
|  |    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||||
|  |    See the License for the specific language governing permissions and | ||||||
|  |    limitations under the License. | ||||||
							
								
								
									
										22
									
								
								public/novnc/docs/LICENSE.BSD-2-Clause
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,22 @@ | |||||||
|  | Copyright (c) <year>, <copyright holder> | ||||||
|  | All rights reserved. | ||||||
|  |  | ||||||
|  | Redistribution and use in source and binary forms, with or without | ||||||
|  | modification, are permitted provided that the following conditions are met: | ||||||
|  |  | ||||||
|  |     * Redistributions of source code must retain the above copyright | ||||||
|  |       notice, this list of conditions and the following disclaimer. | ||||||
|  |     * Redistributions in binary form must reproduce the above copyright | ||||||
|  |       notice, this list of conditions and the following disclaimer in the | ||||||
|  |       documentation and/or other materials provided with the distribution. | ||||||
|  |  | ||||||
|  | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||||
|  | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||||
|  | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||||
|  | DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY | ||||||
|  | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||||
|  | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||||
|  | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||||
|  | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||||
|  | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||||
|  | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
							
								
								
									
										24
									
								
								public/novnc/docs/LICENSE.BSD-3-Clause
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,24 @@ | |||||||
|  | Copyright (c) <year>, <copyright holder> | ||||||
|  | All rights reserved. | ||||||
|  |  | ||||||
|  | Redistribution and use in source and binary forms, with or without | ||||||
|  | modification, are permitted provided that the following conditions are met: | ||||||
|  |     * Redistributions of source code must retain the above copyright | ||||||
|  |       notice, this list of conditions and the following disclaimer. | ||||||
|  |     * Redistributions in binary form must reproduce the above copyright | ||||||
|  |       notice, this list of conditions and the following disclaimer in the | ||||||
|  |       documentation and/or other materials provided with the distribution. | ||||||
|  |     * Neither the name of the <organization> nor the | ||||||
|  |       names of its contributors may be used to endorse or promote products | ||||||
|  |       derived from this software without specific prior written permission. | ||||||
|  |  | ||||||
|  | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND | ||||||
|  | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | ||||||
|  | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||||||
|  | DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY | ||||||
|  | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | ||||||
|  | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||||||
|  | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND | ||||||
|  | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | ||||||
|  | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS | ||||||
|  | SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | ||||||
							
								
								
									
										621
									
								
								public/novnc/docs/LICENSE.GPL-3
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,621 @@ | |||||||
|  |                     GNU GENERAL PUBLIC LICENSE | ||||||
|  |                        Version 3, 29 June 2007 | ||||||
|  |  | ||||||
|  |  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | ||||||
|  |  Everyone is permitted to copy and distribute verbatim copies | ||||||
|  |  of this license document, but changing it is not allowed. | ||||||
|  |  | ||||||
|  |                             Preamble | ||||||
|  |  | ||||||
|  |   The GNU General Public License is a free, copyleft license for | ||||||
|  | software and other kinds of works. | ||||||
|  |  | ||||||
|  |   The licenses for most software and other practical works are designed | ||||||
|  | to take away your freedom to share and change the works.  By contrast, | ||||||
|  | the GNU General Public License is intended to guarantee your freedom to | ||||||
|  | share and change all versions of a program--to make sure it remains free | ||||||
|  | software for all its users.  We, the Free Software Foundation, use the | ||||||
|  | GNU General Public License for most of our software; it applies also to | ||||||
|  | any other work released this way by its authors.  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 | ||||||
|  | them 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 prevent others from denying you | ||||||
|  | these rights or asking you to surrender the rights.  Therefore, you have | ||||||
|  | certain responsibilities if you distribute copies of the software, or if | ||||||
|  | you modify it: responsibilities to respect the freedom of others. | ||||||
|  |  | ||||||
|  |   For example, if you distribute copies of such a program, whether | ||||||
|  | gratis or for a fee, you must pass on to the recipients the same | ||||||
|  | freedoms that you received.  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. | ||||||
|  |  | ||||||
|  |   Developers that use the GNU GPL protect your rights with two steps: | ||||||
|  | (1) assert copyright on the software, and (2) offer you this License | ||||||
|  | giving you legal permission to copy, distribute and/or modify it. | ||||||
|  |  | ||||||
|  |   For the developers' and authors' protection, the GPL clearly explains | ||||||
|  | that there is no warranty for this free software.  For both users' and | ||||||
|  | authors' sake, the GPL requires that modified versions be marked as | ||||||
|  | changed, so that their problems will not be attributed erroneously to | ||||||
|  | authors of previous versions. | ||||||
|  |  | ||||||
|  |   Some devices are designed to deny users access to install or run | ||||||
|  | modified versions of the software inside them, although the manufacturer | ||||||
|  | can do so.  This is fundamentally incompatible with the aim of | ||||||
|  | protecting users' freedom to change the software.  The systematic | ||||||
|  | pattern of such abuse occurs in the area of products for individuals to | ||||||
|  | use, which is precisely where it is most unacceptable.  Therefore, we | ||||||
|  | have designed this version of the GPL to prohibit the practice for those | ||||||
|  | products.  If such problems arise substantially in other domains, we | ||||||
|  | stand ready to extend this provision to those domains in future versions | ||||||
|  | of the GPL, as needed to protect the freedom of users. | ||||||
|  |  | ||||||
|  |   Finally, every program is threatened constantly by software patents. | ||||||
|  | States should not allow patents to restrict development and use of | ||||||
|  | software on general-purpose computers, but in those that do, we wish to | ||||||
|  | avoid the special danger that patents applied to a free program could | ||||||
|  | make it effectively proprietary.  To prevent this, the GPL assures that | ||||||
|  | patents cannot be used to render the program non-free. | ||||||
|  |  | ||||||
|  |   The precise terms and conditions for copying, distribution and | ||||||
|  | modification follow. | ||||||
|  |  | ||||||
|  |                        TERMS AND CONDITIONS | ||||||
|  |  | ||||||
|  |   0. Definitions. | ||||||
|  |  | ||||||
|  |   "This License" refers to version 3 of the GNU General Public License. | ||||||
|  |  | ||||||
|  |   "Copyright" also means copyright-like laws that apply to other kinds of | ||||||
|  | works, such as semiconductor masks. | ||||||
|  |  | ||||||
|  |   "The Program" refers to any copyrightable work licensed under this | ||||||
|  | License.  Each licensee is addressed as "you".  "Licensees" and | ||||||
|  | "recipients" may be individuals or organizations. | ||||||
|  |  | ||||||
|  |   To "modify" a work means to copy from or adapt all or part of the work | ||||||
|  | in a fashion requiring copyright permission, other than the making of an | ||||||
|  | exact copy.  The resulting work is called a "modified version" of the | ||||||
|  | earlier work or a work "based on" the earlier work. | ||||||
|  |  | ||||||
|  |   A "covered work" means either the unmodified Program or a work based | ||||||
|  | on the Program. | ||||||
|  |  | ||||||
|  |   To "propagate" a work means to do anything with it that, without | ||||||
|  | permission, would make you directly or secondarily liable for | ||||||
|  | infringement under applicable copyright law, except executing it on a | ||||||
|  | computer or modifying a private copy.  Propagation includes copying, | ||||||
|  | distribution (with or without modification), making available to the | ||||||
|  | public, and in some countries other activities as well. | ||||||
|  |  | ||||||
|  |   To "convey" a work means any kind of propagation that enables other | ||||||
|  | parties to make or receive copies.  Mere interaction with a user through | ||||||
|  | a computer network, with no transfer of a copy, is not conveying. | ||||||
|  |  | ||||||
|  |   An interactive user interface displays "Appropriate Legal Notices" | ||||||
|  | to the extent that it includes a convenient and prominently visible | ||||||
|  | feature that (1) displays an appropriate copyright notice, and (2) | ||||||
|  | tells the user that there is no warranty for the work (except to the | ||||||
|  | extent that warranties are provided), that licensees may convey the | ||||||
|  | work under this License, and how to view a copy of this License.  If | ||||||
|  | the interface presents a list of user commands or options, such as a | ||||||
|  | menu, a prominent item in the list meets this criterion. | ||||||
|  |  | ||||||
|  |   1. Source Code. | ||||||
|  |  | ||||||
|  |   The "source code" for a work means the preferred form of the work | ||||||
|  | for making modifications to it.  "Object code" means any non-source | ||||||
|  | form of a work. | ||||||
|  |  | ||||||
|  |   A "Standard Interface" means an interface that either is an official | ||||||
|  | standard defined by a recognized standards body, or, in the case of | ||||||
|  | interfaces specified for a particular programming language, one that | ||||||
|  | is widely used among developers working in that language. | ||||||
|  |  | ||||||
|  |   The "System Libraries" of an executable work include anything, other | ||||||
|  | than the work as a whole, that (a) is included in the normal form of | ||||||
|  | packaging a Major Component, but which is not part of that Major | ||||||
|  | Component, and (b) serves only to enable use of the work with that | ||||||
|  | Major Component, or to implement a Standard Interface for which an | ||||||
|  | implementation is available to the public in source code form.  A | ||||||
|  | "Major Component", in this context, means a major essential component | ||||||
|  | (kernel, window system, and so on) of the specific operating system | ||||||
|  | (if any) on which the executable work runs, or a compiler used to | ||||||
|  | produce the work, or an object code interpreter used to run it. | ||||||
|  |  | ||||||
|  |   The "Corresponding Source" for a work in object code form means all | ||||||
|  | the source code needed to generate, install, and (for an executable | ||||||
|  | work) run the object code and to modify the work, including scripts to | ||||||
|  | control those activities.  However, it does not include the work's | ||||||
|  | System Libraries, or general-purpose tools or generally available free | ||||||
|  | programs which are used unmodified in performing those activities but | ||||||
|  | which are not part of the work.  For example, Corresponding Source | ||||||
|  | includes interface definition files associated with source files for | ||||||
|  | the work, and the source code for shared libraries and dynamically | ||||||
|  | linked subprograms that the work is specifically designed to require, | ||||||
|  | such as by intimate data communication or control flow between those | ||||||
|  | subprograms and other parts of the work. | ||||||
|  |  | ||||||
|  |   The Corresponding Source need not include anything that users | ||||||
|  | can regenerate automatically from other parts of the Corresponding | ||||||
|  | Source. | ||||||
|  |  | ||||||
|  |   The Corresponding Source for a work in source code form is that | ||||||
|  | same work. | ||||||
|  |  | ||||||
|  |   2. Basic Permissions. | ||||||
|  |  | ||||||
|  |   All rights granted under this License are granted for the term of | ||||||
|  | copyright on the Program, and are irrevocable provided the stated | ||||||
|  | conditions are met.  This License explicitly affirms your unlimited | ||||||
|  | permission to run the unmodified Program.  The output from running a | ||||||
|  | covered work is covered by this License only if the output, given its | ||||||
|  | content, constitutes a covered work.  This License acknowledges your | ||||||
|  | rights of fair use or other equivalent, as provided by copyright law. | ||||||
|  |  | ||||||
|  |   You may make, run and propagate covered works that you do not | ||||||
|  | convey, without conditions so long as your license otherwise remains | ||||||
|  | in force.  You may convey covered works to others for the sole purpose | ||||||
|  | of having them make modifications exclusively for you, or provide you | ||||||
|  | with facilities for running those works, provided that you comply with | ||||||
|  | the terms of this License in conveying all material for which you do | ||||||
|  | not control copyright.  Those thus making or running the covered works | ||||||
|  | for you must do so exclusively on your behalf, under your direction | ||||||
|  | and control, on terms that prohibit them from making any copies of | ||||||
|  | your copyrighted material outside their relationship with you. | ||||||
|  |  | ||||||
|  |   Conveying under any other circumstances is permitted solely under | ||||||
|  | the conditions stated below.  Sublicensing is not allowed; section 10 | ||||||
|  | makes it unnecessary. | ||||||
|  |  | ||||||
|  |   3. Protecting Users' Legal Rights From Anti-Circumvention Law. | ||||||
|  |  | ||||||
|  |   No covered work shall be deemed part of an effective technological | ||||||
|  | measure under any applicable law fulfilling obligations under article | ||||||
|  | 11 of the WIPO copyright treaty adopted on 20 December 1996, or | ||||||
|  | similar laws prohibiting or restricting circumvention of such | ||||||
|  | measures. | ||||||
|  |  | ||||||
|  |   When you convey a covered work, you waive any legal power to forbid | ||||||
|  | circumvention of technological measures to the extent such circumvention | ||||||
|  | is effected by exercising rights under this License with respect to | ||||||
|  | the covered work, and you disclaim any intention to limit operation or | ||||||
|  | modification of the work as a means of enforcing, against the work's | ||||||
|  | users, your or third parties' legal rights to forbid circumvention of | ||||||
|  | technological measures. | ||||||
|  |  | ||||||
|  |   4. Conveying Verbatim Copies. | ||||||
|  |  | ||||||
|  |   You may convey 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; | ||||||
|  | keep intact all notices stating that this License and any | ||||||
|  | non-permissive terms added in accord with section 7 apply to the code; | ||||||
|  | keep intact all notices of the absence of any warranty; and give all | ||||||
|  | recipients a copy of this License along with the Program. | ||||||
|  |  | ||||||
|  |   You may charge any price or no price for each copy that you convey, | ||||||
|  | and you may offer support or warranty protection for a fee. | ||||||
|  |  | ||||||
|  |   5. Conveying Modified Source Versions. | ||||||
|  |  | ||||||
|  |   You may convey a work based on the Program, or the modifications to | ||||||
|  | produce it from the Program, in the form of source code under the | ||||||
|  | terms of section 4, provided that you also meet all of these conditions: | ||||||
|  |  | ||||||
|  |     a) The work must carry prominent notices stating that you modified | ||||||
|  |     it, and giving a relevant date. | ||||||
|  |  | ||||||
|  |     b) The work must carry prominent notices stating that it is | ||||||
|  |     released under this License and any conditions added under section | ||||||
|  |     7.  This requirement modifies the requirement in section 4 to | ||||||
|  |     "keep intact all notices". | ||||||
|  |  | ||||||
|  |     c) You must license the entire work, as a whole, under this | ||||||
|  |     License to anyone who comes into possession of a copy.  This | ||||||
|  |     License will therefore apply, along with any applicable section 7 | ||||||
|  |     additional terms, to the whole of the work, and all its parts, | ||||||
|  |     regardless of how they are packaged.  This License gives no | ||||||
|  |     permission to license the work in any other way, but it does not | ||||||
|  |     invalidate such permission if you have separately received it. | ||||||
|  |  | ||||||
|  |     d) If the work has interactive user interfaces, each must display | ||||||
|  |     Appropriate Legal Notices; however, if the Program has interactive | ||||||
|  |     interfaces that do not display Appropriate Legal Notices, your | ||||||
|  |     work need not make them do so. | ||||||
|  |  | ||||||
|  |   A compilation of a covered work with other separate and independent | ||||||
|  | works, which are not by their nature extensions of the covered work, | ||||||
|  | and which are not combined with it such as to form a larger program, | ||||||
|  | in or on a volume of a storage or distribution medium, is called an | ||||||
|  | "aggregate" if the compilation and its resulting copyright are not | ||||||
|  | used to limit the access or legal rights of the compilation's users | ||||||
|  | beyond what the individual works permit.  Inclusion of a covered work | ||||||
|  | in an aggregate does not cause this License to apply to the other | ||||||
|  | parts of the aggregate. | ||||||
|  |  | ||||||
|  |   6. Conveying Non-Source Forms. | ||||||
|  |  | ||||||
|  |   You may convey a covered work in object code form under the terms | ||||||
|  | of sections 4 and 5, provided that you also convey the | ||||||
|  | machine-readable Corresponding Source under the terms of this License, | ||||||
|  | in one of these ways: | ||||||
|  |  | ||||||
|  |     a) Convey the object code in, or embodied in, a physical product | ||||||
|  |     (including a physical distribution medium), accompanied by the | ||||||
|  |     Corresponding Source fixed on a durable physical medium | ||||||
|  |     customarily used for software interchange. | ||||||
|  |  | ||||||
|  |     b) Convey the object code in, or embodied in, a physical product | ||||||
|  |     (including a physical distribution medium), accompanied by a | ||||||
|  |     written offer, valid for at least three years and valid for as | ||||||
|  |     long as you offer spare parts or customer support for that product | ||||||
|  |     model, to give anyone who possesses the object code either (1) a | ||||||
|  |     copy of the Corresponding Source for all the software in the | ||||||
|  |     product that is covered by this License, on a durable physical | ||||||
|  |     medium customarily used for software interchange, for a price no | ||||||
|  |     more than your reasonable cost of physically performing this | ||||||
|  |     conveying of source, or (2) access to copy the | ||||||
|  |     Corresponding Source from a network server at no charge. | ||||||
|  |  | ||||||
|  |     c) Convey individual copies of the object code with a copy of the | ||||||
|  |     written offer to provide the Corresponding Source.  This | ||||||
|  |     alternative is allowed only occasionally and noncommercially, and | ||||||
|  |     only if you received the object code with such an offer, in accord | ||||||
|  |     with subsection 6b. | ||||||
|  |  | ||||||
|  |     d) Convey the object code by offering access from a designated | ||||||
|  |     place (gratis or for a charge), and offer equivalent access to the | ||||||
|  |     Corresponding Source in the same way through the same place at no | ||||||
|  |     further charge.  You need not require recipients to copy the | ||||||
|  |     Corresponding Source along with the object code.  If the place to | ||||||
|  |     copy the object code is a network server, the Corresponding Source | ||||||
|  |     may be on a different server (operated by you or a third party) | ||||||
|  |     that supports equivalent copying facilities, provided you maintain | ||||||
|  |     clear directions next to the object code saying where to find the | ||||||
|  |     Corresponding Source.  Regardless of what server hosts the | ||||||
|  |     Corresponding Source, you remain obligated to ensure that it is | ||||||
|  |     available for as long as needed to satisfy these requirements. | ||||||
|  |  | ||||||
|  |     e) Convey the object code using peer-to-peer transmission, provided | ||||||
|  |     you inform other peers where the object code and Corresponding | ||||||
|  |     Source of the work are being offered to the general public at no | ||||||
|  |     charge under subsection 6d. | ||||||
|  |  | ||||||
|  |   A separable portion of the object code, whose source code is excluded | ||||||
|  | from the Corresponding Source as a System Library, need not be | ||||||
|  | included in conveying the object code work. | ||||||
|  |  | ||||||
|  |   A "User Product" is either (1) a "consumer product", which means any | ||||||
|  | tangible personal property which is normally used for personal, family, | ||||||
|  | or household purposes, or (2) anything designed or sold for incorporation | ||||||
|  | into a dwelling.  In determining whether a product is a consumer product, | ||||||
|  | doubtful cases shall be resolved in favor of coverage.  For a particular | ||||||
|  | product received by a particular user, "normally used" refers to a | ||||||
|  | typical or common use of that class of product, regardless of the status | ||||||
|  | of the particular user or of the way in which the particular user | ||||||
|  | actually uses, or expects or is expected to use, the product.  A product | ||||||
|  | is a consumer product regardless of whether the product has substantial | ||||||
|  | commercial, industrial or non-consumer uses, unless such uses represent | ||||||
|  | the only significant mode of use of the product. | ||||||
|  |  | ||||||
|  |   "Installation Information" for a User Product means any methods, | ||||||
|  | procedures, authorization keys, or other information required to install | ||||||
|  | and execute modified versions of a covered work in that User Product from | ||||||
|  | a modified version of its Corresponding Source.  The information must | ||||||
|  | suffice to ensure that the continued functioning of the modified object | ||||||
|  | code is in no case prevented or interfered with solely because | ||||||
|  | modification has been made. | ||||||
|  |  | ||||||
|  |   If you convey an object code work under this section in, or with, or | ||||||
|  | specifically for use in, a User Product, and the conveying occurs as | ||||||
|  | part of a transaction in which the right of possession and use of the | ||||||
|  | User Product is transferred to the recipient in perpetuity or for a | ||||||
|  | fixed term (regardless of how the transaction is characterized), the | ||||||
|  | Corresponding Source conveyed under this section must be accompanied | ||||||
|  | by the Installation Information.  But this requirement does not apply | ||||||
|  | if neither you nor any third party retains the ability to install | ||||||
|  | modified object code on the User Product (for example, the work has | ||||||
|  | been installed in ROM). | ||||||
|  |  | ||||||
|  |   The requirement to provide Installation Information does not include a | ||||||
|  | requirement to continue to provide support service, warranty, or updates | ||||||
|  | for a work that has been modified or installed by the recipient, or for | ||||||
|  | the User Product in which it has been modified or installed.  Access to a | ||||||
|  | network may be denied when the modification itself materially and | ||||||
|  | adversely affects the operation of the network or violates the rules and | ||||||
|  | protocols for communication across the network. | ||||||
|  |  | ||||||
|  |   Corresponding Source conveyed, and Installation Information provided, | ||||||
|  | in accord with this section must be in a format that is publicly | ||||||
|  | documented (and with an implementation available to the public in | ||||||
|  | source code form), and must require no special password or key for | ||||||
|  | unpacking, reading or copying. | ||||||
|  |  | ||||||
|  |   7. Additional Terms. | ||||||
|  |  | ||||||
|  |   "Additional permissions" are terms that supplement the terms of this | ||||||
|  | License by making exceptions from one or more of its conditions. | ||||||
|  | Additional permissions that are applicable to the entire Program shall | ||||||
|  | be treated as though they were included in this License, to the extent | ||||||
|  | that they are valid under applicable law.  If additional permissions | ||||||
|  | apply only to part of the Program, that part may be used separately | ||||||
|  | under those permissions, but the entire Program remains governed by | ||||||
|  | this License without regard to the additional permissions. | ||||||
|  |  | ||||||
|  |   When you convey a copy of a covered work, you may at your option | ||||||
|  | remove any additional permissions from that copy, or from any part of | ||||||
|  | it.  (Additional permissions may be written to require their own | ||||||
|  | removal in certain cases when you modify the work.)  You may place | ||||||
|  | additional permissions on material, added by you to a covered work, | ||||||
|  | for which you have or can give appropriate copyright permission. | ||||||
|  |  | ||||||
|  |   Notwithstanding any other provision of this License, for material you | ||||||
|  | add to a covered work, you may (if authorized by the copyright holders of | ||||||
|  | that material) supplement the terms of this License with terms: | ||||||
|  |  | ||||||
|  |     a) Disclaiming warranty or limiting liability differently from the | ||||||
|  |     terms of sections 15 and 16 of this License; or | ||||||
|  |  | ||||||
|  |     b) Requiring preservation of specified reasonable legal notices or | ||||||
|  |     author attributions in that material or in the Appropriate Legal | ||||||
|  |     Notices displayed by works containing it; or | ||||||
|  |  | ||||||
|  |     c) Prohibiting misrepresentation of the origin of that material, or | ||||||
|  |     requiring that modified versions of such material be marked in | ||||||
|  |     reasonable ways as different from the original version; or | ||||||
|  |  | ||||||
|  |     d) Limiting the use for publicity purposes of names of licensors or | ||||||
|  |     authors of the material; or | ||||||
|  |  | ||||||
|  |     e) Declining to grant rights under trademark law for use of some | ||||||
|  |     trade names, trademarks, or service marks; or | ||||||
|  |  | ||||||
|  |     f) Requiring indemnification of licensors and authors of that | ||||||
|  |     material by anyone who conveys the material (or modified versions of | ||||||
|  |     it) with contractual assumptions of liability to the recipient, for | ||||||
|  |     any liability that these contractual assumptions directly impose on | ||||||
|  |     those licensors and authors. | ||||||
|  |  | ||||||
|  |   All other non-permissive additional terms are considered "further | ||||||
|  | restrictions" within the meaning of section 10.  If the Program as you | ||||||
|  | received it, or any part of it, contains a notice stating that it is | ||||||
|  | governed by this License along with a term that is a further | ||||||
|  | restriction, you may remove that term.  If a license document contains | ||||||
|  | a further restriction but permits relicensing or conveying under this | ||||||
|  | License, you may add to a covered work material governed by the terms | ||||||
|  | of that license document, provided that the further restriction does | ||||||
|  | not survive such relicensing or conveying. | ||||||
|  |  | ||||||
|  |   If you add terms to a covered work in accord with this section, you | ||||||
|  | must place, in the relevant source files, a statement of the | ||||||
|  | additional terms that apply to those files, or a notice indicating | ||||||
|  | where to find the applicable terms. | ||||||
|  |  | ||||||
|  |   Additional terms, permissive or non-permissive, may be stated in the | ||||||
|  | form of a separately written license, or stated as exceptions; | ||||||
|  | the above requirements apply either way. | ||||||
|  |  | ||||||
|  |   8. Termination. | ||||||
|  |  | ||||||
|  |   You may not propagate or modify a covered work except as expressly | ||||||
|  | provided under this License.  Any attempt otherwise to propagate or | ||||||
|  | modify it is void, and will automatically terminate your rights under | ||||||
|  | this License (including any patent licenses granted under the third | ||||||
|  | paragraph of section 11). | ||||||
|  |  | ||||||
|  |   However, if you cease all violation of this License, then your | ||||||
|  | license from a particular copyright holder is reinstated (a) | ||||||
|  | provisionally, unless and until the copyright holder explicitly and | ||||||
|  | finally terminates your license, and (b) permanently, if the copyright | ||||||
|  | holder fails to notify you of the violation by some reasonable means | ||||||
|  | prior to 60 days after the cessation. | ||||||
|  |  | ||||||
|  |   Moreover, your license from a particular copyright holder is | ||||||
|  | reinstated permanently if the copyright holder notifies you of the | ||||||
|  | violation by some reasonable means, this is the first time you have | ||||||
|  | received notice of violation of this License (for any work) from that | ||||||
|  | copyright holder, and you cure the violation prior to 30 days after | ||||||
|  | your receipt of the notice. | ||||||
|  |  | ||||||
|  |   Termination of your rights under this section does not terminate the | ||||||
|  | licenses of parties who have received copies or rights from you under | ||||||
|  | this License.  If your rights have been terminated and not permanently | ||||||
|  | reinstated, you do not qualify to receive new licenses for the same | ||||||
|  | material under section 10. | ||||||
|  |  | ||||||
|  |   9. Acceptance Not Required for Having Copies. | ||||||
|  |  | ||||||
|  |   You are not required to accept this License in order to receive or | ||||||
|  | run a copy of the Program.  Ancillary propagation of a covered work | ||||||
|  | occurring solely as a consequence of using peer-to-peer transmission | ||||||
|  | to receive a copy likewise does not require acceptance.  However, | ||||||
|  | nothing other than this License grants you permission to propagate or | ||||||
|  | modify any covered work.  These actions infringe copyright if you do | ||||||
|  | not accept this License.  Therefore, by modifying or propagating a | ||||||
|  | covered work, you indicate your acceptance of this License to do so. | ||||||
|  |  | ||||||
|  |   10. Automatic Licensing of Downstream Recipients. | ||||||
|  |  | ||||||
|  |   Each time you convey a covered work, the recipient automatically | ||||||
|  | receives a license from the original licensors, to run, modify and | ||||||
|  | propagate that work, subject to this License.  You are not responsible | ||||||
|  | for enforcing compliance by third parties with this License. | ||||||
|  |  | ||||||
|  |   An "entity transaction" is a transaction transferring control of an | ||||||
|  | organization, or substantially all assets of one, or subdividing an | ||||||
|  | organization, or merging organizations.  If propagation of a covered | ||||||
|  | work results from an entity transaction, each party to that | ||||||
|  | transaction who receives a copy of the work also receives whatever | ||||||
|  | licenses to the work the party's predecessor in interest had or could | ||||||
|  | give under the previous paragraph, plus a right to possession of the | ||||||
|  | Corresponding Source of the work from the predecessor in interest, if | ||||||
|  | the predecessor has it or can get it with reasonable efforts. | ||||||
|  |  | ||||||
|  |   You may not impose any further restrictions on the exercise of the | ||||||
|  | rights granted or affirmed under this License.  For example, you may | ||||||
|  | not impose a license fee, royalty, or other charge for exercise of | ||||||
|  | rights granted under this License, and you may not initiate litigation | ||||||
|  | (including a cross-claim or counterclaim in a lawsuit) alleging that | ||||||
|  | any patent claim is infringed by making, using, selling, offering for | ||||||
|  | sale, or importing the Program or any portion of it. | ||||||
|  |  | ||||||
|  |   11. Patents. | ||||||
|  |  | ||||||
|  |   A "contributor" is a copyright holder who authorizes use under this | ||||||
|  | License of the Program or a work on which the Program is based.  The | ||||||
|  | work thus licensed is called the contributor's "contributor version". | ||||||
|  |  | ||||||
|  |   A contributor's "essential patent claims" are all patent claims | ||||||
|  | owned or controlled by the contributor, whether already acquired or | ||||||
|  | hereafter acquired, that would be infringed by some manner, permitted | ||||||
|  | by this License, of making, using, or selling its contributor version, | ||||||
|  | but do not include claims that would be infringed only as a | ||||||
|  | consequence of further modification of the contributor version.  For | ||||||
|  | purposes of this definition, "control" includes the right to grant | ||||||
|  | patent sublicenses in a manner consistent with the requirements of | ||||||
|  | this License. | ||||||
|  |  | ||||||
|  |   Each contributor grants you a non-exclusive, worldwide, royalty-free | ||||||
|  | patent license under the contributor's essential patent claims, to | ||||||
|  | make, use, sell, offer for sale, import and otherwise run, modify and | ||||||
|  | propagate the contents of its contributor version. | ||||||
|  |  | ||||||
|  |   In the following three paragraphs, a "patent license" is any express | ||||||
|  | agreement or commitment, however denominated, not to enforce a patent | ||||||
|  | (such as an express permission to practice a patent or covenant not to | ||||||
|  | sue for patent infringement).  To "grant" such a patent license to a | ||||||
|  | party means to make such an agreement or commitment not to enforce a | ||||||
|  | patent against the party. | ||||||
|  |  | ||||||
|  |   If you convey a covered work, knowingly relying on a patent license, | ||||||
|  | and the Corresponding Source of the work is not available for anyone | ||||||
|  | to copy, free of charge and under the terms of this License, through a | ||||||
|  | publicly available network server or other readily accessible means, | ||||||
|  | then you must either (1) cause the Corresponding Source to be so | ||||||
|  | available, or (2) arrange to deprive yourself of the benefit of the | ||||||
|  | patent license for this particular work, or (3) arrange, in a manner | ||||||
|  | consistent with the requirements of this License, to extend the patent | ||||||
|  | license to downstream recipients.  "Knowingly relying" means you have | ||||||
|  | actual knowledge that, but for the patent license, your conveying the | ||||||
|  | covered work in a country, or your recipient's use of the covered work | ||||||
|  | in a country, would infringe one or more identifiable patents in that | ||||||
|  | country that you have reason to believe are valid. | ||||||
|  |  | ||||||
|  |   If, pursuant to or in connection with a single transaction or | ||||||
|  | arrangement, you convey, or propagate by procuring conveyance of, a | ||||||
|  | covered work, and grant a patent license to some of the parties | ||||||
|  | receiving the covered work authorizing them to use, propagate, modify | ||||||
|  | or convey a specific copy of the covered work, then the patent license | ||||||
|  | you grant is automatically extended to all recipients of the covered | ||||||
|  | work and works based on it. | ||||||
|  |  | ||||||
|  |   A patent license is "discriminatory" if it does not include within | ||||||
|  | the scope of its coverage, prohibits the exercise of, or is | ||||||
|  | conditioned on the non-exercise of one or more of the rights that are | ||||||
|  | specifically granted under this License.  You may not convey a covered | ||||||
|  | work if you are a party to an arrangement with a third party that is | ||||||
|  | in the business of distributing software, under which you make payment | ||||||
|  | to the third party based on the extent of your activity of conveying | ||||||
|  | the work, and under which the third party grants, to any of the | ||||||
|  | parties who would receive the covered work from you, a discriminatory | ||||||
|  | patent license (a) in connection with copies of the covered work | ||||||
|  | conveyed by you (or copies made from those copies), or (b) primarily | ||||||
|  | for and in connection with specific products or compilations that | ||||||
|  | contain the covered work, unless you entered into that arrangement, | ||||||
|  | or that patent license was granted, prior to 28 March 2007. | ||||||
|  |  | ||||||
|  |   Nothing in this License shall be construed as excluding or limiting | ||||||
|  | any implied license or other defenses to infringement that may | ||||||
|  | otherwise be available to you under applicable patent law. | ||||||
|  |  | ||||||
|  |   12. No Surrender of Others' Freedom. | ||||||
|  |  | ||||||
|  |   If 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 convey a | ||||||
|  | covered work so as to satisfy simultaneously your obligations under this | ||||||
|  | License and any other pertinent obligations, then as a consequence you may | ||||||
|  | not convey it at all.  For example, if you agree to terms that obligate you | ||||||
|  | to collect a royalty for further conveying from those to whom you convey | ||||||
|  | the Program, the only way you could satisfy both those terms and this | ||||||
|  | License would be to refrain entirely from conveying the Program. | ||||||
|  |  | ||||||
|  |   13. Use with the GNU Affero General Public License. | ||||||
|  |  | ||||||
|  |   Notwithstanding any other provision of this License, you have | ||||||
|  | permission to link or combine any covered work with a work licensed | ||||||
|  | under version 3 of the GNU Affero General Public License into a single | ||||||
|  | combined work, and to convey the resulting work.  The terms of this | ||||||
|  | License will continue to apply to the part which is the covered work, | ||||||
|  | but the special requirements of the GNU Affero General Public License, | ||||||
|  | section 13, concerning interaction through a network will apply to the | ||||||
|  | combination as such. | ||||||
|  |  | ||||||
|  |   14. Revised Versions of this License. | ||||||
|  |  | ||||||
|  |   The Free Software Foundation may publish revised and/or new versions of | ||||||
|  | the GNU 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 that a certain numbered version of the GNU General | ||||||
|  | Public License "or any later version" applies to it, you have the | ||||||
|  | option of following the terms and conditions either of that numbered | ||||||
|  | version or of any later version published by the Free Software | ||||||
|  | Foundation.  If the Program does not specify a version number of the | ||||||
|  | GNU General Public License, you may choose any version ever published | ||||||
|  | by the Free Software Foundation. | ||||||
|  |  | ||||||
|  |   If the Program specifies that a proxy can decide which future | ||||||
|  | versions of the GNU General Public License can be used, that proxy's | ||||||
|  | public statement of acceptance of a version permanently authorizes you | ||||||
|  | to choose that version for the Program. | ||||||
|  |  | ||||||
|  |   Later license versions may give you additional or different | ||||||
|  | permissions.  However, no additional obligations are imposed on any | ||||||
|  | author or copyright holder as a result of your choosing to follow a | ||||||
|  | later version. | ||||||
|  |  | ||||||
|  |   15. Disclaimer of Warranty. | ||||||
|  |  | ||||||
|  |   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. | ||||||
|  |  | ||||||
|  |   16. Limitation of Liability. | ||||||
|  |  | ||||||
|  |   IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||||||
|  | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS | ||||||
|  | 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. | ||||||
|  |  | ||||||
|  |   17. Interpretation of Sections 15 and 16. | ||||||
|  |  | ||||||
|  |   If the disclaimer of warranty and limitation of liability provided | ||||||
|  | above cannot be given local legal effect according to their terms, | ||||||
|  | reviewing courts shall apply local law that most closely approximates | ||||||
|  | an absolute waiver of all civil liability in connection with the | ||||||
|  | Program, unless a warranty or assumption of liability accompanies a | ||||||
|  | copy of the Program in return for a fee. | ||||||
|  |  | ||||||
|  |                      END OF TERMS AND CONDITIONS | ||||||
							
								
								
									
										165
									
								
								public/novnc/docs/LICENSE.LGPL-3
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,165 @@ | |||||||
|  |                    GNU LESSER GENERAL PUBLIC LICENSE | ||||||
|  |                        Version 3, 29 June 2007 | ||||||
|  |  | ||||||
|  |  Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/> | ||||||
|  |  Everyone is permitted to copy and distribute verbatim copies | ||||||
|  |  of this license document, but changing it is not allowed. | ||||||
|  |  | ||||||
|  |  | ||||||
|  |   This version of the GNU Lesser General Public License incorporates | ||||||
|  | the terms and conditions of version 3 of the GNU General Public | ||||||
|  | License, supplemented by the additional permissions listed below. | ||||||
|  |  | ||||||
|  |   0. Additional Definitions. | ||||||
|  |  | ||||||
|  |   As used herein, "this License" refers to version 3 of the GNU Lesser | ||||||
|  | General Public License, and the "GNU GPL" refers to version 3 of the GNU | ||||||
|  | General Public License. | ||||||
|  |  | ||||||
|  |   "The Library" refers to a covered work governed by this License, | ||||||
|  | other than an Application or a Combined Work as defined below. | ||||||
|  |  | ||||||
|  |   An "Application" is any work that makes use of an interface provided | ||||||
|  | by the Library, but which is not otherwise based on the Library. | ||||||
|  | Defining a subclass of a class defined by the Library is deemed a mode | ||||||
|  | of using an interface provided by the Library. | ||||||
|  |  | ||||||
|  |   A "Combined Work" is a work produced by combining or linking an | ||||||
|  | Application with the Library.  The particular version of the Library | ||||||
|  | with which the Combined Work was made is also called the "Linked | ||||||
|  | Version". | ||||||
|  |  | ||||||
|  |   The "Minimal Corresponding Source" for a Combined Work means the | ||||||
|  | Corresponding Source for the Combined Work, excluding any source code | ||||||
|  | for portions of the Combined Work that, considered in isolation, are | ||||||
|  | based on the Application, and not on the Linked Version. | ||||||
|  |  | ||||||
|  |   The "Corresponding Application Code" for a Combined Work means the | ||||||
|  | object code and/or source code for the Application, including any data | ||||||
|  | and utility programs needed for reproducing the Combined Work from the | ||||||
|  | Application, but excluding the System Libraries of the Combined Work. | ||||||
|  |  | ||||||
|  |   1. Exception to Section 3 of the GNU GPL. | ||||||
|  |  | ||||||
|  |   You may convey a covered work under sections 3 and 4 of this License | ||||||
|  | without being bound by section 3 of the GNU GPL. | ||||||
|  |  | ||||||
|  |   2. Conveying Modified Versions. | ||||||
|  |  | ||||||
|  |   If you modify a copy of the Library, and, in your modifications, a | ||||||
|  | facility refers to a function or data to be supplied by an Application | ||||||
|  | that uses the facility (other than as an argument passed when the | ||||||
|  | facility is invoked), then you may convey a copy of the modified | ||||||
|  | version: | ||||||
|  |  | ||||||
|  |    a) under this License, provided that you make a good faith effort to | ||||||
|  |    ensure that, in the event an Application does not supply the | ||||||
|  |    function or data, the facility still operates, and performs | ||||||
|  |    whatever part of its purpose remains meaningful, or | ||||||
|  |  | ||||||
|  |    b) under the GNU GPL, with none of the additional permissions of | ||||||
|  |    this License applicable to that copy. | ||||||
|  |  | ||||||
|  |   3. Object Code Incorporating Material from Library Header Files. | ||||||
|  |  | ||||||
|  |   The object code form of an Application may incorporate material from | ||||||
|  | a header file that is part of the Library.  You may convey such object | ||||||
|  | code under terms of your choice, provided that, if the incorporated | ||||||
|  | material is not limited to numerical parameters, data structure | ||||||
|  | layouts and accessors, or small macros, inline functions and templates | ||||||
|  | (ten or fewer lines in length), you do both of the following: | ||||||
|  |  | ||||||
|  |    a) Give prominent notice with each copy of the object code that the | ||||||
|  |    Library is used in it and that the Library and its use are | ||||||
|  |    covered by this License. | ||||||
|  |  | ||||||
|  |    b) Accompany the object code with a copy of the GNU GPL and this license | ||||||
|  |    document. | ||||||
|  |  | ||||||
|  |   4. Combined Works. | ||||||
|  |  | ||||||
|  |   You may convey a Combined Work under terms of your choice that, | ||||||
|  | taken together, effectively do not restrict modification of the | ||||||
|  | portions of the Library contained in the Combined Work and reverse | ||||||
|  | engineering for debugging such modifications, if you also do each of | ||||||
|  | the following: | ||||||
|  |  | ||||||
|  |    a) Give prominent notice with each copy of the Combined Work that | ||||||
|  |    the Library is used in it and that the Library and its use are | ||||||
|  |    covered by this License. | ||||||
|  |  | ||||||
|  |    b) Accompany the Combined Work with a copy of the GNU GPL and this license | ||||||
|  |    document. | ||||||
|  |  | ||||||
|  |    c) For a Combined Work that displays copyright notices during | ||||||
|  |    execution, include the copyright notice for the Library among | ||||||
|  |    these notices, as well as a reference directing the user to the | ||||||
|  |    copies of the GNU GPL and this license document. | ||||||
|  |  | ||||||
|  |    d) Do one of the following: | ||||||
|  |  | ||||||
|  |        0) Convey the Minimal Corresponding Source under the terms of this | ||||||
|  |        License, and the Corresponding Application Code in a form | ||||||
|  |        suitable for, and under terms that permit, the user to | ||||||
|  |        recombine or relink the Application with a modified version of | ||||||
|  |        the Linked Version to produce a modified Combined Work, in the | ||||||
|  |        manner specified by section 6 of the GNU GPL for conveying | ||||||
|  |        Corresponding Source. | ||||||
|  |  | ||||||
|  |        1) Use a suitable shared library mechanism for linking with the | ||||||
|  |        Library.  A suitable mechanism is one that (a) uses at run time | ||||||
|  |        a copy of the Library already present on the user's computer | ||||||
|  |        system, and (b) will operate properly with a modified version | ||||||
|  |        of the Library that is interface-compatible with the Linked | ||||||
|  |        Version. | ||||||
|  |  | ||||||
|  |    e) Provide Installation Information, but only if you would otherwise | ||||||
|  |    be required to provide such information under section 6 of the | ||||||
|  |    GNU GPL, and only to the extent that such information is | ||||||
|  |    necessary to install and execute a modified version of the | ||||||
|  |    Combined Work produced by recombining or relinking the | ||||||
|  |    Application with a modified version of the Linked Version. (If | ||||||
|  |    you use option 4d0, the Installation Information must accompany | ||||||
|  |    the Minimal Corresponding Source and Corresponding Application | ||||||
|  |    Code. If you use option 4d1, you must provide the Installation | ||||||
|  |    Information in the manner specified by section 6 of the GNU GPL | ||||||
|  |    for conveying Corresponding Source.) | ||||||
|  |  | ||||||
|  |   5. Combined Libraries. | ||||||
|  |  | ||||||
|  |   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 that are not Applications and are not covered by this | ||||||
|  | License, and convey such a combined library under terms of your | ||||||
|  | choice, if you do both of the following: | ||||||
|  |  | ||||||
|  |    a) Accompany the combined library with a copy of the same work based | ||||||
|  |    on the Library, uncombined with any other library facilities, | ||||||
|  |    conveyed under the terms of this License. | ||||||
|  |  | ||||||
|  |    b) Give prominent notice with the combined library that part of it | ||||||
|  |    is a work based on the Library, and explaining where to find the | ||||||
|  |    accompanying uncombined form of the same work. | ||||||
|  |  | ||||||
|  |   6. Revised Versions of the GNU Lesser General Public License. | ||||||
|  |  | ||||||
|  |   The Free Software Foundation may publish revised and/or new versions | ||||||
|  | of the GNU 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 as you received it specifies that a certain numbered version | ||||||
|  | of the GNU Lesser General Public License "or any later version" | ||||||
|  | applies to it, you have the option of following the terms and | ||||||
|  | conditions either of that published version or of any later version | ||||||
|  | published by the Free Software Foundation. If the Library as you | ||||||
|  | received it does not specify a version number of the GNU Lesser | ||||||
|  | General Public License, you may choose any version of the GNU Lesser | ||||||
|  | General Public License ever published by the Free Software Foundation. | ||||||
|  |  | ||||||
|  |   If the Library as you received it specifies that a proxy can decide | ||||||
|  | whether future versions of the GNU Lesser General Public License shall | ||||||
|  | apply, that proxy's public statement of acceptance of any version is | ||||||
|  | permanent authorization for you to choose that version for the | ||||||
|  | Library. | ||||||
							
								
								
									
										373
									
								
								public/novnc/docs/LICENSE.MPL-2.0
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,373 @@ | |||||||
|  | Mozilla Public License Version 2.0 | ||||||
|  | ================================== | ||||||
|  |  | ||||||
|  | 1. Definitions | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | 1.1. "Contributor" | ||||||
|  |     means each individual or legal entity that creates, contributes to | ||||||
|  |     the creation of, or owns Covered Software. | ||||||
|  |  | ||||||
|  | 1.2. "Contributor Version" | ||||||
|  |     means the combination of the Contributions of others (if any) used | ||||||
|  |     by a Contributor and that particular Contributor's Contribution. | ||||||
|  |  | ||||||
|  | 1.3. "Contribution" | ||||||
|  |     means Covered Software of a particular Contributor. | ||||||
|  |  | ||||||
|  | 1.4. "Covered Software" | ||||||
|  |     means Source Code Form to which the initial Contributor has attached | ||||||
|  |     the notice in Exhibit A, the Executable Form of such Source Code | ||||||
|  |     Form, and Modifications of such Source Code Form, in each case | ||||||
|  |     including portions thereof. | ||||||
|  |  | ||||||
|  | 1.5. "Incompatible With Secondary Licenses" | ||||||
|  |     means | ||||||
|  |  | ||||||
|  |     (a) that the initial Contributor has attached the notice described | ||||||
|  |         in Exhibit B to the Covered Software; or | ||||||
|  |  | ||||||
|  |     (b) that the Covered Software was made available under the terms of | ||||||
|  |         version 1.1 or earlier of the License, but not also under the | ||||||
|  |         terms of a Secondary License. | ||||||
|  |  | ||||||
|  | 1.6. "Executable Form" | ||||||
|  |     means any form of the work other than Source Code Form. | ||||||
|  |  | ||||||
|  | 1.7. "Larger Work" | ||||||
|  |     means a work that combines Covered Software with other material, in  | ||||||
|  |     a separate file or files, that is not Covered Software. | ||||||
|  |  | ||||||
|  | 1.8. "License" | ||||||
|  |     means this document. | ||||||
|  |  | ||||||
|  | 1.9. "Licensable" | ||||||
|  |     means having the right to grant, to the maximum extent possible, | ||||||
|  |     whether at the time of the initial grant or subsequently, any and | ||||||
|  |     all of the rights conveyed by this License. | ||||||
|  |  | ||||||
|  | 1.10. "Modifications" | ||||||
|  |     means any of the following: | ||||||
|  |  | ||||||
|  |     (a) any file in Source Code Form that results from an addition to, | ||||||
|  |         deletion from, or modification of the contents of Covered | ||||||
|  |         Software; or | ||||||
|  |  | ||||||
|  |     (b) any new file in Source Code Form that contains any Covered | ||||||
|  |         Software. | ||||||
|  |  | ||||||
|  | 1.11. "Patent Claims" of a Contributor | ||||||
|  |     means any patent claim(s), including without limitation, method, | ||||||
|  |     process, and apparatus claims, in any patent Licensable by such | ||||||
|  |     Contributor that would be infringed, but for the grant of the | ||||||
|  |     License, by the making, using, selling, offering for sale, having | ||||||
|  |     made, import, or transfer of either its Contributions or its | ||||||
|  |     Contributor Version. | ||||||
|  |  | ||||||
|  | 1.12. "Secondary License" | ||||||
|  |     means either the GNU General Public License, Version 2.0, the GNU | ||||||
|  |     Lesser General Public License, Version 2.1, the GNU Affero General | ||||||
|  |     Public License, Version 3.0, or any later versions of those | ||||||
|  |     licenses. | ||||||
|  |  | ||||||
|  | 1.13. "Source Code Form" | ||||||
|  |     means the form of the work preferred for making modifications. | ||||||
|  |  | ||||||
|  | 1.14. "You" (or "Your") | ||||||
|  |     means an individual or a legal entity exercising rights under this | ||||||
|  |     License. For legal entities, "You" includes any entity that | ||||||
|  |     controls, is controlled by, or is under common control with You. For | ||||||
|  |     purposes of this definition, "control" means (a) the power, direct | ||||||
|  |     or indirect, to cause the direction or management of such entity, | ||||||
|  |     whether by contract or otherwise, or (b) ownership of more than | ||||||
|  |     fifty percent (50%) of the outstanding shares or beneficial | ||||||
|  |     ownership of such entity. | ||||||
|  |  | ||||||
|  | 2. License Grants and Conditions | ||||||
|  | -------------------------------- | ||||||
|  |  | ||||||
|  | 2.1. Grants | ||||||
|  |  | ||||||
|  | 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 such Contributor to use, reproduce, make available, | ||||||
|  |     modify, display, perform, distribute, and otherwise exploit its | ||||||
|  |     Contributions, either on an unmodified basis, with Modifications, or | ||||||
|  |     as part of a Larger Work; and | ||||||
|  |  | ||||||
|  | (b) under Patent Claims of such Contributor to make, use, sell, offer | ||||||
|  |     for sale, have made, import, and otherwise transfer either its | ||||||
|  |     Contributions or its Contributor Version. | ||||||
|  |  | ||||||
|  | 2.2. Effective Date | ||||||
|  |  | ||||||
|  | The licenses granted in Section 2.1 with respect to any Contribution | ||||||
|  | become effective for each Contribution on the date the Contributor first | ||||||
|  | distributes such Contribution. | ||||||
|  |  | ||||||
|  | 2.3. Limitations on Grant Scope | ||||||
|  |  | ||||||
|  | The licenses granted in this Section 2 are the only rights granted under | ||||||
|  | this License. No additional rights or licenses will be implied from the | ||||||
|  | distribution or licensing of Covered Software under this License. | ||||||
|  | Notwithstanding Section 2.1(b) above, no patent license is granted by a | ||||||
|  | Contributor: | ||||||
|  |  | ||||||
|  | (a) for any code that a Contributor has removed from Covered Software; | ||||||
|  |     or | ||||||
|  |  | ||||||
|  | (b) for infringements caused by: (i) Your and any other third party's | ||||||
|  |     modifications of Covered Software, or (ii) the combination of its | ||||||
|  |     Contributions with other software (except as part of its Contributor | ||||||
|  |     Version); or | ||||||
|  |  | ||||||
|  | (c) under Patent Claims infringed by Covered Software in the absence of | ||||||
|  |     its Contributions. | ||||||
|  |  | ||||||
|  | This License does not grant any rights in the trademarks, service marks, | ||||||
|  | or logos of any Contributor (except as may be necessary to comply with | ||||||
|  | the notice requirements in Section 3.4). | ||||||
|  |  | ||||||
|  | 2.4. Subsequent Licenses | ||||||
|  |  | ||||||
|  | No Contributor makes additional grants as a result of Your choice to | ||||||
|  | distribute the Covered Software under a subsequent version of this | ||||||
|  | License (see Section 10.2) or under the terms of a Secondary License (if | ||||||
|  | permitted under the terms of Section 3.3). | ||||||
|  |  | ||||||
|  | 2.5. Representation | ||||||
|  |  | ||||||
|  | Each Contributor represents that the Contributor believes its | ||||||
|  | Contributions are its original creation(s) or it has sufficient rights | ||||||
|  | to grant the rights to its Contributions conveyed by this License. | ||||||
|  |  | ||||||
|  | 2.6. Fair Use | ||||||
|  |  | ||||||
|  | This License is not intended to limit any rights You have under | ||||||
|  | applicable copyright doctrines of fair use, fair dealing, or other | ||||||
|  | equivalents. | ||||||
|  |  | ||||||
|  | 2.7. Conditions | ||||||
|  |  | ||||||
|  | Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted | ||||||
|  | in Section 2.1. | ||||||
|  |  | ||||||
|  | 3. Responsibilities | ||||||
|  | ------------------- | ||||||
|  |  | ||||||
|  | 3.1. Distribution of Source Form | ||||||
|  |  | ||||||
|  | All distribution of Covered Software in Source Code Form, including any | ||||||
|  | Modifications that You create or to which You contribute, must be under | ||||||
|  | the terms of this License. You must inform recipients that the Source | ||||||
|  | Code Form of the Covered Software is governed by the terms of this | ||||||
|  | License, and how they can obtain a copy of this License. You may not | ||||||
|  | attempt to alter or restrict the recipients' rights in the Source Code | ||||||
|  | Form. | ||||||
|  |  | ||||||
|  | 3.2. Distribution of Executable Form | ||||||
|  |  | ||||||
|  | If You distribute Covered Software in Executable Form then: | ||||||
|  |  | ||||||
|  | (a) such Covered Software must also be made available in Source Code | ||||||
|  |     Form, as described in Section 3.1, and You must inform recipients of | ||||||
|  |     the Executable Form how they can obtain a copy of such Source Code | ||||||
|  |     Form by reasonable means in a timely manner, at a charge no more | ||||||
|  |     than the cost of distribution to the recipient; and | ||||||
|  |  | ||||||
|  | (b) You may distribute such Executable Form under the terms of this | ||||||
|  |     License, or sublicense it under different terms, provided that the | ||||||
|  |     license for the Executable Form does not attempt to limit or alter | ||||||
|  |     the recipients' rights in the Source Code Form under this License. | ||||||
|  |  | ||||||
|  | 3.3. Distribution of a Larger Work | ||||||
|  |  | ||||||
|  | You may create and distribute a Larger Work under terms of Your choice, | ||||||
|  | provided that You also comply with the requirements of this License for | ||||||
|  | the Covered Software. If the Larger Work is a combination of Covered | ||||||
|  | Software with a work governed by one or more Secondary Licenses, and the | ||||||
|  | Covered Software is not Incompatible With Secondary Licenses, this | ||||||
|  | License permits You to additionally distribute such Covered Software | ||||||
|  | under the terms of such Secondary License(s), so that the recipient of | ||||||
|  | the Larger Work may, at their option, further distribute the Covered | ||||||
|  | Software under the terms of either this License or such Secondary | ||||||
|  | License(s). | ||||||
|  |  | ||||||
|  | 3.4. Notices | ||||||
|  |  | ||||||
|  | You may not remove or alter the substance of any license notices | ||||||
|  | (including copyright notices, patent notices, disclaimers of warranty, | ||||||
|  | or limitations of liability) contained within the Source Code Form of | ||||||
|  | the Covered Software, except that You may alter any license notices to | ||||||
|  | the extent required to remedy known factual inaccuracies. | ||||||
|  |  | ||||||
|  | 3.5. Application of Additional Terms | ||||||
|  |  | ||||||
|  | You may choose to offer, and to charge a fee for, warranty, support, | ||||||
|  | indemnity or liability obligations to one or more recipients of Covered | ||||||
|  | Software. However, You may do so only on Your own behalf, and not on | ||||||
|  | behalf of any Contributor. You must make it absolutely clear that any | ||||||
|  | such warranty, support, indemnity, or liability obligation is offered by | ||||||
|  | You alone, and You hereby agree to indemnify every Contributor for any | ||||||
|  | liability incurred by such Contributor as a result of warranty, support, | ||||||
|  | indemnity or liability terms You offer. You may include additional | ||||||
|  | disclaimers of warranty and limitations of liability specific to any | ||||||
|  | jurisdiction. | ||||||
|  |  | ||||||
|  | 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 Software 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 placed in a text file included with all distributions of the Covered | ||||||
|  | Software under this License. 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. Termination | ||||||
|  | -------------- | ||||||
|  |  | ||||||
|  | 5.1. The rights granted under this License will terminate automatically | ||||||
|  | if You fail to comply with any of its terms. However, if You become | ||||||
|  | compliant, then the rights granted under this License from a particular | ||||||
|  | Contributor are reinstated (a) provisionally, unless and until such | ||||||
|  | Contributor explicitly and finally terminates Your grants, and (b) on an | ||||||
|  | ongoing basis, if such Contributor fails to notify You of the | ||||||
|  | non-compliance by some reasonable means prior to 60 days after You have | ||||||
|  | come back into compliance. Moreover, Your grants from a particular | ||||||
|  | Contributor are reinstated on an ongoing basis if such Contributor | ||||||
|  | notifies You of the non-compliance by some reasonable means, this is the | ||||||
|  | first time You have received notice of non-compliance with this License | ||||||
|  | from such Contributor, and You become compliant prior to 30 days after | ||||||
|  | Your receipt of the notice. | ||||||
|  |  | ||||||
|  | 5.2. If You initiate litigation against any entity by asserting a patent | ||||||
|  | infringement claim (excluding declaratory judgment actions, | ||||||
|  | counter-claims, and cross-claims) alleging that a Contributor Version | ||||||
|  | directly or indirectly infringes any patent, then the rights granted to | ||||||
|  | You by any and all Contributors for the Covered Software under Section | ||||||
|  | 2.1 of this License shall terminate. | ||||||
|  |  | ||||||
|  | 5.3. In the event of termination under Sections 5.1 or 5.2 above, all | ||||||
|  | end user license agreements (excluding distributors and resellers) which | ||||||
|  | have been validly granted by You or Your distributors under this License | ||||||
|  | prior to termination shall survive termination. | ||||||
|  |  | ||||||
|  | ************************************************************************ | ||||||
|  | *                                                                      * | ||||||
|  | *  6. Disclaimer of Warranty                                           * | ||||||
|  | *  -------------------------                                           * | ||||||
|  | *                                                                      * | ||||||
|  | *  Covered Software is provided under this License on an "as is"       * | ||||||
|  | *  basis, without warranty of any kind, either expressed, implied, or  * | ||||||
|  | *  statutory, including, without limitation, warranties that the       * | ||||||
|  | *  Covered Software is free of defects, merchantable, fit for a        * | ||||||
|  | *  particular purpose or non-infringing. The entire risk as to the     * | ||||||
|  | *  quality and performance of the Covered Software is with You.        * | ||||||
|  | *  Should any Covered Software prove defective in any respect, You     * | ||||||
|  | *  (not any Contributor) assume the cost of any necessary servicing,   * | ||||||
|  | *  repair, or correction. This disclaimer of warranty constitutes an   * | ||||||
|  | *  essential part of this License. No use of any Covered Software is   * | ||||||
|  | *  authorized under this License except under this disclaimer.         * | ||||||
|  | *                                                                      * | ||||||
|  | ************************************************************************ | ||||||
|  |  | ||||||
|  | ************************************************************************ | ||||||
|  | *                                                                      * | ||||||
|  | *  7. Limitation of Liability                                          * | ||||||
|  | *  --------------------------                                          * | ||||||
|  | *                                                                      * | ||||||
|  | *  Under no circumstances and under no legal theory, whether tort      * | ||||||
|  | *  (including negligence), contract, or otherwise, shall any           * | ||||||
|  | *  Contributor, or anyone who distributes Covered Software as          * | ||||||
|  | *  permitted above, be liable to You for any direct, indirect,         * | ||||||
|  | *  special, incidental, or consequential damages of any character      * | ||||||
|  | *  including, without limitation, damages for lost profits, loss of    * | ||||||
|  | *  goodwill, work stoppage, computer failure or malfunction, or any    * | ||||||
|  | *  and all other commercial damages or losses, even if such party      * | ||||||
|  | *  shall have been informed of the possibility of such damages. This   * | ||||||
|  | *  limitation of liability shall not apply to liability for death or   * | ||||||
|  | *  personal injury resulting from such party's negligence to the       * | ||||||
|  | *  extent applicable law prohibits such limitation. Some               * | ||||||
|  | *  jurisdictions do not allow the exclusion or limitation of           * | ||||||
|  | *  incidental or consequential damages, so this exclusion and          * | ||||||
|  | *  limitation may not apply to You.                                    * | ||||||
|  | *                                                                      * | ||||||
|  | ************************************************************************ | ||||||
|  |  | ||||||
|  | 8. Litigation | ||||||
|  | ------------- | ||||||
|  |  | ||||||
|  | Any litigation relating to this License may be brought only in the | ||||||
|  | courts of a jurisdiction where the defendant maintains its principal | ||||||
|  | place of business and such litigation shall be governed by laws of that | ||||||
|  | jurisdiction, without reference to its conflict-of-law provisions. | ||||||
|  | Nothing in this Section shall prevent a party's ability to bring | ||||||
|  | cross-claims or counter-claims. | ||||||
|  |  | ||||||
|  | 9. Miscellaneous | ||||||
|  | ---------------- | ||||||
|  |  | ||||||
|  | This License represents the complete agreement concerning the 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. Any law or regulation which provides | ||||||
|  | that the language of a contract shall be construed against the drafter | ||||||
|  | shall not be used to construe this License against a Contributor. | ||||||
|  |  | ||||||
|  | 10. Versions of the License | ||||||
|  | --------------------------- | ||||||
|  |  | ||||||
|  | 10.1. New Versions | ||||||
|  |  | ||||||
|  | Mozilla Foundation is the license steward. Except as provided in Section | ||||||
|  | 10.3, no one other than the license steward has the right to modify or | ||||||
|  | publish new versions of this License. Each version will be given a | ||||||
|  | distinguishing version number. | ||||||
|  |  | ||||||
|  | 10.2. Effect of New Versions | ||||||
|  |  | ||||||
|  | You may distribute the Covered Software under the terms of the version | ||||||
|  | of the License under which You originally received the Covered Software, | ||||||
|  | or under the terms of any subsequent version published by the license | ||||||
|  | steward. | ||||||
|  |  | ||||||
|  | 10.3. Modified Versions | ||||||
|  |  | ||||||
|  | If you create software not governed by this License, and you want to | ||||||
|  | create a new license for such software, you may create and use a | ||||||
|  | modified version of this License if you rename the license and remove | ||||||
|  | any references to the name of the license steward (except to note that | ||||||
|  | such modified license differs from this License). | ||||||
|  |  | ||||||
|  | 10.4. Distributing Source Code Form that is Incompatible With Secondary | ||||||
|  | Licenses | ||||||
|  |  | ||||||
|  | If You choose to distribute Source Code Form that is Incompatible With | ||||||
|  | Secondary Licenses under the terms of this version of the License, the | ||||||
|  | notice described in Exhibit B of this License must be attached. | ||||||
|  |  | ||||||
|  | Exhibit A - Source Code Form License Notice | ||||||
|  | ------------------------------------------- | ||||||
|  |  | ||||||
|  |   This Source Code Form is subject to the terms of the Mozilla Public | ||||||
|  |   License, v. 2.0. If a copy of the MPL was not distributed with this | ||||||
|  |   file, You can obtain one at http://mozilla.org/MPL/2.0/. | ||||||
|  |  | ||||||
|  | If it is not possible or desirable to put the notice in a particular | ||||||
|  | file, then You may include the notice in a location (such as a LICENSE | ||||||
|  | file in a relevant directory) where a recipient would be likely to look | ||||||
|  | for such a notice. | ||||||
|  |  | ||||||
|  | You may add additional accurate notices of copyright ownership. | ||||||
|  |  | ||||||
|  | Exhibit B - "Incompatible With Secondary Licenses" Notice | ||||||
|  | --------------------------------------------------------- | ||||||
|  |  | ||||||
|  |   This Source Code Form is "Incompatible With Secondary Licenses", as | ||||||
|  |   defined by the Mozilla Public License, v. 2.0. | ||||||
							
								
								
									
										91
									
								
								public/novnc/docs/LICENSE.OFL-1.1
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,91 @@ | |||||||
|  | This Font Software is licensed under the SIL Open Font License, Version 1.1. | ||||||
|  | This license is copied below, and is also available with a FAQ at: | ||||||
|  | http://scripts.sil.org/OFL | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ----------------------------------------------------------- | ||||||
|  | SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 | ||||||
|  | ----------------------------------------------------------- | ||||||
|  |  | ||||||
|  | PREAMBLE | ||||||
|  | The goals of the Open Font License (OFL) are to stimulate worldwide | ||||||
|  | development of collaborative font projects, to support the font creation | ||||||
|  | efforts of academic and linguistic communities, and to provide a free and | ||||||
|  | open framework in which fonts may be shared and improved in partnership | ||||||
|  | with others. | ||||||
|  |  | ||||||
|  | The OFL allows the licensed fonts to be used, studied, modified and | ||||||
|  | redistributed freely as long as they are not sold by themselves. The | ||||||
|  | fonts, including any derivative works, can be bundled, embedded,  | ||||||
|  | redistributed and/or sold with any software provided that any reserved | ||||||
|  | names are not used by derivative works. The fonts and derivatives, | ||||||
|  | however, cannot be released under any other type of license. The | ||||||
|  | requirement for fonts to remain under this license does not apply | ||||||
|  | to any document created using the fonts or their derivatives. | ||||||
|  |  | ||||||
|  | DEFINITIONS | ||||||
|  | "Font Software" refers to the set of files released by the Copyright | ||||||
|  | Holder(s) under this license and clearly marked as such. This may | ||||||
|  | include source files, build scripts and documentation. | ||||||
|  |  | ||||||
|  | "Reserved Font Name" refers to any names specified as such after the | ||||||
|  | copyright statement(s). | ||||||
|  |  | ||||||
|  | "Original Version" refers to the collection of Font Software components as | ||||||
|  | distributed by the Copyright Holder(s). | ||||||
|  |  | ||||||
|  | "Modified Version" refers to any derivative made by adding to, deleting, | ||||||
|  | or substituting -- in part or in whole -- any of the components of the | ||||||
|  | Original Version, by changing formats or by porting the Font Software to a | ||||||
|  | new environment. | ||||||
|  |  | ||||||
|  | "Author" refers to any designer, engineer, programmer, technical | ||||||
|  | writer or other person who contributed to the Font Software. | ||||||
|  |  | ||||||
|  | PERMISSION & CONDITIONS | ||||||
|  | Permission is hereby granted, free of charge, to any person obtaining | ||||||
|  | a copy of the Font Software, to use, study, copy, merge, embed, modify, | ||||||
|  | redistribute, and sell modified and unmodified copies of the Font | ||||||
|  | Software, subject to the following conditions: | ||||||
|  |  | ||||||
|  | 1) Neither the Font Software nor any of its individual components, | ||||||
|  | in Original or Modified Versions, may be sold by itself. | ||||||
|  |  | ||||||
|  | 2) Original or Modified Versions of the Font Software may be bundled, | ||||||
|  | redistributed and/or sold with any software, provided that each copy | ||||||
|  | contains the above copyright notice and this license. These can be | ||||||
|  | included either as stand-alone text files, human-readable headers or | ||||||
|  | in the appropriate machine-readable metadata fields within text or | ||||||
|  | binary files as long as those fields can be easily viewed by the user. | ||||||
|  |  | ||||||
|  | 3) No Modified Version of the Font Software may use the Reserved Font | ||||||
|  | Name(s) unless explicit written permission is granted by the corresponding | ||||||
|  | Copyright Holder. This restriction only applies to the primary font name as | ||||||
|  | presented to the users. | ||||||
|  |  | ||||||
|  | 4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font | ||||||
|  | Software shall not be used to promote, endorse or advertise any | ||||||
|  | Modified Version, except to acknowledge the contribution(s) of the | ||||||
|  | Copyright Holder(s) and the Author(s) or with their explicit written | ||||||
|  | permission. | ||||||
|  |  | ||||||
|  | 5) The Font Software, modified or unmodified, in part or in whole, | ||||||
|  | must be distributed entirely under this license, and must not be | ||||||
|  | distributed under any other license. The requirement for fonts to | ||||||
|  | remain under this license does not apply to any document created | ||||||
|  | using the Font Software. | ||||||
|  |  | ||||||
|  | TERMINATION | ||||||
|  | This license becomes null and void if any of the above conditions are | ||||||
|  | not met. | ||||||
|  |  | ||||||
|  | DISCLAIMER | ||||||
|  | THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | ||||||
|  | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF | ||||||
|  | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT | ||||||
|  | OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE | ||||||
|  | COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, | ||||||
|  | INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL | ||||||
|  | DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING | ||||||
|  | FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM | ||||||
|  | OTHER DEALINGS IN THE FONT SOFTWARE. | ||||||
							
								
								
									
										21
									
								
								public/novnc/docs/LICENSE.pako
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,21 @@ | |||||||
|  | (The MIT License) | ||||||
|  |  | ||||||
|  | Copyright (C) 2014 by Vitaly Puzrin | ||||||
|  |  | ||||||
|  | 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. | ||||||
							
								
								
									
										27
									
								
								public/novnc/docs/LICENSE.zlib
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,27 @@ | |||||||
|  | Copyright (c) <year>, <copyright holder> | ||||||
|  | All rights reserved. | ||||||
|  |  | ||||||
|  | This software is provided 'as-is', without any express | ||||||
|  | or implied warranty.  In no event will the authors be | ||||||
|  | held liable for any damages arising from the use of | ||||||
|  | this software. | ||||||
|  |  | ||||||
|  | Permission is granted to anyone to use this software | ||||||
|  | for any purpose, including commercial applications, | ||||||
|  | and to alter it and redistribute it freely, subject to | ||||||
|  | the following restrictions: | ||||||
|  |  | ||||||
|  | 1. The origin of this software must not be | ||||||
|  |    misrepresented; you must not claim that you | ||||||
|  |    wrote the original software. If you use this | ||||||
|  |    software in a product, an acknowledgment in | ||||||
|  |    the product documentation would be appreciated | ||||||
|  |    but is not required. | ||||||
|  |  | ||||||
|  | 2. Altered source versions must be plainly marked | ||||||
|  |    as such, and must not be misrepresented as | ||||||
|  |    being the original software. | ||||||
|  |  | ||||||
|  | 3. This notice may not be removed or altered from | ||||||
|  |    any source distribution. | ||||||
|  |  | ||||||
							
								
								
									
										1
									
								
								public/novnc/docs/VERSION
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1 @@ | |||||||
|  | 0.6.1 | ||||||
							
								
								
									
										4
									
								
								public/novnc/docs/flash_policy.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,4 @@ | |||||||
|  | Manual setup: | ||||||
|  |  | ||||||
|  | DATA="echo \'<cross-domain-policy><allow-access-from domain=\\\"*\\\" to-ports=\\\"*\\\" /></cross-domain-policy>\'" | ||||||
|  | /usr/bin/socat -T 1 TCP-L:843,reuseaddr,fork,crlf SYSTEM:"$DATA" | ||||||
							
								
								
									
										76
									
								
								public/novnc/docs/links
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,76 @@ | |||||||
|  | New tight PNG protocol: | ||||||
|  |     http://wiki.qemu.org/VNC_Tight_PNG | ||||||
|  |     http://xf.iksaif.net/blog/index.php?post/2010/06/14/QEMU:-Tight-PNG-and-some-profiling | ||||||
|  |  | ||||||
|  | RFB protocol and extensions: | ||||||
|  |     http://tigervnc.org/cgi-bin/rfbproto | ||||||
|  |  | ||||||
|  | Canvas Browser Compatibility: | ||||||
|  |     http://philip.html5.org/tests/canvas/suite/tests/results.html | ||||||
|  |  | ||||||
|  | WebSockets API standard: | ||||||
|  |     http://www.whatwg.org/specs/web-apps/current-work/complete.html#websocket | ||||||
|  |     http://dev.w3.org/html5/websockets/ | ||||||
|  |     http://www.ietf.org/id/draft-ietf-hybi-thewebsocketprotocol-00.txt | ||||||
|  |  | ||||||
|  | Browser Keyboard Events detailed: | ||||||
|  |     http://unixpapa.com/js/key.html | ||||||
|  |  | ||||||
|  | ActionScript (Flash) WebSocket implementation: | ||||||
|  |     http://github.com/gimite/web-socket-js | ||||||
|  |  | ||||||
|  | ActionScript (Flash) crypto/TLS library: | ||||||
|  |     http://code.google.com/p/as3crypto | ||||||
|  |     http://github.com/lyokato/as3crypto_patched | ||||||
|  |  | ||||||
|  | TLS Protocol: | ||||||
|  |     http://en.wikipedia.org/wiki/Transport_Layer_Security | ||||||
|  |  | ||||||
|  | Generate self-signed certificate: | ||||||
|  |     http://docs.python.org/dev/library/ssl.html#certificates | ||||||
|  |  | ||||||
|  | Cursor appearance/style (for Cursor pseudo-encoding): | ||||||
|  |     http://en.wikipedia.org/wiki/ICO_(file_format) | ||||||
|  |     http://www.daubnet.com/en/file-format-cur | ||||||
|  |     https://developer.mozilla.org/en/Using_URL_values_for_the_cursor_property | ||||||
|  |     http://www.fileformat.info/format/bmp/egff.htm | ||||||
|  |  | ||||||
|  | Icon/Cursor file format: | ||||||
|  |     http://msdn.microsoft.com/en-us/library/ms997538 | ||||||
|  |     http://msdn.microsoft.com/en-us/library/aa921550.aspx | ||||||
|  |     http://msdn.microsoft.com/en-us/library/aa930622.aspx | ||||||
|  |  | ||||||
|  |  | ||||||
|  | RDP Protocol specification: | ||||||
|  |     http://msdn.microsoft.com/en-us/library/cc240445(v=PROT.10).aspx | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Related projects: | ||||||
|  |      | ||||||
|  |     guacamole: http://guacamole.sourceforge.net/ | ||||||
|  |  | ||||||
|  |         - Web client, but Java servlet does pre-processing | ||||||
|  |  | ||||||
|  |     jsvnc: http://code.google.com/p/jsvnc/ | ||||||
|  |  | ||||||
|  |         - No releases | ||||||
|  |  | ||||||
|  |     webvnc: http://code.google.com/p/webvnc/ | ||||||
|  |  | ||||||
|  |         - Jetty web server gateway, no updates since April 2008. | ||||||
|  |  | ||||||
|  |     RealVNC Java applet: http://www.realvnc.com/support/javavncviewer.html | ||||||
|  |  | ||||||
|  |         - Java applet | ||||||
|  |  | ||||||
|  |     Flashlight-VNC: http://www.wizhelp.com/flashlight-vnc/ | ||||||
|  |  | ||||||
|  |         - Adobe Flash implementation | ||||||
|  |  | ||||||
|  |     FVNC: http://osflash.org/fvnc | ||||||
|  |  | ||||||
|  |         - Adbove Flash implementation | ||||||
|  |  | ||||||
|  |     CanVNC: http://canvnc.sourceforge.net/ | ||||||
|  |  | ||||||
|  |         - HTML client with REST to VNC python proxy. Mostly vapor. | ||||||
							
								
								
									
										5
									
								
								public/novnc/docs/notes
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,5 @@ | |||||||
|  | Rebuilding inflator.js | ||||||
|  |  | ||||||
|  | - Download pako from npm | ||||||
|  | - Install browserify using npm | ||||||
|  | - browserify utils/inflator.partial.js -o include/inflator.js -s inflator | ||||||
							
								
								
									
										34
									
								
								public/novnc/docs/release.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,34 @@ | |||||||
|  | - Decide a new version number X.Y.Z (follow SemVer) | ||||||
|  | - Update version in package.json | ||||||
|  | - Update version in docs/VERSION | ||||||
|  | - Commit the change with a commit like "Release X.Y.Z" | ||||||
|  | - Add a new release on GitHub called "vX.Y.Z", and populate it with | ||||||
|  |   release notes of the following form (where A.B.C is the last release): | ||||||
|  |  | ||||||
|  | Major Changes Since A.B.C | ||||||
|  | ========================= | ||||||
|  |  | ||||||
|  | *Insert warnings here about incompatibilities* | ||||||
|  |  | ||||||
|  | *Thanks to all the contributors who filed bugs, added features, and fixed bugs | ||||||
|  | during this release :tada:* | ||||||
|  |  | ||||||
|  | App-visible Changes | ||||||
|  | ------------------- | ||||||
|  |  | ||||||
|  | - *feature* a feature which improves the app usage (#PRNUM) | ||||||
|  | - *bugfix* a bug fix which fixes the app usage (#PRNUM) | ||||||
|  | - *refactor* a refactor which changes the app usage (#PRNUM) | ||||||
|  |  | ||||||
|  | Library-visible Changes | ||||||
|  | ----------------------- | ||||||
|  |  | ||||||
|  | - *feature* a feature which improves the noVNC APIs (#PRNUM) | ||||||
|  | - *bugfix* a bug fix which fixes the noVNC APIs (#PRNUM) | ||||||
|  | - *refactor* a refactor which changes the noVNC APIs (#PRNUM) | ||||||
|  |  | ||||||
|  | App-internals Changes | ||||||
|  | --------------------- | ||||||
|  |  | ||||||
|  | - *bugfix* a bug fix with affects the internals of noVNC only (#PRNUM) | ||||||
|  | - *refactor* a refactor which affects the internals of noVNC only (#PRNUM) | ||||||
							
								
								
									
										147
									
								
								public/novnc/docs/rfb_notes
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,147 @@ | |||||||
|  | 5.1.1 ProtocolVersion: 12, 12 bytes | ||||||
|  |  | ||||||
|  |     - Sent by server, max supported | ||||||
|  |         12 ascii - "RFB 003.008\n" | ||||||
|  |     - Response by client, version to use | ||||||
|  |         12 ascii - "RFB 003.003\n" | ||||||
|  |  | ||||||
|  | 5.1.2 Authentication: >=4, [16, 4] bytes | ||||||
|  |  | ||||||
|  |     - Sent by server | ||||||
|  |         CARD32 - authentication-scheme | ||||||
|  |                 0 - connection failed | ||||||
|  |                     CARD32 - length | ||||||
|  |                     length - reason | ||||||
|  |                 1 - no authentication | ||||||
|  |  | ||||||
|  |                 2 - VNC authentication | ||||||
|  |                     16 CARD8 - challenge (random bytes) | ||||||
|  |  | ||||||
|  |     - Response by client (if VNC authentication) | ||||||
|  |         16 CARD8 - client encrypts the challenge with DES, using user | ||||||
|  |                    password as key, sends resulting 16 byte response | ||||||
|  |  | ||||||
|  |     - Response by server (if VNC authentication)  | ||||||
|  |         CARD32 - 0 - OK | ||||||
|  |                  1 - failed | ||||||
|  |                  2 - too-many | ||||||
|  |  | ||||||
|  | 5.1.3 ClientInitialisation: 1 byte | ||||||
|  |     - Sent by client | ||||||
|  |         CARD8 - shared-flag, 0 exclusive, non-zero shared | ||||||
|  |  | ||||||
|  | 5.1.4 ServerInitialisation: >=24 bytes | ||||||
|  |     - Sent by server | ||||||
|  |         CARD16 - framebuffer-width | ||||||
|  |         CARD16 - framebuffer-height | ||||||
|  |         16 byte PIXEL_FORMAT - server-pixel-format | ||||||
|  |             CARD8 - bits-per-pixel | ||||||
|  |             CARD8 - depth | ||||||
|  |             CARD8 - big-endian-flag, non-zero is big endian | ||||||
|  |             CARD8 - true-color-flag, non-zero then next 6 apply | ||||||
|  |             CARD16 - red-max | ||||||
|  |             CARD16 - green-max | ||||||
|  |             CARD16 - blue-max | ||||||
|  |             CARD8 - red-shift | ||||||
|  |             CARD8 - green-shift | ||||||
|  |             CARD8 - blue-shift | ||||||
|  |             3 bytes - padding | ||||||
|  |         CARD32 - name-length | ||||||
|  |  | ||||||
|  |         CARD8[length] - name-string | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Client to Server Messages: | ||||||
|  |  | ||||||
|  | 5.2.1 SetPixelFormat: 20 bytes | ||||||
|  |     CARD8: 0 - message-type | ||||||
|  |     ... | ||||||
|  |  | ||||||
|  | 5.2.2 FixColourMapEntries: >=6 bytes | ||||||
|  |     CARD8: 1 - message-type | ||||||
|  |     ... | ||||||
|  |  | ||||||
|  | 5.2.3 SetEncodings: >=8 bytes | ||||||
|  |     CARD8: 2 - message-type | ||||||
|  |     CARD8    - padding | ||||||
|  |     CARD16   - numer-of-encodings | ||||||
|  |  | ||||||
|  |     CARD32   - encoding-type in preference order | ||||||
|  |         0 - raw | ||||||
|  |         1 - copy-rectangle | ||||||
|  |         2 - RRE | ||||||
|  |         4 - CoRRE | ||||||
|  |         5 - hextile | ||||||
|  |  | ||||||
|  | 5.2.4 FramebufferUpdateRequest (10 bytes) | ||||||
|  |     CARD8: 3 - message-type | ||||||
|  |     CARD8    - incremental (0 for full-update, non-zero for incremental) | ||||||
|  |     CARD16   - x-position | ||||||
|  |     CARD16   - y-position | ||||||
|  |     CARD16   - width | ||||||
|  |     CARD16   - height | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 5.2.5 KeyEvent: 8 bytes | ||||||
|  |     CARD8: 4 - message-type | ||||||
|  |     CARD8    - down-flag | ||||||
|  |     2 bytes  - padding | ||||||
|  |     CARD32   - key (X-Windows keysym values) | ||||||
|  |  | ||||||
|  | 5.2.6 PointerEvent: 6 bytes | ||||||
|  |     CARD8: 5 - message-type | ||||||
|  |     CARD8    - button-mask | ||||||
|  |     CARD16   - x-position | ||||||
|  |     CARD16   - y-position | ||||||
|  |  | ||||||
|  | 5.2.7 ClientCutText: >=9 bytes | ||||||
|  |     CARD8: 6 - message-type | ||||||
|  |     ... | ||||||
|  |  | ||||||
|  |  | ||||||
|  | Server to Client Messages: | ||||||
|  |  | ||||||
|  | 5.3.1 FramebufferUpdate | ||||||
|  |     CARD8: 0 - message-type | ||||||
|  |     1 byte   - padding | ||||||
|  |     CARD16   - number-of-rectangles | ||||||
|  |  | ||||||
|  |     CARD16   - x-position | ||||||
|  |     CARD16   - y-position | ||||||
|  |     CARD16   - width | ||||||
|  |     CARD16   - height | ||||||
|  |     CARD16   - encoding-type: | ||||||
|  |         0 - raw | ||||||
|  |         1 - copy rectangle | ||||||
|  |         2 - RRE | ||||||
|  |         4 - CoRRE | ||||||
|  |         5 - hextile | ||||||
|  |  | ||||||
|  |         raw: | ||||||
|  |             - width x height pixel values | ||||||
|  |  | ||||||
|  |         copy rectangle:  | ||||||
|  |             CARD16 - src-x-position | ||||||
|  |             CARD16 - src-y-position | ||||||
|  |  | ||||||
|  |         RRE: | ||||||
|  |             CARD32  - N number-of-subrectangles | ||||||
|  |             Nxd bytes - background-pixel-value (d bits-per-pixel) | ||||||
|  |  | ||||||
|  |         ... | ||||||
|  |  | ||||||
|  | 5.3.2 SetColourMapEntries (no support) | ||||||
|  |     CARD8: 1 - message-type | ||||||
|  |     ... | ||||||
|  |  | ||||||
|  | 5.3.3 Bell | ||||||
|  |     CARD8: 2 - message-type | ||||||
|  |  | ||||||
|  | 5.3.4 ServerCutText | ||||||
|  |     CARD8: 3 - message-type | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |      | ||||||
							
								
								
									
										
											BIN
										
									
								
								public/novnc/docs/rfbproto-3.3.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								public/novnc/docs/rfbproto-3.7.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								public/novnc/docs/rfbproto-3.8.pdf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
							
								
								
									
										1
									
								
								public/novnc/favicon.ico
									
									
									
									
									
										Symbolic link
									
								
							
							
						
						| @@ -0,0 +1 @@ | |||||||
|  | images/favicon.ico | ||||||
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/alt.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 339 B | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/clipboard.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 501 B | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/connect.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 404 B | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/ctrl.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 354 B | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/ctrlaltdel.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 317 B | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/disconnect.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 1.3 KiB | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/drag.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 963 B | 
							
								
								
									
										
											BIN
										
									
								
								public/novnc/images/esc.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						| After Width: | Height: | Size: 385 B | 
 olevole
					olevole