@ 2015-05-05T17:59:07Z <?php
/**
* @copyright Intermesh 2003
* @author Merijn Schering <mschering@intermesh.nl>
* @version $Revision: 1.54 $ $Date: 2006/11/22 15:09:59 $
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the
* Free Software Foundation; either version 2 of the License, or (at your
* option) any later version.
*/
require_once("../../netjuris.php");
$GO_SECURITY->authenticate();
$GO_MODULES->authenticate('calendar');
require_once($GO_LANGUAGE->get_language_file('calendar'));
load_basic_controls();
load_control('color_selector');
require_once($GO_MODULES->path.'classes/calendar.class.inc');
$cal = new calendar();
$GO_CONFIG->set_help_url($cal_help_url);
$date = isset($_REQUEST['date']) ? $_REQUEST['date'] : getdate();
$year = isset($_POST['year']) ? $_POST['year'] : $date["year"];
$month = isset($_POST['month']) ? $_POST['month'] : $date["mon"];
$day = isset($_POST['day']) ? $_POST['day'] : $date["mday"];
$task = isset($_POST['task']) ? $_POST['task'] : '';
$return_to = isset($_REQUEST['return_to']) ? $_REQUEST['return_to'] : $_SERVER['HTTP_REFERER'];
$calendar_id = isset($_REQUEST['calendar_id']) ? $_REQUEST['calendar_id'] : 0;
$link_back = $_SERVER['PHP_SELF'].'?calendar_id='.$calendar_id.'&return_to='.urlencode($return_to);
$hours = array("00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23");
switch($task)
{
case 'import':
if (!file_exists($_FILES['ical_file']['tmp_name']))
{
$feedback = $cal_no_file;
}else
{
if($cal->import_ical_file($GO_SECURITY->user_id, $_FILES['ical_file']['tmp_name'], $calendar_id))
{
$feedback =$cal_import_success;
}else
{
$feedback = $strDataError;
}
unlink($_FILES['ical_file']['tmp_name']);
}
break;
case 'save':
$user_id = (isset($_POST['user_id']) && $_POST['user_id'] > 0) ? $_POST['user_id'] : $GO_SECURITY->user_id;
$name = smart_addslashes(trim($_POST['name']));
$public = isset($_POST['public']) ? '1' : '0';
if ($name != "")
{
if ($calendar_id > 0)
{
$existing_calendar = $cal->get_calendar_by_name($name);
if ($existing_calendar && $existing_calendar['id'] != $calendar_id)
{
$feedback = $sc_calendar_exists;
}else
{
$calendar = $cal->get_calendar($calendar_id);
if($calendar['user_id'] != $user_id)
{
$GO_SECURITY->chown_acl($calendar['acl_read'], $user_id);
$GO_SECURITY->chown_acl($calendar['acl_write'], $user_id);
}
$cal->update_calendar( $calendar_id, $user_id,
$name,
smart_addslashes($_POST['calendar_start_hour']),
smart_addslashes($_POST['calendar_end_hour']),
smart_addslashes($_POST['background']),
$public,
smart_addslashes($_POST['group_id']),
smart_addslashes($_POST['time_interval']));
if ($_POST['close'] == 'true')
{
header('Location: '.$return_to);
exit();
}
}
}else
{
if ($cal->get_calendar_by_name($name))
{
$feedback = $sc_calendar_exists;
}else
{
if ($calendar_id = $cal->add_calendar($user_id,
$name,
smart_addslashes($_POST['calendar_start_hour']),
smart_addslashes($_POST['calendar_end_hour']),
smart_addslashes($_POST['background']),
$public,
smart_addslashes($_POST['group_id']),
smart_addslashes($_POST['time_interval'])))
{
if ($_POST['close'] == 'true')
{
header('Location: '.$return_to);
exit();
}
}else
{
$feedback = $strSaveError;
}
}
}
}else
{
$feedback = $error_missing_field;
}
break;
}
if ($calendar_id > 0)
{
$calendar = $cal->get_calendar($calendar_id);
$title = $calendar['name'];
//if(!$GO_SECURITY->has_permission($GO_SECURITY->user_id, $calendar['acl_write']))
if($calendar['user_id']!=$GO_SECURITY->user_id && !$GO_MODULES->write_permission)
{
header('Location: '.$GO_CONFIG->host.'error_docs/403.php');
exit();
}
}else
{
$calendar['user_id'] = $GO_SECURITY->user_id;
$calendar['start_hour'] = isset($_POST['calendar_start_hour']) ? $_POST['calendar_start_hour'] : '07';
$calendar['end_hour'] = isset($_POST['calendar_end_hour']) ? $_POST['calendar_end_hour'] : '20';
$calendar['name'] = isset($_POST['name']) ? smart_stripslashes($_POST['name']) : '';
$calendar['background'] = 'FFFFCC';
$calendar['group_id'] = isset($_REQUEST['group_id']) ? smart_stripslashes($_REQUEST['group_id']) : '1';
$calendar['time_interval'] = isset($_REQUEST['time_interval']) ? smart_stripslashes($_REQUEST['time_interval']) : '1800';
$title = $sc_new_calendar;
}
$tabstrip = new tabstrip('calendar_strip', $title);
$tabstrip->set_attribute('style','width:100%');
$tabstrip->set_return_to(htmlspecialchars($return_to));
if ($calendar_id > 0)
{
$tabstrip->add_tab('calendar', $strProperties);
if($cal->get_backgrounds())
{
$tabstrip->add_tab('calendar_backgrounds', $cal_background_colors);
}
$tabstrip->add_tab('import', $cal_import);
$group = $cal->get_group($calendar['group_id']);
if($GO_MODULES->write_permission || $GO_SECURITY->has_permission($GO_SECURITY->user_id, $group['acl_write']))
{
$tabstrip->add_tab('read_permissions', $strReadRights);
$tabstrip->add_tab('write_permissions', $strWriteRights);
}
}
switch ($tabstrip->get_active_tab_id())
{
case 'calendar_backgrounds':
load_control('datatable');
$GO_HEADER['head'] = datatable::get_header();
break;
case 'calendar':
$GO_HEADER['head'] = color_selector::get_header();
$GO_HEADER['body_arguments'] = 'onload="javascript:document.calendar_form.name.focus();"';
break;
case '':
$GO_HEADER['head'] = color_selector::get_header();
$GO_HEADER['body_arguments'] = 'onload="javascript:document.calendar_form.name.focus();"';
break;
}
require_once($GO_THEME->theme_path.'header.inc');
$form = new form('calendar_form');
$form->set_attribute('enctype','multipart/form-data');
$form->add_html_element(new input('hidden', 'calendar_id',$calendar_id,false));
$form->add_html_element(new input('hidden', 'task','',false));
$form->add_html_element(new input('hidden', 'close','false',false));
$form->add_html_element(new input('hidden', 'return_to',$return_to,false));
switch($tabstrip->get_active_tab_id())
{
case 'read_permissions':
$tabstrip->innerHTML .= get_acl($calendar['acl_read']);
$tabstrip->add_html_element(new button($cmdClose,"javascript:document.location='".htmlspecialchars($return_to)."'"));
break;
case 'write_permissions':
$tabstrip->innerHTML .= get_acl($calendar['acl_write']);
$tabstrip->add_html_element(new button($cmdClose,"javascript:document.location='".htmlspecialchars($return_to)."'"));
break;
case 'import':
require_once('import.inc');
break;
case 'calendar_backgrounds':
$datatable = new datatable('calendar_backgrounds');
if($datatable->task=='delete')
{
foreach($datatable->selected as $calendar_background_id)
{
$cal->delete_calendar_background($calendar_background_id);
}
}
$menu = new button_menu();
$menu->add_button('add', $cmdAdd, 'calendar_background.php?calendar_id='.$calendar_id.'&return_to='.urlencode($link_back));
$menu->add_button('delete_big', $cmdDelete, $datatable->get_delete_handler());
$form->add_html_element($menu);
$th =new table_heading($strName);
$th->set_attribute('colspan','2');
$datatable->add_column($th);
$datatable->add_column(new table_heading($cal_weekday));
$datatable->add_column(new table_heading($sc_start_time));
$datatable->add_column(new table_heading($sc_end_time));
if($cal->get_calendar_backgrounds($calendar_id))
{
while($cal->next_record())
{
$row = new table_row($cal->f('id'));
$row->set_attribute('ondblclick', "javascript:document.location='calendar_background.php?calendar_background_id=".$cal->f('id')."&return_to=".urlencode($link_back)."';");
$div = new html_element('div', '');
$div->set_attribute('style','margin:2px;width:8px;height:8px;border:1px solid black;background-color:#'.$cal->f('color'));
$cell = new table_cell($div->get_html());
$cell->set_attribute('style','width:8px;');
$row->add_cell($cell);
$row->add_cell(new table_cell($cal->f('name')));
$row->add_cell(new table_cell($full_days[$cal->f('weekday')]));
$row->add_cell(new table_cell(gmdate($_SESSION['GO_SESSION']['time_format'], $cal->f('start_time'))));
$row->add_cell(new table_cell(gmdate($_SESSION['GO_SESSION']['time_format'], $cal->f('end_time'))));
$datatable->add_row($row);
}
}else
{
$row = new table_row();
$cell = new table_cell($strNoItems);
$cell->set_attribute('colspan','99');
$row->add_cell($cell);
$datatable->add_row($row);
}
$tabstrip->add_html_element($datatable);
break;
default:
if(isset($feedback))
{
$p = new html_element('p',$feedback);
$p->set_attribute('class','Error');
$tabstrip->add_html_element($p);
}
$table = new table();
if($GO_SECURITY->has_admin_permission($GO_SECURITY->user_id))
{
load_control('user_autocomplete');
$user_autocomplete=new user_autocomplete('user_id',$calendar['user_id'],'0',$link_back);
$row = new table_row();
$row->add_cell(new table_cell($strOwner.':'));
$row->add_cell(new table_cell($user_autocomplete->get_html()));
$table->add_row($row);
}else
{
$form->add_html_element(new input('hidden', 'user_id', $calendar['user_id']));
}
if($calendar['group_id'] == 0)
{
$form->add_html_element(new input('hidden','group_id','0'));
}else
{
$row = new table_row();
$row->add_cell(new table_cell($cal_group.': '));
$select = new select('group_id', $calendar['group_id']);
$cal->get_writable_resource_groups($GO_SECURITY->user_id);
while($cal->next_record())
{
$select->add_value($cal->f('id'), $cal->f('name'));
}
if(!$select->is_in_select($calendar['group_id']) && $resource_group=$cal->get_group($calendar['group_id']))
{
$select->add_value($resource_group['id'], $resource_group['name']);
}
$row->add_cell(new table_cell($select->get_html()));
$table->add_row($row);
}
$row = new table_row();
$row->add_cell(new table_cell($strName.'*: '));
$input = new input('text', 'name',$calendar['name']);
$input->set_attribute('maxlength','100');
$input->set_attribute('style', 'width:300px');
$row->add_cell(new table_cell($input->get_html()));
$table->add_row($row);
$row = new table_row();
$row->add_cell(new table_cell($sc_show_hours.': '));
$select1 = new select('calendar_start_hour', $calendar['start_hour']);
$select1->add_arrays($hours, $hours);
$select2 = new select('calendar_end_hour', $calendar['end_hour']);
$select2->add_arrays($hours, $hours);
$row->add_cell(new table_cell($select1->get_html().$sc_to.$select2->get_html()));
$table->add_row($row);
$row = new table_row();
$row->add_cell(new table_cell($cal_scale.': '));
$select = new select('time_interval', $calendar['time_interval']);
$select->add_value('900', '15 '.$sc_mins);
$select->add_value('1800', '30 '.$sc_mins);
$select->add_value('3600', '1 '.$sc_hour);
$row->add_cell(new table_cell($select->get_html()));
$table->add_row($row);
$row = new table_row();
$row->add_cell(new table_cell($sc_background.': '));
$color_selector = new color_selector('background','background', $calendar['background'], 'calendar_form');
$row->add_cell(new table_cell($color_selector->get_html()));
$table->add_row($row);
if(file_exists('public.php'))
{
$row = new table_row();
$row->add_cell(new table_cell($cal_public_calendar.': '));
$checkbox = new checkbox('public','public','1', '', $calendar['public']);
$row->add_cell(new table_cell($checkbox->get_html()));
$table->add_row($row);
$row = new table_row();
$row->add_cell(new table_cell($cal_public_url.': '));
$link = new hyperlink($GO_MODULES->modules['calendar']['full_url'].'public.php?calendar_id='.$calendar_id, $GO_MODULES->modules['calendar']['full_url'].'public.php?calendar_id='.$calendar_id);
$link->set_attribute('class','normal');
$link->set_attribute('target','_blank');
$row->add_cell(new table_cell($link->get_html()));
$table->add_row($row);
}
$tabstrip->add_html_element($table);
$tabstrip->add_html_element(new button($cmdOk,"javascript:document.forms[0].close.value='true';document.forms[0].task.value='save';document.forms[0].submit()"));
$tabstrip->add_html_element(new button($cmdApply,"javascript:document.forms[0].task.value='save';document.forms[0].submit()"));
if ($calendar_id > 0)
{
$tabstrip->add_html_element(new button($cal_export, "document.location='export.php?calendar_id=$calendar_id';"));
}
$tabstrip->add_html_element(new button($cmdClose,"javascript:document.location='".htmlspecialchars($return_to)."'"));
break;
}
$form->add_html_element($tabstrip);
echo $form->get_html();
?>
<script type="text/javascript" language="javascript">
<!--
function upload()
{
document.forms[0].task.value="import";
var status = null;
if (status = get_object("status"))
{
status.innerHTML = "<?php echo $cal_please_wait; ?>";
}
document.forms[0].submit();
}
-->
</script>
<?php
require_once($GO_THEME->theme_path.'footer.inc');
Enable javascript to submit You have javascript disabled. You will not be able to edit any code.
Here you find the average performance (time & memory) of each version. A grayed out version indicates it didn't complete successfully (based on exit-code).
Version System time (s) User time (s) Memory (MiB) 8.3.4 0.013 0.010 19.04 8.3.3 0.012 0.003 19.34 8.3.2 0.003 0.005 20.60 8.3.1 0.008 0.000 22.15 8.3.0 0.003 0.006 19.38 8.2.17 0.018 0.004 19.34 8.2.16 0.006 0.015 22.96 8.2.15 0.005 0.003 24.18 8.2.14 0.003 0.006 24.66 8.2.13 0.003 0.005 26.16 8.2.12 0.005 0.003 19.23 8.2.11 0.009 0.000 19.49 8.2.10 0.006 0.006 17.88 8.2.9 0.003 0.006 19.30 8.2.8 0.009 0.000 17.97 8.2.7 0.003 0.006 18.00 8.2.6 0.003 0.006 18.05 8.2.5 0.009 0.000 18.07 8.2.4 0.006 0.003 20.07 8.2.3 0.008 0.000 18.52 8.2.2 0.004 0.004 18.11 8.2.1 0.003 0.006 18.28 8.2.0 0.003 0.005 18.05 8.1.27 0.006 0.003 19.16 8.1.26 0.005 0.003 26.35 8.1.25 0.004 0.004 28.09 8.1.24 0.006 0.003 22.42 8.1.23 0.004 0.008 18.16 8.1.22 0.000 0.008 17.91 8.1.21 0.006 0.003 18.77 8.1.20 0.003 0.007 17.60 8.1.19 0.004 0.004 17.38 8.1.18 0.003 0.006 18.10 8.1.17 0.000 0.008 19.03 8.1.16 0.003 0.005 22.34 8.1.15 0.003 0.006 19.18 8.1.14 0.003 0.006 17.63 8.1.13 0.000 0.008 18.07 8.1.12 0.010 0.000 17.70 8.1.11 0.000 0.008 17.71 8.1.10 0.000 0.008 17.66 8.1.9 0.008 0.000 17.59 8.1.8 0.005 0.003 17.71 8.1.7 0.004 0.004 17.68 8.1.6 0.013 0.000 17.82 8.1.5 0.009 0.000 17.83 8.1.4 0.000 0.008 17.71 8.1.3 0.006 0.003 17.95 8.1.2 0.000 0.009 17.97 8.1.1 0.000 0.009 17.89 8.1.0 0.007 0.004 17.73 8.0.30 0.004 0.004 18.77 8.0.29 0.003 0.006 17.25 8.0.28 0.006 0.003 18.82 8.0.27 0.000 0.008 17.74 8.0.26 0.003 0.006 17.64 8.0.25 0.000 0.008 17.30 8.0.24 0.000 0.008 17.36 8.0.23 0.004 0.004 17.34 8.0.22 0.003 0.006 17.27 8.0.21 0.006 0.003 17.28 8.0.20 0.004 0.004 17.30 8.0.19 0.003 0.006 17.41 8.0.18 0.004 0.004 17.35 8.0.17 0.000 0.008 17.30 8.0.16 0.003 0.006 17.36 8.0.15 0.000 0.008 17.30 8.0.14 0.003 0.006 17.19 8.0.13 0.006 0.004 13.79 8.0.12 0.004 0.004 17.32 8.0.11 0.000 0.008 17.20 8.0.10 0.004 0.004 17.39 8.0.9 0.008 0.000 17.12 8.0.8 0.013 0.003 17.39 8.0.7 0.008 0.000 17.44 8.0.6 0.000 0.008 17.29 8.0.5 0.005 0.003 17.18 8.0.3 0.020 0.009 17.40 8.0.2 0.010 0.009 17.41 8.0.1 0.003 0.005 17.22 8.0.0 0.009 0.010 17.19 7.4.33 0.003 0.003 15.10 7.4.32 0.005 0.003 16.86 7.4.30 0.004 0.004 16.71 7.4.29 0.004 0.004 16.86 7.4.28 0.006 0.003 16.95 7.4.27 0.005 0.002 16.93 7.4.26 0.004 0.004 16.87 7.4.25 0.004 0.004 16.70 7.4.24 0.000 0.008 16.92 7.4.23 0.003 0.005 16.73 7.4.22 0.015 0.008 16.83 7.4.21 0.003 0.014 16.75 7.4.20 0.000 0.007 16.89 7.4.16 0.004 0.014 16.95 7.4.15 0.014 0.006 17.40 7.4.14 0.010 0.010 17.86 7.4.13 0.009 0.015 16.77 7.4.12 0.012 0.006 16.76 7.4.11 0.013 0.006 16.80 7.4.10 0.013 0.006 16.71 7.4.9 0.006 0.012 16.74 7.4.8 0.017 0.011 19.39 7.4.7 0.004 0.014 16.92 7.4.6 0.015 0.003 16.75 7.4.5 0.003 0.006 16.89 7.4.4 0.013 0.003 16.67 7.4.3 0.010 0.010 16.76 7.4.0 0.000 0.013 14.91 7.3.33 0.003 0.003 13.42 7.3.32 0.011 0.003 13.46 7.3.31 0.000 0.007 16.63 7.3.30 0.007 0.000 16.40 7.3.29 0.009 0.005 16.63 7.3.28 0.008 0.009 16.54 7.3.27 0.006 0.013 17.40 7.3.26 0.007 0.011 16.57 7.3.25 0.015 0.004 16.62 7.3.24 0.009 0.009 16.56 7.3.23 0.016 0.009 16.59 7.3.21 0.012 0.006 16.55 7.3.20 0.008 0.008 19.39 7.3.19 0.005 0.011 16.64 7.3.18 0.007 0.011 16.54 7.3.17 0.013 0.010 16.59 7.3.16 0.016 0.007 16.57 7.2.33 0.011 0.008 16.61 7.2.32 0.009 0.009 16.79 7.2.31 0.006 0.012 16.60 7.2.30 0.019 0.003 16.77 7.2.29 0.015 0.003 16.70 7.2.6 0.007 0.007 16.86 7.2.0 0.006 0.006 19.42 7.1.20 0.008 0.004 15.67 7.1.10 0.003 0.008 17.77 7.1.7 0.006 0.003 17.06 7.1.6 0.000 0.017 19.50 7.1.5 0.010 0.016 16.80 7.1.0 0.000 0.080 22.45 7.0.20 0.010 0.007 15.17 7.0.14 0.000 0.070 21.95 7.0.10 0.007 0.037 20.27 7.0.9 0.010 0.037 20.16 7.0.8 0.003 0.033 20.17 7.0.7 0.003 0.040 20.16 7.0.6 0.017 0.040 20.24 7.0.5 0.000 0.073 20.54 7.0.4 0.007 0.053 20.15 7.0.3 0.003 0.067 20.05 7.0.2 0.003 0.050 20.15 7.0.1 0.010 0.073 20.17 7.0.0 0.010 0.050 20.14 5.6.28 0.007 0.073 21.34 5.6.25 0.003 0.040 20.71 5.6.24 0.007 0.043 20.93 5.6.23 0.003 0.040 20.88 5.6.22 0.000 0.043 20.77 5.6.21 0.003 0.040 20.68 5.6.20 0.003 0.053 21.17 5.6.19 0.007 0.037 21.23 5.6.18 0.010 0.080 21.27 5.6.17 0.003 0.040 21.38 5.6.16 0.013 0.077 21.35 5.6.15 0.007 0.043 21.14 5.6.14 0.020 0.070 21.32 5.6.13 0.003 0.083 21.36 5.6.12 0.010 0.050 21.14 5.6.11 0.007 0.077 21.21 5.6.10 0.017 0.063 21.14 5.6.9 0.007 0.053 21.21 5.6.8 0.003 0.077 20.73 5.6.7 0.010 0.047 20.63 5.6.6 0.007 0.040 20.59 5.6.5 0.003 0.050 20.68 5.6.4 0.013 0.073 20.64 5.6.3 0.003 0.073 20.53 5.6.2 0.007 0.043 20.62 5.6.1 0.007 0.063 20.59 5.6.0 0.010 0.070 20.57 5.5.38 0.000 0.047 20.66 5.5.37 0.003 0.043 20.72 5.5.36 0.010 0.037 20.77 5.5.35 0.000 0.037 20.67 5.5.34 0.007 0.033 21.12 5.5.33 0.007 0.060 21.09 5.5.32 0.007 0.073 21.01 5.5.31 0.003 0.040 21.02 5.5.30 0.013 0.080 21.04 5.5.29 0.013 0.033 21.14 5.5.28 0.003 0.057 21.13 5.5.27 0.007 0.047 20.96 5.5.26 0.017 0.063 21.03 5.5.25 0.010 0.073 20.94 5.5.24 0.013 0.033 20.51 5.5.23 0.010 0.083 20.32 5.5.22 0.007 0.050 20.45 5.5.21 0.013 0.063 20.43 5.5.20 0.013 0.067 20.48 5.5.19 0.007 0.047 20.44 5.5.18 0.013 0.067 20.48 5.5.16 0.007 0.063 20.36 5.5.15 0.020 0.050 20.46 5.5.14 0.010 0.073 20.48 5.5.13 0.003 0.063 20.36 5.5.12 0.010 0.073 20.41 5.5.11 0.003 0.060 20.34 5.5.10 0.010 0.070 20.32 5.5.9 0.000 0.080 20.33 5.5.8 0.003 0.037 20.27 5.5.7 0.000 0.057 20.26 5.5.6 0.003 0.080 20.11 5.5.5 0.003 0.050 20.36 5.5.4 0.017 0.033 20.26 5.5.3 0.000 0.070 20.24 5.5.2 0.010 0.040 20.29 5.5.1 0.017 0.040 20.29 5.5.0 0.007 0.060 20.25 5.4.45 0.000 0.067 19.55 5.4.44 0.013 0.077 19.47 5.4.43 0.007 0.083 19.58 5.4.42 0.010 0.073 19.41 5.4.41 0.003 0.073 19.40 5.4.40 0.007 0.073 19.19 5.4.39 0.010 0.077 19.10 5.4.38 0.010 0.077 18.96 5.4.37 0.013 0.063 19.19 5.4.36 0.010 0.057 19.04 5.4.35 0.010 0.067 18.97 5.4.34 0.013 0.037 19.11 5.4.32 0.003 0.040 19.11 5.4.31 0.013 0.030 19.29 5.4.30 0.003 0.080 19.09 5.4.29 0.013 0.037 18.92 5.4.28 0.007 0.050 19.04 5.4.27 0.003 0.073 19.04 5.4.26 0.010 0.070 19.11 5.4.25 0.013 0.070 19.18 5.4.24 0.013 0.060 19.25 5.4.23 0.013 0.057 19.14 5.4.22 0.013 0.067 19.09 5.4.21 0.007 0.070 19.09 5.4.20 0.003 0.080 19.25 5.4.19 0.003 0.073 19.28 5.4.18 0.007 0.043 19.18 5.4.17 0.010 0.033 19.03 5.4.16 0.010 0.067 19.21 5.4.15 0.010 0.047 19.02 5.4.14 0.007 0.043 16.55 5.4.13 0.010 0.063 16.29 5.4.12 0.003 0.053 16.57 5.4.11 0.007 0.057 16.36 5.4.10 0.013 0.067 16.46 5.4.9 0.010 0.060 16.44 5.4.8 0.007 0.040 16.44 5.4.7 0.013 0.050 16.40 5.4.6 0.003 0.067 16.61 5.4.5 0.010 0.050 16.48 5.4.4 0.010 0.050 16.43 5.4.3 0.003 0.080 16.39 5.4.2 0.003 0.053 16.39 5.4.1 0.013 0.043 16.60 5.4.0 0.003 0.043 15.98
preferences:dark mode live preview
38.21 ms | 400 KiB | 5 Q