Initial commit

This commit is contained in:
Manuel Cillero 2020-04-10 12:48:19 +02:00
commit f4bfb0e367
71 changed files with 10399 additions and 0 deletions

357
Dam/Application.pm Normal file
View file

@ -0,0 +1,357 @@
=head1 NAME
Dam::Application
=head1 DECRIPTION
Initialization of the default global variables and definition of the entry point
for the predefined and customized run modes created using the Dam framework.
=cut
use strict;
use warnings;
use utf8;
package Dam::Application;
use base 'CGI::Application';
use CGI qw(-utf8);
use Authen::Simple::ActiveDirectory;
use Crypt::Tea_JS;
use String::Random qw(random_string);
use Date::Calc qw(Today_and_Now);
use Dam::Util;
use Dam::Debug;
use Dam::Database;
use Dam::DamLogic qw(
is_report is_download Show__error_403 Show__about Show
Session__new Session__flush Session__close
User__is_logged_in User__access
cgiapp_param cgiapp_cookie cgiapp_header_add cgiapp_header_props
_t package_config tmpl_core
);
use Dam::Var;
my %CURRENT_PACKAGE = ();
sub pre__session_user_params {
my ($CGIAPP, $uid) = @_;
return ();
}
sub pre__load_stylesheets {
}
sub pre__load_javascripts {
}
sub setup {
my $CGIAPP = shift;
RESERVED(CGIAPP => $CGIAPP);
# Connect to database:
RESERVED(DBH => database_connect(
DB_DSN => CONFIG('DB_DSN'),
DB_USER => CONFIG('DB_USER'),
DB_PASSWORD => CONFIG('DB_PASSWORD')
));
my @run_modes = (
'APP_login',
'APP_confirm',
'RUN_home',
'RUN_report',
'RUN_error403',
'RUN_close'
);
if (User__is_logged_in()) {
my %ROUTES = %{CONFIG('REF_ROUTES')};
my @user_access = User__access();
foreach my $menu (sort keys(%ROUTES)) {
__setup_run_modes(\@run_modes, \%{$ROUTES{$menu}{OPTIONS}}, \@user_access);
}
}
$CGIAPP->run_modes(\@run_modes);
$CGIAPP->start_mode('RUN_home');
# The template directory is initialized:
$CGIAPP->tmpl_path(CONFIG('DIR_TEMPLATES'));
# Enable file uploads:
$CGIAPP::DISABLE_UPLOADS = 0;
$CGIAPP::POST_SIZE = CONFIG('UPLOAD_MAX_FILESIZE');
}
sub teardown {
# Discconnect from database:
database_disconnect();
}
sub cgiapp_prerun {
my ($CGIAPP, $run_mode) = @_;
my $binmode = 1;
cgiapp_header_props(
-charset => 'UTF-8'
);
if (!is_eq(substr($run_mode, 0, 4), 'APP_')) {
if (User__is_logged_in()) {
if (!is_eq(substr($run_mode, 0, 4), 'RUN_')) {
# 1. Get the user access permissions:
my @user_access = User__access();
# 2. Debugging mode is disabled if user is not a developer:
CONFIG('DEBUG_MODE' => 0) if !in_array(0, \@user_access);
# 3. Load report:
info($run_mode);
my %ROUTES = %{CONFIG('REF_ROUTES')};
foreach my $menu (sort (%ROUTES)) {
%CURRENT_PACKAGE = __search_run_mode($run_mode, \%{$ROUTES{$menu}{OPTIONS}});
if (%CURRENT_PACKAGE) {
$CURRENT_PACKAGE{ID} = $ROUTES{$menu}{ID};
RESERVED('REF_CURRENT_PACKAGE' => \%CURRENT_PACKAGE);
last;
}
}
# 4. Check if user has access permission to the current report:
if (!defined($CURRENT_PACKAGE{ACCESS}) || match_arrays(\@user_access, $CURRENT_PACKAGE{ACCESS})) {
# 5. Check if it's a download:
if (is_download()) {
my ($download_mode, $filename_extension) = split(',', cgiapp_param('dm'));
my $package = $run_mode;
my @packages = split('::', $run_mode);
if (scalar(@packages) > 1) {
$package = pop(@packages);
$package = pop(@packages) if is_eq($package, $CURRENT_PACKAGE{RUN});
}
my $filename = strval($package, '_', $download_mode, '-', sprintf("%04d%02d%02d_%02d%02d%02d", Today_and_Now()), '.', $filename_extension);
cgiapp_header_props(
-type => 'application/x-download',
-Content_Disposition => strval('attachment; filename="', $filename, '"')
);
$binmode = 0;
}
elsif (!is_report()) {
$CGIAPP->prerun_mode('RUN_report');
}
}
else {
$CGIAPP->prerun_mode('RUN_error403');
}
}
}
else {
$CGIAPP->prerun_mode('APP_login');
}
}
binmode STDOUT, ":utf8" if $binmode;
}
sub cgiapp_postrun {
DROP_TEMP_TABLES(); # Drop temporal database tables
Session__flush(); # Synchronize the session with the database
}
sub APP_login {
return __login();
}
sub APP_confirm {
my $user = lc cgiapp_param('user');
my $pass = decrypt(cgiapp_param('pass'), cgiapp_param('key'));
# Check if the user exists (according to input parameters):
my $user_db = QUERY(SELECT(
FIELDS => 'user_uid, user_password, user_firstname, user_name, user_access, user_active',
FROM => 'users',
WHERE => COMPARE_STR('BINARY user_login', '=', $user)
));
# User not registered. Request the login again:
return __login($user, 1) if $user_db->rows == 0;
my @user_data = $user_db->fetchrow_array();
# Non-active user. Show warning message:
return __login($user, 2, _t('User not active!'), _t('Consult with your systems manager to activate your user')) if $user_data[5] eq 0;
# Check if user is in the Active Directory:
my $ad = Authen::Simple::ActiveDirectory->new(host => CONFIG('LDAP_DOMAIN'), principal => CONFIG('LDAP_DOMAIN'), timeout => 20);
if (!$ad->authenticate($user, $pass)) {
# Unidentified user. Or is it a local user:
my $passcrypt = __crypt_password($pass);
# Unidentified user. Request the login again:
return __login($user, 3) if !defined($user_data[1]) || $user_data[1] ne $passcrypt;
}
# Validated user. Login with user settings:
Session__new($user_data[0], $user_data[2], $user_data[3], $user_data[4], RESERVED('CGIAPP')->pre__session_user_params($user_data[0]));
# Show home page:
return RUN_home();
}
sub RUN_home {
return Show__about();
}
sub RUN_report {
return Show();
}
sub RUN_error403 {
return Show__error_403();
}
sub RUN_close {
Session__close(); # Delete the user session
return __login(); # Return to the login form
}
# PRIVATE FUNCTIONS:
sub __setup_run_modes {
my ($run_modes_ref, $options_ref, $user_access_ref) = @_;
my $superuser = in_array(0, $user_access_ref);
foreach my $option (sort keys(%$options_ref)) {
next if !is_eq(ref($$options_ref{$option}), 'HASH') && is_eq($$options_ref{$option}, _DIVIDER_);
if (defined($$options_ref{$option}{OPTIONS})) {
__setup_run_modes($run_modes_ref, \%{$$options_ref{$option}{OPTIONS}}, $user_access_ref);
}
else {
next if is_empty($$options_ref{$option}{PACKAGE}) && is_empty($$options_ref{$option}{RUN});
next if defined($$options_ref{$option}{ENABLED}) && $$options_ref{$option}{ENABLED} == 0;
next unless $superuser || (defined($$options_ref{$option}{ACCESS}) && match_arrays($user_access_ref, $$options_ref{$option}{ACCESS}));
my $run_mode = strval_trio($$options_ref{$option}{PACKAGE}, '::', defined($$options_ref{$option}{RUN}) ? $$options_ref{$option}{RUN} : 'Run');
fatal('Duplicated "', $run_mode, '" run mode.') if in_array($run_mode, $run_modes_ref);
push(@$run_modes_ref, $run_mode);
}
}
}
sub __search_run_mode {
my ($run_mode, $options_ref) = @_;
foreach my $option (sort keys(%$options_ref)) {
next if !is_eq(ref($$options_ref{$option}), 'HASH') && is_eq($$options_ref{$option}, _DIVIDER_);
if (defined($$options_ref{$option}{OPTIONS})) {
my %search_option = __search_run_mode($run_mode, \%{$$options_ref{$option}{OPTIONS}});
return %search_option if %search_option;
}
else {
next if is_empty($$options_ref{$option}{PACKAGE}) && is_empty($$options_ref{$option}{RUN});
next if !is_eq($run_mode, strval_trio($$options_ref{$option}{PACKAGE}, '::', defined($$options_ref{$option}{RUN}) ? $$options_ref{$option}{RUN} : 'Run'));
return package_config(\%{$$options_ref{$option}});
}
}
return ();
}
sub __login {
my ($login, $error, $error_title, $error_message) = @_;
cgiapp_header_add(-cookie => cgiapp_cookie(CGISESSID => ''));
my $tmpl_login = tmpl_core('Login',
APP_NAME => CONFIG('APP_NAME'),
KEY => random_string('ssssssssssssssssssssssssssssss'),
LOGIN => $login,
CRYPT_TEA => tea_in_javascript(),
T_USERNAME => _t('Username'),
T_PASSWORD => _t('Password'),
T_LOGIN => _t('Login')
);
if (defined($error)) {
$tmpl_login->param(
ERROR => $error,
ERROR_TITLE => defined($error_title) ? $error_title : _t('Access error!'),
ERROR_MESSAGE => defined($error_message) ? $error_message : _t('Verify username and retype password')
);
}
return Show(DISPLAY => 'PAGE', TITLE => 'Login', TEMPLATE => $tmpl_login);
}
sub __crypt_password {
my $password = shift;
return length($password) ? crypt($password, substr(crypt($password, 'CRTSGR'), -2, 2)) : '';
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,124 @@
=head1 NAME
Dam::Components::Actions::Download
=head1 SYNOPSIS
my $download_mode = Component__Get(ACTION_DOWNLOAD, ['csv']);
=head1 DESCRIPTION
Action to execute a download.
=head1 ARGUMENTS
(
TYPE => 'Download',
ID => 'csv' (default),
LABEL => 'CSV' (default),
TOOLTIP => 'Download the current report in CSV format' (default),
ICON => 'download-alt' (default),
MODE_EXT => 'CSV' (default),
FILE_EXT => 'csv' (default)
)
=cut
package Dam::Components::Actions::Download;
use Exporter qw(import);
our @EXPORT = qw(
Action__html Action__js
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'csv';
sub __arguments {
my $arg_ref = shift;
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
LABEL => [ ARG_DEFAULT, 'CSV' ],
TOOLTIP => [ ARG_DEFAULT, _t('Download current report in CSV format') ],
ICON => [ ARG_DEFAULT, 'download-alt' ],
MODE_EXT => [ ARG_DEFAULT, 'CSV' ],
FILE_EXT => [ ARG_DEFAULT, 'csv' ]
);
}
sub Action__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
return is_report() ? strval('
<button type="button" class="btn btn-info input-lg" id="', $$arg_ref{ID}, '" data-toggle="tooltip" title="', $$arg_ref{TOOLTIP}, '"><span class="glyphicon glyphicon-', $$arg_ref{ICON}, '"></span> ', $$arg_ref{LABEL}, '</button>
') : '';
}
sub Action__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
return is_report() ? strval('
$("#', $$arg_ref{ID}, '").click(function(){
$("#xt").val(3);
$("#dm").val("', $$arg_ref{MODE_EXT}, ',', $$arg_ref{FILE_EXT}, '");
$("#submit").click();
});
') : '';
}
sub Get {
my ($download_mode, $filename_extension) = split(',', cgiapp_param('dm'));
return is_download() ? $download_mode : '';
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,107 @@
=head1 NAME
App::api::actions::Action_Print
=head1 DESCRIPTION
Action to print.
=head1 ARGUMENTS
(
TYPE => 'Print',
ID => 'print' (default),
LABEL => 'Print' (default)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Actions::Print;
use Exporter qw(import);
our @EXPORT = qw(
Action__html Action__js
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'print';
sub __arguments {
my $arg_ref = shift;
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
LABEL => [ ARG_DEFAULT, _t('Print') ]
);
}
sub Action__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
return is_report() ? strval('
<button type="button" class="btn btn-success input-lg" id="', $$arg_ref{ID},'"><span class="glyphicon glyphicon-print"></span> ', $$arg_ref{LABEL},'</button>
') : '';
}
sub Action__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
return is_report() ? strval('
$("#', $$arg_ref{ID},'").click(function(){
window.print();
});
') : '';
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,122 @@
=head1 NAME
Dam::Components::Actions::Run
=head1 DESCRIPTION
Action to run a report.
=head1 ARGUMENTS
(
TYPE => 'Run',
ID => 'submit' (default),
LABEL => 'Run' (default)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Actions::Run;
use Exporter qw(import);
our @EXPORT = qw(
Action__html Action__js
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'submit';
sub __arguments {
my $arg_ref = shift;
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
LABEL => [ ARG_DEFAULT, _t('Run') ]
);
}
sub Action__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
return strval('
<button type="submit" class="btn btn-primary input-lg" id="', $$arg_ref{ID}, '"><span class="glyphicon glyphicon-repeat"></span> ', $$arg_ref{LABEL},'</button>
');
}
sub Action__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
# Required javascripts:
Component__Header(ADD => 'JS', RESOURCE => '/dam/js/spin.min.js', VERSION => '2.3.2' );
return strval('
$(function(){
var middle = Math.floor($(window).height() / 2) + "px";
var spin = { lines: 10, length: 28, width: 25, radius: 40, scale: 0.5, corners: 1, color: "#000", opacity: 0.3, rotate: 0, direction: 1, speed: 1, trail: 60, fps: 20, zIndex: 2e9, className: "spinner", top: middle, left: "50%", shadow: false, hwaccel: false, position: "absolute" }
$("#filter").on("submit", function(e) {
if ($("#nv").val() != 1 && $("#filter").valid()) {
if ($("#xt").val() == 2) $("#xt").val(1);
if ($("#xt").val() == 3) $("#xt").val(2);
if ($("#xt").val() < 2) {
var spinner = new Spinner(spin).spin(document.getElementById("loading"));
$("#loading").show();
}
}
$("#nv").val(0);
});
});
');
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,216 @@
=head1 NAME
Dam::Components::Actions::Sort
=head1 SYNOPSIS
my $orderby = Component__Get(ACTION_SORT);
=head1 DESCRIPTION
Action to order a list by columns.
=head1 ARGUMENTS
(
TYPE => 'Sort',
COLUMNS => { 'col1' => 'Column 1', 'col2' => 'Column 2' } (default),
DEFAULT => 'col1' (default valus is undef)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Actions::Sort;
use Exporter qw(import);
our @EXPORT = qw(
Action__html Action__js
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'sort';
sub __arguments {
my $arg_ref = shift;
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
COLUMNS => [ ARG_DEFAULT, { 'col1' => 'Column 1', 'col2' => 'Column 2' } ],
DEFAULT => [ ARG_OPTIONAL ]
);
}
sub Action__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $default = undef;
my %list_columns = %{$$arg_ref{COLUMNS}};
if (!is_empty($$arg_ref{DEFAULT})) {
my @default = split(' ', $$arg_ref{DEFAULT});
if (defined($list_columns{$default[0]}) && !defined($default[2])) {
my $dir = in_array(uc($default[1]), 'ASC', 'DESC') ? uc($default[1]) : 'ASC';
$default = strval($default[0], ' ', $dir);
}
}
# Order value:
my $orderby_value = cgiapp_param('orderby');
$orderby_value = $default if is_empty($orderby_value) && defined($default);
if (defined($orderby_value)) {
my @orderby = split(' ', $orderby_value);
if (defined($orderby[0]) && defined($list_columns{$orderby[0]})) {
my $orderby = $list_columns{$orderby[0]};
if (defined($orderby[1])) {
$orderby = strval($orderby, is_eq($orderby[1], 'ASC') ? strval(' (', _t('ascendant'), ')') : is_eq($orderby[1], 'DESC') ? strval(' (', _t('descendent'), ')') : '');
}
push(@{$info_ref}, { DATA => _t('Order by'), VALUE => $orderby });
}
else {
$orderby_value = '';
}
}
else {
$orderby_value = '';
}
return strval('
<input type="hidden" name="orderby" id="orderby" value="', $orderby_value, '" />
');
}
sub Action__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
my $default = undef;
my %list_columns = %{$$arg_ref{COLUMNS}};
if (!is_empty($$arg_ref{DEFAULT})) {
my @default = split(' ', $$arg_ref{DEFAULT});
if (defined($list_columns{$default[0]}) && !defined($default[2])) {
my $dir = in_array(uc($default[1]), 'ASC', 'DESC') ? uc($default[1]) : 'ASC';
$default = strval($default[0], ' ', $dir);
}
}
my $columns_id = '';
my $columns_name = '';
foreach my $column (keys(%list_columns)) {
$columns_id .= strval('#', $column, ',');
$columns_name .= strval($list_columns{$column}, ',');
}
chop($columns_id);
chop($columns_name);
return strval('
$(function(){
var current_orderby = $("#orderby").val().split(" ");
var columns_id = ["', strval_join('","', split(',', $columns_id)), '"];
var columns_name = ["', strval_join('","', split(',', $columns_name)), '"];
columns_id.forEach(function(value,index,array){
var glypho = "sort";
if (current_orderby[0] == value.substring(1)) {
if (current_orderby[1] == "ASC") {
glypho = "triangle-bottom";
}
else if (current_orderby[1] == "DESC") {
glypho = "triangle-top";
}
}
$(value).css("white-space","nowrap");
$(value).prepend("<span style=\"font-size: medium; color: #999;\" class=\"minitip glyphicon glyphicon-" + glypho + " hidden-print\" data-toggle=\"tooltip\" title=\"', _t('Sort by'), ' " + columns_name[index] + "\"></span>");
$(value).hover(function(){
$(this).css("cursor","pointer");
});
$(value).click(function(){
var current_column = $(this).attr("id");
if (current_column == current_orderby[0]) {
if (current_orderby[1] == "ASC") {
current_column += " DESC";
}
else if (current_orderby[1] != "DESC") {
current_column += " ASC";
}
else {
current_column = "', $default, '";
}
}
else {
current_column += " ASC";
}
$("#orderby").val(current_column);
$("#submit").click();
});
});
$(".minitip").tooltip();
});
');
}
sub Get {
my $orderby_value = cgiapp_param('orderby');
return undef if is_empty($orderby_value);
return $orderby_value;
}
sub Set {
my ($self, $value, $id) = @_;
cgiapp_param('orderby', $value);
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,127 @@
=head1 NAME
App::api::controls::Control_Check
=head1 SYNOPSIS
my $check = Component__Get(CONTROL_CHECK, ['check']);
=head1 DESCRIPTION
Control para marcar/desmarcar una opción.
=head1 ARGUMENTS
(
TYPE => 'Check',
ID => 'check' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Check' (default),
LABEL_INFO => Same as LABEL (default),
DEFAULT => 0 (unchecked; default) or 1 (checked)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Check;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'check';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = 'Check' if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
DEFAULT => [ ARG_DEFAULT, 0, 1 ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $check_value = !is_report() ? $$arg_ref{DEFAULT} : is_empty(cgiapp_param($$arg_ref{ID})) ? 0 : 1;
push(@{$info_ref}, { DATA => _t('Option'), VALUE => $$arg_ref{LABEL_INFO} }) if $$arg_ref{INFO} && $check_value;
return strval('
<div class="form-group form-group-', $ID_DEFAULT, ' input-lg">
<label for="', $$arg_ref{ID}, '"><input type="checkbox" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '" value="check"', $check_value ? ' checked ' : ' ', '/>&nbsp;&nbsp;', $$arg_ref{LABEL}, '</label>
</div>
');
}
sub Control__js {
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
return is_empty(cgiapp_param($id)) ? 0 : 1;
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,158 @@
=head1 NAME
Dam::Components::Controls::Date
=head1 SYNOPSIS
my $date = Component__Get(CONTROL_DATE, ['date']);
=head1 DESCRIPTION
Control para seleccionar una fecha.
=head1 ARGUMENTS
(
TYPE => 'Date',
ID => 'date' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Date' (default),
LABEL_INFO => Same as LABEL (default),
REQUIRED => 1 (control required; default) or 0 (not required)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Date;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Date::Calc qw(Today Add_Delta_Days);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'date';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = _t('Date') if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $date_value = cgiapp_param($$arg_ref{ID});
if (!is_report()) {
my @previous = Add_Delta_Days(Today(), -1);
$date_value = strval(sprintf("%02d", $previous[2]), '/', sprintf("%02d", $previous[1]), '/', $previous[0]);
}
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => $date_value }) if $$arg_ref{INFO};
# Required stylesheets:
Component__Header(ADD => 'CSS', RESOURCE => PACK_DATEPICKER);
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<input type="text" class="form-control input-lg input-date-date" data-provide="datepicker" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '" value="', $date_value, '" autocomplete="off" size=4', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
</div>
');
}
sub Control__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
# Required javascripts:
Component__Header(ADD => 'JS', RESOURCE => PACK_DATEPICKER);
return strval('
$(function(){
$("#', $$arg_ref{ID}, '").datepicker({
language: "', _t('LANGUAGE_CODE'), '",
autoclose: true,
todayHighlight: true,
disableTouchKeyboard: true,
endDate: "0d"
});
});
');
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
my @date_value = split('/', cgiapp_param($id));
my $date_value = "$date_value[2]-$date_value[1]-$date_value[0]";
return $date_value;
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,221 @@
=head1 NAME
Dam::Components::Controls::DateRange
=head1 SYNOPSIS
my ($ini, $end) = Component__Get(CONTROL_DATERANGE, ['range']);
=head1 DESCRIPTION
Control para obtener un rango de fechas.
=head1 ARGUMENTS
(
TYPE => 'DateRange',
ID => 'range' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Date range' (default),
LABEL_INFO => Same as LABEL (default),
REQUIRED => 1 (control required; default) or 0 (not required)
MAXDAYS => 1095 (default) or maximum number of days for range
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::DateRange;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Date::Calc qw(Today Add_Delta_YM Days_in_Month);
use Dam::Util;
use Dam::DamLogic;
use Dam::Var;
my $ID_DEFAULT = 'range';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = _t('Date range') if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ],
MAXDAYS => [ ARG_DEFAULT, 1095 ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $ini_value = cgiapp_param($$arg_ref{ID});
my $end_value = cgiapp_param(strval($$arg_ref{ID}, '_end'));
if (!is_report()) {
my @previous = Add_Delta_YM(Today(), 0, -1);
$ini_value = strval('01/', sprintf("%02d", $previous[1]), '/', $previous[0]);
$end_value = strval(Days_in_Month($previous[0], $previous[1]), '/', sprintf("%02d", $previous[1]), '/', $previous[0]);
}
my @ini = split(/\//, $ini_value);
my @end = split(/\//, $end_value);
my $range = strval($ini_value, ' al ', $end_value);
if (($ini[0] == 1) && ($ini[2] == $end[2])) {
if (($end[0] == Days_in_Month($ini[2],$ini[1])) && ($ini[1] == $end[1])) {
$range = strval($range, ' (', uc(_t('MONTHS', $ini[1])), ' ', $ini[2], ')');
}
elsif (($ini[1] == 1) && ($end[0] == 31) && ($end[1] == 12)) {
$range = strval($range, ' (', _t('YEAR'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 1) && ($end[0] == 30) && ($end[1] == 6)) {
$range = strval($range, ' (', _t('FIRST SEMESTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 7) && ($end[0] == 31) && ($end[1] == 12)) {
$range = strval($range, ' (', _t('SECOND SEMESTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 1) && ($end[0] == 30) && ($end[1] == 4)) {
$range = strval($range, ' (', _t('FIRST QUARTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 5) && ($end[0] == 31) && ($end[1] == 8)) {
$range = strval($range, ' (', _t('SECOND QUARTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 9) && ($end[0] == 31) && ($end[1] == 12)) {
$range = strval($range, ' (', _t('THIRD QUARTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 1) && ($end[0] == 31) && ($end[1] == 3)) {
$range = strval($range, ' (', _t('FIRST TRIMESTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 4) && ($end[0] == 30) && ($end[1] == 6)) {
$range = strval($range, ' (', _t('SECOND TRIMESTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 7) && ($end[0] == 30) && ($end[1] == 9)) {
$range = strval($range, ' (', _t('THIRD TRIMESTER'), ' ', $ini[2], ')');
}
elsif (($ini[1] == 10) && ($end[0] == 31) && ($end[1] == 12)) {
$range = strval($range, ' (', _t('FOURTH TRIMESTER'), ' ', $ini[2], ')');
}
}
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => $range }) if $$arg_ref{INFO};
# Required stylesheets:
Component__Header(ADD => 'CSS', RESOURCE => PACK_DATEPICKER);
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<div class="input-group input-daterange" data-provide="datepicker">
<input type="text" class="form-control input-lg" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '" value="', $ini_value, '" autocomplete="off" size=10', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
<span class="input-group-addon">al</span>
<input type="text" class="form-control input-lg" id="', $$arg_ref{ID}, '_end" name="', $$arg_ref{ID}, '_end" value="', $end_value, '" autocomplete="off" size=10', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
</div>
</div>
');
}
sub Control__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
# Required javascripts:
Component__Header(ADD => 'JS', RESOURCE => PACK_DATEPICKER);
return strval('
$(function(){
$(".input-group.input-daterange").datepicker({
language: "', _t('LANGUAGE_CODE'), '",
autoclose: true,
todayHighlight: true,
disableTouchKeyboard: true,
// endDate: "0d",
startDate: "01/01/1900" // https://github.com/uxsolutions/bootstrap-datepicker/issues/721#issuecomment-86275874 (workaround)
});
$("#filter").on("submit", function(e) {
if ($("#filter").valid()) {
var range = ', $$arg_ref{MAXDAYS}, ';
if (Math.round(($("#', $$arg_ref{ID}, '_end").datepicker("getDate") - $("#', $$arg_ref{ID}, '").datepicker("getDate")) / (1000 * 60 * 60 * 24)) > range) {
$("#nv").val(1);
$("#filter-message").text("', _t('Date ranges greater than <--max--> are not allowed.', max => $$arg_ref{MAXDAYS} % 365 ? strval($$arg_ref{MAXDAYS}, ' ', _t('day(s)')) : strval($$arg_ref{MAXDAYS} / 365, ' ', _t('year(s)'))), '");
$("#filter-error").modal();
e.preventDefault();
return false;
}
}
});
});
');
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
my @ini_value = split('/', cgiapp_param($id));
my $ini_value = "$ini_value[2]-$ini_value[1]-$ini_value[0]";
my @end_value = split('/', cgiapp_param(strval($id, '_end')));
my $end_value = "$end_value[2]-$end_value[1]-$end_value[0]";
return ($ini_value, $end_value);
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,153 @@
=head1 NAME
Dam::Components::Controls::Input
=head1 SYNOPSIS
my $input = Component__Get(CONTROL_INPUT, ['input']);
=head1 DESCRIPTION
Control para introducir un texto.
=head1 ARGUMENTS
(
TYPE => 'Input',
ID => 'input' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Enter text' (default),
LABEL_INFO => 'Input text' (default),
REQUIRED => 1 (control required; default) or 0 (not required)
ONLY => 'All' (allows any alphanumeric character; default) ó 'Digits'
(allow only numbers)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Input;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'input';
sub __arguments {
my $arg_ref = shift;
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_DEFAULT, _t('Enter text') ],
LABEL_INFO => [ ARG_DEFAULT, _t('Input text') ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ],
ONLY => [ ARG_DEFAULT, 'All', 'Digits' ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $input_value = cgiapp_param($$arg_ref{ID});
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => $input_value }) if !is_empty($input_value);
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<div class="form-div form-control-', $ID_DEFAULT, '">
<input type="input" class="form-control input-lg" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '"', !is_empty($input_value) ? strval(' value = "', $input_value, '"') : '', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
</div>
</div>
');
}
sub Control__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
return is_eq($$arg_ref{ONLY}, 'Digits') ? strval('
$(function(){
$.fn.inputFilter = function(inputFilter) {
return this.on("input keydown keyup mousedown mouseup select contextmenu drop", function() {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
}
});
};
$("#', $$arg_ref{ID}, '").inputFilter(function(value) {
return /^\d*$/.test(value);
});
});
') : '';
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
return cgiapp_param($id);
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,177 @@
=head1 NAME
Dam::Components::Controls::Month
=head1 SYNOPSIS
my ($year, $month) = Component__Get(CONTROL_MONTH, ['month']);
=head1 DESCRIPTION
Control para seleccionar un mes del año.
=head1 ARGUMENTS
(
TYPE => 'Month',
ID => 'month' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Month' (default),
LABEL_INFO => Same as LABEL (default),
REQUIRED => 1 (control required; default) or 0 (not required)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Month;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Date::Calc qw(Today);
use Dam::Util;
use Dam::DamLogic;
use Dam::Var;
my $ID_DEFAULT = 'month';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = _t('Month') if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $value = cgiapp_param($$arg_ref{ID});
my @today = Today();
my ($month_name, $month_value, $year_value) = ('', $today[1], $today[0]);
if (!is_report() || is_empty($value)) {
if ($month_value == 1) {
$month_value = 12;
$year_value--;
}
else {
$month_value--;
}
$month_name = _t('MONTHS', $month_value);
}
else {
($month_name, $year_value) = split(/ /, $value);
$month_value = _t('MONTHS', $month_name);
}
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => "$month_name $year_value" }) if $$arg_ref{INFO};
# Required stylesheets:
Component__Header(ADD => 'CSS', RESOURCE => PACK_DATEPICKER);
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<input type="text" class="form-control input-lg input-date-month" data-provide="datepicker" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '" value="', $month_name, ' ', $year_value, '" autocomplete="off" size=4', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
</div>
');
}
sub Control__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
my @today = Today();
# Required javascripts:
Component__Header(ADD => 'JS', RESOURCE => PACK_DATEPICKER);
return strval('
$(function(){
$("#', $$arg_ref{ID}, '").datepicker({
language: "', _t('LANGUAGE_CODE'), '",
autoclose: true,
todayHighlight: true,
disableTouchKeyboard: true,
minViewMode: "months",
format: "MM yyyy",
endDate: "', $today[1] - 1, '-', $today[0], '"
});
});
');
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
my $value = cgiapp_param($id);
return (undef, undef) if is_empty($value);
my ($month_name, $year_value) = split(/ /, $value);
my $month_value = _t('MONTHS', $month_name);
return ($year_value, $month_value);
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,161 @@
=head1 NAME
Dam::Components::Controls::MultiCheck
=head1 SYNOPSIS
my ($check_1, $check_2, ...) = Component__Get(CONTROL_MULTICHECK, ['multicheck']);
=head1 DESCRIPTION
Control para seleccionar una o más opciones de una lista.
=head1 ARGUMENTS
(
TYPE => 'MultiCheck',
ID => 'multicheck' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'MultiCheck' (default),
LABEL_INFO => Same as LABEL (default),
REQUIRED => 1 (control required; default) or 0 (not required)
MULTIPLE => 1 (allows to select any number of options; default) or 0 (allows
to select only one option),
OPTIONS => { 'op1' => 'Option 1', 'op2' => 'Option 2' } (default); you can
use { ..., 'opN' => _DIVIDER_, ... } to include separators
between the options according to order,
DEFAULT => Default option(s), e.g. "'op1'" or "'op1','op3'"
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::MultiCheck;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'multicheck';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = 'MultiCheck' if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ],
MULTIPLE => [ ARG_DEFAULT, 1, 0 ],
OPTIONS => [ ARG_DEFAULT, { 'op1' => strval(_t('Option'), ' 1'), 'op2' => strval(_t('Option'), ' 2') } ],
DEFAULT => [ ARG_OPTIONAL ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $multicheck_value = !is_report() && !is_empty($$arg_ref{DEFAULT}) ? $$arg_ref{DEFAULT} : strval_join(',', cgiapp_param($$arg_ref{ID}));
my $form_group = 'form-group';
my $list_opts = '';
my $info_opts = '';
my $count_opts = 0;
for my $key (sort keys(%{$$arg_ref{OPTIONS}})) {
if (is_eq(${$$arg_ref{OPTIONS}}{$key}, _DIVIDER_)) {
$list_opts .= '<option data-divider="true"></option>';
}
else {
my $checked = defined($multicheck_value) && index($multicheck_value, $key) >= 0;
my $selected = $checked ? '" selected="selected">' : '">';
$list_opts .= strval('<option value="\'', $key, '\'" title="', ${$$arg_ref{OPTIONS}}{$key}, $selected, ${$$arg_ref{OPTIONS}}{$key}, '</option>');
$form_group .= ' form-group-smaller' if $count_opts++ == 14;
$info_opts .= ' ' if $checked && !is_empty($info_opts);
$info_opts .= strval(${$$arg_ref{OPTIONS}}{$key}, ',') if $checked;
}
}
chop($info_opts) if !is_empty($info_opts);
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => $info_opts }) if $$arg_ref{INFO} && length($info_opts);
# Required stylesheets:
Component__Header(ADD => 'CSS', RESOURCE => PACK_SELECT);
return strval('
<div class="', $form_group, ' form-group-', $ID_DEFAULT, ' form-selectpicker">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<select class="form-control input-lg selectpicker" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '" multiple="multiple"', !$$arg_ref{MULTIPLE} ? ' data-max-options="1"' : '', ' data-selected-text-format="count > 2"', $$arg_ref{REQUIRED} ? ' required="required">' : '>', $list_opts, '</select>
</div>
');
}
sub Control__js {
# Required javascripts:
Component__Header(ADD => 'JS', RESOURCE => PACK_SELECT);
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
return strval_join(',', cgiapp_param($id));
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,138 @@
=head1 NAME
Dam::Components::Controls::Option
=head1 SYNOPSIS
my $option = Component__Get(CONTROL_OPTION, ['option']);
=head1 DESCRIPTION
Control para seleccionar una opción de una lista sencilla.
=head1 ARGUMENTS
(
TYPE => 'Option',
ID => 'opt' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Options' (default),
LABEL_INFO => Same as LABEL (default),
REQUIRED => 1 (control required; default) or 0 (not required)
OPTIONS => { 'op1' => 'Option 1', 'op2' => 'Option 2' } (default)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Option;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'option';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = _t('Options') if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ],
OPTIONS => [ ARG_DEFAULT, { 'op1' => strval(_t('Option'), ' 1'), 'op2' => strval(_t('Option'), ' 2') } ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $opt_value = cgiapp_param($$arg_ref{ID});
my $list_opts = $$arg_ref{REQUIRED} ? '' : strval('<option value="" title=""></option>');
for my $key (sort keys(%{$$arg_ref{OPTIONS}})) {
my $selected = '">';
if (is_eq($opt_value, $key)) {
$selected = '" selected="selected">';
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => ${$$arg_ref{OPTIONS}}{$key} }) if $$arg_ref{INFO};
}
$list_opts .= strval('<option value="', $key, '" title="', ${$$arg_ref{OPTIONS}}{$key}, $selected, ${$$arg_ref{OPTIONS}}{$key}, '</option>');
}
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<select class="form-control input-lg" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '"', $$arg_ref{REQUIRED} ? ' required="required">' : '>', $list_opts, '</select>
</div>
');
}
sub Control__js {
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
return cgiapp_param($id);
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,184 @@
=head1 NAME
Dam::Components::Controls::Upload
=head1 SYNOPSIS
my ($filehandle, $filename, $filetype) = Component__Get(CONTROL_UPLOAD, ['upload']);
=head1 DESCRIPTION
Control para subir un archivo al servidor.
=head1 ARGUMENTS
(
TYPE => 'Upload',
ID => 'upload' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Upload file' (default),
LABEL_INFO => 'File' (default),
REQUIRED => 1 (control required; default) or 0 (not required)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Upload;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use File::Copy qw(copy);
use Dam::Util;
use Dam::Debug;
use Dam::DamLogic;
use Dam::Var;
my $ID_DEFAULT = 'upload';
sub __arguments {
my $arg_ref = shift;
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_DEFAULT, _t('Upload file') ],
LABEL_INFO => [ ARG_DEFAULT, _t('File') ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
# Previous file info:
my $filename = cgiapp_param(strval($$arg_ref{ID}, '_name')) || '';
my $filesafe = cgiapp_param(strval($$arg_ref{ID}, '_safe')) || '';
my $filetype = cgiapp_param(strval($$arg_ref{ID}, '_type')) || '';
if (!is_empty($filename)) {
report_info(_t('If no other file is selected, then <--file--> previously uploaded will be used.', file => strval('<strong>', $filename, '</strong>')));
}
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => $filename }) if $$arg_ref{INFO} && !is_empty($filename);
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<div class="form-div form-control-', $ID_DEFAULT, '">
<input type="file" class="form-control input-lg" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '"', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
<input type="hidden" id="', $$arg_ref{ID}, '_name" name="', $$arg_ref{ID}, '_name" value="', $filename, '" />
<input type="hidden" id="', $$arg_ref{ID}, '_safe" name="', $$arg_ref{ID}, '_safe" value="', $filesafe, '" />
<input type="hidden" id="', $$arg_ref{ID}, '_type" name="', $$arg_ref{ID}, '_type" value="', $filetype, '" />
</div>
</div>
');
}
sub Control__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
return strval('
$(function(){
if ($("#', $$arg_ref{ID}, '_name").val()) {
$("#', $$arg_ref{ID}, '").prop("required", false);
}
});
');
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
# File handler:
my $filehandle = cgiapp_upload($id);
# File name:
my $filename = cgiapp_param($id);
my $filesafe = $filename;
# File type:
my $filetype = !is_empty($filename) ? cgiapp_uploadInfo($filename)->{'Content-Type'} : undef;
if ($filehandle) {
my $safe_characters = "a-zA-Z0-9_.-";
$filesafe =~ tr/ /_/;
$filesafe =~ s/[^$safe_characters]//g;
if ($filesafe =~ /^([$safe_characters]+)$/) {
$filesafe = strval('file-', time(), '_', $1);
if (copy($filehandle, strval(CONFIG('DIR_UPLOADS'), '/', $filesafe)) && open($filehandle, '<', strval(CONFIG('DIR_UPLOADS'), '/', $filesafe))) {
cgiapp_param(strval($id, '_name'), $filename);
cgiapp_param(strval($id, '_safe'), $filesafe);
cgiapp_param(strval($id, '_type'), $filetype);
return ($filehandle, $filename, $filetype);
}
}
}
else {
$filename = cgiapp_param(strval($id, '_name'));
$filesafe = cgiapp_param(strval($id, '_safe'));
$filetype = cgiapp_param(strval($id, '_type'));
if (!is_empty($filesafe) && open($filehandle, '<', strval(CONFIG('DIR_UPLOADS'), '/', $filesafe))) {
return ($filehandle, $filename, $filetype);
}
}
return (undef, undef, undef);
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,160 @@
=head1 NAME
Dam::Components::Controls::Year
=head1 SYNOPSIS
my $year = Component__Get(CONTROL_YEAR, ['year']);
=head1 DESCRIPTION
Control para seleccionar un año.
=head1 ARGUMENTS
(
TYPE => 'Year',
ID => 'year' (default),
INFO => 1 (show info in header; default) or 0 (don't show),
LABEL => 'Year' (default),
LABEL_INFO => Same as LABEL (default),
REQUIRED => 1 (control required; default) or 0 (not required)
)
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Controls::Year;
use Exporter qw(import);
our @EXPORT = qw(
Control__html Control__js Get
);
use Date::Calc qw(Today);
use Dam::Util;
use Dam::DamLogic;
my $ID_DEFAULT = 'year';
sub __arguments {
my $arg_ref = shift;
$$arg_ref{LABEL} = _t('Year') if is_empty($$arg_ref{LABEL});
$$arg_ref{LABEL_INFO} = $$arg_ref{LABEL} if is_empty($$arg_ref{LABEL_INFO});
check_arguments($arg_ref,
TYPE => [ ARG_REQUIRED ],
ID => [ ARG_DEFAULT, $ID_DEFAULT ],
INFO => [ ARG_DEFAULT, 1, 0 ],
LABEL => [ ARG_REQUIRED ],
LABEL_INFO => [ ARG_REQUIRED ],
REQUIRED => [ ARG_DEFAULT, 1, 0 ]
);
}
sub Control__html {
my ($self, $arg_ref, $info_ref) = @_;
__arguments($arg_ref);
my $year_value = cgiapp_param($$arg_ref{ID});
if (!is_report()) {
my @today = Today();
$year_value = $today[0];
}
push(@{$info_ref}, { DATA => $$arg_ref{LABEL_INFO}, VALUE => $year_value }) if $$arg_ref{INFO};
# Required stylesheets:
Component__Header(ADD => 'CSS', RESOURCE => PACK_DATEPICKER);
return strval('
<div class="form-group form-group-', $ID_DEFAULT, '">
<label for="', $$arg_ref{ID}, $$arg_ref{REQUIRED} ? '" class="required">' : '">', $$arg_ref{LABEL}, '</label>
<input type="text" class="form-control input-lg input-date-year" data-provide="datepicker" id="', $$arg_ref{ID}, '" name="', $$arg_ref{ID}, '" value="', $year_value, '" autocomplete="off" size=4', $$arg_ref{REQUIRED} ? ' required="required"' : '', ' />
</div>
');
}
sub Control__js {
my ($self, $arg_ref) = @_;
__arguments($arg_ref);
my @today = Today();
# Required javascripts:
Component__Header(ADD => 'JS', RESOURCE => PACK_DATEPICKER);
return strval('
$(function(){
$("#', $$arg_ref{ID}, '").datepicker({
language: "', _t('LANGUAGE_CODE'), '",
autoclose: true,
todayHighlight: true,
disableTouchKeyboard: true,
minViewMode: "years",
format: "yyyy",
endDate: "', $today[0], '"
});
});
');
}
sub Get {
my ($self, $id) = @_;
$id = $ID_DEFAULT if is_empty($id);
my $value = cgiapp_param($id);
return !is_empty($value) ? $value : undef;
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

View file

@ -0,0 +1,46 @@
<div class="jumbotron hemotron">
<div style="float: right;"><TMPL_VAR VERSION></div>
<h1><TMPL_VAR APP_NAME></h1>
<p><TMPL_VAR APP_SLOGAN></p>
<TMPL_IF GLOBAL_WARNING>
<br /><div class="alert alert-warning" role="alert"><TMPL_VAR GLOBAL_WARNING></div>
</TMPL_IF>
<TMPL_IF CHANGELOG_LAST>
<br />
<div class="panel panel-default">
<!-- Nav tabs -->
<ul id="changelog" class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab"><TMPL_VAR T_VERSION_NEWS></a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab"><TMPL_VAR T_VERSION_PREV></a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="home">
<div class="panel-body">
<ul class="changelog-list"><TMPL_LOOP CHANGELOG_LAST>
<TMPL_VAR ITEM></TMPL_LOOP>
</ul>
</div>
</div>
<TMPL_IF CHANGELOG_PREV>
<div role="tabpanel" class="tab-pane fade" id="profile">
<div class="panel-body">
<ul class="changelog-list"><TMPL_LOOP CHANGELOG_PREV>
<TMPL_VAR ITEM></TMPL_LOOP>
</ul>
</div>
</div>
</TMPL_IF>
</div>
<script type="text/javascript">
$('#changelog a').click(function (e) {
e.preventDefault();
$(this).tab('show');
});
</script>
</div>
</TMPL_IF>
</div>

View file

@ -0,0 +1,14 @@
<TMPL_IF DEBUG>
<div class="panel panel-default hidden-print">
<div class="panel-heading">
<h4 class="panel-title">
<strong><span class="glyphicon glyphicon-wrench"></span> <a data-toggle="collapse" data-target="#debug-info" onClick="return false;" style="cursor: pointer;">DEBUG</a></strong>
</h4>
</div>
<div id="debug-info" class="panel-collapse collapse">
<div class="panel-body">
<TMPL_VAR DEBUG>
</div>
</div>
</div>
</TMPL_IF>

View file

@ -0,0 +1,5 @@
<div class="jumbotron hemotron">
<h1><TMPL_VAR APP_NAME></h1>
<h2><span class="glyphicon glyphicon-eye-close"></span> <TMPL_VAR T_ATTENTION> <TMPL_VAR T_UNAUTHORIZED_ACCESS> </h2>
<p><TMPL_VAR T_REPORT_WITHOUT_ACCESS> <TMPL_VAR T_CONTACT_ADMINISTRATOR></p>
</div>

View file

@ -0,0 +1,5 @@
<div class="jumbotron hemotron">
<h1><TMPL_VAR APP_NAME></h1>
<h2><span class="glyphicon glyphicon-eye-close"></span> <TMPL_VAR T_ATTENTION> <TMPL_VAR T_UNEXPECTED_ERROR></h2>
<p><TMPL_VAR T_ERROR_DURING_EXECUTION> <TMPL_VAR T_CONTACT_ADMINISTRATOR></p>
</div>

View file

@ -0,0 +1,72 @@
<input type="hidden" name="xt" id="xt" value="<TMPL_VAR FIRSTTIME>" />
<input type="hidden" name="rm" id="rm" value="<TMPL_VAR RUN_MODE>" />
<input type="hidden" name="dm" id="dm" value="" />
<input type="hidden" name="nv" id="nv" value="" />
<div class="panel panel-info panel-filter hidden-print">
<div class="panel-heading"><TMPL_VAR FILTER_TITLE></div>
<div class="panel-body">
<div class="modal fade" tabindex="-1" id="filter-error">
<div class="modal-dialog"><div class="modal-content"><div class="modal-body">
<button type="button" class="close" data-dismiss="modal"><span>&times;</span></button>
<h3><strong><TMPL_VAR T_WATCH_OUT></strong></h3><h4 id="filter-message"></h4>
<p class="text-right"><button type="button" class="btn btn-default" data-dismiss="modal"><TMPL_VAR T_CLOSE></button></p>
</div></div></div>
</div>
<TMPL_IF DESCRIPTION><p class="description"><TMPL_VAR DESCRIPTION></p></TMPL_IF>
<TMPL_LOOP FILTER_CONTROLS><TMPL_VAR CONTROL></TMPL_LOOP>
<div class="form-group filter-buttons"><TMPL_LOOP FILTER_ACTIONS><TMPL_VAR ACTION></TMPL_LOOP>
</div>
<TMPL_IF REPORT_ERROR>
<div class="alert alert-danger hidden-print" role="alert"><TMPL_VAR REPORT_ERROR></div>
</TMPL_IF>
<TMPL_IF REPORT_WARNING>
<div class="alert alert-warning hidden-print" role="alert"><TMPL_VAR REPORT_WARNING></div>
</TMPL_IF>
<TMPL_IF REPORT_INFO>
<div class="alert alert-info hidden-print" role="alert"><TMPL_VAR REPORT_INFO></div>
</TMPL_IF>
</div>
</div>
<script type="text/javascript">
$(function(){
$("#filter").validate();
});
<TMPL_LOOP FILTER_JS><TMPL_VAR JAVASCRIPT></TMPL_LOOP>
</script>
<div class="panel panel-default panel-informa visible-print-block">
<div class="panel-heading"><TMPL_VAR APP_NAME></div>
<table class="table table-bordered table-condensed">
<tbody>
<tr>
<td style="width: 20%;"> <TMPL_VAR T_REPORT>: </td>
<td> <TMPL_VAR REPORT> </td>
</tr><TMPL_IF DESCRIPTION><tr>
<td> <TMPL_VAR T_DESCRIPTION>: </td>
<td> <TMPL_VAR DESCRIPTION> </td>
</tr></TMPL_IF><tr>
<td> <TMPL_VAR T_EDITION_DATE>: </td>
<td> <TMPL_VAR TODAY> </td>
</tr><tr>
<td> <TMPL_VAR T_REQUESTED_BY>: </td>
<td> <TMPL_VAR USER> </td>
<TMPL_LOOP FILTER_OPTIONS>
</tr><tr>
<td> <TMPL_VAR DATA>: </td>
<td> <TMPL_VAR VALUE> </td>
</TMPL_LOOP>
</tr>
</tbody>
</table>
</div>

View file

@ -0,0 +1,39 @@
<TMPL_IF DEBUG_MODE>
<div class="container hidden-print">
<div class="alert alert-info" role="alert" style="text-align: center;">
<strong><TMPL_VAR T_ATTENTION> <TMPL_VAR T_WARNING_MODE></strong>
</div>
</div>
</TMPL_IF>
<a href="#" class="scrollup">Arriba</a>
<footer>
<div class="container">
<p class="copyright"> <TMPL_VAR FOOTER_COPYRIGHT> </p>
<p class="today"> <TMPL_VAR TODAY> </p>
</div>
</footer>
<TMPL_IF CHECK_BROWSER>
<div id="outdated">
<h6><TMPL_VAR T_OLD_BROWSER></h6>
<p><TMPL_VAR T_UPDATE_BROWSER> <a id="btnUpdateBrowser" href="http://outdatedbrowser.com/es"><TMPL_VAR T_UPDATE_NOW></a>.</p>
<p class="last"><a href="#" id="btnCloseUpdateBrowser" title="<TMPL_VAR T_CLOSE>">&times;</a></p>
</div>
<script type="text/javascript">
<!--
outdatedBrowser({
bgColor: '#f25648',
color: '#ffffff',
lowerThan: 'boxShadow',
languagePath: ''
});
// -->
</script>
</TMPL_IF>
</body>
</html>

View file

@ -0,0 +1,34 @@
<!DOCTYPE html>
<html lang="<TMPL_VAR LANGUAGE_CODE>" dir="ltr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="shortcut icon" href="<TMPL_VAR ROOT_WWW>/favicon.ico" type="image/x-icon" />
<title><TMPL_VAR TITLE></title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<TMPL_LOOP STYLESHEETS>
<link rel="stylesheet" href="<TMPL_VAR ROOT_WWW><TMPL_VAR RESOURCE><TMPL_IF VERSION>?v=<TMPL_VAR VERSION></TMPL_IF>" type="text/css" /><TMPL_IF DEBUG_MODE> <!-- Priority <TMPL_VAR PRIORITY> --></TMPL_IF></TMPL_LOOP>
<TMPL_LOOP JAVASCRIPTS>
<script src="<TMPL_VAR ROOT_WWW><TMPL_VAR RESOURCE><TMPL_IF VERSION>?v=<TMPL_VAR VERSION></TMPL_IF>"<TMPL_IF CHARSET> charset="<TMPL_VAR CHARSET>"</TMPL_IF>></script><TMPL_IF DEBUG_MODE> <!-- Priority <TMPL_VAR PRIORITY> --></TMPL_IF></TMPL_LOOP>
<TMPL_IF CHECK_BROWSER>
<link rel="stylesheet" href="<TMPL_VAR ROOT_WWW>/dam/css/outdatedbrowser.min.css?v=1.1.5" type="text/css" />
<script src="<TMPL_VAR ROOT_WWW>/dam/js/outdatedbrowser.min.js?v=1.1.5"></script>
</TMPL_IF>
<!--[if lt IE 9]>
<link rel="stylesheet" media="all" href="<TMPL_VAR ROOT_WWW>/dam/css/ie8.css" type="text/css" />
<script src="<TMPL_VAR ROOT_WWW>/dam/js/respond.min.js"></script>
<script src="<TMPL_VAR ROOT_WWW>/dam/js/html5shiv.min.js"></script>
<![endif]-->
</head>
<body<TMPL_IF BODY_CLASSES> class="<TMPL_VAR BODY_CLASSES>"</TMPL_IF>>
<div id="loading"></div>
<TMPL_IF GLOBAL_ERROR>
<div class="container fatal-error">
<div class="alert alert-danger" role="alert"><TMPL_VAR GLOBAL_ERROR></div>
</div>
</TMPL_IF>

View file

@ -0,0 +1,26 @@
<h1 class="login-heading"><TMPL_VAR APP_NAME></h1>
<form name="login" method="post" class="form-login" onsubmit="
document.login.pass.value=encrypt(document.login.hide.value,document.login.key.value);
document.login.hide.value=document.login.pass.value.substr(0,document.login.hide.value.length);
">
<input type="hidden" name="rm" value="APP_confirm" />
<input type="hidden" name="key" value="<TMPL_VAR KEY>" />
<input type="hidden" name="pass" value="" />
<label for="user" class="sr-only"> <TMPL_VAR T_USERNAME> </label>
<input type="text" class="form-control" name="user" placeholder="<TMPL_VAR T_USERNAME>" maxlength="20" value="<TMPL_VAR LOGIN>" required autofocus />
<label for="pass" class="sr-only"> <TMPL_VAR T_PASSWORD> </label>
<input type="password" class="form-control" name="hide" placeholder="<TMPL_VAR T_PASSWORD>" maxlength="20" required />
<button type="submit" class="btn btn-lg btn-primary btn-block"> <TMPL_VAR T_LOGIN> </button>
<TMPL_IF ERROR>
<br /><br /><div class="alert alert-danger" role="alert">
<h4> <TMPL_VAR ERROR_TITLE> </h4>
<p> <TMPL_VAR ERROR_MESSAGE> (Error <TMPL_VAR ERROR>). </p>
</div>
</TMPL_IF>
</form>
<TMPL_VAR CRYPT_TEA>

View file

@ -0,0 +1,23 @@
<TMPL_IF ROUTES>
<form id="naviga" method="post"><input type="hidden" name="rm" />
<nav class="navbar navbar-default navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
<span class="sr-only"><TMPL_VAR T_NAVIGATION></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="#" class="navbar-brand option" id="RUN_home" title="<TMPL_VAR APP_NAME>"><TMPL_VAR APP_MNEMO></a>
</div>
<TMPL_VAR ROUTES>
</div>
</nav>
</form>
</TMPL_IF>

View file

@ -0,0 +1,152 @@
=head1 NAME
Dam::Components::Translations::ES_es
=head1 DESCRIPTION
Traducciones a español.
=head1 FUNCTIONS
=cut
use strict;
use warnings;
use utf8;
package Dam::Components::Translations::ES_es;
use Exporter qw(import);
our @EXPORT = qw(
Get
);
my %T = (
LANGUAGE_CODE => 'es',
MONTHS => [ 'Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre' ],
'Username' => 'Nombre de usuario',
'Password' => 'Contraseña',
'Login' => 'Entrar',
'User not active!' => '¡Usuario no activo!',
'Consult with your systems manager to activate your user' => 'Consulte con el responsable de sistemas para activar su usuario',
'Access error!' => '¡Error de acceso!',
'Verify username and retype password' => 'Verifique el nombre de usuario y vuelva a teclear la contraseña',
'Close' => 'Cerrar',
'Close session' => 'Cerrar sesión',
'Navigation' => 'Navegación',
'alpha' => 'alfa',
'beta' => 'beta',
'Original access' => 'Acceso original',
'Assigned access' => 'Acceso asignado',
'ERROR!' => '¡ERROR!',
'ERRORS!' => '¡ERRORES!',
'WARNING!' => '¡ADVERTENCIA!',
'WARNINGS!' => '¡ADVERTENCIAS!',
'ATTENTION!' => '¡ATENCIÓN!',
'Unauthorized Access' => 'Acceso No Autorizado',
'You are trying to run a report without sufficient access privileges.' => 'Está intentando ejecutar un informe sin suficientes privilegios de acceso.',
'Unexpected Error' => 'Error Inesperado',
'An unexpected error occurred during execution.' => 'Se ha producido un error inesperado durante la ejecución.',
'Please contact the administrator to resolve it.' => 'Por favor, contacte con el administrador para resolverlo.',
'Report' => 'Informe',
'Description' => 'Descripción',
'Edition date' => 'Fecha de edición',
'Requested by' => 'Solicitado por',
'Reports in <--alpha--> status are under development and may show errors or not give the expected results.' => 'Los informes en estado <--alpha--> están en desarrollo y pueden mostrar errores o no dar los resultados esperados.',
'Reports in <--beta--> status are in validation process.' => 'Los informes en estado <--beta--> están en proceso de validación.',
'WATCH OUT!' => '¡CUIDADO!',
'NO DATA!' => '¡SIN DATOS!',
'There is no data to apply the selection form filter.' => 'No hay registros que cumplan los criterios del filtro de selección.',
'Check the filter conditions.' => 'Compruebe las condiciones del filtro.',
'Filter fields marked with <--required--> are required.' => 'Los campos del filtro marcados con <--required--> son obligatorios.',
'This browser is out of date' => 'Este navegador es antiguo',
'You must update to use <--app--> correctly.' => 'Hay que actualizar para usar <--app--> correctamente.',
'Update my browser now' => 'Actualizar mi navegador ahora',
'You are running <--app--> in <--mode-->.' => 'Está ejecutando <--app--> en <--mode-->.',
'develop mode' => 'modo de desarrollo',
'testing mode' => 'modo de pruebas',
'About <--app-->' => 'Sobre <--app-->',
'What\'s new' => 'Novedades',
'Previous version' => 'Versión anterior',
# ACTIONS:
'Run' => 'Calcular',
'Print' => 'Imprimir',
'Download current report in CSV format' => 'Descarga el informe actual en formato CSV',
'Order by' => 'Ordenado por',
'Sort by' => 'Ordenar por',
'ascendant' => 'ascendente',
'descendent' => 'descendente',
# CONTROLS:
'Date' => 'Fecha',
'Date range' => 'Período',
'Month' => 'Mes',
'Year' => 'Año',
'YEAR' => 'AÑO',
'FIRST SEMESTER' => 'PRIMER SEMESTRE',
'SECOND SEMESTER' => 'SEGUNDO SEMESTRE',
'FIRST QUARTER' => 'PRIMER CUATRIMESTRE',
'SECOND QUARTER' => 'SEGUNDO CUATRIMESTRE',
'THIRD QUARTER' => 'TERCER CUATRIMESTRE',
'FIRST TRIMESTER' => 'PRIMER TRIMESTRE',
'SECOND TRIMESTER' => 'SEGUNDO TRIMESTRE',
'THIRD TRIMESTER' => 'TERCER TRIMESTRE',
'FOURTH TRIMESTER' => 'CUARTO TRIMESTRE',
'Date ranges greater than <--max--> are not allowed.' => 'No se admiten rangos de fechas superiores a <--max-->.',
'day(s)' => 'día(s)',
'year(s)' => 'año(s)',
'Option' => 'Opción',
'Options' => 'Opciones',
'Enter text' => 'Introducir texto',
'Input text' => 'Texto de entrada',
'Upload file' => 'Subir archivo',
'File' => 'Archivo',
'If no other file is selected, then <--file--> previously uploaded will be used.' => 'Si no se selecciona otro archivo, entonces se usará el mismo <--file--> subido anteriormente.'
);
sub Get { return \%T; }
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

1107
Dam/DamLogic.pm Normal file

File diff suppressed because it is too large Load diff

652
Dam/Database.pm Normal file
View file

@ -0,0 +1,652 @@
=head1 NAME
Dam::Database
=head1 DESCRIPTION
API for database access.
=head1 FUNCTIONS
=cut
use strict;
use warnings;
use utf8;
package Dam::Database;
use Exporter qw(import);
our @EXPORT = qw(
UNKNOWN_COLUMN DUPLICATE_ENTRY SQL_SYNTAX_ERROR
database_connect database_disconnect database_last_err database_last_errstr
CREATE_TEMP_TABLE DROP_TEMP_TABLE DROP_TEMP_TABLES
QUERY UPDATE INSERT_INTO DELETE_FROM
SELECT COUNT SUM AVG UNION
FIELDS FROM JOINS WHERE GROUP_BY HAVING ORDER_BY LIMIT
CLOSED AND OR NOT
COMPARE COMPARE_STR COMPARE_DATE COMPARE_FIELDS
BETWEEN BETWEEN_STR BETWEEN_DATES
EXISTS IN_FIELD
);
use DBI;
use Dam::Util;
use Dam::Debug;
use constant {
UNKNOWN_COLUMN => 1054,
DUPLICATE_ENTRY => 1062,
SQL_SYNTAX_ERROR => 1064
};
my $DBH = undef; # Database handle
my @TEMP_TABLES = (); # Temporal tables created during execution
=head2 database_connect()
Open connection to the database.
=cut
sub database_connect {
my %arg = @_;
check_arguments(\%arg,
DB_DSN => [ ARG_REQUIRED ],
DB_USER => [ ARG_REQUIRED ],
DB_PASSWORD => [ ARG_REQUIRED ]
);
$DBH = DBI->connect($arg{DB_DSN}, $arg{DB_USER}, $arg{DB_PASSWORD}) if !is_eq($arg{DB_DSN}, 'DBI:mysql:database=dbname;host=hostname');
return $DBH;
}
=head2 database_disconnect()
Close the connection to the database.
=cut
sub database_disconnect {
$DBH->disconnect() if defined($DBH);
}
=head2 database_last_err()
Returns the exit code of the last database access statement executed.
=cut
sub database_last_err {
return defined($DBH->err) ? $DBH->err : 0;
}
=head2 database_last_errstr()
Returns the output text message of the last database access statement executed.
=cut
sub database_last_errstr {
return defined($DBH->errstr) ? $DBH->errstr : '';
}
=head2 CREATE_TEMP_TABLE($table, %SOURCE)
Create a temporary table in the database.
=head3 Arguments:
- B<$table> (required): Name of the new data table.
- B<%SOURCE> (required): Its structure. Can be:
- C<DEF> => a definition of the fields in the new table;
- C<LIKE> => the name of an existing table to copy its structure; or
- C<AS> => a SELECT statement from which to get fields and data.
=cut
sub CREATE_TEMP_TABLE {
my ($table, %SOURCE) = @_;
my $query = strval('
CREATE TEMPORARY TABLE ', $table,
!is_empty($SOURCE{DEF}) ? strval(' ( ', strval_join(', ', array($SOURCE{DEF})), ' )') : '',
!is_empty($SOURCE{LIKE}) ? strval(' LIKE ', $SOURCE{LIKE}) : '',
!is_empty($SOURCE{AS}) ? strval(' AS ( ', $SOURCE{AS}, ' )') : ''
);
$DBH->do($query);
debug_info('CREATE TABLE', '<samp style="color: #888;">', $query, '</samp>');
if ($DBH->err) {
debug_error($DBH->errstr);
}
else {
push(@TEMP_TABLES, $table);
}
}
=head2 DROP_TEMP_TABLE($table)
Drop a temporary table from the database.
=head3 Arguments:
- B<$table> (required): Table name.
=cut
sub DROP_TEMP_TABLE {
my $table = shift;
my $query = strval('
DROP TEMPORARY TABLE ', $table
);
$DBH->do($query);
debug_info('DROP TABLE', '<samp style="color: #888;">', $query, '</samp>');
if ($DBH->err) {
debug_error($DBH->errstr);
}
else {
my $index = index_in_array($table, \@TEMP_TABLES);
splice(@TEMP_TABLES, $index, 1) if $index != -1;
}
}
=head2 DROP_TEMP_TABLES()
Delete the temporary tables created up to the moment of execution.
=cut
sub DROP_TEMP_TABLES {
while (@TEMP_TABLES) {
my $query = strval('
DROP TEMPORARY TABLE ', pop(@TEMP_TABLES)
);
$DBH->do($query);
debug_info('DROP TABLE', '<samp style="color: #888;">', $query, '</samp>');
debug_error($DBH->errstr) if $DBH->err;
}
@TEMP_TABLES = ();
}
=head2 QUERY($query)
Execute a query on the database.
=head3 Arguments:
- B<$query> (required): SELECT statement to execute.
=cut
sub QUERY {
my $query = shift;
my $execute = $DBH->prepare($query);
$execute->execute();
my $rows = $execute->rows != -1 ? strval(' =&gt; <kbd>', $execute->rows, '</kbd> ', $execute->rows == 1 ? 'fila seleccionada.' : 'filas seleccionadas.') : '';
debug_info('QUERY', '<samp style="color: #888;">', $query, '</samp>', $rows);
debug_error($execute->errstr) if $execute->err;
return $execute;
}
=head2 UPDATE($table, %SET)
Run an update on the database.
=head3 Arguments:
- B<$table> (required): Data table to be updated.
- B<%SET>: Fields to update.
=cut
sub UPDATE {
my ($table, %SET) = @_;
my $query = strval('
UPDATE ', $table,
!is_empty($SET{SET}) ? strval(' SET ', strval_join(', ', array($SET{SET}))) : '',
WHERE(array($SET{WHERE}))
);
$DBH->do($query);
debug_info('UPDATE', '<samp style="color: #888;">', $query, '</samp>');
debug_error($DBH->errstr) if $DBH->err;
}
=head2 INSERT_INTO($table, %INTO)
Insert data into a table in the database and return the number of rows inserted
or -1 if any error occurred.
=head3 Arguments:
- B<$table> (required): Table in which the data will be inserted.
- B<%INTO>: Selection of data to insert.
=cut
sub INSERT_INTO {
my ($table, %INTO) = @_;
my $query = strval('
INSERT INTO ', $table,
!is_empty($INTO{FIELDS}) ? strval(' ( ', strval_join(', ', array($INTO{FIELDS})), ' )') : '',
!is_empty($INTO{VALUES}) ? strval(' VALUES ( ', strval_join(', ', array($INTO{VALUES})), ' )') : '',
is_eq(ref($INTO{SELECT}), 'HASH') ? SELECT(%{$INTO{SELECT}}) : strval(' ', $INTO{SELECT})
);
my $rows = $DBH->do($query);
$rows = -1 if $DBH->err;
$rows = 0 if is_eq($rows, '0E0');
my $inserted_rows = $rows != -1 ? strval(' =&gt; <kbd>', $rows, '</kbd> ', $rows == 1 ? 'fila insertada.' : 'filas insertadas.') : '';
debug_info('INSERT INTO', '<samp style="color: #888;">', $query, '</samp>', $inserted_rows);
debug_error($DBH->errstr) if $DBH->err;
return $rows;
}
=head2 DELETE_FROM($table, %WHERE)
Delete a set of records from the database.
=head3 Arguments:
- B<$table> (required): Table from which records will be deleted.
- B<%WHERE>: Conditions to delete.
=cut
sub DELETE_FROM {
my ($table, %WHERE) = @_;
my $query = strval('
DELETE FROM ', $table,
WHERE(array($WHERE{WHERE}))
);
$DBH->do($query);
debug_info('DELETE FROM', '<samp style="color: #888;">', $query, '</samp>');
debug_error($DBH->errstr) if $DBH->err;
}
=head2 SELECT(%SELECT)
Construct a valid SELECT statement with the input arguments.
=head3 Arguments:
- B<%SELECT>: SELECT statement elements.
=cut
sub SELECT {
my %SELECT = @_;
return strval('
SELECT ',
FIELDS(array($SELECT{FIELDS})),
FROM(array($SELECT{FROM})),
JOINS(array($SELECT{JOINS})),
WHERE(array($SELECT{WHERE})),
GROUP_BY(array($SELECT{GROUP_BY})),
HAVING($SELECT{HAVING}),
ORDER_BY(array($SELECT{ORDER_BY})),
LIMIT($SELECT{LIMIT})
);
}
=head2 COUNT(%SELECT)
Constructs and executes a valid SELECT COUNT(C<$SELECT{FIELDS}>) statement with
the input arguments and returns the number of records that apply.
=head3 Arguments:
- B<%SELECT>: SELECT statement elements.
=cut
sub COUNT {
my %SELECT = @_;
$SELECT{FIELDS} = strval('COUNT(', is_empty($SELECT{FIELDS}) ? '*' : $SELECT{FIELDS}, ')');
my $query = SELECT(%SELECT);
my $execute = $DBH->prepare($query);
$execute->execute();
my $count = numval(($execute->fetchrow_array())[0]);
debug_info('COUNT', '<samp style="color: #888;">', $query, '</samp> =&gt; Cuenta <kbd>', $count, '</kbd>');
debug_error($execute->errstr) if $execute->err;
return $count;
}
=head2 SUM(%SELECT)
Constructs and executes a valid SELECT SUM(C<$SELECT{FIELDS}>) statement with
the input arguments and returns the requested sum.
=head3 Arguments:
- B<%SELECT>: SELECT statement elements.
=cut
sub SUM {
my %SELECT = @_;
$SELECT{FIELDS} = !is_empty($SELECT{FIELDS}) ? strval('SUM(', $SELECT{FIELDS}, ')') : '';
my $query = SELECT(%SELECT);
my $execute = $DBH->prepare($query);
$execute->execute();
my $sum = numval(($execute->fetchrow_array())[0]);
debug_info('SUM', '<samp style="color: #888;">', $query, '</samp> =&gt; Suma <kbd>', $sum, '</kbd>');
debug_error($execute->errstr) if $execute->err;
return $sum;
}
=head2 AVG(%SELECT)
Constructs and executes a valid SELECT AVG(C<$SELECT{FIELDS}>) statement with
the input arguments and returns the requested average.
=head3 Arguments:
- B<%SELECT>: SELECT statement elements.
=cut
sub AVG {
my %SELECT = @_;
$SELECT{FIELDS} = !is_empty($SELECT{FIELDS}) ? strval('AVG(', $SELECT{FIELDS}, ')') : '';
my $query = SELECT(%SELECT);
my $execute = $DBH->prepare($query);
$execute->execute();
my $avg = numval(($execute->fetchrow_array())[0]);
debug_info('AVG', '<samp style="color: #888;">', $query, '</samp> =&gt; Media <kbd>', $avg, '</kbd>');
debug_error($execute->errstr) if $execute->err;
return $avg;
}
=head2 UNION(@SELECTS)
Concatenates a list of SELECT statements into a valid UNION sentence.
=head3 Arguments:
- B<@SELECTS>: SELECT statement list.
=cut
sub UNION {
return trim(strval_join(' UNION ', @_));
}
sub FIELDS {
my $fields = trim(strval_join(', ', @_));
return !is_empty($fields) ? strval(' ', $fields) : '';
}
sub FROM {
my $from = trim(strval_join(', ', @_));
return !is_empty($from) ? strval(' FROM ', $from) : '';
}
sub JOINS {
my $joins = trim(strval_join(' ', @_));
return !is_empty($joins) ? strval(' ', $joins) : '';
}
sub WHERE {
my $where = trim(AND(@_));
return !is_empty($where) ? strval(' WHERE ', $where) : '';
}
sub GROUP_BY {
my $group_by = trim(strval_join(', ', @_));
return !is_empty($group_by) ? strval(' GROUP BY ', $group_by) : '';
}
sub HAVING {
my $having = trim(shift);
return !is_empty($having) ? strval(' HAVING ', $having) : '';
}
sub ORDER_BY {
my $order_by = trim(strval_join(', ', @_));
return !is_empty($order_by) ? strval(' ORDER BY ', $order_by) : '';
}
sub LIMIT {
my $limit = trim(shift);
return !is_empty($limit) ? strval(' LIMIT ', $limit) : '';
}
sub CLOSED {
my $sentence = trim(shift);
return !is_empty($sentence) ? strval(' ( ', $sentence, ' )') : '';
}
sub AND {
my $conditions = trim(strval_join(' AND ', @_));
return !is_empty($conditions) ? strval(' ', $conditions) : '';
}
sub OR {
my $conditions = trim(strval_join(' OR ', @_));
return !is_empty($conditions) ? strval(' ', $conditions) : '';
}
sub NOT {
my $sentence = trim(shift);
return !is_empty($sentence) ? strval(' NOT ', $sentence) : '';
}
sub COMPARE {
my ($field, $op, $value) = @_;
$field = trim($field);
$op = trim(one_space(uc($op)));
return '' if is_empty($field) || is_empty($op);
$value = trim($value);
if (is_empty($value)) {
return is_eq($op, 'IS NULL') || is_eq($op, 'IS NOT NULL') ? strval(' ', $field, ' ', $op) : '';
}
return strval(' ', $field, ' IS NULL') if is_eq($op, '=') && is_eq(uc($value), 'NULL');
return strval(' ', $field, ' IS NOT NULL') if is_eq($op, '!=') && is_eq(uc($value), 'NULL');
return strval(' ', $field, ' ', $op, ' ', $value);
}
sub COMPARE_STR {
my ($field, $op, $string) = @_;
$field = trim($field);
$op = trim(one_space(uc($op)));
return '' if is_empty($field) || is_empty($op);
if (is_empty(trim($string))) {
return is_eq($op, 'IS NULL') || is_eq($op, 'IS NOT NULL') ? strval(' ', $field, ' ', $op) : '';
}
return strval(' ', $field, ' IS NULL') if is_eq($op, '=') && is_eq(uc($string), 'NULL');
return strval(' ', $field, ' IS NOT NULL') if is_eq($op, '!=') && is_eq(uc($string), 'NULL');
return strval(' ', $field, ' ', $op, " '", $string, "'");
}
sub COMPARE_DATE {
return COMPARE_STR(@_);
}
sub COMPARE_FIELDS {
return COMPARE(@_);
}
sub BETWEEN {
my ($field, $ini, $end) = @_;
my $c1 = COMPARE($field, '>=', $ini);
my $c2 = COMPARE($field, '<=', $end);
return is_empty($c1) || is_empty($c2) ? strval($c1, $c2) : strval(' (', $c1, ' AND', $c2, ' )');
}
sub BETWEEN_STR {
my ($field, $ini, $end) = @_;
my $c1 = COMPARE_STR($field, '>=', $ini);
my $c2 = COMPARE_STR($field, '<=', $end);
return is_empty($c1) || is_empty($c2) ? strval($c1, $c2) : strval(' (', $c1, ' AND', $c2, ' )');
}
sub BETWEEN_DATES {
return BETWEEN_STR(@_);
}
sub EXISTS {
my $sentence = shift;
return !is_empty($sentence) ? strval(' EXISTS ( ', $sentence, ' )') : '';
}
sub IN_FIELD {
my ($field, $values) = @_;
$field = trim($field);
$values = trim($values);
return '' if is_empty($field) || is_empty($values);
my $isnot = is_eq(substr($values, 0, 1), '!');
$values = substr($values, 1) if $isnot;
my @values = split(m/('[^']+'|"[^"]+"|[^,]+)(?:\s*,\s*)?/, $values);
my $isnull = '';
my @nulls = ("'NULL'", '"NULL"', 'NULL');
my @infield = ();
foreach my $value (@values) {
if (!is_empty($value)) {
if (in_array($value, \@nulls)) {
$isnull = $isnot ? "$field IS NOT NULL" : "$field IS NULL";
}
else {
push(@infield, $value);
}
}
}
return $isnull if scalar(@infield) == 0;
my $infield = strval($field, $isnot ? ' NOT IN ( ' : ' IN ( ', strval_join(', ', @infield), ' )');
return is_empty($isnull) ? $infield : strval("( $infield ", $isnot ? 'AND' : 'OR', " $isnull )");
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

189
Dam/Debug.pm Normal file
View file

@ -0,0 +1,189 @@
=head1 NAME
Dam::Debug
=head1 DESCRIPTION
API for handling error, warning, information and debug messages.
=head1 FUNCTIONS
=cut
use strict;
use warnings;
use utf8;
package Dam::Debug;
use Exporter qw(import);
our @EXPORT = qw(
report_error report_warning report_info
debug_error debug_info debug
);
use Date::Calc qw(Now);
use Dam::Util;
use Dam::Var;
=head2 report_error(@message)
Push an error message to display in report execution.
=head3 Arguments:
- B<@message> (must): Error message formed by one or more strings.
=cut
sub report_error {
my $error = strval(@_);
my $REPORT_ERROR = RESERVED('REF_REPORT_ERROR');
push(@$REPORT_ERROR, $error) if !is_empty($error);
}
=head2 report_warning(@message)
Push a warning message to display in report execution.
=head3 Arguments:
- B<@message> (must): Warning message formed by one or more strings.
=cut
sub report_warning {
my $warning = strval(@_);
my $REPORT_WARNING = RESERVED('REF_REPORT_WARNING');
push(@$REPORT_WARNING, $warning) if !is_empty($warning);
}
=head2 report_info(@message)
Push an information message to display in report execution.
=head3 Arguments:
- B<@message> (must): Information message formed by one or more strings.
=cut
sub report_info {
my $info = strval(@_);
my $REPORT_INFO = RESERVED('REF_REPORT_INFO');
push(@$REPORT_INFO, $info) if !is_empty($info);
}
=head2 debug_error(@message)
Prepares a message with current time to display (according to
B<CONFIG('DEBUG_MODE')>) with all code debug messages sorted at the beginning of
the current report.
=head3 Arguments:
- B<@message>: Error message formed by one or more strings.
=cut
sub debug_error {
my $DEBUG_INFO = RESERVED('REF_DEBUG_INFO');
push(@$DEBUG_INFO, strval('[', sprintf("%02d:%02d:%02d", Now()), '] <strong style="color: red;">ERROR!</strong> <samp style="color: navy;">', @_, '</samp>')) if CONFIG('DEBUG_MODE');
}
=head2 debug_info($title, @message)
Prepare a message with current time, a short title and data of the function and
the call files, to show (according to B<CONFIG('DEBUG_MODE')>) with all code
debugging messages sorted at the beginning of the current report.
=head3 Arguments:
- B<$title> (must): Short title to show.
- B<@message>: Message formed by one or more strings.
=cut
sub debug_info {
my ($title, @message) = @_;
if (CONFIG('DEBUG_MODE')) {
my ($p0, $filename0, $line0) = caller(1);
$filename0 = substr($filename0, 3);
my ($p1, $filename1, $line1, $subroutine1) = caller(2);
$filename1 = substr($filename1, 3);
my $DEBUG_INFO = RESERVED('REF_DEBUG_INFO');
push(@$DEBUG_INFO, strval(
'[', sprintf("%02d:%02d:%02d", Now()), '] <strong>', $title, '</strong>: ',
'<code>', $filename0, '</code> línea ', $line0, ' (<code>', substr($subroutine1, 9), '</code>)',
index($filename1, 'CGI/Application.pm') == -1 ? strval(', desde <code>', $filename1, '</code> línea ', $line1) : '',
'.<br />', @message
));
}
}
=head2 debug($title, @message)
Prepare a message with current time and a short title to display (according to
B<CONFIG('DEBUG_MODE')>) with all code debugging messages sorted at the
beginning of the current report.
=head3 Arguments:
- B<$title> (must): Short title to show.
- B<@message>: Message formed by one or more strings.
=cut
sub debug {
my ($title, @message) = @_;
my $DEBUG_INFO = RESERVED('REF_DEBUG_INFO');
push(@$DEBUG_INFO, strval('[', sprintf("%02d:%02d:%02d", Now()), '] <strong>', $title, '</strong>: ', @message)) if CONFIG('DEBUG_MODE');
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

21
Dam/LICENSE Normal file
View file

@ -0,0 +1,21 @@
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.

728
Dam/Util.pm Normal file
View file

@ -0,0 +1,728 @@
=head1 NAME
Dam::Util
=head1 DESCRIPTION
Global functions for applications created using the Dam framework.
=head1 FUNCTIONS
=cut
use strict;
use warnings;
use utf8;
package Dam::Util;
use Exporter qw(import);
our @EXPORT = qw(
TRUE FALSE
ARG_OPTIONAL ARG_REQUIRED ARG_DEFAULT
_DIVIDER_
is_true is_empty is_eq is_num
numval pctval sumval
strval strval_trio strval_join trim
one_space escape_quotes
array in_array index_in_array occurrences_in_array match_arrays array_uniq
fatal warning info
check_arguments
format_num format_pct format_date_dmy get_today_ymd
csv_header csv_line
);
use Date::Calc qw(Today);
use Scalar::Util qw(looks_like_number);
use constant {
TRUE => 1,
FALSE => 0,
ARG_OPTIONAL => 0,
ARG_REQUIRED => 1,
ARG_DEFAULT => 2,
_DIVIDER_ => '_DIVIDER_'
};
=head2 is_true($var)
Returns C<TRUE> if C<$var> is not C<undef> and has a value other than C<0>, or
C<'0'> or the empty string C<''>. Or C<FALSE> otherwise.
=head3 Arguments:
- B<$var> (must): Variable to check.
=cut
sub is_true {
my $var = shift;
return defined($var) && $var ne '' && $var ne '0' ? TRUE : FALSE;
}
=head2 is_empty($var)
Returns C<TRUE> if C<$var> is C<undef> or the empty string C<''>. Or C<FALSE>
otherwise.
=head3 Arguments:
- B<$var> (must): Variable to check.
=cut
sub is_empty {
my $var = shift;
return !defined($var) || $var eq '' ? TRUE : FALSE;
}
=head2 is_eq($var, $str)
Returns C<TRUE> if C<$var> is not C<undef>, C<$str> is not C<undef> and they are
equals. Or C<FALSE> otherwise.
=head3 Arguments:
- B<$var> (must): Variable to check.
- B<$str> (must): Value to compare.
=cut
sub is_eq {
my ($var, $str) = @_;
return defined($var) && defined($str) && $var eq $str ? TRUE : FALSE;
}
=head2 is_num($num)
Returns C<TRUE> if C<$num> is a number, or C<FALSE> otherwise.
=head3 Arguments:
- B<$num> (must): Number to check.
=cut
sub is_num {
return looks_like_number(shift) ? TRUE : FALSE;
}
=head2 numval($num)
Returns C<$num> when C<is_num($num)>. Returns C<0> when C<is_empty($num)>. And
C<undef> otherwise.
=head3 Arguments:
- B<$num> (must): Number to check.
=cut
sub numval {
my $num = shift;
return $num if is_num($num);
return 0 if is_empty($num);
warning('Invalid number');
return undef;
}
=head2 pctval($numerator, $denominator, $decimals, $byzero)
Returns (C<$numerator> * 100) / C<$denominator> if C<is_num($numerator)>,
C<is_num($denominator)> and C<$denominator> is not C<0>. Otherwise it will
return C<undef>.
=head3 Arguments:
- B<$numerator> (must): The numerator of the percentage to calculate.
- B<$denominator> (must): The denominator of the percentage to calculate.
- B<$decimals> (optional): Maximum number of decimal places for the result.
- B<$byzero> (optional): If C<is_true($byzero)> it will send a warning message
when C<$denominator> is zero.
=cut
sub pctval {
my ($numerator, $denominator, $decimals, $byzero) = @_;
$numerator = 0 if is_empty($numerator);
if (is_num($numerator) && is_num($denominator)) {
warning('Invalid number of decimals') if !is_empty($decimals) && (!is_num($decimals) || $decimals < 0 || !($decimals - int($decimals)));
if ($denominator != 0) {
my $pctval = $numerator * 100 / $denominator;
return is_empty($decimals) ? $pctval : sprintf("%.${decimals}f", $pctval);
}
warning('Division by zero') if is_true($byzero);
return undef;
}
warning('Invalid numerator') if !is_num($numerator);
warning('Invalid denominator') if !is_num($denominator);
return undef;
}
=head2 sumval(@items)
Sum all the items in C<@items> considering each one as C<numval($item)>.
=head3 Arguments:
- B<@items> (must): List of items to add.
=cut
sub sumval {
my $sum = 0;
foreach my $item (@_) {
$sum += numval($item);
}
return $sum;
}
=head2 strval(@str)
Returns the concatenation of all strings in C<@str>, considering C<undef> as the
empty string C<''>.
=head3 Arguments:
- B<@str> (must): Array of strings to concatenate.
=cut
sub strval {
my $strval = '';
foreach my $str (@_) {
$strval .= defined($str) ? $str : '';
}
return $strval;
}
=head2 strval_trio($str1, $separator, $str2)
Returns the concatenation of the strings C<$str1>, C<$separator> and C<$str2> if
not C<is_empty($str1)> and not C<is_empty($str2)>. Otherwise it returns the
string C<$str1> or C<$str2> that is not empty, or the empty string C<''> if
both are.
=head3 Arguments:
- B<$str1> (optional): First string.
- B<$separator> (must): Separation string.
- B<$str2> (optional): Second string.
=cut
sub strval_trio {
my ($str1, $separator, $str2) = @_;
return strval($str1, $separator, $str2) if !is_empty($str1) && !is_empty($str2);
return strval($str1) if is_empty($str2);
return strval($str2);
}
=head2 strval_join($separator, @str)
Returns the concatenation of the (not empty) strings of C<@str> or the
referenced array of strings instead, using the string C<$separator> as the
separation between each one.
=head3 Arguments:
- B<$separator> (must): Separation string.
- B<@str> (must): Strings or reference to the array of strings to concatenate.
=cut
sub strval_join {
my ($separator, @str) = @_;
return '' if !@str;
@str = @{$str[0]} if scalar(@str) == 1 && ref($str[0]) eq 'ARRAY';
$separator = '' if is_empty($separator);
return join($separator, grep { !is_empty($_) } @str);
}
=head2 trim($str)
Returns a string whose leading and trailing spaces have been removed from
C<$str>. Or the empty string C<''> if C<is_empty($str)>.
=head3 Arguments:
- B<$str> (must): String to process.
=cut
sub trim {
my $str = shift;
return '' if is_empty($str);
$str =~ s/^\s+|\s+$//g;
return $str;
}
=head2 one_space($str)
Returns a string that converts the sequences of two or more consecutive spaces
of C<$str> into a single space. Or the empty string C<''> if
C<is_empty($str)>.
=head3 Arguments:
- B<$str> (must): String to process.
=cut
sub one_space {
my $str = shift;
return '' if is_empty($str);
$str =~ s/\s+/ /g;
return $str;
}
=head2 escape_quotes($str)
Returns the same string C<$str> by putting an escape character in front of each
escape character, single quote or double quote. Or the empty string C<''> if
C<is_empty($str)>.
=head3 Arguments:
- B<$str> (must): String to process.
=cut
sub escape_quotes {
my $str = shift;
return '' if is_empty($str);
$str =~ s/('|"|\\)/\\$1/g;
return $str;
}
=head2 array($var)
If C<$var> is a reference to an array then it returns the array. If it is a
variable then it returns an array with that element. It returns an empty array
otherwise.
=head3 Arguments:
- B<$var> (must): Variable (or reference to the array) to check.
=cut
sub array {
my $var = shift;
return () if !defined($var);
return ref($var) eq 'ARRAY' ? @{$var} : ( $var );
}
=head2 in_array($element, @array)
Returns C<TRUE> if C<$element> is in array C<@array> or in the referenced array
instead. Or C<FALSE> otherwise.
=head3 Arguments:
- B<$element> (must): Element to search.
- B<@array> (must): Array (or reference to the array) in which the element is
searched.
=cut
sub in_array {
my ($element, @array) = @_;
return FALSE if !defined($element) || !@array;
@array = @{$array[0]} if scalar(@array) == 1 && ref($array[0]) eq 'ARRAY';
my %hash_array = map { $_ => 1 } @array;
return defined($hash_array{$element}) ? TRUE : FALSE;
}
=head2 index_in_array($element, @array)
Returns the position where C<$element> is in array C<@array> or in the array
referenced instead, with C<0> being the first position in the array. Or it
returns C<-1> if there are no arguments or the element is not found.
=head3 Arguments:
- B<$element> (must): Element to search.
- B<@array> (must): Array (or reference to the array) in which the element is
searched.
=cut
sub index_in_array {
my ($element, @array) = @_;
return -1 if !defined($element) || !@array;
@array = @{$array[0]} if scalar(@array) == 1 && ref($array[0]) eq 'ARRAY';
my $index = 0;
foreach my $current (@array) {
return $index if $current eq $element;
$index++;
}
return -1;
}
=head2 occurrences_in_array($element, @array)
Returns the number of occurrences of C<$element> in array C<@array> or in the
referenced array instead. Or it returns C<-1> if there are no arguments.
=head3 Arguments:
- B<$element> (must): Element to search.
- B<@array> (must): Array (or reference to the array) in which the element is
searched.
=cut
sub occurrences_in_array {
my ($element, @array) = @_;
return -1 if !defined($element) || !@array;
@array = @{$array[0]} if scalar(@array) == 1 && ref($array[0]) eq 'ARRAY';
return grep { $_ eq $element } @array;
}
=head2 match_arrays($array_ref1, $array_ref2)
Returns C<TRUE> if arrays C<@$array_ref1> and C<@$array_ref2> have one or more
equal elements. Or C<FALSE> otherwise.
=head3 Arguments:
- B<$array_ref1> (required): Reference to the first array.
- B<$array_ref2> (required): Reference to the second array.
=cut
sub match_arrays {
my ($array_ref1, $array_ref2) = @_;
foreach my $match (@{$array_ref1}) {
return TRUE if in_array($match, $array_ref2);
}
return FALSE;
}
=head2 array_uniq(@array)
Returns a new array without duplicate elements of array C<@array>.
=head3 Arguments:
- B<@array> (required): Array to process.
=cut
sub array_uniq {
my %seen;
grep !is_empty($_) && !$seen{$_}++, @_;
}
=head2 fatal(@message)
Sends error message C<strval(@message)> to STDERR and abort program execution.
=head3 Arguments:
- B<@message> (optional): Error message consisting of one or more strings.
=cut
sub fatal {
my $message = strval(@_);
$message .= '. ' if !is_empty($message);
$message .= 'Fatal error';
my @call1 = caller(2);
my @call2 = caller(1);
die strval($message, ' at ', $call1[1], ' line ', $call1[2], '. See ', $call1[3], ' at ', $call2[1], ' line ', $call2[2], '. Info');
}
=head2 warning(@message)
Sends error message C<strval(@message)> to STDERR but does not abort program
execution.
=head3 Arguments:
- B<@message> (optional): Warning message consisting of one or more strings.
=cut
sub warning {
my $message = strval(@_);
$message .= '. ' if !is_empty($message);
$message .= 'Warning';
my @call1 = caller(2);
my @call2 = caller(1);
print STDERR strval($message, ' at ', $call1[1], ' line ', $call1[2], '. See ', $call1[3], ' at ', $call2[1], ' line ', $call2[2], "\n");
}
=head2 info(@message)
Sends information message C<strval(@message)> to STDERR.
=head3 Arguments:
- B<@message> (optional): Information message consisting of one or more
strings.
=cut
sub info {
print STDERR strval(@_, "\n");
}
sub check_arguments {
my ($arg_ref, %ARGUMENTS) = @_;
my @valid_args = keys(%ARGUMENTS);
foreach my $arg (keys(%$arg_ref)) {
fatal('Invalid "', $arg, '" argument') if !in_array($arg, \@valid_args);
}
foreach my $arg (@valid_args) {
my @values = array($ARGUMENTS{$arg});
if (@values) {
my $required = shift(@values);
my $ref_value_0 = ref($values[0]);
if ($required == ARG_DEFAULT) {
if (is_empty($$arg_ref{$arg}) && @values) {
if (is_empty($ref_value_0)) {
$$arg_ref{$arg} = $values[0];
}
elsif (is_eq($ref_value_0, 'ARRAY')) {
$$arg_ref{$arg} = (@{$values[0]});
}
elsif (is_eq($ref_value_0, 'HASH')) {
$$arg_ref{$arg} = {%{$values[0]}};
}
else {
$$arg_ref{$arg} = ${$values[0]};
}
}
fatal('Default value for "', $arg, '" is required') if !defined($$arg_ref{$arg});
push(@values, $$arg_ref{$arg}) if !in_array($$arg_ref{$arg}, \@values);
}
elsif ($required == ARG_REQUIRED) {
fatal('Value for "', $arg, '" is required') if !defined($$arg_ref{$arg});
}
elsif ($required != ARG_OPTIONAL) {
fatal('Type of argument not recognized');
}
fatal('Invalid "', $arg, '" value "', $$arg_ref{$arg}, '"') if @values && !is_empty($$arg_ref{$arg}) && !in_array($$arg_ref{$arg}, \@values);
}
}
}
sub format_num {
my ($number, %arg) = @_;
check_arguments(\%arg,
FORMAT => [ ARG_OPTIONAL ],
ZERO => [ ARG_DEFAULT, FALSE, TRUE ],
DECIMALS => [ ARG_DEFAULT, 0 ],
DEC_POINT => [ ARG_DEFAULT, ',' ],
THOUSANDS_SEP => [ ARG_DEFAULT, '.', 'none' ]
);
$number = trim($number);
return '' if is_empty($number);
return $number if in_array($number, '&infin;', '~');
return '' if !is_num($number);
$number = numval($number);
return '' if $number == 0 && !is_true($arg{ZERO});
return sprintf($arg{FORMAT}, $number) if !is_empty($arg{FORMAT});
$number = sprintf("%.$arg{DECIMALS}f", $number);
eval "\$number =~ tr/./$arg{DEC_POINT}/";
eval "\$number =~ s/(\\d)(?=(\\d{3})+(\\D|\$))/\$1\$arg{THOUSANDS_SEP}/g" if !is_eq($arg{THOUSANDS_SEP}, 'none');
return $number;
}
sub format_pct {
my ($number, %arg) = @_;
check_arguments(\%arg,
ZERO => [ ARG_DEFAULT, FALSE, TRUE ],
DECIMALS => [ ARG_DEFAULT, 2 ]
);
$number = format_num($number, %arg);
return is_empty($number) ? '' : strval($number, '%');
}
sub format_date_dmy {
my $date = shift;
return '' if is_empty($date);
my @date = split('-', $date);
return '' if is_empty($date[2]) || is_empty($date[1]) || is_empty($date[0]);
return sprintf("%02d/%02d/%04d", $date[2], $date[1], $date[0]);
}
=head2 get_today_ymd()
Devuelve la fecha actual en el formato AAAA-MM-DD.
=cut
sub get_today_ymd {
my ($y, $m, $d) = Today();
return ($y, sprintf("%02d", $m), sprintf("%02d", $d));
}
sub csv_header {
my %arg = @_;
check_arguments(\%arg,
SEPARATOR => [ ARG_DEFAULT, ';' ],
REPLACE => [ ARG_DEFAULT, ',' ],
HEADER => [ ARG_OPTIONAL ]
);
return __csv_line($arg{SEPARATOR}, $arg{REPLACE}, $arg{HEADER});
}
sub csv_line {
my %arg = @_;
check_arguments(\%arg,
SEPARATOR => [ ARG_DEFAULT, ';' ],
REPLACE => [ ARG_DEFAULT, ',' ],
DATA => [ ARG_OPTIONAL ]
);
return __csv_line($arg{SEPARATOR}, $arg{REPLACE}, $arg{DATA});
}
sub __csv_line {
my ($separator, $replace, $data) = @_;
my $line = '';
foreach my $field (@$data) {
if (!is_empty($field)) {
$field =~ s/$separator/$replace/g;
$line .= trim($field);
}
$line .= $separator;
}
chop($line);
return strval($line, "\r\n");
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

299
Dam/Var.pm Normal file
View file

@ -0,0 +1,299 @@
=head1 NAME
Dam::Var
=head1 DESCRIPTION
API for global variables.
=head1 FUNCTIONS
=cut
use strict;
use warnings;
use utf8;
package Dam::Var;
use Exporter qw(import);
our @EXPORT = qw(
UNDEF_VAR
DELETE_VAR
CONFIG
GLOBAL
RESERVED
);
use constant {
UNDEF_VAR => 'K9a(fz=D>vFy3m485jE]:Jm2B@3Ou6',
DELETE_VAR => '5s<N0U{R_hNgQn@CyKoD(]rUWO)mbW'
};
use Cwd;
use Dam::Util;
# CONFIGURATION VARIABLES:
# Today:
my ($y, $m, $d) = get_today_ymd();
# Version news:
my @LAST_CHANGELOG = ();
my @PREV_CHANGELOG = ();
# No access groups:
my @ACCESS_GROUPS = ();
# Menus:
my %ROUTES = ();
my %USER_MENU = (
ID => 'Admin',
TEXT => 'User',
OPTIONS => {
M_01 => { RUN => 'RUN_close', ICON => 'off', ACCESS => [ 1 ], TEXT => 'Close session' }
}
);
my %CONFIG_VARS = (
# DEBUG MODE (0 = PRODUCTION, 1 = DEVELOPMENT, 2 = TESTING):
DEBUG_MODE => 1,
# APPLICATION NAME AND SLOGAN:
APP_NAME => 'My Application',
APP_MNEMO => 'App',
APP_SLOGAN => '',
# APP FOLDERS & RESOURCE URL:
DIR_APP => getcwd(),
DIR_TEMPLATES => strval(getcwd(), '/templates'),
DIR_UPLOADS => strval(getcwd(), '/uploads'),
ROOT_WWW => '/',
# DATABASE ACCESS CONFIGURATION:
DB_DSN => 'DBI:mysql:database=dbname;host=hostname',
DB_USER => 'user',
DB_PASSWORD => 'password',
# LDAP DOMAIN/SERVER:
LDAP_DOMAIN => '',
# MESSAGES TRANSLATION:
l10n => 'EN_en',
# MAX SIZE FOR UPLOADED FILES (5MB):
UPLOAD_MAX_FILESIZE => 5 * 1024 * 1024,
# FOOTER COPYRIGHT:
FOOTER_COPYRIGHT => strval('&copy; ', $y, ' Made with Dam Framework'),
# VERSION VARIABLES:
VERSION => '0.01',
REF_LAST_CHANGELOG => \@LAST_CHANGELOG,
REF_PREV_CHANGELOG => \@PREV_CHANGELOG,
# ACCESS GROUPS FOR USERS REFERENCE:
REF_ACCESS_GROUPS => \@ACCESS_GROUPS,
# MENU REFERENCES:
REF_ROUTES => \%ROUTES,
REF_USER_MENU => \%USER_MENU
);
# GLOBAL VARIABLES:
my %GLOBAL_VARS = ();
# RESERVED VARIABLES:
# Error, warning, information and debug messages:
my @REPORT_ERROR = ();
my @REPORT_WARNING = ();
my @REPORT_INFO = ();
my @DEBUG_INFO = ();
my %RESERVED_VARS = (
# CGI APP:
CGIAPP => undef,
# ERROR, WARNING, INFORMATION AND DEBUG MESSAGES:
REF_REPORT_ERROR => \@REPORT_ERROR,
REF_REPORT_WARNING => \@REPORT_WARNING,
REF_REPORT_INFO => \@REPORT_INFO,
REF_DEBUG_INFO => \@DEBUG_INFO,
# CURRENT REPORT:
REF_CURRENT_PACKAGE => undef
);
=head2 CONFIG($variable, $value)
Mantiene una estructura global de variables ($variable => $value).
=cut
sub CONFIG {
push(@_, undef) if @_ % 2;
my %variables = @_;
my @variables = keys(%variables);
if (!@variables) {
foreach my $var (keys(%CONFIG_VARS)) {
info($var, ' => ', strval($CONFIG_VARS{$var}));
}
fatal('Global configuration variable name is required');
}
my $variable;
foreach my $var (@variables) {
fatal('Global configuration variable "', $var, '" doesn\'t exist') if !exists($CONFIG_VARS{$var});
if (defined($variables{$var})) {
fatal('Global configuration variables cannot be deleted (see "', $var, '")') if is_eq($variables{$var}, DELETE_VAR);
$CONFIG_VARS{$var} = $variables{$var};
}
$variable = $var;
}
return $CONFIG_VARS{$variable};
}
=head2 GLOBAL($variable, $value)
Mantiene una estructura global de variables ($variable => $value).
=cut
sub GLOBAL {
push(@_, undef) if @_ % 2;
my %variables = @_;
my @variables = keys(%variables);
if (!@variables) {
foreach my $var (keys(%GLOBAL_VARS)) {
info($var, ' => ', strval($GLOBAL_VARS{$var}));
}
fatal('Global variable name is required');
}
my $variable;
foreach my $var (@variables) {
__assign(\%GLOBAL_VARS, \%variables, $var);
$variable = $var;
}
return exists($GLOBAL_VARS{$variable}) ? $GLOBAL_VARS{$variable} : undef;
}
=head2 RESERVED($variable, $value)
Mantiene una estructura global de variables ($variable => $value).
=cut
sub RESERVED {
my $caller = caller();
$caller = substr($caller, 0, index($caller, '::'));
fatal('Reserved variables can only be used by Dam framework') if !is_eq($caller, 'Dam');
push(@_, undef) if @_ % 2;
my %variables = @_;
my @variables = keys(%variables);
if (!@variables) {
foreach my $var (keys(%RESERVED_VARS)) {
info($var, ' => ', strval($RESERVED_VARS{$var}));
}
fatal('Reserved variable name is required');
}
my $variable;
foreach my $var (@variables) {
__assign(\%RESERVED_VARS, \%variables, $var);
$variable = $var;
}
return exists($RESERVED_VARS{$variable}) ? $RESERVED_VARS{$variable} : undef;
}
# PRIVATE FUNCTIONS:
sub __assign {
my ($VARS_ref, $variables_ref, $var) = @_;
if (defined($$variables_ref{$var})) {
if (is_eq($$variables_ref{$var}, UNDEF_VAR)) {
$$VARS_ref{$var} = undef;
}
elsif (is_eq($$variables_ref{$var}, DELETE_VAR)) {
delete($$VARS_ref{$var});
}
else {
$$VARS_ref{$var} = $$variables_ref{$var};
}
}
}
1;
=head1 AUTHOR
Manuel Cillero C<< <manuel@cillero.es> >>
=head1 COPYRIGHT
The MIT License (MIT)
Copyright (c) 2004-2020 Manuel Cillero. All rights reserved.
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.
=cut

File diff suppressed because one or more lines are too long

6
www/dam/css/bootstrap-select.min.css vendored Normal file

File diff suppressed because one or more lines are too long

6
www/dam/css/bootstrap.min.css vendored Normal file

File diff suppressed because one or more lines are too long

4
www/dam/css/html5shiv.min.js vendored Normal file
View file

@ -0,0 +1,4 @@
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);

0
www/dam/css/ie8.css Normal file
View file

View file

@ -0,0 +1,122 @@
/*
You probably do not need to edit this at all.
Add some SmartMenus required styles not covered in Bootstrap 3's default CSS.
These are theme independent and should work with any Bootstrap 3 theme mod.
*/
/* sub menus arrows on desktop */
.navbar-nav:not(.sm-collapsible) ul .caret {
position: absolute;
right: 0;
margin-top: 6px;
margin-right: 15px;
border-top: 4px solid transparent;
border-bottom: 4px solid transparent;
border-left: 4px dashed;
}
.navbar-nav:not(.sm-collapsible) ul a.has-submenu {
padding-right: 30px;
}
/* make sub menu arrows look like +/- buttons in collapsible mode */
.navbar-nav.sm-collapsible .caret, .navbar-nav.sm-collapsible ul .caret {
position: absolute;
right: 0;
margin: -3px 15px 0 0;
padding: 0;
width: 32px;
height: 26px;
line-height: 24px;
text-align: center;
border-width: 1px;
border-style: solid;
}
.navbar-nav.sm-collapsible .caret:before {
content: '+';
font-family: monospace;
font-weight: bold;
}
.navbar-nav.sm-collapsible .open > a > .caret:before {
content: '-';
}
.navbar-nav.sm-collapsible a.has-submenu {
padding-right: 50px;
}
/* revert to Bootstrap's default carets in collapsible mode when the "data-sm-skip-collapsible-behavior" attribute is set to the ul.navbar-nav */
.navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] .caret, .navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] ul .caret {
position: static;
margin: 0 0 0 2px;
padding: 0;
width: 0;
height: 0;
border-top: 4px dashed;
border-right: 4px solid transparent;
border-bottom: 0;
border-left: 4px solid transparent;
}
.navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] .caret:before {
content: '' !important;
}
.navbar-nav.sm-collapsible[data-sm-skip-collapsible-behavior] a.has-submenu {
padding-right: 15px;
}
/* scrolling arrows for tall menus */
.navbar-nav span.scroll-up, .navbar-nav span.scroll-down {
position: absolute;
display: none;
visibility: hidden;
height: 20px;
overflow: hidden;
text-align: center;
}
.navbar-nav span.scroll-up-arrow, .navbar-nav span.scroll-down-arrow {
position: absolute;
top: -2px;
left: 50%;
margin-left: -8px;
width: 0;
height: 0;
overflow: hidden;
border-top: 7px dashed transparent;
border-right: 7px dashed transparent;
border-bottom: 7px solid;
border-left: 7px dashed transparent;
}
.navbar-nav span.scroll-down-arrow {
top: 6px;
border-top: 7px solid;
border-right: 7px dashed transparent;
border-bottom: 7px dashed transparent;
border-left: 7px dashed transparent;
}
/* add more indentation for 2+ level sub in collapsible mode - Bootstrap normally supports just 1 level sub menus */
.navbar-nav.sm-collapsible ul .dropdown-menu > li > a,
.navbar-nav.sm-collapsible ul .dropdown-menu .dropdown-header {
padding-left: 35px;
}
.navbar-nav.sm-collapsible ul ul .dropdown-menu > li > a,
.navbar-nav.sm-collapsible ul ul .dropdown-menu .dropdown-header {
padding-left: 45px;
}
.navbar-nav.sm-collapsible ul ul ul .dropdown-menu > li > a,
.navbar-nav.sm-collapsible ul ul ul .dropdown-menu .dropdown-header {
padding-left: 55px;
}
.navbar-nav.sm-collapsible ul ul ul ul .dropdown-menu > li > a,
.navbar-nav.sm-collapsible ul ul ul ul .dropdown-menu .dropdown-header {
padding-left: 65px;
}
/* fix SmartMenus sub menus auto width (subMenusMinWidth and subMenusMaxWidth options) */
.navbar-nav .dropdown-menu > li > a {
white-space: normal;
}
.navbar-nav ul.sm-nowrap > li > a {
white-space: nowrap;
}
.navbar-nav.sm-collapsible ul.sm-nowrap > li > a {
white-space: normal;
}
/* fix .navbar-right subs alignment */
.navbar-right ul.dropdown-menu {
left: 0;
right: auto;
}

8
www/dam/css/outdatedbrowser.min.css vendored Normal file
View file

@ -0,0 +1,8 @@
/*!--------------------------------------------------------------------
STYLES "Outdated Browser"
Version: 1.1.2 - 2015
author: Burocratik
website: http://www.burocratik.com
* @preserve
-----------------------------------------------------------------------*/
#outdated{display:none;position:fixed;top:0;left:0;width:100%;height:170px;text-align:center;text-transform:uppercase;z-index:1500;background-color:#f25648;color:#fff}* html #outdated{position:absolute}#outdated h6{font-size:25px;line-height:25px;margin:30px 0 10px}#outdated p{font-size:12px;line-height:12px;margin:0}#outdated #btnUpdateBrowser{display:block;position:relative;padding:10px 20px;margin:30px auto 0;width:230px;color:#fff;text-decoration:none;border:2px solid #fff;cursor:pointer}#outdated #btnUpdateBrowser:hover{color:#f25648;background-color:#fff}#outdated .last{position:absolute;top:10px;right:25px;width:20px;height:20px}#outdated #btnCloseUpdateBrowser{display:block;position:relative;width:100%;height:100%;text-decoration:none;color:#fff;font-size:36px;line-height:36px}

162
www/dam/css/reports.css Normal file
View file

@ -0,0 +1,162 @@
/**
* Filter forms.
*/
.panel-filter {
margin-top: 20px;
}
.panel-filter .panel-heading {
font-size: 18px;
font-weight: bold;
text-shadow: 0 1px 0 #fff;
}
.panel-filter p.description {
margin-bottom: 1.2em;
font-size: 15px;
}
@media (min-width: 768px) {
.form-inline .form-group {
margin-right: 1em;
}
}
.form-inline .form-group {
margin-bottom: 1.8em;
}
.form-inline .form-group label {
display: block;
}
.form-inline .filter-buttons {
margin-top: 1.42857em;
padding-top: 4px;
}
label.required:after {
content: " *";
position: relative;
top: -0.2em;
color: red;
}
label.error {
margin-left: 4px;
font-size: 12px;
color: red;
}
input + label.error {
position: absolute;
top: 3.8em;
}
.input-date-date {
text-align: center;
width: 7em !important;
}
.input-date-year {
text-align: center;
}
.input-date-month {
text-align: center;
width: 10em !important;
}
.datepicker-dropdown {
z-index: 8888 !important;
}
.form-div {
position: relative;
}
.bootstrap-select > .dropdown-toggle {
height: 46px;
font-size: 18px;
line-height: 1.33333;
border-radius: 6px;
}
@media (min-width: 768px) {
.form-selectpicker {
width: 30%;
}
.form-group-node.form-selectpicker {
max-width: 260px;
}
}
.bootstrap-select.btn-group .dropdown-menu li a {
outline: none;
}
.bootstrap-select.btn-group .dropdown-menu li a span.text {
font-size: 18px;
}
.form-group-smaller .bootstrap-select.btn-group .dropdown-menu li a span.text {
font-size: inherit;
}
.tt-hint {
color: #999
}
.tt-menu {
margin: 12px 0;
padding: 8px 0;
max-height: 200px;
overflow-y: auto;
background-color: #fff;
border: 1px solid #ccc;
border: 1px solid rgba(0, 0, 0, 0.2);
-webkit-border-radius: 8px;
-moz-border-radius: 8px;
border-radius: 8px;
-webkit-box-shadow: 0 5px 10px rgba(0,0,0,.2);
-moz-box-shadow: 0 5px 10px rgba(0,0,0,.2);
box-shadow: 0 5px 10px rgba(0,0,0,.2);
}
.tt-menu,
.form-typeahead .typeahead,
span.twitter-typeahead {
width: 100%;
}
.tt-empty,
.tt-suggestion {
padding: 3px 1em;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.tt-suggestion:hover {
cursor: pointer;
color: #fff;
background-color: #0097cf;
}
.tt-suggestion.tt-cursor {
color: #fff;
background-color: #0097cf;
}
.tt-suggestion p {
margin: 0;
}
.tt-empty {
font-weight: bold;
}
@media (min-width: 768px) {
.form-typeahead {
width: 50%;
}
}
/**
* Info.
*/
.panel-informa .panel-heading {
font-family: SirinStencil, Georgia, serif;
font-size: 48px;
line-height: 48px;
color: #666;
padding: 2px 5px 6px;
}
.panel-informa > table tr > td {
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
}
.panel-informa > table tr > td:first-child {
font-weight: bold;
font-family: inherit;
color: #555;
width: 190px;
}
#debug-info ol > li {
word-break: break-word;
}

5
www/dam/css/respond.min.js vendored Normal file
View file

@ -0,0 +1,5 @@
/*! Respond.js v1.4.2: min/max-width media query polyfill * Copyright 2013 Scott Jehl
* Licensed under https://github.com/scottjehl/Respond/blob/master/LICENSE-MIT
* */
!function(a){"use strict";a.matchMedia=a.matchMedia||function(a){var b,c=a.documentElement,d=c.firstElementChild||c.firstChild,e=a.createElement("body"),f=a.createElement("div");return f.id="mq-test-1",f.style.cssText="position:absolute;top:-100em",e.style.background="none",e.appendChild(f),function(a){return f.innerHTML='&shy;<style media="'+a+'"> #mq-test-1 { width: 42px; }</style>',c.insertBefore(e,d),b=42===f.offsetWidth,c.removeChild(e),{matches:b,media:a}}}(a.document)}(this),function(a){"use strict";function b(){u(!0)}var c={};a.respond=c,c.update=function(){};var d=[],e=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}(),f=function(a,b){var c=e();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))};if(c.ajax=f,c.queue=d,c.regex={media:/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi,keyframes:/@(?:\-(?:o|moz|webkit)\-)?keyframes[^\{]+\{(?:[^\{\}]*\{[^\}\{]*\})+[^\}]*\}/gi,urls:/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,findStyles:/@media *([^\{]+)\{([\S\s]+?)$/,only:/(only\s+)?([a-zA-Z]+)\s?/,minw:/\([\s]*min\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/,maxw:/\([\s]*max\-width\s*:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/},c.mediaQueriesSupported=a.matchMedia&&null!==a.matchMedia("only all")&&a.matchMedia("only all").matches,!c.mediaQueriesSupported){var g,h,i,j=a.document,k=j.documentElement,l=[],m=[],n=[],o={},p=30,q=j.getElementsByTagName("head")[0]||k,r=j.getElementsByTagName("base")[0],s=q.getElementsByTagName("link"),t=function(){var a,b=j.createElement("div"),c=j.body,d=k.style.fontSize,e=c&&c.style.fontSize,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",c||(c=f=j.createElement("body"),c.style.background="none"),k.style.fontSize="100%",c.style.fontSize="100%",c.appendChild(b),f&&k.insertBefore(c,k.firstChild),a=b.offsetWidth,f?k.removeChild(c):c.removeChild(b),k.style.fontSize=d,e&&(c.style.fontSize=e),a=i=parseFloat(a)},u=function(b){var c="clientWidth",d=k[c],e="CSS1Compat"===j.compatMode&&d||j.body[c]||d,f={},o=s[s.length-1],r=(new Date).getTime();if(b&&g&&p>r-g)return a.clearTimeout(h),h=a.setTimeout(u,p),void 0;g=r;for(var v in l)if(l.hasOwnProperty(v)){var w=l[v],x=w.minw,y=w.maxw,z=null===x,A=null===y,B="em";x&&(x=parseFloat(x)*(x.indexOf(B)>-1?i||t():1)),y&&(y=parseFloat(y)*(y.indexOf(B)>-1?i||t():1)),w.hasquery&&(z&&A||!(z||e>=x)||!(A||y>=e))||(f[w.media]||(f[w.media]=[]),f[w.media].push(m[w.rules]))}for(var C in n)n.hasOwnProperty(C)&&n[C]&&n[C].parentNode===q&&q.removeChild(n[C]);n.length=0;for(var D in f)if(f.hasOwnProperty(D)){var E=j.createElement("style"),F=f[D].join("\n");E.type="text/css",E.media=D,q.insertBefore(E,o.nextSibling),E.styleSheet?E.styleSheet.cssText=F:E.appendChild(j.createTextNode(F)),n.push(E)}},v=function(a,b,d){var e=a.replace(c.regex.keyframes,"").match(c.regex.media),f=e&&e.length||0;b=b.substring(0,b.lastIndexOf("/"));var g=function(a){return a.replace(c.regex.urls,"$1"+b+"$2$3")},h=!f&&d;b.length&&(b+="/"),h&&(f=1);for(var i=0;f>i;i++){var j,k,n,o;h?(j=d,m.push(g(a))):(j=e[i].match(c.regex.findStyles)&&RegExp.$1,m.push(RegExp.$2&&g(RegExp.$2))),n=j.split(","),o=n.length;for(var p=0;o>p;p++)k=n[p],l.push({media:k.split("(")[0].match(c.regex.only)&&RegExp.$2||"all",rules:m.length-1,hasquery:k.indexOf("(")>-1,minw:k.match(c.regex.minw)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:k.match(c.regex.maxw)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},w=function(){if(d.length){var b=d.shift();f(b.href,function(c){v(c,b.href,b.media),o[b.href]=!0,a.setTimeout(function(){w()},0)})}},x=function(){for(var b=0;b<s.length;b++){var c=s[b],e=c.href,f=c.media,g=c.rel&&"stylesheet"===c.rel.toLowerCase();e&&g&&!o[e]&&(c.styleSheet&&c.styleSheet.rawCssText?(v(c.styleSheet.rawCssText,e,f),o[e]=!0):(!/^([a-zA-Z:]*\/\/)/.test(e)&&!r||e.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&("//"===e.substring(0,2)&&(e=a.location.protocol+e),d.push({href:e,media:f})))}w()};x(),c.update=x,c.getEmValue=t,a.addEventListener?a.addEventListener("resize",b,!1):a.attachEvent&&a.attachEvent("onresize",b)}}(this);

382
www/dam/css/stylesheet.css Normal file
View file

@ -0,0 +1,382 @@
/**
* Global
*/
html {
height: 100%;
}
body {
padding: 80px 0;
}
body.report {
position: relative;
min-height: 100%;
}
.panel {
border-radius: 0;
border-color: #444;
}
sup.alpha {
color: red !important;
}
sup.beta {
color: #6495ed !important;
}
/**
* Fonts.
*/
@font-face {
font-family: 'SirinStencil';
src: url(../fonts/sirinstencil-regular.eot);
src: url(../fonts/sirinstencil-regular.eot?#iefix) format('embedded-opentype'),
url(../fonts/sirinstencil-regular.woff2) format('woff2'),
url(../fonts/sirinstencil-regular.woff) format('woff'),
url(../fonts/sirinstencil-regular.ttf) format('truetype')
}
@font-face {
font-family: 'Codabar';
src: url(../fonts/codabar.eot);
src: url(../fonts/codabar.eot?#iefix) format('embedded-opentype'),
url(../fonts/codabar.woff2) format('woff2'),
url(../fonts/codabar.woff) format('woff'),
url(../fonts/codabar.ttf) format('truetype')
}
p.codabar {
font-family: Codabar;
font-size: 16px;
padding-top: 8px;
}
/**
* Navigation menu.
*/
.navbar-fixed-top {
z-index: 999;
}
.navbar .navbar-brand {
font-family: SirinStencil, Georgia, serif;
font-size: 38px;
padding: 12px 10px 0 20px;
}
.navbar-nav > li > a {
padding-left: 8px;
padding-right: 8px;
font-size: 18px;
}
.navbar-inverse .navbar-nav > li > a {
color: #c5c5c5;
}
.navbar-nav .dropdown-menu > li > a {
position: relative;
padding-left: 28px;
font-size: 16px;
}
.navbar-nav span.glyphicon {
display: none;
position: absolute;
font-size: 14px;
top: 7px;
left: 6px;
}
@media (min-width: 768px) {
.navbar-nav span.glyphicon {
display: block;
}
}
/**
* Loading spinner.
*/
#loading {
display: none;
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: #dfdfdf;
opacity: 0.5;
z-index: 9999;
}
/**
* Error fatal.
*/
.container.fatal-error {
margin-top: -10px;
}
.blink {
animation: blinker 1s linear infinite;
}
@keyframes blinker {
50% {
opacity: 0;
}
}
/**
* Login form.
*/
.login-heading {
margin-top: -50px;
font-family: SirinStencil, Georgia, serif;
font-size: 48px;
text-align: center;
color: #444;
text-shadow: 0 1px 0 #fff;
height: 98px;
}
.container.fatal-error + .container > .login-heading {
margin-top: -20px;
}
@media (min-width: 480px) {
h1.login-heading {
font-size: 64px;
}
}
@media (min-width: 768px) {
h1.login-heading {
font-size: 92px;
}
}
.form-login {
max-width: 350px;
padding: 15px;
margin: 30px auto;
}
.form-login .form-control {
position: relative;
height: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 10px;
font-size: 16px;
}
.form-login .form-control:focus {
z-index: 2;
}
.form-login input[type="text"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.form-login input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.panel-login-info {
font-size: 96%;
text-align: center;
color: #555;
border: 0;
background-color: rgba(238, 238, 238, 0.7);
position: absolute;
bottom: 30px;
left: 1%;
right: 1%;
width: 98%;
}
.panel-login-info p {
margin: 4px 8px;
padding: 0;
}
/**
* Home page.
*/
.hemotron {
color: #444;
background-color: rgba(238, 238, 238, 0.6);
}
.hemotron h1 {
font-family: SirinStencil, Georgia, serif;
color: #555;
text-shadow: 0 2px 0 #fff;
}
.hemotron ul#changelog {
background-color: #eee;
}
.hemotron ul#changelog > li > a {
font-weight: bold;
}
ul.changelog-list {
padding-left: 3.8em;
list-style: none;
}
ul.changelog-list li::before {
content: "\2043";
color: #999;
font-weight: bold;
display: inline-block;
width: 1em;
margin-left: -1em;
}
ul.changelog-list li.version {
margin-top: .5em;
}
ul.changelog-list li.version::before,
ul.changelog-list li.divider::before {
display: none;
}
ul.changelog-list li.divider {
height: 1.2em;
}
ul.changelog-list li span {
display: block;
position: absolute;
margin-left: -3.8em;
margin-top: -2px;
width: 3.4em;
text-align: right;
font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
font-weight: bold;
font-size: larger;
}
@media (max-width: 767px) {
ul.changelog-list {
padding-left: 3.5em;
}
ul.changelog-list li span {
margin-left: -3.5em;
margin-top: -1px;
width: 3.2em;
font-size: 16px;
}
}
/**
* Scrollup.
*/
.scrollup {
width: 40px;
height: 40px;
opacity: 0.2;
position: fixed;
bottom: 50px;
right: 60px;
display: none;
text-indent: -9999px;
background: url("../img/icon2top.png") no-repeat;
z-index: 999;
}
/**
* Footer.
*/
footer {
margin-top: 0;
position: fixed;
width: 100%;
bottom: 0;
background-color: #222;
border-color: #080808;
color: #999;
z-index: 999;
}
footer .container {
padding: 0 15px;
}
footer p {
margin: 3px 0;
}
footer .copyright {
float: left;
}
footer .today {
text-align: right;
}
@media (max-width: 479px) {
footer .jda {
display: none;
}
}
@media (max-width: 359px) {
footer .today {
display: none;
}
}
/**
* Bootstrap workarounds.
*/
.panel > .table-bordered > tbody > tr > td:last-child,
.panel > .table-bordered > tbody > tr > th:last-child,
.panel > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-bordered > thead > tr > td:last-child,
.panel > .table-bordered > thead > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child,
.panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > td:last-child,
.panel > .table-responsive > .table-bordered > thead > tr > th:last-child {
border-right: 1px solid #ddd;
}
.panel > .table-bordered > tbody > tr:last-child > td,
.panel > .table-bordered > tbody > tr:last-child > th,
.panel > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-bordered > tfoot > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,
.panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {
border-bottom: 1px solid #ddd;
}
.panel-footer {
border-top: 0;
}
/**
* Extra printing styles.
*/
@media print {
@page {
size: A4;
margin: 1cm;
}
html, body {
margin: 0;
padding: 0;
-webkit-print-color-adjust: exact;
}
table tr td, table tr th {
page-break-inside: avoid;
}
footer {
margin-top: 20px;
position: relative;
}
footer .today {
display: none;
}
}
/**
* Font size for printing from "all" browsers.
*/
@media print {
body {
font-size: 1.65vw;
}
}
/**
* Only for Chrome 29+.
*/
@media print and (-webkit-min-device-pixel-ratio: 0) and (min-resolution: .001dpcm) {
body {
font-size: 3.75mm;
}
}
/**
* IE10 and IE11.
*/
@media print and (-ms-high-contrast: active), (-ms-high-contrast: none) {
body {
font-size: 12px;
}
}

BIN
www/dam/fonts/codabar.eot Normal file

Binary file not shown.

BIN
www/dam/fonts/codabar.ttf Normal file

Binary file not shown.

BIN
www/dam/fonts/codabar.woff Normal file

Binary file not shown.

BIN
www/dam/fonts/codabar.woff2 Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,288 @@
<?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></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="400" />
<glyph unicode=" " />
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
<glyph unicode="&#x2000;" horiz-adv-x="650" />
<glyph unicode="&#x2001;" horiz-adv-x="1300" />
<glyph unicode="&#x2002;" horiz-adv-x="650" />
<glyph unicode="&#x2003;" horiz-adv-x="1300" />
<glyph unicode="&#x2004;" horiz-adv-x="433" />
<glyph unicode="&#x2005;" horiz-adv-x="325" />
<glyph unicode="&#x2006;" horiz-adv-x="216" />
<glyph unicode="&#x2007;" horiz-adv-x="216" />
<glyph unicode="&#x2008;" horiz-adv-x="162" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="325" />
<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 106 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,851 @@
<?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" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<metadata>
Created by FontForge 20160407 at Thu Nov 3 08:54:49 2016
By Jimmy Wärting
Copyright (c) 2011, Cyreal (www.cyreal.org) with Reserved Font Name "Sirin" and "Sirin Stencil". This Font Software is licensed under the SIL Open Font License, Version 1.1. This license is available with a FAQ at: http://scripts.sil.org/OFL
</metadata>
<defs>
<font id="SirinStencil-Regular" horiz-adv-x="1434" >
<font-face
font-family="SirinStencil"
font-weight="400"
font-stretch="normal"
units-per-em="2048"
panose-1="2 0 0 0 0 0 0 0 0 0"
ascent="1638"
descent="-410"
x-height="1024"
cap-height="1423"
bbox="-219 -604 3464 2380"
underline-thickness="102"
underline-position="-205"
unicode-range="U+0020-2212"
/>
<missing-glyph horiz-adv-x="1976"
d="M1356 324q4 1 13 10.5t19 21t17 22.5t6 15q-25 23 -74.5 64.5t-109.5 95.5q49 66 89 118t60 81q-12 11 -34 27.5t-42 25.5l-151 -191q-31 25 -60.5 47.5t-55.5 42t-47 35t-36 25.5q-11 -12 -27.5 -33.5t-25.5 -46.5l186 -147l-147 -191q1 -5 10.5 -14t21.5 -18.5
t23 -16.5t15 -6l159 180zM1804 965l-2 2q-1 -51 -7.5 -111t-25.5 -126.5t-53 -138t-88.5 -145t-133 -148.5t-185.5 -148q0 -6 -1.5 -14.5t-5.5 -16.5t-11 -13.5t-19 -5.5l-25 -24q48 -17 97.5 -36t97.5 -42q10 0 20.5 0.5t22.5 0.5q28 0 60.5 -6.5t66.5 -31.5
q0 -8 -1.5 -8.5t-6.5 -5.5q-29 14 -55 22.5t-64 3.5q20 -11 39.5 -23.5t36.5 -37.5q-3 -9 -19 -12q-29 29 -61 48t-70 17q-17 0 -28.5 -1.5t-22.5 -5t-23 -9t-30 -12.5q-5 4 -8.5 2.5t-4.5 9.5q10 12 19.5 18t19.5 9.5t22 6.5t27 9q-33 18 -65 30.5t-57 20.5t-40.5 14.5
t-15.5 12.5q0 12 23 30q-9 0 -15.5 5t-11.5 11.5t-8 13t-4 9.5h-55q-29 0 -56.5 1.5t-56.5 6.5q-2 -6 -6.5 -15t-11.5 -17t-16 -12.5t-21 -2.5q-11 -6 -18.5 -10.5t-12.5 -9.5q42 -26 85.5 -54t86.5 -63q17 -4 35.5 -6t37.5 -7.5t37.5 -17.5t36.5 -36q0 -8 -2.5 -9t-7.5 -6
q-12 12 -21.5 19.5t-20 12.5t-24 8.5t-34.5 6.5q40 -25 55 -80q-2 -5 -5 -7.5t-11 -0.5q-20 32 -46 60.5t-63 36.5q-20 3 -41 3q-48 0 -102 -14q-6 9 -6 17q24 17 54 19.5t62 4.5q-26 22 -53 39.5t-49.5 32t-36.5 25.5t-14 20q0 11 7 14.5t19 14.5q-14 14 -15 33.5t1 31.5
q-90 49 -159 110.5t-121.5 125t-91 124t-66.5 107.5q-55 18 -109 36.5t-103.5 38t-92.5 42t-76 49.5q-14 12 -11 28.5t23 16.5l524 -45q175 35 296.5 57.5t201.5 42t125 41t68 54.5q31 54 61.5 92t64 62t71 35t81.5 11q28 0 52 -4t44 -10v2l152 53q2 0 4 -0.5t2 -3.5v-2
l-51 -141l143 6q7 0 4 -6z" />
<glyph glyph-name=".notdef" horiz-adv-x="1976"
d="M1356 324q4 1 13 10.5t19 21t17 22.5t6 15q-25 23 -74.5 64.5t-109.5 95.5q49 66 89 118t60 81q-12 11 -34 27.5t-42 25.5l-151 -191q-31 25 -60.5 47.5t-55.5 42t-47 35t-36 25.5q-11 -12 -27.5 -33.5t-25.5 -46.5l186 -147l-147 -191q1 -5 10.5 -14t21.5 -18.5
t23 -16.5t15 -6l159 180zM1804 965l-2 2q-1 -51 -7.5 -111t-25.5 -126.5t-53 -138t-88.5 -145t-133 -148.5t-185.5 -148q0 -6 -1.5 -14.5t-5.5 -16.5t-11 -13.5t-19 -5.5l-25 -24q48 -17 97.5 -36t97.5 -42q10 0 20.5 0.5t22.5 0.5q28 0 60.5 -6.5t66.5 -31.5
q0 -8 -1.5 -8.5t-6.5 -5.5q-29 14 -55 22.5t-64 3.5q20 -11 39.5 -23.5t36.5 -37.5q-3 -9 -19 -12q-29 29 -61 48t-70 17q-17 0 -28.5 -1.5t-22.5 -5t-23 -9t-30 -12.5q-5 4 -8.5 2.5t-4.5 9.5q10 12 19.5 18t19.5 9.5t22 6.5t27 9q-33 18 -65 30.5t-57 20.5t-40.5 14.5
t-15.5 12.5q0 12 23 30q-9 0 -15.5 5t-11.5 11.5t-8 13t-4 9.5h-55q-29 0 -56.5 1.5t-56.5 6.5q-2 -6 -6.5 -15t-11.5 -17t-16 -12.5t-21 -2.5q-11 -6 -18.5 -10.5t-12.5 -9.5q42 -26 85.5 -54t86.5 -63q17 -4 35.5 -6t37.5 -7.5t37.5 -17.5t36.5 -36q0 -8 -2.5 -9t-7.5 -6
q-12 12 -21.5 19.5t-20 12.5t-24 8.5t-34.5 6.5q40 -25 55 -80q-2 -5 -5 -7.5t-11 -0.5q-20 32 -46 60.5t-63 36.5q-20 3 -41 3q-48 0 -102 -14q-6 9 -6 17q24 17 54 19.5t62 4.5q-26 22 -53 39.5t-49.5 32t-36.5 25.5t-14 20q0 11 7 14.5t19 14.5q-14 14 -15 33.5t1 31.5
q-90 49 -159 110.5t-121.5 125t-91 124t-66.5 107.5q-55 18 -109 36.5t-103.5 38t-92.5 42t-76 49.5q-14 12 -11 28.5t23 16.5l524 -45q175 35 296.5 57.5t201.5 42t125 41t68 54.5q31 54 61.5 92t64 62t71 35t81.5 11q28 0 52 -4t44 -10v2l152 53q2 0 4 -0.5t2 -3.5v-2
l-51 -141l143 6q7 0 4 -6z" />
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn" horiz-adv-x="0"
/>
<glyph glyph-name="noBreak" horiz-adv-x="0"
/>
<glyph glyph-name="space" unicode=" " horiz-adv-x="426"
/>
<glyph glyph-name="exclam" unicode="!" horiz-adv-x="471"
d="M328 1380v-749q0 -49 -21 -74q-27 -31 -64.5 -53.5t-64.5 -22.5q-35 0 -35 43v750q0 42 21 67q28 33 64.5 57.5t64.5 24.5q35 0 35 -43zM328 298v-160q0 -49 -21 -74q-27 -31 -64.5 -53t-64.5 -22q-35 0 -35 43v159q0 43 21 68q27 31 66.5 56.5t63.5 25.5q34 0 34 -43z
" />
<glyph glyph-name="quotedbl" unicode="&#x22;" horiz-adv-x="698"
d="M299 1499l-9 -291q0 -57 -22 -88q-51 -65 -89 -65q-29 0 -33 43l-13 309q0 35 22 62q22 29 56.5 48t56.5 19q31 0 31 -37zM565 1499l-9 -291q0 -57 -22 -88q-51 -65 -89 -65q-29 0 -33 43l-13 309q0 35 22 62q22 29 56.5 48t56.5 19q31 0 31 -37z" />
<glyph glyph-name="numbersign" unicode="#" horiz-adv-x="1401"
d="M223 42l62 265q6 28 24 36.5t58 8.5q67 0 67 -32q0 -3 -2 -13l-39 -160q-13 -52 -56.5 -104.5t-82.5 -52.5q-15 0 -24 9.5t-9 26.5q0 6 2 16zM703 40l61 267q6 28 24.5 36.5t57.5 8.5q35 0 51 -7t16 -24q0 -4 -2 -14l-39 -160q-13 -52 -56.5 -104.5t-82.5 -52.5
q-14 0 -23 9.5t-9 25.5q0 5 2 15zM123 1006h226q27 0 27 -25q0 -38 -20 -67t-60 -29h-46q-62 0 -124.5 25.5t-62.5 64.5q0 31 60 31zM18 532h227q26 0 26 -24q0 -39 -19.5 -67.5t-59.5 -28.5h-47q-62 0 -124 25t-62 65q0 30 59 30zM317 453l74 327q6 28 24.5 36.5t57.5 8.5
q36 0 52 -6.5t16 -23.5q0 -3 -25.5 -116.5t-25.5 -117.5q0 -29 36 -29l196 3q27 0 27 -25q0 -39 -19.5 -68.5t-60.5 -29.5h-317q-36 0 -36 30q0 7 1 11zM777 885h-318q-36 0 -36 30q0 7 1 11l78 340q12 52 56.5 104.5t84.5 52.5q31 0 31 -43q0 -21 -37.5 -178t-37.5 -164
q0 -30 36 -30h196q26 0 26 -25q0 -39 -19.5 -68.5t-60.5 -29.5zM1337 885h-403q-33 0 -33 27q0 14 80 354q12 52 56.5 104.5t84.5 52.5q31 0 31 -43q0 -15 -37.5 -167.5t-37.5 -172.5q0 -30 36 -30h103q60 0 122 -26t62 -64q0 -35 -64 -35zM1239 412h-412q-32 0 -32 27
q0 4 2 14l73 327q6 27 24.5 36t57.5 9q36 0 52 -6.5t16 -23.5l-49 -217q-1 -4 -1 -11q0 -30 36 -30h112q60 0 122.5 -26t62.5 -65q0 -34 -64 -34z" />
<glyph glyph-name="dollar" unicode="$" horiz-adv-x="1009"
d="M607 -116v-73q0 -27 -14.5 -49.5t-36.5 -39t-47.5 -26t-46.5 -9.5q-35 0 -35 43v106q0 36 10.5 54t35.5 32l48 24q78 39 125 104q27 36 46 67.5t31 60t17.5 57t5.5 58.5q0 54 -9 105t-39 93t-87 73t-153 46q-84 13 -144 33.5t-101 46.5t-65.5 55.5t-37.5 60t-17 60
t-4 55.5q0 43 15.5 75.5t55.5 64.5q52 41 89 41q18 0 27 -7.5t9 -31.5v-18q0 -72 15.5 -114.5t45.5 -67t74.5 -37t102.5 -23.5q95 -19 163 -47.5t114 -63.5t73 -76t41.5 -84t18.5 -86.5t4 -85.5q0 -74 -23 -132t-58 -101.5t-76.5 -73t-78.5 -45.5q-17 -8 -33.5 -17.5
t-30 -24t-22 -34.5t-8.5 -48zM608 1430q40 -5 81 -15t74 -24t54 -33t21 -43q0 -17 -13.5 -36t-33.5 -35t-43.5 -26t-44.5 -10q-11 0 -23.5 2.5t-21.5 6.5l-51 20q-42 16 -86.5 23.5t-89.5 7.5q-18 0 -26.5 9.5t-8.5 33.5v214q0 28 14.5 51t36 39.5t47 25.5t47.5 9
q35 0 35 -43v-134q0 -24 7 -32.5t25 -10.5zM351 -31q-126 0 -225 99q-35 35 -35 65q0 25 16.5 45t39 34t46 22t37.5 8q17 0 41 -13.5t48 -30t44.5 -32.5t31.5 -20q30 -13 69 -13q47 0 81 16.5t48 16.5q25 0 25 -31q0 -14 -16.5 -41.5t-49.5 -55.5t-83 -48.5t-118 -20.5z
M268 1346q32 22 49 22q19 0 19 -53q0 -21 -0.5 -34.5t-3 -22.5t-7 -14t-12.5 -9q-17 -8 -38.5 -21t-67.5 -45t-64.5 -45t-31.5 -21.5t-16 -8.5q-23 0 -23 24q0 19 14 44t33.5 49.5t52.5 57t52.5 47t43.5 30.5z" />
<glyph glyph-name="percent" unicode="%" horiz-adv-x="1781"
d="M540 762q0 -16 -10.5 -36.5t-31 -39t-49.5 -31t-65 -12.5q-284 0 -284 369q0 44 6 76t18.5 55t31 38.5t43.5 27.5q43 20 67 20q18 0 18 -24q0 -6 -4 -16.5t-8.5 -27.5t-9 -45.5t-4.5 -74.5q0 -81 10 -134.5t31.5 -84.5t53 -43.5t74.5 -12.5q16 0 33 2t30.5 4t22.5 4t11 2
q16 0 16 -16zM436 1434q161 0 253.5 -105.5t92.5 -284.5q0 -150 -56 -254q-33 -63 -79.5 -95t-81.5 -32q-15 0 -15 15q0 4 4.5 12t13.5 24.5t17 34.5q18 42 27.5 112t9.5 122q0 328 -231 328q-121 0 -213 -64q-27 -18 -37 -18q-13 0 -13 12q0 16 35 63q58 70 132.5 100
t140.5 30zM1400 760q160 0 253 -105t93 -284q0 -152 -55 -254q-33 -63 -80 -95t-82 -32q-14 0 -14 14q0 4 4.5 12.5t13.5 25t17 34.5q18 41 27.5 112t9.5 121q0 328 -232 328q-122 0 -213 -64q-25 -18 -37 -18t-12 12q0 17 35 64q58 69 132.5 99t139.5 30zM1222 371
q0 -65 6.5 -110.5t24 -86.5t52.5 -61.5t87 -20.5q32 0 62.5 6t33.5 6q17 0 17 -16q0 -34 -42.5 -76.5t-113.5 -42.5q-285 0 -285 369q0 47 11.5 91.5t27.5 64.5q19 23 61 42t66 19q19 0 19 -20q0 -4 -6.5 -27.5t-13.5 -60.5t-7 -76zM339 43l996 1317q26 35 73 54.5t99 19.5
q11 0 18 -6t7 -15q0 -12 -15 -33l-1010 -1337q-58 -74 -172 -74q-9 0 -17 5.5t-8 17.5q0 15 29 51z" />
<glyph glyph-name="ampersand" unicode="&#x26;" horiz-adv-x="1514"
d="M1117 574v-150q0 -86 10 -145.5t29.5 -96.5t49 -53t69.5 -16q47 0 78.5 11.5t52.5 25t35 25t28 11.5q13 0 19 -7.5t6 -19.5q0 -17 -13.5 -48.5t-45.5 -63t-84.5 -55t-131.5 -23.5q-77 0 -130.5 22t-87.5 71.5t-49 129t-15 195.5v187q0 22 9.5 33.5t24 16.5t30 5h27.5
q18 0 34.5 -1.5t28.5 -7t19 -16.5t7 -30zM875 1315q0 -39 -51.5 -78t-89.5 -39q-24 0 -65 18t-92.5 36t-100.5 18q-105 0 -181.5 -31t-159.5 -100q-54 -45 -68 -45q-22 0 -22 24q0 16 19 49t36 54q91 110 206.5 161.5t290.5 51.5q55 0 118 -13.5t111.5 -42t48.5 -63.5z
M317 594q0 -17 -18 -53q-38 -76 -38 -152q0 -130 72.5 -193t224.5 -63q58 0 118.5 19t89 34t70.5 41q21 12 31 12q21 0 21 -45q0 -60 -32 -90q-61 -58 -152.5 -96.5t-208.5 -38.5q-104 0 -185 23t-129 59t-79 86.5t-42 100t-11 104.5q0 147 65 252q37 59 88 59
q37 0 76 -16.5t39 -42.5zM1117 1107v-230q0 -31 14 -42t39 -11h268q35 0 35 -23q0 -24 -33.5 -60t-66.5 -48q-32 -12 -115 -12h-268q-25 0 -39 11t-14 42v290q0 55 49 90.5t96 35.5q35 0 35 -43zM885 791v-57q0 -25 -11 -39t-42 -14h-348q-103 0 -180 14.5t-121.5 37.5
t-71.5 56.5t-35.5 65t-8.5 69.5q0 30 9 57q14 43 61 82t84 39q18 0 27.5 -7.5t9.5 -31.5q0 -61 12 -101t37.5 -68t74 -43t113 -21t163.5 -6h205q22 0 22 -33z" />
<glyph glyph-name="quotesingle" unicode="'" horiz-adv-x="446"
d="M313 1499l-10 -291q0 -58 -24 -88q-55 -65 -97 -65q-31 0 -35 43l-14 309q0 35 23 62q24 29 61.5 48t61.5 19q34 0 34 -37z" />
<glyph glyph-name="parenleft" unicode="(" horiz-adv-x="803"
d="M434 468q0 -140 13.5 -278.5t39.5 -265.5t64.5 -236t88.5 -189q20 -32 30 -51.5t10 -31.5q0 -20 -22 -20q-34 0 -81 36.5t-98.5 104.5t-102 164t-91 215t-65.5 258t-25 292q0 148 24.5 285t63.5 256t89.5 216.5t101.5 167t99.5 107.5t84.5 38q22 0 22 -20
q0 -10 -10 -28.5t-30 -50.5q-50 -81 -88.5 -190t-64.5 -235.5t-39.5 -265.5t-13.5 -278z" />
<glyph glyph-name="parenright" unicode=")" horiz-adv-x="803"
d="M369 464q0 139 -14 278t-40 266t-64.5 236t-87.5 189q-20 32 -30 51.5t-10 31.5q0 20 22 20q33 0 80.5 -37t99 -105t102 -164.5t91 -215t65.5 -257.5t25 -291q0 -148 -24.5 -285t-63.5 -256t-89.5 -216.5t-101.5 -167t-99.5 -107.5t-84.5 -38q-22 0 -22 20q0 10 10 28.5
t30 50.5q49 80 87.5 189t64.5 236t40 266t14 278z" />
<glyph glyph-name="asterisk" unicode="*" horiz-adv-x="1071"
d="M440 1120l-2 4l-235 62q-38 10 -38 43q0 42 19.5 72.5t39.5 30.5q9 0 251 -95l4 4q-16 245 -16 249q0 27 16 36.5t56 9.5q42 0 58.5 -10t16.5 -38l-14 -249l4 -2q246 95 253 95q22 0 37.5 -32.5t15.5 -71.5q0 -33 -36 -42l-235 -60v-6l153 -186q15 -18 15 -36
q0 -20 -38 -48.5t-60 -28.5t-37 23l-131 207h-5l-126 -205q-20 -26 -39 -26q-24 0 -60 29.5t-36 49.5q0 16 14 33z" />
<glyph glyph-name="plus" unicode="+"
d="M822 696h405q43 0 43 -30q0 -12 -19.5 -39.5t-48.5 -53.5q-22 -20 -74 -20h-449q-10 0 -16.5 2t-12 11t-5.5 24v446q0 52 21 74q26 29 53 48.5t39 19.5q30 0 30 -43v-402q0 -22 9 -29.5t25 -7.5zM788 443v-271q0 -51 -20 -74q-60 -67 -98 -67q-25 0 -25 43v369
q0 29 15.5 39.5t54.5 10.5q41 0 57 -10.5t16 -39.5zM536 553h-329q-43 0 -43 31q0 11 19 38.5t48 53.5q23 20 74 20h231q28 0 38.5 -15.5t10.5 -53.5q0 -41 -10.5 -57.5t-38.5 -16.5z" />
<glyph glyph-name="comma" unicode="," horiz-adv-x="596"
d="M311 -127q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 20 79l95 338q14 47 31 68q24 30 72.5 55.5t77.5 25.5q34 0 34 -34q0 -14 -152 -410z" />
<glyph glyph-name="hyphen" unicode="-" horiz-adv-x="1044"
d="M739 532h-532q-43 0 -43 31q0 13 19.5 45.5t47.5 57.5q23 20 74 20h533q43 0 43 -31q0 -12 -20 -44.5t-48 -57.5q-23 -21 -74 -21z" />
<glyph glyph-name="period" unicode="." horiz-adv-x="467"
d="M334 274v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q26 30 71 55.5t74 25.5q35 0 35 -43z" />
<glyph glyph-name="slash" unicode="/" horiz-adv-x="796"
d="M791 1526q48 10 78 10q27 0 27 -25q0 -15 -15 -41l-776 -1407q-17 -32 -72 -52.5t-108 -20.5q-25 0 -25 20q0 14 23 56l750 1370q38 72 118 90z" />
<glyph glyph-name="zero" unicode="0" horiz-adv-x="1212"
d="M610 1434q107 0 185.5 -27.5t134 -76t90.5 -114.5t55 -142.5t27.5 -160.5t7.5 -168q0 -86 -6.5 -181.5t-27 -186.5t-59.5 -171t-103 -137q-61 -53 -103 -53q-20 0 -20 23q0 10 14 27t29 49q75 163 75 534q0 135 -15.5 248t-57 195t-115.5 128.5t-191 49.5
q-78 0 -153.5 -33t-147.5 -100q-23 -22 -39 -32.5t-28 -10.5q-21 0 -21 20q0 32 43 90q171 230 426 230zM350 1057q0 -3 -5 -25.5t-12 -62t-14 -91t-12 -125.5t-5 -151q0 -94 13.5 -173t44 -148.5t87 -109t135.5 -39.5q52 0 88 13t54.5 25.5t28.5 12.5q22 0 22 -25
q0 -57 -73 -123t-185 -66q-415 0 -415 647q0 115 14 217t36 143q28 52 80 85t87 33q31 0 31 -37z" />
<glyph glyph-name="one" unicode="1" horiz-adv-x="665"
d="M15 945l235 232q30 29 43 29q15 0 20 -17t5 -69q0 -92 -39 -131l-49 -49q-33 -33 -63 -45.5t-76 -12.5q-44 0 -67.5 6t-23.5 26q0 16 15 31zM563 1380v-1241q0 -49 -21 -73q-27 -31 -64.5 -53.5t-64.5 -22.5q-35 0 -35 43v1241q0 42 21 67q28 33 64.5 57.5t64.5 24.5
q35 0 35 -43z" />
<glyph glyph-name="two" unicode="2" horiz-adv-x="1034"
d="M327 299q-14 -41 -35 -53t-67 -12q-83 0 -83 38q0 10 22.5 59t81 127t116.5 136t119 120t107 113t75.5 110.5t29.5 117.5q0 116 -54 165.5t-184 49.5q-57 0 -129 -26t-142 -91q-45 -40 -58 -40q-19 0 -19 20q0 25 23 71q49 83 119.5 137t136.5 73.5t134 19.5
q170 0 270 -94.5t100 -264.5q0 -63 -26.5 -127t-70.5 -120t-97.5 -111t-111 -108.5t-108 -103t-91.5 -103.5t-58 -103zM173 184h716q43 0 43 -30q0 -15 -22.5 -62t-49.5 -72q-22 -20 -74 -20h-643q-42 0 -42 55q0 63 14.5 96t57.5 33z" />
<glyph glyph-name="three" unicode="3" horiz-adv-x="1047"
d="M769 1219h-625q-43 0 -43 30q0 24 24.5 65t54.5 68q23 21 74 21h620q44 0 44 -37q0 -21 -35 -68l-37 -47q-26 -32 -77 -32zM730 1098l-150 -196q-14 -18 -14 -31q0 -21 48 -33q150 -35 243 -146t93 -284q0 -78 -31.5 -153t-77.5 -126t-97 -82t-91 -31q-22 0 -22 19
q0 6 3.5 13t7.5 14t14 21.5t18 27.5q68 110 68 270q0 354 -406 354q-33 0 -33 25q0 14 20 41l235 317q27 37 131 37q30 0 42 -11t9.5 -23t-10.5 -23zM346 -31q-121 0 -213 82q-31 27 -31 62q0 23 23 47q63 63 113 63q29 0 73 -35q74 -62 144 -62q36 0 74.5 16t45.5 16
q25 0 25 -29q0 -12 -7 -30t-26 -41t-46 -42.5t-73 -33t-102 -13.5z" />
<glyph glyph-name="four" unicode="4" horiz-adv-x="976"
d="M915 317h-219q-47 0 -47 51v906q0 42 21 67q28 33 64.5 57.5t64.5 24.5q35 0 35 -43v-813q0 -58 58 -58h137q47 0 47 -30q0 -39 -56.5 -100.5t-104.5 -61.5zM165 509h368q33 0 44.5 -19t11.5 -68q0 -51 -12 -78t-44 -27h-469q-64 0 -64 38q0 25 29 66q35 49 67 68.5
t69 19.5zM834 203v-64q0 -49 -21 -73q-27 -31 -64.5 -53.5t-64.5 -22.5q-35 0 -35 43v170q0 33 22.5 43.5t69.5 10.5q52 0 72.5 -10.5t20.5 -43.5zM556 944l-182 -273q-36 -54 -68 -78t-90 -24q-60 0 -60 32q0 20 41 81l333 495q20 29 34 29q25 0 25 -106t-33 -156z" />
<glyph glyph-name="five" unicode="5" horiz-adv-x="1028"
d="M315 1098v-188q0 -33 14.5 -43t37.5 -10q17 0 50.5 1t43.5 1q103 0 185.5 -24.5t146.5 -76t98.5 -138.5t34.5 -204q0 -84 -30.5 -161.5t-76 -128t-95 -80.5t-89.5 -30q-10 0 -16.5 5.5t-6.5 13.5q0 7 5.5 16t17 26t20.5 34q70 134 70 270q0 164 -86 247.5t-272 83.5
q-34 0 -91.5 -8.5t-72.5 -8.5q-51 0 -51 56v347q0 59 81 59q42 0 62 -11.5t20 -47.5zM348 -31q-118 0 -213 82q-33 32 -33 62q0 20 25 47q63 63 113 63q33 0 73 -35q75 -61 144 -61q36 0 69.5 15.5t40.5 15.5q25 0 25 -29q0 -12 -6 -30t-23.5 -41.5t-43 -42.5t-70.5 -32.5
t-101 -13.5zM709 1219h-514q-23 0 -33 6t-10 22q0 20 23 66t48 69q23 21 74 21h518q43 0 43 -35q0 -28 -24.5 -64.5t-57.5 -64.5q-25 -20 -67 -20z" />
<glyph glyph-name="six" unicode="6" horiz-adv-x="1100"
d="M934 1317q0 -39 -51.5 -79t-89.5 -40q-27 0 -65 18t-88.5 36t-107.5 18q-45 0 -80 -8t-73 -31t-57 -38t-78 -66.5t-74 -51.5q-23 0 -23 25q0 16 17.5 48t70 98.5t156 127t262.5 60.5q113 0 217 -51q64 -30 64 -66zM438 -31q-78 0 -137 30.5t-93 76t-55.5 108.5t-28.5 119
t-7 116q0 62 52.5 111.5t102.5 49.5q35 0 35 -45q0 -55 2.5 -98t10 -92t22.5 -84.5t37 -66t57 -46t80 -15.5q48 0 98.5 18.5t61.5 18.5q22 0 22 -23q0 -24 -17 -53.5t-47.5 -58t-82 -47.5t-113.5 -19zM391 831q42 18 102 29.5t95 11.5q210 0 313 -114t103 -330
q0 -121 -59 -238q-42 -83 -108.5 -136.5t-113.5 -53.5q-23 0 -23 20q0 8 5.5 17t17 25t34 60.5t35 107.5t12.5 155q0 64 -15 119t-49 104t-98 77t-153 28q-166 0 -317 -111q-20 -15 -38 -15q-32 0 -32 57q0 82 15 176.5t33 129.5q26 51 84 98.5t94 47.5q28 0 28 -31
q0 -11 -16.5 -94t-16.5 -115q0 -35 29 -35q16 0 39 10z" />
<glyph glyph-name="seven" unicode="7" horiz-adv-x="803"
d="M671 1219h-669q-43 0 -43 30q0 15 22.5 61.5t49.5 71.5q22 21 73 21h618q29 0 42 -9.5t13 -33.5q0 -21 -5 -42q-13 -56 -36 -77.5t-65 -21.5zM231 37l310 1081q7 24 22.5 30.5t67.5 6.5q62 0 75 -10t2 -48l-270 -919q-11 -40 -24 -65t-40 -53q-69 -70 -123 -70
q-25 0 -25 23q0 7 5 24z" />
<glyph glyph-name="eight" unicode="8" horiz-adv-x="1087"
d="M423 513l-50 -62q-33 -41 -51.5 -84.5t-18.5 -94.5q0 -29 11.5 -54t35.5 -44t60.5 -30t87.5 -11q27 0 59.5 6.5t61.5 14.5t48 14.5l19 6.5q23 0 23 -24q0 -28 -20 -60t-56 -59t-87 -45t-112 -18q-73 0 -126 13.5t-90 35t-60 49t-35.5 56t-16.5 55t-4 45.5q0 48 19.5 103
t51 109t71.5 101t82 79q31 23 52 23q13 0 25.5 -7t22.5 -17.5t16.5 -23.5t6.5 -24q0 -18 -26 -53zM693 771q-32 -26 -32 -44q1 -17 26 -40q14 -13 61 -54.5t68.5 -62.5t59 -62t56 -71.5t33.5 -72t15 -81.5q0 -64 -25.5 -119.5t-63 -89t-77 -52.5t-70.5 -19q-21 0 -21 19
q0 5 15.5 31.5t31 65.5t15.5 74q0 36 -7.5 70.5t-18 62.5t-32.5 60t-38.5 53.5t-50 55t-53 51.5t-61 55t-61.5 56q-26 23 -26 49q0 25 32 50q111 84 166 138.5t73.5 97.5t18.5 102q0 88 -72 132t-186 44q-176 0 -271 -111q-10 -12 -23.5 -32.5t-22 -28.5t-19.5 -8
q-19 0 -19 26q0 29 19 71t45 77q69 93 160 131.5t208 38.5q78 0 144 -16.5t119.5 -51t84 -95t30.5 -141.5q0 -172 -231 -359zM308 809q-81 79 -106 119t-25 72q0 31 28.5 67t55.5 36q16 0 25 -8.5t29.5 -34.5t46.5 -50q30 -28 67.5 -55.5t50 -41t12.5 -32.5
q0 -30 -45.5 -66.5t-72.5 -36.5q-33 0 -66 31z" />
<glyph glyph-name="nine" unicode="9" horiz-adv-x="1108"
d="M140 1200q67 104 174.5 169t235.5 65q87 0 156.5 -23.5t116 -61t80.5 -97t52.5 -118t29 -138t13.5 -143.5t3 -147q0 -337 -85 -499q-44 -85 -103 -138t-102 -53q-21 0 -21 23q0 7 6 16t17 25t20 35q67 145 67 522q0 65 -1.5 115.5t-5.5 107t-11.5 99.5t-20 87.5
t-29.5 76.5t-42 61t-56 47t-72 28.5t-90 10.5q-68 0 -133.5 -26t-146.5 -107q-43 -43 -66 -43q-22 0 -22 22q0 26 36 84zM705 647q-53 -49 -130 -80.5t-148 -31.5q-70 0 -127 21t-94 56t-62 81.5t-35.5 94.5t-10.5 99q0 92 65 147q61 53 94 53q35 0 35 -40q0 -76 9 -131.5
t31.5 -102.5t65.5 -71.5t107 -24.5q35 0 86 14t93 35q32 16 36 16q19 0 19 -48q0 -26 -5.5 -44t-11 -25t-17.5 -18zM401 -31q-123 0 -213 82q-30 26 -30 62q0 25 22 47q63 63 113 63q32 0 74 -35q74 -61 143 -61q36 0 77 15.5t49 15.5q24 0 24 -29q0 -12 -7.5 -30t-27 -41
t-47.5 -42.5t-74.5 -33t-102.5 -13.5z" />
<glyph glyph-name="colon" unicode=":" horiz-adv-x="467"
d="M334 274v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q26 30 71 55.5t74 25.5q35 0 35 -43zM334 1011v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q26 30 71 55.5t74 25.5q35 0 35 -43z" />
<glyph glyph-name="semicolon" unicode=";" horiz-adv-x="612"
d="M475 1011v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q26 30 71 55.5t74 25.5q35 0 35 -43zM449 233l-138 -360q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 20 79l95 338q14 47 31 68q24 30 72.5 55.5t77.5 25.5q34 0 34 -34
q0 -14 -14 -50z" />
<glyph glyph-name="less" unicode="&#x3c;"
d="M459 526l774 -284q37 -15 37 -37q0 -28 -31 -52t-60 -24q-18 0 -44 8l-822 305q-34 12 -34 31q0 24 47.5 43t87.5 19q20 0 45 -9zM1135 893l-889 -342q-36 -14 -56 -14q-26 0 -26 26q0 37 48 77t93 58l920 373q9 3 17 3q28 0 28 -27q0 -22 -31 -72q-35 -56 -104 -82z" />
<glyph glyph-name="equal" unicode="="
d="M1128 340h-921q-43 0 -43 31q0 23 63 80q23 20 78 20h922q43 0 43 -31q0 -22 -64 -80q-22 -20 -78 -20zM1128 750h-921q-43 0 -43 30q0 23 63 80q23 21 78 21h922q43 0 43 -31q0 -22 -64 -80q-22 -20 -78 -20z" />
<glyph glyph-name="greater" unicode="&#x3e;"
d="M207 242l778 278q24 9 45 9q40 0 87.5 -19t47.5 -43q0 -19 -35 -31l-768 -276q-4 -1 -20.5 -7t-32.5 -10t-28 -4q-39 0 -78 23t-39 45q0 5 2.5 9.5t5.5 7t8.5 6t8.5 5t10 4.5t8 3zM1208 541l-913 352q-50 19 -72 37q-59 48 -59 114q0 29 22 29q15 0 39 -10l924 -371
q46 -17 68 -35q25 -21 39 -51.5t14 -48.5q0 -11 -6 -19t-15 -8q-13 0 -41 11z" />
<glyph glyph-name="question" unicode="?" horiz-adv-x="877"
d="M373 440q0 71 20 135.5t50 109t64.5 91.5t64.5 86t50 89.5t20 103.5q0 110 -66.5 165.5t-173.5 55.5q-79 0 -153.5 -43t-127.5 -127q-32 -55 -51 -55q-20 0 -20 30q0 28 10 58q47 141 155.5 218t241.5 77q174 0 279.5 -86t105.5 -252q0 -70 -27.5 -129t-67 -102
t-79 -86.5t-67 -102.5t-27.5 -129q0 -49 -21 -74q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43zM572 274v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q27 30 71.5 55.5t73.5 25.5q35 0 35 -43z" />
<glyph glyph-name="at" unicode="@" horiz-adv-x="2130"
d="M379 850q0 -9 -9.5 -61.5t-19.5 -139.5t-10 -180q0 -65 5 -123.5t22.5 -137t46.5 -142.5t83 -130t126.5 -110.5t181 -73t242.5 -28.5q75 0 138 13t98.5 25.5t43.5 12.5q22 0 22 -25q0 -23 -33 -55.5t-86 -62.5t-130 -51t-155 -21q-131 0 -242.5 26.5t-193.5 73t-147 113
t-107.5 141.5t-70 163.5t-39.5 175t-12 179.5q0 249 47 338q27 52 79.5 84.5t88.5 32.5q31 0 31 -37zM1149 201q9 6 16 6q15 0 15 -34q0 -44 -25 -65q-92 -75 -205 -75q-56 0 -100 9t-89.5 37.5t-75 76.5t-48.5 130.5t-19 194.5q0 57 12.5 113.5t31.5 84.5q22 35 64.5 62.5
t72.5 27.5q20 0 20 -27q0 -6 -7.5 -39t-15.5 -88.5t-8 -116.5q0 -172 53.5 -254t176.5 -82q64 0 131 39zM1119 845q-62 40 -151 40q-117 0 -245 -88q-35 -25 -45 -25q-14 0 -14 16q0 18 24 58q110 168 321 168q73 0 129 -26q41 -18 41 -76q0 -80 -28 -80q-12 0 -32 13z
M1227 280v617q0 37 16 55q23 27 55.5 44.5t59.5 17.5q31 0 31 -39v-662q0 -99 38 -153t113 -54q69 0 118.5 37t75.5 101.5t38 137t12 157.5q0 151 -37.5 273t-103.5 205t-159 139t-200 81t-231 25q-429 0 -789 -328q-51 -45 -67 -45q-21 0 -21 20q0 29 43 88q44 63 99 120
t137.5 116.5t176.5 102.5t219.5 70.5t262.5 27.5q144 0 275 -33t242 -101t192.5 -165.5t127.5 -234.5t46 -300q0 -299 -123.5 -467t-364.5 -168q-134 0 -208 73t-74 242z" />
<glyph glyph-name="A" unicode="A" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33z" />
<glyph glyph-name="B" unicode="B" horiz-adv-x="1155"
d="M379 1241h-207q-13 0 -20.5 1t-13 6.5t-5.5 15.5q0 42 57 89t115 50q65 3 168 3q42 0 76.5 -2t83 -10t85.5 -22t76.5 -41t65.5 -63.5t43 -92t17 -124.5q0 -148 -121 -244q-17 -13 -17 -23q0 -13 15 -18q134 -44 200 -131t66 -236q0 -55 -15.5 -109.5t-50 -107t-84 -93
t-123.5 -65t-163 -24.5q-35 0 -35 19q0 13 16 21q124 55 183 141t59 214q0 255 -250 295q-16 3 -16 17q0 13 24 30q53 39 86 101.5t33 138.5q0 68 -19.5 117.5t-50 77t-79 44t-93.5 21t-106 4.5zM133 43v1078q0 36 24.5 48t75.5 12q56 0 78.5 -11.5t22.5 -48.5v-236
q0 -41 41 -41h176q43 0 43 -27q0 -12 -22 -39t-54 -45q-35 -20 -143 -39q-41 -8 -41 -53v-436q0 -41 41 -41h215q43 0 43 -25q0 -21 -48 -54t-121.5 -59t-134.5 -26h-155q-41 0 -41 43z" />
<glyph glyph-name="C" unicode="C" horiz-adv-x="1106"
d="M356 1051q0 -15 -11 -66t-22.5 -135t-11.5 -178q0 -73 6 -133.5t20.5 -124t42 -111.5t67.5 -86.5t100 -59t137 -20.5q71 0 133 16t94.5 35.5t60 35.5t38.5 16q24 0 24 -25q0 -15 -12.5 -42t-44.5 -63t-77.5 -67t-122.5 -52.5t-169 -21.5q-146 0 -246 44t-156.5 132
t-80 203t-23.5 275q0 113 14 204t34 130q25 50 78.5 87.5t97.5 37.5q30 0 30 -31zM1014 1315q0 -41 -74 -94q-30 -25 -68 -25q-9 0 -17 1.5t-18 5t-16 5.5t-19.5 8t-19.5 9q-106 45 -196 45q-180 0 -350 -150l-15 -12t-15.5 -12.5t-13 -10t-13 -8t-9.5 -2.5q-23 0 -23 25
q0 32 54 100q92 114 212.5 174t293.5 60q133 0 243 -54q19 -9 27.5 -13.5t22.5 -19.5t14 -32z" />
<glyph glyph-name="D" unicode="D" horiz-adv-x="1231"
d="M334 1240h-162q-39 0 -39 24q0 22 16 45.5t41.5 43.5t57 34t61.5 16l80 2q159 0 296 -39.5t238 -125.5t158.5 -221t57.5 -327q0 -91 -18.5 -178t-53.5 -164t-84.5 -141t-110.5 -110.5t-133 -72.5t-151 -26q-35 0 -35 23q0 18 22 28q85 39 151 91t111.5 124.5t69 169.5
t23.5 226q0 128 -30.5 233t-100.5 181t-184 118.5t-281 45.5zM133 43v1077q0 36 24.5 48t75.5 12q56 0 78.5 -11.5t22.5 -48.5v-915q0 -41 41 -41h166q43 0 43 -25q0 -15 -30.5 -39t-75.5 -46t-102 -38t-104 -16h-98q-41 0 -41 43z" />
<glyph glyph-name="E" unicode="E" horiz-adv-x="980"
d="M306 1403h539q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-574q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5zM134 43v493q0 36 24.5 47.5t76.5 11.5q56 0 78 -11.5t22 -47.5v-331q0 -41 41 -41h489q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5
q-23 -20 -74 -20h-598q-35 0 -35 43zM134 696v423q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-259q0 -41 41 -41h407q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-510q-41 0 -41 41z" />
<glyph glyph-name="F" unicode="F" horiz-adv-x="970"
d="M306 1403h559q43 0 43 -31q0 -14 -20 -51t-47 -61q-23 -21 -74 -21h-594q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5zM134 33v482q0 36 24.5 48t76.5 12q55 0 77.5 -12t22.5 -48v-376q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43zM134 676
v443q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-279q0 -41 41 -41h407q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5q-23 -20 -74 -20h-510q-41 0 -41 41z" />
<glyph glyph-name="G" unicode="G" horiz-adv-x="1253"
d="M350 1042q0 -10 -10 -65.5t-20 -149t-10 -194.5q0 -87 11.5 -159.5t38.5 -136.5t68 -108.5t103.5 -70t142.5 -25.5q54 0 97.5 12.5t69.5 25.5t36 13q24 0 24 -26q0 -11 -9 -31.5t-32.5 -48t-56 -51.5t-86 -41t-117.5 -17q-498 0 -498 643q0 261 50 351q26 46 78 81t85 35
q35 0 35 -37zM950 557h-383q-43 0 -43 31q0 14 20 50.5t48 61.5q23 21 74 21h438q37 0 50.5 -11.5t19.5 -43.5q8 -40 8 -119q0 -171 -52 -316q-35 -95 -94 -150.5t-104 -55.5q-19 0 -19 16q0 8 3 14t12.5 18t17.5 25q64 107 64 316q0 31 -0.5 48.5t-4 38t-9.5 31.5t-17.5 18
t-28.5 7zM1083 1315q0 -39 -51.5 -79t-89.5 -40q-28 0 -74 18.5t-110 37t-135 18.5q-103 0 -206 -41t-181 -109q-51 -45 -66 -45q-23 0 -23 25q0 17 18 48.5t36 51.5q106 117 235.5 175.5t306.5 58.5q121 0 230.5 -34.5t109.5 -84.5z" />
<glyph glyph-name="H" unicode="H" horiz-adv-x="1251"
d="M1118 1380v-1241q0 -50 -20 -73q-25 -30 -71.5 -53t-75.5 -23q-34 0 -34 43v1241q0 42 20 67q25 31 71 56.5t75 25.5q35 0 35 -43zM802 664h-628q-41 0 -41 41v569q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43v-511q0 -41 41 -41h427q33 0 44 -17.5t11 -62.5
q0 -47 -11 -65.5t-44 -18.5zM133 33v512q0 36 24.5 47.5t75.5 11.5q56 0 78.5 -11.5t22.5 -47.5v-406q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43z" />
<glyph glyph-name="I" unicode="I" horiz-adv-x="467"
d="M334 1380v-1241q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v1241q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43z" />
<glyph glyph-name="J" unicode="J" horiz-adv-x="658"
d="M525 1380v-1124q0 -161 -72.5 -264t-162.5 -103q-8 0 -14.5 6t-6.5 16q0 6 17 35q38 65 38 174v1154q0 42 20 67q26 31 71.5 56.5t74.5 25.5q35 0 35 -43zM74 -140q-81 0 -137 63q-17 20 -17 49q0 33 35 75t69 42q16 0 25 -7t32 -32q23 -26 51 -26q22 0 51 13t40 13
q25 0 25 -29q0 -15 -10.5 -40t-30.5 -53t-55.5 -48t-77.5 -20z" />
<glyph glyph-name="K" unicode="K" horiz-adv-x="1108"
d="M334 1380v-1241q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v1241q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM872 31l-460 657q-21 29 -21 53q0 35 35 80l377 500q47 63 85.5 82.5t113.5 19.5q55 0 55 -30q0 -22 -29 -58l-399 -504q-29 -37 -29 -59
q0 -21 30 -61l398 -531q21 -29 21 -53q0 -28 -17 -57q-50 -80 -106 -80q-25 0 -54 41z" />
<glyph glyph-name="L" unicode="L" horiz-adv-x="935"
d="M133 273v1001q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43v-1107q0 -36 -24.5 -47.5t-75.5 -11.5q-56 0 -78.5 11.5t-22.5 47.5zM174 164h678q43 0 43 -31q0 -14 -20.5 -51t-47.5 -62q-22 -20 -73 -20h-580q-41 0 -41 43v78q0 43 41 43z" />
<glyph glyph-name="M" unicode="M" horiz-adv-x="1532"
d="M293 700q10 -42 10 -107v-460q0 -48 -20 -74q-24 -28 -61 -48.5t-52 -20.5q-35 0 -35 43v947q0 12 6 19.5t15 7.5q15 0 30.5 -30t55.5 -128q42 -105 51 -149zM539 245l-398 1035q-8 19 -8 37q0 24 19 45q23 28 61 44.5t59 16.5q22 0 34.5 -10t23.5 -37l338 -909
q18 -49 18 -80q0 -25 -12 -60q-24 -61 -47 -96q-21 -33 -45 -33q-12 0 -22 10t-21 37zM1073 713l-209 -543q-33 -82 -104 -131q-69 -49 -107 -49q-30 0 -30 28q0 12 10 35l409 1084q18 37 29 42q6 3 12 3q23 0 29 -39q6 -35 6 -162q0 -79 -8.5 -138.5t-36.5 -129.5z
M1379 1380v-1241q0 -49 -20 -73q-25 -30 -71.5 -53t-75.5 -23q-34 0 -34 43v1241q0 42 20 67q26 31 72 56.5t74 25.5q35 0 35 -43z" />
<glyph glyph-name="N" unicode="N" horiz-adv-x="1262"
d="M954 43v1251q0 59 50.5 94t89.5 35q34 0 34 -43v-1241q0 -50 -20 -73q-26 -30 -63.5 -53t-59.5 -23q-9 0 -14.5 2t-11 14.5t-5.5 36.5zM822 199l-677 1079q-12 19 -12 35q0 22 23 47q60 63 112 63q25 0 45 -32l542 -857q27 -42 33 -77.5t6 -114.5q0 -176 -37 -176
q-13 0 -31 28q-3 3 -4 5zM293 920q16 -37 16 -91v-690q0 -50 -20 -73q-25 -30 -63.5 -53t-58.5 -23q-32 0 -32 43v1055q0 24 19 24q13 0 28.5 -18t50.5 -70q40 -60 60 -104z" />
<glyph glyph-name="O" unicode="O" horiz-adv-x="1309"
d="M1206 745q0 -135 -14 -241t-40.5 -188.5t-65 -143t-88.5 -103.5q-60 -53 -103 -53q-21 0 -21 25q0 8 15 27.5t29 46.5q80 151 80 458v128t-9.5 150.5t-32.5 152.5t-70 134t-122.5 95.5t-188.5 36.5q-88 0 -172 -33t-167 -98l-32 -25q-9 -8 -20 -14t-16 -6q-21 0 -21 20
q0 31 43 86q90 115 212 174.5t257 59.5q136 0 238.5 -41t171 -125.5t103 -214.5t34.5 -308zM350 1059q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -72 4.5 -131t15.5 -124t34 -113.5t57 -89t87 -62t121 -21.5q60 0 106 12.5t71 24.5t34 12q22 0 22 -24q0 -25 -19 -56t-53 -61.5
t-92 -51t-125 -20.5q-135 0 -228 44.5t-145.5 134.5t-75 208t-22.5 281q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37z" />
<glyph glyph-name="P" unicode="P" horiz-adv-x="1061"
d="M334 396v-257q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v363q0 36 25.5 49t76.5 13q55 0 77 -12.5t22 -49.5zM133 591v533q0 36 24.5 47.5t75.5 11.5q56 0 78.5 -11.5t22.5 -47.5v-417q0 -43 38 -43h167q43 0 43 -25q0 -24 -43.5 -55.5t-111.5 -52.5
q-42 -13 -208 -13q-51 0 -68.5 18t-17.5 55zM776 907q0 333 -395 333h-209q-13 0 -20.5 1t-13 6.5t-5.5 15.5q0 42 57.5 90t114.5 50l106 1l128 -1q54 -1 109.5 -12.5t118.5 -43.5t111 -81t79.5 -132t31.5 -188q0 -41 -10.5 -90t-39 -109t-71 -109.5t-114.5 -88t-162 -49.5
h-6q-27 0 -27 23q0 14 23 28q194 120 194 356z" />
<glyph glyph-name="Q" unicode="Q" horiz-adv-x="1399"
d="M350 1055q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -60 3.5 -112t13 -108t24.5 -101t40.5 -86.5t59 -69t81.5 -44t107 -16.5q60 0 108.5 12.5t76 24.5t36.5 12q23 0 23 -24t-20.5 -55.5t-57 -62t-95.5 -51t-126 -20.5q-131 0 -225 47t-149.5 138t-81.5 212.5t-26 282.5
q0 141 12.5 209.5t37.5 116.5q28 52 80 84.5t87 32.5q31 0 31 -37zM1227 741q0 -157 -28.5 -289.5t-94.5 -283.5q-14 -28 -14 -43q0 -26 22 -45l145 -141q39 -39 39 -62q0 -29 -44.5 -80t-88.5 -51q-21 0 -49 29l-199 209q-20 20 -20 43q0 10 6 22t21 38t28 54
q69 151 69 428q0 83 -2.5 145t-13 139t-28 133t-50 112.5t-77.5 92t-111.5 57.5t-150.5 22q-23 0 -52 -4t-77.5 -16t-107 -41.5t-113.5 -73.5q-5 -4 -16 -12.5t-16 -12.5t-13 -9.5t-13.5 -8t-9.5 -2.5q-21 0 -21 20q0 30 43 86q88 115 216.5 174.5t263.5 59.5
q557 0 557 -689z" />
<glyph glyph-name="R" unicode="R" horiz-adv-x="1133"
d="M788 925q0 75 -20.5 131.5t-54 91t-83.5 56t-102.5 29.5t-117.5 8h-238q-13 0 -20.5 1t-13 6.5t-5.5 15.5q0 43 57 90t115 49l190 3q41 0 78 -2.5t90 -13t97 -27.5t90.5 -49.5t78 -76.5t52 -111t20.5 -149q0 -214 -213 -361q-31 -22 -31 -46q0 -18 17 -44l234 -376
q22 -36 22 -62q0 -40 -53 -71q-43 -27 -79 -27q-33 0 -58 43l-277 485q-12 18 -12 35q0 28 38 50q98 55 148.5 139t50.5 183zM133 644v480q0 36 24.5 47.5t75.5 11.5q56 0 78.5 -11.5t22.5 -47.5v-364q0 -43 38 -43h175q43 0 43 -25q0 -24 -47 -55.5t-116 -52.5
q-42 -13 -208 -13q-51 0 -68.5 18t-17.5 55zM334 449v-310q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v416q0 36 25.5 49t76.5 13q55 0 77 -12.5t22 -49.5z" />
<glyph glyph-name="S" unicode="S" horiz-adv-x="1022"
d="M537 793q79 -15 141.5 -37t105.5 -46.5t74 -56.5t48.5 -62t27.5 -69t13 -71.5t3 -75.5q0 -80 -30 -153t-74.5 -120.5t-92.5 -75.5t-87 -28q-21 0 -21 20q0 13 16 29q51 49 75 119t24 127q0 34 -1 53t-6.5 52t-16 53.5t-31.5 47t-51 44t-76.5 33t-106.5 24.5
q-76 11 -136.5 29.5t-100 39.5t-68 49t-43.5 52.5t-23 55.5t-10 51.5t-2 46.5q0 30 9 57q14 43 64 82t87 39q18 0 27.5 -7.5t9.5 -31.5q0 -76 9.5 -120t40.5 -74t75 -45t127 -31zM374 -31q-76 0 -133.5 19.5t-125.5 81.5q-33 30 -33 63q0 27 22 49q66 66 119 66q34 0 76 -35
q58 -50 96.5 -65t90.5 -15q44 0 81.5 17t44.5 17q25 0 25 -32q0 -16 -13 -41t-40.5 -54.5t-83 -50t-126.5 -20.5zM872 1315q0 -39 -51.5 -78t-89.5 -39q-24 0 -65 18t-92.5 36t-100.5 18q-84 0 -156.5 -31.5t-154.5 -99.5q-54 -45 -68 -45q-22 0 -22 24q0 16 19 49t36 54
q176 213 467 213q55 0 118 -13.5t111.5 -42t48.5 -63.5z" />
<glyph glyph-name="T" unicode="T" horiz-adv-x="1065"
d="M893 1239h-819q-43 0 -43 31q0 14 20 51t47 61q23 21 74 21h819q43 0 43 -31q0 -14 -20 -51t-47 -61q-23 -21 -74 -21zM414 33l-1 1086q0 36 24.5 47.5t75.5 11.5q56 0 78.5 -11.5t22.5 -47.5v-980q0 -43 -20 -67q-26 -31 -71.5 -56.5t-73.5 -25.5q-35 0 -35 43z" />
<glyph glyph-name="U" unicode="U" horiz-adv-x="1282"
d="M1149 1380v-614q0 -384 -78 -561q-39 -88 -89 -138.5t-93 -50.5q-21 0 -21 21q0 8 6 17.5t17.5 26.5t19.5 34q64 133 64 442v737q0 60 50.5 94.5t88.5 34.5q35 0 35 -43zM334 1380v-708q0 -65 1.5 -110.5t8 -106.5t17.5 -102.5t32.5 -86.5t51 -71.5t74.5 -44t102 -17.5
q60 0 106 12.5t70.5 24.5t33.5 12q23 0 23 -24q0 -25 -19 -56t-53 -61.5t-92 -51t-125 -20.5q-104 0 -180.5 32.5t-124.5 88.5t-76.5 145t-39.5 188.5t-11 231.5v619q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43z" />
<glyph glyph-name="V" unicode="V" horiz-adv-x="1128"
d="M392 245l-333 1037q-9 21 -9 45q0 25 17.5 45t42.5 30t47 15.5t36 5.5q44 0 59 -49l267 -875q18 -59 18 -85q0 -50 -33 -132t-69 -82q-28 0 -43 45zM1071 1354l-354 -1180q-13 -33 -19.5 -48t-24.5 -41.5t-40 -41.5q-33 -23 -65 -38t-46 -15q-28 0 -28 30q0 12 20 79
l346 1165q17 56 76 107.5t111 51.5q30 0 30 -30q0 -18 -6 -39z" />
<glyph glyph-name="W" unicode="W" horiz-adv-x="1661"
d="M719 692l-119 -518q-21 -91 -80 -137q-60 -47 -90 -47q-29 0 -29 30q0 21 230 1033q9 40 35 40q28 0 50.5 -95t22.5 -167q0 -47 -20 -139zM1593 1358l-313 -1184q-20 -91 -82 -137q-63 -47 -99 -47q-26 0 -26 28t17 88l300 1163q17 64 73.5 109t105.5 45q30 0 30 -30
q0 -14 -6 -35zM288 235l-239 1033q-6 30 -6 37q0 47 54 82.5t93 35.5q17 0 25 -9.5t14 -35.5l183 -788q11 -49 11 -103q0 -110 -32.5 -204.5t-63.5 -94.5q-29 0 -39 47zM727 1354q23 29 61.5 49t63.5 20q16 0 25 -10.5t16 -36.5l201 -827q12 -54 12 -96q0 -37 -19.5 -118.5
t-37.5 -115.5q-18 -33 -41 -33q-29 0 -41 47l-254 1024q-6 23 -6 43q0 28 20 54z" />
<glyph glyph-name="X" unicode="X" horiz-adv-x="1053"
d="M641 750q0 -22 22 -60l318 -540q18 -31 18 -54q0 -42 -48.5 -74t-86.5 -32q-40 0 -69 49l-355 598q-20 33 -20 60q0 22 16 51q315 558 346 593q27 30 81.5 56t85.5 26q32 0 32 -31q0 -19 -20 -55l-293 -516q-27 -48 -27 -71zM432 402q-163 -297 -194 -328
q-27 -30 -79.5 -57t-82.5 -27q-33 0 -35 28q0 21 20 58l265 473q23 40 50 40q26 0 51 -40t25 -79q0 -34 -20 -68zM307 880l-233 390q-15 22 -15 41q0 43 56 77.5t94 34.5q33 0 57 -41l197 -346q18 -32 18 -56q0 -34 -36 -93q-40 -65 -74 -65q-20 0 -33 14t-31 44z" />
<glyph glyph-name="Y" unicode="Y" horiz-adv-x="1077"
d="M369 605l-334 665q-14 22 -14 42q0 22 16.5 42t40 35.5t48.5 24.5t43 9q39 0 58 -41l260 -555q24 -51 24 -84q0 -23 -10 -53t-25 -57t-32.5 -46t-33.5 -19q-22 0 -41 37zM1042 1346l-346 -793q-14 -33 -20.5 -51.5t-12.5 -50.5t-6 -69l-6 -243q-2 -51 -20 -73
q-25 -30 -71 -53t-75 -23q-34 0 -34 40l6 308q2 88 39 178l309 750q23 55 43 77q31 34 86.5 57t89.5 23q33 0 33 -28q0 -15 -15 -49z" />
<glyph glyph-name="Z" unicode="Z" horiz-adv-x="1063"
d="M850 0h-736q-43 0 -43 31q0 14 20 51t47 61q23 21 74 21h736q43 0 43 -31q0 -14 -20 -51t-47 -61q-23 -21 -74 -21zM835 1079l-422 -753q-34 -61 -64.5 -81.5t-88.5 -20.5q-65 0 -65 32q0 16 28 68l420 753q33 60 62.5 81t92.5 21q64 0 64 -32q0 -18 -27 -68zM287 1403
h671q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-706q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5z" />
<glyph glyph-name="bracketleft" unicode="[" horiz-adv-x="694"
d="M303 1272v-1667q0 -65 61 -65h288q42 0 42 -30q0 -14 -16.5 -41t-45.5 -52q-26 -21 -55 -21h-419q-56 0 -56 65v1811q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5zM233 1536h419q42 0 42 -30q0 -13 -17 -40t-45 -53q-23 -21 -78 -21h-413q-39 0 -39 27q0 17 20 46.5
t46 52.5q20 18 65 18z" />
<glyph glyph-name="backslash" unicode="\" horiz-adv-x="796"
d="M5 1526q80 -18 118 -90l750 -1370q23 -42 23 -56q0 -20 -25 -20q-53 0 -108 20.5t-72 52.5l-776 1407q-15 26 -15 41q0 25 27 25q30 0 78 -10z" />
<glyph glyph-name="bracketright" unicode="]" horiz-adv-x="694"
d="M391 -545v1872q0 65 -61 65h-288q-42 0 -42 30q0 13 17 40t45 53q26 21 55 21h413q62 0 62 -66v-1931q0 -40 -38 -84q-49 -59 -112 -59q-51 0 -51 59zM282 -604h-240q-42 0 -42 30q0 13 17 40t45 53q23 21 78 21h142q31 0 40 -15t9 -55q0 -46 -8.5 -60t-40.5 -14z" />
<glyph glyph-name="asciicircum" unicode="^" horiz-adv-x="1424"
d="M181 1460q-26 0 -58.5 26t-32.5 57q0 14 18 43l432 596q18 25 34 25q22 0 52.5 -42.5t30.5 -69.5q0 -20 -18 -47l-411 -561q-24 -27 -47 -27zM1242 1457q-23 0 -47 27l-542 749q-18 25 -18 47q0 27 33.5 63.5t58.5 36.5q19 0 33 -18l556 -776q18 -29 18 -43
q0 -31 -33 -58.5t-59 -27.5z" />
<glyph glyph-name="underscore" unicode="_" horiz-adv-x="1638"
d="M1333 -274h-1126q-43 0 -43 30q0 23 63 80q23 21 78 21h1127q43 0 43 -31q0 -22 -64 -80q-22 -20 -78 -20z" />
<glyph glyph-name="grave" unicode="`" horiz-adv-x="485"
d="M179 1647l186 -251q40 -54 40 -102q0 -81 -36 -81q-16 0 -37 21l-219 229q-33 34 -33 77q0 51 19.5 92t43.5 41q17 0 36 -26z" />
<glyph glyph-name="a" unicode="a" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31z" />
<glyph glyph-name="b" unicode="b" horiz-adv-x="1049"
d="M356 971q115 84 232 84q368 0 368 -504q0 -97 -20.5 -196.5t-56.5 -170.5q-38 -76 -92.5 -128t-88.5 -52q-20 0 -20 19q0 6 6.5 15.5t18.5 30.5t22 48q41 112 41 319q0 115 -11.5 198t-39 147.5t-77.5 97t-124 32.5q-80 0 -141 -31.5t-179 -121.5q-32 -25 -50 -25
q-20 0 -20 32v642q0 54 49.5 91.5t95.5 37.5q35 0 35 -43l-3 -506q0 -36 16 -36q13 0 39 20zM475 113q66 0 116.5 15t52.5 15q21 0 21 -22q0 -53 -73.5 -102.5t-184.5 -49.5q-134 0 -208.5 60t-74.5 203v339q0 54 28 86q27 31 64 56t57 25q31 0 31 -43v-402q1 -98 39.5 -139
t131.5 -41z" />
<glyph glyph-name="c" unicode="c" horiz-adv-x="930"
d="M281 508q0 -393 280 -393q58 0 109 13.5t78.5 30.5t51.5 30.5t34 13.5q24 0 24 -23q0 -22 -26 -56.5t-70 -69.5t-113.5 -60t-144.5 -25q-210 0 -311 126.5t-101 363.5q0 167 45 235q23 35 70 65.5t80 30.5q24 0 24 -28q0 -1 -15 -87t-15 -167zM797 997q30 -23 30 -47
q0 -25 -40 -60.5t-74 -35.5q-29 0 -68 18q-84 39 -153 39q-152 0 -293 -98q-43 -29 -52 -29q-14 0 -14 17q0 12 11 33t20 32q76 97 168 143t233 46q63 0 129 -15t103 -43z" />
<glyph glyph-name="d" unicode="d" horiz-adv-x="1067"
d="M764 33v1374q0 39 18 61q26 30 61.5 49t65.5 19q35 0 35 -43v-1374q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43zM679 156q14 7 18 7q17 0 17 -36q0 -49 -27 -74q-97 -84 -228 -84q-43 0 -79.5 5t-75 19t-68.5 37t-58 61.5t-46 89.5t-29 123.5
t-11 162.5q0 63 13.5 127t33.5 95q26 39 72.5 69.5t79.5 30.5q24 0 24 -30q0 -7 -8.5 -44t-17.5 -99.5t-9 -130.5q0 -190 59 -281t196 -91q64 0 144 43zM656 864q-78 46 -173 46q-74 0 -138 -23t-138 -72q-41 -27 -49 -27q-17 0 -17 19q0 25 29 61q132 187 358 187
q78 0 144 -29q25 -11 33.5 -26t8.5 -63q0 -83 -30 -83q-10 0 -28 10z" />
<glyph glyph-name="e" unicode="e" horiz-adv-x="932"
d="M287 637q0 -28 17.5 -35.5t51.5 -7.5q87 0 149 15t95 42t47.5 57t14.5 66q0 62 -43 99.5t-138 37.5q-149 0 -280 -94q-39 -29 -49 -29q-17 0 -17 19q0 25 29 61q54 69 123 113t126 59t113 15q72 0 130 -15t103 -46.5t70 -86t25 -127.5q0 -156 -148.5 -240.5t-405.5 -84.5
q-72 0 -163 8q-45 3 -45 44q0 111 32 166.5t83 85.5q50 29 76 29q24 0 24 -30q0 -12 -10 -58.5t-10 -62.5zM100 358q0 52 48 52h86q26 0 36.5 -10t16.5 -44q39 -243 266 -243q57 0 107 14t77.5 31t51 31t34.5 14q23 0 23 -25q0 -21 -23 -54t-65.5 -68.5t-117 -61
t-161.5 -25.5q-180 0 -279.5 108.5t-99.5 280.5z" />
<glyph glyph-name="f" unicode="f" horiz-adv-x="703"
d="M412 776v-660q0 -26 -14.5 -49t-36 -40t-47.5 -27t-48 -10q-34 0 -34 43v743q0 19 7 30t19.5 16.5t29 6.5t34.5 1q19 0 35.5 -1.5t28.5 -7t19 -16.5t7 -29zM805 1479q31 -24 31 -47q0 -26 -41.5 -62.5t-75.5 -36.5q-19 0 -63 21q-32 15 -47 21t-41.5 12t-57.5 6
q-90 0 -188 -66q-44 -29 -53 -29q-17 0 -17 17q0 25 43 78q63 77 142 110t157 33q136 0 211 -57zM492 880h-207q-25 0 -39 11t-14 42v36q0 205 45 259q24 29 59.5 50t56.5 21q33 0 33 -34q0 -6 -4.5 -62t-4.5 -119q0 -29 10.5 -44.5t41.5 -15.5h203q35 0 35 -23
q0 -24 -34 -60.5t-67 -48.5q-31 -12 -114 -12zM180 991v-58q0 -25 -11 -39t-42 -14h-47q-35 0 -35 22q0 27 43.5 74.5t69.5 47.5q22 0 22 -33z" />
<glyph glyph-name="g" unicode="g" horiz-adv-x="1077"
d="M152 752q20 17 55 36.5t56 19.5q26 0 26 -29q0 -8 -3.5 -42t-3.5 -64q0 -65 17.5 -112.5t41 -71.5t59.5 -37.5t61.5 -16.5t58.5 -3q48 0 81 13.5t40 13.5q17 0 17 -21q0 -40 -61.5 -87.5t-170.5 -47.5q-48 0 -92 9t-87 31.5t-74 56.5t-50 89t-19 125q0 95 48 138z
M792 797q70 0 90 -24q25 -32 25 -101q0 -112 -63 -209q-25 -37 -72.5 -76t-69.5 -39q-18 0 -18 18q0 7 11 24.5t24 39t24 64.5t11 94q0 34 -11 88t-32 85q-6 9 -6 14q0 6 3.5 10t24 8t59.5 4zM766 -530q52 35 79 90t27 113q0 141 -89 198t-269 59q-72 1 -107.5 2t-91.5 6.5
t-84 17t-59.5 31t-44 51t-12.5 75.5q0 73 47 123.5t81 50.5q18 0 18 -18q0 -7 -11.5 -36t-11.5 -53q0 -21 10.5 -35.5t27.5 -23t49.5 -12.5t66 -5.5t87.5 -1.5q68 0 120.5 -2.5t111.5 -11.5t102.5 -24.5t85 -42.5t67.5 -63.5t42 -90.5t16 -121q0 -66 -25.5 -125.5t-64 -99
t-82.5 -64t-82 -26.5q-20 0 -20 16q0 10 16 23zM940 863q-42 -16 -155 -16q-121 0 -179 23q-104 41 -184 41q-43 0 -111 -18.5t-139 -65.5q-40 -28 -47 -28q-16 0 -16 18q0 16 26 53q38 56 86 95.5t97.5 57.5t90 25t80.5 7q114 0 220 -45q59 -25 105 -25h190q32 0 32 -22
q0 -23 -32 -55.5t-64 -44.5zM82 -348q0 101 55 176t94 75q19 0 19 -20q0 -3 -9.5 -49t-9.5 -96q0 -93 83.5 -145.5t222.5 -52.5q51 0 103 11t82.5 22t31.5 11q18 0 18 -18q0 -20 -22.5 -47.5t-64 -55.5t-113 -47.5t-156.5 -19.5q-54 0 -109.5 14.5t-107.5 43.5t-84.5 80.5
t-32.5 117.5z" />
<glyph glyph-name="h" unicode="h" horiz-adv-x="1031"
d="M356 967q130 88 250 88q163 0 238 -100.5t75 -325.5v-510q0 -54 -49.5 -91.5t-95.5 -37.5q-35 0 -35 43q1 489 -0.5 536.5t-8 115t-20.5 99.5t-38.5 66.5t-63.5 47.5t-94 13q-122 0 -319 -153q-32 -25 -50 -25q-20 0 -20 30v648q0 53 50.5 89t94.5 36q35 0 35 -43
l-4 -500q0 -43 20 -43q12 0 35 17zM125 33v536q0 56 27 86q26 30 64 55t58 25q31 0 31 -43v-578q0 -54 -51 -89t-94 -35q-35 0 -35 43z" />
<glyph glyph-name="i" unicode="i" horiz-adv-x="426"
d="M303 1012v-893q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v893q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43zM303 1533v-145q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 61.5 49t65.5 19q35 0 35 -43z" />
<glyph glyph-name="j" unicode="j" horiz-adv-x="461"
d="M338 1533v-149q0 -53 -50.5 -89t-94.5 -36q-35 0 -35 43v154q0 47 50 83.5t95 36.5q35 0 35 -43zM338 1012v-1215q0 -91 -20 -164t-50.5 -114t-62 -62t-59.5 -21q-19 0 -19 17q0 6 12 34.5t16 60.5q5 35 5 121l-2 1257q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43z
M-63 -422q34 -39 76 -39q14 0 37.5 11.5t30.5 11.5q20 0 20 -23q0 -16 -10.5 -39t-29 -47t-50.5 -40.5t-69 -16.5q-71 0 -116 37t-45 73q0 35 37 70q36 33 65 33q27 0 54 -31z" />
<glyph glyph-name="k" unicode="k" horiz-adv-x="938"
d="M125 33v1377q0 54 49.5 90t95.5 36q35 0 35 -43v-1377q0 -55 -49 -90.5t-96 -35.5q-35 0 -35 43zM859 63q-43 -73 -94 -73q-24 0 -49 37l-344 503q-17 26 -17 42q0 25 27 55l295 329q42 47 76 57t114 11q31 0 31 -25q0 -18 -29 -47l-297 -307q-24 -26 -24 -44
q0 -15 17 -37l292 -400q18 -27 18 -49q0 -25 -16 -52z" />
<glyph glyph-name="l" unicode="l" horiz-adv-x="426"
d="M123 33v1378q0 54 49 89.5t96 35.5q35 0 35 -43v-1378q0 -55 -49 -90t-96 -35q-35 0 -35 43z" />
<glyph glyph-name="m" unicode="m" horiz-adv-x="1583"
d="M125 33v538q0 57 27 86q28 32 64 56t58 24q31 0 31 -43v-575q0 -54 -49.5 -91.5t-95.5 -37.5q-35 0 -35 43zM788 955q12 -11 20 -17t14.5 -8t15.5 -2q24 0 92 43q132 84 232 84q156 0 232.5 -98.5t76.5 -325.5v-506q0 -54 -49.5 -94.5t-94.5 -40.5q-35 0 -35 43v395
q0 66 -1 108t-4 94t-9 84t-16.5 68t-26.5 56.5t-38.5 39t-53 26t-69.5 7.5q-70 0 -137 -37.5t-185 -130.5q-31 -23 -45 -23q-12 0 -21 20q-4 9 -8 24q-22 76 -60 111.5t-114 35.5q-59 0 -130.5 -35t-178.5 -118q-33 -25 -49 -25q-21 0 -21 32v164q0 53 50 89.5t96 36.5
q35 0 35 -43v-25q0 -35 15 -35q10 0 40 19q127 84 221 84q56 0 94.5 -14t111.5 -86zM703 33v538q0 56 27 86q27 31 64 55.5t58 24.5q31 0 31 -43v-569q0 -45 -18 -68q-25 -30 -61 -48.5t-66 -18.5q-35 0 -35 43z" />
<glyph glyph-name="n" unicode="n" horiz-adv-x="1038"
d="M125 33v538q0 56 27 86q27 31 64 55.5t58 24.5q31 0 31 -43v-575q0 -55 -49.5 -92t-95.5 -37q-35 0 -35 43zM360 970q57 42 119 63.5t111 21.5q174 0 255 -97.5t81 -326.5v-512q0 -54 -49 -91.5t-96 -37.5q-35 0 -35 43v395q0 94 -1.5 142t-8 115t-21.5 99.5t-40.5 66.5
t-66.5 47t-98 13q-115 0 -315 -153q-32 -25 -50 -25q-20 0 -20 34v159q0 54 49.5 91.5t95.5 37.5q35 0 35 -43v-25q0 -36 16 -36q14 0 39 19z" />
<glyph glyph-name="o" unicode="o" horiz-adv-x="1059"
d="M524 1055q228 0 335.5 -134.5t107.5 -396.5q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 7 16t19 30.5t21 47.5q41 112 41 317q0 113 -15.5 196.5t-51 148.5t-98.5 98.5t-154 33.5q-126 0 -260 -92q-5 -4 -15 -10.5t-15.5 -10.5
t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 362 187zM280 552q0 -70 3 -120t11.5 -104t26 -90t44 -66t67.5 -44.5t96 -14.5q47 0 82.5 13t40.5 13q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-87 0 -151.5 29t-103.5 76t-62.5 118t-31.5 143t-8 163
q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -77t-10.5 -129z" />
<glyph glyph-name="p" unicode="p" horiz-adv-x="1063"
d="M360 971q115 84 234 84q178 0 276 -122.5t98 -381.5q0 -98 -20 -197t-55 -170q-37 -76 -91.5 -128t-88.5 -52q-21 0 -21 19q0 6 6.5 15.5t18.5 30.5t22 48q38 107 38 317q0 91 -7.5 162t-25.5 131.5t-47 100t-73.5 61.5t-103.5 22q-81 0 -145.5 -33t-179.5 -120
q-32 -25 -50 -25q-20 0 -20 32v168q0 51 52 86.5t93 35.5q35 0 35 -43v-25q0 -36 16 -36q13 0 39 20zM367 143q45 -30 122 -30q66 0 117.5 15t52.5 15q21 0 21 -22q0 -52 -77 -102t-185 -50q-112 0 -197 51q-52 31 -74 72t-22 105v372q0 57 27 87q27 31 64 55.5t58 24.5
q31 0 31 -43v-400q0 -109 62 -150zM305 -157v-318q0 -55 -49.5 -92t-95.5 -37q-35 0 -35 43v501q0 45 35 45q40 0 112 -56q33 -25 33 -86z" />
<glyph glyph-name="q" unicode="q" horiz-adv-x="1073"
d="M770 -561v1487q0 38 18 61q26 30 62 49t65 19q35 0 35 -43v-1487q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43zM685 156q14 7 19 7q16 0 16 -37q0 -50 -27 -73q-102 -84 -228 -84q-62 0 -111 10.5t-100 42t-85 84.5t-55.5 145t-21.5 216q0 63 13.5 127
t33.5 95q26 39 72.5 69.5t79.5 30.5q24 0 24 -30q0 -7 -8.5 -44t-17.5 -99.5t-9 -130.5q0 -189 61.5 -280.5t199.5 -91.5q64 0 144 43zM663 864q-79 46 -174 46q-138 0 -282 -95q-41 -27 -49 -27q-17 0 -17 19q0 25 29 61q132 187 365 187q70 0 137 -26q27 -10 37.5 -28
t10.5 -72q0 -78 -25 -78q-11 0 -32 13z" />
<glyph glyph-name="r" unicode="r" horiz-adv-x="737"
d="M125 33v504q0 56 27 86q27 31 64 56.5t58 25.5q31 0 31 -43v-546q0 -55 -49 -90.5t-96 -35.5q-35 0 -35 43zM555 1055q57 0 119.5 -25t62.5 -65q0 -32 -42 -66.5t-74 -34.5q-27 0 -76 25q-46 22 -84 22q-24 0 -46 -7.5t-51 -29t-47.5 -37t-63 -57t-69.5 -63.5
q-22 -19 -37 -19q-22 0 -22 37v194q0 54 49.5 90t95.5 36q35 0 35 -43v-56q0 -32 14 -32q11 0 35 24q107 107 201 107z" />
<glyph glyph-name="s" unicode="s" horiz-adv-x="887"
d="M659 227q0 107 -58.5 153t-168.5 56q-97 9 -167 33t-109 58.5t-56.5 74t-17.5 85.5q0 47 48 83.5t81 36.5q23 0 31 -31q8 -34 16.5 -57t24 -40.5t31 -28t48 -19t62 -13.5t84.5 -12q87 -11 148 -39.5t92 -70.5t44 -87t13 -102q0 -64 -21.5 -122.5t-52.5 -95t-63 -58
t-56 -21.5q-16 0 -16 15q0 6 16 30q47 76 47 172zM725 997q31 -24 31 -47q0 -25 -41.5 -61.5t-75.5 -36.5q-10 0 -18 2.5t-23.5 9t-22.5 8.5q-94 39 -169 39q-141 0 -248 -65q-7 -4 -19.5 -12t-20 -12.5t-12.5 -4.5q-14 0 -14 17q0 22 31 61q132 160 371 160q63 0 129 -15
t102 -43zM272 164q33 -20 45.5 -27t43 -15.5t65.5 -8.5q44 0 87 13t45 13q23 0 23 -24q0 -16 -16 -39.5t-45 -48t-79.5 -41.5t-110.5 -17q-84 0 -161 39t-77 80q0 31 41.5 63.5t79.5 32.5q25 0 59 -20z" />
<glyph glyph-name="t" unicode="t" horiz-adv-x="804"
d="M397 774v-350q0 -86 10 -145.5t29.5 -96.5t49 -53t69.5 -16q47 0 78.5 11.5t52.5 25t35 25t28 11.5q13 0 19 -7.5t6 -19.5q0 -17 -13.5 -48.5t-45.5 -63t-84.5 -55t-131.5 -23.5q-77 0 -130.5 22t-87.5 71.5t-49 129t-15 195.5v387q0 22 9.5 33.5t24 16.5t30 5h27.5
q18 0 34.5 -1.5t28.5 -7t19 -16.5t7 -30zM165 991v-57q0 -25 -11 -39t-42 -14h-47q-35 0 -35 22q0 27 43.5 74t69.5 47q22 0 22 -33zM397 1206v-129q0 -31 14 -42t39 -11h268q35 0 35 -23q0 -24 -33.5 -60t-66.5 -48q-32 -12 -115 -12h-268q-25 0 -39 11t-14 42v189
q0 55 49 90.5t96 35.5q35 0 35 -43z" />
<glyph glyph-name="u" unicode="u" horiz-adv-x="1044"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-609l4 -77q4 -57 16 -97.5t36 -66t60.5 -37.5t88.5 -12q83 0 151 39q19 11 25 11q9 0 12.5 -7t3.5 -30q0 -42 -29 -71.5t-70 -48.5t-85.5 -28t-75.5 -9
zM921 1012v-896q0 -54 -49.5 -90t-95.5 -36q-35 0 -35 43v896q0 52 50 89t95 37q35 0 35 -43z" />
<glyph glyph-name="v" unicode="v" horiz-adv-x="911"
d="M876 998l-278 -879q-18 -57 -66.5 -93t-95.5 -36q-34 0 -34 32q0 12 6 29l270 875q12 43 29 63q24 29 67.5 47.5t75.5 18.5q14 0 22.5 -9t8.5 -24q0 -9 -5 -24zM413 278q0 -56 -26.5 -117.5t-48.5 -61.5q-24 0 -39 45l-260 771q-7 21 -7 32q0 36 48 72t78 36q26 0 39 -43
l202 -660q14 -50 14 -74z" />
<glyph glyph-name="w" unicode="w" horiz-adv-x="1489"
d="M471 31q-23 -27 -58 -44.5t-57 -17.5q-32 0 -32 32q0 11 4 22l233 751q10 33 31 33q28 0 65 -137q7 -27 7 -54q0 -32 -15 -86l-119 -399q-15 -50 -59 -100zM348 266q-13 -48 -34.5 -80t-37.5 -32q-15 0 -24 12.5t-19 44.5l-196 700q-5 16 -5 32q0 37 49.5 74.5t80.5 37.5
q29 0 41 -43l153 -570q10 -39 10 -73q0 -41 -18 -103zM1126 35q-25 -30 -59 -48t-63 -18q-32 0 -32 33q0 10 3 21l272 903q12 42 29 67q20 28 62.5 45t76.5 17q14 0 22.5 -8t8.5 -21q0 -4 -2 -14l-264 -885q-18 -51 -54 -92zM983 229q-33 -120 -67 -120q-14 0 -23 13t-19 44
l-249 749q-6 18 -6 31q0 38 48 73.5t78 35.5q28 0 41 -43l199 -633q11 -34 11 -67q0 -34 -13 -83z" />
<glyph glyph-name="x" unicode="x" horiz-adv-x="897"
d="M354 553l236 373q30 48 51 71q24 27 68 42.5t77 15.5q29 0 29 -26q0 -16 -14 -38l-250 -403q-14 -22 -14 -45q0 -24 16 -47l252 -375q20 -31 20 -54q0 -30 -37 -64t-78 -34q-18 0 -30 8t-29 33l-293 447q-20 30 -20 51q0 18 16 45zM358 281l-112 -183q-22 -36 -49 -65
q-25 -27 -70.5 -45.5t-77.5 -18.5q-28 0 -28 26q0 15 14 38l231 375q15 22 28 22q26 0 50.5 -44.5t24.5 -68.5q0 -18 -11 -36zM211 1014l164 -245q15 -26 15 -43q0 -31 -38.5 -81.5t-66.5 -50.5q-18 0 -37 29l-193 278q-20 28 -20 51q0 34 42 68.5t75 34.5q18 0 30.5 -8
t28.5 -33z" />
<glyph glyph-name="y" unicode="y" horiz-adv-x="1042"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-564l3 -88q1 -29 3 -46.5t5 -31.5t6.5 -27t9.5 -33q17 -60 65 -84.5t121 -24.5q75 0 143 39q19 11 26 11q15 0 15 -37q0 -41 -29 -70.5t-70 -48.5
t-85.5 -28.5t-75.5 -9.5zM920 1012v-1215q0 -75 -19 -138.5t-47.5 -103t-62.5 -67.5t-61.5 -39.5t-47.5 -11.5q-16 0 -16 14q0 9 16 31q34 47 46.5 118.5t12.5 192.5l-2 1133q0 39 19 61q26 30 61.5 49t65.5 19q35 0 35 -43zM332 -410q36 -27 67 -38.5t76 -11.5
q40 0 91.5 11t54.5 11q26 0 26 -25q0 -46 -78 -93.5t-168 -47.5q-88 0 -166.5 37t-78.5 73t41 68q47 39 77 39t58 -23z" />
<glyph glyph-name="z" unicode="z" horiz-adv-x="850"
d="M159 251l342 540q20 31 46 41.5t78 10.5q69 0 69 -26q0 -13 -17 -41l-349 -552q-23 -39 -93 -39h-43q-50 0 -50 25q0 13 17 41zM206 1024h560q43 0 43 -31q0 -14 -15 -40t-43 -51q-23 -21 -73 -21h-595q-14 0 -21.5 1.5t-13.5 8.5t-6 20q0 35 53.5 74t110.5 39zM159 143
h599q43 0 43 -31q0 -14 -15 -40t-43 -51q-23 -21 -73 -21h-595q-40 0 -40 28q0 37 41 78q35 37 83 37z" />
<glyph glyph-name="braceleft" unicode="{" horiz-adv-x="856"
d="M714 -601h-67q-168 0 -247 90t-79 285q-3 175 -4 225.5t-2 94.5t-1.5 77.5t-0.5 44.5q0 53 -6.5 89t-24 57.5t-47 31t-75.5 9.5h-117q-43 0 -43 30q0 6 9 22.5t26.5 33t44 29.5t61.5 13q55 0 89 9t52.5 31t24.5 58t6 90v44.5t-0.5 78t-0.5 95t-0.5 96t-0.5 80.5v49
q0 99 18 169.5t56.5 116t98 67t143.5 21.5h166q43 0 43 -31q0 -4 -7 -20t-23.5 -34t-44 -32t-67.5 -14q-67 0 -99 -11.5t-48 -36t-19 -62t-3 -88.5q0 -86 2 -342q0 -43 -8.5 -88.5t-25.5 -88.5t-41 -81.5t-55 -68.5t-69 -48t-81 -21v-3q67 -4 119 -43.5t88 -98t54.5 -126.5
t18.5 -128q0 -71 -2 -330q0 -55 6 -95t25 -65.5t55 -37.5t95 -12h107q43 0 43 -31q0 -4 -7 -20t-23.5 -34t-44 -32t-67.5 -14z" />
<glyph glyph-name="bar" unicode="|" horiz-adv-x="380"
d="M100 -561v1972q0 54 49 89.5t96 35.5q35 0 35 -43v-1972q0 -55 -49 -90t-96 -35q-35 0 -35 43z" />
<glyph glyph-name="braceright" unicode="}" horiz-adv-x="856"
d="M142 1536h67q168 0 247 -90t79 -285q1 -85 4.5 -258t3.5 -184q0 -53 6.5 -89t24 -58t47 -31t75.5 -9h117q43 0 43 -30q0 -6 -9 -22.5t-26.5 -33t-44 -29.5t-61.5 -13q-65 0 -94.5 -9t-47 -31t-24 -58t-6.5 -90v-44.5t0.5 -78t0.5 -95t0.5 -96t0.5 -80.5v-49
q0 -99 -18 -169.5t-56.5 -116t-98 -67t-143.5 -21.5h-166q-43 0 -43 31q0 3 7 19t23.5 34t44 32.5t67.5 14.5q36 0 61.5 3.5t43 10t28 16t15.5 21.5q14 26 17.5 61t3.5 86q-1 205 -2 342q0 64 19.5 133t55.5 126t88 95t117 42v3q-45 2 -83 21.5t-69 50t-55 70t-40 82.5
t-24.5 87.5t-8.5 84.5l2 318q0 67 -6 107t-25 65.5t-55 37.5t-95 12h-107q-43 0 -43 31q0 3 7 19t23.5 34t44 32.5t67.5 14.5z" />
<glyph glyph-name="asciitilde" unicode="~" horiz-adv-x="1237"
d="M214 698q91 74 207 74q54 0 96.5 -11t77.5 -27.5t64.5 -35.5t58 -35.5t58.5 -27.5t65 -11q93 0 167 41q40 22 49 22q16 0 16 -27q0 -54 -23.5 -91t-59.5 -59.5t-79.5 -32t-83.5 -9.5q-52 0 -92 11t-73 27t-62.5 35.5t-60.5 35.5t-66.5 27t-80.5 11q-86 0 -165 -46
q-35 -20 -47 -20q-16 0 -16 27q0 83 50 122z" />
<glyph glyph-name="uni00A0" unicode="&#xa0;" horiz-adv-x="426"
/>
<glyph glyph-name="exclamdown" unicode="&#xa1;" horiz-adv-x="471"
d="M143 -337v749q0 49 21 74q27 31 64.5 53.5t64.5 22.5q35 0 35 -43v-750q0 -42 -21 -67q-28 -33 -64.5 -57.5t-64.5 -24.5q-35 0 -35 43zM143 745v160q0 49 21 74q27 31 64.5 53t64.5 22q35 0 35 -43v-159q0 -43 -21 -68q-27 -31 -66.5 -56.5t-63.5 -25.5q-34 0 -34 43z
" />
<glyph glyph-name="cent" unicode="&#xa2;" horiz-adv-x="958"
d="M401 76q0 -84 -46 -84q-14 0 -35 9.5t-44.5 24t-45 32t-34.5 33.5q-104 122 -104 368q0 67 6 114t19.5 81.5t35.5 59t54 45.5q46 31 80 31q24 0 24 -28q0 -2 -15 -87q-15 -86 -15 -167q0 -209 78 -303q16 -20 25 -33.5t12.5 -26.5t4 -29t0.5 -40zM410 976
q-1 -35 -7.5 -51.5t-19.5 -21.5l-23 -9q-33 -12 -69 -30.5t-67 -36t-52 -30.5t-25 -13q-14 0 -14 17q0 6 3 15t8 18t10 17.5t10 14.5q92 115 194 156q15 7 27 7q25 0 25 -53zM461 -257v328q0 28 9 37.5t31 9.5q4 0 12.5 -0.5t17.5 -1t51 -1t87.5 13t77.5 30t52.5 30.5
t34.5 14q24 0 24 -23q0 -17 -16 -42.5t-44.5 -52.5t-67 -51.5t-83.5 -39.5q-34 -12 -34 -48v-117q0 -30 -14.5 -54t-33.5 -40.5t-39 -25.5t-30 -9q-35 0 -35 43zM645 872q-74 33 -144 39q-41 3 -41 43v242q0 28 15 51.5t34.5 41t39 27t28.5 9.5q35 0 35 -43v-166
q0 -23 4.5 -36.5t12 -20.5t15.5 -9.5t21 -4.5q74 -14 118 -39t44 -56q0 -12 -11.5 -28.5t-28.5 -31.5t-37 -25.5t-37 -10.5q-29 0 -68 18z" />
<glyph glyph-name="sterling" unicode="&#xa3;" horiz-adv-x="922"
d="M103 648q18 16 33 16q17 0 29 -22l32 -63q7 -14 7 -26q0 -29 -41 -29h-84q-43 0 -43 31q0 13 19 40.5t48 52.5zM862 1315q0 -38 -51 -74t-90 -36q-32 0 -109 32.5t-139 32.5q-56 0 -103 -16t-83.5 -40.5t-96.5 -74.5q-54 -45 -68 -45q-22 0 -22 24q0 16 19 49t36 54
q92 111 192.5 162t246.5 51q89 0 178.5 -34t89.5 -85zM392 464q85 0 85 -41q0 -21 -24.5 -108t-24.5 -116q0 -35 39 -35h455q43 0 43 -31q0 -14 -20.5 -51t-47.5 -62q-22 -20 -73 -20h-650q-41 0 -41 35q0 13 15 31t45 54.5t55 80.5q21 36 36 98t15 108q0 15 2 22.5t10 17
t28 13.5t53 4zM681 524h-296q-50 0 -76 15t-48 47q-59 86 -98 181.5t-39 159.5q0 36 7 57q14 42 60 80t77 38q24 0 30.5 -15t6.5 -44q0 -113 32 -204.5t84 -140.5q32 -30 103 -30h256q43 0 43 -31q0 -11 -19.5 -38.5t-48.5 -53.5q-23 -21 -74 -21z" />
<glyph glyph-name="currency" unicode="&#xa4;" horiz-adv-x="1045"
d="M348 539q0 -55 6.5 -101t24.5 -79t50 -51.5t84 -18.5q15 0 31 1.5t29.5 4t22.5 4t10 1.5q16 0 16 -15q0 -14 -11 -32.5t-30.5 -35t-47.5 -27.5t-62 -11q-107 0 -171 47q-17 12 -24 12q-12 0 -25 -15l-116 -122q-11 -12 -23 -12q-13 0 -22.5 21t-9.5 50q0 36 26 65l93 86
q17 15 17 31q0 4 -4 19q-18 61 -18 148q0 39 6 68.5t18 50.5t30.5 35.5t42.5 24.5q42 17 64 17q18 0 18 -18q0 -2 -4 -15.5t-8.5 -34.5t-8.5 -46.5t-4 -51.5zM521 886q63 0 116.5 -16.5t95.5 -49.5q9 -7 16.5 -11.5t16.5 -3.5q15 -1 32 17l112 118q7 12 19 12q14 0 25 -18.5
t11 -52.5q0 -36 -26 -65l-91 -84q-18 -17 -18 -33q0 -8 6 -24q21 -62 21 -136q0 -93 -27 -171q-5 -20 -5 -23q0 -16 14 -28l100 -92q26 -29 26 -68q0 -32 -11.5 -50.5t-24.5 -18.5q-12 0 -19 13l-125 131q-13 13 -25 13q-9 0 -21 -9q-50 -38 -93 -38q-13 0 -13 12
q0 4 7.5 16t17 32.5t19.5 49t16 66.5q9 61 9 109q0 293 -225 293q-120 0 -208 -57q-20 -13 -31 -13q-14 0 -31 16l-101 94q-26 23 -26 65q0 10 2 22.5t6 23.5t10 18.5t14 7.5q11 0 23 -13l119 -127q11 -11 22 -11q14 0 36 16q95 68 209 68z" />
<glyph glyph-name="yen" unicode="&#xa5;" horiz-adv-x="1077"
d="M496 607l309 659q28 60 43 77q31 34 86.5 57t89.5 23q33 0 33 -28q0 -18 -15 -49l-346 -702q-7 -16 -7 -24q0 -24 35 -24h220q24 0 33.5 -4.5t9.5 -20.5q0 -12 -14.5 -28t-49.5 -48q-22 -20 -78 -20h-336q-44 0 -44 35q0 30 31 97zM369 696l-334 574q-14 22 -14 42
q0 43 52.5 77t89.5 34q35 0 57 -41l261 -472q24 -44 24 -84q0 -49 -32 -108t-63 -59q-20 0 -41 37zM334 475h-150q-24 0 -33.5 4.5t-9.5 20.5q0 19 63 76q23 20 78 20h96q38 0 38 -24q0 -12 -6 -30q-12 -36 -28 -51.5t-48 -15.5zM343 263h-159q-24 0 -33.5 4.5t-9.5 20.5
q0 19 63 76q23 20 78 20h68q27 0 36.5 -13t9.5 -42q0 -33 -11 -49.5t-42 -16.5zM515 384h429q24 0 33.5 -4.5t9.5 -20.5q0 -12 -14.5 -28t-49.5 -48q-22 -20 -78 -20h-140q-27 0 -40 -12.5t-13 -43.5l-1 -68q-2 -51 -20 -73q-25 -30 -71 -53t-75 -23q-34 0 -34 40l5 297
q1 33 15.5 45t43.5 12z" />
<glyph glyph-name="brokenbar" unicode="&#xa6;" horiz-adv-x="380"
d="M100 812v599q0 54 49 89.5t96 35.5q35 0 35 -43v-599q0 -55 -49 -90t-96 -35q-35 0 -35 43zM100 -561v599q0 54 49 89.5t96 35.5q35 0 35 -43v-599q0 -55 -49 -90t-96 -35q-35 0 -35 43z" />
<glyph glyph-name="section" unicode="&#xa7;" horiz-adv-x="1022"
d="M264 518q0 -176 271 -312q129 -65 213 -119t132.5 -105.5t68 -106t19.5 -120.5q0 -83 -28.5 -145t-71 -103t-91 -62t-87.5 -21q-27 0 -27 21q0 16 16 25q26 15 45 39.5t31 52.5t17.5 57t5.5 54q0 44 -6.5 85t-34 80.5t-83.5 80.5t-155 85q-116 51 -196.5 105.5
t-131.5 109t-74 109.5t-23 108q0 72 24.5 130t61.5 98t81 61.5t83 21.5q10 0 15.5 -6.5t5.5 -14.5q0 -6 -8 -18.5t-18.5 -27t-21 -28.5t-14.5 -23q-9 -17 -14 -39t-5 -72zM587 903q120 -65 201 -119.5t131 -106.5t71.5 -104.5t21.5 -112.5q0 -74 -27.5 -131t-69 -96
t-88.5 -59.5t-86 -20.5q-28 0 -28 20q0 14 16 29q46 41 69.5 83.5t23.5 92.5q0 53 -15 99t-58.5 92t-124 96t-210.5 111q-36 16 -59.5 27t-42.5 20.5t-37 19.5t-41 24q-53 31 -81.5 65.5t-28.5 90.5q0 28 14 60.5t52 66.5q48 42 84 42q17 0 26 -8.5t9 -32.5q0 -36 8.5 -57
t22.5 -38t32 -31.5t37 -26.5l49 -28l62 -32q21 -11 37.5 -19.5t29.5 -15.5zM927 1395q0 -19 -15.5 -38.5t-37.5 -36t-46 -27t-42 -10.5q-4 0 -23 5t-46.5 12.5t-60.5 16t-65 16t-56.5 12.5t-58.5 5q-33 0 -69 -6.5t-70 -20.5t-69 -38t-77 -58q-54 -45 -68 -45q-22 0 -22 24
q0 7 6 21t14 29t17.5 29.5t17.5 23.5q44 54 92 93t103 63.5t118 36.5t138 12q26 0 60 -3.5t69.5 -11t69.5 -17.5t61 -23.5t43.5 -29.5t16.5 -34zM408 -604q-37 0 -69.5 3t-63 13.5t-61.5 29t-65 50.5q-33 30 -33 63q0 20 11.5 38t44.5 46q13 11 32.5 25t39.5 14
q17 0 38.5 -9.5t50.5 -33.5q44 -38 83.5 -56.5t78.5 -18.5q17 0 37.5 5.5t47.5 17t45 11.5q21 0 21 -32q0 -13 -12.5 -40.5t-40.5 -55.5t-73.5 -49t-111.5 -21z" />
<glyph glyph-name="dieresis" unicode="&#xa8;" horiz-adv-x="665"
d="M245 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM585 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="copyright" unicode="&#xa9;" horiz-adv-x="1826"
d="M233 713q0 -143 48 -269t136.5 -221t215 -150t282.5 -55q154 0 279.5 55.5t214.5 150.5t137.5 221t48.5 268q0 95 -22.5 184.5t-65 168t-103.5 143.5t-137 111.5t-166 72.5t-190 26t-188.5 -26t-164 -72.5t-135.5 -111.5t-102.5 -143.5t-65 -167.5t-22.5 -185zM102 713
q0 168 61.5 319t167.5 262t258 176.5t324 65.5q234 0 421 -111.5t288.5 -299t101.5 -412.5q0 -166 -64 -317t-172.5 -260t-259 -173.5t-317.5 -64.5q-179 0 -330.5 61t-256.5 168.5t-163.5 258.5t-58.5 327zM729 730q0 -336 240 -336q64 0 115.5 19t80.5 37.5t38 18.5
q20 0 20 -20q0 -19 -22.5 -48.5t-60 -59.5t-97 -51.5t-123.5 -21.5q-179 0 -265.5 108.5t-86.5 311.5q0 143 38 201q20 31 60.5 57t68.5 26q20 0 20 -24q0 -1 -13 -75t-13 -143zM1171 1149q26 -21 26 -40q0 -22 -34.5 -52t-63.5 -30q-25 0 -58 15q-70 33 -131 33
q-130 0 -251 -84q-36 -24 -44 -24q-12 0 -12 14q0 23 26 56q65 83 144 122.5t199 39.5q54 0 110.5 -13t88.5 -37z" />
<glyph glyph-name="ordfeminine" unicode="&#xaa;" horiz-adv-x="755"
d="M455 698q-30 -28 -84.5 -46.5t-98.5 -18.5q-108 0 -165 55t-57 137q0 37 26 62q18 17 49 33t50 16q24 0 24 -34q0 -84 28 -116.5t91 -32.5q24 0 64.5 8.5t61.5 20.5q14 9 19 9q11 0 11 -16v-36q0 -24 -19 -41zM361 1434q62 0 113 -15.5t92.5 -49t65 -92.5t23.5 -139v-400
q0 -36 -42.5 -62.5t-75.5 -26.5q-26 0 -26 31v426q0 208 -191 208q-106 0 -195 -60q-31 -22 -42 -22t-11 12q0 25 26 62q48 67 119.5 97.5t143.5 30.5zM449 1091q25 -15 25 -44v-66q0 -23 -14 -23q-4 0 -10 2.5t-12.5 6.5t-8.5 5q-71 33 -144 33q-117 0 -203 -68
q-26 -21 -35 -21q-12 0 -12 12q0 25 25 61q39 60 107.5 96.5t140.5 36.5q89 0 141 -31z" />
<glyph glyph-name="guillemotleft" unicode="&#xab;" horiz-adv-x="1384"
d="M371 509l433 -336q37 -29 37 -58t-33 -76t-65 -47q-21 0 -43 18l-489 394q-26 22 -26 38q0 26 45.5 57t81.5 31q31 0 59 -21zM705 896l-533 -361q-38 -22 -57 -22q-25 0 -25 31q0 47 50.5 116t96.5 101l525 371q26 19 46 19q28 0 28 -30q0 -49 -30 -109
q-18 -35 -47 -67.5t-54 -48.5zM876 544l329 -220q29 -18 29 -41t-33 -66t-60 -43q-12 0 -34 13l-395 262q-20 13 -20 28q0 22 49 53.5t84 31.5q23 0 51 -18zM1114 792l-426 -229q-25 -14 -45 -14q-19 0 -19 20q0 46 42 103t95 87l401 230q27 15 37 15t16 -6.5t6 -16.5
q0 -4 -3 -20.5t-10.5 -42.5t-16.5 -45q-26 -55 -77 -81z" />
<glyph glyph-name="logicalnot" unicode="&#xac;"
d="M1082 580h-875q-43 0 -43 31q0 11 19 38.5t48 53.5q23 20 74 20h924q41 0 41 -42v-382q0 -51 -20 -74q-60 -67 -98 -67q-25 0 -25 43v322q0 57 -45 57z" />
<glyph glyph-name="uni00AD" unicode="&#xad;" horiz-adv-x="1044"
d="M739 532h-532q-43 0 -43 31q0 13 19.5 45.5t47.5 57.5q23 20 74 20h533q43 0 43 -31q0 -12 -20 -44.5t-48 -57.5q-23 -21 -74 -21z" />
<glyph glyph-name="registered" unicode="&#xae;" horiz-adv-x="1826"
d="M233 713q0 -143 48 -269t136.5 -221t215 -150t282.5 -55q154 0 279.5 55.5t214.5 150.5t137.5 221t48.5 268q0 95 -22.5 184.5t-65 168t-103.5 143.5t-137 111.5t-166 72.5t-190 26t-188.5 -26t-164 -72.5t-135.5 -111.5t-102.5 -143.5t-65 -167.5t-22.5 -185zM1092 902
q0 65 -21.5 110t-61 68.5t-85.5 33.5t-105 10h-172q-28 0 -28 16q0 30 41 63t83 36h138q29 0 56 -2t65 -9t70 -19t65.5 -35t56.5 -53.5t37.5 -77t14.5 -104.5q0 -150 -154 -253q-20 -13 -20 -32q0 -16 10 -31l169 -263q16 -30 16 -43q0 -27 -38 -49q-35 -20 -57 -20
q-25 0 -42 30l-200 340q-8 13 -8 27q0 18 26 32q71 39 107.5 97.5t36.5 127.5zM764 551v-199q0 -34 -15 -51q-17 -21 -50.5 -37t-54.5 -16q-25 0 -25 30v277q0 58 73 58q72 0 72 -62zM619 695v347q0 24 17.5 32.5t54.5 8.5q41 0 57 -8t16 -33v-260q0 -25 30 -25h124
q31 0 31 -18q0 -16 -36.5 -39.5t-98.5 -38.5q-40 -9 -135 -9q-18 0 -29.5 2t-21 12t-9.5 29zM102 713q0 168 61.5 319t167.5 262t258 176.5t324 65.5q234 0 421 -111.5t288.5 -299t101.5 -412.5q0 -166 -64 -317t-172.5 -260t-259 -173.5t-317.5 -64.5q-179 0 -330.5 61
t-256.5 168.5t-163.5 258.5t-58.5 327z" />
<glyph glyph-name="macron" unicode="&#xaf;" horiz-adv-x="806"
d="M584 1371h-461q-24 0 -33.5 4.5t-9.5 20.5q0 13 17.5 40.5t45.5 53.5q23 21 78 21h462q23 0 33 -5t10 -21q0 -12 -18 -40.5t-46 -53.5q-22 -20 -78 -20z" />
<glyph glyph-name="degree" unicode="&#xb0;" horiz-adv-x="837"
d="M419 951q37 0 69 16t55 43t36 63t13 75t-13.5 75t-36.5 63.5t-55.5 44t-69.5 16.5t-68.5 -16.5t-54.5 -44t-36 -63.5t-13 -75t12.5 -75t35.5 -63t55 -43t71 -16zM100 1148q0 133 95 226t226 93q142 0 229 -91t87 -228q0 -132 -95.5 -226t-226.5 -94q-141 0 -228 91.5
t-87 228.5z" />
<glyph glyph-name="plusminus" unicode="&#xb1;"
d="M822 796h405q43 0 43 -30q0 -12 -19.5 -39.5t-48.5 -53.5q-22 -20 -74 -20h-449q-10 0 -16.5 2t-12 11t-5.5 24v346q0 52 21 74q26 29 53 48.5t39 19.5q30 0 30 -43v-302q0 -22 9 -29.5t25 -7.5zM788 543v-171q0 -51 -20 -74q-60 -67 -98 -67q-25 0 -25 43v269
q0 29 15.5 39.5t54.5 10.5q41 0 57 -10.5t16 -39.5zM536 653h-329q-43 0 -43 31q0 11 19 38.5t48 53.5q23 20 74 20h231q28 0 38.5 -15.5t10.5 -53.5q0 -41 -10.5 -57.5t-38.5 -16.5zM1128 0h-921q-43 0 -43 31q0 11 19 38.5t48 53.5q23 20 74 20h922q43 0 43 -30
q0 -12 -19.5 -39.5t-48.5 -53.5q-22 -20 -74 -20z" />
<glyph glyph-name="twosuperior" unicode="&#xb2;" horiz-adv-x="645"
d="M141 708h412q26 0 26 -18q0 -11 -13.5 -49t-29.5 -52q-13 -12 -44 -12h-412q-26 0 -26 22t14.5 54.5t28.5 42.5q16 12 44 12zM236 786q-13 -24 -30.5 -33.5t-50.5 -9.5q-50 0 -50 24q0 11 9 28q28 52 70.5 102.5t81.5 86.5t74.5 72t56.5 72.5t21 72.5q0 57 -33 85.5
t-90 28.5q-81 0 -181 -69q-21 -15 -36 -15q-4 0 -8.5 4t-4.5 11q0 13 10.5 33.5t16.5 28.5q100 126 249 126q103 0 168.5 -57t65.5 -158q0 -51 -28 -100.5t-72 -91.5t-89.5 -80.5t-88.5 -81t-61 -79.5z" />
<glyph glyph-name="threesuperior" unicode="&#xb3;" horiz-adv-x="654"
d="M435 1194l-67 -79q-9 -9 -9 -17q0 -11 25 -17q101 -25 153 -84t52 -167q0 -67 -36 -121t-82.5 -79.5t-87.5 -25.5q-12 0 -12 11q0 4 24 44q38 61 38 155q0 58 -21.5 100t-59 63.5t-79.5 31t-92 9.5q-19 0 -19 15q0 12 11 23l136 150q17 18 34 24.5t51 6.5q53 0 53 -17
q0 -12 -12 -26zM453 1272h-363q-25 0 -25 17q0 19 22.5 51t43.5 51q13 12 42 12h375q25 0 25 -21q0 -12 -20 -39l-37 -44q-23 -27 -63 -27zM206 577q-69 0 -122 47q-18 16 -18 36q0 14 17 33t23.5 26t17.5 13.5t21 6.5q19 0 42 -20q43 -35 83 -35q21 0 43 6t26 6
q15 0 15 -17q0 -34 -36 -68t-112 -34z" />
<glyph glyph-name="acute" unicode="&#xb4;" horiz-adv-x="483"
d="M120 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="mu" unicode="&#xb5;" horiz-adv-x="1034"
d="M305 -157v-318q0 -55 -49.5 -92t-95.5 -37q-35 0 -35 43v501q0 45 35 45q40 0 112 -56q33 -25 33 -86zM420 -31q-155 0 -231 95t-76 321v543q0 54 49.5 90.5t95.5 36.5q35 0 35 -43v-518q0 -72 2 -119t9 -94.5t20 -75t34.5 -50.5t53.5 -32.5t76 -9.5q84 0 151 39
q18 11 23 11q18 0 18 -39q0 -45 -26 -67q-49 -44 -113 -66t-121 -22zM911 1012v-896q0 -54 -49.5 -90t-95.5 -36q-35 0 -35 43v896q0 52 50 89t95 37q35 0 35 -43z" />
<glyph glyph-name="paragraph" unicode="&#xb6;" horiz-adv-x="1015"
d="M696 1289h-125q-39 0 -39 -43v-1633q0 -55 -49 -90t-96 -35q-35 0 -35 43v1306q-48 4 -98 21q-82 29 -134 98.5t-52 179.5q0 139 86.5 218.5t204.5 79.5h517q39 0 39 -43v-1778q0 -55 -49 -90t-96 -35q-35 0 -35 43v1715q0 43 -39 43z" />
<glyph glyph-name="periodcentered" unicode="&#xb7;" horiz-adv-x="380"
d="M280 893v-145q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 61.5 49t65.5 19q35 0 35 -43z" />
<glyph glyph-name="cedilla" unicode="&#xb8;" horiz-adv-x="584"
d="M350 -117q69 0 109.5 -37t40.5 -107q0 -126 -155 -214q-45 -26 -113 -53t-106 -27q-17 0 -30.5 12.5t-13.5 41.5q0 35 38 46q89 26 146.5 71t57.5 95q0 71 -80 71q-26 0 -62.5 -8t-52.5 -8q-40 0 -40 38q0 20 52 212h115q-34 -105 -34 -115q0 -26 32 -26q14 0 46 4t50 4z
" />
<glyph glyph-name="onesuperior" unicode="&#xb9;" horiz-adv-x="541"
d="M411 1398v-738q0 -29 -12 -43q-14 -16 -54 -30.5t-59 -14.5q-21 0 -21 25v738q0 26 12 40q15 17 54.5 32.5t58.5 15.5q21 0 21 -25zM21 1132l163 165q15 15 23 15q23 0 23 -59q0 -69 -27 -97l-46 -48q-18 -19 -37 -25t-52 -6q-68 0 -68 25q0 6 21 30z" />
<glyph glyph-name="ordmasculine" unicode="&#xba;" horiz-adv-x="768"
d="M379 1434q161 0 250 -103t89 -292q0 -154 -54 -254q-34 -64 -78.5 -98t-77.5 -34q-15 0 -15 15q0 4 4.5 11.5t13.5 23t30 63.5t21 212q0 160 -52 248t-173 88q-63 0 -111.5 -16.5t-104.5 -55.5q-27 -18 -37 -18q-13 0 -13 12q0 21 34 66q58 70 133.5 101t140.5 31z
M204 1039q0 -52 3 -90t13.5 -77t28.5 -63.5t48.5 -40t72.5 -15.5q33 0 63 6t34 6q16 0 16 -16q0 -34 -42.5 -75t-113.5 -41q-66 0 -116 21t-80 55t-48.5 83.5t-25.5 101t-7 113.5q0 115 32 155q19 23 60.5 42.5t66.5 19.5q18 0 18 -21q0 -4 -5.5 -27t-11.5 -60.5t-6 -76.5z
" />
<glyph glyph-name="guillemotright" unicode="&#xbb;" horiz-adv-x="1444"
d="M266 351l230 125q32 17 59 17q33 0 66.5 -21t33.5 -46q0 -21 -33 -40l-404 -232q-23 -13 -38 -13q-21 0 -21 22q0 44 30 107q25 52 77 81zM661 507l-482 312q-29 18 -29 41t30 66.5t57 43.5q16 0 54 -25l525 -349q20 -14 20 -30q0 -24 -45.5 -50.5t-78.5 -26.5
q-23 0 -51 18zM1158 420q0 -24 -26 -43l-515 -366q-26 -19 -46 -19q-29 0 -29 27q0 54 31 116q36 70 101 116l318 226q42 30 72 30q26 0 60 -31t34 -56zM1176 512l-600 472q-37 29 -37 58q0 28 33.5 68.5t65.5 40.5q20 0 43 -18l647 -525q26 -22 26 -42q0 -26 -41.5 -51.5
t-77.5 -25.5q-29 0 -59 23z" />
<glyph glyph-name="onequarter" unicode="&#xbc;" horiz-adv-x="1675"
d="M1115 390l211 308q11 17 20 17q6 0 9 -4.5t4.5 -19.5t1.5 -47q0 -79 -20 -110l-106 -161q-13 -20 -33.5 -25.5t-57.5 -5.5q-41 0 -41 20q0 10 12 28zM1570 175h-146q-28 0 -28 30v550q0 26 12 40q15 18 45.5 33t48.5 15q20 0 20 -25v-476q0 -35 34 -35h81q28 0 28 -17
q0 -18 -16 -45q-24 -41 -40 -55.5t-39 -14.5zM1109 307h219q33 0 33 -64q0 -68 -33 -68h-285q-40 0 -40 30q0 17 35 68q23 34 71 34zM1522 108v-29q0 -29 -12 -43q-15 -17 -45.5 -31t-47.5 -14q-21 0 -21 25v92q0 32 63 32q32 0 47.5 -6.5t15.5 -25.5zM411 1398v-738
q0 -29 -12 -43q-14 -16 -54 -30.5t-59 -14.5q-21 0 -21 25v738q0 26 12 40q15 17 54.5 32.5t58.5 15.5q21 0 21 -25zM21 1132l163 165q15 15 23 15q23 0 23 -59q0 -69 -27 -97l-46 -48q-18 -19 -37 -25t-52 -6q-68 0 -68 25q0 6 21 30zM1240 1360q26 35 73.5 54.5t98.5 19.5
q11 0 18 -6t7 -15q0 -5 -3 -12.5t-12 -20.5l-1010 -1337q-28 -35 -73 -54.5t-99 -19.5q-8 0 -16.5 5t-8.5 18q0 9 8.5 22.5t20.5 28.5z" />
<glyph glyph-name="onehalf" unicode="&#xbd;" horiz-adv-x="1715"
d="M411 1398v-738q0 -29 -12 -43q-14 -16 -54 -30.5t-59 -14.5q-21 0 -21 25v738q0 26 12 40q15 17 54.5 32.5t58.5 15.5q21 0 21 -25zM21 1132l163 165q15 15 23 15q23 0 23 -59q0 -69 -27 -97l-46 -48q-18 -19 -37 -25t-52 -6q-68 0 -68 25q0 6 21 30zM1240 1360
q26 35 73.5 54.5t98.5 19.5q11 0 18 -6t7 -15q0 -5 -3 -12.5t-12 -20.5l-1010 -1337q-28 -35 -73 -54.5t-99 -19.5q-8 0 -16.5 5t-8.5 18q0 9 8.5 22.5t20.5 28.5zM1211 132h412q26 0 26 -18q0 -11 -13.5 -49t-29.5 -52q-13 -12 -44 -12h-412q-26 0 -26 22t14.5 54.5
t28.5 42.5q16 12 44 12zM1306 210q-13 -24 -30.5 -33.5t-50.5 -9.5q-50 0 -50 24q0 11 9 28q28 52 70.5 102.5t81.5 86.5t74.5 72t56.5 72.5t21 72.5q0 57 -33 85.5t-90 28.5q-81 0 -181 -69q-21 -15 -36 -15q-4 0 -8.5 4t-4.5 11q0 13 10.5 33.5t16.5 28.5q100 126 249 126
q103 0 168.5 -57t65.5 -158q0 -51 -28 -100.5t-72 -91.5t-89.5 -80.5t-88.5 -81t-61 -79.5z" />
<glyph glyph-name="threequarters" unicode="&#xbe;" horiz-adv-x="1692"
d="M1132 390l211 308q11 17 20 17q6 0 9 -4.5t4.5 -19.5t1.5 -47q0 -79 -20 -110l-106 -161q-13 -20 -33.5 -25.5t-57.5 -5.5q-41 0 -41 20q0 10 12 28zM1587 175h-146q-28 0 -28 30v550q0 26 12 40q15 18 45.5 33t48.5 15q20 0 20 -25v-476q0 -35 34 -35h81q28 0 28 -17
q0 -18 -16 -45q-24 -41 -40 -55.5t-39 -14.5zM1126 307h219q33 0 33 -64q0 -68 -33 -68h-285q-40 0 -40 30q0 17 35 68q23 34 71 34zM1539 108v-29q0 -29 -12 -43q-15 -17 -45.5 -31t-47.5 -14q-21 0 -21 25v92q0 32 63 32q32 0 47.5 -6.5t15.5 -25.5zM1263 1360
q26 35 73.5 54.5t98.5 19.5q11 0 18 -6t7 -15q0 -5 -3 -12.5t-12 -20.5l-1010 -1337q-28 -35 -73 -54.5t-99 -19.5q-8 0 -16.5 5t-8.5 18q0 9 8.5 22.5t20.5 28.5zM405 1194l-67 -79q-9 -9 -9 -17q0 -11 25 -17q101 -25 153 -84t52 -167q0 -67 -36 -121t-82.5 -79.5
t-87.5 -25.5q-12 0 -12 11q0 4 24 44q38 61 38 155q0 58 -21.5 100t-59 63.5t-79.5 31t-92 9.5q-19 0 -19 15q0 12 11 23l136 150q17 18 34 24.5t51 6.5q53 0 53 -17q0 -12 -12 -26zM423 1272h-363q-25 0 -25 17q0 19 22.5 51t43.5 51q13 12 42 12h375q25 0 25 -21
q0 -12 -20 -39l-37 -44q-23 -27 -63 -27zM176 577q-69 0 -122 47q-18 16 -18 36q0 14 17 33t23.5 26t17.5 13.5t21 6.5q19 0 42 -20q43 -35 83 -35q21 0 43 6t26 6q15 0 15 -17q0 -34 -36 -68t-112 -34z" />
<glyph glyph-name="questiondown" unicode="&#xbf;" horiz-adv-x="882"
d="M504 605q0 -71 -20 -135.5t-50 -109t-64.5 -91.5t-64.5 -86t-50 -89.5t-20 -103.5q0 -110 66.5 -165.5t173.5 -55.5q79 0 153.5 43t127.5 127q32 55 51 55q20 0 20 -30q0 -28 -10 -58q-47 -141 -155.5 -218t-241.5 -77q-174 0 -279.5 86t-105.5 252q0 70 27.5 129
t67 102.5t79 86.5t67 102t27.5 129q0 49 21 74q25 30 70.5 53t74.5 23q35 0 35 -43zM305 771v135q0 49 21 73q25 30 70.5 53t74.5 23q35 0 35 -43v-135q0 -42 -21 -68q-27 -30 -71.5 -55.5t-73.5 -25.5q-35 0 -35 43z" />
<glyph glyph-name="Agrave" unicode="&#xc0;" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33zM642 1794q45 -38 64.5 -85.5t19.5 -88.5q0 -14 -5 -23.5t-18 -9.5q-5 0 -13 2.5t-20 10.5l-279 177q-23 15 -37 33t-21.5 38.5t-10 43.5t-2.5 49q0 37 11.5 57.5t25.5 20.5q6 0 13.5 -2.5t19.5 -12.5z" />
<glyph glyph-name="Aacute" unicode="&#xc1;" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33zM656 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5t11.5 -57.5q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177q-12 -8 -20 -10.5t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="Acircumflex" unicode="&#xc2;" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33zM849 1753q21 -20 29 -53t8 -59q0 -35 -27 -35q-11 0 -30.5 9t-53.5 32l-215 152q-10 7 -18.5 11t-18.5 4q-16 0 -38 -14l-227 -147q-31 -19 -47 -27.5t-26 -8.5q-24 0 -24 30q0 23 6.5 49t25.5 43l293 254q17 15 28 19t22 4
q10 0 20 -5t24 -18z" />
<glyph glyph-name="Atilde" unicode="&#xc3;" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33zM661 1717q-36 0 -70.5 13t-69 28.5t-68.5 28.5t-69 13q-29 0 -56.5 -7.5t-51 -18.5t-56.5 -32t-38 -21q-19 0 -19 28q0 32 19.5 69.5t51.5 70t74.5 54.5t87.5 22q48 0 85 -12.5t68.5 -28t59.5 -28t60 -12.5q33 0 60 7t48.5 17.5
t38.5 22.5t30 23q11 9 20 9q18 0 18 -25q0 -36 -17.5 -75t-47.5 -71.5t-71 -53.5t-87 -21z" />
<glyph glyph-name="Adieresis" unicode="&#xc4;" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33zM434 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144zM796 1830q0 -20 -3.5 -38t-17.5 -35
q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144z" />
<glyph glyph-name="Aring" unicode="&#xc5;" horiz-adv-x="1047"
d="M285 308l-56 -169q-21 -64 -73 -106.5t-117 -42.5q-16 0 -26.5 8.5t-10.5 24.5q0 6 4 18l96 275q7 21 15 32.5t22.5 16.5t26 6t39.5 1q23 0 34 -0.5t25.5 -3.5t20.5 -10.5t6 -20.5q0 -9 -6 -29zM614 1391l426 -1239q7 -32 7 -36q0 -43 -50 -84.5t-88 -41.5q-33 0 -51 51
l-416 1214q-10 45 -10 48q0 44 55.5 87.5t85.5 43.5q17 0 24.5 -8.5t16.5 -34.5zM596 432h-406q-38 0 -38 33q0 9 4 20l205 613q14 39 32 39q16 0 28 -19.5t26 -62.5q26 -81 26 -121q0 -28 -10 -59l-78 -238q-2 -5 -2 -14q0 -27 31 -27h104q51 0 69 -5t29 -28
q10 -20 16.5 -51.5t6.5 -46.5q0 -33 -43 -33zM524 1959q-38 0 -69 -29t-31 -93q0 -54 29.5 -87t72.5 -33q40 0 68.5 31t28.5 99q0 52 -27 82t-72 30zM522 2060q92 0 153 -51q34 -27 54.5 -70t20.5 -90q0 -106 -66.5 -169t-156.5 -63q-95 0 -162.5 56.5t-67.5 163.5
q0 95 69 159t156 64z" />
<glyph glyph-name="AE" unicode="&#xc6;" horiz-adv-x="1670"
d="M383 406l-133 -267q-15 -30 -39 -57.5t-53 -47.5t-61 -32t-64 -12q-31 0 -31 28q0 16 13 41l185 363q9 17 17.5 28t20.5 17t27.5 8.5t37.5 2.5q44 0 67 -5.5t23 -29.5q0 -18 -10 -37zM648 538h-360q-37 0 -37 30q0 22 15 50l253 519q15 34 40 34q35 0 51 -81
q11 -57 11 -105q0 -32 -17 -66l-89 -176q-4 -10 -4 -15q0 -26 33 -26h73q27 0 40.5 -6t19.5 -27q4 -13 9 -49.5t5 -48.5q0 -33 -43 -33zM837 1403h539q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-574q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5
t114.5 48.5zM773 430q0 29 24 38.5t72 9.5q55 0 79 -11.5t30 -47.5l38 -214q7 -41 46 -41h493q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5q-23 -20 -74 -20h-571q-47 0 -56 59l-53 336q-4 24 -4 35zM664 1130q0 29 26.5 39t75.5 10q53 0 72 -11.5t26 -48.5l63 -376
q7 -41 41 -41h417q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-471q-35 0 -47.5 14t-18.5 50l-80 483q-1 5 -2.5 14t-2.5 16.5t-1 14.5z" />
<glyph glyph-name="Ccedilla" unicode="&#xc7;" horiz-adv-x="1106"
d="M612 -117q67 0 108.5 -36t41.5 -108q0 -36 -12 -67t-33 -57.5t-49.5 -49t-60.5 -40.5q-18 -10 -46 -24t-59.5 -26.5t-62 -21t-51.5 -8.5q-14 0 -29 11t-15 43q0 12 4 20.5t10 13.5t12.5 7.5t11.5 4.5q43 12 80 30t64.5 39.5t43.5 46t16 50.5q0 22 -7.5 36t-19 22
t-26 10.5t-27.5 2.5q-36 0 -62.5 -8t-52.5 -8q-40 0 -40 38q0 8 3.5 25t5.5 25l26 95q2 9 3.5 16t1.5 13q0 22 -26 34q-75 33 -125 89.5t-81 134t-44 175t-13 212.5q0 60 4 112.5t10.5 95.5t15.5 75.5t18 50.5q13 25 34 48t45 40t49.5 27t47.5 10q4 0 9 -1t9.5 -4t8 -9
t3.5 -17q0 -18 -7 -49t-15.5 -77.5t-15.5 -109t-7 -143.5q0 -67 6 -133t21 -125.5t41.5 -110t68 -87.5t99.5 -58t137 -21q78 0 133.5 16t93.5 35.5t61 35.5t38 16q24 0 24 -25q0 -11 -9 -33.5t-29 -49.5t-52.5 -56t-80 -53t-111 -39t-144.5 -15q-20 0 -36.5 1.5t-34.5 1.5
q-11 0 -20.5 -4.5t-17.5 -22.5q-6 -13 -10.5 -26t-4.5 -18q0 -12 7 -19t25 -7q23 0 46.5 4t49.5 4zM1014 1315q0 -12 -7 -25.5t-18 -26t-24 -23.5t-25 -19q-14 -11 -31 -18t-37 -7q-23 0 -43.5 9t-46.5 20q-35 15 -81.5 30t-114.5 15q-105 0 -190 -42t-160 -108
q-19 -15 -37 -30t-29 -15q-9 0 -16 4.5t-7 20.5q0 9 6 22.5t14 27.5t17.5 27.5t16.5 22.5q43 53 93 96t111.5 74t135.5 47.5t166 16.5q33 0 67 -4.5t65.5 -12t60 -17t50.5 -20.5l19 -9.5t21 -13t17 -18t7 -24.5z" />
<glyph glyph-name="Egrave" unicode="&#xc8;" horiz-adv-x="980"
d="M306 1403h539q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-574q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5zM134 43v493q0 36 24.5 47.5t76.5 11.5q56 0 78 -11.5t22 -47.5v-331q0 -41 41 -41h489q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5
q-23 -20 -74 -20h-598q-35 0 -35 43zM134 696v423q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-259q0 -41 41 -41h407q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-510q-41 0 -41 41zM608 1794q45 -38 64.5 -85.5t19.5 -88.5q0 -14 -5 -23.5t-18 -9.5
q-5 0 -13 2.5t-20 10.5l-279 177q-23 15 -37 33t-21.5 38.5t-10 43.5t-2.5 49q0 37 11.5 57.5t25.5 20.5q6 0 13.5 -2.5t19.5 -12.5z" />
<glyph glyph-name="Eacute" unicode="&#xc9;" horiz-adv-x="980"
d="M306 1403h539q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-574q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5zM134 43v493q0 36 24.5 47.5t76.5 11.5q56 0 78 -11.5t22 -47.5v-331q0 -41 41 -41h489q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5
q-23 -20 -74 -20h-598q-35 0 -35 43zM134 696v423q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-259q0 -41 41 -41h407q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-510q-41 0 -41 41zM622 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5t11.5 -57.5
q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177q-12 -8 -20 -10.5t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="Ecircumflex" unicode="&#xca;" horiz-adv-x="986"
d="M312 1403h539q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-574q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5zM140 43v493q0 36 24.5 47.5t76.5 11.5q56 0 78 -11.5t22 -47.5v-331q0 -41 41 -41h489q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5
q-23 -20 -74 -20h-598q-35 0 -35 43zM140 696v423q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-259q0 -41 41 -41h407q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-510q-41 0 -41 41zM821 1753q21 -20 29 -53t8 -59q0 -35 -27 -35q-11 0 -30.5 9t-53.5 32
l-215 152q-10 7 -18.5 11t-18.5 4q-16 0 -38 -14l-227 -147q-31 -19 -47 -27.5t-26 -8.5q-24 0 -24 30q0 23 6.5 49t25.5 43l293 254q17 15 28 19t22 4q10 0 20 -5t24 -18z" />
<glyph glyph-name="Edieresis" unicode="&#xcb;" horiz-adv-x="980"
d="M306 1403h539q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-574q-15 0 -22 1.5t-12.5 8.5t-5.5 20q0 37 58.5 85.5t114.5 48.5zM134 43v493q0 36 24.5 47.5t76.5 11.5q56 0 78 -11.5t22 -47.5v-331q0 -41 41 -41h489q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5
q-23 -20 -74 -20h-598q-35 0 -35 43zM134 696v423q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-259q0 -41 41 -41h407q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-510q-41 0 -41 41zM400 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5
t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144zM762 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17
t29.5 6.5q35 0 35 -43v-144z" />
<glyph glyph-name="Igrave" unicode="&#xcc;" horiz-adv-x="672"
d="M436 1380v-1241q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v1241q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM455 1794q45 -38 64.5 -85.5t19.5 -88.5q0 -14 -5 -23.5t-18 -9.5q-5 0 -13 2.5t-20 10.5l-279 177q-23 15 -37 33t-21.5 38.5t-10 43.5
t-2.5 49q0 37 11.5 57.5t25.5 20.5q6 0 13.5 -2.5t19.5 -12.5z" />
<glyph glyph-name="Iacute" unicode="&#xcd;" horiz-adv-x="672"
d="M436 1380v-1241q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v1241q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM469 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5t11.5 -57.5q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177
q-12 -8 -20 -10.5t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="Icircumflex" unicode="&#xce;" horiz-adv-x="991"
d="M596 1380v-1241q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v1241q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM821 1753q21 -20 29 -53t8 -59q0 -35 -27 -35q-11 0 -30.5 9t-53.5 32l-215 152q-10 7 -18.5 11t-18.5 4q-16 0 -38 -14l-227 -147
q-31 -19 -47 -27.5t-26 -8.5q-24 0 -24 30q0 23 6.5 49t25.5 43l293 254q17 15 28 19t22 4q10 0 20 -5t24 -18z" />
<glyph glyph-name="Idieresis" unicode="&#xcf;" horiz-adv-x="812"
d="M506 1380v-1241q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v1241q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM317 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29
t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144zM679 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144z" />
<glyph glyph-name="Eth" unicode="&#xd0;" horiz-adv-x="1475"
d="M578 1240h-162q-39 0 -39 24q0 21 16 45t41.5 44t57 34t53.5 15.5t42 2t46 0.5q159 0 296 -39.5t238 -125.5t158.5 -221t57.5 -327q0 -92 -18.5 -178.5t-52.5 -163.5t-83 -141.5t-109.5 -110.5t-131.5 -72t-150 -26q-35 0 -35 23q0 18 22 28q85 39 150 91t109 124.5
t67 169.5t23 226q0 128 -30.5 233t-100.5 181t-184 118.5t-281 45.5zM377 43v454q0 36 25 49t75 13q55 0 78 -12.5t23 -49.5v-292q0 -41 41 -41h166q43 0 43 -25q0 -16 -25 -39t-65 -45.5t-100.5 -38.5t-121.5 -16h-104q-35 0 -35 43zM377 804v316q0 36 24.5 48t75.5 12
q56 0 78.5 -11.5t22.5 -48.5v-316q0 -41 41 -41h188q43 0 43 -31q0 -11 -19.5 -38.5t-48.5 -53.5q-23 -21 -74 -21h-532q-43 0 -43 31q0 12 19 39.5t48 53.5q23 20 74 20h62q41 0 41 41z" />
<glyph glyph-name="Ntilde" unicode="&#xd1;" horiz-adv-x="1262"
d="M954 43v1251q0 59 50.5 94t89.5 35q34 0 34 -43v-1241q0 -50 -20 -73q-26 -30 -63.5 -53t-59.5 -23q-9 0 -14.5 2t-11 14.5t-5.5 36.5zM822 199l-677 1079q-12 19 -12 35q0 22 23 47q60 63 112 63q25 0 45 -32l542 -857q27 -42 33 -77.5t6 -114.5q0 -176 -37 -176
q-13 0 -31 28q-3 3 -4 5zM293 920q16 -37 16 -91v-690q0 -50 -20 -73q-25 -30 -63.5 -53t-58.5 -23q-32 0 -32 43v1055q0 24 19 24q13 0 28.5 -18t50.5 -70q40 -60 60 -104zM768 1717q-36 0 -70.5 13t-69 28.5t-68.5 28.5t-69 13q-29 0 -56.5 -7.5t-51 -18.5t-56.5 -32
t-38 -21q-19 0 -19 28q0 32 19.5 69.5t51.5 70t74.5 54.5t87.5 22q48 0 85 -12.5t68.5 -28t59.5 -28t60 -12.5q33 0 60 7t48.5 17.5t38.5 22.5t30 23q11 9 20 9q18 0 18 -25q0 -36 -17.5 -75t-47.5 -71.5t-71 -53.5t-87 -21z" />
<glyph glyph-name="Ograve" unicode="&#xd2;" horiz-adv-x="1309"
d="M1206 745q0 -135 -14 -241t-40.5 -188.5t-65 -143t-88.5 -103.5q-60 -53 -103 -53q-21 0 -21 25q0 8 15 27.5t29 46.5q80 151 80 458v128t-9.5 150.5t-32.5 152.5t-70 134t-122.5 95.5t-188.5 36.5q-88 0 -172 -33t-167 -98l-32 -25q-9 -8 -20 -14t-16 -6q-21 0 -21 20
q0 31 43 86q90 115 212 174.5t257 59.5q136 0 238.5 -41t171 -125.5t103 -214.5t34.5 -308zM350 1059q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -72 4.5 -131t15.5 -124t34 -113.5t57 -89t87 -62t121 -21.5q60 0 106 12.5t71 24.5t34 12q22 0 22 -24q0 -25 -19 -56t-53 -61.5
t-92 -51t-125 -20.5q-135 0 -228 44.5t-145.5 134.5t-75 208t-22.5 281q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37zM773 1794q45 -38 64.5 -85.5t19.5 -88.5q0 -14 -5 -23.5t-18 -9.5q-5 0 -13 2.5t-20 10.5l-279 177q-23 15 -37 33t-21.5 38.5t-10 43.5t-2.5 49
q0 37 11.5 57.5t25.5 20.5q6 0 13.5 -2.5t19.5 -12.5z" />
<glyph glyph-name="Oacute" unicode="&#xd3;" horiz-adv-x="1309"
d="M1206 745q0 -135 -14 -241t-40.5 -188.5t-65 -143t-88.5 -103.5q-60 -53 -103 -53q-21 0 -21 25q0 8 15 27.5t29 46.5q80 151 80 458v128t-9.5 150.5t-32.5 152.5t-70 134t-122.5 95.5t-188.5 36.5q-88 0 -172 -33t-167 -98l-32 -25q-9 -8 -20 -14t-16 -6q-21 0 -21 20
q0 31 43 86q90 115 212 174.5t257 59.5q136 0 238.5 -41t171 -125.5t103 -214.5t34.5 -308zM350 1059q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -72 4.5 -131t15.5 -124t34 -113.5t57 -89t87 -62t121 -21.5q60 0 106 12.5t71 24.5t34 12q22 0 22 -24q0 -25 -19 -56t-53 -61.5
t-92 -51t-125 -20.5q-135 0 -228 44.5t-145.5 134.5t-75 208t-22.5 281q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37zM787 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5t11.5 -57.5q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177q-12 -8 -20 -10.5
t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="Ocircumflex" unicode="&#xd4;" horiz-adv-x="1309"
d="M1206 745q0 -135 -14 -241t-40.5 -188.5t-65 -143t-88.5 -103.5q-60 -53 -103 -53q-21 0 -21 25q0 8 15 27.5t29 46.5q80 151 80 458v128t-9.5 150.5t-32.5 152.5t-70 134t-122.5 95.5t-188.5 36.5q-88 0 -172 -33t-167 -98l-32 -25q-9 -8 -20 -14t-16 -6q-21 0 -21 20
q0 31 43 86q90 115 212 174.5t257 59.5q136 0 238.5 -41t171 -125.5t103 -214.5t34.5 -308zM350 1059q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -72 4.5 -131t15.5 -124t34 -113.5t57 -89t87 -62t121 -21.5q60 0 106 12.5t71 24.5t34 12q22 0 22 -24q0 -25 -19 -56t-53 -61.5
t-92 -51t-125 -20.5q-135 0 -228 44.5t-145.5 134.5t-75 208t-22.5 281q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37zM980 1753q21 -20 29 -53t8 -59q0 -35 -27 -35q-11 0 -30.5 9t-53.5 32l-215 152q-10 7 -18.5 11t-18.5 4q-16 0 -38 -14l-227 -147
q-31 -19 -47 -27.5t-26 -8.5q-24 0 -24 30q0 23 6.5 49t25.5 43l293 254q17 15 28 19t22 4q10 0 20 -5t24 -18z" />
<glyph glyph-name="Otilde" unicode="&#xd5;" horiz-adv-x="1309"
d="M1206 745q0 -135 -14 -241t-40.5 -188.5t-65 -143t-88.5 -103.5q-60 -53 -103 -53q-21 0 -21 25q0 8 15 27.5t29 46.5q80 151 80 458v128t-9.5 150.5t-32.5 152.5t-70 134t-122.5 95.5t-188.5 36.5q-88 0 -172 -33t-167 -98l-32 -25q-9 -8 -20 -14t-16 -6q-21 0 -21 20
q0 31 43 86q90 115 212 174.5t257 59.5q136 0 238.5 -41t171 -125.5t103 -214.5t34.5 -308zM350 1059q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -72 4.5 -131t15.5 -124t34 -113.5t57 -89t87 -62t121 -21.5q60 0 106 12.5t71 24.5t34 12q22 0 22 -24q0 -25 -19 -56t-53 -61.5
t-92 -51t-125 -20.5q-135 0 -228 44.5t-145.5 134.5t-75 208t-22.5 281q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37zM792 1717q-36 0 -70.5 13t-69 28.5t-68.5 28.5t-69 13q-29 0 -56.5 -7.5t-51 -18.5t-56.5 -32t-38 -21q-19 0 -19 28q0 32 19.5 69.5t51.5 70
t74.5 54.5t87.5 22q48 0 85 -12.5t68.5 -28t59.5 -28t60 -12.5q33 0 60 7t48.5 17.5t38.5 22.5t30 23q11 9 20 9q18 0 18 -25q0 -36 -17.5 -75t-47.5 -71.5t-71 -53.5t-87 -21z" />
<glyph glyph-name="Odieresis" unicode="&#xd6;" horiz-adv-x="1309"
d="M1206 745q0 -135 -14 -241t-40.5 -188.5t-65 -143t-88.5 -103.5q-60 -53 -103 -53q-21 0 -21 25q0 8 15 27.5t29 46.5q80 151 80 458v128t-9.5 150.5t-32.5 152.5t-70 134t-122.5 95.5t-188.5 36.5q-88 0 -172 -33t-167 -98l-32 -25q-9 -8 -20 -14t-16 -6q-21 0 -21 20
q0 31 43 86q90 115 212 174.5t257 59.5q136 0 238.5 -41t171 -125.5t103 -214.5t34.5 -308zM350 1059q0 -9 -10 -62.5t-20 -141.5t-10 -181q0 -72 4.5 -131t15.5 -124t34 -113.5t57 -89t87 -62t121 -21.5q60 0 106 12.5t71 24.5t34 12q22 0 22 -24q0 -25 -19 -56t-53 -61.5
t-92 -51t-125 -20.5q-135 0 -228 44.5t-145.5 134.5t-75 208t-22.5 281q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37zM565 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5
t34.5 17t29.5 6.5q35 0 35 -43v-144zM927 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144z" />
<glyph glyph-name="multiply" unicode="&#xd7;"
d="M836 607l415 -446q18 -22 18 -30q0 -17 -15.5 -25.5t-65.5 -8.5q-38 0 -58.5 8.5t-42.5 31.5l-439 470q-10 12 -10 23q0 14 12 27l436 467q22 23 43 31t62 8q45 0 61.5 -7.5t16.5 -22.5q0 -12 -19 -33l-412 -443q-14 -16 -14 -26t12 -24zM640 458l-292 -322
q-23 -23 -43.5 -31t-60.5 -8q-79 0 -79 33q0 9 20 31l361 392q19 20 34 20q19 0 48 -32t29 -50q0 -13 -17 -33zM545 709l-359 391q-19 21 -19 32q0 32 81 32q38 0 58.5 -8.5t42.5 -30.5l291 -322q20 -23 20 -35q0 -20 -31.5 -48t-50.5 -28q-17 0 -33 17z" />
<glyph glyph-name="Oslash" unicode="&#xd8;" horiz-adv-x="1309"
d="M1087 1480q43 9 63 9q27 0 27 -25q0 -15 -15 -41l-73 -129q-9 -16 -9 -27t10 -27q116 -174 116 -495q0 -363 -100 -538q-47 -84 -108 -137.5t-103 -53.5q-21 0 -21 23q0 7 5.5 16t17.5 26t21 34q43 81 66.5 207.5t23.5 250.5q0 276 -45 419q-6 21 -21 21q-14 0 -25 -20
l-441 -775q-10 -17 -10 -30q0 -20 30 -34q58 -25 133 -25q60 0 106 13.5t71 26.5t34 13q22 0 22 -24q0 -25 -19 -56t-53 -61.5t-92 -51t-125 -20.5q-96 0 -171 23q-17 5 -26 5q-24 0 -50 -44q-18 -32 -69 -53t-91 -20q-24 0 -24 20q0 16 22 56l810 1433q20 38 46 60t67 31z
M860 1309q-22 -41 -37 -56.5t-35 -15.5q-16 0 -63 15q-67 21 -150 21q-33 0 -72.5 -6t-117.5 -38.5t-149 -89.5q-5 -4 -16 -12.5t-16 -12.5t-13 -9.5t-13.5 -8t-9.5 -2.5q-21 0 -21 20q0 30 43 86q89 115 212 174.5t257 59.5q219 0 219 -67q0 -23 -18 -58zM265 258
q-38 -50 -69 -50q-46 0 -70 128.5t-24 300.5q0 247 50 342q28 52 80 84.5t87 32.5q31 0 31 -37q0 -9 -12.5 -62.5t-25 -141.5t-12.5 -181q0 -140 15 -233q4 -36 4 -40q0 -71 -54 -143z" />
<glyph glyph-name="Ugrave" unicode="&#xd9;" horiz-adv-x="1282"
d="M1149 1380v-614q0 -384 -78 -561q-39 -88 -89 -138.5t-93 -50.5q-21 0 -21 21q0 8 6 17.5t17.5 26.5t19.5 34q64 133 64 442v737q0 60 50.5 94.5t88.5 34.5q35 0 35 -43zM334 1380v-708q0 -65 1.5 -110.5t8 -106.5t17.5 -102.5t32.5 -86.5t51 -71.5t74.5 -44t102 -17.5
q60 0 106 12.5t70.5 24.5t33.5 12q23 0 23 -24q0 -25 -19 -56t-53 -61.5t-92 -51t-125 -20.5q-104 0 -180.5 32.5t-124.5 88.5t-76.5 145t-39.5 188.5t-11 231.5v619q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM760 1794q45 -38 64.5 -85.5t19.5 -88.5q0 -14 -5 -23.5
t-18 -9.5q-5 0 -13 2.5t-20 10.5l-279 177q-23 15 -37 33t-21.5 38.5t-10 43.5t-2.5 49q0 37 11.5 57.5t25.5 20.5q6 0 13.5 -2.5t19.5 -12.5z" />
<glyph glyph-name="Uacute" unicode="&#xda;" horiz-adv-x="1282"
d="M1149 1380v-614q0 -384 -78 -561q-39 -88 -89 -138.5t-93 -50.5q-21 0 -21 21q0 8 6 17.5t17.5 26.5t19.5 34q64 133 64 442v737q0 60 50.5 94.5t88.5 34.5q35 0 35 -43zM334 1380v-708q0 -65 1.5 -110.5t8 -106.5t17.5 -102.5t32.5 -86.5t51 -71.5t74.5 -44t102 -17.5
q60 0 106 12.5t70.5 24.5t33.5 12q23 0 23 -24q0 -25 -19 -56t-53 -61.5t-92 -51t-125 -20.5q-104 0 -180.5 32.5t-124.5 88.5t-76.5 145t-39.5 188.5t-11 231.5v619q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM774 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5
t11.5 -57.5q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177q-12 -8 -20 -10.5t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="Ucircumflex" unicode="&#xdb;" horiz-adv-x="1282"
d="M1149 1380v-614q0 -384 -78 -561q-39 -88 -89 -138.5t-93 -50.5q-21 0 -21 21q0 8 6 17.5t17.5 26.5t19.5 34q64 133 64 442v737q0 60 50.5 94.5t88.5 34.5q35 0 35 -43zM334 1380v-708q0 -65 1.5 -110.5t8 -106.5t17.5 -102.5t32.5 -86.5t51 -71.5t74.5 -44t102 -17.5
q60 0 106 12.5t70.5 24.5t33.5 12q23 0 23 -24q0 -25 -19 -56t-53 -61.5t-92 -51t-125 -20.5q-104 0 -180.5 32.5t-124.5 88.5t-76.5 145t-39.5 188.5t-11 231.5v619q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM966 1753q21 -20 29 -53t8 -59q0 -35 -27 -35
q-11 0 -30.5 9t-53.5 32l-215 152q-10 7 -18.5 11t-18.5 4q-16 0 -38 -14l-227 -147q-31 -19 -47 -27.5t-26 -8.5q-24 0 -24 30q0 23 6.5 49t25.5 43l293 254q17 15 28 19t22 4q10 0 20 -5t24 -18z" />
<glyph glyph-name="Udieresis" unicode="&#xdc;" horiz-adv-x="1282"
d="M1149 1380v-614q0 -384 -78 -561q-39 -88 -89 -138.5t-93 -50.5q-21 0 -21 21q0 8 6 17.5t17.5 26.5t19.5 34q64 133 64 442v737q0 60 50.5 94.5t88.5 34.5q35 0 35 -43zM334 1380v-708q0 -65 1.5 -110.5t8 -106.5t17.5 -102.5t32.5 -86.5t51 -71.5t74.5 -44t102 -17.5
q60 0 106 12.5t70.5 24.5t33.5 12q23 0 23 -24q0 -25 -19 -56t-53 -61.5t-92 -51t-125 -20.5q-104 0 -180.5 32.5t-124.5 88.5t-76.5 145t-39.5 188.5t-11 231.5v619q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM552 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28
t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144zM914 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29
t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144z" />
<glyph glyph-name="Yacute" unicode="&#xdd;" horiz-adv-x="1077"
d="M369 605l-334 665q-14 22 -14 42q0 22 16.5 42t40 35.5t48.5 24.5t43 9q39 0 58 -41l260 -555q24 -51 24 -84q0 -23 -10 -53t-25 -57t-32.5 -46t-33.5 -19q-22 0 -41 37zM1042 1346l-346 -793q-14 -33 -20.5 -51.5t-12.5 -50.5t-6 -69l-6 -243q-2 -51 -20 -73
q-25 -30 -71 -53t-75 -23q-34 0 -34 40l6 308q2 88 39 178l309 750q23 55 43 77q31 34 86.5 57t89.5 23q33 0 33 -28q0 -15 -15 -49zM671 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5t11.5 -57.5q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177
q-12 -8 -20 -10.5t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="Thorn" unicode="&#xde;" horiz-adv-x="1061"
d="M334 1380v-193q0 -41 39 -41q108 0 166 -1q56 -1 110 -10.5t118 -38.5t111 -75t79 -127t32 -186q0 -33 -8 -72t-24.5 -85t-48 -89t-73.5 -80.5t-105 -64t-138 -35.5h-6q-27 0 -27 23q0 14 23 28q109 68 151.5 149t42.5 187q0 173 -100.5 243t-294.5 70h-209q-39 0 -39 41
v251q0 42 21 67q26 31 71 56.5t74 25.5q35 0 35 -43zM334 178v-39q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v145q0 36 25.5 49t75.5 13q55 0 77.5 -12.5t22.5 -49.5zM133 373v493q0 36 24.5 47.5t75.5 11.5q56 0 78.5 -11.5t22.5 -47.5v-379q0 -41 38 -41
h167q43 0 43 -25q0 -22 -44 -54.5t-111 -53.5q-42 -13 -208 -13q-51 0 -68.5 18t-17.5 55z" />
<glyph glyph-name="germandbls" unicode="&#xdf;" horiz-adv-x="1227"
d="M563 1536q117 0 193 -36.5t120.5 -95t62 -131t17.5 -144.5q0 -60 -6 -97t-24.5 -58t-54 -28t-93.5 -7q-53 0 -94 -9.5t-69.5 -22.5t-46 -25t-23.5 -16q-28 -19 -41 -21q-14 0 -14 18q0 15 16.5 39.5t42 50.5t57.5 49.5t64 36.5q37 15 59 26t33.5 22.5t14.5 26t3 36.5
q0 34 -10 76.5t-39 79.5t-81.5 62t-137.5 25q-145 0 -266 -96q-38 -29 -53 -29q-17 0 -17 17q0 21 20 51.5t51 61.5t66.5 57t67.5 40q96 41 182 41zM336 746v-630q0 -26 -14.5 -49t-36 -40t-47.5 -27t-48 -10q-34 0 -34 43v713q0 19 7 30t19.5 16.5t29 6.5t34.5 1
q19 0 35.5 -1.5t28.5 -7t19 -16.5t7 -29zM247 850q-52 0 -71.5 10t-19.5 43v36q0 205 45 259q24 29 59.5 50t56.5 21q33 0 33 -34q0 -6 -4.5 -62t-4.5 -119v-151q0 -33 -19.5 -43t-74.5 -10zM104 961v-58q0 -25 -11 -39t-42 -14h-47q-35 0 -35 22q0 27 43.5 74.5t69.5 47.5
q22 0 22 -33zM999 227q0 101 -52.5 148t-154.5 62q-77 11 -134.5 32.5t-90.5 47.5t-53.5 61t-27 66.5t-6.5 70.5q0 47 48 83.5t81 36.5q23 0 31 -31q14 -58 23.5 -84t33.5 -52.5t62 -39t107 -24.5q279 -48 279 -307q0 -61 -21.5 -117t-52.5 -91.5t-63.5 -57t-55.5 -21.5
q-16 0 -16 15q0 6 16 30q47 76 47 172zM669 164q23 -20 33.5 -28t32.5 -15.5t51 -7.5q44 0 77 13t35 13q23 0 23 -24q0 -17 -11.5 -39.5t-34.5 -47.5t-69 -42t-106 -17q-82 0 -145 37t-63 80q0 34 42.5 67t83.5 33q27 0 51 -22z" />
<glyph glyph-name="agrave" unicode="&#xe0;" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31zM437 1647l186 -251q40 -54 40 -102q0 -81 -36 -81q-16 0 -37 21l-219 229q-33 34 -33 77q0 51 19.5 92t43.5 41q17 0 36 -26z" />
<glyph glyph-name="aacute" unicode="&#xe1;" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31zM379 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="acircumflex" unicode="&#xe2;" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31zM695 1284l-158 150q-25 23 -36 23q-14 0 -40 -23l-163 -147q-50 -43 -70 -43q-28 0 -28 54q0 47 22 69l240 251q27 26 49 26q19 0 45 -26l218 -241q27 -28 27 -74
q0 -22 -8 -43t-26 -21q-23 0 -72 45z" />
<glyph glyph-name="atilde" unicode="&#xe3;" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31zM640 1293q-48 0 -139.5 51.5t-137.5 51.5q-35 0 -64.5 -14t-62.5 -42t-41 -33.5t-14 -5.5q-19 0 -19 30q0 75 65.5 146.5t151.5 71.5q55 0 104.5 -25.5t90 -50.5
t74.5 -25q31 0 57 10t39 21t31 30t25 25q11 9 20 9q18 0 18 -25q0 -80 -55.5 -152.5t-142.5 -72.5z" />
<glyph glyph-name="adieresis" unicode="&#xe4;" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31zM413 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM753 1533v-145q0 -40 -18 -62
q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="aring" unicode="&#xe5;" horiz-adv-x="1001"
d="M520 1055q84 0 151 -22t113 -70.5t70.5 -125t24.5 -184.5v-542q0 -25 -15.5 -47t-38 -38.5t-48 -26t-44.5 -9.5q-35 0 -35 43v583q0 295 -234 295q-136 0 -247 -75q-44 -29 -57 -29q-15 0 -15 16q0 28 31 66q136 166 344 166zM622 56q-42 -38 -104 -62.5t-119 -24.5
q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113q46 36 80 36q11 0 19 -8t8 -24q0 -114 39 -165.5t139 -51.5q30 0 73 10.5t73 28.5q18 11 27 11q14 0 14 -37q0 -46 -26 -70zM614 596q19 -10 26 -26.5t7 -61.5q0 -40 -6.5 -57.5t-23.5 -17.5q-11 0 -31 9q-94 41 -170 41
q-123 0 -234 -89q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q53 89 139.5 135.5t192.5 46.5q81 0 143 -31zM501 1549q-38 0 -69 -29t-31 -93q0 -54 29.5 -87t72.5 -33q40 0 68.5 31t28.5 99q0 52 -27 82t-72 30zM499 1650q92 0 153 -51q34 -27 54.5 -70t20.5 -90
q0 -106 -66.5 -169t-156.5 -63q-95 0 -162.5 56.5t-67.5 163.5q0 95 69 159t156 64z" />
<glyph glyph-name="ae" unicode="&#xe6;" horiz-adv-x="1511"
d="M888 617q0 -28 17.5 -35.5t51.5 -7.5q69 0 122 13.5t83.5 34.5t49.5 49t25.5 52.5t6.5 50.5q0 59 -41.5 98t-134.5 39q-124 0 -260 -94q-57 -41 -88 -41q-34 0 -63 39q-70 96 -193 96q-136 0 -247 -75q-43 -29 -57 -29q-15 0 -15 16q0 27 31 66q137 166 344 166
q84 0 146 -20.5t116 -71.5q21 -21 41 -21q16 0 43 19q123 94 247 94q145 0 232.5 -69.5t87.5 -205.5q0 -155 -141.5 -250t-390.5 -95q-66 0 -157 8q-45 3 -45 44q0 202 115 271q52 30 76 30t24 -30q0 -12 -13 -68.5t-13 -72.5zM1066 -31q-360 0 -360 336q0 24 2 36t10 25.5
t28 18.5t54 5q56 0 71.5 -9t16.5 -45q2 -69 22 -115t56 -68.5t75.5 -31t92.5 -8.5q57 0 106.5 14t77 31t51 31t33.5 14q23 0 23 -25q0 -21 -22 -54t-62.5 -68.5t-114 -61t-160.5 -25.5zM660 89q-45 -56 -116 -88t-145 -32q-133 0 -203.5 70.5t-70.5 173.5q0 74 51 113
q46 36 80 36q11 0 19 -8t8 -24q0 -113 37 -165t126 -52q36 0 69 10.5t50.5 21t42.5 29.5q4 3 11 8.5t10.5 8t8.5 5t10 2.5q18 0 28 -42q4 -12 4 -26q0 -15 -20 -41zM619 621q13 -7 18.5 -12.5t10 -21t4.5 -42.5q0 -82 -31 -82q-13 0 -66 18t-104 18q-76 0 -137.5 -24.5
t-131.5 -80.5q-35 -28 -47 -28q-16 0 -16 18q0 28 20 61q57 96 147 147t200 51q89 0 133 -22z" />
<glyph glyph-name="ccedilla" unicode="&#xe7;" horiz-adv-x="930"
d="M524 -117q67 0 108.5 -36t41.5 -108q0 -36 -12 -67t-33 -57.5t-49.5 -49t-60.5 -40.5q-18 -10 -46 -24t-59.5 -26.5t-62 -21t-51.5 -8.5q-14 0 -29 11t-15 43q0 12 4 20.5t10 13.5t12.5 7.5t11.5 4.5q43 12 80 30t64.5 39.5t43.5 46t16 50.5q0 22 -7.5 36t-19 22
t-26 10.5t-27.5 2.5q-36 0 -62.5 -8t-52.5 -8q-40 0 -40 38q0 8 3.5 25t5.5 25l29 109q2 6 3 12t1 11q0 16 -7 22.5t-12 9.5q-101 56 -147.5 168t-46.5 273q0 79 12.5 141.5t32.5 93.5q11 18 30 35t40 30.5t42 22t38 8.5q11 0 17.5 -5.5t6.5 -22.5q0 -11 -4.5 -33
t-10.5 -54.5t-10.5 -74t-4.5 -92.5q0 -89 15 -161.5t48.5 -124t87 -79.5t129.5 -28q64 0 109.5 13.5t77.5 30t52.5 30.5t33.5 14q11 0 17.5 -5t6.5 -18q0 -21 -25.5 -56.5t-72 -70t-111.5 -59.5t-145 -25q-16 0 -31 1.5t-29 1.5t-23 -5t-16 -27q-5 -17 -7 -27t-2 -15
q0 -12 7 -17.5t25 -5.5q23 0 46.5 4t49.5 4zM797 997q14 -11 22 -21t8 -26q0 -12 -11 -28.5t-28 -31.5t-37 -25.5t-38 -10.5q-19 0 -33.5 4.5t-34.5 13.5q-51 23 -87.5 31t-65.5 8q-76 0 -146.5 -22.5t-146.5 -75.5q-16 -11 -30 -20t-22 -9q-14 0 -14 17q0 7 3.5 16.5t9 19
t10.5 17.5t8 12q36 46 75.5 81.5t87.5 59.5t106 36t132 12q29 0 61.5 -3.5t64 -11t59 -18t47.5 -25.5z" />
<glyph glyph-name="egrave" unicode="&#xe8;" horiz-adv-x="932"
d="M287 637q0 -28 17.5 -35.5t51.5 -7.5q87 0 149 15t95 42t47.5 57t14.5 66q0 62 -43 99.5t-138 37.5q-149 0 -280 -94q-39 -29 -49 -29q-17 0 -17 19q0 25 29 61q54 69 123 113t126 59t113 15q72 0 130 -15t103 -46.5t70 -86t25 -127.5q0 -156 -148.5 -240.5t-405.5 -84.5
q-72 0 -163 8q-45 3 -45 44q0 111 32 166.5t83 85.5q50 29 76 29q24 0 24 -30q0 -12 -10 -58.5t-10 -62.5zM100 358q0 52 48 52h86q26 0 36.5 -10t16.5 -44q39 -243 266 -243q57 0 107 14t77.5 31t51 31t34.5 14q23 0 23 -25q0 -21 -23 -54t-65.5 -68.5t-117 -61
t-161.5 -25.5q-180 0 -279.5 108.5t-99.5 280.5zM401 1647l186 -251q40 -54 40 -102q0 -81 -36 -81q-16 0 -37 21l-219 229q-33 34 -33 77q0 51 19.5 92t43.5 41q17 0 36 -26z" />
<glyph glyph-name="eacute" unicode="&#xe9;" horiz-adv-x="932"
d="M287 637q0 -28 17.5 -35.5t51.5 -7.5q87 0 149 15t95 42t47.5 57t14.5 66q0 62 -43 99.5t-138 37.5q-149 0 -280 -94q-39 -29 -49 -29q-17 0 -17 19q0 25 29 61q54 69 123 113t126 59t113 15q72 0 130 -15t103 -46.5t70 -86t25 -127.5q0 -156 -148.5 -240.5t-405.5 -84.5
q-72 0 -163 8q-45 3 -45 44q0 111 32 166.5t83 85.5q50 29 76 29q24 0 24 -30q0 -12 -10 -58.5t-10 -62.5zM100 358q0 52 48 52h86q26 0 36.5 -10t16.5 -44q39 -243 266 -243q57 0 107 14t77.5 31t51 31t34.5 14q23 0 23 -25q0 -21 -23 -54t-65.5 -68.5t-117 -61
t-161.5 -25.5q-180 0 -279.5 108.5t-99.5 280.5zM343 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="ecircumflex" unicode="&#xea;" horiz-adv-x="932"
d="M287 637q0 -28 17.5 -35.5t51.5 -7.5q87 0 149 15t95 42t47.5 57t14.5 66q0 62 -43 99.5t-138 37.5q-149 0 -280 -94q-39 -29 -49 -29q-17 0 -17 19q0 25 29 61q54 69 123 113t126 59t113 15q72 0 130 -15t103 -46.5t70 -86t25 -127.5q0 -156 -148.5 -240.5t-405.5 -84.5
q-72 0 -163 8q-45 3 -45 44q0 111 32 166.5t83 85.5q50 29 76 29q24 0 24 -30q0 -12 -10 -58.5t-10 -62.5zM100 358q0 52 48 52h86q26 0 36.5 -10t16.5 -44q39 -243 266 -243q57 0 107 14t77.5 31t51 31t34.5 14q23 0 23 -25q0 -21 -23 -54t-65.5 -68.5t-117 -61
t-161.5 -25.5q-180 0 -279.5 108.5t-99.5 280.5zM669 1284l-158 150q-25 23 -36 23q-14 0 -40 -23l-163 -147q-50 -43 -70 -43q-28 0 -28 54q0 47 22 69l240 251q27 26 49 26q19 0 45 -26l218 -241q27 -28 27 -74q0 -22 -8 -43t-26 -21q-23 0 -72 45z" />
<glyph glyph-name="edieresis" unicode="&#xeb;" horiz-adv-x="932"
d="M287 637q0 -28 17.5 -35.5t51.5 -7.5q87 0 149 15t95 42t47.5 57t14.5 66q0 62 -43 99.5t-138 37.5q-149 0 -280 -94q-39 -29 -49 -29q-17 0 -17 19q0 25 29 61q54 69 123 113t126 59t113 15q72 0 130 -15t103 -46.5t70 -86t25 -127.5q0 -156 -148.5 -240.5t-405.5 -84.5
q-72 0 -163 8q-45 3 -45 44q0 111 32 166.5t83 85.5q50 29 76 29q24 0 24 -30q0 -12 -10 -58.5t-10 -62.5zM100 358q0 52 48 52h86q26 0 36.5 -10t16.5 -44q39 -243 266 -243q57 0 107 14t77.5 31t51 31t34.5 14q23 0 23 -25q0 -21 -23 -54t-65.5 -68.5t-117 -61
t-161.5 -25.5q-180 0 -279.5 108.5t-99.5 280.5zM377 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM717 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61
q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="igrave" unicode="&#xec;" horiz-adv-x="571"
d="M375 1012v-893q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v893q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43zM222 1647l186 -251q40 -54 40 -102q0 -81 -36 -81q-16 0 -37 21l-219 229q-33 34 -33 77q0 51 19.5 92t43.5 41q17 0 36 -26z" />
<glyph glyph-name="iacute" unicode="&#xed;" horiz-adv-x="569"
d="M374 1012v-893q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v893q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43zM163 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="icircumflex" unicode="&#xee;" horiz-adv-x="847"
d="M513 1012v-893q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v893q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43zM618 1284l-158 150q-25 23 -36 23q-14 0 -40 -23l-163 -147q-50 -43 -70 -43q-28 0 -28 54q0 47 22 69l240 251q27 26 49 26q19 0 45 -26
l218 -241q27 -28 27 -74q0 -22 -8 -43t-26 -21q-23 0 -72 45z" />
<glyph glyph-name="idieresis" unicode="&#xef;" horiz-adv-x="751"
d="M465 1012v-893q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v893q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43zM288 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM628 1533
v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="eth" unicode="&#xf0;" horiz-adv-x="1108"
d="M776 404q0 145 -10 279t-40.5 253.5t-86.5 221t-147 181.5q-16 14 -30 14q-17 0 -29 -22l-23 -40q-15 -27 -43 -40t-67 -13q-32 0 -32 21q0 9 8 23l53 92q12 21 12 33q0 14 -10 20t-23.5 12t-27.5 10t-41 12t-46 18t-19 25q0 32 80 32q49 0 81 -8.5t55 -8.5q11 0 21 6
t18 20l32 56q30 53 109 53q33 0 33 -20q0 -9 -8 -23l-57 -98q-8 -14 -8 -26q0 -20 29 -35q100 -56 176.5 -145t128 -207t77.5 -263t26 -313q0 -69 -11.5 -139t-32.5 -133t-51.5 -116t-68.5 -87q-53 -49 -89 -49q-21 0 -21 19q0 8 15 28.5t32 65.5q36 100 36 291zM310 522
q0 -75 4 -128t17 -110t36 -91.5t63.5 -57t97.5 -22.5q47 0 85 13t43 13q21 0 21 -22q0 -44 -66.5 -96t-161.5 -52q-327 0 -327 497q0 41 10 93.5t27 82.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -67.5t-10.5 -118.5zM528 1005q164 0 164 -142q0 -21 -11.5 -32
t-27.5 -11q-13 0 -56 17q-60 24 -131 24q-58 0 -109.5 -19t-129.5 -73q-5 -4 -15 -10.5t-15.5 -10.5t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q137 187 336 187z" />
<glyph glyph-name="ntilde" unicode="&#xf1;" horiz-adv-x="1038"
d="M125 33v538q0 56 27 86q27 31 64 55.5t58 24.5q31 0 31 -43v-575q0 -55 -49.5 -92t-95.5 -37q-35 0 -35 43zM360 970q57 42 119 63.5t111 21.5q174 0 255 -97.5t81 -326.5v-512q0 -54 -49 -91.5t-96 -37.5q-35 0 -35 43v395q0 94 -1.5 142t-8 115t-21.5 99.5t-40.5 66.5
t-66.5 47t-98 13q-115 0 -315 -153q-32 -25 -50 -25q-20 0 -20 34v159q0 54 49.5 91.5t95.5 37.5q35 0 35 -43v-25q0 -36 16 -36q14 0 39 19zM659 1293q-48 0 -139.5 51.5t-137.5 51.5q-35 0 -64.5 -14t-62.5 -42t-41 -33.5t-14 -5.5q-19 0 -19 30q0 75 65.5 146.5
t151.5 71.5q55 0 104.5 -25.5t90 -50.5t74.5 -25q31 0 57 10t39 21t31 30t25 25q11 9 20 9q18 0 18 -25q0 -80 -55.5 -152.5t-142.5 -72.5z" />
<glyph glyph-name="ograve" unicode="&#xf2;" horiz-adv-x="1059"
d="M524 1055q228 0 335.5 -134.5t107.5 -396.5q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 7 16t19 30.5t21 47.5q41 112 41 317q0 113 -15.5 196.5t-51 148.5t-98.5 98.5t-154 33.5q-126 0 -260 -92q-5 -4 -15 -10.5t-15.5 -10.5
t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 362 187zM280 552q0 -70 3 -120t11.5 -104t26 -90t44 -66t67.5 -44.5t96 -14.5q47 0 82.5 13t40.5 13q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-87 0 -151.5 29t-103.5 76t-62.5 118t-31.5 143t-8 163
q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -77t-10.5 -129zM466 1647l186 -251q40 -54 40 -102q0 -81 -36 -81q-16 0 -37 21l-219 229q-33 34 -33 77q0 51 19.5 92t43.5 41q17 0 36 -26z" />
<glyph glyph-name="oacute" unicode="&#xf3;" horiz-adv-x="1059"
d="M524 1055q228 0 335.5 -134.5t107.5 -396.5q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 7 16t19 30.5t21 47.5q41 112 41 317q0 113 -15.5 196.5t-51 148.5t-98.5 98.5t-154 33.5q-126 0 -260 -92q-5 -4 -15 -10.5t-15.5 -10.5
t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 362 187zM280 552q0 -70 3 -120t11.5 -104t26 -90t44 -66t67.5 -44.5t96 -14.5q47 0 82.5 13t40.5 13q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-87 0 -151.5 29t-103.5 76t-62.5 118t-31.5 143t-8 163
q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -77t-10.5 -129zM408 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="ocircumflex" unicode="&#xf4;" horiz-adv-x="1059"
d="M524 1055q228 0 335.5 -134.5t107.5 -396.5q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 7 16t19 30.5t21 47.5q41 112 41 317q0 113 -15.5 196.5t-51 148.5t-98.5 98.5t-154 33.5q-126 0 -260 -92q-5 -4 -15 -10.5t-15.5 -10.5
t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 362 187zM280 552q0 -70 3 -120t11.5 -104t26 -90t44 -66t67.5 -44.5t96 -14.5q47 0 82.5 13t40.5 13q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-87 0 -151.5 29t-103.5 76t-62.5 118t-31.5 143t-8 163
q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -77t-10.5 -129zM724 1284l-158 150q-25 23 -36 23q-14 0 -40 -23l-163 -147q-50 -43 -70 -43q-28 0 -28 54q0 47 22 69l240 251q27 26 49 26q19 0 45 -26l218 -241q27 -28 27 -74q0 -22 -8 -43
t-26 -21q-23 0 -72 45z" />
<glyph glyph-name="otilde" unicode="&#xf5;" horiz-adv-x="1059"
d="M524 1055q228 0 335.5 -134.5t107.5 -396.5q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 7 16t19 30.5t21 47.5q41 112 41 317q0 113 -15.5 196.5t-51 148.5t-98.5 98.5t-154 33.5q-126 0 -260 -92q-5 -4 -15 -10.5t-15.5 -10.5
t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 362 187zM280 552q0 -70 3 -120t11.5 -104t26 -90t44 -66t67.5 -44.5t96 -14.5q47 0 82.5 13t40.5 13q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-87 0 -151.5 29t-103.5 76t-62.5 118t-31.5 143t-8 163
q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -77t-10.5 -129zM669 1293q-48 0 -139.5 51.5t-137.5 51.5q-35 0 -64.5 -14t-62.5 -42t-41 -33.5t-14 -5.5q-19 0 -19 30q0 75 65.5 146.5t151.5 71.5q55 0 104.5 -25.5t90 -50.5t74.5 -25q31 0 57 10
t39 21t31 30t25 25q11 9 20 9q18 0 18 -25q0 -80 -55.5 -152.5t-142.5 -72.5z" />
<glyph glyph-name="odieresis" unicode="&#xf6;" horiz-adv-x="1059"
d="M524 1055q228 0 335.5 -134.5t107.5 -396.5q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 7 16t19 30.5t21 47.5q41 112 41 317q0 113 -15.5 196.5t-51 148.5t-98.5 98.5t-154 33.5q-126 0 -260 -92q-5 -4 -15 -10.5t-15.5 -10.5
t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 362 187zM280 552q0 -70 3 -120t11.5 -104t26 -90t44 -66t67.5 -44.5t96 -14.5q47 0 82.5 13t40.5 13q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-87 0 -151.5 29t-103.5 76t-62.5 118t-31.5 143t-8 163
q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30q0 -5 -10.5 -77t-10.5 -129zM442 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM782 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5
t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="divide" unicode="&#xf7;"
d="M1128 580h-921q-43 0 -43 31q0 11 19 38.5t48 53.5q23 20 74 20h922q43 0 43 -30q0 -12 -19.5 -39.5t-48.5 -53.5q-22 -20 -74 -20zM812 332v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q26 30 71 55.5t74 25.5q35 0 35 -43zM812 1202
v-135q0 -49 -21 -73q-25 -30 -70.5 -53t-74.5 -23q-35 0 -35 43v135q0 42 21 68q26 30 71 55.5t74 25.5q35 0 35 -43z" />
<glyph glyph-name="oslash" unicode="&#xf8;" horiz-adv-x="1059"
d="M922 1190q21 0 21 -19q0 -14 -15 -43l-76 -145q-9 -18 -9 -30q0 -7 2.5 -13t5 -9.5t7 -8t5.5 -6.5q104 -132 104 -392q0 -81 -20.5 -173.5t-55.5 -164.5q-38 -76 -93 -129t-89 -53q-21 0 -21 19q0 6 6.5 15.5t18.5 30.5t22 48q24 68 42 162.5t18 154.5q0 149 -40 264
q-10 29 -23 29q-12 0 -23 -21l-281 -537q-7 -12 -7 -22q0 -13 16 -23q30 -15 91 -15q47 0 82.5 15t40.5 15q21 0 21 -22q0 -45 -64.5 -96.5t-158.5 -51.5q-45 0 -88 8q-8 2 -14 2q-18 0 -31 -25l-36 -70q-14 -26 -48.5 -42t-74.5 -16q-20 0 -20 18q0 12 15 42l636 1226
q16 32 33 48t49 23t52 7zM245 172q-41 -62 -66 -62q-14 0 -25 22q-62 124 -62 366q0 51 10 107.5t27 86.5q21 36 67.5 66t79.5 30q25 0 25 -30l-21 -84q-20 -83 -20 -164q0 -107 15 -181q7 -35 7 -48q0 -52 -37 -109zM650 956q-31 -61 -66 -61q-12 0 -38 8q-39 10 -89 10
q-123 0 -260 -94q-5 -4 -15 -10.5t-15.5 -10.5t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q147 187 369 187q28 0 46 -1t42.5 -4.5t37 -13.5t12.5 -25q0 -17 -19 -55z" />
<glyph glyph-name="ugrave" unicode="&#xf9;" horiz-adv-x="1044"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-609l4 -77q4 -57 16 -97.5t36 -66t60.5 -37.5t88.5 -12q83 0 151 39q19 11 25 11q9 0 12.5 -7t3.5 -30q0 -42 -29 -71.5t-70 -48.5t-85.5 -28t-75.5 -9
zM921 1012v-896q0 -54 -49.5 -90t-95.5 -36q-35 0 -35 43v896q0 52 50 89t95 37q35 0 35 -43zM458 1647l186 -251q40 -54 40 -102q0 -81 -36 -81q-16 0 -37 21l-219 229q-33 34 -33 77q0 51 19.5 92t43.5 41q17 0 36 -26z" />
<glyph glyph-name="uacute" unicode="&#xfa;" horiz-adv-x="1044"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-609l4 -77q4 -57 16 -97.5t36 -66t60.5 -37.5t88.5 -12q83 0 151 39q19 11 25 11q9 0 12.5 -7t3.5 -30q0 -42 -29 -71.5t-70 -48.5t-85.5 -28t-75.5 -9
zM921 1012v-896q0 -54 -49.5 -90t-95.5 -36q-35 0 -35 43v896q0 52 50 89t95 37q35 0 35 -43zM400 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="ucircumflex" unicode="&#xfb;" horiz-adv-x="1044"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-609l4 -77q4 -57 16 -97.5t36 -66t60.5 -37.5t88.5 -12q83 0 151 39q19 11 25 11q9 0 12.5 -7t3.5 -30q0 -42 -29 -71.5t-70 -48.5t-85.5 -28t-75.5 -9
zM921 1012v-896q0 -54 -49.5 -90t-95.5 -36q-35 0 -35 43v896q0 52 50 89t95 37q35 0 35 -43zM716 1284l-158 150q-25 23 -36 23q-14 0 -40 -23l-163 -147q-50 -43 -70 -43q-28 0 -28 54q0 47 22 69l240 251q27 26 49 26q19 0 45 -26l218 -241q27 -28 27 -74q0 -22 -8 -43
t-26 -21q-23 0 -72 45z" />
<glyph glyph-name="udieresis" unicode="&#xfc;" horiz-adv-x="1044"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-609l4 -77q4 -57 16 -97.5t36 -66t60.5 -37.5t88.5 -12q83 0 151 39q19 11 25 11q9 0 12.5 -7t3.5 -30q0 -42 -29 -71.5t-70 -48.5t-85.5 -28t-75.5 -9
zM921 1012v-896q0 -54 -49.5 -90t-95.5 -36q-35 0 -35 43v896q0 52 50 89t95 37q35 0 35 -43zM434 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM774 1533v-145q0 -40 -18 -62
q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="yacute" unicode="&#xfd;" horiz-adv-x="1042"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-564l3 -88q1 -29 3 -46.5t5 -31.5t6.5 -27t9.5 -33q17 -60 65 -84.5t121 -24.5q75 0 143 39q19 11 26 11q15 0 15 -37q0 -41 -29 -70.5t-70 -48.5
t-85.5 -28.5t-75.5 -9.5zM920 1012v-1215q0 -75 -19 -138.5t-47.5 -103t-62.5 -67.5t-61.5 -39.5t-47.5 -11.5q-16 0 -16 14q0 9 16 31q34 47 46.5 118.5t12.5 192.5l-2 1133q0 39 19 61q26 30 61.5 49t65.5 19q35 0 35 -43zM332 -410q36 -27 67 -38.5t76 -11.5
q40 0 91.5 11t54.5 11q26 0 26 -25q0 -46 -78 -93.5t-168 -47.5q-88 0 -166.5 37t-78.5 73t41 68q47 39 77 39t58 -23zM399 1396l186 251q19 26 36 26q23 0 42 -39.5t19 -90.5q0 -43 -33 -77l-217 -229q-21 -21 -37 -21q-18 0 -27 23t-9 53q0 51 40 104z" />
<glyph glyph-name="thorn" unicode="&#xfe;" horiz-adv-x="1050"
d="M355 971q115 84 232 84q368 0 368 -504q0 -97 -20.5 -196.5t-56.5 -170.5q-38 -76 -92.5 -128t-88.5 -52q-20 0 -20 19q0 6 7 16t19 30.5t22 47.5q41 112 41 325q0 112 -11.5 193.5t-39.5 146t-78 97t-124 32.5q-80 0 -140.5 -31.5t-178.5 -121.5q-34 -25 -50 -25
q-20 0 -20 36v641q0 54 49.5 90t95.5 36q35 0 35 -43l-4 -506q0 -36 16 -36q13 0 39 20zM479 113q66 0 113.5 15t49.5 15q21 0 21 -22q0 -53 -72.5 -102.5t-179.5 -49.5q-144 0 -213 60t-70 207l-4 336q0 53 27 84q27 30 65 56t57 26q31 0 31 -43l4 -402q0 -92 41.5 -136
t129.5 -44zM304 -173v-305q0 -55 -49 -90.5t-96 -35.5q-35 0 -35 43v485q0 45 35 45q40 0 112 -56q33 -25 33 -86z" />
<glyph glyph-name="ydieresis" unicode="&#xff;" horiz-adv-x="1042"
d="M430 -31q-84 0 -144.5 21.5t-98.5 71t-56 128.5t-18 195v543q0 27 14.5 50.5t36 40.5t47 26.5t47.5 9.5q35 0 35 -43v-564l3 -88q1 -29 3 -46.5t5 -31.5t6.5 -27t9.5 -33q17 -60 65 -84.5t121 -24.5q75 0 143 39q19 11 26 11q15 0 15 -37q0 -41 -29 -70.5t-70 -48.5
t-85.5 -28.5t-75.5 -9.5zM920 1012v-1215q0 -75 -19 -138.5t-47.5 -103t-62.5 -67.5t-61.5 -39.5t-47.5 -11.5q-16 0 -16 14q0 9 16 31q34 47 46.5 118.5t12.5 192.5l-2 1133q0 39 19 61q26 30 61.5 49t65.5 19q35 0 35 -43zM332 -410q36 -27 67 -38.5t76 -11.5
q40 0 91.5 11t54.5 11q26 0 26 -25q0 -46 -78 -93.5t-168 -47.5q-88 0 -166.5 37t-78.5 73t41 68q47 39 77 39t58 -23zM433 1533v-145q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43zM773 1533v-145
q0 -40 -18 -62q-24 -30 -56.5 -48.5t-55.5 -18.5q-35 0 -35 43v145q0 39 18 61q26 30 58 49t54 19q35 0 35 -43z" />
<glyph glyph-name="dotlessi" unicode="&#x131;" horiz-adv-x="426"
d="M303 1012v-893q0 -38 -18 -62q-26 -30 -61.5 -48.5t-65.5 -18.5q-35 0 -35 43v893q0 38 18 61q26 30 61.5 49t65.5 19q35 0 35 -43z" />
<glyph glyph-name="OE" unicode="&#x152;" horiz-adv-x="1691"
d="M865 200v336q0 36 24.5 47.5t76.5 11.5q56 0 78 -11.5t22 -47.5v-331q0 -41 41 -41h469q43 0 43 -31q0 -14 -20 -51.5t-47 -61.5q-23 -20 -74 -20h-578q-38 0 -123 -15.5t-128 -15.5q-151 0 -258 44t-170 131.5t-91 204t-28 274.5q0 113 14 204t34 130q25 50 78.5 87.5
t97.5 37.5q30 0 30 -31q0 -15 -11 -66t-22.5 -135t-11.5 -178q0 -85 11.5 -159t41 -145t75 -120.5t119 -80t167.5 -30.5q53 0 84 4q25 3 40.5 18.5t15.5 40.5zM1009 1403h547q43 0 43 -31q0 -14 -20 -50.5t-48 -61.5q-23 -21 -73 -21h-532q-52 0 -139 15.5t-161 15.5
q-212 0 -390 -150q-54 -45 -66 -45q-23 0 -23 25q0 32 54 100q189 234 546 234q46 0 133.5 -15.5t128.5 -15.5zM865 696v423q0 36 24.5 48t76.5 12q56 0 78 -11.5t22 -48.5v-259q0 -41 41 -41h387q43 0 43 -31q0 -14 -20 -50.5t-47 -61.5q-23 -21 -74 -21h-490q-41 0 -41 41
z" />
<glyph glyph-name="oe" unicode="&#x153;" horiz-adv-x="1568"
d="M280 552q0 -86 5 -165.5t26.5 -140.5t67 -97t126.5 -36q26 0 48.5 4t39 9t26.5 9t12 4q21 0 21 -22q0 -24 -16.5 -50t-45.5 -48t-70.5 -36t-90.5 -14q-76 0 -130.5 22t-92 60.5t-60 90t-34.5 110.5t-16 122t-4 124q0 97 22.5 159.5t81.5 100.5q46 30 80 30q25 0 25 -30
q0 1 -3.5 -21.5t-7 -55.5t-7 -68.5t-3.5 -60.5zM843 413q47 0 62.5 -10t18.5 -32q8 -68 29 -117.5t46 -76t61.5 -41.5t66 -19t68.5 -4q57 0 106.5 14t75.5 31t48.5 31t33.5 14q23 0 23 -25q0 -21 -22.5 -54t-63.5 -68.5t-114.5 -61t-160.5 -25.5q-95 0 -159 31.5t-113 96.5
q-16 21 -31 21t-30 -21q-65 -93 -99 -93q-21 0 -21 19q0 6 6 15.5t17 30.5t32.5 86t25.5 190q0 15 2 24.5t10.5 21t29 17t52.5 5.5zM929 637q0 -28 17.5 -35.5t51.5 -7.5q161 0 230.5 51.5t69.5 128.5q0 62 -42 99.5t-133 37.5q-130 0 -303 -111q-53 -34 -82 -34
q-31 0 -64 41q-83 104 -227 104q-59 0 -116 -19.5t-134 -72.5q-5 -4 -15 -10.5t-15.5 -10.5t-11.5 -7t-10 -3q-14 0 -14 17q0 11 11.5 32t19.5 31q146 187 352 187q195 0 294 -99q24 -24 42 -24q17 0 36 17q124 106 282 106q149 0 235.5 -66t86.5 -209q0 -154 -148 -239.5
t-400 -85.5q-72 0 -163 8q-45 3 -45 44q0 111 32 166t83 85q52 30 76 30t24 -30q0 -12 -10 -58.5t-10 -62.5z" />
<glyph glyph-name="circumflex" unicode="&#x2c6;" horiz-adv-x="761"
d="M575 1284l-158 150q-25 23 -36 23q-14 0 -40 -23l-163 -147q-50 -43 -70 -43q-28 0 -28 54q0 47 22 69l240 251q27 26 49 26q19 0 45 -26l218 -241q27 -28 27 -74q0 -22 -8 -43t-26 -21q-23 0 -72 45z" />
<glyph glyph-name="caron" unicode="&#x2c7;" horiz-adv-x="761"
d="M182 1605l163 -154q25 -23 36 -23q12 0 40 23l163 150q48 45 70 45q27 0 27 -46q0 -52 -29 -83l-231 -249q-27 -27 -51 -27q-19 0 -45 27l-218 239q-27 30 -27 78q0 20 11 40.5t28 20.5q22 0 63 -41z" />
<glyph glyph-name="ring" unicode="&#x2da;" horiz-adv-x="613"
d="M307 1549q-38 0 -69 -29t-31 -93q0 -54 29.5 -87t72.5 -33q40 0 68.5 31t28.5 99q0 52 -27 82t-72 30zM305 1650q92 0 153 -51q34 -27 54.5 -70t20.5 -90q0 -106 -66.5 -169t-156.5 -63q-95 0 -162.5 56.5t-67.5 163.5q0 95 69 159t156 64z" />
<glyph glyph-name="tilde" unicode="&#x2dc;" horiz-adv-x="836"
d="M558 1293q-48 0 -139.5 51.5t-137.5 51.5q-35 0 -64.5 -14t-62.5 -42t-41 -33.5t-14 -5.5q-19 0 -19 30q0 75 65.5 146.5t151.5 71.5q55 0 104.5 -25.5t90 -50.5t74.5 -25q31 0 57 10t39 21t31 30t25 25q11 9 20 9q18 0 18 -25q0 -80 -55.5 -152.5t-142.5 -72.5z" />
<glyph glyph-name="endash" unicode="&#x2013;" horiz-adv-x="1323"
d="M1018 592h-811q-43 0 -43 30q0 12 17 37t46 51q23 21 78 21h812q43 0 43 -31q0 -11 -17.5 -36.5t-46.5 -51.5q-22 -20 -78 -20z" />
<glyph glyph-name="emdash" unicode="&#x2014;" horiz-adv-x="1723"
d="M1418 592h-1211q-43 0 -43 30q0 12 17 37t46 51q23 21 78 21h1212q43 0 43 -31q0 -11 -17.5 -36.5t-46.5 -51.5q-22 -20 -78 -20z" />
<glyph glyph-name="quoteleft" unicode="&#x2018;" horiz-adv-x="600"
d="M153 1279l138 360q27 63 66 107.5t77 44.5q35 0 35 -30q0 -7 -20 -79l-95 -338q-14 -47 -31 -68q-24 -30 -72.5 -55.5t-77.5 -25.5q-34 0 -34 34q0 14 14 50z" />
<glyph glyph-name="quoteright" unicode="&#x2019;" horiz-adv-x="600"
d="M451 1707l-138 -360q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 115 417q14 47 31 68q24 30 72.5 55.5t77.5 25.5q34 0 34 -34q0 -14 -14 -50z" />
<glyph glyph-name="quotesinglbase" unicode="&#x201a;" horiz-adv-x="596"
d="M311 -127q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 115 417q14 47 31 68q24 30 72.5 55.5t77.5 25.5q34 0 34 -34q0 -14 -152 -410z" />
<glyph glyph-name="quotedblleft" unicode="&#x201c;" horiz-adv-x="930"
d="M153 1279l138 360q27 63 66 107.5t77 44.5q35 0 35 -30q0 -7 -115 -417q-14 -47 -31 -68q-24 -30 -72.5 -55.5t-77.5 -25.5q-34 0 -34 34q0 14 14 50zM483 1279l138 360q27 63 66 107.5t77 44.5q35 0 35 -30q0 -7 -20 -79q-101 -382 -126 -406q-24 -30 -72.5 -55.5
t-77.5 -25.5q-34 0 -34 34q0 14 14 50z" />
<glyph glyph-name="quotedblright" unicode="&#x201d;" horiz-adv-x="930"
d="M451 1707l-138 -360q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 115 417q14 47 31 68q24 30 72.5 55.5t77.5 25.5q34 0 34 -34q0 -14 -14 -50zM781 1707l-138 -360q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 115 417q14 47 31 68q24 30 72.5 55.5t77.5 25.5
q34 0 34 -34q0 -14 -14 -50z" />
<glyph glyph-name="quotedblbase" unicode="&#x201e;" horiz-adv-x="926"
d="M449 233l-138 -360q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 115 417q14 47 31 68q24 30 72.5 55.5t77.5 25.5q34 0 34 -34q0 -14 -14 -50zM779 233l-138 -360q-27 -63 -66 -107.5t-77 -44.5q-35 0 -35 30q0 7 115 417q14 47 31 68q24 30 72.5 55.5t77.5 25.5
q34 0 34 -34q0 -14 -14 -50z" />
<glyph glyph-name="bullet" unicode="&#x2022;" horiz-adv-x="817"
d="M407 1069q64 0 120.5 -24t98.5 -65t66.5 -96t24.5 -118t-24.5 -118t-66.5 -96.5t-98.5 -65t-120.5 -23.5q-63 0 -119 23.5t-97.5 64.5t-66 96t-24.5 119t24.5 119t66 96t97.5 64.5t119 23.5z" />
<glyph glyph-name="guilsinglleft" unicode="&#x2039;" horiz-adv-x="991"
d="M368 508l436 -329q37 -29 37 -58t-33.5 -79t-64.5 -50q-15 0 -43 18l-489 394q-26 22 -26 38q0 26 44 56.5t80 30.5q31 0 59 -21zM705 896l-533 -361q-38 -22 -57 -22q-25 0 -25 31q0 47 51 118t96 103l525 371q28 20 48 20q27 0 27 -28q0 -54 -31 -116
q-18 -34 -46.5 -66.5t-54.5 -49.5z" />
<glyph glyph-name="guilsinglright" unicode="&#x203a;" horiz-adv-x="1056"
d="M779 507l-592 461q-37 28 -37 58q0 13 9.5 35t23.5 43t31.5 36t33.5 15q14 0 43 -18l649 -529q13 -11 19.5 -22t6.5 -20q0 -13 -14 -27.5t-33.5 -26.5t-42 -20t-38.5 -8q-28 0 -59 23zM761 415q0 -24 -26 -43l-506 -361q-34 -19 -48 -19q-27 0 -27 27q0 54 31 116
q18 35 47 67.5t54 48.5l313 222q40 29 68 29q26 0 60 -31t34 -56z" />
<glyph glyph-name="fraction" unicode="&#x2044;" horiz-adv-x="1422"
d="M1125 1360q26 35 73.5 54.5t98.5 19.5q11 0 18 -6t7 -15q0 -5 -3 -12.5t-12 -20.5l-1010 -1337q-28 -35 -73 -54.5t-99 -19.5q-8 0 -16.5 5t-8.5 18q0 9 8.5 22.5t20.5 28.5z" />
<glyph glyph-name="uni2074" unicode="&#x2074;" horiz-adv-x="772"
d="M177 970l211 308q11 17 20 17q6 0 9 -4.5t4.5 -19.5t1.5 -47q0 -79 -20 -110l-106 -161q-13 -20 -33.5 -25.5t-57.5 -5.5q-41 0 -41 20q0 10 12 28zM632 755h-146q-28 0 -28 30v550q0 26 12 40q15 18 45.5 33t48.5 15q20 0 20 -25v-476q0 -35 34 -35h81q28 0 28 -17
q0 -18 -16 -45q-24 -41 -40 -55.5t-39 -14.5zM171 887h219q33 0 33 -64q0 -68 -33 -68h-285q-40 0 -40 30q0 17 35 68q23 34 71 34zM584 688v-29q0 -29 -12 -43q-15 -17 -45.5 -31t-47.5 -14q-21 0 -21 25v92q0 32 63 32q32 0 47.5 -6.5t15.5 -25.5z" />
<glyph glyph-name="Euro" unicode="&#x20ac;" horiz-adv-x="1374"
d="M299 309q0 63 116 63q48 -3 71 -10.5t37 -26.5q103 -198 323 -198q79 0 141.5 16t109.5 35.5t78.5 35.5t46.5 16q24 0 24 -25q0 -9 -12 -30.5t-36.5 -48.5t-63 -56.5t-91.5 -54t-121 -40.5t-152 -16q-195 0 -308.5 78t-158.5 233q-4 15 -4 29zM1226 1315q0 -19 -13.5 -40
t-34 -39t-42 -29t-44.5 -11q-34 0 -92.5 25t-120.5 37t-121 12q-182 0 -360 -150q-54 -45 -66 -45q-23 0 -23 25q0 32 54 100q189 234 516 234q31 0 72 -5t81 -12.5t75 -17.5t55 -19q6 -3 17 -8t21.5 -12.5t18 -18.5t7.5 -26zM899 770h-564q-57 0 -57 46q0 23 4 45t9 41
t11 33t10 22q12 24 33 47t46 40t50.5 27.5t46.5 10.5q30 0 30 -31q0 -6 -2.5 -20t-6 -30.5t-6 -32t-2.5 -25.5q0 -22 11 -32t43 -10h443q43 0 43 -31q0 -2 -7.5 -18t-24 -34t-43.5 -33t-67 -15zM341 430q-33 0 -49 14t-22 40.5t-6 63.5v83q0 15 5.5 28.5t17.5 24t32.5 16.5
t50.5 6q104 0 104 -72q0 -19 2 -32.5t9 -22.5t21 -13.5t38 -4.5h254q43 0 43 -31q0 -2 -7.5 -18t-24 -34t-43.5 -33t-67 -15h-358zM183 901q39 0 39 -43q0 -88 -76 -88h-58q-43 0 -43 30q0 6 7.5 20t24 32.5t42.5 33.5t64 15zM208 506q0 -40 -13 -58t-44 -18h-63
q-43 0 -43 31l8 15.5t22.5 34t35.5 34t47 15.5q29 0 39.5 -10t10.5 -44z" />
<glyph glyph-name="minus" unicode="&#x2212;"
d="M207 580q-43 0 -43 31q0 11 19 38.5t48 53.5q23 20 74 20h922q43 0 43 -30q0 -12 -19.5 -39.5t-48.5 -53.5q-22 -20 -74 -20h-921z" />
<glyph glyph-name="dieresis.case" horiz-adv-x="706"
d="M264 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144zM626 1830q0 -20 -3.5 -38t-17.5 -35q-13 -15 -29.5 -28t-33.5 -22.5t-34 -15
t-31 -5.5q-35 0 -35 43v144q0 15 4 33.5t17 33.5t29.5 29t34.5 24.5t34.5 17t29.5 6.5q35 0 35 -43v-144z" />
<glyph glyph-name="tilde.case" horiz-adv-x="881"
d="M578 1717q-36 0 -70.5 13t-69 28.5t-68.5 28.5t-69 13q-29 0 -56.5 -7.5t-51 -18.5t-56.5 -32t-38 -21q-19 0 -19 28q0 32 19.5 69.5t51.5 70t74.5 54.5t87.5 22q48 0 85 -12.5t68.5 -28t59.5 -28t60 -12.5q33 0 60 7t48.5 17.5t38.5 22.5t30 23q11 9 20 9q18 0 18 -25
q0 -36 -17.5 -75t-47.5 -71.5t-71 -53.5t-87 -21z" />
<glyph glyph-name="circumflex.case" horiz-adv-x="885"
d="M768 1753q21 -20 29 -53t8 -59q0 -35 -27 -35q-11 0 -30.5 9t-53.5 32l-215 152q-10 7 -18.5 11t-18.5 4q-16 0 -38 -14l-227 -147q-31 -19 -47 -27.5t-26 -8.5q-24 0 -24 30q0 23 6.5 49t25.5 43l293 254q17 15 28 19t22 4q10 0 20 -5t24 -18z" />
<glyph glyph-name="caron.case" horiz-adv-x="880"
d="M117 1901q-21 20 -29 49.5t-8 55.5q0 35 27 35q11 0 30.5 -9t53.5 -32l210 -143q10 -7 18.5 -11t18.5 -4q16 0 38 14q258 165 274 173.5t26 8.5q24 0 24 -30q0 -23 -5 -51t-24 -45l-291 -253q-17 -15 -28 -19t-22 -4q-10 0 -20 5t-24 18z" />
<glyph glyph-name="acute.case" horiz-adv-x="426"
d="M416 2004q12 10 19.5 12.5t13.5 2.5q14 0 25.5 -20.5t11.5 -57.5q0 -26 -2.5 -49t-10 -43.5t-21.5 -38.5t-37 -33l-279 -177q-12 -8 -20 -10.5t-13 -2.5q-13 0 -18 9.5t-5 23.5q0 41 19.5 88.5t64.5 85.5z" />
<glyph glyph-name="grave.case" horiz-adv-x="426"
d="M402 1794q45 -38 64.5 -85.5t19.5 -88.5q0 -14 -5 -23.5t-18 -9.5q-5 0 -13 2.5t-20 10.5l-279 177q-23 15 -37 33t-21.5 38.5t-10 43.5t-2.5 49q0 37 11.5 57.5t25.5 20.5q6 0 13.5 -2.5t19.5 -12.5z" />
<glyph glyph-name="foundryicon" horiz-adv-x="3568"
d="M1253 813q11 -95 17 -190.5t6 -190.5q0 -131 -11.5 -256t-36 -235.5t-62.5 -203t-90 -159.5t-118.5 -104t-148.5 -37q-54 0 -88.5 15t-55 43.5t-28.5 71t-8 97.5q0 50 9 95t21 87q50 0 105.5 -16.5t97.5 -58.5q-5 -37 -9.5 -80t-4.5 -86q0 -26 2.5 -49.5t7.5 -44.5
q64 41 99.5 96t55.5 125t30 155l22 187q-8 -13 -24.5 -25t-36.5 -12q-75 0 -126 40.5t-83 106.5q-11 -31 -29.5 -63t-47 -58t-67.5 -42.5t-90 -16.5q-78 0 -140.5 23.5t-110.5 65t-83 97.5t-58 121.5t-35 137.5t-13 145q-1 125 14.5 249t51.5 237t94.5 210.5t142.5 171.5
q46 -10 100 -26t100.5 -51t77.5 -94.5t31 -155.5q0 -75 -36 -136t-93 -110q-9 -10 -14 -12t-6.5 0.5t-1.5 7.5t2 10q2 14 3 28t1 29q0 39 -6 80.5t-15 78.5t-20.5 65.5t-22.5 42.5q-27 -26 -51.5 -86.5t-43 -143t-29.5 -180.5t-11 -198q0 -85 9 -167t28.5 -152.5t50.5 -126
t76 -87.5q40 13 72 39.5t57.5 58.5t43.5 64.5t30 58.5q-22 71 -29.5 151.5t-7.5 161.5q0 78 10 131t29 88l40 -8t52.5 -14t54.5 -22t47 -31q-6 -104 -6 -203q0 -111 11 -215.5t42 -202.5q12 3 19.5 10t12 15t7 16.5t4.5 13.5q13 57 18 117.5t5 121.5q0 70 -5.5 139
t-13.5 131.5t-17 116t-15 93.5q27 3 60 -3.5t66 -20t63 -32.5t50 -40zM1286 850q82 -4 131 -16q53 -11 88 -50q23 -42 41.5 -101t24.5 -140q35 66 58.5 114.5t37.5 90.5q0 13 2.5 31t7 36t10 35t11.5 29q32 -3 62.5 -9.5t56 -16.5t45 -24.5t30.5 -33.5q-8 -45 -13 -97.5
t-5 -105.5q0 -35 2.5 -67.5t7.5 -61.5q-34 -10 -66 -10q-110 0 -130 133q-8 -21 -21.5 -42t-28 -44t-27.5 -48t-20 -53q0 -26 -0.5 -58.5t-2 -65.5t-6 -64t-11.5 -53q-8 -28 -21 -52.5t-30.5 -42.5t-40.5 -28.5t-51 -10.5q-14 0 -29 3q-4 61 -7.5 130.5t-9 143t-13 148.5
t-18.5 146t-27 136t-38 119zM2552 113q12 10 28 26t30 34.5t24 40t12 42.5q-19 78 -25.5 161.5t-6.5 151.5q0 65 3 101q-17 -21 -32.5 -62t-27.5 -94t-19.5 -113.5t-7.5 -119.5q0 -46 5.5 -89t16.5 -79zM3154 535q26 37 45.5 93t32.5 120t19.5 132t6.5 131q0 86 -12 148
q-15 -62 -30 -137.5t-27.5 -157t-21.5 -165.5t-13 -164zM2177 690q-28 -85 -41.5 -181.5t-13.5 -193.5q23 3 40 25t28 54.5t16.5 71.5t5.5 77q0 45 -12 85.5t-23 61.5zM2441 1317q-15 -31 -31 -71t-35.5 -82.5t-43 -84.5t-53.5 -76.5t-68 -59t-86 -32.5q14 -28 27.5 -54
t25.5 -48q0 -2 2 -4q56 -28 87.5 -85.5t31.5 -148.5q0 -52 -11 -105t-33 -98.5t-54 -79t-74 -46.5q11 -44 24.5 -82.5t42.5 -57.5q30 12 53.5 35t42 50t32.5 56t24 54v109q2 55 10 108t23.5 102t40 93t59.5 82q35 0 74 -7.5t71 -19.5q3 7 8 29t11.5 46.5t13.5 44.5t13 25
q17 5 43 0.5t52.5 -14.5t49.5 -23.5t35 -25.5q-12 -85 -20.5 -188t-8.5 -209q0 -97 9 -188.5t30 -164.5q15 -4 30 9t29 32.5t25 40.5t18 33l-6 29q-19 90 -28 187t-9 198q0 109 11 219t32 213t52.5 195t72.5 167q90 -15 149 -43t93.5 -75t48.5 -114.5t14 -160.5
q0 -88 -15 -181t-44.5 -175t-73 -144t-100.5 -88q0 -106 20.5 -191.5t65.5 -150.5q62 47 110 131t80 215q11 5 17 4.5t12 -0.5q1 -11 1 -21.5v-22.5q0 -40 -4.5 -84t-16 -87t-30.5 -82t-47 -68.5t-66.5 -47t-88.5 -17.5q-75 0 -130.5 32.5t-90.5 92.5q-6 -24 -18 -46.5
t-29 -40t-39 -28t-47 -10.5q-29 0 -55 12t-47 30.5t-37 41t-25 43.5q-5 -21 -19.5 -39.5t-34 -32.5t-41.5 -23t-42 -11q-80 0 -124.5 35.5t-59.5 91.5q-13 -21 -31 -42t-41 -39t-51 -30.5t-62 -15.5q-74 0 -126.5 28t-85.5 75.5t-48 109.5t-15 131v20.5t1 20.5q1 56 7.5 115
t17.5 114t26.5 102t34.5 78q9 1 18 1.5t18 0.5t18 -0.5t18 -1.5q-10 19 -18.5 40t-14.5 42q-42 9 -81 30t-75.5 50.5t-70 64.5t-64.5 72q-15 13 -44.5 20t-63 13.5t-65.5 16.5t-52 28q-8 7 -6 14t10 7q1 -2 20 -4.5t47 -5.5t62 -6t65.5 -5.5t55.5 -4t34 -1.5q74 14 145 27
t128.5 25t97.5 23.5t51 22.5q13 45 47 70t72 25q16 0 29.5 -2.5t25.5 -10.5l35 13q2 0 2 -0.5t1 -0.5h1q-1 -1 -2 -1l-8 -39h35q1 -1 1 -2h-1zM2148 817q-14 19 -27 42.5t-24 49.5h-31l25 -80q15 -3 29 -5t28 -7z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 134 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
www/dam/img/icon2top.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

View file

@ -0,0 +1 @@
!function(a){a.fn.datepicker.dates.es={days:["Domingo","Lunes","Martes","Miércoles","Jueves","Viernes","Sábado"],daysShort:["Dom","Lun","Mar","Mié","Jue","Vie","Sáb"],daysMin:["Do","Lu","Ma","Mi","Ju","Vi","Sa"],months:["Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],monthsShort:["Ene","Feb","Mar","Abr","May","Jun","Jul","Ago","Sep","Oct","Nov","Dic"],today:"Hoy",monthsTitle:"Meses",clear:"Borrar",weekStart:1,format:"dd/mm/yyyy"}}(jQuery);

File diff suppressed because one or more lines are too long

7
www/dam/js/bootstrap-select.es.min.js vendored Normal file
View file

@ -0,0 +1,7 @@
/*!
* Bootstrap-select v1.12.4 (http://silviomoreto.github.io/bootstrap-select)
*
* Copyright 2013-2017 bootstrap-select
* Licensed under MIT (https://github.com/silviomoreto/bootstrap-select/blob/master/LICENSE)
*/
!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],function(a){return b(a)}):"object"==typeof module&&module.exports?module.exports=b(require("jquery")):b(a.jQuery)}(this,function(a){!function(a){a.fn.selectpicker.defaults={noneSelectedText:"No hay selección",noneResultsText:"No hay resultados {0}",countSelectedText:"Seleccionados {0} de {1}",maxOptionsText:["Límite alcanzado ({n} {var} max)","Límite del grupo alcanzado({n} {var} max)",["elementos","element"]],multipleSeparator:", ",selectAllText:"Seleccionar Todos",deselectAllText:"Desmarcar Todos"}}(a)});

9
www/dam/js/bootstrap-select.min.js vendored Normal file

File diff suppressed because one or more lines are too long

7
www/dam/js/bootstrap.min.js vendored Normal file

File diff suppressed because one or more lines are too long

10
www/dam/js/chart.bundle.min.js vendored Normal file

File diff suppressed because one or more lines are too long

2610
www/dam/js/handlebars.js Normal file

File diff suppressed because it is too large Load diff

50
www/dam/js/javascript.js Normal file
View file

@ -0,0 +1,50 @@
// Fix for required fields in IE < 11:
/*
if ($("<input />").prop("required") === undefined) {
$(document).on("submit", function(e) {
$(this)
.find("input, select, textarea")
.filter("[required]")
.filter(function() { return this.value == ''; })
.each(function() {
e.preventDefault();
$(this).css({ "border-color":"red" });
alert( $(this).prev('label').html() + " is required!");
});
});
}
*/
$(function(){
$('#naviga a.option').click(function(){
$('#naviga > input[name=rm]').val(this.id);
$('#naviga').submit();
return false;
});
// Activate tooltips:
$('[data-toggle="tooltip"]').tooltip({container: 'body', delay: {show: 10, hide: 0}});
// Smooth scroll to anchor:
$('a[href*="#"]:not([href="#"])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html, body').animate({ scrollTop: target.offset().top - 90 }, 1000);
return false;
}
}
});
// Smooth scroll to top:
$(window).scroll(function(){
if ($(this).scrollTop() > 100) {
$('.scrollup').fadeIn();
}
else {
$('.scrollup').fadeOut();
}
});
$('.scrollup').click(function(){
$('html, body').animate({ scrollTop: 0 }, 600);
return false;
});
});

5
www/dam/js/jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
/*! SmartMenus jQuery Plugin Bootstrap Addon - v0.4.1 - September 17, 2017
* http://www.smartmenus.org/
* Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery","smartmenus"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function(t){return t.extend(t.SmartMenus.Bootstrap={},{keydownFix:!1,init:function(){var e=t("ul.navbar-nav:not([data-sm-skip])");e.each(function(){function e(){o.find("a.current").parent().addClass("active"),o.find("a.has-submenu").each(function(){var e=t(this);e.is('[data-toggle="dropdown"]')&&e.dataSM("bs-data-toggle-dropdown",!0).removeAttr("data-toggle"),e.is('[role="button"]')&&e.dataSM("bs-role-button",!0).removeAttr("role")})}function s(){o.find("a.current").parent().removeClass("active"),o.find("a.has-submenu").each(function(){var e=t(this);e.dataSM("bs-data-toggle-dropdown")&&e.attr("data-toggle","dropdown").removeDataSM("bs-data-toggle-dropdown"),e.dataSM("bs-role-button")&&e.attr("role","button").removeDataSM("bs-role-button")})}function i(t){var e=a.getViewportWidth();if(e!=n||t){var s=o.find(".caret");a.isCollapsible()?(o.addClass("sm-collapsible"),o.is("[data-sm-skip-collapsible-behavior]")||s.addClass("navbar-toggle sub-arrow")):(o.removeClass("sm-collapsible"),o.is("[data-sm-skip-collapsible-behavior]")||s.removeClass("navbar-toggle sub-arrow")),n=e}}var o=t(this),a=o.data("smartmenus");if(!a){o.smartmenus({subMenusSubOffsetX:2,subMenusSubOffsetY:-6,subIndicators:!1,collapsibleShowFunction:null,collapsibleHideFunction:null,rightToLeftSubMenus:o.hasClass("navbar-right"),bottomToTopSubMenus:o.closest(".navbar").hasClass("navbar-fixed-bottom")}).on({"show.smapi":function(e,s){var i=t(s),o=i.dataSM("scroll-arrows");o&&o.css("background-color",t(document.body).css("background-color")),i.parent().addClass("open")},"hide.smapi":function(e,s){t(s).parent().removeClass("open")}}),e(),a=o.data("smartmenus"),a.isCollapsible=function(){return!/^(left|right)$/.test(this.$firstLink.parent().css("float"))&&"block"==this.$root.css("display")},a.refresh=function(){t.SmartMenus.prototype.refresh.call(this),e(),i(!0)},a.destroy=function(e){s(),t.SmartMenus.prototype.destroy.call(this,e)},o.is("[data-sm-skip-collapsible-behavior]")&&(a.opts.collapsibleBehavior="toggle");var n;i(),t(window).on("resize.smartmenus"+a.rootId,i)}}),e.length&&!t.SmartMenus.Bootstrap.keydownFix&&(t(document).off("keydown.bs.dropdown.data-api",".dropdown-menu"),t.fn.dropdown&&t.fn.dropdown.Constructor&&t(document).on("keydown.bs.dropdown.data-api",'.dropdown-menu:not([id^="sm-"])',t.fn.dropdown.Constructor.prototype.keydown),t.SmartMenus.Bootstrap.keydownFix=!0)}}),t(t.SmartMenus.Bootstrap.init),t});

3
www/dam/js/jquery.smartmenus.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4
www/dam/js/jquery.validate.es.min.js vendored Normal file
View file

@ -0,0 +1,4 @@
/*! jQuery Validation Plugin - v1.15.0 - 2/24/2016
* http://jqueryvalidation.org/
* Copyright (c) 2016 Jörn Zaefferer; Licensed MIT */
!function(a){"function"==typeof define&&define.amd?define(["jquery","../jquery.validate.min"],a):"object"==typeof module&&module.exports?module.exports=a(require("jquery")):a(jQuery)}(function(a){a.extend(a.validator.messages,{required:"Este campo es obligatorio.",remote:"Por favor, rellena este campo.",email:"Por favor, escribe una dirección de correo válida.",url:"Por favor, escribe una URL válida.",date:"Por favor, escribe una fecha válida.",dateISO:"Por favor, escribe una fecha (ISO) válida.",number:"Por favor, escribe un número válido.",digits:"Por favor, escribe sólo dígitos.",creditcard:"Por favor, escribe un número de tarjeta válido.",equalTo:"Por favor, escribe el mismo valor de nuevo.",extension:"Por favor, escribe un valor con una extensión aceptada.",maxlength:a.validator.format("Por favor, no escribas más de {0} caracteres."),minlength:a.validator.format("Por favor, no escribas menos de {0} caracteres."),rangelength:a.validator.format("Por favor, escribe un valor entre {0} y {1} caracteres."),range:a.validator.format("Por favor, escribe un valor entre {0} y {1}."),max:a.validator.format("Por favor, escribe un valor menor o igual a {0}."),min:a.validator.format("Por favor, escribe un valor mayor o igual a {0}."),nifES:"Por favor, escribe un NIF válido.",nieES:"Por favor, escribe un NIE válido.",cifES:"Por favor, escribe un CIF válido."})});

4
www/dam/js/jquery.validate.min.js vendored Normal file

File diff suppressed because one or more lines are too long

8
www/dam/js/outdatedbrowser.min.js vendored Normal file
View file

@ -0,0 +1,8 @@
/*!--------------------------------------------------------------------
JAVASCRIPT "Outdated Browser"
Version: 1.1.2 - 2015
author: Burocratik
website: http://www.burocratik.com
* @preserve
-----------------------------------------------------------------------*/
var outdatedBrowser=function(t){function o(t){s.style.opacity=t/100,s.style.filter="alpha(opacity="+t+")"}function e(t){o(t),1==t&&(s.style.display="block"),100==t&&(u=!0)}function r(){var t=document.getElementById("btnCloseUpdateBrowser"),o=document.getElementById("btnUpdateBrowser");s.style.backgroundColor=bkgColor,s.style.color=txtColor,s.children[0].style.color=txtColor,s.children[1].style.color=txtColor,o.style.color=txtColor,o.style.borderColor&&(o.style.borderColor=txtColor),t.style.color=txtColor,t.onmousedown=function(){return s.style.display="none",!1},o.onmouseover=function(){this.style.color=bkgColor,this.style.backgroundColor=txtColor},o.onmouseout=function(){this.style.color=txtColor,this.style.backgroundColor=bkgColor}}function l(){var t=!1;if(window.XMLHttpRequest)t=new XMLHttpRequest;else if(window.ActiveXObject)try{t=new ActiveXObject("Msxml2.XMLHTTP")}catch(o){try{t=new ActiveXObject("Microsoft.XMLHTTP")}catch(o){t=!1}}return t}function a(t){var o=l();return o&&(o.onreadystatechange=function(){n(o)},o.open("GET",t,!0),o.send(null)),!1}function n(t){var o=document.getElementById("outdated");return 4==t.readyState&&(o.innerHTML=200==t.status||304==t.status?t.responseText:d,r()),!1}var s=document.getElementById("outdated");this.defaultOpts={bgColor:"#f25648",color:"#ffffff",lowerThan:"transform",languagePath:"../outdatedbrowser/lang/en.html"},t?("IE8"==t.lowerThan||"borderSpacing"==t.lowerThan?t.lowerThan="borderSpacing":"IE9"==t.lowerThan||"boxShadow"==t.lowerThan?t.lowerThan="boxShadow":"IE10"==t.lowerThan||"transform"==t.lowerThan||""==t.lowerThan||"undefined"==typeof t.lowerThan?t.lowerThan="transform":("IE11"==t.lowerThan||"borderImage"==t.lowerThan)&&(t.lowerThan="borderImage"),this.defaultOpts.bgColor=t.bgColor,this.defaultOpts.color=t.color,this.defaultOpts.lowerThan=t.lowerThan,this.defaultOpts.languagePath=t.languagePath,bkgColor=this.defaultOpts.bgColor,txtColor=this.defaultOpts.color,cssProp=this.defaultOpts.lowerThan,languagePath=this.defaultOpts.languagePath):(bkgColor=this.defaultOpts.bgColor,txtColor=this.defaultOpts.color,cssProp=this.defaultOpts.lowerThan,languagePath=this.defaultOpts.languagePath);var u=!0,i=function(){var t=document.createElement("div"),o="Khtml Ms O Moz Webkit".split(" "),e=o.length;return function(r){if(r in t.style)return!0;for(r=r.replace(/^[a-z]/,function(t){return t.toUpperCase()});e--;)if(o[e]+r in t.style)return!0;return!1}}();if(!i(""+cssProp)){if(u&&"1"!==s.style.opacity){u=!1;for(var c=1;100>=c;c++)setTimeout(function(t){return function(){e(t)}}(c),8*c)}" "===languagePath||0==languagePath.length?r():a(languagePath);var d='<h6>Your browser is out-of-date!</h6><p>Update your browser to view this website correctly. <a id="btnUpdateBrowser" href="http://outdatedbrowser.com/">Update my browser now </a></p><p class="last"><a href="#" id="btnCloseUpdateBrowser" title="Close">&times;</a></p>'}};

2
www/dam/js/spin.min.js vendored Normal file
View file

@ -0,0 +1,2 @@
// http://spin.js.org/#v2.3.2
!function(a,b){"object"==typeof module&&module.exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return m[e]||(k.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",k.cssRules.length),m[e]=1),e}function d(a,b){var c,d,e=a.style;if(b=b.charAt(0).toUpperCase()+b.slice(1),void 0!==e[b])return b;for(d=0;d<l.length;d++)if(c=l[d]+b,void 0!==e[c])return c}function e(a,b){for(var c in b)a.style[d(a,c)||c]=b[c];return a}function f(a){for(var b=1;b<arguments.length;b++){var c=arguments[b];for(var d in c)void 0===a[d]&&(a[d]=c[d])}return a}function g(a,b){return"string"==typeof a?a:a[b%a.length]}function h(a){this.opts=f(a||{},h.defaults,n)}function i(){function c(b,c){return a("<"+b+' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">',c)}k.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.scale*d.width,left:d.scale*d.radius,top:-d.scale*d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.scale*(d.length+d.width),k=2*d.scale*j,l=-(d.width+d.length)*d.scale*2+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d<e.childNodes.length&&(e=e.childNodes[b+d],e=e&&e.firstChild,e=e&&e.firstChild,e&&(e.opacity=c))}}var j,k,l=["webkit","Moz","ms","O"],m={},n={lines:12,length:7,width:5,radius:10,scale:1,corners:1,color:"#000",opacity:.25,rotate:0,direction:1,speed:1,trail:100,fps:20,zIndex:2e9,className:"spinner",top:"50%",left:"50%",shadow:!1,hwaccel:!1,position:"absolute"};if(h.defaults={},f(h.prototype,{spin:function(b){this.stop();var c=this,d=c.opts,f=c.el=a(null,{className:d.className});if(e(f,{position:d.position,width:0,zIndex:d.zIndex,left:d.left,top:d.top}),b&&b.insertBefore(f,b.firstChild||null),f.setAttribute("role","progressbar"),c.lines(f,c.opts),!j){var g,h=0,i=(d.lines-1)*(1-d.direction)/2,k=d.fps,l=k/d.speed,m=(1-d.opacity)/(l*d.trail/100),n=l/d.lines;!function o(){h++;for(var a=0;a<d.lines;a++)g=Math.max(1-(h+(d.lines-a)*n)%l*m,d.opacity),c.opacity(f,a*d.direction+i,g,d);c.timeout=c.el&&setTimeout(o,~~(1e3/k))}()}return c},stop:function(){var a=this.el;return a&&(clearTimeout(this.timeout),a.parentNode&&a.parentNode.removeChild(a),this.el=void 0),this},lines:function(d,f){function h(b,c){return e(a(),{position:"absolute",width:f.scale*(f.length+f.width)+"px",height:f.scale*f.width+"px",background:b,boxShadow:c,transformOrigin:"left",transform:"rotate("+~~(360/f.lines*k+f.rotate)+"deg) translate("+f.scale*f.radius+"px,0)",borderRadius:(f.corners*f.scale*f.width>>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k<f.lines;k++)i=e(a(),{position:"absolute",top:1+~(f.scale*f.width/2)+"px",transform:f.hwaccel?"translate3d(0,0,0)":"",opacity:f.opacity,animation:j&&c(f.opacity,f.trail,l+k*f.direction,f.lines)+" "+1/f.speed+"s linear infinite"}),f.shadow&&b(i,e(h("#000","0 0 4px #000"),{top:"2px"})),b(d,b(i,h(g(f.color,k),"0 0 1px rgba(0,0,0,.1)")));return d},opacity:function(a,b,c){b<a.childNodes.length&&(a.childNodes[b].style.opacity=c)}}),"undefined"!=typeof document){k=function(){var c=a("style",{type:"text/css"});return b(document.getElementsByTagName("head")[0],c),c.sheet||c.styleSheet}();var o=e(a("group"),{behavior:"url(#default#VML)"});!d(o,"transform")&&o.adj?i():j=d(o,"animation")}return h});

7
www/dam/js/typeahead.jquery.min.js vendored Normal file

File diff suppressed because one or more lines are too long